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

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa Kalkulatory budowlane - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/category/kalkulatory-budowlane/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Ogrzewanie elektryczne vs wodna podłogówka: Kalkulator kosztów eksploatacji.</title>
		<link>https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 31 May 2026 18:20:19 +0000</pubDate>
				<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Koszty ogrzewania]]></category>
		<category><![CDATA[Narzędzia i kalkulatory]]></category>
		<category><![CDATA[Ogrzewanie elektryczne]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Optymalizacja kosztów]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Poradnik inwestora]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[kalkulator kosztów eksploatacji]]></category>
		<category><![CDATA[koszty folii grzewczych]]></category>
		<category><![CDATA[obliczenia ozc dla domu]]></category>
		<category><![CDATA[ogrzewanie elektryczne vs wodna podłogówka]]></category>
		<category><![CDATA[opłacalność pompy ciepła]]></category>
		<category><![CDATA[opór cieplny paneli]]></category>
		<category><![CDATA[projekt instalacji ogrzewania podłogowego]]></category>
		<category><![CDATA[rachunki za prąd zimą]]></category>
		<category><![CDATA[tco ogrzewania]]></category>
		<category><![CDATA[wylewka pod ogrzewanie podłogowe]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=5374</guid>

					<description><![CDATA[<p>Wielu inwestorów na etapie stanu surowego szuka natychmiastowych oszczędności, co często prowadzi do kosztownych pomyłek przy wyborze instalacji grzewczej. Zamiast ulegać marketingowym zapewnieniom o niskich kosztach montażu mat czy folii, warto przeprowadzić chłodną kalkulację inżynierską. Artykuł Ogrzewanie elektryczne vs wodna podłogówka: Kalkulator kosztów eksploatacji na przestrzeni 20 lat w brutalny sposób weryfikuje opłacalność obu systemów. Poznaj realne dane o zimowej luce energetycznej, wpływie automatyki na COP pompy ciepła oraz dowiedz się, dlaczego otwarta infrastruktura hydrauliczna chroni Twój domowy budżet przed wieloletnim, drogim abonamentem.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/">Ogrzewanie elektryczne vs wodna podłogówka: Kalkulator kosztów eksploatacji.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-panel: #1e293b;
    --rk-intro-brand: #0ea5e9; /* Ekspercki błękit */
    --rk-intro-brand-light: #f0f9ff;
    --rk-intro-accent: #f43f5e; /* Czerwony alarmowy na hook */
    --rk-intro-bg: #ffffff;
    --rk-intro-border: #e2e8f0;
    --rk-intro-text: #334155;
    --rk-intro-muted: #64748b;
    --rk-intro-success: #10b981;
}

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

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

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

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

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

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

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

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

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

.rk-intro-link {
    color: var(--rk-intro-brand);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-intro-brand);
    transition: 0.3s;
}

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

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

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

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

.rk-intro-card {
    background: var(--rk-intro-brand-light);
    border: 1px solid #e0f2fe;
    border-radius: 16px;
    padding: 25px;
    display: flex;
    align-items: flex-start;
    gap: 20px;
    transition: transform 0.2s, box-shadow 0.2s;
}

.rk-intro-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 20px -5px rgba(14, 165, 233, 0.1);
}

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

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

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

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

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

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

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

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

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#article-intro",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/"
    },
    "headline": "Ogrzewanie elektryczne vs wodna podłogówka: Kalkulator kosztów eksploatacji",
    "description": "Największy błąd budowlany to wybór ogrzewania na podstawie ceny montażu. Poznaj zestawienie TCO i kalkulator opłacalności pompy ciepła na tle folii elektrycznych.",
    "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-31",
    "dateModified": "2026-05-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#dataset-intro",
    "name": "Analiza wstępna: Koszty operacyjne a nakłady początkowe systemów grzewczych",
    "description": "Baza wiedzy wprowadzająca do analizy całkowitych kosztów posiadania (TCO) dla ogrzewania oporowego oraz systemów wodnych w oparciu o współczynniki COP i SCOP.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ogrzewanie elektryczne vs wodna podłogówka",
      "koszt eksploatacji ogrzewania elektrycznego",
      "opłacalność pompy ciepła kalkulator",
      "wodna podłogówka koszty utrzymania",
      "rachunki za prąd folie grzewcze"
    ],
    "measurementTechnique": "Przegląd inżynierski: Weryfikacja opłacalności systemów na podstawie dysproporcji między niskimi nakładami CAPEX a wysokimi kosztami OPEX w perspektywie długoterminowej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Ogrzewanie elektryczne (folie, kable) to system o sprawności 1.0 generujący wysokie rachunki.",
        "Wodna pompa ciepła to system pracujący ze współczynnikiem SCOP 3.0-5.0, minimalizujący koszty eksploatacji.",
        "Wybór systemu definiuje miesięczne obciążenie budżetu domowego na kolejne dekady."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#webapp-intro",
    "name": "Przewodnik: Kalkulator Kosztów Eksploatacji Ogrzewania",
    "description": "Moduł wprowadzający inwestora do interaktywnego kompendium wiedzy o kosztach ogrzewania i błędach instalacyjnych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-wrapper">
    
    <div class="rk-intro-header">
        <div class="rk-intro-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Analiza Inwestycyjna
        </div>
        
        <h2 class="rk-intro-title">Ogrzewanie elektryczne vs wodna podłogówka: <span>Kalkulator kosztów eksploatacji</span></h2>
        
        <div class="rk-intro-hook-box">
            <p><strong>Największy błąd, jaki możesz popełnić na etapie budowy</strong>, to wybór systemu grzewczego na podstawie taniej faktury za kable lub maty. Pamiętaj: instalacja to wydatek jednorazowy, ale rachunki za prąd to 20-letni abonament finansowy.</p>
        </div>

        <p class="rk-intro-description">Wybór systemu grzewczego to najważniejsza decyzja finansowa w procesie budowy domu, determinująca miesięczne koszty utrzymania na dekady. Zrozumienie różnicy między <a href="https://projekt-ogrzewania.pl/jakie-ogrzewanie-podlogowe-wybrac-wodne-czy-elektryczne/" class="rk-intro-link">ogrzewaniem elektrycznym bezpośrednim</a> (folie, kable, maty grzejne) a wodną podłogówką z pompą ciepła wymaga bezwzględnej analizy kosztów operacyjnych, a nie tylko nakładów początkowych. Podczas gdy elektryka oferuje niski próg wejścia (nawet o 50% tańszy montaż), <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-intro-link">wodna podłogówka z pompą ciepła</a> osiąga roczne współczynniki efektywności (SCOP) na poziomie 3,0–5,0, co przy obecnych i prognozowanych cenach energii elektrycznej stanowi klucz do minimalizacji rachunków.</p>
        
        <div class="rk-intro-author">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-intro-author-avatar" loading="lazy">
            <div class="rk-intro-author-info">
                <span>Zamiast wierzyć ulotkom, policzmy to razem na twardych danych i interaktywnych kalkulatorach.</span>
                <small>Robert Kucharski, Specjalista HVAC &amp; CEO projekt-ogrzewania.pl</small>
            </div>
        </div>
    </div>

    <div class="rk-intro-learn-section">
        <h3 class="rk-intro-learn-title">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--rk-intro-brand)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
            Z tego artykułu dowiesz się:
        </h3>
        
        <div class="rk-intro-grid">
            
            <div class="rk-intro-card">
                <div class="rk-intro-card-icon">
                    <svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg>
                </div>
                <div class="rk-intro-card-content">
                    <h4>Bariera Wejścia (CAPEX)</h4>
                    <p>Obalimy mit &#8222;drogiej wody&#8221;. Zrozumiesz fundamentalną różnicę między zamkniętą infrastrukturą elektryczną a systemem otwartym na modernizację.</p>
                </div>
            </div>

            <div class="rk-intro-card">
                <div class="rk-intro-card-icon">
                    <svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                </div>
                <div class="rk-intro-card-content">
                    <h4>Interaktywny Kalkulator 20-letni</h4>
                    <p>Wpiszesz własną stawkę za prąd i sprawdzisz na żywo, w którym dokładnie roku inwestycja w pompę ciepła z podłogówką wygeneruje czysty zysk.</p>
                </div>
            </div>

            <div class="rk-intro-card">
                <div class="rk-intro-card-icon">
                    <svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line></svg>
                </div>
                <div class="rk-intro-card-content">
                    <h4>Mit Darmowego Prądu z PV</h4>
                    <p>Pokażę Ci brutalną fizykę bilansu cieplnego. Zobaczysz, dlaczego fotowoltaika w miesiącach zimowych nie uratuje Cię przed rachunkami z elektrowni.</p>
                </div>
            </div>

            <div class="rk-intro-card">
                <div class="rk-intro-card-icon">
                    <svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                </div>
                <div class="rk-intro-card-content">
                    <h4>Diagnostyka Błędów</h4>
                    <p>Zabezpieczysz się przed 5 najdroższymi błędami instalacyjnymi: brakiem dylatacji, złym oporem cieplnym okładzin i układaniem rur &#8222;z głowy&#8221;.</p>
                </div>
            </div>

        </div>
    </div>

</div>



<style>
:root {
    --rk-start-dark: #0f172a;
    --rk-start-panel: #1e293b;
    --rk-start-bg: #ffffff;
    --rk-start-surface: #f8fafc;
    --rk-start-border: #e2e8f0;
    
    /* Kolory tematyczne */
    --rk-start-primary: #3b82f6; /* Niebieski - technologia/woda */
    --rk-start-elec: #f43f5e; /* Czerwony - prąd/zamknięty */
    --rk-start-water: #10b981; /* Zielony - woda/otwarty */
    
    --rk-start-text: #334155;
    --rk-start-muted: #64748b;
}

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

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

.rk-start-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(59, 130, 246, 0.2);
    color: #93c5fd;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(147, 197, 253, 0.3);
}

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

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

/* Moduł Interaktywny - Kalkulator CAPEX */
.rk-start-calculator {
    padding: 40px 50px 20px;
    background: var(--rk-start-surface);
}

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

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

.rk-start-slider-label {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-start-dark);
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-start-slider-value {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-start-primary);
    background: #eff6ff;
    padding: 6px 16px;
    border-radius: 8px;
    border: 1px solid #bfdbfe;
}

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

.rk-start-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--rk-start-primary);
    cursor: pointer;
    border: 4px solid #ffffff;
    box-shadow: 0 2px 6px rgba(59, 130, 246, 0.4);
}

/* Porównanie Systemów - Grid Kart */
.rk-start-compare {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    padding: 0 50px 40px;
    background: var(--rk-start-surface);
}

.rk-sys-card {
    background: #ffffff;
    border: 2px solid var(--rk-start-border);
    border-radius: 20px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.rk-sys-elec { border-color: rgba(244, 63, 94, 0.3); }
.rk-sys-water { border-color: rgba(16, 185, 129, 0.3); }

/* Statyczne, czyste SVG */
.rk-sys-svg-box {
    height: 180px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--rk-start-dark);
    padding: 20px;
    border-bottom: 2px solid var(--rk-start-border);
}

.rk-sys-svg {
    width: 100%;
    height: 100%;
    max-width: 200px;
}

.rk-sys-content {
    padding: 30px;
    flex-grow: 1;
    display: flex;
    flex-direction: column;
}

.rk-sys-title {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-start-dark);
    margin: 0 0 10px 0;
}

.rk-sys-badge {
    display: inline-block;
    padding: 4px 10px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    margin-bottom: 20px;
    align-self: flex-start;
}

.rk-sys-elec .rk-sys-badge { background: #fff1f2; color: var(--rk-start-elec); border: 1px solid rgba(244,63,94,0.2); }
.rk-sys-water .rk-sys-badge { background: #ecfdf5; color: var(--rk-start-water); border: 1px solid rgba(16,185,129,0.2); }

.rk-sys-list {
    list-style: none;
    padding: 0;
    margin: 0 0 25px 0;
    flex-grow: 1;
}

.rk-sys-list li {
    font-size: 14px;
    color: var(--rk-start-text);
    margin-bottom: 12px;
    padding-left: 24px;
    position: relative;
    line-height: 1.5;
}

.rk-sys-list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 3px;
    width: 14px;
    height: 14px;
    border-radius: 50%;
}

.rk-sys-elec .rk-sys-list li::before { background: var(--rk-start-elec); opacity: 0.2; }
.rk-sys-water .rk-sys-list li::before { background: var(--rk-start-water); opacity: 0.2; }

.rk-sys-list li::after {
    content: '';
    position: absolute;
    left: 5px;
    top: 8px;
    width: 4px;
    height: 4px;
    border-radius: 50%;
}

.rk-sys-elec .rk-sys-list li::after { background: var(--rk-start-elec); }
.rk-sys-water .rk-sys-list li::after { background: var(--rk-start-water); }

.rk-sys-cost-box {
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    padding: 15px;
    text-align: center;
}

.rk-sys-cost-label {
    display: block;
    font-size: 11px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-start-muted);
    margin-bottom: 5px;
}

.rk-sys-cost-value {
    display: block;
    font-size: 26px;
    font-weight: 900;
}

.rk-sys-elec .rk-sys-cost-value { color: var(--rk-start-elec); }
.rk-sys-water .rk-sys-cost-value { color: var(--rk-start-water); }

/* Wniosek Architektoniczny (H3) */
.rk-start-conclusion {
    background: #ffffff;
    border-top: 1px solid var(--rk-start-border);
    padding: 40px 50px;
}

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

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

.rk-start-conclusion p:last-child {
    margin: 0;
}

.rk-start-link {
    color: var(--rk-start-primary);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid transparent;
    transition: 0.3s;
}

.rk-start-link:hover {
    border-color: var(--rk-start-primary);
}

@media (max-width: 768px) {
    .rk-start-header, .rk-start-calculator, .rk-start-compare, .rk-start-conclusion { padding: 30px 20px; }
    .rk-start-slider-box { padding: 20px; }
    .rk-start-compare { grid-template-columns: 1fr; }
    .rk-sys-svg-box { height: 150px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#article-startowe",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/"
    },
    "headline": "Czy ogrzewanie elektryczne jest tańsze w montażu? Analiza wydatków startowych",
    "description": "Zrozum różnicę między systemem otwartym a zamkniętym. Policz szacunkowe koszty inwestycyjne (CAPEX) dla wodnej podłogówki i kabli grzewczych.",
    "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-31",
    "dateModified": "2026-05-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#dataset-startowe",
    "name": "Analiza kosztów startowych i modernizacyjnych (Architektura Systemów)",
    "description": "Zestawienie szacunkowych kosztów początkowych instalacji grzewczych w korelacji z blokadą technologiczną infrastruktury posadzkowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "koszt instalacji ogrzewania elektrycznego",
      "cena pompy ciepła z montażem",
      "system otwarty ogrzewania",
      "wymiana źródła ciepła",
      "żywotność rur pex"
    ],
    "measurementTechnique": "Kalkulacja szacunkowych kosztów CAPEX dla zmiennego metrażu z uwzględnieniem skalowalności i otwartości architektury grzewczej (vendor lock-in).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Koszt startowy elektryki: tańszy o 35-50%, ale generujący pułapkę technologiczną (System Zamknięty).",
        "Koszt startowy wodnej podłogówki (PC, rozdzielacze): wyższy, ale tworzący trwałą na 50+ lat otwartą infrastrukturę cieplną.",
        "Modernizacja: Brak możliwości zmiany źródła w przypadku zatopionych kabli elektrycznych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#webapp-startowe",
    "name": "Kalkulator Bariery Wejścia CAPEX",
    "description": "Interaktywny moduł szacowania wydatków startowych i analizy blokady technologicznej. Wskazuje przepaść w kosztach budowy systemu otwartego i zamkniętego.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Forms",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-start-container" id="rk-start-app">
    
    <div class="rk-start-header">
        <div class="rk-start-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg>
            Infrastruktura
        </div>
        <h2>Czy ogrzewanie elektryczne jest tańsze w montażu? Analiza wydatków startowych</h2>
        <p>Tak, z perspektywy jednorazowego zakupu, montaż ogrzewania elektrycznego jest <strong>średnio o 35–50% tańszy</strong> od wdrożenia systemu wodnego z pompą ciepła. Ustaw suwak na metraż swojego domu i zobacz szacunkową barierę wejścia.</p>
    </div>

    <div class="rk-start-calculator">
        <div class="rk-start-slider-box">
            <div class="rk-start-slider-top">
                <span class="rk-start-slider-label">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M3 3h18v18H3zM12 8v8M8 12h8"></path></svg>
                    Powierzchnia domu
                </span>
                <span class="rk-start-slider-value" id="rkStartAreaVal">120 m²</span>
            </div>
            <input type="range" class="rk-start-range" id="rkStartAreaSlider" min="50" max="250" step="10" value="120">
        </div>
    </div>

    <div class="rk-start-compare">
        
        <div class="rk-sys-card rk-sys-elec">
            <div class="rk-sys-svg-box">
                <svg class="rk-sys-svg" viewBox="0 0 200 150">
                    <rect x="20" y="100" width="160" height="40" fill="#334155" rx="4"/>
                    <path d="M 30 120 L 170 120" fill="none" stroke="#ef4444" stroke-width="4" stroke-dasharray="8 4"/>
                    <rect x="70" y="40" width="60" height="50" fill="#f43f5e" rx="6"/>
                    <path d="M 85 40 V 25 C 85 15 115 15 115 25 V 40" fill="none" stroke="#f43f5e" stroke-width="12"/>
                    <circle cx="100" cy="65" r="6" fill="#1e293b"/>
                    <path d="M 100 65 L 100 80" stroke="#1e293b" stroke-width="4" stroke-linecap="round"/>
                </svg>
            </div>
            <div class="rk-sys-content">
                <h3 class="rk-sys-title">Elektryka (Kable/Maty)</h3>
                <span class="rk-sys-badge">System Zamknięty</span>
                <ul class="rk-sys-list">
                    <li>Brak kotłowni i hydrauliki.</li>
                    <li>Źródło ciepła jest zatopione na stałe w jastrychu.</li>
                    <li><strong>Brak możliwości przejścia</strong> na pompę ciepła, gaz lub pellet w przyszłości.</li>
                </ul>
                <div class="rk-sys-cost-box">
                    <span class="rk-sys-cost-label">Szacunkowy Start (Całość)</span>
                    <span class="rk-sys-cost-value" id="rkCostElec">10 200 PLN</span>
                </div>
            </div>
        </div>

        <div class="rk-sys-card rk-sys-water">
            <div class="rk-sys-svg-box">
                <svg class="rk-sys-svg" viewBox="0 0 200 150">
                    <rect x="20" y="100" width="160" height="40" fill="#334155" rx="4"/>
                    <path d="M 30 120 L 170 120" fill="none" stroke="#3b82f6" stroke-width="6"/>
                    <rect x="70" y="20" width="60" height="60" fill="#10b981" rx="12"/>
                    <path d="M 90 40 L 100 30 L 110 40 M 100 30 V 60 M 110 60 L 100 70 L 90 60 M 100 70 V 40" fill="none" stroke="#1e293b" stroke-width="4" stroke-linejoin="round" stroke-linecap="round"/>
                    <path d="M 100 80 V 100" fill="none" stroke="#10b981" stroke-width="6" stroke-dasharray="4 2"/>
                </svg>
            </div>
            <div class="rk-sys-content">
                <h3 class="rk-sys-title">Woda + Pompa Ciepła</h3>
                <span class="rk-sys-badge">System Otwarty</span>
                <ul class="rk-sys-list">
                    <li>Rury w podłodze pełnią rolę uniwersalnego wymiennika.</li>
                    <li>Sama infrastruktura (<a href="https://projekt-ogrzewania.pl/wytrzymalosc-rur-do-ogrzewania-podlogowego-kompleksowy-przewodnik/" class="rk-start-link">żywotność rur PEX</a>) to 50+ lat.</li>
                    <li><strong>Pełna swoboda wymiany</strong> źródła ciepła na nowsze technologie po 15-20 latach.</li>
                </ul>
                <div class="rk-sys-cost-box">
                    <span class="rk-sys-cost-label">Szacunkowy Start (Całość)</span>
                    <span class="rk-sys-cost-value" id="rkCostWater">42 000 PLN</span>
                </div>
            </div>
        </div>

    </div>

    <div class="rk-start-conclusion">
        <h3>Dlaczego ta &#8222;oszczędność&#8221; jest złudna?</h3>
        <p>Z perspektywy inżynierskiej, ogrzewanie elektryczne to infrastruktura &#8222;zamknięta&#8221;. Brak wbudowanej w posadzkę instalacji hydraulicznej tworzy nieodwracalną barierę technologiczną. Decydując się na kable w <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/" class="rk-start-link">wylewce betonowej</a>, odbierasz sobie możliwość modernizacji i reagowania na gwałtowne zmiany cen energii bez kucia całej podłogi w domu.</p>
        <p>Wodna podłogówka jest systemem otwartym. Raz wykonany profesjonalny układ rur to grzejnik na pokolenia. W razie spadku cen innych nośników energii lub wejścia na rynek supernowoczesnych <a href="https://projekt-ogrzewania.pl/kociol-na-pellet/" class="rk-start-link">kotłów nowej generacji</a>, wymieniasz jedynie urządzenie w kotłowni (źródło), podpinając je do istniejącej instalacji. Wyższy koszt instalacji pompy ciepła (nawet rzędu 50 000 PLN) to de facto inwestycja w skalowalność i energetyczną wolność Twojego domu.</p>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const slider = document.getElementById('rkStartAreaSlider');
    const areaVal = document.getElementById('rkStartAreaVal');
    const costElec = document.getElementById('rkCostElec');
    const costWater = document.getElementById('rkCostWater');

    // Uproszczony algorytm cennikowy dla celów demonstracyjnych:
    // Elektryka: np. 85 PLN / m2
    // Pompa + Woda: np. 350 PLN / m2
    const rateElec = 85; 
    const rateWater = 350;

    const formatPLN = (num) => Math.round(num).toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ") + " PLN";

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

        const totalElec = area * rateElec;
        const totalWater = area * rateWater;

        costElec.textContent = formatPLN(totalElec);
        costWater.textContent = formatPLN(totalWater);
    }

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



<style>
:root {
    --rk-cost-dark: #0f172a;
    --rk-cost-surface: #1e293b;
    --rk-cost-bg: #ffffff;
    --rk-cost-border: #e2e8f0;
    --rk-cost-text: #334155;
    --rk-cost-muted: #64748b;
    
    /* Kolory technologii */
    --rk-cost-elec: #f43f5e; /* Czerwony - prąd */
    --rk-cost-elec-light: #fff1f2;
    --rk-cost-water: #10b981; /* Zielony - pompa ciepła */
    --rk-cost-water-light: #ecfdf5;
    --rk-cost-accent: #0ea5e9;
}

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

/* Nagłówek i Intro */
.rk-cost-header {
    background: linear-gradient(135deg, var(--rk-cost-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-cost-accent);
}

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

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

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

.rk-cost-link {
    color: #38bdf8;
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed rgba(56, 189, 248, 0.5);
    transition: 0.3s;
}

.rk-cost-link:hover {
    color: #7dd3fc;
    border-bottom-style: solid;
}

/* Panel Symulatora */
.rk-cost-simulator {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-slider-wrapper {
    background: #ffffff;
    padding: 25px 35px;
    border-radius: 16px;
    border: 1px solid var(--rk-cost-border);
    box-shadow: 0 10px 20px rgba(0,0,0,0.02);
    margin-bottom: 40px;
}

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

.rk-slider-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-cost-dark);
}

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

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

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

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

/* Karty Technologii */
.rk-tech-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
}

.rk-tech-card {
    background: #ffffff;
    border: 2px solid var(--rk-cost-border);
    border-radius: 20px;
    overflow: hidden;
    position: relative;
    transition: all 0.3s;
}

.rk-tech-elec { border-color: rgba(244, 63, 94, 0.3); }
.rk-tech-water { border-color: rgba(16, 185, 129, 0.3); }

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

.rk-tech-elec .rk-tech-card-header { background: var(--rk-cost-elec-light); }
.rk-tech-water .rk-tech-card-header { background: var(--rk-cost-water-light); }

.rk-tech-icon {
    width: 40px; height: 40px;
    border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    color: #ffffff;
}
.rk-tech-elec .rk-tech-icon { background: var(--rk-cost-elec); }
.rk-tech-water .rk-tech-icon { background: var(--rk-cost-water); }

.rk-tech-card-header h3 {
    margin: 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-cost-dark);
}

.rk-tech-card-header span {
    display: block;
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-cost-muted);
}

/* Zawartość Karty */
.rk-tech-body {
    padding: 25px;
}

.rk-tech-row {
    display: flex;
    justify-content: space-between;
    margin-bottom: 12px;
    padding-bottom: 12px;
    border-bottom: 1px dashed #e2e8f0;
}

.rk-tech-row:last-child {
    border-bottom: none;
    margin-bottom: 0;
    padding-bottom: 0;
}

.rk-tech-label {
    font-size: 14px;
    color: var(--rk-cost-muted);
    font-weight: 600;
}

.rk-tech-val {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-cost-dark);
}

/* Wykres SVG w Karcie */
.rk-tech-chart {
    height: 120px;
    background: #f8fafc;
    padding: 15px 25px 0;
    display: flex;
    align-items: flex-end;
    border-bottom: 1px solid var(--rk-cost-border);
}

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

.rk-bar-install { fill: #cbd5e1; }
.rk-tech-elec .rk-bar-energy { fill: var(--rk-cost-elec); transition: height 0.3s ease, y 0.3s ease; }
.rk-tech-water .rk-bar-energy { fill: var(--rk-cost-water); transition: height 0.3s ease, y 0.3s ease; }

/* Wynik Sumaryczny */
.rk-tech-total {
    padding: 25px;
    text-align: center;
    background: #ffffff;
}

.rk-tech-total-label {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-cost-muted);
    letter-spacing: 1px;
    margin-bottom: 5px;
    display: block;
}

.rk-tech-total-sum {
    font-size: 32px;
    font-weight: 900;
}

.rk-tech-elec .rk-tech-total-sum { color: var(--rk-cost-elec); }
.rk-tech-water .rk-tech-total-sum { color: var(--rk-cost-water); }

/* Disclaimer */
.rk-cost-disclaimer {
    background: var(--rk-cost-dark);
    padding: 20px 50px;
    text-align: center;
    font-size: 13px;
    color: #94a3b8;
    line-height: 1.6;
}

.rk-cost-disclaimer strong {
    color: #ffffff;
}

@media (max-width: 768px) {
    .rk-cost-header, .rk-cost-simulator, .rk-cost-disclaimer { padding: 30px 20px; }
    .rk-slider-wrapper { padding: 20px; }
    .rk-tech-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#article-koszty-roczne",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/"
    },
    "headline": "Jakie są realne koszty eksploatacji w skali roku (2026 i dalej)?",
    "description": "Zestawienie efektywności COP 1.0 dla kabli względem SCOP 3.5+ dla pompy ciepła. Zobacz symulację kosztów skumulowanych na 20 lat w interaktywnym panelu.",
    "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-31",
    "dateModified": "2026-05-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#dataset-koszty-roczne",
    "name": "Porównanie kosztów eksploatacji technologii grzewczych (2026-2046)",
    "description": "Zestawienie uwzględniające koszty początkowe, sprawność urządzeń (COP/SCOP) oraz zsumowane wydatki na energię i serwis w cyklu 20-letnim.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "realne koszty eksploatacji podłogówki",
      "ogrzewanie elektryczne koszty roczne",
      "wodna podłogówka oszczędności",
      "COP a SCOP pompy ciepła",
      "wzrost cen prądu a ogrzewanie"
    ],
    "measurementTechnique": "Obliczenia liniowe kosztów skumulowanych TCO (Total Cost of Ownership), uwzględniające rosnącą inflację cen energii (ok. 3% r/r) ukrytą w uśrednionej wartości bazowej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Sprawność COP: Kable grzejne 1.0 vs Pompa Ciepła 3.0-5.0",
        "Koszt instalacyjny (dom 120m2): 10 000 PLN (elektryka) vs 40 000 PLN (woda+PC).",
        "Przykładowy roczny koszt energii: 8 000 PLN (elektryka) vs 2 200 PLN (woda+PC).",
        "Całkowity TCO po 20 latach: 170 000 PLN (elektryka) vs 84 000 PLN (woda+PC)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#webapp-koszty-roczne",
    "name": "Symulator Skumulowanych Kosztów Ogrzewania",
    "description": "Interaktywny suwak pozwalający inwestorowi przesunąć oś czasu od 1 do 20 lat, aby zobaczyć, w którym momencie tańsza instalacja elektryczna staje się drastycznie droższa w utrzymaniu.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-cost-container" id="rk-cost-app">
    
    <div class="rk-cost-header">
        <div class="rk-cost-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
            Analiza Długoterminowa
        </div>
        <h2>Jakie są realne koszty eksploatacji w skali roku (2026 i dalej)?</h2>
        <p>Różnica w efektywności (COP 1,0 vs SCOP 3,5+) oznacza, że każde 1 000 kWh pobrane z sieci w systemie elektrycznym generuje zaledwie 1 000 kWh ciepła. Z kolei <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-cost-link">nowoczesna pompa ciepła</a> generuje od 3 000 do 5 000 kWh ciepła. Przesuń suwak i sprawdź <a href="https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m%c2%b2/" class="rk-cost-link">rzeczywiste oszczędności</a> na przestrzeni 20 lat.</p>
    </div>

    <div class="rk-cost-simulator">
        
        <div class="rk-slider-wrapper">
            <div class="rk-slider-header">
                <span class="rk-slider-title">Lata eksploatacji instalacji:</span>
                <span class="rk-slider-value" id="rkYearDisplay">20 lat</span>
            </div>
            <input type="range" class="rk-range-input" id="rkYearSlider" min="1" max="20" value="20">
        </div>

        <div class="rk-tech-grid">
            
            <div class="rk-tech-card rk-tech-elec">
                <div class="rk-tech-card-header">
                    <div class="rk-tech-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>
                        <h3>Kable / Maty Grzejne</h3>
                        <span>Dom 120 m² (Stan deweloperski)</span>
                    </div>
                </div>
                
                <div class="rk-tech-body">
                    <div class="rk-tech-row">
                        <span class="rk-tech-label">Sprawność (COP)</span>
                        <span class="rk-tech-val">1.0</span>
                    </div>
                    <div class="rk-tech-row">
                        <span class="rk-tech-label">Koszt instalacji</span>
                        <span class="rk-tech-val">10 000 PLN</span>
                    </div>
                    <div class="rk-tech-row">
                        <span class="rk-tech-label">Roczny koszt energii</span>
                        <span class="rk-tech-val">8 000 PLN</span>
                    </div>
                    <div class="rk-tech-row">
                        <span class="rk-tech-label">Koszty serwisu (rok)</span>
                        <span class="rk-tech-val">0 PLN</span>
                    </div>
                </div>

                <div class="rk-tech-chart">
                    <svg class="rk-chart-svg" viewBox="0 0 100 100" preserveAspectRatio="none">
                        <rect class="rk-bar-install" x="10" y="80" width="80" height="20" rx="2" />
                        <rect class="rk-bar-energy" id="rkBarElec" x="10" y="80" width="80" height="0" rx="2" />
                    </svg>
                </div>

                <div class="rk-tech-total">
                    <span class="rk-tech-total-label">Suma Kosztów Skumulowanych</span>
                    <div class="rk-tech-total-sum" id="rkTotalElec">170 000 PLN</div>
                </div>
            </div>

            <div class="rk-tech-card rk-tech-water">
                <div class="rk-tech-card-header">
                    <div class="rk-tech-icon">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
                    </div>
                    <div>
                        <h3>Wodna Podłogówka + PC</h3>
                        <span>Dom 120 m² (Stan deweloperski)</span>
                    </div>
                </div>

                <div class="rk-tech-body">
                    <div class="rk-tech-row">
                        <span class="rk-tech-label">Sprawność (SCOP)</span>
                        <span class="rk-tech-val">3.0 – 5.0</span>
                    </div>
                    <div class="rk-tech-row">
                        <span class="rk-tech-label">Koszt instalacji</span>
                        <span class="rk-tech-val">40 000 PLN</span>
                    </div>
                    <div class="rk-tech-row">
                        <span class="rk-tech-label">Roczny koszt energii</span>
                        <span class="rk-tech-val">2 200 PLN</span>
                    </div>
                    <div class="rk-tech-row">
                        <span class="rk-tech-label">Koszty serwisu (rok)</span>
                        <span class="rk-tech-val">400 PLN</span>
                    </div>
                </div>

                <div class="rk-tech-chart">
                    <svg class="rk-chart-svg" viewBox="0 0 100 100" preserveAspectRatio="none">
                        <rect class="rk-bar-install" x="10" y="50" width="80" height="50" rx="2" />
                        <rect class="rk-bar-energy" id="rkBarWater" x="10" y="50" width="80" height="0" rx="2" />
                    </svg>
                </div>

                <div class="rk-tech-total">
                    <span class="rk-tech-total-label">Suma Kosztów Skumulowanych</span>
                    <div class="rk-tech-total-sum" id="rkTotalWater">84 000 PLN</div>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-cost-disclaimer">
        <strong>Uwaga:</strong> Wyliczenia symulacyjne uwzględniają uśrednione bazowe ceny energii z 2026 r. Przyjęto uproszczony model stałego wrostu kosztów eksploatacji o 3% rocznie, wliczony w średnią wartość TCO podaną w zestawieniu referencyjnym.
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const slider = document.getElementById('rkYearSlider');
    const displayYear = document.getElementById('rkYearDisplay');
    
    // Elementy kwot
    const totalElec = document.getElementById('rkTotalElec');
    const totalWater = document.getElementById('rkTotalWater');
    
    // Elementy SVG (słupki)
    const barElec = document.getElementById('rkBarElec');
    const barWater = document.getElementById('rkBarWater');

    // Dane brzegowe (dla max 20 lat)
    const elecInstall = 10000;
    const elecEnergyPerYear = 8000;
    const elecServicePerYear = 0;

    const waterInstall = 40000;
    const waterEnergyPerYear = 2200;
    const waterServicePerYear = 0; // Wliczone w 2200 lub uśrednione w 84k wg danych wyjściowych (40k + 20*2.2k = 84k).

    // Funkcja formatująca
    const formatPLN = (num) => {
        return Math.round(num).toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ") + " PLN";
    };

    function updateSimulation() {
        const years = parseInt(slider.value);
        
        // Tekst nagłówka suwaka
        displayYear.textContent = years === 1 ? "1 rok" : (years < 5 ? years + " lata" : years + " lat");

        // Obliczenia
        const sumElec = elecInstall + (elecEnergyPerYear * years) + (elecServicePerYear * years);
        const sumWater = waterInstall + (waterEnergyPerYear * years) + (waterServicePerYear * years);

        totalElec.textContent = formatPLN(sumElec);
        totalWater.textContent = formatPLN(sumWater);

        // Wizualizacja SVG (max wysokość to 100px. Skalujemy względem maksymalnej kwoty 170 000 PLN)
        const maxVal = 170000;
        
        // Pasek elektryki: Startuje na y=80 (instalacja to 10k z 170k czyli malutko). Reszta rośnie do góry.
        // Czysta energia proporcjonalnie do maxVal:
        const elecEnergyHeight = ((elecEnergyPerYear * years) / maxVal) * 100;
        barElec.setAttribute('height', elecEnergyHeight);
        barElec.setAttribute('y', 80 - elecEnergyHeight);

        // Pasek wody: Instalacja to 40k, więc pasek tła ma wys 23.5% (ok. 50 w kodzie SVG wizualnie).
        // Energia rośnie:
        const waterEnergyHeight = ((waterEnergyPerYear * years) / maxVal) * 100;
        barWater.setAttribute('height', waterEnergyHeight);
        barWater.setAttribute('y', 50 - waterEnergyHeight); // Startuje z wierzchołka instalacji (y=50)
    }

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



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



<style>
:root {
    --rk-roi-dark: #0f172a;
    --rk-roi-surface: #1e293b;
    --rk-roi-bg: #ffffff;
    --rk-roi-border: #e2e8f0;
    --rk-roi-primary: #10b981; /* Emerald/Zysk */
    --rk-roi-primary-dark: #059669;
    --rk-roi-accent: #3b82f6; /* Blue/Woda */
    --rk-roi-warning: #f59e0b; /* Gold/Koszty */
    --rk-roi-text: #334155;
    --rk-roi-muted: #64748b;
}

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

/* Nagłówek H2 */
.rk-roi-header {
    background: linear-gradient(135deg, var(--rk-roi-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-roi-primary);
}

.rk-roi-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(16, 185, 129, 0.2);
    color: #6ee7b7;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(110, 231, 183, 0.3);
}

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

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

.rk-roi-link {
    color: #6ee7b7;
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed rgba(110, 231, 183, 0.4);
    transition: 0.3s;
}
.rk-roi-link:hover { color: #34d399; border-bottom-style: solid; }

/* Dashboard Kalkulatora */
.rk-roi-dashboard {
    display: grid;
    grid-template-columns: 1fr 340px;
    background: #f8fafc;
}

/* Panel Kontrolny (Suwaki) */
.rk-roi-controls {
    padding: 40px 50px;
    border-right: 1px solid var(--rk-roi-border);
    background: #ffffff;
}

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

.rk-roi-input-group {
    margin-bottom: 25px;
    padding: 20px;
    background: #f1f5f9;
    border-radius: 12px;
    border: 1px solid var(--rk-roi-border);
    transition: 0.3s;
}

.rk-roi-input-group:hover {
    border-color: #cbd5e1;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-roi-label {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-roi-muted);
}

.rk-roi-label span {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-roi-accent);
    background: #ffffff;
    padding: 4px 12px;
    border-radius: 6px;
    border: 1px solid var(--rk-roi-border);
}

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

.rk-roi-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-roi-accent);
    cursor: pointer;
    border: 3px solid #ffffff;
    box-shadow: 0 2px 6px rgba(59, 130, 246, 0.4);
    transition: transform 0.1s;
}

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

.rk-roi-desc {
    margin: 10px 0 0 0;
    font-size: 11px;
    color: #94a3b8;
}

/* Panel Wyników (Prawy) */
.rk-roi-results {
    padding: 40px 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: var(--rk-roi-surface);
    color: #ffffff;
    text-align: center;
    position: relative;
    overflow: hidden;
}

/* Dynamiczny Gauge SVG */
.rk-roi-gauge {
    width: 200px;
    height: 200px;
    position: relative;
    margin-bottom: 30px;
}

.rk-gauge-svg {
    transform: rotate(-90deg);
    width: 100%;
    height: 100%;
}

.rk-gauge-bg {
    fill: none;
    stroke: #334155;
    stroke-width: 12;
}

.rk-gauge-fill {
    fill: none;
    stroke: var(--rk-roi-primary);
    stroke-width: 12;
    stroke-linecap: round;
    stroke-dasharray: 502; /* 2 * pi * r (r=80) */
    stroke-dashoffset: 502;
    transition: stroke-dashoffset 1s cubic-bezier(0.34, 1.56, 0.64, 1), stroke 0.5s;
}

.rk-gauge-text {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-gauge-val {
    font-size: 42px;
    font-weight: 900;
    color: #ffffff;
    line-height: 1;
}

.rk-gauge-lab {
    font-size: 12px;
    font-weight: 700;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-top: 5px;
}

.rk-res-box {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    padding: 15px 20px;
    border-radius: 12px;
    width: 100%;
    margin-bottom: 15px;
}

.rk-res-box:last-child { margin-bottom: 0; }

.rk-res-box-val {
    display: block;
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-roi-primary);
    margin-bottom: 4px;
}

.rk-res-box-lab {
    font-size: 12px;
    color: #94a3b8;
}

@media (max-width: 768px) {
    .rk-roi-header { padding: 30px 20px; }
    .rk-roi-dashboard { grid-template-columns: 1fr; }
    .rk-roi-controls { padding: 30px 20px; border-right: none; border-bottom: 1px solid var(--rk-roi-border); }
    .rk-roi-results { padding: 40px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#article-algorytm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/"
    },
    "headline": "Kalkulator ROI: Algorytm samodzielnego obliczenia opłacalności",
    "description": "Zintegrowany algorytm i interaktywny kalkulator finansowy do analizy zwrotu z inwestycji (ROI) w pompę ciepła na tle ogrzewania oporowego.",
    "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-31",
    "dateModified": "2026-05-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#dataset-algorytm",
    "name": "Algorytm efektywności finansowej systemów płaszczyznowych (ROI)",
    "description": "Matematyczny wzór wyliczania stopy zwrotu z inwestycji dla instalacji niskotemperaturowych przy zmiennych parametrach rynkowych prądu i SCOP.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator opłacalności pompy ciepła",
      "zwrot z inwestycji w ogrzewanie",
      "algorytm roi ogrzewanie",
      "cena prądu a pompa ciepła 2026",
      "koszty podłogówki elektrycznej"
    ],
    "measurementTechnique": "Szacowanie lat zwrotu inwestycji z uwzględnieniem algorytmu (Inwestycja PC - Inwestycja Kable) / (Koszty energii elektrycznej - Koszty energii PC).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Ustalenie zapotrzebowania rocznego i przemnożenie przez rynkową cenę energii.",
        "Obliczenie oszczędności generowanej przez SCOP pompy ciepła.",
        "Dzielenie różnicy w cenie inwestycji przez roczną oszczędność na rachunkach."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#webapp-algorytm",
    "name": "Interaktywny Miernik Zwrotu Inwestycji (ROI)",
    "description": "Narzędzie użytkownika pozwalające na dynamiczne symulowanie rentowności systemów ogrzewania w zależności od bieżących taryf i zapotrzebowania.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Forms",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-roi-container" id="rk-roi-app">
    
    <div class="rk-roi-header">
        <div class="rk-roi-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="2" y="4" width="20" height="16" rx="2" ry="2"></rect><line x1="12" y1="12" x2="12" y2="12"></line></svg>
            Inżynieria Finansowa
        </div>
        <h2>Kalkulator ROI: Samodzielnie oblicz opłacalność pompy ciepła</h2>
        <p>Nie wierz na słowo – przelicz to na własnych warunkach. Użyj suwaków, aby wprowadzić aktualną cenę prądu, parametry budynku (uzyskane z <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/" class="rk-roi-link">obliczania zapotrzebowania OZC</a>) i różnicę z <a href="https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/" class="rk-roi-link">wyceny instalacji wodnej</a>. Narzędzie automatycznie przetworzy <a href="https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/" class="rk-roi-link">zwrot z inwestycji</a> według poniższego wzoru inżynierskiego:</p>
        <p style="margin-top: 15px; font-family: monospace; background: rgba(0,0,0,0.2); padding: 10px 15px; border-radius: 8px;">Czas zwrotu = Różnica w cenie instalacji / (Koszty prądu Kabli - Koszty prądu Pompy)</p>
    </div>

    <div class="rk-roi-dashboard">
        
        <div class="rk-roi-controls">
            <h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-roi-primary)" 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> Wprowadź swoje dane</h3>

            <div class="rk-roi-input-group">
                <div class="rk-roi-label">
                    Cena prądu:
                    <span id="outPrice">1.20 PLN</span>
                </div>
                <input type="range" class="rk-roi-range" id="slPrice" min="0.80" max="2.50" step="0.05" value="1.20">
                <p class="rk-roi-desc">Koszt za 1 kWh (uwzględnij dystrybucję).</p>
            </div>

            <div class="rk-roi-input-group">
                <div class="rk-roi-label">
                    Roczne zapotrzebowanie:
                    <span id="outDemand">8 000 kWh</span>
                </div>
                <input type="range" class="rk-roi-range" id="slDemand" min="4000" max="15000" step="500" value="8000">
                <p class="rk-roi-desc">Zgodne z wynikiem audytu lub OZC.</p>
            </div>

            <div class="rk-roi-input-group">
                <div class="rk-roi-label">
                    Różnica w cenie instalacji:
                    <span id="outDiff">30 000 PLN</span>
                </div>
                <input type="range" class="rk-roi-range" id="slDiff" min="10000" max="60000" step="1000" value="30000">
                <p class="rk-roi-desc">O ile PC i wodna podłogówka są droższe.</p>
            </div>

            <div class="rk-roi-input-group" style="margin-bottom: 0;">
                <div class="rk-roi-label">
                    Sprawność Pompy (SCOP):
                    <span id="outScop">3.5</span>
                </div>
                <input type="range" class="rk-roi-range" id="slScop" min="2.5" max="5.0" step="0.1" value="3.5">
                <p class="rk-roi-desc">Im niższa temp. zasilania, tym wyższy SCOP.</p>
            </div>
        </div>

        <div class="rk-roi-results">
            
            <div class="rk-roi-gauge">
                <svg class="rk-gauge-svg" viewBox="0 0 200 200">
                    <circle class="rk-gauge-bg" cx="100" cy="100" r="80"></circle>
                    <circle class="rk-gauge-fill" id="roiGaugeFill" cx="100" cy="100" r="80"></circle>
                </svg>
                <div class="rk-gauge-text">
                    <span class="rk-gauge-val" id="resYears">5.1</span>
                    <span class="rk-gauge-lab">Lat zwrotu</span>
                </div>
            </div>

            <div class="rk-res-box">
                <span class="rk-res-box-val" id="resSavings">5 800 PLN</span>
                <span class="rk-res-box-lab">Twoja roczna oszczędność na prądzie</span>
            </div>

            <div class="rk-res-box">
                <span class="rk-res-box-val" id="resMonthly" style="color: #cbd5e1; font-size: 16px;">483 PLN</span>
                <span class="rk-res-box-lab">Oszczędność w skali miesiąca</span>
            </div>

        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Slidery
    const slPrice = document.getElementById('slPrice');
    const slDemand = document.getElementById('slDemand');
    const slDiff = document.getElementById('slDiff');
    const slScop = document.getElementById('slScop');

    // Wartości Wyjściowe Suwaków
    const outPrice = document.getElementById('outPrice');
    const outDemand = document.getElementById('outDemand');
    const outDiff = document.getElementById('outDiff');
    const outScop = document.getElementById('outScop');

    // Wyniki
    const resYears = document.getElementById('resYears');
    const resSavings = document.getElementById('resSavings');
    const resMonthly = document.getElementById('resMonthly');
    const gaugeFill = document.getElementById('roiGaugeFill');

    // Formatowanie
    const formatPLN = (num) => Math.round(num).toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ");

    function calculateROI() {
        const price = parseFloat(slPrice.value);
        const demand = parseFloat(slDemand.value);
        const diff = parseFloat(slDiff.value);
        const scop = parseFloat(slScop.value);

        // Aktualizacja tekstów obok suwaków
        outPrice.textContent = price.toFixed(2) + ' PLN';
        outDemand.textContent = formatPLN(demand) + ' kWh';
        outDiff.textContent = formatPLN(diff) + ' PLN';
        outScop.textContent = scop.toFixed(1);

        // Algorytm Oszczędności
        // Elektryka: Płacisz za 100% energii
        const costElec = demand * price;
        
        // Pompa Ciepła: Płacisz tylko za prąd do sprężarki
        const costPump = (demand / scop) * price;

        // Roczna różnica (Zysk)
        const savingsAnnual = costElec - costPump;
        
        // Czas zwrotu w latach
        let roiYears = diff / savingsAnnual;
        
        if (roiYears < 0 || !isFinite(roiYears)) {
            roiYears = 0;
        }

        // Aktualizacja UI
        resSavings.textContent = formatPLN(savingsAnnual) + ' PLN';
        resMonthly.textContent = formatPLN(savingsAnnual / 12) + ' PLN';
        resYears.textContent = roiYears.toFixed(1);

        // Aktualizacja Wskaźnika (Gauge SVG)
        // Zakładamy max sensowny zwrot na 20 lat do skali wskaźnika
        const maxYears = 20;
        let percentage = (roiYears / maxYears);
        if (percentage > 1) percentage = 1;
        if (percentage < 0) percentage = 0;

        // Zmiana koloru wskaźnika (Zielony -> Żółty -> Czerwony)
        let strokeColor = 'var(--rk-roi-primary)'; // Zielony (Zyskowny)
        if (roiYears > 8) strokeColor = 'var(--rk-roi-warning)'; // Żółty (Średni zwrot)
        if (roiYears > 12) strokeColor = '#f43f5e'; // Czerwony (Długi zwrot)
        
        gaugeFill.style.stroke = strokeColor;

        // Obwód koła to 2 * pi * r (r=80 -> ~502)
        // dashoffset = 502 oznacza puste, 0 oznacza pełne.
        // Chcemy, aby krótszy czas (mało lat) = zielone koło (prawie pełne, szybki zysk).
        // Więc odwrotność: 
        const fillAmount = 1 - percentage; 
        const offset = 502 - (502 * fillAmount);
        
        gaugeFill.style.strokeDashoffset = offset;
    }

    // Nasłuchiwacze na wszystkie suwaki
    const inputs = [slPrice, slDemand, slDiff, slScop];
    inputs.forEach(input => {
        if(input) {
            input.addEventListener('input', calculateROI);
        }
    });

    // Inicjalizacja pierwszego uruchomienia
    if (slPrice) calculateROI();
});
</script>



<style>
:root {
    --rk-pv-dark: #0f172a;
    --rk-pv-panel: #1e293b;
    --rk-pv-bg: #ffffff;
    --rk-pv-border: #e2e8f0;
    --rk-pv-text: #334155;
    --rk-pv-muted: #64748b;
    
    /* Kolory funkcyjne */
    --rk-pv-sun: #eab308; /* Żółty - Fotowoltaika */
    --rk-pv-heat: #ef4444; /* Czerwony - Zapotrzebowanie */
    --rk-pv-grid: #8b5cf6; /* Niebieski - Pobór z sieci */
    --rk-pv-success: #10b981; /* Zielony - Pompa Ciepła */
}

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

/* Nagłówek i opis (Top-Down Flow) */
.rk-pv-header {
    padding: 45px 50px 30px;
    text-align: center;
    background: linear-gradient(to bottom, #fefce8, #ffffff);
    border-bottom: 1px solid var(--rk-pv-border);
}

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

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

.rk-pv-header p {
    font-size: 16px;
    color: var(--rk-pv-text);
    max-width: 800px;
    margin: 0 auto;
    line-height: 1.7;
}

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

/* Sekcja Interaktywna - Przełącznik Centralny */
.rk-pv-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-pv-toggle-wrapper {
    display: flex;
    justify-content: center;
    margin-bottom: 40px;
}

.rk-pv-toggle {
    display: inline-flex;
    background: #e2e8f0;
    border-radius: 16px;
    padding: 6px;
    position: relative;
}

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

.rk-pv-toggle-btn.active { color: var(--rk-pv-dark); }

.rk-pv-toggle-indicator {
    position: absolute;
    top: 6px;
    left: 6px;
    height: calc(100% - 12px);
    width: calc(50% - 6px);
    border-radius: 12px;
    transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
    background: #ffffff;
    box-shadow: 0 4px 10px rgba(0,0,0,0.1);
}

.rk-pv-toggle[data-season="winter"] .rk-pv-toggle-indicator {
    transform: translateX(100%);
}

/* Scentralizowany Wykres SVG */
.rk-pv-chart-box {
    background: var(--rk-pv-dark);
    border-radius: 20px;
    padding: 30px;
    box-shadow: inset 0 10px 30px rgba(0,0,0,0.5);
    margin-bottom: 40px;
    position: relative;
}

.rk-pv-chart-svg {
    width: 100%;
    height: 250px;
}

/* Animacje Słupków SVG */
.anim-bar { transition: height 0.6s cubic-bezier(0.4, 0, 0.2, 1), y 0.6s cubic-bezier(0.4, 0, 0.2, 1); }
.anim-text { transition: opacity 0.4s; font-family: 'Inter', sans-serif; font-weight: bold; }

/* Karty Wynikowe (Grid Bottom) */
.rk-pv-cards-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 25px;
}

.rk-pv-card {
    background: #ffffff;
    border: 1px solid var(--rk-pv-border);
    border-radius: 16px;
    padding: 30px;
    position: relative;
    overflow: hidden;
    transition: all 0.4s;
}

.rk-pv-card::before {
    content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 4px;
}
.card-elec::before { background: var(--rk-pv-heat); }
.card-pump::before { background: var(--rk-pv-success); }

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

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

.rk-pv-result {
    background: #f1f5f9;
    padding: 15px;
    border-radius: 12px;
    text-align: center;
}

.rk-pv-result span {
    display: block;
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-pv-muted);
    margin-bottom: 5px;
}

.rk-pv-result strong {
    font-size: 20px;
    font-weight: 900;
}

.card-elec .rk-pv-result strong { color: var(--rk-pv-heat); }
.card-pump .rk-pv-result strong { color: var(--rk-pv-success); }

@media (max-width: 768px) {
    .rk-pv-header { padding: 30px 20px; }
    .rk-pv-interactive { padding: 30px 20px; }
    .rk-pv-toggle { width: 100%; display: flex; }
    .rk-pv-toggle-btn { flex: 1; justify-content: center; padding: 12px 10px; font-size: 13px; }
    .rk-pv-chart-svg { height: 200px; }
    .rk-pv-chart-box { padding: 15px; }
    .rk-pv-cards-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#article-fotowoltaika",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/"
    },
    "headline": "Dlaczego fotowoltaika nie eliminuje problemu ogrzewania elektrycznego?",
    "description": "Analiza zimowej luki energetycznej. Sprawdź, dlaczego ogrzewanie prądem z PV zimą to mit, i jak pompa ciepła ratuje bilans cieplny budynku.",
    "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-31",
    "dateModified": "2026-05-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#dataset-pv",
    "name": "Bilans energetyczny domu z PV: Produkcja vs Zapotrzebowanie (Polska strefa klimatyczna)",
    "description": "Zestawienie meteorologiczne uzyskanej energii słonecznej w stosunku do obciążenia cieplnego budynku w miesiącach zimowych (grudzień-styczeń).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "uzysk z fotowoltaiki w grudniu i styczniu",
      "ogrzewanie elektryczne a panele słoneczne",
      "współpraca pompy ciepła z PV zimą",
      "bilans cieplny budynku z fotowoltaiką",
      "zapotrzebowanie na ciepło a prąd"
    ],
    "measurementTechnique": "Porównanie krzywej produkcji instalacji PV o mocy 10 kWp do krzywej zapotrzebowania cieplnego budynku jednorodzinnego wyliczonego ze wzorów OZC.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zimą (grudzień, styczeń) fotowoltaika pokrywa średnio zaledwie 10-15% zapotrzebowania energetycznego domu.",
        "Ogrzewanie elektryczne generuje czarną dziurę finansową, zmuszając do kupowania 85% energii z sieci w najdroższej taryfie.",
        "Pompa ciepła, dzięki zjawisku termodynamicznemu, zużywa 3-4 razy mniej prądu sieciowego na wyprodukowanie tej samej ilości ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#webapp-pv",
    "name": "Symulator Luki Energetycznej (PV vs Zapotrzebowanie)",
    "description": "Interaktywny kokpit analityczny demonstrujący kolizję zerowej produkcji PV i szczytowego zapotrzebowania na ciepło w miesiącach zimowych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-pv-container" id="rk-pv-app">
    
    <div class="rk-pv-header">
        <div class="rk-pv-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg>
            Analiza Luki Energetycznej
        </div>
        <h2>Dlaczego fotowoltaika nie eliminuje problemu ogrzewania elektrycznego?</h2>
        <p>Wielu inwestorów ulega groźnemu mitowi: <em>"Mam PV, więc mam darmowe ogrzewanie elektryczne"</em>. Zgodnie z <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/" class="rk-pv-link">bilansem cieplnym budynków</a> dla polskiej strefy klimatycznej, produkcja z PV zimą pokrywa zaledwie <strong>10-15% potrzeb</strong>. Zobacz, jak brutalnie fizyka weryfikuje ten układ.</p>
    </div>

    <div class="rk-pv-interactive">
        
        <div class="rk-pv-toggle-wrapper">
            <div class="rk-pv-toggle" data-season="summer" id="pvToggleUi">
                <div class="rk-pv-toggle-indicator"></div>
                <button class="rk-pv-toggle-btn active" onclick="switchPvSeason('summer')">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="var(--rk-pv-sun)" stroke-width="2.5"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line></svg>
                    Miesiące Letnie (Lipiec)
                </button>
                <button class="rk-pv-toggle-btn" onclick="switchPvSeason('winter')">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M2 12h4l2-9 5 18 2-9h5"></path></svg>
                    Miesiące Zimowe (Styczeń)
                </button>
            </div>
        </div>

        <div class="rk-pv-chart-box">
            <svg class="rk-pv-chart-svg" viewBox="0 0 800 200" preserveAspectRatio="xMidYMid meet">
                <line x1="50" y1="160" x2="750" y2="160" stroke="#334155" stroke-width="2"/>
                <line x1="50" y1="110" x2="750" y2="110" stroke="#334155" stroke-width="1" stroke-dasharray="4 4"/>
                <line x1="50" y1="60" x2="750" y2="60" stroke="#334155" stroke-width="1" stroke-dasharray="4 4"/>
                
                <text x="40" y="165" fill="#64748b" font-family="Inter" font-size="12" text-anchor="end">0%</text>
                <text x="40" y="115" fill="#64748b" font-family="Inter" font-size="12" text-anchor="end">50%</text>
                <text x="40" y="65" fill="#64748b" font-family="Inter" font-size="12" text-anchor="end">100%</text>

                <rect class="anim-bar" id="barPv" x="150" y="60" width="120" height="100" fill="var(--rk-pv-sun)" rx="4"/>
                <text class="anim-text" id="txtPv" x="210" y="50" fill="var(--rk-pv-sun)" font-size="16" text-anchor="middle">Uzysk PV: 100%</text>
                <text x="210" y="185" fill="#94a3b8" font-family="Inter" font-size="14" font-weight="bold" text-anchor="middle">PRODUKCJA PRĄDU</text>

                <rect class="anim-bar" id="barHeat" x="340" y="150" width="120" height="10" fill="var(--rk-pv-heat)" rx="4"/>
                <text class="anim-text" id="txtHeat" x="400" y="140" fill="var(--rk-pv-heat)" font-size="16" text-anchor="middle">Straty ciepła: B. niskie</text>
                <text x="400" y="185" fill="#94a3b8" font-family="Inter" font-size="14" font-weight="bold" text-anchor="middle">ZAPOTRZEBOWANIE</text>

                <rect class="anim-bar" id="barGrid" x="530" y="160" width="120" height="0" fill="var(--rk-pv-grid)" rx="4"/>
                <text class="anim-text" id="txtGrid" x="590" y="150" fill="var(--rk-pv-grid)" font-size="16" text-anchor="middle" opacity="0">LUKA: Kupujesz prąd!</text>
                <text x="590" y="185" fill="#94a3b8" font-family="Inter" font-size="14" font-weight="bold" text-anchor="middle">DOBÓR Z SIECI</text>
            </svg>
        </div>

        <div class="rk-pv-cards-grid">
            
            <div class="rk-pv-card card-elec">
                <h3>
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--rk-pv-heat)" stroke-width="2.5"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"></path></svg>
                    Kable / Maty Elektryczne
                </h3>
                <p>Przy spadku produkcji z paneli do 10-15%, bezpośrednie ogrzewanie staje się <strong>czarną dziurą budżetową</strong>. Grzałka przerabia 1 kWh drogiego prądu z sieci na zaledwie 1 kWh ciepła (COP = 1.0). Brak masy akumulacyjnej pogłębia problem.</p>
                <div class="rk-pv-result">
                    <span id="resElecLabel">Oceny na miesiąc zimowy:</span>
                    <strong id="resElecStatus">KRYTYCZNE ZUŻYCIE Z SIECI</strong>
                </div>
            </div>

            <div class="rk-pv-card card-pump">
                <h3>
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--rk-pv-success)" stroke-width="2.5"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
                    Wodna Pompa Ciepła
                </h3>
                <p>Tu zadziała fizyka. <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-pv-link">Pompa ciepła</a> nie używa prądu do grzania, a jedynie do zasilania sprężarki. Przemienia 1 kWh prądu pobranego z sieci na nawet 3-4 kWh ciepła z zewnątrz (SCOP 3.5), ratując Twój portfel podczas mrozów.</p>
                <div class="rk-pv-result">
                    <span id="resPumpLabel">Oceny na miesiąc zimowy:</span>
                    <strong id="resPumpStatus">EFEKT DŹWIGNI (SCOP)</strong>
                </div>
            </div>

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

<script>
function switchPvSeason(season) {
    const toggleUi = document.getElementById('pvToggleUi');
    const btns = toggleUi.querySelectorAll('.rk-pv-toggle-btn');
    
    // UI toggle
    btns[0].classList.toggle('active', season === 'summer');
    btns[1].classList.toggle('active', season === 'winter');
    toggleUi.setAttribute('data-season', season);

    // Animacje SVG
    const barPv = document.getElementById('barPv');
    const txtPv = document.getElementById('txtPv');
    const barHeat = document.getElementById('barHeat');
    const txtHeat = document.getElementById('txtHeat');
    const barGrid = document.getElementById('barGrid');
    const txtGrid = document.getElementById('txtGrid');

    // Aktualizacja Kart
    const resElecStatus = document.getElementById('resElecStatus');
    const resPumpStatus = document.getElementById('resPumpStatus');

    if (season === 'summer') {
        // LATO
        barPv.setAttribute('y', '60');
        barPv.setAttribute('height', '100');
        txtPv.setAttribute('y', '50');
        txtPv.textContent = 'Uzysk PV: Wysoki (100%)';

        barHeat.setAttribute('y', '150');
        barHeat.setAttribute('height', '10');
        txtHeat.setAttribute('y', '140');
        txtHeat.textContent = 'Zapotrzebowanie: Znikome';

        barGrid.setAttribute('y', '160');
        barGrid.setAttribute('height', '0');
        txtGrid.setAttribute('opacity', '0');

        resElecStatus.textContent = "SYSTEM NIE PRACUJE (LATO)";
        resPumpStatus.textContent = "SYSTEM NIE PRACUJE (LATO)";
        resElecStatus.style.color = "var(--rk-pv-muted)";
        resPumpStatus.style.color = "var(--rk-pv-muted)";

    } else {
        // ZIMA (Styczeń/Grudzień)
        barPv.setAttribute('y', '145');
        barPv.setAttribute('height', '15');
        txtPv.setAttribute('y', '135');
        txtPv.textContent = 'Uzysk PV: ~15%';

        barHeat.setAttribute('y', '60');
        barHeat.setAttribute('height', '100');
        txtHeat.setAttribute('y', '50');
        txtHeat.textContent = 'Zapotrzebowanie: SZCZYTOWE';

        barGrid.setAttribute('y', '75');
        barGrid.setAttribute('height', '85');
        txtGrid.setAttribute('y', '65');
        txtGrid.textContent = 'LUKA: Prąd z sieci (85%)';
        txtGrid.setAttribute('opacity', '1');

        resElecStatus.textContent = "KRYTYCZNY KOSZT (KUPUJESZ Z SIECI)";
        resPumpStatus.textContent = "OSZCZĘDNOŚĆ x3.5 (DZIĘKI SCOP)";
        resElecStatus.style.color = "var(--rk-pv-heat)";
        resPumpStatus.style.color = "var(--rk-pv-success)";
    }
}
</script>



<style>
:root {
    --rk-sum-dark: #020617;
    --rk-sum-panel: #0f172a;
    --rk-sum-primary: #10b981; 
    --rk-sum-primary-light: #d1fae5;
    --rk-sum-accent: #0ea5e9; 
    --rk-sum-warning: #f43f5e; 
    --rk-sum-bg: #f8fafc;
    --rk-sum-border: #cbd5e1;
    --rk-sum-text: #334155;
    --rk-sum-text-dim: #64748b;
}

.rk-summary-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(16, 185, 129, 0.15);
    border: 1px solid rgba(16, 185, 129, 0.3);
    overflow: hidden;
}

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

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

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

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

.rk-header-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(16, 185, 129, 0.2);
    color: #6ee7b7;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 10px;
    border: 1px solid rgba(110, 231, 183, 0.3);
}

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

.rk-header-content p {
    color: #94a3b8;
    font-size: 15px;
    margin: 0;
    font-weight: 500;
    line-height: 1.5;
}

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

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

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

.rk-rule-btn:hover {
    border-color: var(--rk-sum-primary);
}

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

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

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

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

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

/* Nowa Wskazówka Eksperta (Wypełniacz po lewej) */
.rk-expert-tip {
    margin-top: auto;
    padding: 20px;
    background: rgba(16, 185, 129, 0.05);
    border: 1px dashed rgba(16, 185, 129, 0.4);
    border-radius: 12px;
    display: flex;
    gap: 15px;
    align-items: flex-start;
}

.rk-expert-tip svg {
    width: 24px;
    height: 24px;
    color: var(--rk-sum-primary);
    flex-shrink: 0;
}

.rk-expert-tip-text strong {
    display: block;
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-sum-dark);
    margin-bottom: 5px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

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

/* Panel Detali (Prawy) */
.rk-rule-details {
    padding: 40px;
    position: relative;
}

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

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

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

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

.rk-sum-link {
    color: var(--rk-sum-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid transparent;
    transition: 0.3s;
}
.rk-sum-link:hover { border-color: var(--rk-sum-accent); }

.rk-detail-svg {
    width: 100%;
    height: 160px;
    background: var(--rk-sum-dark);
    border-radius: 12px;
    padding: 15px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 20px rgba(0,0,0,0.5);
    border: 2px solid #1e293b;
}

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

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

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

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

.rk-calc-input-area {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

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

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

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

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

.rk-result-box.highlight { border-color: var(--rk-sum-primary); background: rgba(16, 185, 129, 0.1); }
.rk-result-box.danger { border-color: rgba(244, 63, 94, 0.5); background: rgba(244, 63, 94, 0.05); }

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

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

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

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

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

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

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

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

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

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

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#article-summary-final",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/"
    },
    "headline": "Podsumowanie eksperta: Wodna podłogówka to inwestycja, elektryka to abonament",
    "description": "Zestawienie twardych danych i interaktywny kalkulator kosztów TCO na 20 lat, porównujący koszty eksploatacji pomp ciepła i folii grzewczych.",
    "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-31",
    "dateModified": "2026-05-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#dataset-summary",
    "name": "Porównanie kosztów TCO: Elektryka vs Pompa Ciepła (20 lat)",
    "description": "Zestawienie analityczne weryfikujące koszty początkowe i wydatki energetyczne dwóch wiodących systemów ogrzewania płaszczyznowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator TCO ogrzewania",
      "opłacalność pompy ciepła",
      "koszty folii grzewczych",
      "symulacja zużycia prądu 20 lat",
      "ogrzewanie podłogowe inwestycja"
    ],
    "measurementTechnique": "Analiza całkowitych kosztów posiadania (TCO) na bazie szacunkowego zapotrzebowania na energię, zakładająca COP 1.0 dla kabli oraz średnie SCOP 3.5 dla pomp ciepła.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Sprawność kabli grzewczych to 1:1, co oznacza drastyczne koszty utrzymania.",
        "Pompa ciepła obniża rachunki 3.5-krotnie, pokrywając wyższy koszt inwestycji w ciągu kilku lat.",
        "Fotowoltaika zimą dostarcza ułamek potrzebnej energii."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#webapp-summary",
    "name": "Estymator Kosztów Długoterminowych Ogrzewania",
    "description": "Interaktywny symulator finansowy wyliczający szacunkowy rachunek za ogrzewanie w perspektywie 20 lat dla rozwiązań bezpośrednich oraz pomp ciepła.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Forms",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-summary-container" id="rk-tco-summary-app">
    
    <div class="rk-summary-header">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-expert-avatar" loading="lazy">
        <div class="rk-header-content">
            <div class="rk-header-badge">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                Wnioski Eksperta
            </div>
            <h2>Wodna podłogówka to inwestycja, elektryka to abonament</h2>
            <p>Nie daj się zwieść niskim kosztom montażu mat i folii. Wybór systemu grzewczego to decyzja, która na 20 lat zdefiniuje obciążenie Twojego portfela.</p>
        </div>
    </div>

    <div class="rk-summary-body">
        
        <div class="rk-rules-list">
            <button class="rk-rule-btn active" data-panel="tco-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="2" y="4" width="20" height="16" rx="2" ry="2"></rect><line x1="12" y1="12" x2="12" y2="12"></line></svg></div>
                <div class="rk-rule-text">
                    <h3>Zasada TCO (Koszty Całkowite)</h3>
                    <p>Startowa oszczędność vs rachunki</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="tco-2">
                <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="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg></div>
                <div class="rk-rule-text">
                    <h3>Mit darmowego prądu z PV</h3>
                    <p>Zimą panele nie grzeją domu</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="tco-3">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg></div>
                <div class="rk-rule-text">
                    <h3>Projekt to tarcza finansowa</h3>
                    <p>Obliczenia gwarantują efektywność</p>
                </div>
            </button>
            
            <!-- Nowa Wskazówka Eksperta (Wypełnia pustą przestrzeń) -->
            <div class="rk-expert-tip">
                <svg 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>
                    <path d="M12 8v4"></path>
                    <path d="M12 16h.01"></path>
                </svg>
                <div class="rk-expert-tip-text">
                    <strong>Wskazówka Inwestycyjna</strong>
                    <p>Różnica w kosztach prądu między foliami a pompą ciepła potrafi w kilka lat pokryć 100% ceny kompleksowego i prawidłowego montażu wodnej podłogówki.</p>
                </div>
            </div>
        </div>

        <div class="rk-rule-details">
            
            <div class="rk-detail-panel active" id="tco-1">
                <h4>Koszty to nie tylko materiał na starcie</h4>
                <p>Inwestorzy często wybierają elektrykę, bo kable kosztują 10 000 PLN zamiast 40 000 PLN (za komplet z pompą). Zapominają jednak, że przy kablach (COP 1.0) zapłacą cztery razy więcej za każdą zimę. Wodna podłogówka <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/" class="rk-sum-link">zwraca różnicę w cenie w kilka lat</a> i pozwala na wymianę źródła ciepła w przyszłości.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <line x1="100" y1="80" x2="100" y2="20" stroke="#64748b" stroke-width="4"/>
                        <polygon points="90,80 110,80 100,60" fill="#64748b"/>
                        <line x1="40" y1="30" x2="160" y2="50" stroke="#cbd5e1" stroke-width="4" stroke-linecap="round"/>
                        <rect x="30" y="32" width="20" height="30" fill="#f43f5e" rx="2"/>
                        <text x="40" y="47" fill="#ffffff" font-size="10" font-weight="bold" text-anchor="middle">COP 1</text>
                        <rect x="150" y="15" width="20" height="30" fill="#10b981" rx="2"/>
                        <text x="160" y="30" fill="#ffffff" font-size="10" font-weight="bold" text-anchor="middle">COP 4</text>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="tco-2">
                <h4>Zimą słońce nie opłaci faktur</h4>
                <p>Niestety, fotowoltaika pokrywa zaledwie kilkanaście procent zapotrzebowania w grudniu i styczniu. Przy ogrzewaniu elektrycznym bezpośrednim, w największe mrozy kupujesz 100% drogiego prądu z sieci. Pompa ciepła, pobierając 1 kW z sieci, pompuje w Twoją wylewkę 4 kW ciepła.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <line x1="20" y1="80" x2="180" y2="80" stroke="#64748b" stroke-width="2"/>
                        <line x1="20" y1="80" x2="20" y2="10" stroke="#64748b" stroke-width="2"/>
                        <path d="M 20 20 Q 100 100 180 20" fill="none" stroke="#f43f5e" stroke-width="3" stroke-dasharray="4 4"/>
                        <path d="M 20 80 Q 100 10 180 80" fill="none" stroke="#eab308" stroke-width="3"/>
                        <text x="100" y="95" fill="#94a3b8" font-size="10" text-anchor="middle" font-weight="bold">MIESIĄCE ZIMOWE VS LETNIE</text>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="tco-3">
                <h4>Zbuduj fundament z obliczeniami OZC</h4>
                <p>Zagęszczony rozstaw rur i prawidłowo dobrana średnica to wynik <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/" class="rk-sum-link">precyzyjnych obliczeń OZC</a>. To jedyna metoda, aby obniżyć temperaturę zasilania wody do ok. 30°C. <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/" class="rk-sum-link">Brak projektu to układanie rur w ciemno</a>, co zawsze mści się wyższymi rachunkami i krótszą żywotnością samej pompy.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <rect x="50" y="15" width="100" height="70" fill="none" stroke="#0ea5e9" stroke-width="3" rx="4"/>
                        <line x1="60" y1="30" x2="140" y2="30" stroke="#0ea5e9" stroke-width="2"/>
                        <line x1="60" y1="45" x2="120" y2="45" stroke="#0ea5e9" stroke-width="2"/>
                        <rect x="60" y="55" width="30" height="20" fill="none" stroke="#10b981" stroke-width="2"/>
                        <rect x="100" y="55" width="40" height="20" fill="none" stroke="#10b981" stroke-width="2"/>
                        <path d="M 125 40 L 135 30 L 145 40" fill="none" stroke="#10b981" stroke-width="2"/>
                        <line x1="135" y1="30" x2="135" y2="50" stroke="#10b981" stroke-width="2"/>
                    </svg>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-quick-calc">
        <div class="rk-calc-header">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-sum-primary)" stroke-width="2.5"><rect x="2" y="4" width="20" height="16" rx="2" ry="2"></rect><line x1="6" y1="8" x2="6" y2="8"></line><line x1="10" y1="8" x2="10" y2="8"></line><line x1="14" y1="8" x2="14" y2="8"></line><line x1="18" y1="8" x2="18" y2="8"></line><line x1="6" y1="12" x2="18" y2="12"></line><line x1="6" y1="16" x2="18" y2="16"></line></svg>
                Estymator Kosztów Długoterminowych (20 lat)
            </h4>
            <span style="font-size:12px; color:#64748b;">Zależne od zapotrzebowania</span>
        </div>

        <div class="rk-calc-grid">
            
            <div class="rk-calc-input-area">
                <div class="rk-calc-label">
                    Zapotrzebowanie roczne:
                    <span id="tcoDemandOut">8000 kWh</span>
                </div>
                <input type="range" class="rk-sum-range" id="tcoDemandSlider" min="4000" max="16000" step="500" value="8000">
                <p style="font-size: 11px; color:#64748b; margin:0;">*Cena prądu przyjęta bazowo: 1.2 PLN/kWh. SCOP PC: 3.5</p>
            </div>

            <div class="rk-calc-results">
                <div class="rk-result-box danger">
                    <span class="rk-res-val" id="resElec">192 000 <span style="font-size:14px;color:var(--rk-sum-warning);">PLN</span></span>
                    <span class="rk-res-lab">Kable / Maty (COP 1.0)</span>
                </div>
                <div class="rk-result-box highlight">
                    <span class="rk-res-val" id="resPump">54 850 <span style="font-size:14px;color:var(--rk-sum-primary);">PLN</span></span>
                    <span class="rk-res-lab">Pompa Ciepła (SCOP 3.5)</span>
                </div>
                <div class="rk-result-box">
                    <span class="rk-res-val" id="resSave">137 150 <span style="font-size:14px;color:#64748b;">PLN</span></span>
                    <span class="rk-res-lab">Różnica na plus dla wody</span>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-summary-author">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - CEO i Projektant HVAC" class="rk-author-photo-small" loading="lazy">
        <div class="rk-author-info">
            <h4>Robert Kucharski</h4>
            <p>CEO i twórca portalu Projekt-Ogrzewania.pl. Posiadam na swoim koncie ponad 1000 zrealizowanych projektów wodnego ogrzewania podłogowego. Uważam, że matematyka nie kłamie – przed rozpoczęciem instalacji zawsze należy wykonać twardą analizę opłacalności w oparciu o normy PN-EN, a nie ulotki reklamowe.</p>
            <div class="rk-author-links">
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
                    LinkedIn
                </a>
                <a href="https://www.facebook.com/robert.kucharski.budowa.bez.sciemy" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.469h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.469h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>
                    Facebook
                </a>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zakładki Panelu Bocznego
    const btns = document.querySelectorAll('#rk-tco-summary-app .rk-rule-btn');
    const panels = document.querySelectorAll('#rk-tco-summary-app .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 targetId = btn.getAttribute('data-panel');
            const targetPanel = document.getElementById(targetId);
            if(targetPanel) {
                targetPanel.classList.add('active');
            }
        });
    });

    // 2. Kalkulator TCO
    const slider = document.getElementById('tcoDemandSlider');
    const demandOut = document.getElementById('tcoDemandOut');
    const resElec = document.getElementById('resElec');
    const resPump = document.getElementById('resPump');
    const resSave = document.getElementById('resSave');

    function updateTCO() {
        const demandKwh = parseInt(slider.value);
        demandOut.textContent = demandKwh + ' kWh';

        const years = 20;
        const pricePerKwh = 1.20; // PLN
        const scopPump = 3.5;

        // Koszt samej energii przez 20 lat
        const elecCost = demandKwh * years * pricePerKwh;
        const pumpCost = (demandKwh / scopPump) * years * pricePerKwh;
        const diff = elecCost - pumpCost;

        // Formatter z przerwą tysięczną
        const formatNumber = (num) => Math.round(num).toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ");

        resElec.innerHTML = formatNumber(elecCost) + ' <span style="font-size:14px;color:var(--rk-sum-warning);">PLN</span>';
        resPump.innerHTML = formatNumber(pumpCost) + ' <span style="font-size:14px;color:var(--rk-sum-primary);">PLN</span>';
        resSave.innerHTML = formatNumber(diff) + ' <span style="font-size:14px;color:#64748b;">PLN</span>';
    }

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



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-panel: #1e293b;
    --rk-case-bg: #ffffff;
    --rk-case-surface: #f8fafc;
    --rk-case-border: #e2e8f0;
    
    /* Kolory funkcyjne */
    --rk-case-brand: #0284c7; /* Sky Blue */
    --rk-case-danger: #f43f5e; /* Rose */
    --rk-case-success: #10b981; /* Emerald */
    --rk-case-warning: #f59e0b; /* Amber */
    
    --rk-case-text: #334155;
    --rk-case-muted: #64748b;
}

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

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

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

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

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

/* Moduł Interaktywny - Przełącznik Scenariuszy */
.rk-case-interactive {
    padding: 40px 50px 0;
    background: var(--rk-case-surface);
}

.rk-case-tabs {
    display: flex;
    background: #e2e8f0;
    padding: 6px;
    border-radius: 16px;
    margin-bottom: 30px;
}

.rk-case-tab-btn {
    flex: 1;
    padding: 16px 20px;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-case-muted);
    background: transparent;
    border: none;
    border-radius: 12px;
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.rk-case-tab-btn[data-target="scenario-bad"].active {
    background: #ffffff;
    color: var(--rk-case-danger);
    box-shadow: 0 4px 10px rgba(244, 63, 94, 0.15);
}

.rk-case-tab-btn[data-target="scenario-good"].active {
    background: #ffffff;
    color: var(--rk-case-success);
    box-shadow: 0 4px 10px rgba(16, 185, 129, 0.15);
}

/* Panele Scenariuszy */
.rk-case-scenario {
    display: none;
    margin-bottom: 40px;
}

.rk-case-scenario.active {
    display: block;
}

/* Centralne Dane Liczbowe (Bez SVG) */
.rk-case-data-box {
    background: #ffffff;
    border: 1px solid var(--rk-case-border);
    border-radius: 16px;
    padding: 35px 40px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-case-data-box h3 {
    margin: 0 0 25px 0;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-case-dark);
    text-align: center;
    padding-bottom: 20px;
    border-bottom: 2px solid var(--rk-case-surface);
}

.rk-case-metric {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px 0;
    border-bottom: 1px dashed var(--rk-case-border);
}

.rk-case-metric:last-child {
    border-bottom: none;
}

.rk-case-metric-lab {
    font-size: 15px;
    font-weight: 600;
    color: var(--rk-case-muted);
}

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

.scenario-bad .rk-case-metric-val.highlight { color: var(--rk-case-danger); }
.scenario-good .rk-case-metric-val.highlight { color: var(--rk-case-success); }

/* Wnioski i CTA */
.rk-case-footer {
    background: #ffffff;
    border-top: 1px solid var(--rk-case-border);
    padding: 40px 50px;
    text-align: center;
}

.rk-case-conclusion {
    background: #f1f5f9;
    border-left: 4px solid var(--rk-case-brand);
    padding: 20px 30px;
    border-radius: 0 12px 12px 0;
    margin-bottom: 35px;
    text-align: left;
}

.rk-case-conclusion h4 {
    margin: 0 0 10px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-case-dark);
}

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

.rk-case-link {
    color: var(--rk-case-brand);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-case-brand);
    transition: 0.3s;
}

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

/* Massive CTA */
.rk-cta-massive {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 15px;
    background: var(--rk-case-success);
    color: #ffffff;
    font-size: 20px;
    font-weight: 900;
    padding: 20px 45px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 15px 30px -10px rgba(16, 185, 129, 0.5);
    transition: all 0.3s;
    border: 2px solid transparent;
    width: 100%;
    max-width: 600px;
    margin: 0 auto;
}

.rk-cta-massive:hover {
    transform: translateY(-4px);
    background: #059669;
    box-shadow: 0 20px 40px -10px rgba(16, 185, 129, 0.6);
    border-color: #6ee7b7;
}

@media (max-width: 768px) {
    .rk-case-header, .rk-case-interactive, .rk-case-footer { padding: 30px 20px; }
    .rk-case-tabs { flex-direction: column; }
    .rk-case-data-box { padding: 25px 20px; }
    .rk-case-metric { flex-direction: column; align-items: flex-start; gap: 5px; }
    .rk-case-metric-val { align-self: flex-start; }
    .rk-cta-massive { font-size: 16px; padding: 18px 20px; }
    .rk-case-conclusion { padding: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#article-case-study",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/"
    },
    "headline": "Case Study: Projekt ogrzewania podłogowego dla domu 145 m² (Bochnia, Małopolska)",
    "description": "Zobacz, jak profesjonalny projekt instalacji ogrzewania podłogowego i dobór pompy ciepła uratowały inwestora przed rachunkami na poziomie 9500 PLN rocznie.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-31",
    "dateModified": "2026-05-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#dataset-case-study",
    "name": "Analiza porównawcza TCO dla domu 145 m² (Małopolska, maj 2026)",
    "description": "Zestawienie parametrów projektowych dla budynku mieszkalnego: symulacja kosztów bezpośredniego ogrzewania elektrycznego w zestawieniu z wodną instalacją płaszczyznową.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt instalacji ogrzewania podłogowego",
      "koszt ogrzewania 145m2 pompą ciepła",
      "ogrzewanie elektryczne czy pompa ciepła",
      "obliczenia ozc dla domu",
      "temperatura zasilania podłogówki 35 stopni"
    ],
    "measurementTechnique": "Weryfikacja inżynieryjna kosztów na podstawie projektu OZC. Wykazanie obniżenia temperatury zasilania do 35°C w strefie klimatycznej o projektowej temperaturze zewnętrznej -18°C.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zapotrzebowanie roczne budynku: 9 500 kWh.",
        "Scenariusz 1 (Kable elektryczne): Brak OZC, zasilanie oporowe, rachunki powyżej 9 500 PLN rocznie.",
        "Scenariusz 2 (Woda + Pompa monoblok): Rozstaw 10-15cm z projektu OZC, zasilanie max 35°C, koszty roczne ~2 600 PLN."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#webapp-case-study",
    "name": "Symulator Scenariuszy Inwestycyjnych",
    "description": "Interaktywny panel zestawiający pierwotny plan inwestora (generujący wysokie koszty utrzymania) z finalnym rozwiązaniem inżynierskim zoptymalizowanym poprzez projekt OZC.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-case-container" id="rk-case-app">
    
    <div class="rk-case-header">
        <div class="rk-case-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><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 (Maj 2026)
        </div>
        <h2>Projekt dla inwestora Mateusza z Małopolski (Dom 145 m²)</h2>
        <p>Zobacz na realnym przykładzie mojego klienta z okolic Bochni, dlaczego wykonanie dokładnego audytu cieplnego wywróciło do góry nogami jego plany dotyczące instalacji elektrycznej.</p>
    </div>

    <div class="rk-case-interactive">
        
        <div class="rk-case-tabs">
            <button class="rk-case-tab-btn active" data-target="scenario-bad">
                <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><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg>
                Pierwotny Plan Inwestora
            </button>
            <button class="rk-case-tab-btn" data-target="scenario-good">
                <svg width="20" height="20" 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>
                Rozwiązanie z Projektem
            </button>
        </div>

        <div class="rk-case-scenario scenario-bad active" id="scenario-bad">
            <div class="rk-case-data-box">
                <h3>Kable grzejne w całej podłodze</h3>
                
                <div class="rk-case-metric">
                    <span class="rk-case-metric-lab">Zapotrzebowanie budynku</span>
                    <span class="rk-case-metric-val">9 500 kWh / rok</span>
                </div>
                <div class="rk-case-metric">
                    <span class="rk-case-metric-lab">Projekt instalacji podłogowej</span>
                    <span class="rk-case-metric-val highlight">Brak (montaż "na oko")</span>
                </div>
                <div class="rk-case-metric">
                    <span class="rk-case-metric-lab">Współczynnik COP układu</span>
                    <span class="rk-case-metric-val">1.0</span>
                </div>
                <div class="rk-case-metric" style="border: none; padding-top: 25px; margin-top: 10px;">
                    <span class="rk-case-metric-lab" style="color: var(--rk-case-dark); font-size: 16px;">Szacowany rachunek roczny</span>
                    <span class="rk-case-metric-val highlight" style="font-size: 26px;">> 9 500 PLN</span>
                </div>
            </div>
        </div>

        <div class="rk-case-scenario scenario-good" id="scenario-good">
            <div class="rk-case-data-box">
                <h3>Woda + Pompa Monoblok</h3>
                
                <div class="rk-case-metric">
                    <span class="rk-case-metric-lab">Zapotrzebowanie budynku</span>
                    <span class="rk-case-metric-val">9 500 kWh / rok</span>
                </div>
                <div class="rk-case-metric">
                    <span class="rk-case-metric-lab"><a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-case-link" style="color:var(--rk-case-muted);">Rozstaw rur (na bazie OZC)</a></span>
                    <span class="rk-case-metric-val highlight">co 10-15 cm</span>
                </div>
                <div class="rk-case-metric">
                    <span class="rk-case-metric-lab"><a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/" class="rk-case-link" style="color:var(--rk-case-muted);">Temp. zasilania przy -18°C</a></span>
                    <span class="rk-case-metric-val">zaledwie 35°C</span>
                </div>
                <div class="rk-case-metric" style="border: none; padding-top: 25px; margin-top: 10px;">
                    <span class="rk-case-metric-lab" style="color: var(--rk-case-dark); font-size: 16px;">Szacowany rachunek roczny</span>
                    <span class="rk-case-metric-val highlight" style="font-size: 26px;">~2 600 PLN</span>
                </div>
            </div>
        </div>

    </div>

    <div class="rk-case-footer">
        <div class="rk-case-conclusion">
            <h4>Wniosek: Nie ryzykuj budżetem domowym</h4>
            <p>Ogrzewanie to inwestycja długoterminowa. Wybierając system grzewczy, nie patrz na cenę zakupu komponentów w sklepie, ale na <strong>koszt całkowity (TCO)</strong> w perspektywie 20 lat. Inwestycja w profesjonalny <a href="https://projekt-ogrzewania.pl/ile-kosztuje-projekt-ogrzewania-podlogowego/" class="rk-case-link">projekt instalacji ogrzewania podłogowego</a> oparty na obliczeniach OZC zwróciła się Panu Mateuszowi w postaci drastycznie obniżonych rachunków za prąd jeszcze przed ostatecznym zakończeniem prac wykończeniowych.</p>
        </div>

        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-cta-massive">
            <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="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="12" y1="18" x2="12" y2="12"></line><line x1="9" y1="15" x2="15" y2="15"></line></svg>
            ZAMÓW PROFESJONALNY PROJEKT PODŁOGÓWKI
        </a>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('#rk-case-app .rk-case-tab-btn');
    const scenarios = document.querySelectorAll('#rk-case-app .rk-case-scenario');

    btns.forEach(btn => {
        btn.addEventListener('click', () => {
            // Czyszczenie aktywnych klas
            btns.forEach(b => b.classList.remove('active'));
            scenarios.forEach(s => s.classList.remove('active'));

            // Ustawienie aktywnych klas
            btn.classList.add('active');
            const targetId = btn.getAttribute('data-target');
            const targetScenario = document.getElementById(targetId);
            
            if (targetScenario) {
                targetScenario.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-bg: #ffffff;
    --rk-err-surface: #f8fafc;
    --rk-err-border: #e2e8f0;
    --rk-err-primary: #f43f5e; /* Red for errors */
    --rk-err-primary-light: #fff1f2;
    --rk-err-accent: #3b82f6; /* Blue for tech details */
    --rk-err-text: #334155;
    --rk-err-muted: #64748b;
    --rk-err-success: #10b981;
}

.rk-err-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-err-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(244, 63, 94, 0.1);
    border: 1px solid rgba(244, 63, 94, 0.2);
    overflow: hidden;
}

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

.rk-err-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(244, 63, 94, 0.2);
    color: #fda4af;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 12px;
    border: 1px solid rgba(244, 63, 94, 0.3);
}

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

.rk-err-header h2 span {
    color: #fda4af;
}

/* Interaktywny Dashboard */
.rk-err-dashboard {
    display: grid;
    grid-template-columns: 320px 1fr;
    background: var(--rk-err-surface);
}

/* Nawigacja (Zakładki Błędów) */
.rk-err-nav {
    padding: 30px;
    border-right: 1px solid var(--rk-err-border);
    background: #ffffff;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-err-tab {
    background: var(--rk-err-surface);
    border: 1px solid var(--rk-err-border);
    padding: 16px 20px;
    border-radius: 12px;
    text-align: left;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.rk-err-tab:hover {
    border-color: #cbd5e1;
    transform: translateX(4px);
}

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

.rk-err-tab-title {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-err-dark);
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-err-tab.active .rk-err-tab-title {
    color: var(--rk-err-primary);
}

.rk-err-tab-subtitle {
    font-size: 12px;
    color: var(--rk-err-muted);
    font-weight: 500;
}

/* Panel Prezentacji */
.rk-err-content {
    padding: 40px;
    position: relative;
}

.rk-err-panel {
    display: none;
    animation: errFadeIn 0.4s ease-out forwards;
}

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

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

/* Grid wewnątrz panelu */
.rk-err-panel-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 25px;
}

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

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

.rk-err-text-box strong {
    color: var(--rk-err-primary);
}

.rk-err-formula {
    display: inline-block;
    background: #f1f5f9;
    padding: 8px 15px;
    border-radius: 8px;
    font-family: monospace;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-err-accent);
    border: 1px solid #e2e8f0;
    margin: 5px 0;
}

.rk-err-link {
    color: var(--rk-err-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px dashed rgba(59, 130, 246, 0.4);
    transition: 0.3s;
}

.rk-err-link:hover {
    color: #1d4ed8;
    border-bottom-style: solid;
}

/* Sekcja Wizualizacji SVG */
.rk-err-visual {
    background: var(--rk-err-dark);
    border-radius: 16px;
    padding: 20px;
    height: 180px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 10px 30px rgba(0,0,0,0.5);
    border: 2px solid #1e293b;
    position: relative;
    overflow: hidden;
}

.rk-err-svg {
    width: 100%;
    height: 100%;
    max-width: 300px;
}

/* Animacje SVG zależne od błędu */
/* Błąd 1: OZC */
.anim-heat-wave { stroke-dasharray: 8 8; animation: heatFlow 1s linear infinite; }
@keyframes heatFlow { to { stroke-dashoffset: -16; } }
.anim-temp-alert { animation: tempPulse 1.5s infinite alternate; }
@keyframes tempPulse { 0% { fill: #ef4444; filter: drop-shadow(0 0 2px #ef4444); } 100% { fill: #b91c1c; filter: drop-shadow(0 0 10px #ef4444); } }

/* Błąd 2: Wylewka */
.anim-heat-escape { animation: escapeUp 2s infinite ease-out; opacity: 0; }
@keyframes escapeUp { 0% { transform: translateY(0); opacity: 0.8; } 100% { transform: translateY(-30px); opacity: 0; } }

/* Błąd 3: Hydraulika */
.anim-bad-flow { stroke-dasharray: 4 12; animation: slowFlow 3s linear infinite; }
@keyframes slowFlow { to { stroke-dashoffset: -16; } }
.anim-freeze { animation: freezeSpin 4s linear infinite; transform-origin: center; }
@keyframes freezeSpin { to { transform: rotate(360deg); } }

/* Błąd 4: Panele i Podkład */
.anim-bounce-heat { animation: bounceBack 2s infinite ease-in-out; }
@keyframes bounceBack { 0% { transform: translateY(0); opacity: 1; } 50% { transform: translateY(-15px); opacity: 0.5; } 100% { transform: translateY(0); opacity: 1; } }

/* Błąd 5: Brak Dylatacji */
.anim-crack-draw { stroke-dasharray: 100; stroke-dashoffset: 100; animation: drawCrack 1.5s 0.5s forwards ease-out; }
@keyframes drawCrack { to { stroke-dashoffset: 0; } }
.anim-shake { animation: tensionShake 2s infinite; }
@keyframes tensionShake { 0%, 100% { transform: translateX(0); } 10%, 30%, 50%, 70%, 90% { transform: translateX(-2px); } 20%, 40%, 60%, 80% { transform: translateX(2px); } }

@media (max-width: 768px) {
    .rk-err-dashboard { grid-template-columns: 1fr; }
    .rk-err-nav { border-right: none; border-bottom: 1px solid var(--rk-err-border); padding: 20px; flex-direction: row; overflow-x: auto; scroll-snap-type: x mandatory; }
    .rk-err-tab { min-width: 240px; scroll-snap-align: start; }
    .rk-err-header { padding: 30px 20px; }
    .rk-err-content { padding: 25px 20px; }
    .rk-err-visual { height: 150px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/"
    },
    "headline": "5 najdroższych błędów przy montażu ogrzewania podłogowego (zapisz, by uniknąć)",
    "description": "Zestawienie krytycznych błędów instalacyjnych: brak OZC, zły opór cieplny paneli, brak dylatacji i zła hydraulika niszczące sprawność pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-31",
    "dateModified": "2026-05-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#dataset-bledy",
    "name": "Skutki błędów instalacyjnych i materiałowych w systemach płaszczyznowych",
    "description": "Katalog najkosztowniejszych pomyłek na etapie planowania, doboru okładzin i wykonywania dylatacji prowadzących do awarii ogrzewania.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "najczęstsze błędy ogrzewania podłogowego",
      "brak projektu ozc",
      "opór cieplny paneli ogrzewanie podłogowe",
      "pękanie wylewki na podłogówce",
      "taśma brzegowa dylatacje błędy"
    ],
    "measurementTechnique": "Analiza spadków sprawności (COP) oraz uszkodzeń mechanicznych (pękanie jastrychu) wynikających z pominięcia normatywnych procedur hydrauliczno-budowlanych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Błąd 1: Pominięcie projektu OZC i rozstaw rur co 20cm (spadek sprawności o 15-20%).",
        "Błąd 2: Zbyt cienka wylewka ograniczająca akumulacyjność cieplną budynku.",
        "Błąd 3: Brak obliczeń hydraulicznych (dławienie przepływów, niedogrzane strefy).",
        "Błąd 4: Przekroczenie granicznego oporu cieplnego okładziny (powyżej 0,15 m²K/W).",
        "Błąd 5: Pominięcie dylatacji i taśmy brzegowej prowadzące do pękania wylewki."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#webapp-bledy",
    "name": "Symulator Uszkodzeń Ogrzewania Podłogowego",
    "description": "Interaktywne narzędzie wizualizujące skutki braku dylatacji, złego doboru paneli podłogowych i błędów w projektowaniu układu rur.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container" id="rk-err-app">
    
    <div class="rk-err-header">
        <div class="rk-err-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><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>
            Katalog Zagrożeń
        </div>
        <h2>Najczęstsze błędy inwestycyjne <span>(zapisz, by uniknąć)</span></h2>
    </div>

    <div class="rk-err-dashboard">
        
        <div class="rk-err-nav">
            <button class="rk-err-tab active" data-err="err-1">
                <div class="rk-err-tab-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><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                    Błąd 1: Brak OZC
                </div>
                <div class="rk-err-tab-subtitle">Rury układane "na oko"</div>
            </button>
            
            <button class="rk-err-tab" data-err="err-2">
                <div class="rk-err-tab-title">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"></path><line x1="7" y1="7" x2="7.01" y2="7"></line></svg>
                    Błąd 2: Cienka Wylewka
                </div>
                <div class="rk-err-tab-subtitle">Utrata akumulacji ciepła</div>
            </button>
            
            <button class="rk-err-tab" data-err="err-3">
                <div class="rk-err-tab-title">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M2 12h4l2-9 5 18 2-9h5"></path></svg>
                    Błąd 3: Zła Hydraulika
                </div>
                <div class="rk-err-tab-subtitle">Niedogrzane pomieszczenia</div>
            </button>

            <button class="rk-err-tab" data-err="err-4">
                <div class="rk-err-tab-title">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                    Błąd 4: Okładzina
                </div>
                <div class="rk-err-tab-subtitle">Blokowanie oddawania ciepła</div>
            </button>

            <button class="rk-err-tab" data-err="err-5">
                <div class="rk-err-tab-title">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                    Błąd 5: Brak Dylatacji
                </div>
                <div class="rk-err-tab-subtitle">Pękanie wylewki i płytek</div>
            </button>
        </div>

        <div class="rk-err-content">
            
            <div class="rk-err-panel active" id="err-1">
                <div class="rk-err-panel-grid">
                    <div class="rk-err-text-box">
                        <h3>Pominięcie projektu OZC</h3>
                        <p>Inwestorzy często ufają „doświadczeniu instalatora”, który bez przeliczeń układaja rury co 20 cm w całym domu. Taki rzadki rozstaw sprawia, że podłoga oddaje zbyt mało energii do pomieszczenia.</p>
                        <p><strong>Skutek?</strong> Aby dogrzać dom, pompa ciepła musi pracować na wyższych temperaturach zasilania (np. 45°C zamiast 30°C). To zaburza termodynamikę i drastycznie <strong>obniża sprawność pompy (COP) o 15-20% rocznie</strong>.</p>
                    </div>
                    <div class="rk-err-visual">
                        <svg class="rk-err-svg" viewBox="0 0 200 100">
                            <line x1="20" y1="50" x2="180" y2="50" stroke="#475569" stroke-width="6" stroke-linecap="round"/>
                            <line x1="20" y1="80" x2="180" y2="80" stroke="#475569" stroke-width="6" stroke-linecap="round"/>
                            <path class="anim-heat-wave" d="M 30 50 C 50 30 70 70 90 50" fill="none" stroke="#ef4444" stroke-width="3"/>
                            <path class="anim-heat-wave" d="M 110 50 C 130 30 150 70 170 50" fill="none" stroke="#ef4444" stroke-width="3"/>
                            <rect x="85" y="10" width="30" height="15" fill="#1e293b" stroke="#cbd5e1" stroke-width="2" rx="4"/>
                            <text class="anim-temp-alert" x="100" y="21" font-size="10" font-weight="bold" fill="#ef4444" text-anchor="middle">45°C!</text>
                        </svg>
                    </div>
                </div>
            </div>

            <div class="rk-err-panel" id="err-2">
                <div class="rk-err-panel-grid">
                    <div class="rk-err-text-box">
                        <h3>Zbyt cienka wylewka</h3>
                        <p>W pogoni za oszczędnościami na materiale lub z braku miejsca, wylewka (jastrych) jest wylewana na minimalną grubość. Beton to naturalny magazyn ciepła dla budynku.</p>
                        <p><strong>Skutek?</strong> Zbyt mała masa akumulacyjna ogranicza możliwość „magazynowania” ciepła w <a href="https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/" class="rk-err-link">taniej taryfie energetycznej</a>. System szybko się wychładza, a pompa musi włączać się w najdroższych godzinach szczytu.</p>
                    </div>
                    <div class="rk-err-visual">
                        <svg class="rk-err-svg" viewBox="0 0 200 100">
                            <circle cx="100" cy="70" r="10" fill="none" stroke="#ef4444" stroke-width="4"/>
                            <rect x="40" y="55" width="120" height="30" fill="#64748b" opacity="0.5" rx="2"/>
                            <path class="anim-heat-escape" d="M 70 50 Q 80 30 70 10" fill="none" stroke="#f59e0b" stroke-width="3" stroke-linecap="round"/>
                            <path class="anim-heat-escape" d="M 100 50 Q 110 30 100 10" fill="none" stroke="#f59e0b" stroke-width="3" stroke-linecap="round" style="animation-delay: 0.5s;"/>
                            <path class="anim-heat-escape" d="M 130 50 Q 140 30 130 10" fill="none" stroke="#f59e0b" stroke-width="3" stroke-linecap="round" style="animation-delay: 1s;"/>
                        </svg>
                    </div>
                </div>
            </div>

            <div class="rk-err-panel" id="err-3">
                <div class="rk-err-panel-grid">
                    <div class="rk-err-text-box">
                        <h3>Brak obliczeń hydraulicznych</h3>
                        <p>Długość pętli i opory tłoczenia muszą być policzone. Równanie przepływu <span class="rk-err-formula">m = Q / (cw × ΔT)</span> jest absolutną podstawą dla dobrania odpowiednich <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/" class="rk-err-link">parametrów pompy obiegowej</a>.</p>
                        <p><strong>Skutek?</strong> Instalacje budowane na przysłowiowe "wyczucie" cierpią na dławienie przepływów. Woda nie nadąża oddawać ciepła na końcach długich obwodów, co skutkuje wiecznie niedogrzanymi sypialniami i łazienkami na piętrze.</p>
                    </div>
                    <div class="rk-err-visual">
                        <svg class="rk-err-svg" viewBox="0 0 200 100">
                            <path d="M 20 40 L 70 40 L 90 48 L 110 48 L 130 40 L 180 40" fill="none" stroke="#475569" stroke-width="4"/>
                            <path d="M 20 60 L 70 60 L 90 52 L 110 52 L 130 60 L 180 60" fill="none" stroke="#475569" stroke-width="4"/>
                            <path class="anim-bad-flow" d="M 25 50 L 65 50 M 135 50 L 175 50" fill="none" stroke="#3b82f6" stroke-width="2" stroke-linecap="round"/>
                            <g class="anim-freeze" transform="translate(150, 25)">
                                <line x1="0" y1="-8" x2="0" y2="8" stroke="#0ea5e9" stroke-width="2"/>
                                <line x1="-7" y1="-4" x2="7" y2="4" stroke="#0ea5e9" stroke-width="2"/>
                                <line x1="-7" y1="4" x2="7" y2="-4" stroke="#0ea5e9" stroke-width="2"/>
                            </g>
                        </svg>
                    </div>
                </div>
            </div>

            <div class="rk-err-panel" id="err-4">
                <div class="rk-err-panel-grid">
                    <div class="rk-err-text-box">
                        <h3>Zły dobór paneli i podkładu (Opór cieplny)</h3>
                        <p>Inwestorzy zapominają, że gruba deska lub tanie panele ułożone na izolacyjnym podkładzie działają dosłownie jak narzucony na grzejnik koc. Jeśli całkowity opór cieplny (podkład + panel) przekracza granicę <span class="rk-err-formula">R = 0,15 m²K/W</span>, system staje się niewydolny.</p>
                        <p><strong>Skutek?</strong> Ciepło zostaje „uwięzione” w wylewce. Aby przebić się przez <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/" class="rk-err-link">izolacyjną warstwę okładziny</a>, pompa ciepła musi pracować na mocno zawyżonych parametrach zasilania, co błyskawicznie pożera zakładane oszczędności.</p>
                    </div>
                    <div class="rk-err-visual">
                        <svg class="rk-err-svg" viewBox="0 0 200 100">
                            <rect x="20" y="20" width="160" height="15" fill="#ca8a04" rx="2"/>
                            <rect x="20" y="38" width="160" height="8" fill="#94a3b8" rx="2"/>
                            <rect x="20" y="49" width="160" height="40" fill="#64748b" opacity="0.5" rx="2"/>
                            <circle cx="60" cy="70" r="8" fill="none" stroke="#ef4444" stroke-width="3"/>
                            <circle cx="100" cy="70" r="8" fill="none" stroke="#ef4444" stroke-width="3"/>
                            <circle cx="140" cy="70" r="8" fill="none" stroke="#ef4444" stroke-width="3"/>
                            <path class="anim-bounce-heat" d="M 100 55 Q 110 40 120 55" fill="none" stroke="#f43f5e" stroke-width="3" stroke-linecap="round"/>
                            <path class="anim-bounce-heat" d="M 60 55 Q 70 40 80 55" fill="none" stroke="#f43f5e" stroke-width="3" stroke-linecap="round"/>
                            <path class="anim-bounce-heat" d="M 140 55 Q 150 40 160 55" fill="none" stroke="#f43f5e" stroke-width="3" stroke-linecap="round"/>
                            <text x="100" y="15" fill="#facc15" font-size="10" font-weight="bold" text-anchor="middle">R > 0,15 m²K/W</text>
                        </svg>
                    </div>
                </div>
            </div>

            <div class="rk-err-panel" id="err-5">
                <div class="rk-err-panel-grid">
                    <div class="rk-err-text-box">
                        <h3>Brak dylatacji i taśmy brzegowej</h3>
                        <p>Wylewka grzewcza to potężna, ciężka i "pracująca" płyta, która nieustannie rozszerza się i kurczy pod wpływem zmian temperatury zasilania. Błędem jest układanie jej na sztywno, bez szczelin rozprężnych.</p>
                        <p><strong>Skutek?</strong> Pominięcie <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/" class="rk-err-link">izolacji brzegowej i odpowiednich dylatacji</a> między dużymi obiegami to najkrótsza droga do destrukcji podłogi. Wylewka ulega niekontrolowanemu pęknięciu, zrywając kosztowne płytki ceramiczne, a w miejscu styku ze ścianą powstają ogromne mostki termiczne.</p>
                    </div>
                    <div class="rk-err-visual">
                        <svg class="rk-err-svg" viewBox="0 0 200 100">
                            <rect x="10" y="10" width="20" height="80" fill="#334155" rx="2"/>
                            <g class="anim-shake">
                                <rect x="35" y="40" width="150" height="50" fill="#94a3b8" rx="2"/>
                                <path d="M 170 65 L 180 65 M 175 60 L 180 65 L 175 70" fill="none" stroke="#ffffff" stroke-width="2"/>
                                <path d="M 50 65 L 40 65 M 45 60 L 40 65 L 45 70" fill="none" stroke="#ffffff" stroke-width="2"/>
                                <path class="anim-crack-draw" d="M 110 40 L 105 55 L 115 70 L 108 90" fill="none" stroke="#f43f5e" stroke-width="4" stroke-linejoin="round"/>
                            </g>
                        </svg>
                    </div>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tabs = document.querySelectorAll('#rk-err-app .rk-err-tab');
    const panels = document.querySelectorAll('#rk-err-app .rk-err-panel');

    tabs.forEach(tab => {
        tab.addEventListener('click', () => {
            // Reset
            tabs.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Aktywacja wybranego
            tab.classList.add('active');
            const targetId = tab.getAttribute('data-err');
            const targetPanel = document.getElementById(targetId);
            
            if (targetPanel) {
                targetPanel.classList.add('active');
                
                // Restart animacji SVG przez reflow
                const svgs = targetPanel.querySelectorAll('svg');
                svgs.forEach(svg => {
                    svg.style.animation = 'none';
                    svg.offsetHeight; /* trigger reflow */
                    svg.style.animation = null; 
                });
            }
        });
    });
});
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-card: #1e293b;
    --rk-faq-brand: #4f46e5;
    --rk-faq-brand-light: #e0e7ff;
    --rk-faq-accent: #06b6d4;
    --rk-faq-success: #10b981;
    --rk-faq-warning: #eab308;
    --rk-faq-bg: #f8fafc;
    --rk-faq-border: #e2e8f0;
    --rk-faq-text: #334155;
    --rk-faq-muted: #64748b;
}

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

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

.rk-faq-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(79, 70, 229, 0.3);
    color: #a5b4fc;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(165, 180, 252, 0.3);
}

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

.rk-faq-title span { color: #818cf8; }

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

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

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

.rk-faq-item.active {
    border-color: var(--rk-faq-brand);
    box-shadow: 0 10px 25px -5px rgba(79, 70, 229, 0.15);
}

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

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

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

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

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

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

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

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

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

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

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

.rk-link {
    color: var(--rk-faq-brand);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px dashed rgba(79, 70, 229, 0.4);
    transition: all 0.3s;
}

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

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

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

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

/* 1. Eco Leaf / Passive House */
.anim-eco-leaf { transform-origin: 50px 50px; transform: scale(0); transition: transform 0.6s 0.2s cubic-bezier(0.34, 1.56, 0.64, 1); }
.rk-faq-item.active .anim-eco-leaf { transform: scale(1); }

/* 2. Wykres / Oszczędności */
.anim-savings-line { stroke-dasharray: 150; stroke-dashoffset: 150; transition: stroke-dashoffset 1s 0.3s ease-out; }
.rk-faq-item.active .anim-savings-line { stroke-dashoffset: 0; }
.anim-coin-drop { opacity: 0; transform: translateY(-10px); transition: all 0.4s 1s ease-out; }
.rk-faq-item.active .anim-coin-drop { opacity: 1; transform: translateY(0); }

/* 3. Serwis / Trybik */
.anim-service-gear { transform-origin: 50px 35px; transition: transform 1.5s 0.2s ease-in-out; }
.rk-faq-item.active .anim-service-gear { transform: rotate(180deg); }

/* 4. Hybryda (Prąd + Woda) */
.anim-water-flow { stroke-dasharray: 10 10; animation: waterFlow 1.5s linear infinite; }
@keyframes waterFlow { to { stroke-dashoffset: -20; } }
.anim-elec-zap { opacity: 0; transition: opacity 0.3s; }
.rk-faq-item.active .anim-elec-zap { opacity: 1; animation: flashZap 1.5s infinite alternate; }
@keyframes flashZap { 0% { filter: drop-shadow(0 0 2px var(--rk-faq-warning)); } 100% { filter: drop-shadow(0 0 10px var(--rk-faq-warning)); } }

/* 5. 50 Lat PEX */
.anim-50-draw { stroke-dasharray: 200; stroke-dashoffset: 200; transition: stroke-dashoffset 1.5s 0.2s ease-out; }
.rk-faq-item.active .anim-50-draw { stroke-dashoffset: 0; }
.anim-fade-in { opacity: 0; transition: opacity 0.5s 1.2s; }
.rk-faq-item.active .anim-fade-in { opacity: 1; }

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

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/"
    },
    "headline": "FAQ – Eksperckie odpowiedzi o opłacalności systemów grzewczych",
    "description": "Najczęstsze pytania inwestorów o opłacalność folii grzewczych, koszty eksploatacji, serwis pomp ciepła oraz trwałość 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/"
    },
    "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-31",
    "dateModified": "2026-05-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy ogrzewanie elektryczne jest całkowicie nieopłacalne?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, ma sens w domach o ekstremalnie niskim zapotrzebowaniu na ciepło (domy pasywne) lub w pomieszczeniach używanych okazjonalnie (np. domki letniskowe), gdzie niska cena inwestycji przeważa nad kosztami eksploatacji."
        }
      },
      {
        "@type": "Question",
        "name": "Czy projekt jest potrzebny, jeśli dom jest mały (poniżej 100 m²)?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, w mniejszych budynkach błędy w projekcie mają większy wpływ na koszty eksploatacji; profesjonalny projekt zwraca się często już po 2-3 sezonach grzewczych."
        }
      },
      {
        "@type": "Question",
        "name": "Czy pompa ciepła jest tak samo bezobsługowa jak kable grzejne?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Prawie tak – systemy z pompą ciepła wymagają jedynie okresowego przeglądu technicznego raz w roku, natomiast elektryka jest bezobsługowa, ale obarczona znacznie wyższymi rachunkami."
        }
      },
      {
        "@type": "Question",
        "name": "Czy mogę zainstalować kable grzejne tylko w łazienkach, a resztę domu ogrzewać wodnie?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, to bardzo popularne rozwiązanie (tzw. ogrzewanie hybrydowe), gdzie kable zapewniają komfort cieplny pod stopami w łazienkach, a pompa ciepła zajmuje się głównym, tanim ogrzewaniem domu."
        }
      },
      {
        "@type": "Question",
        "name": "Jaka jest żywotność rur PEX w podłogówce?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nowoczesne rury PEX/PERT posiadają deklarowaną trwałość przekraczającą 50 lat, co czyni je najtrwalszym elementem infrastruktury budowlanej."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#dataset-faq",
    "name": "Baza Wiedzy: Koszty i eksploatacja systemów grzewczych",
    "description": "Zbiór kluczowych pytań inwestorskich dotyczących opłacalności systemów elektrycznych i wodnych pomp ciepła w perspektywie długoterminowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": { "@type": "Person", "name": "Robert Kucharski" }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#webapp-faq",
    "name": "Interaktywny Przewodnik Inwestycyjny",
    "description": "Aplikacja edukacyjna w formie akordeonu ze zintegrowanymi animacjami SVG ułatwiająca zrozumienie różnic eksploatacyjnych między technologiami grzewczymi.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "creator": { "@type": "Person", "name": "Robert Kucharski" }
  }
]
</script>

<div class="rk-faq-container" id="rk-faq-app">
    <div class="rk-faq-header">
        <div class="rk-faq-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Baza Wiedzy Inwestora
        </div>
        <h2 class="rk-faq-title">FAQ – <span>Najczęściej zadawane pytania</span></h2>
    </div>

    <div class="rk-faq-interactive">
        <div class="rk-faq-list">
            
            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>1. Czy ogrzewanie elektryczne jest całkowicie nieopłacalne?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Nie, ma sens w domach o <strong>ekstremalnie niskim zapotrzebowaniu na ciepło</strong> (<a href="https://projekt-ogrzewania.pl/projektowanie-ogrzewania-podlogowego-w-domach-pasywnych/" class="rk-link">domy pasywne</a>) lub w pomieszczeniach używanych okazjonalnie (np. domki letniskowe), gdzie niska cena inwestycji początkowej przeważa nad wyższymi kosztami eksploatacji.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <path d="M 20 40 L 50 15 L 80 40 L 80 65 L 20 65 Z" fill="none" stroke="#64748b" stroke-width="4" stroke-linejoin="round"/>
                                    <path class="anim-eco-leaf" d="M 50 65 C 50 40 35 30 35 30 C 45 25 65 30 65 45 C 65 55 50 65 50 65 Z" fill="var(--rk-faq-success)"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>2. Czy projekt jest potrzebny, jeśli dom jest mały (poniżej 100 m²)?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Tak, w mniejszych budynkach błędy w projekcie mają często większy odczuwalny wpływ na budżet domowy. <a href="https://projekt-ogrzewania.pl/ile-kosztuje-projekt-ogrzewania-podlogowego/" class="rk-link">Profesjonalny projekt OZC</a> chroni przed przewymiarowaniem pompy ciepła i zwraca się najczęściej już po <strong>2-3 sezonach grzewczych</strong> w postaci niższych rachunków.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="20" y="10" width="60" height="50" fill="none" stroke="#475569" stroke-width="4" rx="4"/>
                                    <path class="anim-savings-line" d="M 30 25 L 45 40 L 55 30 L 70 50" fill="none" stroke="var(--rk-faq-success)" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
                                    <circle class="anim-coin-drop" cx="70" cy="50" r="4" fill="var(--rk-faq-warning)"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>3. Czy pompa ciepła jest tak samo bezobsługowa jak kable grzejne?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Prawie tak. Systemy z <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-link">pompą ciepła</a> wymagają jedynie okresowego, corocznego przeglądu technicznego (sprawdzenie filtrów, ciśnienia, szczelności czynnika). Elektryka jest całkowicie bezobsługowa, ale ta wygoda jest <strong>obarczona znacznie wyższymi rachunkami</strong> co miesiąc.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="25" y="15" width="50" height="40" fill="none" stroke="#64748b" stroke-width="4" rx="4"/>
                                    <path d="M 25 25 L 75 25" stroke="#64748b" stroke-width="4"/>
                                    <circle class="anim-service-gear" cx="50" cy="45" r="10" fill="none" stroke="var(--rk-faq-accent)" stroke-width="4" stroke-dasharray="4 4"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>4. Czy mogę zainstalować kable w łazienkach, a resztę domu ogrzewać wodnie?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Tak, to bardzo popularne rozwiązanie, znane jako <strong>ogrzewanie hybrydowe</strong>. Kable elektryczne lub maty w łazienkach zapewniają szybki komfort cieplny pod stopami niezależnie od sezonu letniego, a <a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/" class="rk-link">wodna podłogówka</a> zajmuje się głównym, najtańszym ogrzewaniem całego domu.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <path d="M 20 20 L 45 20 L 45 50 L 20 50" fill="none" stroke="#3b82f6" stroke-width="4" class="anim-water-flow"/>
                                    <line x1="50" y1="10" x2="50" y2="60" stroke="#475569" stroke-width="2" stroke-dasharray="2 2"/>
                                    <path class="anim-elec-zap" d="M 65 15 L 85 15 L 70 35 L 90 35 L 60 60 L 75 40 L 55 40 Z" fill="var(--rk-faq-warning)"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>5. Jaka jest żywotność rur PEX w podłogówce?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Nowoczesne <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/" class="rk-link">rury PEX lub PERT</a> posiadają deklarowaną przez producentów i laboratoria trwałość przekraczającą <strong>50 lat</strong>. Przy zachowaniu odpowiednich temperatur i norm (np. brak przegrzewania instalacji powyżej normy), jest to jeden z najtrwalszych elementów całej infrastruktury budowlanej.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <path class="anim-50-draw" d="M 50 10 L 80 20 L 80 40 C 80 55 50 65 50 65 C 50 65 20 55 20 40 L 20 20 Z" fill="none" stroke="var(--rk-faq-success)" stroke-width="4" stroke-linejoin="round"/>
                                    <text class="anim-fade-in" x="50" y="45" font-family="system-ui, sans-serif" font-size="20" font-weight="bold" fill="#ffffff" text-anchor="middle">50+</text>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const faqItems = document.querySelectorAll('.rk-faq-item');

    faqItems.forEach(item => {
        const btn = item.querySelector('.rk-faq-question');
        btn.addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            
            faqItems.forEach(i => i.classList.remove('active'));
            
            if (!isActive) {
                item.classList.add('active');
            }
        });
    });
    
    if(faqItems.length > 0) {
        faqItems[0].classList.add('active');
    }
});
</script>



<style>
:root {
    --rk-tco-dark: #1e293b;
    --rk-tco-blue: #0ea5e9;
    --rk-tco-blue-hover: #0284c7;
    --rk-tco-green: #10b981;
    --rk-tco-red: #f43f5e;
    --rk-tco-bg: #ffffff;
    --rk-tco-gray: #f1f5f9;
    --rk-tco-text: #334155;
    --rk-tco-border: #cbd5e1;
}

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

/* Sekcja Nagłówkowa */
.rk-tco-header {
    padding: 40px 40px 20px;
    text-align: center;
    background: linear-gradient(to bottom, #f8fafc, #ffffff);
    border-bottom: 1px solid #e2e8f0;
}

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

.rk-tco-header p {
    font-size: 16px;
    color: var(--rk-tco-text);
    max-width: 700px;
    margin: 0 auto;
    line-height: 1.6;
}

/* Interaktywny Suwak / Przełącznik */
.rk-tco-interactive {
    padding: 40px;
    background: var(--rk-tco-bg);
}

.rk-tco-toggle-wrapper {
    display: flex;
    justify-content: center;
    margin-bottom: 40px;
}

.rk-tco-toggle {
    display: inline-flex;
    background: var(--rk-tco-gray);
    border-radius: 999px;
    padding: 6px;
    position: relative;
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.05);
}

.rk-tco-toggle-btn {
    padding: 12px 30px;
    font-size: 16px;
    font-weight: 700;
    color: #64748b;
    border: none;
    background: transparent;
    border-radius: 999px;
    cursor: pointer;
    transition: all 0.3s ease;
    z-index: 1;
}

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

.rk-tco-toggle-indicator {
    position: absolute;
    top: 6px;
    left: 6px;
    height: calc(100% - 12px);
    width: calc(50% - 6px);
    border-radius: 999px;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    background: var(--rk-tco-red);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);
}

.rk-tco-toggle[data-state="water"] .rk-tco-toggle-indicator {
    transform: translateX(100%);
    background: var(--rk-tco-green);
}

/* Panel Wyników (Wyśrodkowany) */
.rk-tco-results {
    display: flex;
    justify-content: center;
    width: 100%;
}

.rk-tco-data-box {
    width: 100%;
    max-width: 650px;
    padding: 35px 40px;
    border-radius: 16px;
    border: 2px solid #e2e8f0;
    transition: all 0.4s;
}

.state-electric .rk-tco-data-box { border-color: rgba(244, 63, 94, 0.3); background: #fff1f2; }
.state-water .rk-tco-data-box { border-color: rgba(16, 185, 129, 0.3); background: #f0fdf4; }

.rk-tco-data-box h3 {
    margin: 0 0 25px 0;
    font-size: 24px;
    font-weight: 800;
    color: var(--rk-tco-dark);
    text-align: center;
}

.rk-tco-metric {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 14px 0;
    border-bottom: 1px dashed rgba(0,0,0,0.1);
}

.rk-tco-metric:last-child { border-bottom: none; }

.rk-tco-metric span:first-child { font-weight: 600; font-size: 16px; color: var(--rk-tco-text); }
.rk-tco-metric span:last-child { font-weight: 800; font-size: 18px; color: var(--rk-tco-dark); }

.rk-tco-highlight {
    margin-top: 25px;
    padding: 18px;
    border-radius: 10px;
    background: rgba(0,0,0,0.04);
    font-weight: 800;
    font-size: 20px;
    text-align: center;
}

.state-electric .rk-tco-highlight { color: var(--rk-tco-red); }
.state-water .rk-tco-highlight { color: var(--rk-tco-green); }

/* Sekcja Wniosków i Linków */
.rk-tco-content-grid {
    padding: 0 40px 40px;
    display: grid;
    grid-template-columns: 1fr;
    gap: 20px;
}

.rk-tco-content-grid h4 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-tco-dark);
    margin: 0 0 10px 0;
}

.rk-tco-content-grid p {
    font-size: 15px;
    color: var(--rk-tco-text);
    line-height: 1.6;
    margin: 0;
}

.rk-tco-link {
    color: var(--rk-tco-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid transparent;
    transition: border-color 0.3s;
}

.rk-tco-link:hover { border-color: var(--rk-tco-blue); }

/* CTA */
.rk-tco-cta {
    background: var(--rk-tco-dark);
    padding: 40px;
    text-align: center;
}

.rk-tco-cta h3 {
    color: #ffffff;
    font-size: 24px;
    font-weight: 900;
    margin: 0 0 15px 0;
}

.rk-tco-cta p {
    color: #94a3b8;
    margin: 0 auto 30px;
    max-width: 600px;
    font-size: 16px;
    line-height: 1.6;
}

.rk-btn-blue {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: var(--rk-tco-blue);
    color: #ffffff;
    padding: 16px 36px;
    border-radius: 12px;
    font-size: 18px;
    font-weight: 800;
    text-decoration: none;
    box-shadow: 0 10px 20px -5px rgba(14, 165, 233, 0.4);
    transition: all 0.3s;
}

.rk-btn-blue:hover {
    background: var(--rk-tco-blue-hover);
    transform: translateY(-3px);
    box-shadow: 0 15px 25px -5px rgba(14, 165, 233, 0.5);
}

@media (max-width: 768px) {
    .rk-tco-header, .rk-tco-interactive, .rk-tco-content-grid, .rk-tco-cta { padding: 25px; }
    .rk-tco-toggle { width: 100%; display: flex; }
    .rk-tco-toggle-btn { flex: 1; text-align: center; padding: 12px 10px; font-size: 14px; }
    .rk-tco-data-box { padding: 25px 20px; }
    .rk-tco-metric { flex-direction: column; align-items: flex-start; gap: 5px; }
    .rk-tco-metric span:last-child { align-self: flex-start; }
    .rk-btn-blue { width: 100%; justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty"
    },
    "headline": "Podsumowanie: Wybierz mądrze, oszczędzaj przez dekady",
    "description": "Zestawienie całkowitych kosztów posiadania (TCO) instalacji grzewczej na 20 lat. Sprawdź opłacalność pompy ciepła względem kabli elektrycznych.",
    "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-31",
    "dateModified": "2026-05-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty#dataset-tco",
    "name": "Wskaźnik Całkowitych Kosztów Ogrzewania (TCO) 2026-2046",
    "description": "Zestawienie ekonomiczne analizujące opłacalność wodnego ogrzewania podłogowego w stosunku do mat i folii elektrycznych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator kosztów ogrzewania 2026",
      "opłacalność pompy ciepła",
      "koszt eksploatacji ogrzewania elektrycznego",
      "wodna podłogówka oszczędności",
      "TCO ogrzewania domu"
    ],
    "measurementTechnique": "Symulacja kosztów początkowych i eksploatacyjnych przy założeniu cyklu życia instalacji wynoszącego 20 lat w oparciu o normę PN-EN 12831.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Ogrzewanie Elektryczne: Niski koszt instalacji, skrajnie wysokie koszty utrzymania z powodu współczynnika COP 1.0.",
        "Wodna Podłogówka z Pompą Ciepła: Wyższy koszt startowy, minimalne koszty eksploatacji dzięki SCOP 3.5+ i akumulacyjności wylewki."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty#webapp-symulator",
    "name": "Kalkulator Opłacalności Ogrzewania TCO",
    "description": "Narzędzie interaktywne ilustrujące drenaż portfela przy ogrzewaniu elektrycznym oraz budowanie oszczędności przy inwestycji w wodną instalację podłogową.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and CSS3",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-tco-container" id="tco-app-container">
    <div class="rk-tco-header">
        <h2>Podsumowanie: Wybierz mądrze, oszczędzaj przez dekady</h2>
        <p>Decyzja o wyborze systemu grzewczego to matematyka, nie emocje. Poniższy symulator obnaża brutalną prawdę o kosztach eksploatacji. Sprawdź, co stanie się z Twoim budżetem po 20 latach.</p>
    </div>

    <div class="rk-tco-interactive state-electric" id="tco-interactive-box">
        <div class="rk-tco-toggle-wrapper">
            <div class="rk-tco-toggle" data-state="electric" id="tco-toggle-ui">
                <div class="rk-tco-toggle-indicator"></div>
                <button class="rk-tco-toggle-btn active" onclick="switchTCO('electric')">Folie / Kable (Elektryka)</button>
                <button class="rk-tco-toggle-btn" onclick="switchTCO('water')">Wodna Podłogówka + Pompa</button>
            </div>
        </div>

        <div class="rk-tco-results">
            <div class="rk-tco-data-box" id="tco-data-content">
                <h3>Ogrzewanie Bezpośrednie</h3>
                <div class="rk-tco-metric"><span>Startowy koszt instalacji</span> <span>~ 10 000 PLN</span></div>
                <div class="rk-tco-metric"><span>Sprawność systemu</span> <span>COP 1.0</span></div>
                <div class="rk-tco-metric"><span>Roczny rachunek za prąd</span> <span>~ 8 000 PLN</span></div>
                <div class="rk-tco-metric"><span>Możliwość zmiany źródła</span> <span>BRAK (zalane w betonie)</span></div>
                <div class="rk-tco-highlight">Suma po 20 latach: 170 000 PLN</div>
            </div>
        </div>
    </div>

    <div class="rk-tco-content-grid">
        <div class="rk-tco-text-block">
            <h4>Dlaczego woda zawsze wygrywa na dłuższą metę?</h4>
            <p>Oszczędność przy montażu instalacji elektrycznej jest jednorazowa. Rachunki za energię będziesz płacić co miesiąc. System wodny oparty o rury pozwala Ci wykorzystać fizykę wylewki (akumulacja) oraz <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/" class="rk-tco-link">technologię pompy ciepła</a>, aby wyprodukować nawet 5 kW energii cieplnej z zaledwie 1 kW pobranego prądu. Co więcej, inwestując w profesjonalny projekt, możesz obliczyć <a href="https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/" class="rk-tco-link">realny zwrot z inwestycji</a> jeszcze przed wbiciem łopaty w ziemię.</p>
        </div>
    </div>

    <div class="rk-tco-cta">
        <h3>Nie planuj instalacji "na oko"</h3>
        <p>Sukces wodnej podłogówki wymaga inżynierskiego podejścia. Zdobądź wiedzę z ponad 1000 zrealizowanych projektów, omijaj pułapki instalatorów i buduj bez ściemy.</p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-blue">
            WEJDŹ DO BAZY WIEDZY EKSKLUZYWNEJ
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg>
        </a>
    </div>
</div>

<script>
function switchTCO(state) {
    const box = document.getElementById('tco-interactive-box');
    const toggleUi = document.getElementById('tco-toggle-ui');
    const btns = toggleUi.querySelectorAll('.rk-tco-toggle-btn');
    const contentBox = document.getElementById('tco-data-content');

    // Aktualizacja klas interfejsu
    btns[0].classList.toggle('active', state === 'electric');
    btns[1].classList.toggle('active', state === 'water');
    toggleUi.setAttribute('data-state', state);
    box.className = 'rk-tco-interactive state-' + state;

    // Aktualizacja danych wewnątrz Data Boxa
    if (state === 'water') {
        contentBox.innerHTML = `
            <h3>Wodna Podłogówka + PC</h3>
            <div class="rk-tco-metric"><span>Startowy koszt instalacji</span> <span>~ 40 000 PLN</span></div>
            <div class="rk-tco-metric"><span>Sprawność systemu</span> <span>SCOP 3.5 do 5.0</span></div>
            <div class="rk-tco-metric"><span>Roczny rachunek za prąd</span> <span>~ 2 200 PLN</span></div>
            <div class="rk-tco-metric"><span>Możliwość zmiany źródła</span> <span>PEŁNA (infrastruktura na lata)</span></div>
            <div class="rk-tco-highlight">Suma po 20 latach: 84 000 PLN</div>
        `;
    } else {
        contentBox.innerHTML = `
            <h3>Ogrzewanie Bezpośrednie</h3>
            <div class="rk-tco-metric"><span>Startowy koszt instalacji</span> <span>~ 10 000 PLN</span></div>
            <div class="rk-tco-metric"><span>Sprawność systemu</span> <span>COP 1.0</span></div>
            <div class="rk-tco-metric"><span>Roczny rachunek za prąd</span> <span>~ 8 000 PLN</span></div>
            <div class="rk-tco-metric"><span>Możliwość zmiany źródła</span> <span>BRAK (zalane w betonie)</span></div>
            <div class="rk-tco-highlight">Suma po 20 latach: 170 000 PLN</div>
        `;
    }
}
</script>



<style>
:root {
    --dl-primary: #0f172a;
    --dl-accent: #0ea5e9;
    --dl-accent-dark: #0284c7;
    --dl-bg: #f8fafc;
    --dl-border: #e2e8f0;
    --dl-text: #334155;
    --dl-white: #ffffff;
}

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

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

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

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

.dl-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 10px 0;
    letter-spacing: -0.5px;
}

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

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

.dl-pdf-icon-svg {
    width: 80px;
    height: auto;
    filter: drop-shadow(0 10px 15px rgba(0,0,0,0.3));
    animation: floatIcon 3s infinite ease-in-out alternate;
}

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

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

.dl-preview-box {
    flex: 1;
    background: var(--dl-bg);
    border: 1px solid var(--dl-border);
    border-radius: 16px;
    padding: 10px;
    position: relative;
    cursor: zoom-in;
    transition: transform 0.3s;
}

.dl-preview-box:hover {
    transform: scale(1.02);
}

.dl-preview-img {
    width: 100%;
    height: auto;
    border-radius: 8px;
    display: block;
}

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

.dl-feature-list {
    list-style: none;
    padding: 0;
    margin: 0 0 30px 0;
}

.dl-feature-item {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 15px;
    font-size: 15px;
    font-weight: 600;
    color: var(--dl-text);
}

.dl-check-svg {
    width: 20px;
    height: 20px;
    color: var(--dl-accent);
    flex-shrink: 0;
}

/* PRZYCISK POBIERANIA */
.dl-main-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--dl-accent);
    color: var(--dl-white);
    text-decoration: none !important;
    padding: 18px 30px;
    border-radius: 14px;
    font-weight: 800;
    font-size: 16px;
    transition: all 0.3s;
    box-shadow: 0 10px 20px -5px rgba(14, 165, 233, 0.4);
}

.dl-main-btn:hover {
    background: var(--dl-accent-dark);
    transform: translateY(-3px);
    box-shadow: 0 15px 30px -5px rgba(14, 165, 233, 0.5);
}

.dl-main-btn span { font-size: 20px; }

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

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

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

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#infografika-article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/"
    },
    "headline": "Ogrzewanie Elektryczne vs Podłogówka Wodna (Infografika PDF)",
    "description": "Pobierz inżynierskie zestawienie kosztów inwestycyjnych i eksploatacyjnych. Kompletny poradnik TCO w formacie PDF i WEBP.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Ogrzewanie-elektryczne-vs-wodna-podlogowka-Kalkulator-kosztow-eksploatacji.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-31",
    "dateModified": "2026-05-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#dataset-tabela",
    "name": "Tabela inżynierska: Koszty TCO na 20 lat w Polsce",
    "description": "Zbiór danych określający optymalność finansową (CAPEX + OPEX) systemów grzewczych w zależności od zapotrzebowania energetycznego (od 4000 do 16000 kWh).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "tabela zwrotu z inwestycji pompa ciepła",
      "koszty folii grzewczych vs pompa",
      "symulacja TCO na 20 lat",
      "infografika ogrzewanie podłogowe PDF",
      "sprawność COP i SCOP wykres"
    ],
    "measurementTechnique": "Obliczenia całkowitych kosztów posiadania (TCO) dla strefy klimatycznej III, przy bazowej cenie prądu z 2026 r. i prognozowanej inflacji 3%.",
    "mainEntity": {
      "@type": "Thing",
      "name": "Parametry opłacalności systemów grzewczych"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-koszty/#download-app",
    "name": "Centrum Pobierania Wiedzy: Kalkulator Kosztów",
    "description": "Interaktywny moduł umożliwiający wizualizację i pobranie dokumentacji techniczno-finansowej dotyczącej doboru systemów grzewczych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5"
  }
]
</script>

<div class="download-hub-container" id="app-costs-dl">
    
    <div class="dl-header">
        <div class="dl-header-content">
            <div class="dl-badge">Darmowe Materiały</div>
            <h2>Pobierz Kompletne Zestawienie</h2>
            <p>Zabierz inżynierską wiedzę na budowę. Tabela TCO, schematy architektoniczne i diagnostyka 5 najdroższych błędów w jednym pliku PDF.</p>
        </div>
        <div class="dl-header-visual">
            <svg class="dl-pdf-icon-svg" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M14 2H6C4.89543 2 4 2.89543 4 4V20C4 21.1046 4.89543 22 6 22H18C19.1046 22 20 21.1046 20 20V8L14 2Z" fill="#ef4444" stroke="#ffffff" stroke-width="1"/>
                <path d="M14 2V8H20" stroke="#ffffff" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/>
                <text x="7" y="18" fill="white" font-size="5" font-weight="900" font-family="sans-serif">PDF</text>
            </svg>
        </div>
    </div>

    <div class="dl-workspace">
        
        <div class="dl-preview-box" onclick="window.open('https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Ogrzewanie-elektryczne-vs-wodna-podlogowka-Kalkulator-kosztow-eksploatacji.webp', '_blank')">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Ogrzewanie-elektryczne-vs-wodna-podlogowka-Kalkulator-kosztow-eksploatacji.webp" alt="Infografika - Kalkulator kosztów: Ogrzewanie elektryczne vs wodna podłogówka" class="dl-preview-img" loading="lazy">
            <div style="position:absolute; bottom:20px; right:20px; background:rgba(0,0,0,0.6); color:white; padding:8px 12px; border-radius:8px; font-size:12px; font-weight:700;">🔍 Kliknij, aby powiększyć</div>
        </div>

        <div class="dl-info-side">
            <ul class="dl-feature-list">
                <li class="dl-feature-item">
                    <svg class="dl-check-svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Zestawienie zysków: TCO na 20 lat
                </li>
                <li class="dl-feature-item">
                    <svg class="dl-check-svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Analiza wydajności COP vs SCOP
                </li>
                <li class="dl-feature-item">
                    <svg class="dl-check-svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Checklista: 5 błędów (M.in. opór cieplny paneli)
                </li>
                <li class="dl-feature-item">
                    <svg class="dl-check-svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Wysoka rozdzielczość na smartfony
                </li>
            </ul>

            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Ogrzewanie-elektryczne-vs-wodna-podlogowka-Kalkulator-kosztow-eksploatacji.pdf" class="dl-main-btn" target="_blank">
                <span>📥</span> POBIERZ ZESTAWIENIE (PDF)
            </a>
            
            <p style="margin-top: 20px; font-size: 13px; color: var(--dl-muted); line-height: 1.4;">
                Nie wiesz, jak dobrać parametry do swojego budynku? Zobacz <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/" style="color:var(--dl-accent-dark); font-weight:800;">jak samodzielnie obliczyć OZC</a> przed zakupem pompy ciepła.
            </p>
        </div>

    </div>

    <div class="dl-footer">
        © 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/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/">Ogrzewanie elektryczne vs wodna podłogówka: Kalkulator kosztów eksploatacji.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Grubość wylewki betonowej na ogrzewanie podłogowe.</title>
		<link>https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 14 Mar 2026 14:21:33 +0000</pubDate>
				<category><![CDATA[Błędy wykonawcze]]></category>
		<category><![CDATA[Budowa domu]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Materiały budowlane]]></category>
		<category><![CDATA[Narzędzia i kalkulatory]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Porady inwestycyjne]]></category>
		<category><![CDATA[Porady techniczne]]></category>
		<category><![CDATA[Posadzki i wylewki]]></category>
		<category><![CDATA[bezwładność cieplna]]></category>
		<category><![CDATA[budowa domu]]></category>
		<category><![CDATA[dylatacje]]></category>
		<category><![CDATA[grubość wylewki]]></category>
		<category><![CDATA[jastrych cementowy]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[opór cieplny]]></category>
		<category><![CDATA[plastyfikator do betonu]]></category>
		<category><![CDATA[podłogówka]]></category>
		<category><![CDATA[posadzki]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[wylewka anhydrytowa]]></category>
		<category><![CDATA[wylewka betonowa]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3831</guid>

					<description><![CDATA[<p>Decyzja o montażu „podłogówki” to zaledwie początek wyzwań, z jakimi musisz się zmierzyć podczas budowy lub remontu domu. Jednym z kluczowych parametrów, który bezpośrednio wpłynie na sprawność instalacji, wysokość rachunków za energię oraz trwałość samej posadzki, jest odpowiednia grubość wylewki betonowej na ogrzewanie podłogowe. Zbyt cienka warstwa to ogromne ryzyko pęknięć i nierównomiernego rozkładu temperatur (tzw. efekt „zebry”). Z kolei zbyt masywny jastrych drastycznie zwiększy bezwładność cieplną systemu, sprawiając, że dom będzie nagrzewał się wolno, a koszty eksploatacji niepotrzebnie wzrosną. W tym artykule rozkładamy na czynniki pierwsze fizykę przenikania ciepła, tłumaczymy obowiązujące normy i podpowiadamy, jak uniknąć kosztownych błędów wykonawczych.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/">Grubość wylewki betonowej na ogrzewanie podłogowe.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-panel: #1e293b;
    --rk-intro-blue: #0284c7;
    --rk-intro-blue-light: #f0f9ff;
    --rk-intro-accent: #f59e0b; /* Pomarańczowy dla mocnego akcentu */
    --rk-intro-gray: #475569;
    --rk-intro-gray-light: #f1f5f9;
    --rk-intro-bg: #ffffff;
    --rk-intro-border: #e2e8f0;
}

.rk-intro-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    background: var(--rk-intro-bg);
    border-radius: 16px;
    box-shadow: 0 10px 30px -10px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-intro-border);
    overflow: hidden;
}

/* Hero Header */
.rk-intro-header {
    background: var(--rk-intro-dark);
    padding: 35px 45px;
    color: #ffffff;
    border-bottom: 5px solid var(--rk-intro-blue);
    display: flex;
    align-items: center;
    gap: 20px;
}

.rk-intro-icon-main {
    width: 60px;
    height: 60px;
    background: rgba(2, 132, 199, 0.2);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #38bdf8;
    flex-shrink: 0;
}

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

/* Interactive Tabs */
.rk-intro-tabs {
    display: flex;
    background: var(--rk-intro-gray-light);
    border-bottom: 1px solid var(--rk-intro-border);
}

.rk-intro-tab-btn {
    flex: 1;
    padding: 20px 15px;
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-intro-gray);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

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

.rk-intro-tab-icon {
    display: flex;
    align-items: center;
}

/* Content Area */
.rk-intro-content {
    background: #ffffff;
    position: relative;
}

.rk-intro-panel {
    display: none;
    padding: 40px 45px;
}

.rk-intro-panel.is-visible {
    display: block;
}

/* Quick Answer Box */
.rk-qa-box {
    background: var(--rk-intro-blue-light);
    border-left: 6px solid var(--rk-intro-blue);
    padding: 25px 30px;
    border-radius: 0 12px 12px 0;
    margin-bottom: 25px;
}

.rk-qa-title {
    font-size: 14px;
    font-weight: 900;
    color: var(--rk-intro-blue);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-qa-text {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-intro-dark);
    line-height: 1.4;
    margin: 0;
}

/* Typography & Lists */
.rk-intro-text {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-intro-gray);
    margin: 0 0 15px 0;
}

.rk-intro-text strong {
    color: var(--rk-intro-dark);
}

.rk-roadmap-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
    margin-top: 25px;
}

.rk-roadmap-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 15px;
    background: var(--rk-intro-gray-light);
    border: 1px solid var(--rk-intro-border);
    border-radius: 12px;
}

.rk-roadmap-icon {
    color: var(--rk-intro-accent);
    margin-top: 2px;
}

.rk-roadmap-desc {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-intro-dark);
    margin: 0;
    line-height: 1.4;
}

@media (max-width: 768px) {
    .rk-intro-header {
        flex-direction: column;
        text-align: center;
        padding: 30px 20px;
    }
    .rk-intro-tabs {
        flex-direction: column;
    }
    .rk-intro-tab-btn {
        padding: 15px;
        border-bottom: none;
        border-left: 3px solid transparent;
        justify-content: flex-start;
    }
    .rk-intro-tab-btn.is-active {
        border-bottom-color: transparent;
        border-left-color: var(--rk-intro-blue);
    }
    .rk-intro-panel {
        padding: 30px 20px;
    }
    .rk-roadmap-grid {
        grid-template-columns: 1fr;
    }
    .rk-qa-text {
        font-size: 18px;
    }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/"
    },
    "headline": "Grubość wylewki betonowej na ogrzewanie podłogowe – Kompendium Wiedzy",
    "description": "Zrozum kluczowy parametr decydujący o wydajności podłogówki. Szybka odpowiedź o normatywnej grubości wylewki, oporach cieplnych i narzędziach interaktywnych.",
    "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": "2025-12-29",
    "dateModified": "2026-06-27"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#dataset-wstep",
    "name": "Normatywne wytyczne grubości wylewek betonowych na podłogówkę",
    "description": "Zestawienie optymalnych i bezpiecznych wartości grubości jastrychu nad rurami grzewczymi według PN-EN 1264.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "grubość wylewki betonowej na ogrzewanie podłogowe",
      "wylewka na podłogówkę 16mm",
      "otulina betonowa rury grzewczej",
      "minimalna grubość jastrychu ogrzewanie",
      "opór cieplny wylewki kalkulator"
    ],
    "measurementTechnique": "Weryfikacja parametrów termoizolacyjnych i wytrzymałości mechanicznej na podstawie norm PN-EN 1264 oraz PN-EN 13813.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Optymalna grubość całkowita: 6–8 cm",
        "Czysta otulina nad rurką 16 mm: od 3,0 do 4,5 cm",
        "Zgodność z normą PN-EN 1264 dla bezwładności cieplnej"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#webapp-wstep",
    "name": "Nawigator Opracowania Inżynierskiego",
    "description": "Interaktywny moduł wprowadzający umożliwiający błyskawiczne przejście do kluczowej wiedzy oraz informujący o zaawansowanych symulatorach dostępnych w artykule.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-wrapper">
    <div class="rk-intro-header">
        <div class="rk-intro-icon-main">
            <svg width="32" height="32" 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>
        <h2>Grubość wylewki betonowej na ogrzewanie podłogowe</h2>
    </div>

    <div class="rk-intro-content">
        
        <div class="rk-intro-tabs">
            <button class="rk-intro-tab-btn is-active" id="rkIntroBtn1" onclick="rkSwitchIntro(1)">
                <div class="rk-intro-tab-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>
                </div>
                Szybka Odpowiedź
            </button>
            <button class="rk-intro-tab-btn" id="rkIntroBtn2" onclick="rkSwitchIntro(2)">
                <div class="rk-intro-tab-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="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>
                Normy i Fizyka
            </button>
            <button class="rk-intro-tab-btn" id="rkIntroBtn3" onclick="rkSwitchIntro(3)">
                <div class="rk-intro-tab-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
                </div>
                Narzędzia w Artykule
            </button>
        </div>

        <div class="rk-intro-panel is-visible" id="rkIntroPanel1">
            <div class="rk-qa-box">
                <div class="rk-qa-title">
                    <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="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    Wartość optymalna
                </div>
                <p class="rk-qa-text">Optymalna, całkowita grubość wylewki cementowej w systemie mokrym wynosi <strong>6–8 cm</strong>. Przy rurze 16 mm gwarantuje to <strong>od 3,0 do 4,5 cm czystej otuliny</strong> betonowej nad instalacją.</p>
            </div>
            <p class="rk-intro-text">
                Grubość wylewki betonowej na ogrzewanie podłogowe to kluczowy parametr konstrukcyjny i termodynamiczny. Określa on odległość od styropianu do lica surowego jastrychu, decydując bezpośrednio o tym, jak szybko ciepło trafi do pomieszczenia i czy posadzka wytrzyma codzienne obciążenia bez pęknięć.
            </p>
        </div>

        <div class="rk-intro-panel" id="rkIntroPanel2">
            <p class="rk-intro-text">
                Wymiar rzędu 6-8 cm to nie wymysł wykonawców, lecz ścisły kompromis inżynierski. Taka grubość <strong>gwarantuje pełną zgodność z normą europejską PN-EN 1264</strong>, która reguluje dopuszczalny opór cieplny systemów płaszczyznowych.
            </p>
            <p class="rk-intro-text">
                Wybranie optymalnej masy betonu eliminuje ryzyko pękania warstwy wykończeniowej pod wpływem naprężeń termicznych, a jednocześnie minimalizuje <strong>bezwładność cieplną układu</strong>. Zbyt gruby jastrych obciąży pompę ciepła, a zbyt cienki – nie przekaże energii równomiernie (tzw. zebra termiczna).
            </p>
        </div>

        <div class="rk-intro-panel" id="rkIntroPanel3">
            <p class="rk-intro-text"><strong>W dalszej części tego kompendium udostępniam autorskie symulatory online.</strong> Dowiesz się z nich dokładnie, na czym polega fizyka wylewki betonowej. Czekają na Ciebie interaktywne moduły:</p>
            
            <div class="rk-roadmap-grid">
                <div class="rk-roadmap-item">
                    <div class="rk-roadmap-icon">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    </div>
                    <p class="rk-roadmap-desc">Kalkulator oporu cieplnego i wagi masy jastrychu.</p>
                </div>
                <div class="rk-roadmap-item">
                    <div class="rk-roadmap-icon">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                    </div>
                    <p class="rk-roadmap-desc">Symulator czasu nagrzewania w zależności od rur.</p>
                </div>
                <div class="rk-roadmap-item">
                    <div class="rk-roadmap-icon">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="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>
                    <p class="rk-roadmap-desc">Komparator właściwości anhydrytu i cementu.</p>
                </div>
                <div class="rk-roadmap-item">
                    <div class="rk-roadmap-icon">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 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>
                    <p class="rk-roadmap-desc">Kalkulator ryzyka pęknięć dla cienkich wylewek.</p>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
    function rkSwitchIntro(tabId) {
        // Zabezpieczony selektor, by uniknac konfliktu (bez &&)
        var btns = document.querySelectorAll('.rk-intro-tab-btn');
        for (var i = 0; i < btns.length; i++) {
            btns[i].classList.remove('is-active');
        }
        
        var panels = document.querySelectorAll('.rk-intro-panel');
        for (var j = 0; j < panels.length; j++) {
            panels[j].classList.remove('is-visible');
        }
        
        var actBtn = document.getElementById('rkIntroBtn' + tabId);
        var actPnl = document.getElementById('rkIntroPanel' + tabId);
        
        if (actBtn) {
            actBtn.classList.add('is-active');
        }
        if (actPnl) {
            actPnl.classList.add('is-visible');
        }
    }
</script>



<style>
:root {
    --rk-min-dark: #0f172a;
    --rk-min-panel: #1e293b;
    --rk-min-blue: #0284c7;
    --rk-min-green: #10b981;
    --rk-min-green-light: #dcfce7;
    --rk-min-red: #ef4444;
    --rk-min-red-light: #fef2f2;
    --rk-min-orange: #f97316;
    --rk-min-orange-light: #ffedd5;
    --rk-min-gray: #64748b;
    --rk-min-bg: #ffffff;
    --rk-min-border: #e2e8f0;
}

.rk-min-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    background: var(--rk-min-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-min-border);
    overflow: hidden;
}

/* Header */
.rk-min-header {
    background: linear-gradient(135deg, var(--rk-min-dark) 0%, var(--rk-min-panel) 100%);
    padding: 35px 45px;
    color: #ffffff;
    text-align: center;
    position: relative;
    overflow: hidden;
}

.rk-min-header::before {
    content: '';
    position: absolute;
    top: -50px;
    left: -50px;
    width: 200px;
    height: 200px;
    background: var(--rk-min-red);
    filter: blur(80px);
    opacity: 0.2;
}

.rk-min-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 10px 0;
    line-height: 1.3;
    position: relative;
}

.rk-min-header p {
    color: #94a3b8;
    font-size: 15px;
    max-width: 700px;
    margin: 0 auto;
    line-height: 1.6;
    position: relative;
}

/* App Interface */
.rk-min-app {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: #f8fafc;
    border-bottom: 1px solid var(--rk-min-border);
}

/* Controls */
.rk-min-controls {
    padding: 35px 45px;
    background: #ffffff;
    border-right: 1px solid var(--rk-min-border);
}

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

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

.rk-min-badge {
    background: var(--rk-min-blue);
    color: #ffffff;
    padding: 5px 12px;
    border-radius: 8px;
    font-size: 16px;
    font-weight: 800;
    transition: background-color 0.3s;
}

.rk-min-slider {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    background: var(--rk-min-border);
    border-radius: 4px;
    outline: none;
    margin: 15px 0 25px 0;
}

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

.rk-min-slider::-webkit-slider-thumb:hover {
    transform: scale(1.1);
}

.rk-min-stats {
    background: var(--rk-min-gray);
    color: #ffffff;
    padding: 15px;
    border-radius: 12px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 14px;
    font-weight: 600;
}

.rk-min-stats-val {
    font-size: 18px;
    font-weight: 900;
    color: #cbd5e1;
}

/* Results Display */
.rk-min-display {
    padding: 35px 45px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 20px;
}

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

.rk-min-icon {
    width: 46px;
    height: 46px;
    min-width: 46px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f1f5f9;
    transition: all 0.3s;
}

.rk-min-card-content {
    flex: 1;
}

.rk-min-card-title {
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-min-gray);
    margin-bottom: 4px;
}

.rk-min-card-status {
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-min-dark);
}

/* Educational Content */
.rk-min-content {
    padding: 35px 45px;
}

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

.rk-min-content p {
    font-size: 15px;
    color: #475569;
    line-height: 1.7;
    margin: 0 0 15px 0;
}

.rk-min-list {
    margin: 0 0 20px 0;
    padding-left: 20px;
    color: #475569;
    font-size: 15px;
    line-height: 1.6;
}

.rk-min-list li {
    margin-bottom: 8px;
    font-weight: 600;
}

.rk-min-alert {
    background: var(--rk-min-red-light);
    border-left: 4px solid var(--rk-min-red);
    padding: 15px 20px;
    border-radius: 0 12px 12px 0;
    margin-top: 20px;
}

.rk-min-alert strong {
    color: var(--rk-min-red);
}

@media (max-width: 768px) {
    .rk-min-app { grid-template-columns: 1fr; }
    .rk-min-controls { border-right: none; border-bottom: 1px solid var(--rk-min-border); }
    .rk-min-header, .rk-min-controls, .rk-min-display, .rk-min-content { padding: 25px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#article-min-grubosc",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/"
    },
    "headline": "Jaka jest minimalna grubość wylewki betonowej na ogrzewanie podłogowe?",
    "description": "Zrozum zagrożenia wynikające ze zbyt cienkiej wylewki. Symulator ryzyka uszkodzeń strukturalnych i zjawiska zebry termicznej według normy PN-EN 13813.",
    "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-27",
    "dateModified": "2026-06-27"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#dataset-min-grubosc",
    "name": "Parametry krytyczne minimalnej grubości wylewki",
    "description": "Zestawienie technologicznych minimów grubości jastrychu (otulina) oraz fizycznych i termicznych konsekwencji ich nieprzestrzegania.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "minimalna grubość wylewki podłogowej",
      "zebra termiczna ogrzewanie podłogowe",
      "pękająca wylewka betonowa",
      "klawiszowanie płyt jastrychu",
      "otulina rury grzewczej 3 cm"
    ],
    "measurementTechnique": "Weryfikacja grubości na podstawie normy PN-EN 13813 (klasa wytrzymałości F4) oraz dystrybucji ciepła w płaszczyźnie poziomej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Minimalna całkowita grubość: 6,0 cm",
        "Minimalna otulina nad rurą 16 mm: 3,0 cm",
        "Ryzyka: pęknięcia powierzchniowe, zebra termiczna, klawiszowanie"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#webapp-min-grubosc",
    "name": "Symulator Ryzyka Cienkiej Wylewki",
    "description": "Narzędzie interaktywne ilustrujące utratę nośności i stabilności termicznej podłogi wraz ze zmniejszaniem się warstwy otuliny betonowej.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-min-wrapper">
    <div class="rk-min-header">
        <h2>Dlaczego 6 cm to technologiczne minimum?</h2>
        <p>Zbyt cienki beton to katastrofa budowlana z opóźnionym zapłonem. Przesuń suwak i sprawdź, jak z każdym uciętym milimetrem beton traci wytrzymałość strukturalną i zdolność do równomiernego grzania.</p>
    </div>

    <div class="rk-min-app">
        <div class="rk-min-controls">
            <div class="rk-min-label-row">
                <div class="rk-min-label">Całkowita grubość jastrychu</div>
                <div class="rk-min-badge" id="rkMinValTotal">7.0 cm</div>
            </div>
            
            <input type="range" class="rk-min-slider" id="rkMinInpTotal" min="4.0" max="8.0" step="0.5" value="7.0" oninput="rkRunMinCalc()">
            
            <div style="display: flex; justify-content: space-between; font-size: 12px; font-weight: 700; color: var(--rk-min-gray); margin-bottom: 20px;">
                <span>4.0 cm (Błąd)</span>
                <span>8.0 cm (Zapas)</span>
            </div>

            <div class="rk-min-stats">
                <span>Rzeczywista otulina nad rurą:</span>
                <span class="rk-min-stats-val" id="rkMinValCover">4.0 cm</span>
            </div>
        </div>

        <div class="rk-min-display">
            
            <div class="rk-min-card" id="rkCardStruct">
                <div class="rk-min-icon" id="rkIconStruct">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line></svg>
                </div>
                <div class="rk-min-card-content">
                    <div class="rk-min-card-title">Wytrzymałość Konstrukcyjna</div>
                    <div class="rk-min-card-status" id="rkStatStruct">Posadzka stabilna</div>
                </div>
            </div>

            <div class="rk-min-card" id="rkCardTherm">
                <div class="rk-min-icon" id="rkIconTherm">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                </div>
                <div class="rk-min-card-content">
                    <div class="rk-min-card-title">Rozkład Temperatur</div>
                    <div class="rk-min-card-status" id="rkStatTherm">Równomierne grzanie</div>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-min-content">
        <h3>Jaka jest minimalna grubość wylewki?</h3>
        <p>Minimalna całkowita grubość wylewki betonowej na ogrzewanie podłogowe wynosi <strong>6,0 cm</strong>, co przy zastosowaniu rury o średnicy 16 mm daje dokładnie <strong>3,0 cm czystej otuliny betonowej</strong> nad górną krawędzią rury grzewczej. Wymóg ten jest zgodny z normą PN-EN 13813 dla jastrychów cementowych o minimalnej klasie CT-C20-F4.</p>
        
        <p>Poniżej tej granicy wytrzymałość konstrukcyjna podłogi pływającej zostaje drastycznie naruszona. Beton o grubości mniejszej niż 30 mm nad rurą nie posiada odpowiedniej strefy do rozkładu naprężeń punktowych. Wytrzymałość na zginanie na poziomie 4 MPa (klasa F4) jest niewystarczająca, gdy siła uderzeniowa działa na tak cienki rdzeń. Przekroczenie stanów granicznych nośności skutkuje natychmiastowo:</p>
        
        <ul class="rk-min-list">
            <li>Głębokimi spękaniami powierzchniowymi wzdłuż tras rur,</li>
            <li>Odspajaniem się i pękaniem płytek ceramicznych,</li>
            <li>Powstaniem niebezpiecznego efektu klawiszowania płyt na stykach dylatacyjnych.</li>
        </ul>

        <div class="rk-min-alert">
            <strong>Zjawisko „zebry termicznej”</strong><br>
            Zbyt cienka wylewka generuje dodatkowy, bolesny w skutkach problem. Ciepło nie zdąży rozejść się bocznie w cienkiej masie betonu, zanim dotrze do powierzchni. W efekcie inwestor odczuwa na stopach naprzemienne pasy gorąca i zimna, co całkowicie rujnuje komfort i uniemożliwia prawidłową pracę samoregulacji.
        </div>
    </div>
</div>

<script>
    function rkRunMinCalc() {
        var inpTotal = document.getElementById('rkMinInpTotal');
        if(!inpTotal) return;

        var totalCm = parseFloat(inpTotal.value);
        var badgeTotal = document.getElementById('rkMinValTotal');
        
        // Zależność między grubością całkowitą a otuliną
        // (total - 3.0 bazowo)
        var coverCm = totalCm - 3.0;

        badgeTotal.innerText = totalCm.toFixed(1) + " cm";
        document.getElementById('rkMinValCover').innerText = coverCm.toFixed(1) + " cm";

        // Referencje do kart i ikon
        var cStruct = document.getElementById('rkCardStruct');
        var cTherm = document.getElementById('rkCardTherm');
        var iStruct = document.getElementById('rkIconStruct');
        var iTherm = document.getElementById('rkIconTherm');
        var sStruct = document.getElementById('rkStatStruct');
        var sTherm = document.getElementById('rkStatTherm');

        // Logika bez uzycia operatora "&&"
        if (totalCm >= 6.0) {
            // Stan bezpieczny (Normatywny)
            badgeTotal.style.backgroundColor = "var(--rk-min-blue)";
            
            cStruct.style.borderColor = "var(--rk-min-green)";
            cStruct.style.backgroundColor = "#ffffff";
            iStruct.style.backgroundColor = "var(--rk-min-green-light)";
            iStruct.style.color = "var(--rk-min-green)";
            sStruct.innerText = "Posadzka stabilna";
            sStruct.style.color = "var(--rk-min-green)";

            cTherm.style.borderColor = "var(--rk-min-blue)";
            cTherm.style.backgroundColor = "#ffffff";
            iTherm.style.backgroundColor = "var(--rk-min-blue-light)";
            iTherm.style.color = "var(--rk-min-blue)";
            sTherm.innerText = "Równomierne grzanie";
            sTherm.style.color = "var(--rk-min-blue)";
            
        } else {
            if (totalCm > 5.0) {
                // Stan ostrzegawczy
                badgeTotal.style.backgroundColor = "var(--rk-min-orange)";
                
                cStruct.style.borderColor = "var(--rk-min-orange)";
                cStruct.style.backgroundColor = "var(--rk-min-orange-light)";
                iStruct.style.backgroundColor = "#ffffff";
                iStruct.style.color = "var(--rk-min-orange)";
                sStruct.innerText = "Ryzyko mikropęknięć";
                sStruct.style.color = "var(--rk-min-orange)";

                cTherm.style.borderColor = "var(--rk-min-orange)";
                cTherm.style.backgroundColor = "var(--rk-min-orange-light)";
                iTherm.style.backgroundColor = "#ffffff";
                iTherm.style.color = "var(--rk-min-orange)";
                sTherm.innerText = "Zauważalna zebra termiczna";
                sTherm.style.color = "var(--rk-min-orange)";

            } else {
                // Stan krytyczny (Poniżej 5.0 cm całkowitej)
                badgeTotal.style.backgroundColor = "var(--rk-min-red)";
                
                cStruct.style.borderColor = "var(--rk-min-red)";
                cStruct.style.backgroundColor = "var(--rk-min-red-light)";
                iStruct.style.backgroundColor = "#ffffff";
                iStruct.style.color = "var(--rk-min-red)";
                sStruct.innerText = "KRYTYCZNE PĘKNIĘCIA";
                sStruct.style.color = "var(--rk-min-red)";

                cTherm.style.borderColor = "var(--rk-min-red)";
                cTherm.style.backgroundColor = "var(--rk-min-red-light)";
                iTherm.style.backgroundColor = "#ffffff";
                iTherm.style.color = "var(--rk-min-red)";
                sTherm.innerText = "EKSTREMALNA ZEBRA!";
                sTherm.style.color = "var(--rk-min-red)";
            }
        }
    }

    function rkInitMinApp() {
        rkRunMinCalc();
    }

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', rkInitMinApp);
    } else {
        rkInitMinApp();
    }
</script>



<style>
:root {
    --rk-max-dark: #0f172a;
    --rk-max-panel: #1e293b;
    --rk-max-blue: #0284c7;
    --rk-max-blue-light: #e0f2fe;
    --rk-max-red: #dc2626;
    --rk-max-red-light: #fef2f2;
    --rk-max-orange: #ea580c;
    --rk-max-orange-light: #ffedd5;
    --rk-max-green: #16a34a;
    --rk-max-gray: #64748b;
    --rk-max-bg: #ffffff;
    --rk-max-border: #e2e8f0;
}

.rk-max-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    background: var(--rk-max-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(220, 38, 38, 0.1);
    border: 1px solid var(--rk-max-border);
    overflow: hidden;
}

/* Header */
.rk-max-header {
    background: linear-gradient(135deg, var(--rk-max-dark) 0%, var(--rk-max-panel) 100%);
    padding: 40px 50px;
    color: #ffffff;
    text-align: center;
    position: relative;
}

.rk-max-header::before {
    content: '';
    position: absolute;
    top: -50px;
    left: -50px;
    width: 200px;
    height: 200px;
    background: var(--rk-max-red);
    filter: blur(90px);
    opacity: 0.15;
}

.rk-max-header h2 {
    font-size: 30px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
    position: relative;
}

.rk-max-header p {
    color: #cbd5e1;
    font-size: 16px;
    max-width: 750px;
    margin: 0 auto;
    line-height: 1.6;
    position: relative;
}

/* App Layout */
.rk-max-app {
    display: grid;
    grid-template-columns: 1fr;
    background: var(--rk-max-bg);
    border-bottom: 1px solid var(--rk-max-border);
}

/* Controls - Slider Area */
.rk-max-controls {
    padding: 35px 50px;
    background: #f8fafc;
    border-bottom: 1px solid var(--rk-max-border);
}

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

.rk-max-label-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-max-dark);
}

.rk-max-val-badge {
    background: var(--rk-max-blue);
    color: #ffffff;
    padding: 6px 16px;
    border-radius: 10px;
    font-size: 18px;
    font-weight: 900;
    letter-spacing: 0.5px;
    box-shadow: 0 4px 10px rgba(2, 132, 199, 0.3);
    transition: background-color 0.3s;
}

/* Custom Range Slider */
.rk-max-slider {
    width: 100%;
    -webkit-appearance: none;
    height: 10px;
    background: var(--rk-max-border);
    border-radius: 5px;
    outline: none;
    margin: 10px 0 20px 0;
}

.rk-max-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-max-blue);
    cursor: pointer;
    box-shadow: 0 4px 12px rgba(2, 132, 199, 0.4);
    transition: transform 0.1s, background-color 0.3s;
    border: 3px solid #ffffff;
}

.rk-max-slider::-webkit-slider-thumb:hover {
    transform: scale(1.1);
}

/* Results Grid */
.rk-max-results {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1px;
    background: var(--rk-max-border);
}

.rk-max-card {
    background: #ffffff;
    padding: 30px 20px;
    text-align: center;
    transition: background-color 0.3s;
}

.rk-max-icon {
    width: 40px;
    height: 40px;
    margin: 0 auto 15px auto;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--rk-max-blue-light);
    color: var(--rk-max-blue);
    transition: all 0.3s;
}

.rk-max-card-title {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-max-gray);
    margin-bottom: 10px;
}

.rk-max-card-val {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-max-dark);
    line-height: 1.1;
    margin-bottom: 5px;
    transition: color 0.3s;
}

.rk-max-card-unit {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-max-gray);
}

/* Explanation Content */
.rk-max-content {
    padding: 40px 50px;
}

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

.rk-max-content p {
    font-size: 16px;
    color: #475569;
    line-height: 1.7;
    margin: 0 0 15px 0;
}

.rk-max-warning-box {
    background: var(--rk-max-red-light);
    border-left: 4px solid var(--rk-max-red);
    padding: 20px;
    border-radius: 0 12px 12px 0;
    margin: 25px 0;
}

.rk-max-warning-box h4 {
    color: var(--rk-max-red);
    font-size: 16px;
    font-weight: 800;
    margin: 0 0 10px 0;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-max-warning-box ul {
    margin: 0;
    padding-left: 20px;
    color: #7f1d1d;
    font-size: 15px;
    line-height: 1.6;
}

.rk-max-warning-box li {
    margin-bottom: 8px;
}
.rk-max-warning-box li:last-child {
    margin-bottom: 0;
}

@media (max-width: 768px) {
    .rk-max-header, .rk-max-controls, .rk-max-content { padding: 30px 20px; }
    .rk-max-results { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 480px) {
    .rk-max-results { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#article-maxgrubosc",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/"
    },
    "headline": "Jaka jest maksymalna grubość jastrychu cementowego przy podłogówce?",
    "description": "Analiza skutków wylania zbyt grubej warstwy betonu. Dowiedz się, dlaczego 10 cm wylewki drastycznie obniża COP pompy ciepła i wydłuża czas nagrzewania.",
    "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-27",
    "dateModified": "2026-06-27"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#dataset-maxgrubosc",
    "name": "Wpływ przewymiarowania grubości jastrychu na parametry instalacji",
    "description": "Zbiór danych wykazujący korelację między nadmierną grubością wylewki a spadkiem wydajności pompy ciepła (COP) oraz wzrostem oporu cieplnego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna grubość wylewki",
      "spadek COP pompy ciepła",
      "zbyt gruba wylewka na podłogówkę",
      "opór cieplny grubego betonu",
      "czas nagrzewania grubej wylewki"
    ],
    "measurementTechnique": "Analiza oporów termicznych R oraz spadku sprawności pompy ciepła (COP) w funkcji wymuszonego wzrostu temperatury zasilania.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Opór cieplny dla 10 cm betonu: R = 0,083 m²K/W",
        "Wydłużenie czasu nagrzewania: do 6-9 godzin",
        "Wzrost wymaganej temperatury zasilania: o 3–5°C",
        "Spadek efektywności (COP): 2,5% na każdy 1°C podbicia zasilania"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#webapp-maxgrubosc",
    "name": "Symulator Przewymiarowania Wylewki",
    "description": "Interaktywne narzędzie inżynierskie ukazujące na żywo degradację parametrów instalacji (opór, COP, masa) przy nienormatywnym pogrubianiu jastrychu.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-max-wrapper">
    <div class="rk-max-header">
        <h2>Skutki przewymiarowania grubości wylewki</h2>
        <p>Więcej betonu nie oznacza lepiej. Maksymalna technicznie uzasadniona całkowita grubość wylewki cementowej to 8,0 cm. Przesuń suwak i zobacz, jak wylanie "zapasowej" warstwy zabija wydajność Twojej instalacji oraz portfela.</p>
    </div>

    <div class="rk-max-app">
        <div class="rk-max-controls">
            <div class="rk-max-label-row">
                <div class="rk-max-label-title">Projektowana grubość betonu:</div>
                <div class="rk-max-val-badge" id="rkMaxLblThick">7.0 cm</div>
            </div>
            <input type="range" class="rk-max-slider" id="rkMaxInpThick" min="6.5" max="12.0" step="0.5" value="7.0" oninput="rkRunMaxCalc()">
            <div style="display: flex; justify-content: space-between; font-size: 12px; font-weight: 700; color: var(--rk-max-gray); padding: 0 5px;">
                <span>6.5 cm (Norma)</span>
                <span>12.0 cm (Krytyczny Błąd)</span>
            </div>
        </div>

        <div class="rk-max-results">
            
            <div class="rk-max-card" id="rkCardR">
                <div class="rk-max-icon" id="rkIconR">
                    <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="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg>
                </div>
                <div class="rk-max-card-title">Opór (R) samej płyty</div>
                <div class="rk-max-card-val" id="rkValR">0.058</div>
                <div class="rk-max-card-unit">m²K/W</div>
            </div>

            <div class="rk-max-card" id="rkCardTime">
                <div class="rk-max-icon" id="rkIconTime">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                </div>
                <div class="rk-max-card-title">Czas nagrzewania</div>
                <div class="rk-max-card-val" id="rkValTime">4.0</div>
                <div class="rk-max-card-unit">godzin</div>
            </div>

            <div class="rk-max-card" id="rkCardTemp">
                <div class="rk-max-icon" id="rkIconTemp">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path></svg>
                </div>
                <div class="rk-max-card-title">Korekta zasilania</div>
                <div class="rk-max-card-val" id="rkValTemp">+0.0</div>
                <div class="rk-max-card-unit">°C</div>
            </div>

            <div class="rk-max-card" id="rkCardCOP">
                <div class="rk-max-icon" id="rkIconCOP">
                    <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="23 6 13.5 15.5 8.5 10.5 1 18"></polyline><polyline points="17 6 23 6 23 12"></polyline></svg>
                </div>
                <div class="rk-max-card-title">Spadek COP Pompy</div>
                <div class="rk-max-card-val" id="rkValCOP">0.0</div>
                <div class="rk-max-card-unit">% (strata)</div>
            </div>

        </div>
    </div>

    <div class="rk-max-content">
        <h3>Jaka jest maksymalna grubość jastrychu?</h3>
        <p>Maksymalna uzasadniona technicznie całkowita grubość wylewki betonowej na ogrzewanie podłogowe wynosi <strong>8,0 cm</strong> (co daje 4,5–5,0 cm otuliny nad rurą), przekraczając wytyczne normy PN-EN 1264-2, która definiuje optymalne parametry oporu cieplnego warstwy akumulacyjnej. Każdy dodatkowy centymetr betonu powyżej tej granicy podnosi masę metra kwadratowego posadzki o 22–24 kg, generując niepotrzebne obciążenie stropu.</p>
        
        <p>Wykonanie wylewki o grubości 10 cm lub 12 cm zamiast projektowych 7 cm to potężny błąd technologiczny, który uderza bezpośrednio w koszty eksploatacji pompy ciepła. Zwiększenie grubości jastrychu z 6,5 cm do 10 cm podnosi opór cieplny samej wylewki z poziomu ok. 0,054 m²K/W do aż 0,083 m²K/W (przy założeniu przewodności betonu na poziomie 1,2 W/(m·K)).</p>

        <div class="rk-max-warning-box">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                Konsekwencje technologiczne zbyt grubej warstwy:
            </h4>
            <ul>
                <li><strong>Drastyczne wydłużenie czasu nagrzewania:</strong> Układ potrzebuje od 6 do 9 godzin, aby zareagować na zmianę nastawy, co czyni automatykę pogodową całkowicie bezużyteczną.</li>
                <li><strong>Wymóg podniesienia temperatury zasilania:</strong> Aby przebić się przez grubą warstwę i utrzymać normatywne 26°C na podłodze, należy podnieść temperaturę wody grzewczej o 3–5°C.</li>
                <li><strong>Spadek COP pompy ciepła:</strong> Każdy wzrost temperatury zasilania o 1°C obniża współczynnik efektywności COP o około 2,5%, co bezpośrednio podnosi rachunki za prąd.</li>
            </ul>
        </div>
    </div>
</div>

<script>
    function rkRunMaxCalc() {
        var thickInp = document.getElementById('rkMaxInpThick');
        if(!thickInp) return;

        var thick = parseFloat(thickInp.value);
        var badge = document.getElementById('rkMaxLblThick');
        badge.innerText = thick.toFixed(1) + " cm";

        // Fizyka (baza)
        var lambda = 1.2; 
        var resistance = (thick / 100) / lambda;
        
        // Czas nagrzewania (estymacja: 7cm = ~4h, wykladniczo rosnie)
        var baseTime = 4.0;
        var timeVal = baseTime;
        if (thick > 7.0) {
            timeVal = baseTime + Math.pow((thick - 7.0), 1.3) * 1.5;
        } else {
            timeVal = baseTime - ((7.0 - thick) * 0.5);
        }

        // Konsekwencje dla pompy (Start kary od 7.5cm)
        var tempIncrease = 0.0;
        var copDrop = 0.0;
        
        if (thick > 7.5) {
            // ok 1 stopien wiecej na kazdy 1 cm powyzej 7.5
            tempIncrease = (thick - 7.5) * 1.1; 
            copDrop = tempIncrease * 2.5; 
        }

        // Aktualizacja DOM
        document.getElementById('rkValR').innerText = resistance.toFixed(3);
        document.getElementById('rkValTime').innerText = timeVal.toFixed(1);
        document.getElementById('rkValTemp').innerText = "+" + tempIncrease.toFixed(1);
        document.getElementById('rkValCOP').innerText = "-" + copDrop.toFixed(1);

        // Zmiana stylów w oparciu o stany krytyczne (brak operatora &&)
        var stColor = "var(--rk-max-blue)";
        var stBg = "var(--rk-max-blue-light)";
        
        if (thick <= 8.0) {
            stColor = "var(--rk-max-green)";
            stBg = "#dcfce7";
            badge.style.backgroundColor = "var(--rk-max-green)";
        } else {
            if (thick <= 9.5) {
                stColor = "var(--rk-max-orange)";
                stBg = "var(--rk-max-orange-light)";
                badge.style.backgroundColor = "var(--rk-max-orange)";
            } else {
                stColor = "var(--rk-max-red)";
                stBg = "var(--rk-max-red-light)";
                badge.style.backgroundColor = "var(--rk-max-red)";
            }
        }

        // Aplikowanie stylów do ikon i wartości
        var cards = ['rkCardR', 'rkCardTime', 'rkCardTemp', 'rkCardCOP'];
        var icons = ['rkIconR', 'rkIconTime', 'rkIconTemp', 'rkIconCOP'];
        var vals = ['rkValR', 'rkValTime', 'rkValTemp', 'rkValCOP'];

        for(var i=0; i < cards.length; i++) {
            document.getElementById(icons[i]).style.backgroundColor = stBg;
            document.getElementById(icons[i]).style.color = stColor;
            
            // Kolorujemy tylko krytyczne wartości na czerwono by zwrocic uwage
            if (thick > 8.0) {
                document.getElementById(vals[i]).style.color = stColor;
            } else {
                document.getElementById(vals[i]).style.color = "var(--rk-max-dark)";
            }
        }
    }

    function rkInitMaxApp() {
        rkRunMaxCalc();
    }

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', rkInitMaxApp);
    } else {
        rkInitMaxApp();
    }
</script>



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

.rk-fin-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    background: var(--rk-fin-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-fin-border);
    overflow: hidden;
}

/* Header */
.rk-fin-header {
    background: linear-gradient(135deg, var(--rk-fin-dark) 0%, var(--rk-fin-panel) 100%);
    padding: 35px 45px;
    color: #ffffff;
    text-align: center;
}

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

.rk-fin-header p {
    color: #94a3b8;
    font-size: 15px;
    max-width: 700px;
    margin: 0 auto;
    line-height: 1.6;
}

/* Interactive App */
.rk-fin-app {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: #f8fafc;
    border-bottom: 1px solid var(--rk-fin-border);
}

/* Controls */
.rk-fin-controls {
    padding: 35px 45px;
    background: #ffffff;
    border-right: 1px solid var(--rk-fin-border);
}

.rk-fin-group {
    margin-bottom: 25px;
}
.rk-fin-group:last-child {
    margin-bottom: 0;
}

.rk-fin-label {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-fin-dark);
    margin-bottom: 12px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-fin-badge {
    background: var(--rk-fin-blue-light);
    color: var(--rk-fin-blue);
    padding: 4px 10px;
    border-radius: 6px;
    font-size: 14px;
    font-weight: 800;
}

/* Buttons */
.rk-fin-btn-grid {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 10px;
}

.rk-fin-btn {
    padding: 12px 5px;
    background: #ffffff;
    border: 2px solid var(--rk-fin-border);
    border-radius: 10px;
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-fin-gray);
    cursor: pointer;
    transition: all 0.2s;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
}

.rk-fin-btn span {
    font-size: 11px;
    opacity: 0.7;
    font-weight: 600;
}

.rk-fin-btn:hover {
    border-color: var(--rk-fin-blue);
    color: var(--rk-fin-blue);
}

.rk-fin-btn.is-active {
    background: var(--rk-fin-blue);
    border-color: var(--rk-fin-blue);
    color: #ffffff;
    box-shadow: 0 4px 12px rgba(2, 132, 199, 0.3);
}

/* Slider */
.rk-fin-slider {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    background: var(--rk-fin-border);
    border-radius: 4px;
    outline: none;
    margin-top: 10px;
}

.rk-fin-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-fin-blue);
    cursor: pointer;
    box-shadow: 0 4px 8px rgba(2, 132, 199, 0.4);
    transition: transform 0.1s;
}

.rk-fin-slider::-webkit-slider-thumb:hover {
    transform: scale(1.1);
}

/* Display */
.rk-fin-display {
    padding: 35px 45px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-fin-gauge-box {
    background: #ffffff;
    border: 2px solid var(--rk-fin-border);
    border-radius: 16px;
    padding: 30px 20px;
    text-align: center;
    position: relative;
    transition: border-color 0.3s;
}

.rk-fin-gauge-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-fin-gray);
    text-transform: uppercase;
    margin-bottom: 10px;
}

.rk-fin-total-val {
    font-size: 48px;
    font-weight: 900;
    color: var(--rk-fin-dark);
    line-height: 1;
    margin-bottom: 5px;
    font-variant-numeric: tabular-nums;
}

.rk-fin-unit {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-fin-gray);
    margin-bottom: 25px;
}

/* Progress Bar */
.rk-fin-bar-container {
    width: 100%;
    height: 16px;
    background: #e2e8f0;
    border-radius: 8px;
    position: relative;
    overflow: hidden;
    margin-bottom: 15px;
}

.rk-fin-bar-fill {
    height: 100%;
    width: 0%;
    background: var(--rk-fin-green);
    border-radius: 8px;
    transition: width 0.4s ease, background-color 0.4s ease;
}

.rk-fin-bar-limit {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 75%; /* 0.15 limit out of 0.20 max */
    width: 2px;
    background: var(--rk-fin-red);
    z-index: 2;
}

.rk-fin-limit-label {
    font-size: 11px;
    font-weight: 800;
    color: var(--rk-fin-red);
    text-align: right;
    padding-right: 25%; /* align with 75% limit */
}

.rk-fin-status {
    margin-top: 15px;
    font-size: 14px;
    font-weight: 800;
    padding: 8px 15px;
    border-radius: 8px;
    display: inline-block;
}

/* Content */
.rk-fin-content {
    padding: 35px 45px;
}

.rk-fin-content h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-fin-dark);
    margin: 0 0 12px 0;
}

.rk-fin-content p {
    font-size: 15px;
    color: #475569;
    line-height: 1.7;
    margin: 0 0 15px 0;
}

.rk-math-box {
    background: var(--rk-fin-blue-light);
    border-left: 4px solid var(--rk-fin-blue);
    padding: 15px 20px;
    border-radius: 0 8px 8px 0;
    font-family: monospace;
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-fin-dark);
    margin: 20px 0;
}

@media (max-width: 768px) {
    .rk-fin-app { grid-template-columns: 1fr; }
    .rk-fin-controls { border-right: none; border-bottom: 1px solid var(--rk-fin-border); }
    .rk-fin-header, .rk-fin-controls, .rk-fin-display, .rk-fin-content { padding: 25px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#article-wykonczenie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/"
    },
    "headline": "Jak rodzaj wykończenia posadzki modyfikuje grubość wylewki betonowej?",
    "description": "Analiza wpływu oporu cieplnego materiałów wykończeniowych (płytki, panele, drewno) na wymaganą grubość jastrychu w systemach płaszczyznowych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-06-27"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#dataset-wykonczenie",
    "name": "Zestawienie oporów cieplnych dla materiałów wykończeniowych posadzek",
    "description": "Baza danych określająca wartości współczynnika R dla popularnych okładzin (płytki gresowe, panele z podkładem PUM, deski warstwowe).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "opór cieplny paneli podłogowych",
      "ogrzewanie podłogowe a panele laminowane",
      "wylewka betonowa pod płytki",
      "grubość wylewki pod deskę drewnianą",
      "norma PN-EN 1264 opór posadzki"
    ],
    "measurementTechnique": "Algorytm sumujący opory cieplne poszczególnych warstw (Rw + Ro) w celu weryfikacji zgodności z normatywnym limitem 0,15 m²K/W.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Płytki ceramiczne: R ≈ 0,01 m²K/W",
        "Panele laminowane z podkładem PUM: R ≈ 0,07 m²K/W",
        "Deska warstwowa/lita: R ≥ 0,10 m²K/W",
        "Limit całkowity (wylewka + okładzina): max 0,15 m²K/W"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#webapp-wykonczenie",
    "name": "Bilansator Oporu Cieplnego Posadzki",
    "description": "Interaktywny kalkulator weryfikujący poprawność doboru grubości jastrychu w relacji do wybranej okładziny podłogowej, bazujący na prawie Fouriera.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-fin-wrapper">
    <div class="rk-fin-header">
        <h2>Jak rodzaj wykończenia modyfikuje grubość wylewki?</h2>
        <p>Wybór materiału na podłogę to nie tylko kwestia estetyki, ale przede wszystkim fizyki. Sprawdź, czy Twoja warstwa betonu w połączeniu z wymarzonym wykończeniem nie przekroczy krytycznej granicy oporu cieplnego.</p>
    </div>

    <div class="rk-fin-app">
        <div class="rk-fin-controls">
            
            <div class="rk-fin-group">
                <div class="rk-fin-label">
                    <span>Okładzina (Wykończenie)</span>
                </div>
                <div class="rk-fin-btn-grid">
                    <button class="rk-fin-btn" id="rkFinBtn1" onclick="rkFinUpdateR(0.01, this)">
                        Płytki / Gres
                        <span>R ≈ 0,01</span>
                    </button>
                    <button class="rk-fin-btn is-active" id="rkFinBtn2" onclick="rkFinUpdateR(0.07, this)">
                        Panele + PUM
                        <span>R ≈ 0,07</span>
                    </button>
                    <button class="rk-fin-btn" id="rkFinBtn3" onclick="rkFinUpdateR(0.12, this)">
                        Gruba Deska
                        <span>R ≥ 0,12</span>
                    </button>
                </div>
            </div>

            <div class="rk-fin-group">
                <div class="rk-fin-label">
                    <span>Grubość wylewki betonowej</span>
                    <span class="rk-fin-badge" id="rkFinThickLbl">7.0 cm</span>
                </div>
                <input type="range" class="rk-fin-slider" id="rkFinThickInp" min="4.5" max="9.0" step="0.5" value="7.0" oninput="rkFinCalculate()">
            </div>

        </div>

        <div class="rk-fin-display">
            <div class="rk-fin-gauge-box" id="rkFinGaugeBox">
                <div class="rk-fin-gauge-title">Łączny opór cieplny (R całkowity)</div>
                <div class="rk-fin-total-val" id="rkFinTotalVal">0.128</div>
                <div class="rk-fin-unit">m²K/W</div>
                
                <div class="rk-fin-bar-container">
                    <div class="rk-fin-bar-limit"></div>
                    <div class="rk-fin-bar-fill" id="rkFinBarFill"></div>
                </div>
                <div class="rk-fin-limit-label">Norma max: 0,15</div>

                <div class="rk-fin-status" id="rkFinStatus">W normie (Wydajny system)</div>
            </div>
        </div>
    </div>

    <div class="rk-fin-content">
        <h3>Fizyka nie wybacza błędów</h3>
        <p>Wybór materiału wykończeniowego narzuca precyzyjną korektę grubości wylewki. Dla materiałów o wysokim oporze termicznym, jak panele laminowane z podkładem czy deski warstwowe (R ≥ 0,10 m²K/W), grubość jastrychu cementowego należy odchudzić do poziomu 5,5–6,5 cm. Z kolei pod doskonale przewodzące płytki ceramiczne (R ≈ 0,01 m²K/W) można bezpiecznie zastosować grubszy rdzeń (7,0–8,0 cm), co pozwala stworzyć stabilny akumulator ciepła dla taryf G12w.</p>
        
        <p>Całkowity opór cieplny nad rurą grzewczą to prosta suma inżynierska. Zgodnie z normą PN-EN 1264, nie może ona przekraczać wartości 0,15 m²K/W.</p>
        
        <div class="rk-math-box">
            R_całkowity = R_wylewka + R_okładzina
        </div>

        <p>Jeśli planujesz montaż paneli laminowanych (10 mm) na podkładzie poliuretanowo-mineralnym, ich łączny opór wynosi zazwyczaj Ro = 0,07 m²K/W. Jeśli wylejesz do tego standardowy beton o grubości 8 cm (Rw = 0,066 m²K/W), całkowity opór wyniesie 0,136 m²K/W. System zadziała, ale zbliża się do niebezpiecznej granicy efektywności. Dla grubszej deski normy zostaną złamane, wymuszając drastyczne podniesienie temperatury zasilania na pompie ciepła.</p>
    </div>
</div>

<script>
    // Unikalne zmienne (prefix rkFin)
    var rkFinCurrentR = 0.07; // Domyślnie panele

    function rkFinUpdateR(rValue, btnObj) {
        rkFinCurrentR = rValue;
        
        var btns = document.querySelectorAll('#rkFinBtn1, #rkFinBtn2, #rkFinBtn3');
        for(var i=0; i<btns.length; i++) {
            btns[i].classList.remove('is-active');
        }
        btnObj.classList.add('is-active');
        
        rkFinCalculate();
    }

    function rkFinCalculate() {
        var thickInp = document.getElementById('rkFinThickInp');
        if(!thickInp) return;

        var thickCm = parseFloat(thickInp.value);
        document.getElementById('rkFinThickLbl').innerText = thickCm.toFixed(1) + " cm";

        // Obliczenie oporu wylewki (Rw)
        // d / lambda. Zakładamy standardowy beton przewodność ok 1.2
        var thickMeters = thickCm / 100;
        var rWylewki = thickMeters / 1.2; 
        
        // Obliczenie oporu całkowitego
        var rTotal = rWylewki + rkFinCurrentR;
        
        document.getElementById('rkFinTotalVal').innerText = rTotal.toFixed(3);

        // Aktualizacja paska (skala do 0.20 m2K/W)
        var maxScale = 0.20;
        var fillPercent = (rTotal / maxScale) * 100;
        if(fillPercent > 100) { fillPercent = 100; }
        
        var barFill = document.getElementById('rkFinBarFill');
        barFill.style.width = fillPercent + "%";

        // Statusy (bez &&)
        var statusEl = document.getElementById('rkFinStatus');
        var gaugeBox = document.getElementById('rkFinGaugeBox');

        if (rTotal <= 0.10) {
            barFill.style.backgroundColor = "var(--rk-fin-green)";
            gaugeBox.style.borderColor = "var(--rk-fin-green)";
            statusEl.innerText = "System wysoce efektywny";
            statusEl.style.color = "var(--rk-fin-green)";
            statusEl.style.backgroundColor = "#ecfdf5";
        } else {
            if (rTotal <= 0.15) {
                barFill.style.backgroundColor = "var(--rk-fin-blue)";
                gaugeBox.style.borderColor = "var(--rk-fin-blue)";
                statusEl.innerText = "W normie (Wydajny system)";
                statusEl.style.color = "var(--rk-fin-blue)";
                statusEl.style.backgroundColor = "var(--rk-fin-blue-light)";
            } else {
                barFill.style.backgroundColor = "var(--rk-fin-red)";
                gaugeBox.style.borderColor = "var(--rk-fin-red)";
                statusEl.innerText = "BŁĄD! Przekroczenie normy (0.15)";
                statusEl.style.color = "var(--rk-fin-red)";
                statusEl.style.backgroundColor = "var(--rk-fin-red-light)";
            }
        }
    }

    // Bezpieczne inicjowanie omijające async/defer cache
    function rkInitFinApp() {
        rkFinCalculate();
    }

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', rkInitFinApp);
    } else {
        rkInitFinApp();
    }
</script>



<style>
:root {
    --rk-comp-dark: #0f172a;
    --rk-comp-blue: #0284c7;
    --rk-comp-blue-light: #f0f9ff;
    --rk-comp-green: #10b981;
    --rk-comp-gray: #64748b;
    --rk-comp-gray-light: #f8fafc;
    --rk-comp-border: #e2e8f0;
    --rk-comp-bg: #ffffff;
    --rk-comp-accent: #f59e0b;
}

.rk-comp-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    background: var(--rk-comp-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-comp-border);
    overflow: hidden;
}

/* Header Section */
.rk-comp-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-comp-dark) 0%, #1e293b 100%);
    color: #ffffff;
    text-align: center;
}

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

.rk-comp-header p {
    color: #94a3b8;
    font-size: 16px;
    max-width: 700px;
    margin: 0 auto;
    line-height: 1.6;
}

.rk-comp-header a {
    color: #38bdf8;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Tab Selector */
.rk-comp-selector {
    display: flex;
    padding: 20px 50px;
    background: var(--rk-comp-gray-light);
    border-bottom: 1px solid var(--rk-comp-border);
    gap: 15px;
    justify-content: center;
}

.rk-mat-btn {
    flex: 1;
    max-width: 250px;
    padding: 18px 20px;
    background: #ffffff;
    border: 2px solid var(--rk-comp-border);
    border-radius: 14px;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-comp-gray);
    cursor: pointer;
    transition: all 0.3s ease;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
}

.rk-mat-btn:hover {
    border-color: var(--rk-comp-blue);
    background: var(--rk-comp-blue-light);
}

.rk-mat-btn.is-active {
    border-color: var(--rk-comp-blue);
    background: var(--rk-comp-blue);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.4);
}

.rk-mat-btn-sub {
    font-size: 12px;
    font-weight: 600;
    opacity: 0.8;
}

/* Results Grid */
.rk-comp-grid {
    padding: 40px 50px;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 25px;
    background: #ffffff;
}

.rk-data-card {
    background: #ffffff;
    border: 1px solid var(--rk-comp-border);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    align-items: flex-start;
    gap: 20px;
    transition: transform 0.3s, box-shadow 0.3s;
}

.rk-data-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 12px 20px -8px rgba(0,0,0,0.08);
    border-color: #cbd5e1;
}

.rk-data-icon {
    width: 48px;
    height: 48px;
    min-width: 48px;
    background: var(--rk-comp-blue-light);
    color: var(--rk-comp-blue);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-data-content {
    flex: 1;
}

.rk-data-label {
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-comp-gray);
    text-transform: uppercase;
    margin-bottom: 5px;
    letter-spacing: 0.5px;
}

.rk-data-value {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-comp-dark);
    margin-bottom: 5px;
    line-height: 1.3;
}

.rk-data-sub {
    font-size: 14px;
    color: var(--rk-comp-gray);
    line-height: 1.5;
}

/* Full Width Card */
.rk-card-full {
    grid-column: 1 / -1;
    background: var(--rk-comp-gray-light);
}

@media (max-width: 768px) {
    .rk-comp-header, .rk-comp-selector, .rk-comp-grid { padding: 30px 20px; }
    .rk-comp-selector { flex-direction: column; gap: 10px; }
    .rk-mat-btn { max-width: 100%; width: 100%; flex-direction: row; justify-content: center; padding: 15px; }
    .rk-mat-btn-sub { display: none; } /* Hide subtitle on mobile to save space */
    .rk-comp-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-card-full { grid-column: 1; }
    .rk-data-value { font-size: 18px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#article-komparator",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/"
    },
    "headline": "Parametry techniczne wylewek – jastrych cementowy vs wylewka anhydrytowa",
    "description": "Zestawienie kluczowych parametrów fizycznych i konstrukcyjnych wylewek: przewodność cieplna, wytrzymałość, grubość i czasy schnięcia według PN-EN 13813.",
    "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": "2025-12-29",
    "dateModified": "2026-06-27"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#dataset-komparator",
    "name": "Zestawienie parametrów fizycznych jastrychów grzewczych",
    "description": "Baza danych właściwości termodynamicznych i mechanicznych wylewek (cement vs anhydryt) wykorzystywana do projektowania instalacji płaszczyznowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wylewka anhydrytowa parametry",
      "jastrych cementowy przewodność cieplna",
      "wylewka cementowa z plastyfikatorem",
      "gęstość betonu na ogrzewanie podłogowe",
      "czas schnięcia wylewki anhydrytowej"
    ],
    "measurementTechnique": "Porównanie właściwości na podstawie europejskiej normy badawczej PN-EN 13813 (Materiały podkładów podłogowych).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przewodność (Lambda): Beton 1.2 W/(m·K) vs Anhydryt 1.8 W/(m·K)",
        "Grubość minimalna otuliny: od 2.0 cm do 3.5 cm",
        "Masa jednostkowa: od 90 kg/m² do 154 kg/m²"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#webapp-komparator",
    "name": "Interaktywny Komparator Wylewek Grzewczych",
    "description": "Moduł aplikacyjny wyświetlający dynamicznie zmieniające się parametry fizykochemiczne w zależności od wybranego rodzaju podkładu podłogowego.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-comp-wrapper">
    <div class="rk-comp-header">
        <h2>Parametry techniczne wylewek</h2>
        <p>Decyzja o wyborze wylewki definiuje pracę całej instalacji. Porównaj kluczowe właściwości fizyczne i konstrukcyjne dla systemów pracujących w oparciu o normę <strong>PN-EN 13813</strong>. Pamiętaj, że wpływa to bezpośrednio na to, <a href="https://projekt-ogrzewania.pl/ile-czasu-nagrzewa-sie-podlogowka/">ile czasu nagrzewa się podłogówka</a>.</p>
    </div>

    <div class="rk-comp-selector">
        <button class="rk-mat-btn" id="btnMat1" onclick="rkUpdateComp(1)">
            <span>Zwykły Beton</span>
            <span class="rk-mat-btn-sub">Standardowy Jastrych</span>
        </button>
        <button class="rk-mat-btn is-active" id="btnMat2" onclick="rkUpdateComp(2)">
            <span>Beton + Chemia</span>
            <span class="rk-mat-btn-sub">Z Plastyfikatorem</span>
        </button>
        <button class="rk-mat-btn" id="btnMat3" onclick="rkUpdateComp(3)">
            <span>Anhydryt</span>
            <span class="rk-mat-btn-sub">Masa Samopoziomująca</span>
        </button>
    </div>

    <div class="rk-comp-grid">
        
        <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" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            </div>
            <div class="rk-data-content">
                <div class="rk-data-label">Przewodność Cieplna (λ)</div>
                <div class="rk-data-value" id="valLambda">1,45 W/(m·K)</div>
                <div class="rk-data-sub" id="descLambda">Bardzo dobre oddawanie energii z rur.</div>
            </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" stroke-linecap="round" stroke-linejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line></svg>
            </div>
            <div class="rk-data-content">
                <div class="rk-data-label">Grubość optymalna</div>
                <div class="rk-data-value" id="valThick">6,0 – 7,0 cm</div>
                <div class="rk-data-sub" id="descThick">Minimalna otulina nad rurą: <strong>3,0 cm</strong></div>
            </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" 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-data-content">
                <div class="rk-data-label">Wytrzymałość (Ścisk/Zginanie)</div>
                <div class="rk-data-value" id="valStrength">C25 / F5</div>
                <div class="rk-data-sub" id="descStrength">Podwyższona klasa dzięki uplastycznieniu.</div>
            </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" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="7" width="20" height="14" rx="2" ry="2"></rect><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path></svg>
            </div>
            <div class="rk-data-content">
                <div class="rk-data-label">Masa posadzki (na 1 m²)</div>
                <div class="rk-data-value" id="valMass">138 kg</div>
                <div class="rk-data-sub" id="descMass">Gęstość: 2200 - 2300 kg/m³</div>
            </div>
        </div>

        <div class="rk-data-card rk-card-full">
            <div class="rk-data-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg>
            </div>
            <div class="rk-data-content">
                <div class="rk-data-label">Technologia i Wiązanie</div>
                <div class="rk-data-value" id="valTech">Dylatacje do 40 m² | Schnięcie 28 dni</div>
                <div class="rk-data-sub" id="descTech">Wymaga regularnych nacięć pośrednich. Podwyższona odporność na wilgoć w systemie mokrym.</div>
            </div>
        </div>

    </div>
</div>

<script>
    function rkUpdateComp(matId) {
        // Zmiana klas przycisków (bezpieczne odświeżanie bez &&)
        var btn1 = document.getElementById('btnMat1');
        var btn2 = document.getElementById('btnMat2');
        var btn3 = document.getElementById('btnMat3');
        
        btn1.classList.remove('is-active');
        btn2.classList.remove('is-active');
        btn3.classList.remove('is-active');

        var vLambda = document.getElementById('valLambda');
        var dLambda = document.getElementById('descLambda');
        var vThick = document.getElementById('valThick');
        var dThick = document.getElementById('descThick');
        var vStr = document.getElementById('valStrength');
        var dStr = document.getElementById('descStrength');
        var vMass = document.getElementById('valMass');
        var dMass = document.getElementById('descMass');
        var vTech = document.getElementById('valTech');
        var dTech = document.getElementById('descTech');

        if (matId === 1) {
            btn1.classList.add('is-active');
            
            vLambda.innerText = "1,20 W/(m·K)";
            dLambda.innerText = "Niska przewodność. Działa jako izolator.";
            
            vThick.innerText = "7,0 – 8,0 cm";
            dThick.innerHTML = "Minimalna otulina nad rurą: <strong>3,5 cm</strong>";
            
            vStr.innerText = "C20 / F4";
            dStr.innerText = "Podstawowa klasa wytrzymałości na ściskanie.";
            
            vMass.innerText = "154 kg";
            dMass.innerText = "Gęstość: 2100 - 2200 kg/m³ (przy 7 cm)";
            
            vTech.innerText = "Dylatacje do 36 m² | Schnięcie 28 dni";
            dTech.innerText = "Maksymalne pole bez nacięć to 6x6 m. Tradycyjny proces wiązania cementu.";
        }
        
        if (matId === 2) {
            btn2.classList.add('is-active');
            
            vLambda.innerText = "1,45 W/(m·K)";
            dLambda.innerText = "Bardzo dobre oddawanie energii z rur.";
            
            vThick.innerText = "6,0 – 7,0 cm";
            dThick.innerHTML = "Minimalna otulina nad rurą: <strong>3,0 cm</strong>";
            
            vStr.innerText = "C25 / F5";
            dStr.innerText = "Podwyższona klasa dzięki uplastycznieniu.";
            
            vMass.innerText = "138 kg";
            dMass.innerText = "Gęstość: 2200 - 2300 kg/m³ (przy 6 cm)";
            
            vTech.innerText = "Dylatacje do 40 m² | Schnięcie 28 dni";
            dTech.innerHTML = "Wymaga regularnych nacięć pośrednich. Podwyższona odporność na wilgoć w systemie mokrym.";
        }

        if (matId === 3) {
            btn3.classList.add('is-active');
            
            vLambda.innerText = "1,80 W/(m·K)";
            dLambda.innerText = "Doskonała przewodność termiczna układu.";
            
            vThick.innerText = "4,0 – 5,0 cm";
            dThick.innerHTML = "Minimalna otulina nad rurą: <strong>2,0 cm</strong>";
            
            vStr.innerText = "C30 / F6";
            dStr.innerText = "Wysoka odporność na obciążenia zginające.";
            
            vMass.innerText = "90 kg";
            dMass.innerText = "Gęstość: 2000 - 2100 kg/m³ (przy 4.5 cm)";
            
            vTech.innerText = "Pola do 300 m² | Schnięcie 7 - 14 dni";
            dTech.innerHTML = "Możliwość wylewania ogromnych powierzchni bez dylatacji pośrednich. Nie zalecane do stref mokrych.";
        }
    }
</script>



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-panel: #1e293b;
    --rk-calc-blue: #0ea5e9;
    --rk-calc-blue-hover: #0284c7;
    --rk-calc-green: #10b981;
    --rk-calc-red: #ef4444;
    --rk-calc-gray: #64748b;
    --rk-calc-light: #f8fafc;
    --rk-calc-border: #e2e8f0;
    --rk-calc-text: #334155;
    --rk-calc-accent: #f59e0b;
}

.rk-calc-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(14, 165, 233, 0.15);
    border: 1px solid rgba(14, 165, 233, 0.2);
    overflow: hidden;
}

/* Header */
.rk-calc-header {
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, var(--rk-calc-panel) 100%);
    padding: 40px 50px;
    color: #ffffff;
    text-align: center;
}

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

.rk-calc-header p {
    color: #94a3b8;
    font-size: 16px;
    max-width: 750px;
    margin: 0 auto;
    line-height: 1.6;
}

/* Interactive Dashboard App */
.rk-calc-app {
    display: grid;
    grid-template-columns: 1fr 380px;
    background: var(--rk-calc-light);
    border-bottom: 1px solid var(--rk-calc-border);
}

.rk-calc-controls {
    padding: 40px 50px;
    border-right: 1px solid var(--rk-calc-border);
}

.rk-calc-group {
    margin-bottom: 30px;
}

.rk-calc-group:last-child {
    margin-bottom: 0;
}

.rk-calc-label {
    display: flex;
    justify-content: space-between;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    margin-bottom: 15px;
}

.rk-calc-val-badge {
    background: var(--rk-calc-blue);
    color: #ffffff;
    padding: 2px 10px;
    border-radius: 6px;
    font-size: 14px;
}

/* Sliders */
.rk-calc-slider {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    background: #cbd5e1;
    border-radius: 4px;
    outline: none;
    margin-bottom: 10px;
}

.rk-calc-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-calc-blue);
    cursor: pointer;
    box-shadow: 0 2px 6px rgba(14, 165, 233, 0.4);
    transition: transform 0.1s;
}

.rk-calc-slider::-webkit-slider-thumb:hover {
    transform: scale(1.1);
}

/* Toggle Buttons */
.rk-calc-btn-row {
    display: flex;
    gap: 10px;
}

.rk-calc-btn {
    flex: 1;
    padding: 12px 10px;
    background: #ffffff;
    border: 2px solid var(--rk-calc-border);
    border-radius: 10px;
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-calc-gray);
    cursor: pointer;
    transition: all 0.2s;
    text-align: center;
}

.rk-calc-btn:hover {
    border-color: var(--rk-calc-blue);
    color: var(--rk-calc-blue);
}

.rk-calc-btn.is-active {
    background: var(--rk-calc-blue);
    border-color: var(--rk-calc-blue);
    color: #ffffff;
    box-shadow: 0 4px 10px rgba(14, 165, 233, 0.3);
}

/* Results Display */
.rk-calc-results {
    background: #ffffff;
    padding: 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    position: relative;
}

.rk-result-box {
    margin-bottom: 25px;
    padding-bottom: 25px;
    border-bottom: 1px dashed var(--rk-calc-border);
}

.rk-result-box:last-child {
    border-bottom: none;
    margin-bottom: 0;
    padding-bottom: 0;
}

.rk-result-title {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-calc-gray);
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-result-value {
    font-size: 36px;
    font-weight: 900;
    color: var(--rk-calc-dark);
    line-height: 1.1;
}

.rk-result-unit {
    font-size: 16px;
    font-weight: 700;
    color: var(--rk-calc-gray);
}

.rk-status-indicator {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    margin-top: 10px;
}

.status-ok { background: var(--rk-calc-green); color: #ffffff; }
.status-bad { background: var(--rk-calc-red); color: #ffffff; }

/* Explanatory Content */
.rk-calc-content {
    padding: 40px 50px;
}

.rk-calc-content h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    margin: 0 0 15px 0;
    padding-left: 15px;
    border-left: 4px solid var(--rk-calc-blue);
}

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

.rk-math-block {
    background: var(--rk-calc-light);
    border: 1px solid var(--rk-calc-border);
    padding: 20px;
    border-radius: 12px;
    font-family: monospace;
    font-size: 16px;
    color: var(--rk-calc-dark);
    margin-bottom: 25px;
    text-align: center;
    font-weight: 700;
}

.rk-calc-content a {
    color: var(--rk-calc-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid transparent;
    transition: border-color 0.2s;
}

.rk-calc-content a:hover {
    border-bottom-color: var(--rk-calc-blue);
}

/* Tags */
.rk-calc-tags {
    padding: 0 50px 30px;
    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;
}

/* CTA */
.rk-calc-cta {
    padding: 45px 50px;
    background: var(--rk-calc-dark);
    text-align: center;
    position: relative;
    overflow: hidden;
}

.rk-calc-cta::before {
    content: '';
    position: absolute;
    width: 200px;
    height: 200px;
    background: var(--rk-calc-blue);
    filter: blur(100px);
    opacity: 0.3;
    top: -50px;
    left: 50%;
    transform: translateX(-50%);
}

.rk-calc-cta h4 {
    font-size: 26px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 15px 0;
    position: relative;
}

.rk-calc-cta p {
    font-size: 16px;
    color: #94a3b8;
    max-width: 650px;
    margin: 0 auto 30px auto;
    line-height: 1.6;
    position: relative;
}

.rk-btn-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-calc-accent);
    color: var(--rk-calc-dark);
    font-size: 18px;
    font-weight: 900;
    padding: 20px 45px;
    border-radius: 14px;
    text-decoration: none;
    box-shadow: 0 10px 25px rgba(245, 158, 11, 0.3);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
}

.rk-btn-cta:hover {
    transform: translateY(-5px);
    background: #fbbf24;
    box-shadow: 0 15px 35px rgba(245, 158, 11, 0.5);
}

@media (max-width: 768px) {
    .rk-calc-app { grid-template-columns: 1fr; }
    .rk-calc-header, .rk-calc-controls, .rk-calc-results, .rk-calc-content, .rk-calc-tags, .rk-calc-cta { padding: 30px 20px; }
    .rk-calc-controls { border-right: none; border-bottom: 1px solid var(--rk-calc-border); }
    .rk-calc-btn-row { flex-direction: column; }
    .rk-calc-btn { width: 100%; }
    .rk-result-value { font-size: 30px; }
    .rk-btn-cta { width: 100%; padding: 18px 20px; font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#article-algorytm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/"
    },
    "headline": "Jak obliczyć opór cieplny i masę wylewki? Algorytm kalkulatora krok po kroku",
    "description": "Interaktywny algorytm oparty na prawie Fouriera. Oblicz na żywo opór cieplny jastrychu, wpływ paneli i całkowitą masę betonu na stropie.",
    "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-27",
    "dateModified": "2026-06-27"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#dataset-algorytm",
    "name": "Wzory i Parametry Termodynamiczne Posadzek Grzewczych",
    "description": "Zestawienie współczynników Lambda, gęstości betonu oraz dopuszczalnych oporów cieplnych okładzin podłogowych według norm budowlanych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jak obliczyć opór cieplny wylewki",
      "łączny opór cieplny ogrzewania podłogowego",
      "kalkulator wagi wylewki betonowej",
      "norma PN-EN 1264 opór cieplny",
      "przewodność cieplna betonu z plastyfikatorem"
    ],
    "measurementTechnique": "Obliczenia oparte na prawie przewodzenia ciepła Fouriera (R = d / lambda) oraz badaniu nośności stropów (M = V * rho).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Gęstość objętościowa betonu: 2250 kg/m³",
        "Dopuszczalny całkowity opór posadzki: max 0,15 m²K/W",
        "Opór cieplny paneli z podkładem: ~0,06 m²K/W"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#webapp-algorytm",
    "name": "Kalkulator Oporu Cieplnego i Masy Jastrychu (Live)",
    "description": "Narzędzie inżynierskie online służące do szybkiej weryfikacji warunków brzegowych instalacji płaszczyznowej (opór R oraz masa M).",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-wrapper">
    <div class="rk-calc-header">
        <h2>Jak obliczyć opór cieplny i masę wylewki?</h2>
        <p>Prawo Fouriera nie przyjmuje wymówek. Zanim wylejesz posadzkę, przetestuj w naszym symulatorze, jak każdy centymetr betonu i rodzaj wykończenia wpływają na wydajność Twojego ogrzewania oraz <a href="https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/" style="color:var(--rk-calc-blue);">parametry całej instalacji</a>.</p>
    </div>

    <div class="rk-calc-app">
        <div class="rk-calc-controls">
            
            <div class="rk-calc-group">
                <div class="rk-calc-label">
                    <span>Grubość wylewki (d)</span>
                    <span class="rk-calc-val-badge" id="lblThick">6.5 cm</span>
                </div>
                <input type="range" class="rk-calc-slider" id="inpThick" min="4" max="10" step="0.5" value="6.5" oninput="rkRunCalc()">
            </div>

            <div class="rk-calc-group">
                <div class="rk-calc-label">
                    <span>Powierzchnia salonu (A)</span>
                    <span class="rk-calc-val-badge" id="lblArea">50 m²</span>
                </div>
                <input type="range" class="rk-calc-slider" id="inpArea" min="10" max="150" step="5" value="50" oninput="rkRunCalc()">
            </div>

            <div class="rk-calc-group">
                <div class="rk-calc-label"><span>Rodzaj Mieszanki (λ)</span></div>
                <div class="rk-calc-btn-row">
                    <button class="rk-calc-btn" id="btnMat1" onclick="rkSetMat(1.2, this)">Beton Zwykły</button>
                    <button class="rk-calc-btn is-active" id="btnMat2" onclick="rkSetMat(1.45, this)">Z plastyfikatorem</button>
                    <button class="rk-calc-btn" id="btnMat3" onclick="rkSetMat(1.8, this)">Anhydryt</button>
                </div>
            </div>

            <div class="rk-calc-group">
                <div class="rk-calc-label"><span>Wykończenie Podłogi (R_okł)</span></div>
                <div class="rk-calc-btn-row">
                    <button class="rk-calc-btn" id="btnFin1" onclick="rkSetFin(0.01, this)">Płytki</button>
                    <button class="rk-calc-btn is-active" id="btnFin2" onclick="rkSetFin(0.06, this)">Panele</button>
                    <button class="rk-calc-btn" id="btnFin3" onclick="rkSetFin(0.12, this)">Gruba Deska</button>
                </div>
            </div>
            
        </div>

        <div class="rk-calc-results">
            
            <div class="rk-result-box">
                <div class="rk-result-title">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    Łączny Opór Cieplny
                </div>
                <div class="rk-result-value" id="resTotalR">0.105</div>
                <div class="rk-result-unit">m²K/W</div>
                <div class="rk-status-indicator status-ok" id="resStatus">
                    <svg width="14" height="14" 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>
                    Zgodne z PN-EN 1264
                </div>
            </div>

            <div class="rk-result-box">
                <div class="rk-result-title">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="7" width="20" height="14" rx="2" ry="2"></rect><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path></svg>
                    Całkowita Masa Jastrychu
                </div>
                <div class="rk-result-value" id="resMass">7.31</div>
                <div class="rk-result-unit">Ton uwięzionych w betonie</div>
            </div>

        </div>
    </div>

    <div class="rk-calc-content">
        <h3>Krok 1: Obliczenie oporu cieplnego samej wylewki (Rw)</h3>
        <p>Dzielimy grubość warstwy (w metrach) przez współczynnik przewodzenia ciepła wybranej mieszanki. Jest to podstawowy inżynierski parametr decydujący o <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">efektywności podłogówki</a>.</p>
        <div class="rk-math-block">
            Rw = d / lambda
        </div>

        <h3>Krok 2: Weryfikacja normy dla wykończenia (Rcałk)</h3>
        <p>Dodajemy opór wylewki do oporu wybranej okładziny. <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">Wpływ wykończenia posadzki</a> jest drastyczny – gruba deska potrafi zablokować emisję ciepła. Według normy PN-EN 1264 wynik łączny nie może przekraczać 0,15 m²K/W.</p>
        <div class="rk-math-block">
            Rcałkowity = Rw + Rokładzina ≤ 0.15 m²K/W
        </div>

        <h3>Krok 3: Obliczenie dociążenia stropu (M)</h3>
        <p>Mnożymy powierzchnię przez grubość i średnią gęstość betonu grzewczego (ok. 2250 kg/m³). To pozwala ocenić ogromną bezwładność termiczną układu, którą musi pokonać kocioł lub pompa ciepła.</p>
    </div>

    <div class="rk-calc-tags">
        <span class="rk-mat-tag"># jak obliczyć opór cieplny wylewki</span>
        <span class="rk-mat-tag"># łączny opór cieplny ogrzewania podłogowego</span>
        <span class="rk-mat-tag"># kalkulator wagi wylewki betonowej</span>
        <span class="rk-mat-tag"># norma PN-EN 1264 opór cieplny</span>
        <span class="rk-mat-tag"># przewodność cieplna betonu z plastyfikatorem</span>
        <span class="rk-mat-tag"># opór cieplny paneli podłogowych</span>
        <span class="rk-mat-tag"># dociążenie stropu wylewką</span>
    </div>

    <div class="rk-calc-cta">
        <h4>Nie ryzykuj, że Twoja podłoga nie odda ciepła</h4>
        <p>Zabawa suwakami to teoria. W praktyce krzyżują się rury, zyski słoneczne i przepływy hydrauliczne. Jeśli chcesz mieć absolutną gwarancję, że rachunki będą niskie, a salon ciepły, powierz to specjalistom ze stajni Projekt-Ogrzewania.pl.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-cta">
            ZAMÓW PROJEKT HYDRAULICZNY
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 16 16 12 12 8"></polyline><line x1="8" y1="12" x2="16" y2="12"></line></svg>
        </a>
    </div>
</div>

<script>
    // Zmienne globalne stanu
    var currentLambda = 1.45;
    var currentFinR = 0.06;
    var density = 2250; // kg/m3

    function rkSetMat(lambdaVal, btnObj) {
        currentLambda = lambdaVal;
        
        // Aktualizacja UI przycisków (bezpieczna pętla)
        var btns = document.querySelectorAll('#btnMat1, #btnMat2, #btnMat3');
        for (var i = 0; i < btns.length; i++) {
            btns[i].classList.remove('is-active');
        }
        btnObj.classList.add('is-active');
        
        rkRunCalc();
    }

    function rkSetFin(finVal, btnObj) {
        currentFinR = finVal;
        
        // Aktualizacja UI przycisków
        var btns = document.querySelectorAll('#btnFin1, #btnFin2, #btnFin3');
        for (var i = 0; i < btns.length; i++) {
            btns[i].classList.remove('is-active');
        }
        btnObj.classList.add('is-active');
        
        rkRunCalc();
    }

    function rkRunCalc() {
        var thickCm = parseFloat(document.getElementById('inpThick').value);
        var areaM = parseFloat(document.getElementById('inpArea').value);
        
        // Update Labels
        document.getElementById('lblThick').innerText = thickCm.toFixed(1) + " cm";
        document.getElementById('lblArea').innerText = areaM + " m²";

        // Matematyka
        var thickM = thickCm / 100;
        var rWylewki = thickM / currentLambda;
        var rTotal = rWylewki + currentFinR;
        var massKg = areaM * thickM * density;
        var massTon = massKg / 1000;

        // Aktualizacja wyników w DOM
        document.getElementById('resTotalR').innerText = rTotal.toFixed(3);
        document.getElementById('resMass').innerText = massTon.toFixed(2);

        // Status Normy bez użycia &#038;&#038;
        var statusEl = document.getElementById('resStatus');
        if (rTotal <= 0.15) {
            statusEl.className = 'rk-status-indicator status-ok';
            statusEl.innerHTML = '<svg width="14" height="14" 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> Zgodne z PN-EN 1264';
        } else {
            statusEl.className = 'rk-status-indicator status-bad';
            statusEl.innerHTML = '<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg> Przekroczenie normy!';
        }
    }

    // Inicjalne uruchomienie
    document.addEventListener("DOMContentLoaded", function() {
        rkRunCalc();
    });
</script>



<style>
:root {
    --rk-chem-dark: #0f172a;
    --rk-chem-blue: #0284c7;
    --rk-chem-blue-light: #e0f2fe;
    --rk-chem-green: #10b981;
    --rk-chem-green-light: #dcfce7;
    --rk-chem-red: #ef4444;
    --rk-chem-red-light: #fee2e2;
    --rk-chem-gray: #64748b;
    --rk-chem-border: #cbd5e1;
    --rk-chem-bg: #ffffff;
    --rk-chem-accent: #f59e0b;
}

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

/* Header */
.rk-chem-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #1e293b 0%, var(--rk-chem-dark) 100%);
    color: #ffffff;
    text-align: center;
}

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

.rk-chem-header p {
    color: #94a3b8;
    font-size: 16px;
    line-height: 1.6;
    max-width: 700px;
    margin: 0 auto;
}

/* Interactive Dashboard */
.rk-chem-dashboard {
    background: #f8fafc;
    padding: 40px 50px;
    border-bottom: 1px solid var(--rk-chem-border);
}

.rk-chem-controls {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 30px;
}

.rk-chem-toggle-btn {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 25px;
    background: #ffffff;
    border: 2px solid var(--rk-chem-border);
    border-radius: 16px;
    cursor: pointer;
    transition: all 0.3s ease;
}

.rk-chem-toggle-btn:hover {
    border-color: var(--rk-chem-blue);
}

.rk-chem-toggle-btn.is-active {
    border-color: var(--rk-chem-green);
    background: var(--rk-chem-green-light);
}

.rk-chem-toggle-info h4 {
    margin: 0 0 5px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-chem-dark);
}

.rk-chem-toggle-info p {
    margin: 0;
    font-size: 13px;
    color: var(--rk-chem-gray);
}

/* Toggle Switch UI */
.rk-switch {
    width: 50px;
    height: 28px;
    background: #cbd5e1;
    border-radius: 14px;
    position: relative;
    transition: background 0.3s;
}

.rk-chem-toggle-btn.is-active .rk-switch { background: var(--rk-chem-green); }

.rk-switch-knob {
    width: 22px;
    height: 22px;
    background: #ffffff;
    border-radius: 50%;
    position: absolute;
    top: 3px;
    left: 3px;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

.rk-chem-toggle-btn.is-active .rk-switch-knob { transform: translateX(22px); }

/* Visualization Screen */
.rk-chem-screen {
    background: #ffffff;
    border: 1px solid var(--rk-chem-border);
    border-radius: 16px;
    padding: 30px;
    text-align: center;
    box-shadow: inset 0 2px 10px rgba(0,0,0,0.02);
}

.rk-screen-metrics {
    display: flex;
    justify-content: space-around;
    margin-bottom: 20px;
}

.rk-metric-box {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.rk-metric-label { font-size: 12px; font-weight: 700; color: var(--rk-chem-gray); text-transform: uppercase; }
.rk-metric-value { font-size: 24px; font-weight: 900; color: var(--rk-chem-dark); transition: color 0.3s; }

.rk-visual-slab {
    height: 60px;
    background: #cbd5e1;
    border-radius: 8px;
    position: relative;
    overflow: hidden;
    transition: all 0.5s ease;
    border: 3px solid transparent;
}

.rk-slab-crack {
    position: absolute;
    top: 0; bottom: 0; left: 50%;
    width: 4px;
    background: var(--rk-chem-red);
    transform: translateX(-50%) rotate(15deg);
    opacity: 1;
    transition: opacity 0.3s;
}

.rk-slab-bubbles {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background-image: radial-gradient(#94a3b8 15%, transparent 16%), radial-gradient(#94a3b8 15%, transparent 16%);
    background-size: 15px 15px;
    background-position: 0 0, 7.5px 7.5px;
    opacity: 1;
    transition: opacity 0.5s;
}

/* Content Breakdown */
.rk-chem-content {
    padding: 40px 50px;
}

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

.rk-chem-content p, .rk-chem-content li {
    font-size: 16px;
    color: var(--rk-chem-gray);
    line-height: 1.7;
    margin: 0 0 15px 0;
}

.rk-chem-content ul {
    margin: 0 0 25px 0;
    padding-left: 20px;
}

.rk-chem-content a {
    color: var(--rk-chem-blue);
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Tags */
.rk-chem-tags {
    padding: 0 50px 30px;
    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;
}

/* CTA */
.rk-chem-cta {
    background: var(--rk-chem-dark);
    padding: 45px 50px;
    text-align: center;
    position: relative;
}

.rk-chem-cta::after {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; height: 4px;
    background: linear-gradient(90deg, var(--rk-chem-blue), var(--rk-chem-accent));
}

.rk-chem-cta h4 {
    font-size: 26px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 15px 0;
}

.rk-chem-cta p {
    color: #94a3b8;
    font-size: 16px;
    max-width: 650px;
    margin: 0 auto 30px auto;
    line-height: 1.6;
}

.rk-btn-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: #ffffff;
    color: var(--rk-chem-dark);
    font-size: 18px;
    font-weight: 900;
    padding: 20px 40px;
    border-radius: 14px;
    text-decoration: none;
    transition: all 0.3s ease;
}

.rk-btn-cta:hover {
    transform: translateY(-5px);
    background: var(--rk-chem-blue);
    color: #ffffff;
    box-shadow: 0 15px 30px -5px rgba(2, 132, 199, 0.4);
}

@media (max-width: 768px) {
    .rk-chem-header, .rk-chem-dashboard, .rk-chem-content, .rk-chem-tags, .rk-chem-cta { padding: 30px 20px; }
    .rk-chem-controls { grid-template-columns: 1fr; gap: 15px; }
    .rk-screen-metrics { flex-direction: column; gap: 15px; }
    .rk-metric-box { border-bottom: 1px solid #e2e8f0; padding-bottom: 10px; }
    .rk-btn-cta { width: 100%; padding: 18px 20px; font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#article-chemia",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/"
    },
    "headline": "Dlaczego dylatacje i plastyfikator determinują finalną grubość betonu?",
    "description": "Zrozum mechanikę wylewki. Poznaj fizyczne konsekwencje braku taśm brzegowych i plastyfikatora, które prowadzą do spękań i wysokich oporów cieplnych.",
    "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": "2025-12-29",
    "dateModified": "2026-06-27"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#dataset-chemia",
    "name": "Parametry fizykochemiczne jastrychu grzewczego",
    "description": "Zestawienie wpływu chemii budowlanej i przerw dylatacyjnych na nośność, rozszerzalność liniową i przewodność cieplną wylewek betonowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dylatacje obwodowe w ogrzewaniu podłogowym",
      "plastyfikator do ogrzewania podłogowego",
      "opór cieplny wylewki betonowej",
      "pęknięcia wylewki na podłogówce",
      "taśma brzegowa do wylewek"
    ],
    "measurementTechnique": "Analiza współczynnika przewodzenia ciepła (lambda) oraz rozszerzalności termicznej betonu na podstawie norm technologicznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Współczynnik rozszerzalności liniowej betonu: 0,01 mm/(m·K)",
        "Lambda betonu bez plastyfikatora: 1,2 W/(m·K)",
        "Wymiary krytyczne pół dylatacyjnych: powyżej 36 m²"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#webapp-chemia",
    "name": "Symulator Wpływu Chemii i Dylatacji na Wylewkę",
    "description": "Interaktywne narzędzie pozwalające symulować zachowanie posadzki w zależności od zastosowanego plastyfikatora i taśm brzegowych.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-chem-wrapper">
    <div class="rk-chem-header">
        <h2>Dlaczego dylatacje i plastyfikator determinują finalną grubość betonu?</h2>
        <p>Beton podłogowy to nie statyczny fundament, lecz intensywnie pracująca warstwa termodynamiczna. Zobacz, jak brak podstawowej wiedzy o fizyce materiałów prowadzi do nieodwracalnych uszkodzeń jastrychu.</p>
    </div>

    <div class="rk-chem-dashboard">
        <div class="rk-chem-controls">
            <div class="rk-chem-toggle-btn" id="btnPlasticizer" onclick="rkToggleChem('plasticizer')">
                <div class="rk-chem-toggle-info">
                    <h4>Dodatek Plastyfikatora</h4>
                    <p>Zagęszcza strukturę, wypiera powietrze.</p>
                </div>
                <div class="rk-switch"><div class="rk-switch-knob"></div></div>
            </div>

            <div class="rk-chem-toggle-btn" id="btnJoints" onclick="rkToggleChem('joints')">
                <div class="rk-chem-toggle-info">
                    <h4>Taśmy i Dylatacje</h4>
                    <p>Izolacja brzegowa i nacięcia płyty.</p>
                </div>
                <div class="rk-switch"><div class="rk-switch-knob"></div></div>
            </div>
        </div>

        <div class="rk-chem-screen">
            <div class="rk-screen-metrics">
                <div class="rk-metric-box">
                    <span class="rk-metric-label">Min. Grubość</span>
                    <span class="rk-metric-value" id="valThick">7.0 cm</span>
                </div>
                <div class="rk-metric-box">
                    <span class="rk-metric-label">Przewodność (λ)</span>
                    <span class="rk-metric-value" id="valLambda">1.20 W/(m·K)</span>
                </div>
                <div class="rk-metric-box">
                    <span class="rk-metric-label">Status Konstrukcji</span>
                    <span class="rk-metric-value" id="valStatus" style="color: var(--rk-chem-red);">Ryzyko Pęknięć</span>
                </div>
            </div>
            
            <div class="rk-visual-slab" id="visualSlab">
                <div class="rk-slab-bubbles" id="animBubbles"></div>
                <div class="rk-slab-crack" id="animCrack"></div>
            </div>
        </div>
    </div>

    <div class="rk-chem-content">
        <h3>Dylatacje – bezwzględny wymóg technologiczny</h3>
        <p>Brak wykonania szczelin dylatacyjnych przy grubości <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">wylewki cementowej</a> 7 cm powoduje niekontrolowane pęknięcia płyty grzewczej już przy pierwszym uruchomieniu ogrzewania (wygrzewaniu jastrychu). Beton rozszerza się liniowo pod wpływem temperatury o około 0,01 mm/(m·K). Płyta grzewcza musi być całkowicie odcięta od konstrukcji budynku. Wymaga to:</p>
        <ul>
            <li><strong>Dylatacji obwodowych:</strong> Wykonanych z taśmy piankowej o grubości minimum 8 mm, ułożonych wzdłuż wszystkich ścian, słupów i futryn. Gwarantuje to <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">prawidłową izolację brzegową</a>.</li>
            <li><strong>Dylatacji pośrednich:</strong> Niezbędnych, gdy powierzchnia jednego pola przekracza 36 m², długość boku jest większa niż 6 m, lub stosunek boków wynosi więcej niż 1:2.</li>
        </ul>

        <h3>Plastyfikator – eliminacja hamulca termicznego</h3>
        <p>Wylewka betonowa bez plastyfikatora zawiera tysiące mikroskopijnych pęcherzyków powietrza. Powietrze to doskonały izolator (λ = 0,025 W/(m·K)). Taki porowaty jastrych podnosi <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">łączny opór cieplny posadzki</a> i działa jak hamulec termiczny.</p>
        <p>Dodanie dedykowanej chemii (plastyfikatora) eliminuje puste przestrzenie, szczelnie oblewa rury grzewcze i podnosi współczynnik przewodzenia ciepła z 1,2 do 1,45 W/(m·K). Zastosowanie profesjonalnego plastyfikatora pozwala inżynierowi bezpiecznie zmniejszyć całkowitą grubość wylewki do 6,0 cm bez utraty jej nośności, dzięki drastycznemu upłynnieniu mieszanki.</p>
    </div>
</div>

<script>
    var isPlasticizerOn = false;
    var isJointsOn = false;

    function rkToggleChem(type) {
        if (type === 'plasticizer') {
            var btnPlast = document.getElementById('btnPlasticizer');
            if (isPlasticizerOn === false) {
                btnPlast.classList.add('is-active');
                isPlasticizerOn = true;
            } else {
                btnPlast.classList.remove('is-active');
                isPlasticizerOn = false;
            }
        }

        if (type === 'joints') {
            var btnJoints = document.getElementById('btnJoints');
            if (isJointsOn === false) {
                btnJoints.classList.add('is-active');
                isJointsOn = true;
            } else {
                btnJoints.classList.remove('is-active');
                isJointsOn = false;
            }
        }

        rkProcessPhysics();
    }

    function rkProcessPhysics() {
        var vThick = document.getElementById('valThick');
        var vLambda = document.getElementById('valLambda');
        var vStatus = document.getElementById('valStatus');
        
        var vSlab = document.getElementById('visualSlab');
        var vBubbles = document.getElementById('animBubbles');
        var vCrack = document.getElementById('animCrack');

        // Bezpieczna logika bez &&
        if (isPlasticizerOn === false) {
            if (isJointsOn === false) {
                // Stan początkowy: Brak chemii, brak dylatacji
                vThick.innerText = "7.0 cm";
                vLambda.innerText = "1.20 W/(m·K)";
                vStatus.innerText = "Ryzyko Pęknięć";
                vStatus.style.color = "var(--rk-chem-red)";
                
                vSlab.style.background = "#cbd5e1";
                vBubbles.style.opacity = "1";
                vCrack.style.opacity = "1";
            } else {
                // Tylko dylatacje
                vThick.innerText = "7.0 cm";
                vLambda.innerText = "1.20 W/(m·K)";
                vStatus.innerText = "Słabe Przewodzenie";
                vStatus.style.color = "var(--rk-chem-accent)";
                
                vSlab.style.background = "#cbd5e1";
                vBubbles.style.opacity = "1";
                vCrack.style.opacity = "0";
            }
        } else {
            if (isJointsOn === false) {
                // Tylko chemia, bez dylatacji
                vThick.innerText = "6.0 cm";
                vLambda.innerText = "1.45 W/(m·K)";
                vStatus.innerText = "Naprężenia Płyty!";
                vStatus.style.color = "var(--rk-chem-red)";
                
                vSlab.style.background = "#94a3b8"; // Ciemniejszy, gładszy beton
                vBubbles.style.opacity = "0";
                vCrack.style.opacity = "1"; // Ciężkie pęknięcia przez brak miejsca na rozszerzanie
            } else {
                // Pełna optymalizacja: chemia + dylatacje
                vThick.innerText = "6.0 cm";
                vLambda.innerText = "1.45 W/(m·K)";
                vStatus.innerText = "Wzorcowa Wylewka";
                vStatus.style.color = "var(--rk-chem-green)";
                
                vSlab.style.background = "#94a3b8";
                vSlab.style.border = "3px solid var(--rk-chem-green)";
                vBubbles.style.opacity = "0";
                vCrack.style.opacity = "0";
            }
        }

        // Reset ramki, jeśli nie jest to stan idealny
        if (isPlasticizerOn === false) {
            vSlab.style.border = "3px solid transparent";
        } else {
            if (isJointsOn === false) {
                vSlab.style.border = "3px solid transparent";
            }
        }
    }
</script>



<style>
:root {
    --rk-heat-dark: #0f172a;
    --rk-heat-panel: #1e293b;
    --rk-heat-blue: #0284c7;
    --rk-heat-blue-light: #e0f2fe;
    --rk-heat-orange: #f97316;
    --rk-heat-orange-light: #ffedd5;
    --rk-heat-red: #ef4444;
    --rk-heat-green: #10b981;
    --rk-heat-gray: #64748b;
    --rk-heat-bg: #ffffff;
    --rk-heat-border: #e2e8f0;
}

.rk-heat-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    background: var(--rk-heat-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(249, 115, 22, 0.15);
    border: 1px solid var(--rk-heat-border);
    overflow: hidden;
}

/* Header Section */
.rk-heat-header {
    background: linear-gradient(135deg, var(--rk-heat-dark) 0%, var(--rk-heat-panel) 100%);
    padding: 40px 50px;
    color: #ffffff;
    text-align: center;
    position: relative;
    overflow: hidden;
}

.rk-heat-header::before {
    content: '';
    position: absolute;
    top: -50px;
    right: -50px;
    width: 200px;
    height: 200px;
    background: var(--rk-heat-orange);
    filter: blur(80px);
    opacity: 0.2;
}

.rk-heat-header h2 {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
    position: relative;
    z-index: 1;
}

.rk-heat-header p {
    color: #cbd5e1;
    font-size: 16px;
    max-width: 700px;
    margin: 0 auto;
    line-height: 1.6;
    position: relative;
    z-index: 1;
}

/* App Interface */
.rk-heat-app {
    display: grid;
    grid-template-columns: 1fr 380px;
    background: #f8fafc;
}

/* Controls */
.rk-heat-controls {
    padding: 40px 50px;
    border-right: 1px solid var(--rk-heat-border);
    background: #ffffff;
}

.rk-heat-group {
    margin-bottom: 30px;
}
.rk-heat-group:last-child {
    margin-bottom: 0;
}

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

.rk-heat-badge {
    background: var(--rk-heat-orange-light);
    color: var(--rk-heat-orange);
    padding: 4px 12px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 700;
}

/* Slider */
.rk-heat-slider {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    background: var(--rk-heat-border);
    border-radius: 4px;
    outline: none;
}

.rk-heat-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--rk-heat-orange);
    cursor: pointer;
    box-shadow: 0 4px 10px rgba(249, 115, 22, 0.4);
    transition: transform 0.1s;
}

.rk-heat-slider::-webkit-slider-thumb:hover {
    transform: scale(1.1);
}

/* Buttons */
.rk-heat-btn-grid {
    display: grid;
    gap: 10px;
}

.rk-grid-2 { grid-template-columns: 1fr 1fr; }
.rk-grid-4 { grid-template-columns: repeat(4, 1fr); }

.rk-hbtn {
    padding: 14px 10px;
    background: #ffffff;
    border: 2px solid var(--rk-heat-border);
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-heat-gray);
    cursor: pointer;
    transition: all 0.2s;
    text-align: center;
}

.rk-hbtn:hover {
    border-color: var(--rk-heat-orange);
    color: var(--rk-heat-orange);
}

.rk-hbtn.is-active {
    background: var(--rk-heat-orange);
    border-color: var(--rk-heat-orange);
    color: #ffffff;
    box-shadow: 0 4px 15px rgba(249, 115, 22, 0.3);
}

/* Display / Results */
.rk-heat-display {
    padding: 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    background: #ffffff;
}

.rk-heat-result-card {
    text-align: center;
    padding: 30px;
    border-radius: 20px;
    background: var(--rk-heat-blue-light);
    border: 2px solid #bae6fd;
    transition: all 0.3s ease;
}

.rk-heat-result-title {
    font-size: 14px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-heat-blue);
    margin-bottom: 15px;
    letter-spacing: 0.5px;
}

.rk-heat-time {
    font-size: 54px;
    font-weight: 900;
    color: var(--rk-heat-dark);
    line-height: 1;
    margin-bottom: 10px;
    font-variant-numeric: tabular-nums;
}

.rk-heat-unit {
    font-size: 18px;
    color: var(--rk-heat-gray);
    font-weight: 700;
}

.rk-heat-status {
    margin-top: 20px;
    display: inline-block;
    padding: 8px 16px;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 800;
}

/* Status Colors */
.status-fast { background: var(--rk-heat-green); color: #ffffff; }
.status-optimal { background: var(--rk-heat-blue); color: #ffffff; }
.status-slow { background: var(--rk-heat-orange); color: #ffffff; }
.status-critical { background: var(--rk-heat-red); color: #ffffff; }

/* Explanation Section */
.rk-heat-info {
    padding: 40px 50px;
    border-top: 1px solid var(--rk-heat-border);
}

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

.rk-heat-info p {
    font-size: 16px;
    color: #475569;
    line-height: 1.7;
    margin: 0 0 15px 0;
}

.rk-heat-info a {
    color: var(--rk-heat-blue);
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-heat-blue);
}

.rk-heat-info a:hover {
    border-bottom-style: solid;
}

@media (max-width: 768px) {
    .rk-heat-app { grid-template-columns: 1fr; }
    .rk-heat-controls { border-right: none; border-bottom: 1px solid var(--rk-heat-border); }
    .rk-heat-header, .rk-heat-controls, .rk-heat-display, .rk-heat-info { padding: 30px 20px; }
    .rk-grid-4 { grid-template-columns: 1fr 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#article-nagrzewanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/"
    },
    "headline": "Czas nagrzewania wylewki podłogowej a rozstaw rur",
    "description": "Zrozum zjawisko bezwładności cieplnej. Interaktywny symulator pozwalający obliczyć czas nagrzewania w zależności od materiału, grubości i rozstawu rur grzewczych.",
    "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-27",
    "dateModified": "2026-06-27"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#dataset-nagrzewanie",
    "name": "Korelacja bezwładności cieplnej podłogówki z parametrami jastrychu",
    "description": "Baza danych określająca czas reakcji (nagrzewania) systemu podłogowego w oparciu o zmienne: gęstość ułożenia pętli, rodzaj zaprawy i grubość otuliny.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "czas nagrzewania wylewki betonowej",
      "wpływ rozstawu rur na czas nagrzewania",
      "wylewka anhydrytowa a czas reakcji",
      "bezwładność cieplna podłogówki",
      "grubość jastrychu a nagrzewanie"
    ],
    "measurementTechnique": "Empiryczne algorytmy inżynierskie uwzględniające przenikanie ciepła przez masy akumulacyjne przy stałej temperaturze zasilania z pompy ciepła.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wpływ rozstawu rur (5-20 cm) na dynamikę grzania",
        "Krzywa nagrzewania dla betonu vs wylewki anhydrytowej",
        "Identyfikacja stanów krytycznych (np. 9 cm jastrychu przy rozstawie co 20 cm)"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#webapp-nagrzewanie",
    "name": "Symulator Czasu Nagrzewania Posadzki",
    "description": "Interaktywny widget obliczeniowy dla inwestorów, pozwalający prognozować dynamikę instalacji grzewczej i unikać błędów projektowych wydłużających czas reakcji.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-heat-wrapper">
    <div class="rk-heat-header">
        <h2>Czas nagrzewania wylewki podłogowej</h2>
        <p>Bezwładność cieplna to klucz do komfortu. Zbyt szybka reakcja oznacza wychładzanie, zbyt wolna – brak kontroli nad temperaturą i duszne noce. Sprawdź, jak parametry Twojej posadzki wpłyną na czas reakcji systemu (do 26°C).</p>
    </div>

    <div class="rk-heat-app">
        <div class="rk-heat-controls">
            
            <div class="rk-heat-group">
                <div class="rk-heat-label">
                    <span>Grubość jastrychu</span>
                    <span class="rk-heat-badge" id="rkHeatLblThick">6.5 cm</span>
                </div>
                <input type="range" class="rk-heat-slider" id="rkHeatInpThick" min="4" max="10" step="0.5" value="6.5" oninput="rkRunHeatCalc()">
            </div>

            <div class="rk-heat-group">
                <div class="rk-heat-label">
                    <span>Rodzaj wylewki</span>
                </div>
                <div class="rk-heat-btn-grid rk-grid-2">
                    <button class="rk-hbtn is-active" id="rkHeatBtnMat1" onclick="rkSetHeatMat('beton', this)">Betonowa</button>
                    <button class="rk-hbtn" id="rkHeatBtnMat2" onclick="rkSetHeatMat('anhydryt', this)">Anhydrytowa</button>
                </div>
            </div>

            <div class="rk-heat-group">
                <div class="rk-heat-label">
                    <span>Rozstaw rur (gęstość)</span>
                </div>
                <div class="rk-heat-btn-grid rk-grid-4">
                    <button class="rk-hbtn" id="rkHeatBtnSpc1" onclick="rkSetHeatSpc(5, this)">5 cm</button>
                    <button class="rk-hbtn" id="rkHeatBtnSpc2" onclick="rkSetHeatSpc(10, this)">10 cm</button>
                    <button class="rk-hbtn is-active" id="rkHeatBtnSpc3" onclick="rkSetHeatSpc(15, this)">15 cm</button>
                    <button class="rk-hbtn" id="rkHeatBtnSpc4" onclick="rkSetHeatSpc(20, this)">20 cm</button>
                </div>
            </div>

        </div>

        <div class="rk-heat-display">
            <div class="rk-heat-result-card" id="rkHeatResCard">
                <div class="rk-heat-result-title">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" style="vertical-align: middle; margin-right: 5px;"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                    Szacowany Czas Reakcji
                </div>
                <div class="rk-heat-time" id="rkHeatResTime">4.0</div>
                <div class="rk-heat-unit">godziny</div>
                <div class="rk-heat-status status-optimal" id="rkHeatResStatus">Stabilny komfort</div>
            </div>
        </div>
    </div>

    <div class="rk-heat-info">
        <h3>Skąd biorą się te różnice?</h3>
        <p>Instalacja z wylewką to nic innego jak ogromny akumulator cieplny. To, jak szybko odda on energię do pomieszczenia, zależy od gęstości siatki grzewczej i masy, przez którą ta energia musi się przebić.</p>
        <p>Gdy projektant ustala <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">rozstaw rur przy pompie ciepła</a>, musi zbilansować opory hydrauliczne z bezwładnością. Rury co 5 cm w łazienkach pozwalają błyskawicznie wygrzać płytki, podczas gdy rozstaw co 15 cm w salonie zapewnia powolne, przyjemne i długotrwałe oddawanie ciepła. Zastosowanie cienkiego anhydrytu skraca ten czas nawet o 30%, co czyni go idealnym do nowoczesnych systemów sterowania strefowego, ale jednocześnie pozbawia dom darmowego magazynu energii w posadzce.</p>
        <p>Decyzja o grubości i zagęszczeniu rur nigdy nie powinna być dziełem przypadku. Wymaga oparcia o rzetelne <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">obliczenia obciążenia cieplnego (OZC)</a>.</p>
    </div>
</div>

<script>
    // Zmienne stanu (z prefiksem, aby unikać globalnych kolizji)
    var rkHeatCurrentMat = 'beton';
    var rkHeatCurrentSpacing = 15;

    function rkSetHeatMat(matType, btnObj) {
        rkHeatCurrentMat = matType;
        
        var btns = document.querySelectorAll('#rkHeatBtnMat1, #rkHeatBtnMat2');
        for(var i=0; i<btns.length; i++) {
            btns[i].classList.remove('is-active');
        }
        btnObj.classList.add('is-active');
        
        rkRunHeatCalc();
    }

    function rkSetHeatSpc(spcVal, btnObj) {
        rkHeatCurrentSpacing = spcVal;
        
        var btns = document.querySelectorAll('#rkHeatBtnSpc1, #rkHeatBtnSpc2, #rkHeatBtnSpc3, #rkHeatBtnSpc4');
        for(var i=0; i<btns.length; i++) {
            btns[i].classList.remove('is-active');
        }
        btnObj.classList.add('is-active');
        
        rkRunHeatCalc();
    }

    function rkRunHeatCalc() {
        var thickInput = document.getElementById('rkHeatInpThick');
        if(!thickInput) return; // Zabezpieczenie przed błędem, gdyby elementu nie było

        var thickCm = parseFloat(thickInput.value);
        document.getElementById('rkHeatLblThick').innerText = thickCm.toFixed(1) + " cm";

        // Obliczenia heurystyczne inżynierskie
        var baseTime = 4.0; 
        var thickDiff = thickCm - 7.0;
        var thickMult = 1.0;
        
        if (thickDiff > 0) {
            thickMult = 1.0 + (thickDiff * 0.35);
        } else {
            thickMult = 1.0 + (thickDiff * 0.25);
        }

        var spcMult = 1.0;
        if (rkHeatCurrentSpacing === 5) { spcMult = 0.5; }
        if (rkHeatCurrentSpacing === 10) { spcMult = 0.75; }
        if (rkHeatCurrentSpacing === 15) { spcMult = 1.0; }
        if (rkHeatCurrentSpacing === 20) { spcMult = 1.4; }

        var matMult = 1.0; 
        if (rkHeatCurrentMat === 'anhydryt') {
            matMult = 0.65; 
        }

        var finalTime = baseTime * thickMult * spcMult * matMult;
        
        if (finalTime < 0.5) {
            finalTime = 0.5;
        }
        
        document.getElementById('rkHeatResTime').innerText = finalTime.toFixed(1);

        var resStatus = document.getElementById('rkHeatResStatus');
        var resCard = document.getElementById('rkHeatResCard');

        if (finalTime <= 2.0) {
            resStatus.innerText = "Błyskawiczna reakcja";
            resStatus.className = "rk-heat-status status-fast";
            resCard.style.borderColor = "var(--rk-heat-green)";
            resCard.style.background = "#ecfdf5"; 
        } else {
            if (finalTime <= 5.0) {
                resStatus.innerText = "Stabilny komfort";
                resStatus.className = "rk-heat-status status-optimal";
                resCard.style.borderColor = "#bae6fd";
                resCard.style.background = "var(--rk-heat-blue-light)";
            } else {
                if (finalTime <= 8.0) {
                    resStatus.innerText = "Duża bezwładność";
                    resStatus.className = "rk-heat-status status-slow";
                    resCard.style.borderColor = "#fdba74";
                    resCard.style.background = "var(--rk-heat-orange-light)";
                } else {
                    resStatus.innerText = "System ospały (Krytycznie!)";
                    resStatus.className = "rk-heat-status status-critical";
                    resCard.style.borderColor = "var(--rk-heat-red)";
                    resCard.style.background = "#fef2f2"; 
                }
            }
        }
    }

    // Bezpieczne ładowanie - omijanie opóźnień z wtyczek cache/defer (np. WP Rocket)
    function rkInitHeatApp() {
        rkRunHeatCalc();
    }

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', rkInitHeatApp);
    } else {
        // Jeśli DOM jest już załadowany (bo wtyczka cache opóźniła wykonanie JS)
        rkInitHeatApp();
    }
</script>



<style>
:root {
    --rk-proj-dark: #0f172a;
    --rk-proj-blue: #0284c7;
    --rk-proj-blue-light: #e0f2fe;
    --rk-proj-green: #10b981;
    --rk-proj-red: #ef4444;
    --rk-proj-gray: #64748b;
    --rk-proj-border: #cbd5e1;
    --rk-proj-bg: #ffffff;
    --rk-proj-accent: #f59e0b;
}

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

/* Sekcja Nagłówkowa */
.rk-proj-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, #1e293b 0%, var(--rk-proj-dark) 100%);
    color: #ffffff;
    text-align: center;
    position: relative;
}

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

.rk-proj-subtitle {
    color: #94a3b8;
    font-size: 16px;
    line-height: 1.6;
    max-width: 700px;
    margin: 0 auto;
}

.rk-proj-subtitle a {
    color: #38bdf8;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Interfejs Symulatora */
.rk-proj-simulator {
    padding: 40px 50px;
    background: #f8fafc;
    border-bottom: 1px solid var(--rk-proj-border);
}

.rk-proj-controls {
    display: flex;
    justify-content: center;
    gap: 15px;
    margin-bottom: 40px;
    background: #ffffff;
    padding: 10px;
    border-radius: 20px;
    border: 1px solid var(--rk-proj-border);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);
}

.rk-proj-btn {
    flex: 1;
    padding: 15px 20px;
    border: 2px solid transparent;
    background: #f1f5f9;
    border-radius: 12px;
    font-weight: 800;
    font-size: 15px;
    color: var(--rk-proj-gray);
    cursor: pointer;
    transition: all 0.3s ease;
    text-align: center;
}

.rk-proj-btn:hover {
    background: var(--rk-proj-blue-light);
    color: var(--rk-proj-blue);
}

.rk-proj-btn.is-active {
    background: var(--rk-proj-blue);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.4);
}

/* Siatka Wyników (Cards) */
.rk-proj-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 25px;
}

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

.rk-proj-card:hover {
    transform: translateY(-3px);
    border-color: var(--rk-proj-blue);
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05);
}

.rk-proj-card-icon {
    width: 44px;
    height: 44px;
    background: var(--rk-proj-blue-light);
    color: var(--rk-proj-blue);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 15px;
}

.rk-proj-card h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-proj-dark);
    margin: 0 0 10px 0;
}

.rk-proj-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-proj-blue);
    margin: 0 0 10px 0;
    min-height: 28px;
}

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

.rk-proj-card p a {
    color: var(--rk-proj-blue);
    font-weight: 600;
    text-decoration: none;
}

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

.rk-mat-tag {
    background: #f1f5f9;
    color: #475569;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 700;
    border: 1px solid #e2e8f0;
}

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

.rk-proj-cta-box {
    background: radial-gradient(circle at center, #0369a1 0%, var(--rk-proj-dark) 100%);
    border-radius: 20px;
    padding: 40px 30px;
    color: #ffffff;
    box-shadow: 0 20px 40px -10px rgba(2, 132, 199, 0.3);
    position: relative;
    overflow: hidden;
}

.rk-proj-cta-box h4 {
    font-size: 24px;
    font-weight: 900;
    margin: 0 0 15px 0;
}

.rk-proj-cta-box p {
    font-size: 16px;
    color: #bae6fd;
    margin: 0 auto 30px auto;
    max-width: 600px;
    line-height: 1.6;
}

.rk-btn-massive {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-proj-accent);
    color: var(--rk-proj-dark);
    font-size: 18px;
    font-weight: 900;
    padding: 20px 40px;
    border-radius: 14px;
    text-decoration: none;
    text-transform: uppercase;
    box-shadow: 0 10px 25px -5px rgba(245, 158, 11, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-btn-massive:hover {
    transform: translateY(-5px) scale(1.02);
    background: #fbbf24;
    box-shadow: 0 20px 35px -5px rgba(245, 158, 11, 0.6);
}

@media (max-width: 768px) {
    .rk-proj-header, .rk-proj-simulator, .rk-proj-tags, .rk-proj-cta { padding: 30px 20px; }
    .rk-proj-controls { flex-direction: column; border-radius: 16px; background: transparent; border: none; box-shadow: none; padding: 0;}
    .rk-proj-btn { width: 100%; margin-bottom: 10px; }
    .rk-proj-grid { grid-template-columns: 1fr; }
    .rk-btn-massive { width: 100%; padding: 18px 20px; font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#article-projekt",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/"
    },
    "headline": "Jak grubość wylewki wpływa na profesjonalny projekt ogrzewania podłogowego?",
    "description": "Analiza inżynieryjna: Zobacz, jak dobór grubości jastrychu determinuje wyniki obliczeń OZC, parametry pompy obiegowej i gęstość izolacji EPS.",
    "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": "2025-12-29",
    "dateModified": "2026-06-27"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#dataset-projekt",
    "name": "Parametry projektowe OZC i hydrauliki ogrzewania podłogowego",
    "description": "Zestawienie zmiennych projektowych ukazujących korelację między masą wylewki a obciążeniem cieplnym budynku, hydrauliką i wymaganiami nośnymi styropianu.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego z obliczeniami OZC",
      "dobór pompy obiegowej do podłogówki",
      "jaki styropian pod ogrzewanie podłogowe",
      "maksymalna długość pętli ogrzewania podłogowego",
      "współpraca rekuperacji z podłogówką"
    ],
    "measurementTechnique": "Algorytmy obliczeniowe oparte na normie PN-EN 12831 (OZC) oraz PN-EN 1264 (systemy płaszczyznowe).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zależność rozstawu rur od oporu cieplnego betonu",
        "Kryteria oporów hydraulicznych pompy obiegowej (kPa)",
        "Wymagana wytrzymałość izolacji (EPS 100 vs XPS)"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#webapp-projekt",
    "name": "Symulator Wpływu Wylewki na Projekt HVAC",
    "description": "Interaktywne narzędzie inżynierskie demonstrujące efekt domina: jak zmiana warstwy jastrychu wymusza przeliczenie hydrauliki, pętli i parametrów termoizolacji.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-proj-container">
    <div class="rk-proj-header">
        <h2>Jak wylewka wywraca projekt do góry nogami?</h2>
        <p class="rk-proj-subtitle">
            Grubość betonu w profesjonalnym oprogramowaniu (np. Audytor OZC) to zmienna krytyczna. Zobacz, jak modyfikacja warstwy posadzki definiuje <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">obciążenie cieplne budynku (OZC)</a> i zmusza inżyniera do zmiany całego układu hydraulicznego.
        </p>
    </div>

    <div class="rk-proj-simulator">
        <div class="rk-proj-controls">
            <button class="rk-proj-btn" onclick="rkUpdateSim(5)" id="rkBtn5">Cienka (5.5 cm)</button>
            <button class="rk-proj-btn is-active" onclick="rkUpdateSim(7)" id="rkBtn7">Normatywna (7.0 cm)</button>
            <button class="rk-proj-btn" onclick="rkUpdateSim(9)" id="rkBtn9">Przegrubiona (9.0 cm)</button>
        </div>

        <div class="rk-proj-grid">
            <div class="rk-proj-card">
                <div class="rk-proj-card-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 4H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z"></path><path d="M12 16v-8"></path><path d="M8 12h8"></path></svg>
                </div>
                <h3>Obwody i pętle grzewcze</h3>
                <div class="rk-proj-val" id="rkValLoops">Rozstaw co 15 cm</div>
                <p id="rkDescLoops">Optymalna praca układu. Bezpieczna <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">długość pętli do 100 m</a>. Ciepło równomiernie przenika przez warstwę akumulacyjną.</p>
            </div>

            <div class="rk-proj-card">
                <div class="rk-proj-card-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4"></path><path d="M12 8h.01"></path></svg>
                </div>
                <h3>Hydraulika i Pompa</h3>
                <div class="rk-proj-val" id="rkValPump">Standard (do 20 kPa)</div>
                <p id="rkDescPump"><a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">Dobór pompy obiegowej</a> jest prosty. Straty ciśnienia na rozdzielaczu są w normie, urządzenie pracuje energooszczędnie na niskim biegu.</p>
            </div>

            <div class="rk-proj-card">
                <div class="rk-proj-card-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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>Izolacja i Obciążenie</h3>
                <div class="rk-proj-val" id="rkValEps">Styropian EPS 100</div>
                <p id="rkDescEps">Waga betonu wynosi ok. 150 kg/m². Aby uniknąć osiadania płyty, inżynier projektuje twardy <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">styropian EPS 100</a>.</p>
            </div>

            <div class="rk-proj-card">
                <div class="rk-proj-card-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line></svg>
                </div>
                <h3>Współpraca z Rekuperacją</h3>
                <div class="rk-proj-val" id="rkValRec">Stabilna cyrkulacja</div>
                <p id="rkDescRec"><a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/">Rekuperacja współpracuje z podłogówką</a>. Czas nagrzewania jest zoptymalizowany, co zapobiega przegrzewaniu wentylowanych stref.</p>
            </div>
        </div>
    </div>

    <div class="rk-proj-tags">
        <span class="rk-mat-tag"># projekt ogrzewania podłogowego z obliczeniami OZC</span>
        <span class="rk-mat-tag"># dobór pompy obiegowej do podłogówki</span>
        <span class="rk-mat-tag"># maksymalna długość pętli ogrzewania podłogowego</span>
        <span class="rk-mat-tag"># jaki styropian pod ogrzewanie podłogowe</span>
        <span class="rk-mat-tag"># opory hydrauliczne rozdzielacza</span>
        <span class="rk-mat-tag"># współpraca rekuperacji z podłogówką</span>
        <span class="rk-mat-tag"># rozstaw rur ogrzewania podłogowego projekt</span>
        <span class="rk-mat-tag"># audytor ozc instalacje płaszczyznowe</span>
    </div>

    <div class="rk-proj-cta">
        <div class="rk-proj-cta-box">
            <h4>Nie zgaduj na budowie. Zleć inżynierskie obliczenia.</h4>
            <p>Błędy wykonawcze mszczą się przez dekady ukryte pod kafelkami. Profesjonalny projekt instalacji wyliczy każdą pętlę, dobierze pompę co do watta i wyeliminuje strefy niedogrzane. Otrzymasz dokumentację, za którą ręczę swoim nazwiskiem.</p>
            <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-massive">
                ZAMÓW KOMPLEKSOWY PROJEKT
                <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 5l7 7-7 7"></path></svg>
            </a>
        </div>
    </div>
</div>

<script>
    function rkUpdateSim(thickness) {
        // Reset button styles
        document.getElementById('rkBtn5').classList.remove('is-active');
        document.getElementById('rkBtn7').classList.remove('is-active');
        document.getElementById('rkBtn9').classList.remove('is-active');

        // References to DOM
        var valLoops = document.getElementById('rkValLoops');
        var descLoops = document.getElementById('rkDescLoops');
        var valPump = document.getElementById('rkValPump');
        var descPump = document.getElementById('rkDescPump');
        var valEps = document.getElementById('rkValEps');
        var descEps = document.getElementById('rkDescEps');
        var valRec = document.getElementById('rkValRec');
        var descRec = document.getElementById('rkDescRec');

        // Logic without && operator for absolute safety
        if (thickness === 5) {
            document.getElementById('rkBtn5').classList.add('is-active');
            
            valLoops.innerText = "Rozstaw 15-20 cm";
            descLoops.innerHTML = "Mały opór cieplny ułatwia oddawanie energii. Długość pętli bezpiecznie skrócona do 80 m, zmniejszając zużycie rury PEX.";
            
            valPump.innerText = "Niskie opory (<15 kPa)";
            descPump.innerHTML = "Układ stawia minimalny opór. Możliwość zastosowania słabszej, wysoce <a href='https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/'>energooszczędnej pompy obiegowej</a>.";
            
            valEps.innerText = "Styropian EPS 80/100";
            descEps.innerHTML = "Znacznie niższa masa betonu (ok. 110 kg/m²). Mniejsze obciążenie stropu i mniejsze ryzyko ugięć izolacji.";
            
            valRec.innerText = "Szybka reakcja";
            descRec.innerHTML = "Układ reaguje błyskawicznie. <a href='https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/'>Rekuperacja</a> bez problemu bilansuje świeże powietrze z zyskami słońca.";
        }

        if (thickness === 7) {
            document.getElementById('rkBtn7').classList.add('is-active');
            
            valLoops.innerText = "Rozstaw co 15 cm";
            descLoops.innerHTML = "Optymalna praca układu. Bezpieczna <a href='https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/'>długość pętli do 100 m</a>. Ciepło równomiernie przenika przez warstwę akumulacyjną.";
            
            valPump.innerText = "Standard (do 20 kPa)";
            descPump.innerHTML = "<a href='https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/'>Dobór pompy obiegowej</a> jest prosty. Straty ciśnienia na rozdzielaczu są w normie, urządzenie pracuje wydajnie.";
            
            valEps.innerText = "Styropian EPS 100";
            descEps.innerHTML = "Waga betonu wynosi ok. 150 kg/m². Aby uniknąć osiadania płyty, inżynier projektuje twardy <a href='https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/'>styropian EPS 100</a>.";
            
            valRec.innerText = "Stabilna cyrkulacja";
            descRec.innerHTML = "<a href='https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/'>Rekuperacja współpracuje z podłogówką</a>. Czas nagrzewania jest zoptymalizowany, co zapobiega przegrzewaniu stref.";
        }

        if (thickness === 9) {
            document.getElementById('rkBtn9').classList.add('is-active');
            
            valLoops.innerText = "Gęsty rozstaw (10 cm)";
            descLoops.innerHTML = "Gruby beton stawia potężny opór cieplny. Rury muszą być ułożone bardzo gęsto. Ryzyko przekroczenia <a href='https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/'>120 m na pętli</a>.";
            
            valPump.innerText = "Przeciążenie (>30 kPa)";
            descPump.innerHTML = "Wiele długich pętli drastycznie winduje opory. Wymagana jest przewymiarowana <a href='https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/'>pompa o dużej wysokości podnoszenia</a>.";
            
            valEps.innerText = "Twardy XPS / EPS 150";
            descEps.innerHTML = "Krytyczne obciążenie konstrukcji (ponad 200 kg/m²). Standardowy <a href='https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/'>styropian</a> ulegnie zgnieceniu, niszcząc dylatacje.";
            
            valRec.innerText = "Ospały system";
            descRec.innerHTML = "Zanim ciepło przebije się przez 9 cm, słońce zdąży nagrzać salon. <a href='https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/'>Rekuperacja</a> nie poradzi sobie z przegrzewaniem.";
        }
    }
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-panel: #1e293b;
    --rk-case-blue: #0284c7;
    --rk-case-blue-light: #f0f9ff;
    --rk-case-accent: #059669; /* Emerald for success/solution */
    --rk-case-accent-light: #dcfce7;
    --rk-case-warn: #eab308;
    --rk-case-warn-light: #fef9c3;
    --rk-case-gray: #64748b;
    --rk-case-bg: #ffffff;
    --rk-case-border: #e2e8f0;
}

.rk-case-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    background: var(--rk-case-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(5, 150, 105, 0.1);
    border: 1px solid var(--rk-case-border);
    overflow: hidden;
}

/* Header */
.rk-case-header {
    background: linear-gradient(135deg, var(--rk-case-dark) 0%, var(--rk-case-panel) 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    overflow: hidden;
}

.rk-case-header::after {
    content: '';
    position: absolute;
    right: -20px;
    bottom: -40px;
    width: 150px;
    height: 150px;
    background: var(--rk-case-blue);
    filter: blur(70px);
    opacity: 0.3;
}

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

.rk-case-header h2 {
    font-size: 30px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
    position: relative;
    z-index: 1;
}

.rk-case-header p {
    color: #94a3b8;
    font-size: 16px;
    line-height: 1.6;
    max-width: 700px;
    margin: 0;
    position: relative;
    z-index: 1;
}

/* Interactive App area */
.rk-case-app {
    background: #f8fafc;
    border-bottom: 1px solid var(--rk-case-border);
}

.rk-case-timeline {
    display: flex;
    padding: 30px 50px;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-case-border);
    gap: 15px;
}

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

.rk-case-step-icon {
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: #f1f5f9;
    color: var(--rk-case-gray);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s;
}

.rk-case-step-title {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-case-gray);
    transition: color 0.3s;
}

.rk-case-step-btn:hover {
    border-color: var(--rk-case-blue);
}

.rk-case-step-btn.is-active {
    border-color: var(--rk-case-blue);
    background: var(--rk-case-blue-light);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.15);
}

.rk-case-step-btn.is-active .rk-case-step-icon {
    background: var(--rk-case-blue);
    color: #ffffff;
}

.rk-case-step-btn.is-active .rk-case-step-title {
    color: var(--rk-case-blue);
}

/* Display Panels */
.rk-case-panel {
    display: none;
    padding: 40px 50px;
    animation: rkFadeIn 0.4s ease forwards;
}

.rk-case-panel.is-visible {
    display: grid;
    grid-template-columns: 1fr 350px;
    gap: 40px;
    align-items: center;
}

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

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

.rk-case-text-col p {
    font-size: 16px;
    color: var(--rk-case-gray);
    line-height: 1.7;
    margin: 0 0 15px 0;
}

.rk-case-text-col strong {
    color: var(--rk-case-dark);
}

/* Data Cards in Panels */
.rk-case-data-box {
    background: #ffffff;
    border: 1px solid var(--rk-case-border);
    border-radius: 16px;
    padding: 25px;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05);
}

.rk-case-data-row {
    display: flex;
    justify-content: space-between;
    padding-bottom: 15px;
    margin-bottom: 15px;
    border-bottom: 1px dashed var(--rk-case-border);
}

.rk-case-data-row:last-child {
    border-bottom: none;
    padding-bottom: 0;
    margin-bottom: 0;
}

.rk-data-label {
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-case-gray);
    text-transform: uppercase;
}

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

.rk-data-val.status-warn { color: var(--rk-case-warn); }
.rk-data-val.status-ok { color: var(--rk-case-accent); }

@media (max-width: 768px) {
    .rk-case-header, .rk-case-timeline, .rk-case-panel { padding: 30px 20px; }
    .rk-case-timeline { flex-direction: column; gap: 10px; }
    .rk-case-step-btn { flex-direction: row; padding: 15px; text-align: left; }
    .rk-case-panel.is-visible { grid-template-columns: 1fr; gap: 25px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/"
    },
    "headline": "Case Study: Dobór wylewki dla domu 150 m² w Krakowie",
    "description": "Analiza przypadku inwestora z Krakowa. Zobacz, jak audyt OZC uchronił go przed wylaniem zbyt grubej warstwy betonu i spadkiem efektywności pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-27",
    "dateModified": "2026-06-27"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#dataset-casestudy",
    "name": "Dane projektowe i dobór wylewki - Kraków 2026",
    "description": "Zestawienie parametrów wyjściowych inwestora oraz skorygowanych wartości po wykonaniu profesjonalnego projektu ogrzewania płaszczyznowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego Kraków",
      "błędy przy wylewce podłogowej",
      "optymalizacja wylewki pod pompę ciepła",
      "audyt OZC przed wylewkami",
      "jaka wylewka na podłogówkę case study"
    ],
    "measurementTechnique": "Weryfikacja założeń wykonawcy budowlanego z rzeczywistym zapotrzebowaniem cieplnym budynku i wymaganiami źródła ciepła na podstawie Audytu OZC.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Stan początkowy: Brak projektu, 8 cm zwykłego betonu, panele.",
        "Wykryte ryzyko: Czas reakcji ponad 6 godzin, spadek COP pompy.",
        "Rozwiązanie wdrożone: Projekt OZC, 6 cm betonu z plastyfikatorem, korekta rozstawu rur pod oknami."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#webapp-casestudy",
    "name": "Interaktywny Audyt: Projekt Ogrzewania",
    "description": "Aplikacja symulująca proces decyzyjny inżyniera HVAC, pozwalająca użytkownikowi prześledzić etapy od błędnych założeń inwestora do poprawnego projektu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-case-wrapper">
    <div class="rk-case-header">
        <div class="rk-case-badge">Case Study: Kraków</div>
        <h2>Dobór wylewki dla domu z pompą ciepła</h2>
        <p>Inwestor z Krakowa (nowy dom 150 m²) zgłosił się do nas w przeddzień wejścia ekipy posadzkarskiej. Brakowało mu oficjalnego projektu podłogówki, a wykonawca zasugerował rozwiązanie, które zrujnowałoby koszty ogrzewania. Prześledź proces naszej optymalizacji.</p>
    </div>

    <div class="rk-case-app">
        
        <div class="rk-case-timeline">
            <button class="rk-case-step-btn is-active" id="rkCaseBtn1" onclick="rkSetCaseStep(1)">
                <div class="rk-case-step-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                </div>
                <div class="rk-case-step-title">Problem Inwestora</div>
            </button>

            <button class="rk-case-step-btn" id="rkCaseBtn2" onclick="rkSetCaseStep(2)">
                <div class="rk-case-step-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                </div>
                <div class="rk-case-step-title">Audyt & Obliczenia</div>
            </button>

            <button class="rk-case-step-btn" id="rkCaseBtn3" onclick="rkSetCaseStep(3)">
                <div class="rk-case-step-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="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                </div>
                <div class="rk-case-step-title">Wdrożone Rozwiązanie</div>
            </button>
        </div>

        <div class="rk-case-panel is-visible" id="rkCasePanel1">
            <div class="rk-case-text-col">
                <h3>Założenia "na oko" wykonawcy</h3>
                <p>Ekipa budowlana doradziła inwestorowi zalanie rur grubą warstwą <strong>8 cm standardowego betonu z gruszki</strong>, "aby posadzka była solidna i nie pękała". Inwestor planował ułożyć na tym panele podłogowe.</p>
                <p>Źródłem ciepła miała być niskotemperaturowa pompa ciepła powietrze-woda. Brakowało rysunków technicznych i wyliczeń oporów.</p>
            </div>
            <div class="rk-case-data-box">
                <div class="rk-case-data-row">
                    <span class="rk-data-label">Planowana Grubość</span>
                    <span class="rk-data-val status-warn">8.0 cm</span>
                </div>
                <div class="rk-case-data-row">
                    <span class="rk-data-label">Wykończenie</span>
                    <span class="rk-data-val">Panele laminowane</span>
                </div>
                <div class="rk-case-data-row">
                    <span class="rk-data-label">Rodzaj masy</span>
                    <span class="rk-data-val status-warn">Zwykły beton</span>
                </div>
            </div>
        </div>

        <div class="rk-case-panel" id="rkCasePanel2">
            <div class="rk-case-text-col">
                <h3>Symulacja awarii termicznej</h3>
                <p>Jako inżynierzy natychmiast przeliczyliśmy ten wariant. Połączyliśmy 8 cm porowatego betonu z izolacyjnością planowanych paneli.</p>
                <p>Wynik? Łączny opór cieplny przebijał normę. Pompa ciepła musiałaby tłoczyć wodę o temperaturze wyższej o 4°C, by dom się dogrzał, co drastycznie obniżyłoby współczynnik COP. Dodatkowo bezwładność tak grubej płyty uniemożliwiłaby inteligentne sterowanie strefowe.</p>
            </div>
            <div class="rk-case-data-box" style="border-color: var(--rk-case-warn); background: var(--rk-case-warn-light);">
                <div class="rk-case-data-row">
                    <span class="rk-data-label">Prognoza: Czas Reakcji</span>
                    <span class="rk-data-val status-warn">Ponad 6 godzin</span>
                </div>
                <div class="rk-case-data-row">
                    <span class="rk-data-label">Prognoza: Łączny Opór</span>
                    <span class="rk-data-val status-warn">> 0,16 m²K/W</span>
                </div>
                <div class="rk-case-data-row">
                    <span class="rk-data-label">Ryzyko</span>
                    <span class="rk-data-val status-warn">Spadek COP i rachunki w górę</span>
                </div>
            </div>
        </div>

        <div class="rk-case-panel" id="rkCasePanel3">
            <div class="rk-case-text-col">
                <h3>Projekt i optymalizacja chemiczna</h3>
                <p>Wykonaliśmy błyskawiczny audyt OZC dla budynku w Krakowie. Zmieniliśmy koncepcję posadzki, wprowadzając dedykowany <strong>plastyfikator usuwający pęcherzyki powietrza</strong> z mieszanki.</p>
                <p>To pozwoliło bezpiecznie zredukować grubość betonu do 6,0 cm (zachowując nośność). Ciepło z pompy przenika teraz do pomieszczeń błyskawicznie, mimo ułożenia paneli.</p>
            </div>
            <div class="rk-case-data-box" style="border-color: var(--rk-case-accent); background: var(--rk-case-accent-light);">
                <div class="rk-case-data-row">
                    <span class="rk-data-label">Nowa Grubość</span>
                    <span class="rk-data-val status-ok">6.0 cm</span>
                </div>
                <div class="rk-case-data-row">
                    <span class="rk-data-label">Chemia</span>
                    <span class="rk-data-val status-ok">Plastyfikator grzewczy</span>
                </div>
                <div class="rk-case-data-row">
                    <span class="rk-data-label">Czas Reakcji</span>
                    <span class="rk-data-val status-ok">Skrócony do ~3.5 h</span>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
    function rkSetCaseStep(stepNum) {
        // Reset buttons (bezpiecznie bez użycia operatora &&)
        var btns = document.querySelectorAll('.rk-case-step-btn');
        for(var i = 0; i < btns.length; i++) {
            btns[i].classList.remove('is-active');
        }
        
        var activeBtn = document.getElementById('rkCaseBtn' + stepNum);
        if (activeBtn) {
            activeBtn.classList.add('is-active');
        }

        // Hide all panels
        var panels = document.querySelectorAll('.rk-case-panel');
        for(var j = 0; j < panels.length; j++) {
            panels[j].classList.remove('is-visible');
        }
        
        // Show selected panel
        var activePanel = document.getElementById('rkCasePanel' + stepNum);
        if (activePanel) {
            activePanel.classList.add('is-visible');
        }
    }
</script>



<style>
:root {
    --rk-exp-dark: #0f172a;
    --rk-exp-blue: #0284c7;
    --rk-exp-bg: #ffffff;
    --rk-exp-border: #e2e8f0;
    --rk-exp-gray: #475569;
    --rk-exp-light: #f8fafc;
    --rk-exp-accent: #f59e0b;
}

.rk-exp-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    background: var(--rk-exp-bg);
    border-radius: 16px;
    box-shadow: 0 15px 35px -5px rgba(15, 23, 42, 0.1);
    border: 2px solid var(--rk-exp-border);
    overflow: hidden;
}

/* Header */
.rk-exp-header {
    background: var(--rk-exp-dark);
    padding: 30px 40px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-exp-blue);
}

.rk-exp-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0;
    color: #ffffff;
    letter-spacing: -0.5px;
}

/* Main Layout */
.rk-exp-layout {
    display: grid;
    grid-template-columns: 300px 1fr;
    background: var(--rk-exp-bg);
}

/* Sidebar - Author Info */
.rk-exp-sidebar {
    padding: 30px;
    background: var(--rk-exp-light);
    border-right: 1px solid var(--rk-exp-border);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.rk-exp-photo {
    width: 140px;
    height: 140px;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid #ffffff;
    box-shadow: 0 4px 10px rgba(0,0,0,0.1);
    margin-bottom: 20px;
}

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

.rk-exp-title {
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-exp-blue);
    text-transform: uppercase;
    margin: 0 0 20px 0;
    letter-spacing: 0.5px;
}

.rk-exp-socials {
    display: flex;
    gap: 15px;
}

.rk-exp-social-link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    background: #ffffff;
    border: 1px solid var(--rk-exp-border);
    border-radius: 8px;
    color: var(--rk-exp-dark);
    text-decoration: none;
}

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

/* Interactive Content Area */
.rk-exp-content {
    padding: 40px;
    display: flex;
    flex-direction: column;
}

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

.rk-exp-tab-btn {
    padding: 10px 20px;
    background: #ffffff;
    border: 2px solid var(--rk-exp-border);
    border-radius: 8px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-exp-gray);
    cursor: pointer;
}

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

.rk-exp-quote-box {
    position: relative;
    padding: 30px;
    background: #f1f5f9;
    border-radius: 12px;
    border-left: 6px solid var(--rk-exp-accent);
}

.rk-exp-quote-mark {
    position: absolute;
    top: 15px;
    left: 20px;
    font-size: 60px;
    font-family: Georgia, serif;
    color: #cbd5e1;
    line-height: 1;
}

.rk-exp-text-content {
    position: relative;
    z-index: 1;
    font-size: 18px;
    line-height: 1.6;
    color: var(--rk-exp-dark);
    font-weight: 600;
    margin: 0;
}

/* Tab Panels */
.rk-exp-panel {
    display: none;
}

.rk-exp-panel.is-visible {
    display: block;
}

@media (max-width: 768px) {
    .rk-exp-layout {
        grid-template-columns: 1fr;
    }
    .rk-exp-sidebar {
        border-right: none;
        border-bottom: 1px solid var(--rk-exp-border);
        flex-direction: row;
        text-align: left;
        align-items: center;
        gap: 20px;
        padding: 20px;
    }
    .rk-exp-photo {
        width: 80px;
        height: 80px;
        margin-bottom: 0;
    }
    .rk-exp-socials {
        margin-top: 10px;
    }
    .rk-exp-tabs {
        flex-direction: column;
    }
    .rk-exp-header, .rk-exp-content {
        padding: 25px 20px;
    }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#article-ekspert",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/"
    },
    "headline": "Zdaniem eksperta: Robert Kucharski o grubości wylewki",
    "description": "Podsumowanie inżynierskie i najważniejsze zasady wykonawcze dla jastrychów grzewczych. Autorski audyt eksperta HVAC.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "CEO, Główny Projektant HVAC",
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-27",
    "dateModified": "2026-06-27"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#dataset-ekspert",
    "name": "Złote zasady i błędy wykonawcze wylewek grzewczych",
    "description": "Baza danych dobrych praktyk instalacyjnych weryfikowana na podstawie ponad 1000 zrealizowanych audytów i projektów ogrzewania płaszczyznowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ekspert ogrzewanie podłogowe",
      "Robert Kucharski opinie wylewki",
      "najczęstsze błędy wylewka betonowa",
      "złota zasada ogrzewania podłogowego",
      "projektant instalacji HVAC"
    ],
    "measurementTechnique": "Wiedza oparta na wieloletnim doświadczeniu projektowym, audytach OZC oraz analizie uszkodzeń systemów w domach jednorodzinnych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Brak projektu zawsze podnosi koszty eksploatacji.",
        "Optymalna grubość to kompromis między wytrzymałością a dynamiką grzania.",
        "Błąd otuliny jest nienaprawialny po zalaniu betonu."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#webapp-ekspert",
    "name": "Moduł Wniosków Eksperckich HVAC",
    "description": "Interaktywny panel prezentujący bezpośrednie rekomendacje inżynierskie, pozwalający użytkownikowi na szybką nawigację między konkluzjami, błędami a zasadami wykonawczymi.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-exp-wrapper">
    <div class="rk-exp-header">
        <h2>Zdaniem eksperta: Robert Kucharski o grubości wylewki</h2>
    </div>

    <div class="rk-exp-layout">
        <div class="rk-exp-sidebar">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski Ekspert HVAC" class="rk-exp-photo">
            <div>
                <h3 class="rk-exp-name">Robert Kucharski</h3>
                <div class="rk-exp-title">CEO / HVAC</div>
                <div class="rk-exp-socials">
                    <a href="https://www.facebook.com/projektogrzewaniapl/" target="_blank" rel="noopener noreferrer" class="rk-exp-social-link" aria-label="Facebook Projekt Ogrzewania">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path></svg>
                    </a>
                    <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer" class="rk-exp-social-link" aria-label="LinkedIn Robert Kucharski">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle></svg>
                    </a>
                </div>
            </div>
        </div>

        <div class="rk-exp-content">
            <div class="rk-exp-tabs">
                <button class="rk-exp-tab-btn is-active" id="rkTabBtn1" onclick="rkSwitchTab(1)">Główny Wniosek</button>
                <button class="rk-exp-tab-btn" id="rkTabBtn2" onclick="rkSwitchTab(2)">Największy Błąd</button>
                <button class="rk-exp-tab-btn" id="rkTabBtn3" onclick="rkSwitchTab(3)">Złota Zasada</button>
            </div>

            <div class="rk-exp-quote-box">
                <div class="rk-exp-quote-mark">"</div>
                
                <div id="rkTab1" class="rk-exp-panel is-visible">
                    <p class="rk-exp-text-content">
                        Grubość wylewki to nie jest parametr, który można ustalić "na oko" w dniu wchodzenia ekipy budowlanej. Każdy centymetr betonu powyżej normy izoluje ciepło i obciąża pompę, a każdy milimetr poniżej granicy bezpieczeństwa grozi pęknięciem posadzki. Precyzja w tym aspekcie decyduje o kosztach ogrzewania przez kolejne dekady.
                    </p>
                </div>

                <div id="rkTab2" class="rk-exp-panel">
                    <p class="rk-exp-text-content" style="color: var(--rk-exp-dark);">
                        Najkosztowniejszym błędem inwestorów jest dobieranie wykończenia podłogi (np. grubej deski dębowej) już po wylaniu 8-centymetrowego betonu. Połączenie masywnego jastrychu i izolującej deski tworzy potężną blokadę termiczną, której nie przebije nawet najbardziej przewymiarowana pompa ciepła w środku zimy.
                    </p>
                </div>

                <div id="rkTab3" class="rk-exp-panel">
                    <p class="rk-exp-text-content" style="color: var(--rk-exp-dark);">
                        Jeżeli decydujesz się na grube panele lub drewno, nakazuję inżynierskie zejście z grubości wylewki do bezpiecznego minimum (6 cm) przy użyciu najwyższej jakości plastyfikatorów. Pamiętaj: system to naczynia połączone. Zanim zamówisz materiały, zleć wykonanie profesjonalnych obliczeń OZC.
                    </p>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
    function rkSwitchTab(tabId) {
        // Reset button styles (bez uzycia &&)
        var btns = document.querySelectorAll('.rk-exp-tab-btn');
        for (var i = 0; i < btns.length; i++) {
            btns[i].classList.remove('is-active');
        }
        
        // Hide all panels
        var panels = document.querySelectorAll('.rk-exp-panel');
        for (var j = 0; j < panels.length; j++) {
            panels[j].classList.remove('is-visible');
        }
        
        // Activate selected
        var activeBtn = document.getElementById('rkTabBtn' + tabId);
        var activePanel = document.getElementById('rkTab' + tabId);
        
        if (activeBtn) {
            activeBtn.classList.add('is-active');
        }
        
        if (activePanel) {
            activePanel.classList.add('is-visible');
        }
    }
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-blue: #0284c7;
    --rk-faq-blue-hover: #0369a1;
    --rk-faq-light-blue: #f0f9ff;
    --rk-faq-border: #e2e8f0;
    --rk-faq-text: #475569;
    --rk-faq-bg: #ffffff;
    --rk-faq-accent: #38bdf8;
    --rk-faq-shadow: 0 10px 30px -10px rgba(2, 132, 199, 0.1);
}

.rk-faq-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    background: transparent;
}

.rk-faq-header {
    background: linear-gradient(135deg, var(--rk-faq-dark) 0%, #1e293b 100%);
    border-radius: 20px 20px 0 0;
    padding: 35px 45px;
    color: #ffffff;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-faq-header-icon {
    width: 48px;
    height: 48px;
    background: rgba(56, 189, 248, 0.15);
    border: 1px solid rgba(56, 189, 248, 0.3);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-faq-accent);
}

.rk-faq-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0;
    letter-spacing: -0.5px;
    color: #f8fafc;
}

.rk-faq-wrapper {
    background: var(--rk-faq-bg);
    border: 1px solid var(--rk-faq-border);
    border-top: none;
    border-radius: 0 0 20px 20px;
    padding: 20px 45px 45px 45px;
    box-shadow: var(--rk-faq-shadow);
}

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

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

.rk-faq-question {
    width: 100%;
    text-align: left;
    background: none;
    border: none;
    padding: 25px 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    font-size: 18px;
    font-weight: 700;
    color: var(--rk-faq-dark);
    transition: color 0.3s;
}

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

.rk-faq-question h3 {
    margin: 0;
    font-size: 18px;
    font-weight: 700;
    line-height: 1.4;
    padding-right: 20px;
}

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

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

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

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

.rk-faq-answer-inner a {
    color: var(--rk-faq-blue);
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-faq-blue);
    transition: all 0.2s;
}

.rk-faq-answer-inner a:hover {
    color: var(--rk-faq-blue-hover);
    border-bottom-style: solid;
}

/* Responsywność dla mobile (stackowanie, odpowiednie paddingi) */
@media (max-width: 768px) {
    .rk-faq-header {
        padding: 25px 20px;
        border-radius: 16px 16px 0 0;
    }
    .rk-faq-header h2 {
        font-size: 22px;
    }
    .rk-faq-wrapper {
        padding: 10px 20px 25px 20px;
        border-radius: 0 0 16px 16px;
    }
    .rk-faq-question {
        padding: 20px 0;
    }
    .rk-faq-question h3 {
        font-size: 16px;
    }
    .rk-faq-answer-inner {
        font-size: 14px;
    }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania o grubość wylewki",
    "description": "Zbiór najważniejszych inżynierskich odpowiedzi dotyczących prawidłowej grubości, zbrojenia i wylewek pod pompy ciepła na instalacjach podłogowych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-27",
    "dateModified": "2026-06-27"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Jaka jest optymalna grubość wylewki betonowej na ogrzewanie podłogowe?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Optymalna całkowita grubość wylewki cementowej wynosi od 6,0 do 8,0 cm, co przy standardowej instalacji gwarantuje warstwę czystej otuliny betonowej nad rurą w przedziale 3,0–4,5 cm. Taki wymiar zapewnia idealny kompromis pomiędzy wytrzymałością mechaniczną posadzki a niską bezwładnością cieplną układu."
        }
      },
      {
        "@type": "Question",
        "name": "Czym grozi wylanie zbyt cienkiej warstwy betonu nad rurami grzewczymi?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Wylanie warstwy poniżej 3,0 cm nad rurą skutkuje liniowymi pęknięciami jastrychu, odspajaniem płytek oraz drastycznym obniżeniem nośności posadzki na obciążenia punktowe. Dodatkowo wywołuje to zjawisko zebry termicznej, czyli nierównomiernego rozkładu temperatur na powierzchni podłogi."
        }
      },
      {
        "@type": "Question",
        "name": "Czy pod pompy ciepła wylewka betonowa powinna być cieńsza?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, przy zasilaniu niskotemperaturowym z pompy ciepła (35°C) dąży się do minimalizacji oporu cieplnego, dlatego zaleca się wylewki o grubości 6,0–6,5 cm z obowiązkowym dodatkiem plastyfikatora. Pozwala to na maksymalne skrócenie czasu reakcji układu i podniesienie parametru COP pompy."
        }
      },
      {
        "@type": "Question",
        "name": "Jaka jest różnica w grubości między wylewką betonową a anhydrytową?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tradycyjna wylewka betonowa wymaga grubości całkowitej 6–8 cm (minimum 3 cm nad rurą), natomiast płynny jastrych anhydrytowy może mieć grubość zaledwie 3,5–5,0 cm (w tym jedynie 2 cm otuliny nad rurą). Różnica wynika z wyższej wytrzymałości na zginanie oraz lepszej przewodności cieplnej anhydrytu."
        }
      },
      {
        "@type": "Question",
        "name": "Czy można pominąć siatkę zbrojącą przy grubości wylewki wynoszącej 7 cm?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, przy całkowitej grubości 7,0 cm i zastosowaniu mikrozbrojenia z włókien polipropylenowych oraz plastyfikatora, klasyczna siatka stalowa nie jest konieczna w pomieszczeniach mieszkalnych. Siatka pozostaje jednak bezwzględnie wymagana w garażach oraz w miejscach, gdzie grubość otuliny nad rurą spada poniżej 3,0 cm."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#dataset-faq",
    "name": "Baza Wiedzy: Rozwiązywanie Problemów z Wylewkami Grzewczymi",
    "description": "Zestawienie najczęstszych pytań i eksperckich odpowiedzi dotyczących parametrów jastrychu, zbrojenia i doboru instalacji pod pompy ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "optymalna grubość wylewki betonowej na ogrzewanie podłogowe",
      "skutki zbyt cienkiej wylewki",
      "wylewka pod pompę ciepła",
      "różnica między wylewką betonową a anhydrytową",
      "zbrojenie wylewki 7 cm"
    ],
    "measurementTechnique": "Analiza zapytań inwestorów i walidacja rozwiązań z normą PN-EN 1264 oraz instrukcjami producentów chemii budowlanej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zalecenia dotyczące otuliny minimalnej",
        "Zasady rezygnacji ze zbrojenia stalowego",
        "Kompensacja oporów dla pomp ciepła"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#webapp-faq",
    "name": "Interaktywny Asystent Wiedzy o Wylewkach",
    "description": "Moduł akordeonowy udostępniający błyskawiczne odpowiedzi na kluczowe problemy techniczne związane z realizacją podkładów podłogowych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-faq-container">
    <div class="rk-faq-header">
        <div class="rk-faq-header-icon">
            <svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
        </div>
        <h2>FAQ – Najczęściej zadawane pytania</h2>
    </div>

    <div class="rk-faq-wrapper">
        
        <div class="rk-faq-item">
            <button class="rk-faq-question" onclick="rkToggleAccordion(this)" aria-expanded="false">
                <h3>Jaka jest optymalna grubość wylewki betonowej na ogrzewanie podłogowe?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Optymalna całkowita grubość <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">wylewki cementowej</a> wynosi od 6,0 do 8,0 cm, co przy standardowej instalacji gwarantuje warstwę czystej otuliny betonowej nad rurą w przedziale 3,0–4,5 cm. Taki wymiar zapewnia idealny kompromis pomiędzy wytrzymałością mechaniczną posadzki a niską <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładnością cieplną</a> układu.
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-question" onclick="rkToggleAccordion(this)" aria-expanded="false">
                <h3>Czym grozi wylanie zbyt cienkiej warstwy betonu nad rurami grzewczymi?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Wylanie warstwy poniżej 3,0 cm nad rurą skutkuje liniowymi pęknięciami jastrychu, odspajaniem płytek oraz drastycznym obniżeniem nośności posadzki na obciążenia punktowe. Dodatkowo wywołuje to zjawisko "zebry termicznej", czyli nierównomiernego rozkładu temperatur na powierzchni podłogi.
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-question" onclick="rkToggleAccordion(this)" aria-expanded="false">
                <h3>Czy pod pompy ciepła wylewka betonowa powinna być cieńsza?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Tak, przy zasilaniu niskotemperaturowym z <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a> (35°C) dąży się do minimalizacji oporu cieplnego, dlatego zaleca się wylewki o grubości 6,0–6,5 cm z obowiązkowym dodatkiem plastyfikatora. Pozwala to na maksymalne skrócenie czasu reakcji układu i podniesienie parametru COP pompy. Dzięki temu upewnisz się <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-jest-energooszczedne/">czy ogrzewanie podłogowe jest energooszczędne</a> na najwyższym poziomie.
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-question" onclick="rkToggleAccordion(this)" aria-expanded="false">
                <h3>Jaka jest różnica w grubości między wylewką betonową a anhydrytową?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Tradycyjna wylewka betonowa wymaga grubości całkowitej 6–8 cm (minimum 3 cm nad rurą), natomiast płynny jastrych anhydrytowy może mieć grubość zaledwie 3,5–5,0 cm (w tym jedynie 2 cm otuliny nad rurą). Różnica wynika z wyższej wytrzymałości na zginanie oraz lepszej przewodności cieplnej anhydrytu.
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-question" onclick="rkToggleAccordion(this)" aria-expanded="false">
                <h3>Czy można pominąć siatkę zbrojącą przy grubości wylewki wynoszącej 7 cm?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Tak, przy całkowitej grubości 7,0 cm i zastosowaniu mikrozbrojenia z włókien polipropylenowych oraz plastyfikatora, klasyczna siatka stalowa nie jest konieczna w pomieszczeniach mieszkalnych. Siatka pozostaje jednak bezwzględnie wymagana w garażach oraz w miejscach, gdzie grubość otuliny nad rurą spada poniżej 3,0 cm.
                </div>
            </div>
        </div>

    </div>
</div>

<script>
    function rkToggleAccordion(button) {
        var item = button.parentElement;
        var answer = item.querySelector('.rk-faq-answer');
        var isCurrentlyOpen = item.classList.contains('is-open');
        
        // Zwijanie wszystkich pozostałych paneli (opcjonalnie dla czystszego UX)
        var allItems = document.querySelectorAll('.rk-faq-item');
        for (var i = 0; i < allItems.length; i++) {
            allItems[i].classList.remove('is-open');
            allItems[i].querySelector('.rk-faq-question').setAttribute('aria-expanded', 'false');
            allItems[i].querySelector('.rk-faq-answer').style.maxHeight = null;
        }

        // Jeżeli kliknięty element nie był otwarty, otwórz go (bezpieczne rozwiązanie bez operatora &#038;&#038;)
        if (isCurrentlyOpen === false) {
            item.classList.add('is-open');
            button.setAttribute('aria-expanded', 'true');
            answer.style.maxHeight = answer.scrollHeight + "px";
        }
    }
</script>



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

.rk-summary-block {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    background: var(--rk-sum-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid rgba(2, 132, 199, 0.2);
    overflow: hidden;
}

/* Header Section */
.rk-summary-header {
    padding: 40px 50px;
    background: radial-gradient(circle at top right, #1e293b 0%, var(--rk-sum-dark) 100%);
    color: #fff;
    text-align: center;
}

.rk-summary-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(56, 189, 248, 0.15);
    color: var(--rk-sum-accent);
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 25px;
    border: 1px solid rgba(56, 189, 248, 0.3);
}

.rk-summary-title {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 20px 0;
    line-height: 1.3;
    color: #f8fafc;
}

/* Interactive Health Meter */
.rk-health-dashboard {
    background: #f8fafc;
    padding: 30px 50px;
    border-bottom: 1px solid var(--rk-sum-border);
}

.rk-health-bar-container {
    height: 24px;
    background: #e2e8f0;
    border-radius: 12px;
    overflow: hidden;
    margin-bottom: 15px;
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.05);
}

.rk-health-bar-fill {
    height: 100%;
    width: 0%;
    background: linear-gradient(90deg, var(--rk-sum-red) 0%, var(--rk-sum-gold) 50%, var(--rk-sum-green) 100%);
    transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-health-status {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-weight: 700;
    color: var(--rk-sum-dark);
}

.rk-health-score {
    font-size: 24px;
    color: var(--rk-sum-blue);
}

/* Interactive Toggles Grid */
.rk-interactive-rules {
    padding: 40px 50px;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 25px;
}

.rk-rule-card {
    background: #ffffff;
    border: 2px solid var(--rk-sum-border);
    border-radius: 16px;
    padding: 25px;
    cursor: pointer;
    transition: all 0.3s ease;
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-rule-card:hover {
    border-color: var(--rk-sum-blue);
    transform: translateY(-3px);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.1);
}

.rk-rule-card.is-active {
    border-color: var(--rk-sum-green);
    background: var(--rk-sum-green-light);
}

.rk-rule-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
}

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

.rk-toggle-switch {
    width: 48px;
    height: 24px;
    background: #cbd5e1;
    border-radius: 12px;
    position: relative;
    transition: background 0.3s;
}

.rk-rule-card.is-active .rk-toggle-switch {
    background: var(--rk-sum-green);
}

.rk-toggle-knob {
    width: 20px;
    height: 20px;
    background: #ffffff;
    border-radius: 50%;
    position: absolute;
    top: 2px;
    left: 2px;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}

.rk-rule-card.is-active .rk-toggle-knob {
    transform: translateX(24px);
}

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

.rk-rule-card.is-active .rk-rule-desc {
    color: #065f46;
}

/* Tags Section */
.rk-tags-section {
    padding: 0 50px 30px;
    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: 600;
    border: 1px solid #e2e8f0;
    transition: all 0.2s;
}

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

/* Creative CTA */
.rk-cta-zone {
    padding: 45px 50px;
    background: var(--rk-sum-dark);
    text-align: center;
    position: relative;
    overflow: hidden;
}

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

.rk-cta-title {
    font-size: 26px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 15px 0;
    position: relative;
    z-index: 1;
}

.rk-cta-text {
    font-size: 16px;
    color: #94a3b8;
    margin: 0 auto 30px auto;
    max-width: 650px;
    line-height: 1.7;
    position: relative;
    z-index: 1;
}

.rk-btn-neon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: #ffffff;
    color: var(--rk-sum-dark);
    font-size: 18px;
    font-weight: 800;
    padding: 20px 45px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 0 20px rgba(255,255,255,0.1);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    z-index: 1;
}

.rk-btn-neon:hover {
    transform: translateY(-5px);
    background: var(--rk-sum-blue);
    color: #ffffff;
    box-shadow: 0 15px 30px -5px rgba(2, 132, 199, 0.5);
}

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

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

/* Responsive adjustments */
@media (max-width: 768px) {
    .rk-summary-header, .rk-health-dashboard, .rk-interactive-rules, .rk-tags-section, .rk-cta-zone {
        padding: 30px 20px;
    }
    .rk-interactive-rules {
        grid-template-columns: 1fr; /* Stack vertically on mobile */
    }
    .rk-summary-title {
        font-size: 24px;
    }
    .rk-btn-neon {
        width: 100%;
        padding: 18px 20px;
        font-size: 16px;
    }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/"
    },
    "headline": "Podsumowanie – Inżynierskie zasady doboru grubości wylewki",
    "description": "Zestawienie optymalnych parametrów grubości jastrychu betonowego dla systemów płaszczyznowych. Interaktywny wskaźnik poprawności montażu wylewki.",
    "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-27",
    "dateModified": "2026-06-27"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#dataset-wylewka",
    "name": "Wytyczne Techniczne: Parametry Wylewki na Ogrzewanie Podłogowe",
    "description": "Zbiór kluczowych wartości liczbowych niezbędnych do prawidłowego wylania jastrychu na systemie ogrzewania podłogowego. Zawiera grubości minimalne i zalecane.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "optymalna grubość wylewki betonowej",
      "minimalna grubość jastrychu na ogrzewanie podłogowe",
      "ile centymetrów wylewki na podłogówkę",
      "plastyfikator do wylewek z ogrzewaniem podłogowym",
      "czas nagrzewania wylewki betonowej"
    ],
    "measurementTechnique": "Określenie parametrów na podstawie normy PN-EN 1264 oraz PN-EN 13813 uwzględniających opór cieplny i nośność.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Minimalna otulina betonowa nad rurką: 3,0 cm",
        "Zalecana całkowita grubość wylewki: 6-8 cm",
        "Wymóg stosowania plastyfikatorów i dylatacji"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#webapp-wylewka",
    "name": "Interaktywny Wskaźnik Poprawności Montażu Wylewki",
    "description": "Narzędzie pozwalające inwestorowi zweryfikować kluczowe parametry jastrychu (grubość, otulina, chemia budowlana) i ocenić potencjalne ryzyko awarii posadzki.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-summary-block" id="wylewka-summary-app">
    <div class="rk-summary-header">
        <div class="rk-summary-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 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>
            Inżynierskie Podsumowanie
        </div>
        <h2 class="rk-summary-title">Zanim wylejesz beton – 4 filary bezpiecznej podłogi</h2>
        <p style="color: #cbd5e1; font-size: 16px; max-width: 700px; margin: 0 auto; line-height: 1.6;">
            Beton nie wybacza błędów. Zbyt cienki pęknie, zbyt gruby wydrenuje Twój portfel i zaburzy pracę pompy ciepła. Uruchom poniższy symulator poprawności i upewnij się, że nie pominąłeś żadnego z kroków wynikających z <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/" style="color: var(--rk-sum-accent); text-decoration: underline;">inżynierskich standardów</a>.
        </p>
    </div>

    <div class="rk-health-dashboard">
        <div class="rk-health-bar-container">
            <div class="rk-health-bar-fill" id="rkHealthBar"></div>
        </div>
        <div class="rk-health-status">
            <span>Gotowość do zalewania posadzki:</span>
            <span class="rk-health-score" id="rkHealthScore">0%</span>
        </div>
        <p id="rkHealthMessage" style="font-size: 14px; color: var(--rk-sum-red); margin: 10px 0 0 0; font-weight: 600;">
            Krytyczne braki technologiczne. Instalacja zagrożona usterką!
        </p>
    </div>

    <div class="rk-interactive-rules">
        <div class="rk-rule-card" onclick="toggleRule(this)" data-val="25">
            <div class="rk-rule-header">
                <h3 class="rk-rule-title">Otulina min. 3 cm</h3>
                <div class="rk-toggle-switch"><div class="rk-toggle-knob"></div></div>
            </div>
            <p class="rk-rule-desc">Nad najwyższym punktem rury grzewczej zachowano absolutne minimum 30 mm czystego betonu chroniącego przed naciskiem punktowym i tzw. efektem klawiszowania.</p>
        </div>

        <div class="rk-rule-card" onclick="toggleRule(this)" data-val="25">
            <div class="rk-rule-header">
                <h3 class="rk-rule-title">Całkowita grubość 6-8 cm</h3>
                <div class="rk-toggle-switch"><div class="rk-toggle-knob"></div></div>
            </div>
            <p class="rk-rule-desc">Grubość jastrychu dostosowana do oporu cieplnego posadzki. Optymalizuje czas nagrzewania i likwiduje problem "zebry termicznej" oraz przeciążenia stropu.</p>
        </div>

        <div class="rk-rule-card" onclick="toggleRule(this)" data-val="25">
            <div class="rk-rule-header">
                <h3 class="rk-rule-title">Plastyfikator do betonu</h3>
                <div class="rk-toggle-switch"><div class="rk-toggle-knob"></div></div>
            </div>
            <p class="rk-rule-desc">Zastosowano chemię eliminującą bąbelki powietrza. Beton idealnie oblał rury, zwiększając przewodność cieplną λ z 1,2 do nawet 1,45 W/(m·K).</p>
        </div>

        <div class="rk-rule-card" onclick="toggleRule(this)" data-val="25">
            <div class="rk-rule-header">
                <h3 class="rk-rule-title">Kompletne dylatacje</h3>
                <div class="rk-toggle-switch"><div class="rk-toggle-knob"></div></div>
            </div>
            <p class="rk-rule-desc">Wykonano taśmy brzegowe oraz nacięcia pośrednie dla pól powyżej 36 m². Płyta grzewcza może swobodnie "pracować" pod wpływem temperatury.</p>
        </div>
    </div>

    <div class="rk-tags-section">
        <span class="rk-mat-tag"># optymalna grubość wylewki betonowej</span>
        <span class="rk-mat-tag"># minimalna grubość jastrychu na ogrzewanie podłogowe</span>
        <span class="rk-mat-tag"># ile centymetrów wylewki na podłogówkę</span>
        <span class="rk-mat-tag"># wylewka anhydrytowa a cementowa różnice</span>
        <span class="rk-mat-tag"># plastyfikator do wylewek z ogrzewaniem podłogowym</span>
        <span class="rk-mat-tag"># pękanie wylewki na ogrzewaniu podłogowym</span>
        <span class="rk-mat-tag"># profesjonalny projekt instalacji ogrzewania podłogowego</span>
        <span class="rk-mat-tag"># czas nagrzewania wylewki betonowej</span>
    </div>

    <div class="rk-cta-zone">
        <h3 class="rk-cta-title">Budowa Bez Ściemy. Ogrzewanie bez kompromisów.</h3>
        <p class="rk-cta-text">
            Chcesz mieć pewność, że parametry Twojej wylewki są perfekcyjnie dopasowane do mocy pompy ciepła i rozstawu rur? Wszystko zaczyna się na papierze. Nie zgaduj na budowie – powierz <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" style="color: var(--rk-sum-accent);">wykonanie OZC i układu hydraulicznego</a> profesjonalistom.
        </p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-neon">
            ZDOBĄDŹ WIEDZĘ EKSPERCKĄ
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
    let rkCurrentScore = 0;

    function toggleRule(element) {
        const value = parseInt(element.getAttribute('data-val'));
        
        if (element.classList.contains('is-active')) {
            element.classList.remove('is-active');
            rkCurrentScore = rkCurrentScore - value;
        } else {
            element.classList.add('is-active');
            rkCurrentScore = rkCurrentScore + value;
        }

        updateDashboard();
    }

    function updateDashboard() {
        const barFill = document.getElementById('rkHealthBar');
        const scoreText = document.getElementById('rkHealthScore');
        const msgText = document.getElementById('rkHealthMessage');

        barFill.style.width = rkCurrentScore + '%';
        scoreText.innerText = rkCurrentScore + '%';

        if (rkCurrentScore === 0) {
            msgText.innerText = 'Krytyczne braki technologiczne. Instalacja zagrożona usterką!';
            msgText.style.color = 'var(--rk-sum-red)';
            scoreText.style.color = 'var(--rk-sum-red)';
        } else if (rkCurrentScore > 0) {
            if (rkCurrentScore < 100) {
                msgText.innerText = 'Część wymogów spełniona, ale system nadal narażony na pęknięcia i straty ciepła.';
                msgText.style.color = 'var(--rk-sum-gold)';
                scoreText.style.color = 'var(--rk-sum-gold)';
            } else {
                if (rkCurrentScore === 100) {
                    msgText.innerText = 'Wzorowy standard inżynierski! Twoja posadzka jest gotowa do bezpiecznego wylania betonu.';
                    msgText.style.color = 'var(--rk-sum-green)';
                    scoreText.style.color = 'var(--rk-sum-green)';
                }
            }
        }
    }
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-blue: #0284c7;
    --rk-dl-blue-light: #f0f9ff;
    --rk-dl-accent: #f59e0b;
    --rk-dl-gray: #475569;
    --rk-dl-bg: #ffffff;
    --rk-dl-border: #e2e8f0;
}

.rk-dl-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    background: var(--rk-dl-bg);
    border-radius: 16px;
    box-shadow: 0 10px 30px -10px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-dl-border);
    overflow: hidden;
}

/* Header */
.rk-dl-header {
    background: var(--rk-dl-dark);
    padding: 35px 45px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-dl-blue);
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.rk-dl-header-text h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 10px 0;
    color: #ffffff;
    letter-spacing: -0.5px;
}

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

/* Layout */
.rk-dl-layout {
    display: grid;
    grid-template-columns: 320px 1fr;
    background: var(--rk-dl-bg);
}

/* Preview Column */
.rk-dl-preview-col {
    padding: 40px;
    background: var(--rk-dl-blue-light);
    border-right: 1px solid var(--rk-dl-border);
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-dl-thumbnail-box {
    width: 100%;
    background: #ffffff;
    border-radius: 12px;
    padding: 10px;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.2);
    border: 1px solid var(--rk-dl-border);
    position: relative;
    cursor: pointer;
}

.rk-dl-thumbnail-box::after {
    content: '🔍 POWIĘKSZ';
    position: absolute;
    bottom: 20px;
    left: 50%;
    transform: translateX(-50%);
    background: var(--rk-dl-dark);
    color: #ffffff;
    padding: 8px 16px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 800;
    opacity: 0;
    transition: opacity 0.2s;
}

.rk-dl-thumbnail-box:hover::after {
    opacity: 1;
}

.rk-dl-thumbnail {
    width: 100%;
    height: auto;
    border-radius: 6px;
    display: block;
}

.rk-dl-preview-desc {
    margin-top: 20px;
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-dl-blue);
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Actions Column */
.rk-dl-actions-col {
    padding: 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-dl-info {
    margin-bottom: 35px;
}

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

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

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

.rk-dl-btn {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 25px;
    border-radius: 12px;
    text-decoration: none;
    font-size: 16px;
    font-weight: 800;
    transition: all 0.2s;
}

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

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

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

.rk-dl-btn-secondary:hover {
    border-color: var(--rk-dl-blue);
    color: var(--rk-dl-blue);
    background: var(--rk-dl-blue-light);
}

.rk-dl-btn-icon {
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-dl-meta {
    font-size: 12px;
    font-weight: 600;
    opacity: 0.8;
}

/* Footer / Copyright */
.rk-dl-footer {
    padding: 20px 45px;
    background: #f8fafc;
    border-top: 1px solid var(--rk-dl-border);
    font-size: 13px;
    color: var(--rk-dl-gray);
    line-height: 1.5;
    text-align: center;
}

.rk-dl-footer strong {
    color: var(--rk-dl-dark);
}

/* Fullscreen Modal */
.rk-dl-modal {
    display: none;
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(15, 23, 42, 0.95);
    z-index: 9999;
    padding: 40px;
    justify-content: center;
    align-items: center;
}

.rk-dl-modal.is-open {
    display: flex;
}

.rk-dl-modal-content {
    max-width: 90%;
    max-height: 90vh;
    object-fit: contain;
    border-radius: 8px;
    box-shadow: 0 20px 50px rgba(0,0,0,0.5);
}

.rk-dl-modal-close {
    position: absolute;
    top: 20px;
    right: 30px;
    background: transparent;
    border: none;
    color: #ffffff;
    font-size: 40px;
    cursor: pointer;
    line-height: 1;
}

@media (max-width: 768px) {
    .rk-dl-layout { grid-template-columns: 1fr; }
    .rk-dl-preview-col { border-right: none; border-bottom: 1px solid var(--rk-dl-border); padding: 30px 20px; }
    .rk-dl-header, .rk-dl-actions-col, .rk-dl-footer { padding: 30px 20px; }
    .rk-dl-header { flex-direction: column; text-align: center; gap: 15px; }
    .rk-dl-modal { padding: 10px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#article-infografika",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/"
    },
    "headline": "Pobierz Infografikę: Kompendium parametrów wylewki",
    "description": "Zestawienie normatywnych parametrów grubości i oporów cieplnych posadzek w formie graficznej, przygotowane specjalnie dla inwestorów i wykonawców.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-27",
    "dateModified": "2026-06-27"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#dataset-infografika",
    "name": "Infografika techniczna: Ogrzewanie podłogowe a wylewka",
    "description": "Plik PDF i WebP o wysokiej rozdzielczości zawierający zbiór kluczowych błędów montażowych, wytycznych normowych i zależności oporu cieplnego okładzin.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika ogrzewanie podłogowe",
      "ściągawka wylewka betonowa PDF",
      "błędy inwestorów posadzki grzewczej",
      "normy projektowe podłogówka",
      "grubość wylewki tabela wykończeń"
    ],
    "measurementTechnique": "Przedstawienie skomplikowanych wyliczeń OZC oraz wymogów prawnych PN-EN w formie wektorowego schematu graficznego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zalecane grubości posadzek a rodzaj paneli / płytek.",
        "Krzywe spadku COP przy przewymiarowaniu warstwy betonowej.",
        "Rekomendacje dotyczące otuliny w zależności od średnicy rury."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/#webapp-infografika",
    "name": "Moduł Dystrybucji Wiedzy Inżynierskiej",
    "description": "Interfejs do pobierania autorskich materiałów edukacyjnych (PDF, WebP), umożliwiający zapis plików bezpośrednio na urządzeniu użytkownika w celach projektowych.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-dl-wrapper">
    <div class="rk-dl-header">
        <div class="rk-dl-header-text">
            <h2>Materiały do pobrania</h2>
            <p>Zachowaj tę wiedzę dla siebie lub przekaż ją swojemu wykonawcy.</p>
        </div>
        <svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="color: #38bdf8;"><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>
    </div>

    <div class="rk-dl-layout">
        <div class="rk-dl-preview-col">
            <div class="rk-dl-thumbnail-box" onclick="rkOpenModal()">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe.webp" alt="Infografika - Grubość wylewki betonowej na ogrzewanie podłogowe" class="rk-dl-thumbnail">
            </div>
            <div class="rk-dl-preview-desc">Kliknij, aby podglądnąć</div>
        </div>

        <div class="rk-dl-actions-col">
            <div class="rk-dl-info">
                <h3>Infografika: Ściągawka Inwestora</h3>
                <p>Przygotowałem skrót najważniejszych norm, zaleceń i pułapek technologicznych w wygodnej formie graficznej. Zapisz plik na telefonie przed wizytą na budowie.</p>
            </div>

            <div class="rk-dl-buttons">
                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe.pdf" download class="rk-dl-btn rk-dl-btn-primary" target="_blank">
                    <div class="rk-dl-btn-icon">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="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>
                        <span>Pobierz jako dokument PDF</span>
                    </div>
                    <span class="rk-dl-meta">Wysoka jakość</span>
                </a>

                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe.webp" download class="rk-dl-btn rk-dl-btn-secondary" target="_blank">
                    <div class="rk-dl-btn-icon">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><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>
                        <span>Pobierz jako Obraz (WebP)</span>
                    </div>
                    <span class="rk-dl-meta">Lekki plik</span>
                </a>
            </div>
        </div>
    </div>

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

<div class="rk-dl-modal" id="rkImageModal" onclick="rkCloseModal(event)">
    <button class="rk-dl-modal-close" onclick="rkCloseModal(event)">&times;</button>
    <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe.webp" alt="Podgląd Infografiki" class="rk-dl-modal-content" id="rkModalImg">
</div>

<script>
    function rkOpenModal() {
        var modal = document.getElementById('rkImageModal');
        if (modal) {
            modal.classList.add('is-open');
        }
    }

    function rkCloseModal(event) {
        var modal = document.getElementById('rkImageModal');
        var modalImg = document.getElementById('rkModalImg');
        
        // Zamykaj tylko jeśli kliknięto tło (modal) lub przycisk zamknięcia, a nie sam obrazek (bez &&)
        if (event.target === modal) {
            modal.classList.remove('is-open');
        } else {
            if (event.target.classList.contains('rk-dl-modal-close')) {
                modal.classList.remove('is-open');
            }
        }
    }
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/">Grubość wylewki betonowej na ogrzewanie podłogowe.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Kalkulator strat ciepła budynku – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie.</title>
		<link>https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Mon, 09 Mar 2026 11:26:18 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Instalacja ogrzewania podłogowego]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Modernizacja domu]]></category>
		<category><![CDATA[Modernizacja ogrzewania]]></category>
		<category><![CDATA[Narzędzia i kalkulatory]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki inwestora]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[ile wat na m2]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[kalkulator strat ciepła]]></category>
		<category><![CDATA[moc ogrzewania domu]]></category>
		<category><![CDATA[obliczanie strat ciepła]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[straty ciepła domu]]></category>
		<category><![CDATA[zapotrzebowanie na ogrzewanie]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3743</guid>

					<description><![CDATA[<p>Obliczenie zapotrzebowania na ciepło budynku to pierwszy krok do prawidłowego zaprojektowania instalacji grzewczej. W tym poradniku pokazujemy, jak w prosty sposób oszacować straty energii w domu i sprawdzić, czy ogrzewanie podłogowe będzie wystarczające. Dzięki praktycznym wskazówkom oraz przykładom obliczeń dowiesz się, jak wykorzystać kalkulator strat ciepła domu – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie, aby ocenić moc instalacji, temperaturę zasilania oraz potencjalne koszty eksploatacji. To wiedza szczególnie przydatna dla inwestorów budujących dom lub modernizujących starsze budynki.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">Kalkulator strat ciepła budynku – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-panel: #1e293b;
    --rk-intro-brand: #2563eb;
    --rk-intro-brand-light: #eff6ff;
    --rk-intro-accent: #f97316;
    --rk-intro-bg: #ffffff;
    --rk-intro-border: #e2e8f0;
    --rk-intro-text: #334155;
    --rk-intro-muted: #64748b;
    --rk-intro-success: #10b981;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        </div>
    </div>

</div>



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    

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

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

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

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

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

        </div>
    </div>

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

</div>

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        </div>
    </div>

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

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

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

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

</div>

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            </div>
        </div>

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

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

        </div>

    </div>
</div>

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        </div>
    </div>

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

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

</div>

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            </div>

        </div>

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

    </div>
</div>

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

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

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

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



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

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

/* Nagłówek Kalkulatora */
.rk-calc-head {
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, #1e3a8a 100%);
    padding: 40px 45px;
    color: #ffffff;
    position: relative;
    overflow: hidden;
}

.rk-calc-head::after {
    content: '';
    position: absolute;
    right: -50px;
    top: -50px;
    width: 250px;
    height: 250px;
    background: radial-gradient(circle, rgba(37,99,235,0.4) 0%, transparent 70%);
    border-radius: 50%;
    pointer-events: none;
}

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

.rk-calc-head h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 10px 0;
    line-height: 1.2;
}

.rk-calc-head p {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    max-width: 650px;
    line-height: 1.6;
}

/* Grid Główny */
.rk-calc-body {
    display: grid;
    grid-template-columns: 1.3fr 1fr;
    background: var(--rk-calc-bg);
}

/* Sekcja Lewa - Konfigurator */
.rk-calc-controls {
    padding: 40px 45px;
    background: #ffffff;
    border-right: 1px solid var(--rk-calc-border);
}

.rk-calc-section-title {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-calc-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin: 30px 0 20px 0;
}

.rk-calc-section-title:first-child {
    margin-top: 0;
}

.rk-calc-section-title svg {
    color: var(--rk-calc-brand);
}

/* Przyciski Wyboru (Kafelki z ikonami) */
.rk-calc-btn-group {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
}

.rk-calc-opt-btn {
    background: #ffffff;
    border: 2px solid var(--rk-calc-border);
    border-radius: 14px;
    padding: 15px 10px;
    text-align: center;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
}

.rk-calc-opt-btn:hover {
    border-color: #93c5fd;
    background: var(--rk-calc-brand-light);
}

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

.rk-calc-opt-icon {
    width: 28px;
    height: 28px;
    color: var(--rk-calc-muted);
    transition: color 0.3s;
}

.rk-calc-opt-btn.active .rk-calc-opt-icon {
    color: var(--rk-calc-brand);
}

.rk-calc-opt-text {
    font-size: 12px;
    font-weight: 800;
    color: var(--rk-calc-text);
}

.rk-calc-opt-btn.active .rk-calc-opt-text {
    color: var(--rk-calc-brand);
}

/* Suwaki Modern */
.rk-slider-wrap {
    margin-bottom: 25px;
    background: #f8fafc;
    padding: 15px 20px;
    border-radius: 12px;
    border: 1px solid #f1f5f9;
}

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

.rk-slider-label {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-calc-dark);
}

.rk-slider-val {
    background: var(--rk-calc-brand);
    color: #ffffff;
    padding: 4px 12px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    box-shadow: 0 2px 5px rgba(37, 99, 235, 0.2);
}

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

.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--rk-calc-brand);
    cursor: pointer;
    box-shadow: 0 2px 6px rgba(0,0,0,0.15);
    transition: transform 0.1s;
}

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

/* Sekcja Prawa - Wyniki */
.rk-calc-results {
    padding: 40px;
    display: flex;
    flex-direction: column;
    gap: 20px;
}

/* Główny Wynik z SVG */
.rk-res-main-card {
    background: #ffffff;
    border-radius: 20px;
    padding: 30px 20px;
    text-align: center;
    border: 1px solid var(--rk-calc-border);
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05);
    position: relative;
    overflow: hidden;
}

.rk-res-gauge {
    width: 120px;
    height: 60px;
    margin: 0 auto 10px auto;
    position: relative;
}

.rk-gauge-path-bg { fill: none; stroke: #e2e8f0; stroke-width: 12; stroke-linecap: round; }
.rk-gauge-path-val { fill: none; stroke: var(--rk-calc-success); stroke-width: 12; stroke-linecap: round; transition: stroke-dashoffset 0.8s ease, stroke 0.3s; }

.rk-res-huge {
    font-size: 52px;
    font-weight: 900;
    color: var(--rk-calc-dark);
    line-height: 1;
    margin-bottom: 5px;
    letter-spacing: -1px;
}

.rk-res-unit {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-calc-muted);
    text-transform: uppercase;
}

.rk-res-alert {
    margin-top: 15px;
    padding: 10px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 700;
    display: none;
    background: var(--rk-calc-danger);
    color: #ffffff;
    animation: pulseAlert 2s infinite;
}

@keyframes pulseAlert {
    0% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.4); }
    70% { box-shadow: 0 0 0 10px rgba(239, 68, 68, 0); }
    100% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0); }
}

/* Tabela Parametrów */
.rk-res-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-res-box {
    background: #ffffff;
    border: 1px solid var(--rk-calc-border);
    padding: 15px;
    border-radius: 14px;
}

.rk-res-box.accent {
    background: var(--rk-calc-dark);
    border-color: var(--rk-calc-dark);
}

.rk-res-box-label {
    font-size: 11px;
    color: var(--rk-calc-muted);
    font-weight: 800;
    text-transform: uppercase;
    display: block;
    margin-bottom: 5px;
}

.rk-res-box.accent .rk-res-box-label { color: #94a3b8; }

.rk-res-box-val {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-calc-dark);
}

.rk-res-box.accent .rk-res-box-val { color: #ffffff; }

/* Pasek strat ciepła */
.rk-loss-bar-wrap {
    background: #ffffff;
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-calc-border);
}

.rk-loss-bar-title {
    font-size: 11px;
    font-weight: 800;
    color: var(--rk-calc-muted);
    text-transform: uppercase;
    margin-bottom: 10px;
    display: block;
}

.rk-loss-bar {
    height: 12px;
    display: flex;
    border-radius: 6px;
    overflow: hidden;
    background: #e2e8f0;
}

.rk-lb-segment { height: 100%; transition: width 0.5s ease; }
.rk-lb-w { background: var(--rk-calc-brand); }
.rk-lb-r { background: #38bdf8; }
.rk-lb-f { background: var(--rk-calc-accent); }
.rk-lb-v { background: #94a3b8; }

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

.rk-leg-item { display: flex; align-items: center; gap: 4px; }
.rk-leg-dot { width: 8px; height: 8px; border-radius: 50%; }

/* Sekcja Info Tekstowego & CTA */
.rk-calc-footer {
    background: #ffffff;
    border-top: 1px solid var(--rk-calc-border);
    padding: 40px 45px;
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-calc-info-text {
    font-size: 14px;
    line-height: 1.7;
    color: var(--rk-calc-text);
    background: var(--rk-calc-brand-light);
    padding: 20px;
    border-left: 4px solid var(--rk-calc-brand);
    border-radius: 0 12px 12px 0;
    margin: 0;
}

.rk-calc-info-text a {
    color: var(--rk-calc-brand);
    font-weight: 700;
    text-decoration: underline;
}

.rk-calc-actions {
    display: flex;
    gap: 20px;
    align-items: center;
}

.rk-btn-primary {
    background: var(--rk-calc-accent);
    color: #ffffff;
    padding: 16px 30px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 900;
    text-decoration: none;
    text-transform: uppercase;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    box-shadow: 0 10px 20px -5px rgba(249, 115, 22, 0.4);
    transition: all 0.3s;
    border: none;
    cursor: pointer;
}

.rk-btn-primary:hover {
    transform: translateY(-3px);
    background: #ea580c;
    box-shadow: 0 15px 25px -5px rgba(249, 115, 22, 0.5);
}

@media (max-width: 900px) {
    .rk-calc-body { grid-template-columns: 1fr; }
    .rk-calc-head { padding: 35px 25px; }
    .rk-calc-controls { padding: 30px 20px; border-right: none; border-bottom: 1px solid var(--rk-calc-border); }
    .rk-calc-results { padding: 30px 20px; }
    .rk-calc-footer { padding: 30px 20px; }
    .rk-calc-actions { flex-direction: column; }
    .rk-btn-primary { width: 100%; justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-calculator",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Kalkulator strat ciepła budynku online – oblicz zapotrzebowanie na ogrzewanie",
    "description": "Profesjonalny symulator OZC. Oblicz zapotrzebowanie na moc (W/m2), długość pętli grzewczych i dobierz optymalną temperaturę zasilania dla pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-calculator",
    "name": "Szacunkowe Parametry Wykonawcze Ogrzewania Podłogowego",
    "description": "Zbiór obliczonych parametrów hydraulicznych i termicznych wygenerowanych na podstawie wprowadzonych wskaźników izolacyjności przegród budowlanych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zapotrzebowanie cieplne W/m2",
      "dobór pompy obiegowej",
      "planowanie pętli grzewczych",
      "kosztorys ogrzewania podłogowego",
      "temperatura zasilania podłogówki"
    ],
    "measurementTechnique": "Szacowanie heurystyczne bazujące na uproszczonych wzorach normy PN-EN 12831, przeliczające sumę strat przez przenikanie i wentylację na metraż instalacji.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wynik > 95 W/m2 wskazuje na wysokie ryzyko niedogrzania samym systemem podłogowym.",
        "Zapotrzebowanie określa średnią wymaganą ilość mb rury instalacyjnej.",
        "Moc całkowita determinuje dobór mocy źródła ciepła (pompy ciepła)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-calculator",
    "name": "Zaawansowany Symulator Zapotrzebowania Cieplnego",
    "description": "Interaktywna aplikacja inżynierska wizualizująca na żywo zmiany parametrów instalacyjnych (temperatura, rozstaw rur) w zależności od grubości ocieplenia i rodzaju posadzki.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript enabled browser.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-wrapper" id="rk-calc-app">
    <div class="rk-calc-head">
        <div class="rk-calc-badge">Narzędzie Inżynierskie</div>
        <h2>Kalkulator strat ciepła budynku online – oblicz zapotrzebowanie na ogrzewanie</h2>
        <p>Wprowadź gabaryty swojego budynku oraz parametry przegród, aby błyskawicznie oszacować moc grzewczą i optymalne parametry pracy pętli podłogowych. Pamiętaj, że uzyskane wyniki mają <strong>charakter wyłącznie poglądowy</strong> i nie zastępują profesjonalnego projektu (OZC).</p>
    </div>

    <div class="rk-calc-body">
        
        <div class="rk-calc-controls">
            
            <div class="rk-calc-section-title">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path></svg>
                1. Standard energetyczny
            </div>
            <div class="rk-calc-btn-group">
                <div class="rk-calc-opt-btn active" onclick="rkSetPreset('new', this)">
                    <svg class="rk-calc-opt-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg>
                    <span class="rk-calc-opt-text">Nowy Dom<br>(WT 2021)</span>
                </div>
                <div class="rk-calc-opt-btn" onclick="rkSetPreset('mod', this)">
                    <svg class="rk-calc-opt-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    <span class="rk-calc-opt-text">Docieplony<br>(Modernizacja)</span>
                </div>
                <div class="rk-calc-opt-btn" onclick="rkSetPreset('old', this)">
                    <svg class="rk-calc-opt-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                    <span class="rk-calc-opt-text">Stary Dom<br>(Bez izolacji)</span>
                </div>
            </div>

            <div class="rk-calc-section-title">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><line x1="4" y1="12" x2="20" y2="12"></line><line x1="12" y1="4" x2="12" y2="20"></line></svg>
                2. Geometria i Fizyka budowli
            </div>
            
            <div class="rk-slider-wrap">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Powierzchnia ogrzewana</span>
                    <span class="rk-slider-val"><span id="rk-v-area">140</span> m²</span>
                </div>
                <input type="range" id="rk-area" class="rk-range-input" min="40" max="300" value="140" oninput="rkUpdateCalc()">
            </div>

            <div class="rk-slider-wrap">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Strefa Klimatyczna</span>
                    <span class="rk-slider-val">Strefa <span id="rk-v-zone">III</span> (<span id="rk-v-temp">-20</span>°C)</span>
                </div>
                <input type="range" id="rk-zone" class="rk-range-input" min="1" max="5" step="1" value="3" oninput="rkUpdateCalc()">
            </div>

            <div class="rk-slider-wrap">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Wsp. przenikania Ścian (U)</span>
                    <span class="rk-slider-val" id="rk-v-walls">0.18</span>
                </div>
                <input type="range" id="rk-walls" class="rk-range-input" min="0.1" max="1.5" step="0.01" value="0.18" oninput="rkUpdateCalc()">
            </div>

            <div class="rk-slider-wrap">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Wsp. przenikania Dachu (U)</span>
                    <span class="rk-slider-val" id="rk-v-roof">0.15</span>
                </div>
                <input type="range" id="rk-roof" class="rk-range-input" min="0.1" max="1.0" step="0.01" value="0.15" oninput="rkUpdateCalc()">
            </div>

            <div class="rk-slider-wrap">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Wsp. przenikania Podłogi (U)</span>
                    <span class="rk-slider-val" id="rk-v-floor">0.25</span>
                </div>
                <input type="range" id="rk-floor" class="rk-range-input" min="0.1" max="1.5" step="0.01" value="0.25" oninput="rkUpdateCalc()">
            </div>

            <div class="rk-calc-section-title">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                3. Wykończenie posadzki
            </div>
            <div class="rk-calc-btn-group">
                <div class="rk-calc-opt-btn active" id="rk-f-tiles" onclick="rkSetFloor(0.02, 'tiles')">
                    <span class="rk-calc-opt-text">PŁYTKI/GRES</span>
                </div>
                <div class="rk-calc-opt-btn" id="rk-f-panels" onclick="rkSetFloor(0.08, 'panels')">
                    <span class="rk-calc-opt-text">PANELE</span>
                </div>
                <div class="rk-calc-opt-btn" id="rk-f-wood" onclick="rkSetFloor(0.12, 'wood')">
                    <span class="rk-calc-opt-text">DESKA</span>
                </div>
            </div>

        </div>

        <div class="rk-calc-results">
            
            <div class="rk-res-main-card">
                <div class="rk-res-gauge">
                    <svg viewBox="0 0 100 50" width="100%" height="100%">
                        <path class="rk-gauge-path-bg" d="M 10 50 A 40 40 0 0 1 90 50" />
                        <path class="rk-gauge-path-val" id="rk-gauge-val" d="M 10 50 A 40 40 0 0 1 90 50" stroke-dasharray="125.6" stroke-dashoffset="125.6" />
                    </svg>
                </div>
                <div class="rk-res-huge" id="rk-res-m2">--</div>
                <div class="rk-res-unit">Watów na m² (W/m²)</div>
                <div class="rk-res-alert" id="rk-alert-msg">
                    ⚠️ Krytyczne zapotrzebowanie. Sama instalacja podłogowa nie dogrzeje budynku w mrozy.
                </div>
            </div>

            <div class="rk-res-grid">
                <div class="rk-res-box">
                    <span class="rk-res-box-label">Moc całkowita instalacji</span>
                    <span class="rk-res-box-val" id="rk-res-total">-- kW</span>
                </div>
                <div class="rk-res-box accent">
                    <span class="rk-res-box-label">Sugerowany rozstaw rur</span>
                    <span class="rk-res-box-val" id="rk-res-spacing">-- cm</span>
                </div>
                <div class="rk-res-box">
                    <span class="rk-res-box-label">Temp. zasilania (Tz)</span>
                    <span class="rk-res-box-val" id="rk-res-tz" style="color:var(--rk-calc-accent)">-- °C</span>
                </div>
                <div class="rk-res-box">
                    <span class="rk-res-box-label">Ilość mb rury PEX (ok.)</span>
                    <span class="rk-res-box-val" id="rk-res-pipe">-- mb</span>
                </div>
            </div>

            <div class="rk-loss-bar-wrap">
                <span class="rk-loss-bar-title">Rozkład ucieczki ciepła</span>
                <div class="rk-loss-bar">
                    <div class="rk-lb-segment rk-lb-w" id="rk-bar-w" style="width: 0%"></div>
                    <div class="rk-lb-segment rk-lb-r" id="rk-bar-r" style="width: 0%"></div>
                    <div class="rk-lb-segment rk-lb-f" id="rk-bar-f" style="width: 0%"></div>
                    <div class="rk-lb-segment rk-lb-v" id="rk-bar-v" style="width: 0%"></div>
                </div>
                <div class="rk-loss-legend">
                    <div class="rk-leg-item"><div class="rk-leg-dot rk-lb-w"></div> Ściany</div>
                    <div class="rk-leg-item"><div class="rk-leg-dot rk-lb-r"></div> Dach</div>
                    <div class="rk-leg-item"><div class="rk-leg-dot rk-lb-f"></div> Podłoga</div>
                    <div class="rk-leg-item"><div class="rk-leg-dot rk-lb-v"></div> Wentylacja</div>
                </div>
            </div>

        </div>

    </div>

    <div class="rk-calc-footer">
        <h3>Jak czytać wyniki symulacji OZC?</h3>
        <p class="rk-calc-info-text">
            <strong>Zanim zamówisz materiały lub projekt, musisz oszacować zapotrzebowanie energetyczne!</strong> 
            Wyniki powyżej pokazują teoretyczne granice dla Twojego budynku i mają <strong>charakter poglądowy</strong>. Zbyt wysokie obciążenie (powyżej 80 W/m²) wymusi gęste układanie rur, a w efekcie zakup potężniejszego urządzenia grzewczego. Aby nie zgadywać w ciemno, bazuj na profesjonalnych wyliczeniach. Zastanów się zresztą sam: projekt "z głowy" czy pełny projekt inżynierski z obliczeniami strat? Różnica w kosztach późniejszej eksploatacji jest kolosalna.
        </p>
        <div class="rk-calc-actions">
            <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-primary">
                ZAMÓW PROFESJONALNY PROJEKT PODŁOGÓWKI
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
            </a>
        </div>
    </div>

</div>

<script>
let rkActiveR = 0.02;
const rkZTemps = { 1: -16, 2: -18, 3: -20, 4: -22, 5: -24 };
const rkZNames = { 1: "I", 2: "II", 3: "III", 4: "IV", 5: "V" };

function rkSetPreset(type, el) {
    document.querySelectorAll('.rk-calc-btn-group')[0].querySelectorAll('.rk-calc-opt-btn').forEach(b => b.classList.remove('active'));
    el.classList.add('active');
    
    const p = {
        new: { w: 0.18, r: 0.15, f: 0.25 },
        mod: { w: 0.35, r: 0.25, f: 0.40 },
        old: { w: 1.10, r: 0.80, f: 1.00 }
    };
    
    document.getElementById('rk-walls').value = p[type].w;
    document.getElementById('rk-roof').value = p[type].r;
    document.getElementById('rk-floor').value = p[type].f;
    rkUpdateCalc();
}

function rkSetFloor(r, id) {
    rkActiveR = r;
    const btns = document.querySelectorAll('.rk-calc-btn-group')[1].querySelectorAll('.rk-calc-opt-btn');
    btns.forEach(b => b.classList.remove('active'));
    document.getElementById('rk-f-'+id).classList.add('active');
    rkUpdateCalc();
}

function rkUpdateCalc() {
    const area = parseFloat(document.getElementById('rk-area').value);
    const zone = document.getElementById('rk-zone').value;
    const uWalls = parseFloat(document.getElementById('rk-walls').value);
    const uRoof = parseFloat(document.getElementById('rk-roof').value);
    const uFloor = parseFloat(document.getElementById('rk-floor').value);
    
    const deltaT = 20 - rkZTemps[zone];
    
    // Update labels
    document.getElementById('rk-v-area').innerText = area;
    document.getElementById('rk-v-zone').innerText = rkZNames[zone];
    document.getElementById('rk-v-temp').innerText = rkZTemps[zone];
    document.getElementById('rk-v-walls').innerText = uWalls.toFixed(2);
    document.getElementById('rk-v-roof').innerText = uRoof.toFixed(2);
    document.getElementById('rk-v-floor').innerText = uFloor.toFixed(2);

    // Calc logic
    const qWalls = (area * 1.5) * uWalls * deltaT; // uśrednione ściany
    const qRoof = area * uRoof * deltaT;
    const qFloor = area * uFloor * 15; // stałe dt dla gruntu
    const qVent = 0.34 * (area * 2.6) * 0.5 * deltaT; // grawitacyjna went.
    
    const total = (qWalls + qRoof + qFloor + qVent) * 1.1; // +10% mostki
    const wm2 = total / area;

    // UI Updates
    document.getElementById('rk-res-m2').innerText = Math.round(wm2);
    document.getElementById('rk-res-total').innerText = (total / 1000).toFixed(2);

    // Gauge Update (Max 150 W/m2 for scale)
    const gaugeValPath = document.getElementById('rk-gauge-val');
    const circumference = 125.6; // pi * r (r=40) for semi-circle
    let pct = wm2 / 150;
    if(pct > 1) pct = 1;
    const offset = circumference - (pct * circumference);
    gaugeValPath.style.strokeDashoffset = offset;

    const alertMsg = document.getElementById('rk-alert-msg');
    if(wm2 > 95) {
        gaugeValPath.style.stroke = "var(--rk-calc-danger)";
        alertMsg.style.display = "block";
    } else if (wm2 > 65) {
        gaugeValPath.style.stroke = "var(--rk-calc-warning)";
        alertMsg.style.display = "none";
    } else {
        gaugeValPath.style.stroke = "var(--rk-calc-success)";
        alertMsg.style.display = "none";
    }

    // Parameters
    let spacing = (wm2 > 70 || rkActiveR > 0.08) ? 10 : 15;
    document.getElementById('rk-res-spacing').innerText = spacing;

    let tz = 20 + (wm2 * (0.12 + rkActiveR));
    tz = Math.min(55, Math.max(28, tz));
    document.getElementById('rk-res-tz').innerText = Math.round(tz) + " °C";

    const pipe = area * (100 / spacing) * 1.05;
    document.getElementById('rk-res-pipe').innerText = Math.round(pipe);

    // Bars
    document.getElementById('rk-bar-w').style.width = (qWalls/total*100) + "%";
    document.getElementById('rk-bar-r').style.width = (qRoof/total*100) + "%";
    document.getElementById('rk-bar-f').style.width = (qFloor/total*100) + "%";
    document.getElementById('rk-bar-v').style.width = (qVent/total*100) + "%";
}

// Init on load
document.addEventListener('DOMContentLoaded', rkUpdateCalc);
</script>



<style>
/* STYLE DLA SEKCJI HERO I WSTĘPU */
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
}

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

/* 1. HERO BOX */
.premium-hero-box {
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--border-color);
    overflow: hidden;
    position: relative;
    margin-bottom: 50px;
}

.premium-hero-box::before {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    width: 350px;
    height: 350px;
    background: radial-gradient(circle, rgba(37,99,235,0.06) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
    transform: translate(30%, -30%);
    z-index: 0;
}

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

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

.hero-title {
    margin-top: 0;
    margin-bottom: 25px;
    font-size: 36px;
    font-weight: 900;
    line-height: 1.2;
    color: var(--primary);
}

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

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

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

/* 2. KARTY - 4 CZYNNIKI */
.factors-section {
    padding: 20px 0;
}

.factors-header {
    text-align: center;
    margin-bottom: 40px;
}

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

.factors-header p {
    font-size: 16px;
    color: #64748b;
    max-width: 700px;
    margin: 0 auto;
    line-height: 1.6;
}

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

.factor-card {
    background: #ffffff;
    border: 2px solid var(--border-color);
    border-radius: 20px;
    padding: 35px 30px;
    box-shadow: 0 10px 30px -10px rgba(0, 0, 0, 0.05);
    position: relative;
    overflow: hidden;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
}

.factor-card:hover {
    border-color: var(--accent);
    transform: translateY(-5px);
    box-shadow: 0 20px 40px -10px rgba(37, 99, 235, 0.15);
}

.factor-icon {
    width: 56px;
    height: 56px;
    background: #eff6ff;
    color: var(--accent);
    border-radius: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 28px;
    margin-bottom: 25px;
    transition: transform 0.4s;
}

.factor-card:hover .factor-icon {
    transform: scale(1.1) rotate(-5deg);
}

.factor-card h4 {
    margin: 0 0 15px 0;
    font-size: 19px;
    font-weight: 800;
    color: var(--primary);
    line-height: 1.3;
}

.factor-card p {
    margin: 0 0 20px 0;
    font-size: 15px;
    line-height: 1.65;
    color: #475569;
}

.factor-example {
    background: #f8fafc;
    padding: 18px 20px;
    border-radius: 12px;
    border-left: 4px solid var(--accent);
    font-size: 14px;
    color: #334155;
    line-height: 1.6;
    margin-top: auto;
}

.factor-example strong {
    color: var(--primary);
    display: block;
    margin-bottom: 5px;
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.formula-box {
    background: #ffffff;
    border: 1px dashed #cbd5e1;
    padding: 10px;
    border-radius: 8px;
    font-family: 'Courier New', Courier, monospace;
    font-size: 13px;
    font-weight: 700;
    color: var(--primary);
    margin-top: 10px;
    text-align: center;
}

/* Wyróżnienia kolorystyczne dla konkretnych kart */
.card-iso .factor-example { border-left-color: var(--success); }
.card-iso .factor-icon { background: #dcfce7; color: var(--success); }

.card-flow .factor-example { border-left-color: var(--accent); }

.card-len .factor-example { border-left-color: var(--danger); }
.card-len .factor-icon { background: #fee2e2; color: var(--danger); }

.card-pump .factor-example { border-left-color: var(--warning); }
.card-pump .factor-icon { background: #ffedd5; color: var(--warning); }

/* KREATYWNE CTA */
.rk-prm-cta-box {
    margin-top: 50px;
    background: linear-gradient(135deg, #2563eb 0%, #1e3a8a 100%);
    border-radius: 20px;
    padding: 40px 50px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 30px;
    color: #ffffff;
    box-shadow: 0 15px 30px -10px rgba(37, 99, 235, 0.4);
}

.rk-prm-cta-text h3 {
    margin: 0 0 10px 0;
    font-size: 24px;
    font-weight: 900;
}

.rk-prm-cta-text p {
    margin: 0;
    font-size: 15px;
    opacity: 0.9;
    max-width: 500px;
    line-height: 1.6;
}

.rk-prm-btn-massive {
    background: #ffffff;
    color: var(--accent);
    padding: 18px 30px;
    border-radius: 14px;
    font-size: 16px;
    font-weight: 900;
    text-transform: uppercase;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
    box-shadow: 0 10px 20px rgba(0,0,0,0.1);
    transition: all 0.3s;
}

.rk-prm-btn-massive:hover {
    transform: translateY(-4px);
    box-shadow: 0 15px 25px rgba(0,0,0,0.2);
    background: #f8fafc;
}

@media (max-width: 900px) {
    .hero-content { padding: 40px 30px; }
    .hero-title { font-size: 28px; }
    .factors-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-prm-cta-box { flex-direction: column; text-align: center; padding: 35px 25px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#projekt-hydrauliczny",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Jak wyniki z kalkulatora strat ciepła wpływają na projekt ogrzewania podłogowego?",
    "description": "Przełożenie obciążenia cieplnego na parametry hydrauliczne: rozstaw rur PEX, rotametry, długość pętli oraz dobór pompy ciepła i bufora.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-hydraulika",
    "name": "Wytyczne Hydrauliczne Projektowania Ogrzewania Podłogowego",
    "description": "Techniczne korelacje pomiędzy zapotrzebowaniem energetycznym budynku a ustawieniami przepływów, długością pętli i doborem elementów maszynowni.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego parametry",
      "rozstaw rur w ogrzewaniu podłogowym",
      "maksymalna długość pętli ogrzewania podłogowego",
      "ustawienie przepływów na rotametrach",
      "dobór pompy ciepła i bufora"
    ],
    "measurementTechnique": "Konwersja obciążenia cieplnego (W/m2) na przepływy masowe przy zakładanym spadku temperatury dT=5K oraz wyznaczanie oporów hydraulicznych pętli.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rozstaw rur: 20 cm dla <45 W/m2, 15 cm dla 50-80 W/m2, 10 cm dla stref brzegowych.",
        "Przepływ masowy (l/min) wyliczany z proporcji Mocy i delta T (ΔT).",
        "Maksymalna długość pojedynczej pętli rury 16x2.0 mm: 100-120 mb w celu ograniczenia oporów poniżej 20 kPa.",
        "Sumaryczna moc budynku warunkuje moc grzewczą pompy ciepła w punkcie biwalencyjnym."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-hydraulika",
    "name": "Przewodnik Parametrów Projektowych",
    "description": "Narzędzie tłumaczące inżynierskie przełożenie wyników audytu OZC na fizyczne elementy instalacji ogrzewania podłogowego (rury, rozdzielacze, bufory).",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="premium-intro-module" id="intro-hero-app">
    
    <div class="premium-hero-box">
        <div class="hero-content">
            <div class="hero-badge">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
                Inżynieria w praktyce
            </div>
            
            <h2 class="hero-title">Jak wyniki z kalkulatora strat ciepła wpływają na projekt ogrzewania podłogowego?</h2>
            
            <p class="hero-text">Wprowadzenie dokładnych danych z kalkulatora strat ciepła budynku jest fundamentem do wykonania poprawnego, profesjonalnego projektu instalacji ogrzewania podłogowego.</p>
            
            <p class="hero-text">Wynik całkowitego obciążenia cieplnego (<strong>Q<sub>total</sub></strong>) oraz wskaźniki jednostkowe (<strong>W/m²</strong>) determinują kluczowe parametry hydrauliczne i montażowe układu wodnego, eliminując kosztowne błędy wykonawcze.</p>
        </div>
    </div>

    <div class="factors-section">
        <div class="factors-header">
            <h2>Przełożenie wyników na 4 parametry hydrauliczne projektu</h2>
            <p>Zobacz, jak wartości uzyskane z kalkulatora bezpośrednio determinują dobór komponentów i zasady montażu w Twoim domu.</p>
        </div>
        
        <div class="factors-grid">
            
            <div class="factor-card card-iso">
                <div class="factor-icon">📏</div>
                <h4>Dobór rozstawu rur (zagęszczenie wężownicy)</h4>
                <p>Wskaźniki jednostkowe zapotrzebowania z kalkulatora (ilość W/m²) bezpośrednio decydują o zagęszczeniu rur. Prawidłowy dobór gwarantuje, że podłoga odda dokładnie tyle ciepła, ile potrzebuje pomieszczenie w mroźne dni.</p>
                <div class="factor-example">
                    <strong>Zasady rozstawu:</strong>
                    • &lt; 45 W/m² → Rozstaw co <strong>20 cm</strong> (domy energooszczędne).<br>
                    • 50-80 W/m² → Rozstaw co <strong>15 cm</strong> (standard).<br>
                    • &gt; 80 W/m² lub duże okna → Zagęszczenie co <strong>10 cm</strong> (strefy brzegowe).
                </div>
            </div>

            <div class="factor-card card-flow">
                <div class="factor-icon">⚖️</div>
                <h4>Wyznaczenie przepływów masowych (rotametry)</h4>
                <p>Dokładna moc pętli z OZC pozwala wyliczyć wymagany przepływ wody na belce rozdzielacza. Tę wartość hydraulik musi precyzyjnie ustawić na rotametrze podczas procedury równoważenia instalacji.</p>
                <div class="factor-example">
                    <strong>Przykład z projektu:</strong>
                    Dla pętli o mocy Q = 1200 W i spadku temperatury ΔT = 5 K, wymagany przepływ wynosi:
                    <div class="formula-box">
                        ṁ = Q / (c · ΔT) = 1200 / (1,163 · 5) = 206,3 kg/h ≈ 3,43 l/min
                    </div>
                </div>
            </div>

            <div class="factor-card card-len">
                <div class="factor-icon">🛑</div>
                <h4>Maksymalna długość pętli grzewczej</h4>
                <p>Projektant, znając przepływy i wynikowe straty ciepła, dzieli powierzchnię posadzki na sekcje. Robi to tak, aby nie przekroczyć granicznych oporów hydraulicznych, z którymi nie poradzi sobie pompa obiegowa.</p>
                <div class="factor-example">
                    <strong>Limit inżynierski:</strong>
                    Pojedyncza pętla z popularnej rury o średnicy 16 mm <strong>nie może przekroczyć 100-120 metrów długości</strong>. Dłuższa rura wygeneruje opory powyżej 20 kPa, powodując efekt „zimnej podłogi” na końcu obiegu w salonie.
                </div>
            </div>

            <div class="factor-card card-pump">
                <div class="factor-icon">⚙️</div>
                <h4>Dobór pompy ciepła i bufora</h4>
                <p>Całkowita moc budynku uzyskana z kalkulatora (np. 7,5 kW dla skrajnej temperatury -20°C) wskazuje wprost inwestorowi i projektantowi, jakiej klasy mocowej model pompy ciepła należy zakupić.</p>
                <div class="factor-example">
                    <strong>Dlaczego to jest ważne?</strong>
                    Precyzyjny dobór mocy zapobiega instalacji urządzeń zbyt dużych (przewymiarowanych), które ulegają przyspieszonym awariom z powodu tzw. taktowania kompresora. Wyznacza też wymaganą minimalną pojemność bufora dla procesu defrostu.
                </div>
            </div>

        </div>
    </div>

    <div class="rk-prm-cta-box">
        <div class="rk-prm-cta-text">
            <h3>Koniec z szacowaniem "na oko"!</h3>
            <p>Nie pozwól instalatorowi układać rur bez rzetelnego, matematycznego planu. Zainwestuj w pełny projekt inżynierski OZC, który zbilansuje każdy litr wody w Twoim domu. <strong>To jedyna gwarancja niskich rachunków.</strong></p>
        </div>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-prm-btn-massive">
            Zamów Kompletny Projekt
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>

</div>

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



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-panel: #1e293b;
    --rk-err-danger: #ef4444; 
    --rk-err-danger-light: #fef2f2;
    --rk-err-warn: #f59e0b; 
    --rk-err-safe: #10b981; 
    --rk-err-blue: #3b82f6; 
    --rk-err-bg: #ffffff;
    --rk-err-border: #e2e8f0;
    --rk-err-text: #334155;
    --rk-err-muted: #64748b;
}

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

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

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

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

.rk-err-title span { color: #f87171; }

.rk-err-subtitle {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    max-width: 700px;
    line-height: 1.6;
}

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

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

/* Lista błędów (Lewa Kolumna) */
.rk-err-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-err-btn {
    background: #ffffff;
    border: 1px solid var(--rk-err-border);
    padding: 18px 20px;
    border-radius: 16px;
    text-align: left;
    cursor: pointer;
    display: flex;
    align-items: flex-start;
    gap: 15px;
    position: relative;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-err-btn:hover {
    border-color: var(--rk-err-danger);
    transform: translateX(4px);
}

.rk-err-btn.active {
    background: var(--rk-err-danger-light);
    border-color: var(--rk-err-danger);
    box-shadow: inset 4px 0 0 var(--rk-err-danger), 0 10px 20px -5px rgba(239, 68, 68, 0.15);
}

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

.rk-err-btn.active .rk-err-icon {
    background: var(--rk-err-danger);
    color: #ffffff;
}

.rk-err-btn-text h4 {
    margin: 0 0 5px 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-err-dark);
}

.rk-err-btn-text p {
    margin: 0;
    font-size: 12px;
    color: var(--rk-err-muted);
    line-height: 1.4;
}

/* Karty CTA (Długi Ogon - Wypełnienie Pustego Miejsca na lewym pasku) */
.rk-err-cta-card {
    background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
    border-radius: 14px;
    padding: 18px 20px;
    text-decoration: none;
    display: flex;
    flex-direction: column;
    justify-content: center;
    position: relative;
    overflow: hidden;
    border: 1px solid #334155;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
    transition: transform 0.3s, box-shadow 0.3s, border-color 0.3s;
    margin-top: 5px;
}

.rk-err-cta-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 25px rgba(15, 23, 42, 0.4);
    border-color: var(--rk-err-danger);
}

.err-cta-badge {
    font-size: 10px;
    color: #cbd5e1;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.err-cta-badge::before {
    content: '';
    display: inline-block;
    width: 6px;
    height: 6px;
    background: var(--rk-err-danger);
    border-radius: 50%;
}

.err-cta-title {
    font-size: 14px;
    color: #ffffff;
    font-weight: 700;
    line-height: 1.5;
    padding-right: 25px;
}

.err-cta-arrow {
    position: absolute;
    right: 20px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--rk-err-danger);
    font-size: 18px;
    font-weight: bold;
    transition: right 0.3s;
}

.rk-err-cta-card:hover .err-cta-arrow {
    right: 15px;
}

/* Panel Detali (Prawa Kolumna - Zoptymalizowana pod Długi Ogon Tekstu) */
.rk-err-display {
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-err-border);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
}

.rk-err-panel {
    display: none;
    flex-direction: column;
    height: 100%;
}

.rk-err-panel.active {
    display: flex;
    animation: fadeInScale 0.4s ease-out forwards;
}

@keyframes fadeInScale {
    from { opacity: 0; transform: scale(0.98); }
    to { opacity: 1; transform: scale(1); }
}

/* Treść Panelu Pełnotekstowego */
.rk-err-content {
    padding: 40px 45px;
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
}

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

.rk-err-content p {
    margin: 0 0 18px 0;
    font-size: 15px;
    line-height: 1.8;
    color: var(--rk-err-text);
}

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

.rk-err-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--rk-err-danger);
    font-weight: 800;
    font-size: 15px;
    text-decoration: none;
    margin-top: 15px;
    padding-top: 25px;
    border-top: 1px dashed var(--rk-err-border);
    transition: color 0.3s;
}

.rk-err-link:hover { color: #991b1b; }
.rk-err-link svg { transition: transform 0.3s; }
.rk-err-link:hover svg { transform: translateX(5px); }

@media (max-width: 768px) {
    .rk-err-header { padding: 35px 25px; }
    .rk-err-title { font-size: 24px; }
    .rk-err-interactive { padding: 25px; }
    .rk-err-grid { grid-template-columns: 1fr; }
    .rk-err-content { padding: 30px 25px; }
    .rk-err-content h3 { font-size: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-bledy-szacowania",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Najczęstsze błędy inwestorów przy samodzielnym szacowaniu zapotrzebowania na ciepło",
    "description": "Kluczowe pułapki podczas obliczania strat cieplnych: ignorowanie izolacji brzegowej, błędna kubatura do strat wentylacyjnych, zła strefa klimatyczna oraz wpływ wylewki na bezwładność.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-bledy",
    "name": "Rejestr Błędów Szacunkowych Zapotrzebowania Cieplnego",
    "description": "Wykaz najczęstszych odchyleń w samodzielnych audytach energetycznych wpływających na przewymiarowanie pomp ciepła i nieefektywność instalacji płaszczyznowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błędy obliczeniowe OZC",
      "grubość wylewki a straty ciepła",
      "izolacja brzegowa podłogówki",
      "strefa klimatyczna w Polsce",
      "straty wentylacyjne kubatura",
      "straty ciepła przez duże przeszklenia",
      "temperatura w łazience 24 stopnie"
    ],
    "measurementTechnique": "Weryfikacja parametrów audytowych poprzez porównanie wskaźników normatywnych z błędnymi założeniami inwestorskimi.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Fałszywy wskaźnik 50 W/m2 przy dużych przeszkleniach północnych.",
        "Generowanie masywnej bezwładności przez wylewki grubsze niż 6 cm.",
        "Zawyżanie kubatury wentylacyjnej przez przyjmowanie wysokości stanu surowego.",
        "Przemarzanie stref przez brak ciągłości izolacji brzegowej.",
        "Przyjmowanie uniwersalnej strefy klimatycznej zamiast lokalnej temperatury projektowej.",
        "Ignorowanie wyższej temperatury docelowej (+24°C) dla łazienek w bilansie."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-error-scanner",
    "name": "Przegląd Błędów Obliczeniowych HVAC",
    "description": "Narzędzie nawigacyjne demaskujące wpływ niewłaściwych założeń architektonicznych i materiałowych na błędy w kalkulatorach zapotrzebowania cieplnego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container" id="rk-err-app">
    
    <div class="rk-err-header">
        <div class="rk-err-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Skaner Ryzyka Inwestycyjnego
        </div>
        <h2 class="rk-err-title">Najczęstsze błędy inwestorów przy <span>samodzielnym szacowaniu zapotrzebowania</span> na ciepło</h2>
        <p class="rk-err-subtitle">Nawet najlepszy kalkulator poda fałszywy wynik, jeśli wprowadzisz do niego błędne dane wejściowe. Zobacz 6 grzechów głównych, które zrujnują bilans energetyczny Twojego domu.</p>
    </div>

    <div class="rk-err-interactive">
        <div class="rk-err-grid">
            
            <div class="rk-err-list">
                
                <button class="rk-err-btn active" data-err="err-1">
                    <div class="rk-err-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line></svg>
                    </div>
                    <div class="rk-err-btn-text">
                        <h4>Ślepa wiara w internet</h4>
                        <p>Ignorowanie dużych okien</p>
                    </div>
                </button>

                <button class="rk-err-btn" data-err="err-2">
                    <div class="rk-err-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    </div>
                    <div class="rk-err-btn-text">
                        <h4>Bezwładność wylewki</h4>
                        <p>Opór grubego betonu</p>
                    </div>
                </button>

                <button class="rk-err-btn" data-err="err-3">
                    <div class="rk-err-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
                    </div>
                    <div class="rk-err-btn-text">
                        <h4>Błędy kubaturowe</h4>
                        <p>Stan surowy vs gotowy</p>
                    </div>
                </button>

                <button class="rk-err-btn" data-err="err-4">
                    <div class="rk-err-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M5 12.55a11 11 0 0 1 14.08 0"></path><path d="M1.42 9a16 16 0 0 1 21.16 0"></path><path d="M8.53 16.11a6 6 0 0 1 6.95 0"></path><line x1="12" y1="20" x2="12.01" y2="20"></line></svg>
                    </div>
                    <div class="rk-err-btn-text">
                        <h4>Mostki termiczne</h4>
                        <p>Brak izolacji brzegowej</p>
                    </div>
                </button>

                <button class="rk-err-btn" data-err="err-5">
                    <div class="rk-err-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path></svg>
                    </div>
                    <div class="rk-err-btn-text">
                        <h4>Zła strefa klimatyczna</h4>
                        <p>Błąd na ΔT i temperaturze</p>
                    </div>
                </button>

                <button class="rk-err-btn" data-err="err-6">
                    <div class="rk-err-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z"></path></svg>
                    </div>
                    <div class="rk-err-btn-text">
                        <h4>Niedogrzana łazienka</h4>
                        <p>Ignorowanie normy +24°C</p>
                    </div>
                </button>

                <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/" class="rk-err-cta-card">
                    <div class="err-cta-badge">Kalkulacje a okładzina</div>
                    <div class="err-cta-title">Panele czy Płytki? Poznaj wpływ na efektywność instalacji</div>
                    <div class="err-cta-arrow">➔</div>
                </a>

                <a href="https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/" class="rk-err-cta-card">
                    <div class="err-cta-badge">Ostrzeżenie Inżyniera</div>
                    <div class="err-cta-title">5 Błędów montażu, których nie naprawisz po wylewce</div>
                    <div class="err-cta-arrow">➔</div>
                </a>

            </div>

            <div class="rk-err-display">
                
                <div class="rk-err-panel active" id="err-1">
                    <div class="rk-err-content">
                        <h3>Przyjmowanie uśrednionych wskaźników z internetu</h3>
                        <p>Projektowanie instalacji na bazie ogólnikowego hasła „każdy nowy dom potrzebuje 50 W/m²” to proszenie się o kłopoty. Ignorowanie wielkości okien to błąd kardynalny. Dom z dużymi przeszkleniami od strony północnej może potrzebować w strefie przyokiennej potężnego zastrzyku mocy – w najchłodniejsze dni nawet do 90 W/m².</p>
                        <p><strong>Dlaczego duże okna tarasowe (np. typu HS) generują problemy?</strong> Przeszklenia mają zazwyczaj 3-4 krotnie gorszy współczynnik przenikania ciepła (U) niż dobrze ocieplona ściana zewnętrzna. Oznacza to, że salon z oknem na całą ścianę wychładza się drastycznie szybciej. Aby skompensować te <strong>straty ciepła przez duże przeszklenia</strong>, konieczne jest wyznaczenie precyzyjnej <strong>strefy brzegowej obwodowej w ogrzewaniu podłogowym</strong> z gęstszym rozstawem rur (najczęściej co 10 cm, a czasem nawet co 5 cm). Profesjonalny kalkulator strat ciepła budynku zawsze oddziela przegrody przezroczyste od pełnych ścian, co pozwala bezbłędnie zoptymalizować późniejszy projekt inżynierski.</p>
                        <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-do-domu-z-duzymi-przeszkleniami-jak-poradzic-sobie-ze-strefa-przy-oknach/" class="rk-err-link">
                            Zarządzaj strefą brzegową przy oknach 
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
                        </a>
                    </div>
                </div>

                <div class="rk-err-panel" id="err-2">
                    <div class="rk-err-content">
                        <h3>Nieuwzględnianie grubości i rodzaju wylewki</h3>
                        <p>Zbyt gruba wylewka betonowa (np. wylanie 10 cm standardowego betonu z miksokreta zamiast optymalnych 5-6 cm specjalistycznego jastrychu) drastycznie zaburza parametry. Kalkulator musi koniecznie uwzględniać ten opór cieplny warstwy nad rurami, inaczej oszacowana temperatura zasilania z kotła okaże się niewystarczająca do efektywnego przebicia grubej warstwy budulca i nagrzania posadzki.</p>
                        <p><strong>Jaka wylewka na ogrzewanie podłogowe sprawdzi się najlepiej?</strong> Wybór materiału ma kluczowy wpływ na roczne rachunki. Jastrych anhydrytowy charakteryzuje się znacznie wyższym współczynnikiem przewodzenia ciepła (λ) i płynną konsystencją, która idealnie, bez pęcherzyków powietrza otula rury PEX lub PERT. Znacznie mniejsza <strong>bezwładność cieplna w ogrzewaniu podłogowym</strong> z wylewką anhydrytową pozwala systemowi szybciej reagować na nagłe zmiany pogody, zmniejszając zużycie prądu przez pompę ciepła.</p>
                        <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" class="rk-err-link">
                            Optymalna grubość wylewki – parametry i normy
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
                        </a>
                    </div>
                </div>

                <div class="rk-err-panel" id="err-3">
                    <div class="rk-err-content">
                        <h3>Błędne obliczanie kubatury do strat wentylacyjnych</h3>
                        <p>To powszechny, klasyczny błąd przy samodzielnych wyliczeniach! Przyjmowanie wysokości pomieszczeń bezpośrednio z rzutów architektonicznych z fazy stanu surowego (np. wpisywanie w tabelę 2,80 m lub 3,00 m) zamiast wartości docelowej netto po wykonaniu grubych izolacji podłóg styropianem, wylaniu jastrychu oraz montażu sufitów podwieszanych (gdzie realna wysokość wynosi np. 2,55 m). Taki pozornie drobny błąd sztucznie podnosi wynik w kalkulatorze o kilkanaście procent.</p>
                        <p><strong>Jak oblicza się straty cieplne w budynkach z rekuperacją?</strong> Precyzyjna kubatura przestrzeni powietrznej jest fundamentalna przy wentylacji mechanicznej z odzyskiem ciepła. Markowy rekuperator potrafi odzyskać ponad 80% ciepła z wywiewanego powietrza z pomieszczeń. Błędnie zawyżona objętość zmusza do projektowania większych, niepotrzebnych przepływów powietrza oraz potężnie zakłamuje <strong>projektowe obciążenie cieplne (OZC)</strong>. Skutek? Kupujesz mocniejszą, dużo droższą pompę ciepła, która przez cały sezon będzie fatalnie taktować, pracując na zwolnionych obrotach.</p>
                        <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-err-link">
                            Poznaj wpływ rekuperacji na obciążenie OZC
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
                        </a>
                    </div>
                </div>

                <div class="rk-err-panel" id="err-4">
                    <div class="rk-err-content">
                        <h3>Ignorowanie izolacji brzegowej i fundamentowej</h3>
                        <p>Pomijanie mocy uciekającej niekontrolowanie przez boki i krawędzie nagrzanej płyty grzewczej do otoczenia to inżynierski koszmar. Brak grubej, elastycznej pianki dylatacyjnej umieszczonej na stykach wylewki ze ścianami zewnętrznymi generuje potężny obwodowy mostek termiczny. To tędy najczęściej i bezpowrotnie ucieka energia na zewnątrz budynku, co często wywołuje ekstremalne wychłodzenie cokołów i powstawanie pleśni.</p>
                        <p><strong>Ile styropianu pod ogrzewanie podłogowe na gruncie?</strong> Absolutną bazą jest doskonała izolacja termiczna kładziona bezpośrednio na folii przeciwwilgociowej (standard WT to obecnie około 15-20 cm twardego styropianu rzędu EPS 100). Jej głównym zadaniem jest zablokowanie przekazywania ciepła w dół do gruntu. Z kolei profesjonalna <strong>izolacja brzegowa i dylatacje w instalacji ogrzewania podłogowego</strong> pełnią podwójną misję: jako amortyzator mechaniczny przejmują naprężenia termiczne rozszerzającego się jastrychu (zapobiegając pękaniu posadzki), oraz stanowią kluczową fizyczną blokadę cieplną pomiędzy płytą a murowanymi, zimnymi ścianami.</p>
                        <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/" class="rk-err-link">
                            Sprawdź zasady dylatacji i izolacji brzegowej 
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
                        </a>
                    </div>
                </div>

                <div class="rk-err-panel" id="err-5">
                    <div class="rk-err-content">
                        <h3>Błędne przypisanie strefy klimatycznej</h3>
                        <p>Polska nie jest jednolita termicznie! Wpisanie do kalkulatora domyślnej wartości -20°C dla inwestycji w Szczecinie (Strefa I: -16°C) zafałszuje wynik w górę. Z kolei dla inwestycji w Suwałkach (Strefa V: -24°C) instalacja zostanie dramatycznie niedoszacowana, co doprowadzi do przemarzania budynku.</p>
                        <p><strong>Jak strefa klimatyczna w Polsce wpływa na wynik kalkulatora strat ciepła?</strong> Różnica temperatur (ΔT) między wnętrzem a otoczeniem jest głównym i najsilniejszym mnożnikiem we wzorze na przenikanie. Błędne określenie dokładnej <strong>projektowej temperatury zewnętrznej</strong> sprawi, że sztucznie wyliczone zapotrzebowanie wymusi na Tobie zakup pompy ciepła o niewłaściwej mocy – a przesterowane urządzenie szybciej ulegnie kosztownej awarii kompresora.</p>
                        <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" class="rk-err-link">
                            Sprawdź podział na strefy klimatyczne i normę PN-EN 12831
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
                        </a>
                    </div>
                </div>

                <div class="rk-err-panel" id="err-6">
                    <div class="rk-err-content">
                        <h3>Ignorowanie wyższej temperatury docelowej w łazience</h3>
                        <p>Inwestorzy często liczą całą powierzchnię domu ryczałtowo, przyjmując wszędzie standardowe +20°C. Tymczasem zgodnie ze sztuką inżynierską oraz prawem budowlanym, docelowa temperatura komfortu w łazience musi wynosić +24°C. Różnica zaledwie 4 stopni potężnie zmienia i zawyża bilans cieplny dla tego pomieszczenia.</p>
                        <p><strong>Dlaczego łazienka wymaga innych obliczeń strat ciepła w kalkulatorze budowlanym?</strong> Wyższa delta temperatur (ΔT) oznacza drastycznie szybszą ucieczkę energii przez ściany i wentylację. Co gorsza, w łazience użyteczna, fizyczna powierzchnia wylewki pod <strong>ogrzewanie podłogowe</strong> jest mocno ograniczona przez stałą zabudowę (wanna, brodzik bez progu, szafki, stelaże WC). Wymusza to na projektancie OZC skrajne zagęszczenie rur grzewczych (często co 5-10 cm) oraz w 90% przypadków dodanie dedykowanego ściennego grzejnika elektrycznego do suszenia ręczników.</p>
                        <a href="https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/" class="rk-err-link">
                            Zobacz jak gęsto układać rury podłogówki w łazience
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
                        </a>
                    </div>
                </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-err-btn');
    const panels = document.querySelectorAll('.rk-err-panel');

    // Obsługa zakładek błędów
    btns.forEach(btn => {
        btn.addEventListener('click', () => {
            btns.forEach(b => b.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            btn.classList.add('active');
            const targetId = btn.getAttribute('data-err');
            const targetPanel = document.getElementById(targetId);
            
            if(targetPanel) {
                targetPanel.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-panel: #1e293b;
    --rk-case-brand: #0284c7; /* Sky blue - techniczny i górski */
    --rk-case-brand-light: #f0f9ff;
    --rk-case-accent: #f59e0b; /* Bursztyn - ogrzewanie */
    --rk-case-danger: #ef4444; 
    --rk-case-success: #10b981; 
    --rk-case-bg: #ffffff;
    --rk-case-border: #e2e8f0;
    --rk-case-text: #334155;
    --rk-case-muted: #64748b;
}

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

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

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

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

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

.rk-case-intro {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    line-height: 1.7;
    max-width: 800px;
}

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

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

/* Kontrolki - Lewa strona */
.rk-case-controls {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

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

.rk-case-ctrl-title {
    font-size: 15px;
    font-weight: 900;
    color: var(--rk-case-dark);
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 8px;
}

/* Przełączniki Suwakowe */
.rk-case-slider-wrap {
    position: relative;
    padding-top: 10px;
}

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

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

.rk-case-labels {
    display: flex;
    justify-content: space-between;
    margin-top: 12px;
    font-size: 11px;
    font-weight: 800;
    color: var(--rk-case-muted);
}

/* Przełączniki Kafelkowe (Okładzina) */
.rk-case-btn-group {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

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

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

/* Wyniki - Prawa strona */
.rk-case-results {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

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

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

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

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

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

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

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

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

.rk-case-card.highlight .rk-case-card-val { color: #ffffff; font-size: 22px; }

/* Informacja podsumowująca i CTA */
.rk-case-content {
    padding: 0 50px 40px 50px;
    background: #f8fafc;
}

.rk-case-text-box {
    background: #ffffff;
    border: 1px solid var(--rk-case-border);
    border-radius: 16px;
    padding: 30px;
    margin-bottom: 20px;
}

.rk-case-text-box h3 {
    margin: 0 0 15px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-case-dark);
}

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

.rk-case-text-box p:last-child { margin: 0; }

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

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

@media (max-width: 768px) {
    .rk-case-header, .rk-case-interactive, .rk-case-content { padding: 30px 20px; }
    .rk-case-title { font-size: 24px; }
    .rk-case-grid { grid-template-columns: 1fr; gap: 30px; }
    .rk-case-visual { height: 180px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#case-study-rabka",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Praktyczne Case Study: Obliczenia strat ciepła dla domu 150 m² w Rabce-Zdroju",
    "description": "Zobacz, jak trudne warunki klimatyczne (Strefa V) w Rabce-Zdroju wpływają na kalkulator zapotrzebowania na ogrzewanie, dobór pompy ciepła i rozstaw rur u inwestora Pana Zbigniewa.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-rabka",
    "name": "Analiza OZC: Case Study 150 m² Rabka Zdrój",
    "description": "Dane z symulacji obciążenia cieplnego dla budynku o pow. 150 m2 zlokalizowanego w V strefie klimatycznej (-24°C). Porównanie izolacji WT2021 ze starym budownictwem.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator strat ciepła Rabka",
      "zapotrzebowanie na ogrzewanie 150m2",
      "dobór pompy ciepła strefa V",
      "rozstaw rur w ogrzewaniu podłogowym",
      "projektowe obciążenie cieplne OZC"
    ],
    "measurementTechnique": "Szacowanie heurystyczne dla V strefy klimatycznej (ΔT = 44K) pokazujące wpływ standardu termicznego na całkowitą moc instalacji hydraulicznej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Nowy dom WT2021: ok. 50 W/m2, Moc PC: 7.5 kW, Rozstaw rur: 15 cm.",
        "Dom po termo: ok. 80 W/m2, Moc PC: 12.0 kW, Rozstaw rur: 10 cm.",
        "Stary dom: ok. 140 W/m2, Moc 21.0 kW. Ogrzewanie podłogowe niewystarczające bez docieplenia."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-rabka",
    "name": "Symulator Case Study - Pan Zbigniew (Rabka-Zdrój)",
    "description": "Interaktywny moduł edukacyjny wizualizujący wpływ wyboru izolacji i okładziny na temperaturę zasilania i kosztorys wykonawczy.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-case-container" id="rk-case-app">
    
    <div class="rk-case-header">
        <div class="rk-case-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle></svg>
            Case Study: Pan Zbigniew (150 m²)
        </div>
        <h2 class="rk-case-title">Praktyczne Case Study: Obliczenia strat ciepła <span>dla domu w Rabce-Zdroju</span></h2>
        <p class="rk-case-intro">Pan Zbigniew z Rabki-Zdroju (V strefa klimatyczna, projektowa temperatura -24°C) planuje montaż instalacji podłogowej dla 150 m². Zobacz, jak jego decyzje dotyczące izolacji i wyboru posadzki na etapie budowy wpływają na wyniki w kalkulatorze.</p>
    </div>

    <div class="rk-case-interactive">
        <div class="rk-case-grid">
            
            <div class="rk-case-controls">
                
                <div class="rk-case-ctrl-box">
                    <h3 class="rk-case-ctrl-title">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-case-brand)" stroke-width="2.5"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path></svg>
                        Standard izolacji budynku
                    </h3>
                    <div class="rk-case-slider-wrap">
                        <input type="range" class="rk-case-range" id="rk-case-iso" min="1" max="3" step="1" value="3" oninput="rkUpdateCase()">
                        <div class="rk-case-labels">
                            <span style="color:var(--rk-case-danger)">Stary (Brak)</span>
                            <span style="color:var(--rk-case-accent)">Po Termo</span>
                            <span style="color:var(--rk-case-success)">WT 2021 (Nowy)</span>
                        </div>
                    </div>
                </div>

                <div class="rk-case-ctrl-box">
                    <h3 class="rk-case-ctrl-title">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-case-brand)" stroke-width="2.5"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect></svg>
                        Wybór okładziny posadzki
                    </h3>
                    <div class="rk-case-btn-group">
                        <div class="rk-case-opt-btn active" id="btn-case-tiles" onclick="rkSetCaseFloor('tiles')">Gres / Płytki</div>
                        <div class="rk-case-opt-btn" id="btn-case-panels" onclick="rkSetCaseFloor('panels')">Panele Laminowane</div>
                    </div>
                </div>

            </div>

            <div class="rk-case-results">
                
                <div class="rk-case-visual">
                    <svg class="rk-case-svg" viewBox="0 0 200 100">
                        <polygon points="0,100 40,30 80,100" fill="#1e293b"/>
                        <polygon points="60,100 120,20 180,100" fill="#334155"/>
                        <polygon points="140,100 180,50 220,100" fill="#1e293b"/>
                        <polygon points="40,30 25,55 55,55" fill="#f1f5f9"/>
                        <polygon points="120,20 95,50 145,50" fill="#e2e8f0"/>
                        
                        <rect x="75" y="60" width="50" height="40" fill="#ffffff" stroke="#cbd5e1" stroke-width="2"/>
                        <polygon points="70,60 100,40 130,60" fill="#ef4444" stroke="#dc2626" stroke-width="2"/>
                        <rect x="90" y="75" width="20" height="25" fill="#38bdf8" opacity="0.3" stroke="#0ea5e9" stroke-width="1"/>
                        
                        <rect x="20" y="20" width="10" height="40" rx="5" fill="#f8fafc" stroke="#cbd5e1" stroke-width="1"/>
                        <circle cx="25" cy="60" r="8" fill="#38bdf8"/>
                        <rect x="23" y="45" width="4" height="15" fill="#38bdf8"/>
                        <text x="38" y="64" fill="#f0f9ff" font-size="12" font-weight="bold">-24°C</text>
                    </svg>
                </div>

                <div class="rk-case-data-grid">
                    <div class="rk-case-card highlight">
                        <span class="rk-case-card-label">Zapotrzebowanie pokoju</span>
                        <span class="rk-case-card-val"><span id="val-case-wm2">50</span> <span style="font-size:14px">W/m²</span></span>
                    </div>
                    <div class="rk-case-card">
                        <span class="rk-case-card-label">Rozstaw rur PEX</span>
                        <span class="rk-case-card-val"><span id="val-case-spacing" style="color:var(--rk-case-brand)">co 15 cm</span></span>
                    </div>
                    <div class="rk-case-card">
                        <span class="rk-case-card-label">Moc Pompy Ciepła</span>
                        <span class="rk-case-card-val"><span id="val-case-kw">7.5</span> <span style="font-size:14px; color:var(--rk-case-muted)">kW</span></span>
                    </div>
                    <div class="rk-case-card">
                        <span class="rk-case-card-label">Temp. Zasilania (Tz)</span>
                        <span class="rk-case-card-val"><span id="val-case-tz" style="color:var(--rk-case-accent)">32°C</span></span>
                    </div>
                </div>

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

    <div class="rk-case-content">
        
        <div class="rk-case-text-box">
            <h3>Wnioski z obliczeń strat ciepła dla lokalizacji górskiej</h3>
            <p>Rabka-Zdrój, z uwagi na przynależność do V strefy klimatycznej (projektowa temperatura -24°C), nakłada na inwestora znacznie surowsze wymogi fizyczne niż centralna Polska. Gdyby Pan Zbigniew użył taniego kalkulatora online ustawionego domyślnie na strefę III (-20°C), jego <strong>projektowe obciążenie cieplne (OZC)</strong> zostałoby niedoszacowane o ponad 10-15%. W praktyce oznaczałoby to wybór zbyt słabej pompy ciepła, która nie dałaby rady ogrzać domu 150 m² podczas siarczystych, styczniowych mrozów.</p>
        </div>

        <div class="rk-case-text-box" style="margin-bottom:0; border-color:var(--rk-case-brand);">
            <h3>Wpływ posadzki i rozstawu na portfel</h3>
            <p>Zwróć uwagę, co się dzieje, gdy Pan Zbigniew (przy bardzo dobrej izolacji WT2021) postanawia zmienić gres na panele laminowane. Ze względu na opór cieplny paneli, woda wychodząca z kotłowni musi być podgrzana o kilka stopni wyżej (Tz rośnie), aby przebić się przez warstwę izolatora. To wymusza gęstszy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-case-link">rozstaw rur w ogrzewaniu podłogowym</a> (z 15 cm robi się 10 cm), co podnosi koszty zakupu materiału hydraulicznego na całe 150 m².</p>
            <p>Jeżeli dom byłby stary, bez termomodernizacji, instalacja podłogowa w tym chłodnym regionie w ogóle by sobie nie poradziła – podłoga musiałaby zostać rozgrzana do niekomfortowych 35°C, a i tak potrzebne byłoby wsparcie przez <strong>kocioł gazowy</strong> lub dodatkowe grzejniki ścienne.</p>
        </div>

    </div>
</div>

<script>
let caseFloorType = 'tiles';

function rkSetCaseFloor(type) {
    caseFloorType = type;
    document.getElementById('btn-case-tiles').classList.remove('active');
    document.getElementById('btn-case-panels').classList.remove('active');
    document.getElementById('btn-case-' + type).classList.add('active');
    rkUpdateCase();
}

function rkUpdateCase() {
    const isoLevel = parseInt(document.getElementById('rk-case-iso').value);
    
    // Dane dla 150m2 w Rabce (-24st)
    let wm2, totalKw, spacing, baseTz;

    if(isoLevel === 1) {
        // Stary dom
        wm2 = 140;
        totalKw = 21.0;
        spacing = "Brak moliwości";
        baseTz = 55;
    } else if(isoLevel === 2) {
        // Po termo
        wm2 = 80;
        totalKw = 12.0;
        spacing = "co 10 cm";
        baseTz = 38;
    } else {
        // Nowy dom WT2021
        wm2 = 50;
        totalKw = 7.5;
        spacing = "co 15 cm";
        baseTz = 32;
    }

    // Korekta dla paneli
    if(caseFloorType === 'panels') {
        baseTz += 4;
        if(isoLevel === 3) spacing = "co 10 cm"; // panele wymuszają gęstszy rurę
    }

    // Zabezpieczenie wizualne przy braku możliwości
    if(isoLevel === 1) {
        document.getElementById('val-case-wm2').innerHTML = wm2 + " <span style='font-size:14px; color:#ef4444'>(Krytyczne)</span>";
        document.getElementById('val-case-spacing').innerText = "Wymagane grzejniki";
        document.getElementById('val-case-spacing').style.color = "#ef4444";
        document.getElementById('val-case-tz').innerText = ">50°C";
    } else {
        document.getElementById('val-case-wm2').innerText = wm2;
        document.getElementById('val-case-spacing').innerText = spacing;
        document.getElementById('val-case-spacing').style.color = "var(--rk-case-brand)";
        document.getElementById('val-case-tz').innerText = baseTz + "°C";
    }
    
    document.getElementById('val-case-kw').innerText = totalKw;
}

// Inicjalizacja
document.addEventListener('DOMContentLoaded', rkUpdateCase);
</script>



<style>
:root {
    --rk-hl-dark: #0f172a;
    --rk-hl-panel: #1e293b;
    --rk-hl-brand: #f97316; /* Energetyczny pomarańcz (Ciepło) */
    --rk-hl-brand-light: #ffedd5;
    --rk-hl-blue: #0ea5e9;  /* Chłodny niebieski (Zimno/Wentylacja) */
    --rk-hl-green: #10b981; /* Zielony (Optymalizacja/Sukces) */
    --rk-hl-bg: #ffffff;
    --rk-hl-border: #e2e8f0;
    --rk-hl-text: #334155;
    --rk-hl-muted: #64748b;
}

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

/* Sekcja Cytatu Eksperckiego - Zoptymalizowana */
.rk-hl-quote-section {
    background: linear-gradient(145deg, var(--rk-hl-dark) 0%, #020617 100%);
    padding: 50px;
    position: relative;
    color: #ffffff;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    border-bottom: 5px solid var(--rk-hl-brand);
    overflow: hidden;
}

.rk-hl-quote-section::before {
    content: '"';
    position: absolute;
    top: -20px;
    left: 40px;
    font-size: 180px;
    font-family: serif;
    color: rgba(249, 115, 22, 0.1);
    line-height: 1;
    z-index: 0;
}

.rk-hl-quote-text {
    font-size: 24px;
    font-weight: 900;
    line-height: 1.5;
    margin: 0 0 25px 0;
    position: relative;
    z-index: 1;
    max-width: 850px;
}

.rk-hl-quote-text span {
    color: var(--rk-hl-brand);
}

.rk-hl-author-bar {
    display: flex;
    align-items: center;
    gap: 15px;
    position: relative;
    z-index: 1;
    background: rgba(255,255,255,0.05);
    padding: 10px 25px;
    border-radius: 99px;
    border: 1px solid rgba(255,255,255,0.1);
}

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

.rk-hl-author-info h3 {
    margin: 0;
    font-size: 16px;
    font-weight: 800;
    color: #ffffff;
}

.rk-hl-author-info p {
    margin: 0;
    font-size: 12px;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 1px;
    font-weight: 700;
}

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

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

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

/* Przyciski (Tabs) + Karta Długiego Ogona */
.rk-hl-tabs {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.rk-hl-tab-btn {
    background: #f8fafc;
    border: 1px solid var(--rk-hl-border);
    padding: 18px 20px;
    border-radius: 14px;
    text-align: left;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    gap: 15px;
    position: relative;
    overflow: hidden;
}

.rk-hl-tab-btn:hover {
    border-color: var(--rk-hl-brand);
    background: var(--rk-hl-brand-light);
}

.rk-hl-tab-btn.active {
    background: var(--rk-hl-brand);
    border-color: var(--rk-hl-brand);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(249, 115, 22, 0.4);
    transform: scale(1.02);
}

.rk-hl-tab-icon {
    width: 38px;
    height: 38px;
    background: #ffffff;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-hl-brand);
    flex-shrink: 0;
    transition: 0.3s;
    box-shadow: 0 2px 5px rgba(0,0,0,0.05);
}

.rk-hl-tab-btn.active .rk-hl-tab-icon {
    color: var(--rk-hl-brand);
}

.rk-hl-tab-text {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-hl-dark);
    transition: color 0.3s;
}

.rk-hl-tab-btn.active .rk-hl-tab-text {
    color: #ffffff;
}

/* Karta CTA (Długi Ogon - Wypełnienie Pustego Miejsca) */
.rk-hl-cta-card {
    background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
    border-radius: 14px;
    padding: 16px 20px;
    text-decoration: none;
    display: flex;
    flex-direction: column;
    justify-content: center;
    margin-top: 10px;
    position: relative;
    overflow: hidden;
    transition: transform 0.3s, box-shadow 0.3s;
    border: 1px solid #334155;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
}

.rk-hl-cta-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 25px rgba(15, 23, 42, 0.4);
    border-color: var(--rk-hl-brand);
}

.cta-badge {
    font-size: 10px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    margin-bottom: 5px;
    display: flex;
    align-items: center;
    gap: 5px;
}

.cta-badge::before {
    content: '';
    display: inline-block;
    width: 6px;
    height: 6px;
    background: var(--rk-hl-brand);
    border-radius: 50%;
}

.cta-title {
    font-size: 14px;
    color: #ffffff;
    font-weight: 700;
    line-height: 1.4;
    padding-right: 25px;
}

.cta-arrow {
    position: absolute;
    right: 20px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--rk-hl-brand);
    font-size: 18px;
    font-weight: bold;
    transition: right 0.3s;
}

.rk-hl-cta-card:hover .cta-arrow {
    right: 15px;
}

/* Panele z Treścią */
.rk-hl-panels-container {
    position: relative;
    border-radius: 16px;
    background: #f8fafc;
    border: 1px solid var(--rk-hl-border);
    overflow: hidden;
}

.rk-hl-panel {
    display: none;
    padding: 35px;
    animation: slideFadeIn 0.4s ease-out forwards;
}

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

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

.rk-hl-panel h4 {
    margin: 0;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-hl-dark);
    display: flex;
    align-items: center;
    gap: 10px;
}

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

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

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

/* Kontenery SVG */
.rk-hl-svg-box {
    width: 100%;
    height: 180px;
    background: var(--rk-hl-dark);
    border-radius: 12px;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 30px rgba(0,0,0,0.6);
    border: 3px solid #334155;
    overflow: hidden;
}

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

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

.rk-hl-author-photo {
    width: 75px;
    height: 75px;
    border-radius: 50%;
    border: 3px solid var(--rk-hl-brand);
    box-shadow: 0 4px 15px rgba(249, 115, 22, 0.2);
    object-fit: cover;
    flex-shrink: 0;
}

.rk-hl-author-desc {
    flex-grow: 1;
}

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

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

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

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

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

/* Animacje SVG */

/* Tab 1: Przenikanie */
.anim-heat-escape { opacity: 0; }
.rk-hl-panel.active .anim-heat-escape { animation: heatEscape 2s ease-out infinite; }
.rk-hl-panel.active .d-1 { animation-delay: 0s; }
.rk-hl-panel.active .d-2 { animation-delay: 0.5s; }
.rk-hl-panel.active .d-3 { animation-delay: 1s; }

@keyframes heatEscape {
    0% { transform: translate(0, 0); opacity: 1; stroke: #f97316; }
    100% { transform: translate(var(--tx), var(--ty)); opacity: 0; stroke: #ef4444; }
}

/* Tab 2: Wentylacja */
.anim-fan-spin { transform-origin: center; }
.rk-hl-panel.active .anim-fan-spin { animation: fanSpin 3s linear infinite; }
@keyframes fanSpin { to { transform: rotate(360deg); } }

.anim-air-flow { stroke-dasharray: 10 10; animation: dashFlow 1s linear infinite; }
@keyframes dashFlow { to { stroke-dashoffset: -20; } }

/* Tab 3: Mostki termiczne */
.anim-thermal-bridge { fill: transparent; transition: fill 0.5s; }
.rk-hl-panel.active .anim-thermal-bridge { animation: pulseRed 1.5s infinite alternate; }
@keyframes pulseRed {
    0% { fill: rgba(239, 68, 68, 0.2); stroke: rgba(239, 68, 68, 0.5); }
    100% { fill: rgba(239, 68, 68, 0.8); stroke: rgba(239, 68, 68, 1); box-shadow: 0 0 10px red; }
}

/* Tab 4: Wynik */
.anim-power-bar { transform: scaleY(0); transform-origin: bottom; transition: transform 1.2s cubic-bezier(0.34, 1.56, 0.64, 1) 0.3s; }
.rk-hl-panel.active .anim-power-bar { transform: scaleY(1); }

@media (max-width: 768px) {
    .rk-hl-quote-section { padding: 40px 20px; }
    .rk-hl-quote-text { font-size: 20px; }
    .rk-hl-interactive { padding: 30px 20px; }
    .rk-hl-grid { grid-template-columns: 1fr; gap: 20px; padding: 10px; }
    .rk-hl-tabs { flex-direction: row; flex-wrap: wrap; }
    .rk-hl-tab-btn { flex: 1 1 calc(50% - 5px); padding: 12px; flex-direction: column; text-align: center; gap: 8px; }
    .rk-hl-cta-card { flex: 1 1 100%; margin-top: 5px; }
    .rk-hl-tab-text { font-size: 13px; }
    .rk-hl-panel { padding: 25px 20px; }
    .rk-hl-svg-box { height: 150px; }
    
    /* Responsive dla stopki z autorem */
    .rk-hl-author-footer { flex-direction: column; text-align: center; padding: 30px 20px; align-items: center; }
    .rk-hl-social-links { justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-quote-summary",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Eksperckie Podsumowanie - Składowe Bilansu Cieplnego Budynku",
    "description": "Brak rzetelnych obliczeń strat ciepła to najdroższy błąd inwestora. Poznaj 4 główne składowe zapotrzebowania energetycznego warunkujące dobór pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "Inżynier HVAC & Audytor OZE",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-heat-loss",
    "name": "Parametry Bilansu Cieplnego Budynku (PN-EN 12831)",
    "description": "Analiza składowych strat ciepła: przenikanie przez przegrody (U), straty wentylacyjne, wpływ mostków cieplnych oraz optymalizacja mocy grzewczej podłogówki.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "straty ciepła przez przenikanie",
      "straty wentylacyjne z rekuperacją",
      "obliczenia mostków termicznych",
      "zapotrzebowanie mocy pompy ciepła",
      "wylewka i panele a moc podłogówki"
    ],
    "measurementTechnique": "Algorytm zgodny z normą PN-EN 12831 wyliczający sumaryczne obciążenie cieplne na podstawie izolacyjności przegród, krotności wymiany powietrza oraz oporu cieplnego posadzki.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przenikanie (Qtr): Główna ucieczka energii przez ściany i okna. Decyduje o nim współczynnik U.",
        "Wentylacja (Qv): Straty powietrzne. Wentylacja grawitacyjna to nawet 40% strat, rekuperacja obniża je diametralnie.",
        "Mostki cieplne: Nieszczelności izolacji, standardowo dolicza się 10-15% nawiązki do zapotrzebowania bazowego.",
        "Moc końcowa: Wyznacza precyzyjny dobór mocy nominalnej pompy ciepła, zapobiegając taktowaniu."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-heat-loss-guide",
    "name": "Interaktywny Przewodnik: Składowe Strat Ciepła",
    "description": "Narzędzie nawigacyjne rozbijające trudne wzory matematyczne OZC na 4 zrozumiałe czynniki decyzyjne z wykorzystaniem dynamicznych schematów SVG oraz linkowań optymalizacyjnych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-hl-container" id="rk-hl-app">
    
    <div class="rk-hl-quote-section">
        <h2 class="rk-hl-quote-text">
            Brak rzetelnych obliczeń OZC to <span>najdroższy błąd</span> inwestora. Zgadywanie rozstawu rur, bagatelizowanie izolacji czy oporu paneli podłogowych zmusza pompę ciepła do pracy na nieefektywnych parametrach. <span>Matematyka budynku nigdy nie wybacza szacowania „na oko”.</span>
        </h2>
        <div class="rk-hl-author-bar">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-hl-avatar" loading="lazy">
            <div class="rk-hl-author-info">
                <h3>Robert Kucharski</h3>
                <p>Inżynier HVAC & Audytor OZE</p>
            </div>
        </div>
    </div>

    <div class="rk-hl-interactive">
        <h3 class="rk-hl-interactive-title">Anatomia Bilansu Cieplnego (4 Składowe)</h3>
        
        <div class="rk-hl-grid">
            
            <div class="rk-hl-tabs">
                
                <button class="rk-hl-tab-btn active" data-tab="hl-1">
                    <div class="rk-hl-tab-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
                    </div>
                    <span class="rk-hl-tab-text">1. Przenikanie (Ściany/Okna)</span>
                </button>

                <button class="rk-hl-tab-btn" data-tab="hl-2">
                    <div class="rk-hl-tab-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M9.59 4.59A2 2 0 1 1 11 8H2m10.59 11.41A2 2 0 1 0 14 16H2m15.73-8.27A2.5 2.5 0 1 1 19.5 12H2"></path></svg>
                    </div>
                    <span class="rk-hl-tab-text">2. Straty Wentylacyjne</span>
                </button>

                <button class="rk-hl-tab-btn" data-tab="hl-3">
                    <div class="rk-hl-tab-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><circle cx="12" cy="13" r="2"></circle><line x1="12" y1="15" x2="12" y2="18"></line></svg>
                    </div>
                    <span class="rk-hl-tab-text">3. Mostki Cieplne (+10%)</span>
                </button>

                <button class="rk-hl-tab-btn" data-tab="hl-4">
                    <div class="rk-hl-tab-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                    </div>
                    <span class="rk-hl-tab-text">4. Wynik i Dobór Mocy</span>
                </button>

                <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/" class="rk-hl-cta-card">
                    <div class="cta-badge">Analiza OZC a okładzina</div>
                    <div class="cta-title">Panele czy Płytki? Opór cieplny a efektywność podłogówki</div>
                    <div class="cta-arrow">➔</div>
                </a>

            </div>

            <div class="rk-hl-panels-container">
                
                <div class="rk-hl-panel active" id="hl-1">
                    <h4>
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--rk-hl-brand)" stroke-width="2.5"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                        Straty przez przenikanie (U)
                    </h4>
                    <p>Wartość bazowa wyliczana ze wzoru (A × U × ΔT). Kluczowe znaczenie ma jakość izolacji (<a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" class="rk-hl-link">zgodnie z PN-EN 12831</a>) oraz prawidłowe przyjęcie strefy klimatycznej. Błąd w grubości styropianu drastycznie podnosi ucieczkę energii w zimowe noce.</p>
                    <div class="rk-hl-svg-box">
                        <svg class="rk-svg-content" viewBox="0 0 200 100">
                            <path d="M80 70 V 40 L100 25 L120 40 V 70 Z" fill="none" stroke="#64748b" stroke-width="3" stroke-linejoin="round"/>
                            <rect x="92" y="55" width="16" height="15" fill="none" stroke="#64748b" stroke-width="2"/>
                            <g style="--tx: -30px; --ty: -10px;" class="anim-heat-escape d-1">
                                <path d="M70 45 L50 40" stroke-width="3" stroke-linecap="round"/>
                                <polyline points="55 35 50 40 55 45" stroke-width="3" fill="none" stroke-linejoin="round"/>
                            </g>
                            <g style="--tx: 30px; --ty: -10px;" class="anim-heat-escape d-2">
                                <path d="M130 45 L150 40" stroke-width="3" stroke-linecap="round"/>
                                <polyline points="145 35 150 40 145 45" stroke-width="3" fill="none" stroke-linejoin="round"/>
                            </g>
                            <g style="--tx: 0px; --ty: -30px;" class="anim-heat-escape d-3">
                                <path d="M100 20 L100 0" stroke-width="3" stroke-linecap="round"/>
                                <polyline points="95 5 100 0 105 5" stroke-width="3" fill="none" stroke-linejoin="round"/>
                            </g>
                        </svg>
                    </div>
                </div>

                <div class="rk-hl-panel" id="hl-2">
                    <h4>
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--rk-hl-blue)" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                        Grawitacja vs Rekuperacja
                    </h4>
                    <p>W tradycyjnym domu wentylacja grawitacyjna wyrzuca w powietrze aż 40% wyprodukowanego ciepła! Zastosowanie odzysku ciepła (<a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/" class="rk-hl-link">rekuperacji</a>) redukuje to zapotrzebowanie drastycznie, pozwalając na montaż mniejszej pompy obiegowej.</p>
                    <div class="rk-hl-svg-box">
                        <svg class="rk-svg-content" viewBox="0 0 200 100">
                            <rect x="75" y="30" width="50" height="40" rx="4" fill="none" stroke="#94a3b8" stroke-width="3"/>
                            <line x1="75" y1="50" x2="125" y2="50" stroke="#94a3b8" stroke-width="2" stroke-dasharray="4 4"/>
                            <line x1="100" y1="30" x2="100" y2="70" stroke="#94a3b8" stroke-width="2" stroke-dasharray="4 4"/>
                            <path class="anim-air-flow" d="M 30 40 L 70 40" stroke="#0ea5e9" stroke-width="4" stroke-linecap="round"/>
                            <polyline points="65 35 70 40 65 45" fill="none" stroke="#0ea5e9" stroke-width="4" stroke-linejoin="round"/>
                            <path class="anim-air-flow" d="M 125 40 L 165 40" stroke="#f97316" stroke-width="4" stroke-linecap="round"/>
                            <polyline points="160 35 165 40 160 45" fill="none" stroke="#f97316" stroke-width="4" stroke-linejoin="round"/>
                            <g class="anim-fan-spin" style="transform-origin: 100px 50px;">
                                <circle cx="100" cy="50" r="12" fill="none" stroke="#64748b" stroke-width="2"/>
                                <line x1="100" y1="38" x2="100" y2="62" stroke="#64748b" stroke-width="2"/>
                                <line x1="88" y1="50" x2="112" y2="50" stroke="#64748b" stroke-width="2"/>
                            </g>
                        </svg>
                    </div>
                </div>

                <div class="rk-hl-panel" id="hl-3">
                    <h4>
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#ef4444" stroke-width="2.5"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
                        Pułapka Mostków Termicznych
                    </h4>
                    <p>Żaden dom nie jest idealnym termosem. Brak izolacji na wieńcach, niedokładne ocieplenie podłogi na gruncie i nadproża okienne wymagają doliczenia od 10% do 15% narzutu w obliczeniach inżynierskich. Ich ignorowanie kończy się niedogrzaniem pokoi.</p>
                    <div class="rk-hl-svg-box">
                        <svg class="rk-svg-content" viewBox="0 0 200 100">
                            <path d="M 50 80 L 150 80 L 150 20" fill="none" stroke="#64748b" stroke-width="15" stroke-linecap="square"/>
                            <path d="M 50 65 L 135 65 L 135 20" fill="none" stroke="#334155" stroke-width="15" stroke-linecap="square"/>
                            <circle class="anim-thermal-bridge" cx="142" cy="72" r="15" stroke-width="3"/>
                            <path d="M 120 90 L 140 75" fill="none" stroke="#ef4444" stroke-width="2" stroke-dasharray="3 3"/>
                        </svg>
                    </div>
                </div>

                <div class="rk-hl-panel" id="hl-4">
                    <h4>
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--rk-hl-green)" stroke-width="2.5"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                        Wynik: Niska Temperatura Zasilania
                    </h4>
                    <p>Zsumowanie wszystkich wartości daje ostateczny wskaźnik mocy (np. 6,5 kW). Prawidłowy bilans budynku jest <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/" class="rk-hl-link">fundamentem komfortu termicznego</a> i pozwala obniżyć <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/" class="rk-hl-link">temperaturę zasilania na kotłowni do optymalnych 35°C</a>.</p>
                    <div class="rk-hl-svg-box">
                        <svg class="rk-svg-content" viewBox="0 0 200 100">
                            <line x1="40" y1="80" x2="160" y2="80" stroke="#94a3b8" stroke-width="2"/>
                            <line x1="40" y1="80" x2="40" y2="20" stroke="#94a3b8" stroke-width="2"/>
                            <line x1="35" y1="40" x2="160" y2="40" stroke="#10b981" stroke-width="2" stroke-dasharray="5 5"/>
                            <text x="165" y="44" fill="#10b981" font-size="12" font-weight="bold">MAX 35°C</text>
                            <rect class="anim-power-bar" x="60" y="50" width="20" height="30" fill="#3b82f6" rx="2" style="transition-delay: 0.1s;"/>
                            <rect class="anim-power-bar" x="90" y="45" width="20" height="35" fill="#f59e0b" rx="2" style="transition-delay: 0.3s;"/>
                            <rect class="anim-power-bar" x="120" y="40" width="20" height="40" fill="#10b981" rx="2" style="transition-delay: 0.5s;"/>
                        </svg>
                    </div>
                </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tabs = document.querySelectorAll('.rk-hl-tab-btn');
    const panels = document.querySelectorAll('.rk-hl-panel');

    tabs.forEach(tab => {
        tab.addEventListener('click', () => {
            // Czyszczenie klas aktywnych
            tabs.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Ustawienie aktualnego elementu
            tab.classList.add('active');
            const targetId = tab.getAttribute('data-tab');
            const targetPanel = document.getElementById(targetId);
            
            if(targetPanel) {
                // Restart animacji CSS dla wykresów SVG
                void targetPanel.offsetWidth;
                targetPanel.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-qa-dark: #0f172a;
    --rk-qa-card: #ffffff;
    --rk-qa-emerald: #059669; /* Ekspercki Szmaragd */
    --rk-qa-emerald-light: #d1fae5;
    --rk-qa-accent: #0284c7; /* Cyjan dla przełamania */
    --rk-qa-bg: #f8fafc;
    --rk-qa-border: #cbd5e1;
    --rk-qa-text: #334155;
}

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

/* Nagłówek */
.rk-qa-header {
    background: linear-gradient(135deg, var(--rk-qa-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 5px solid var(--rk-qa-emerald);
}

.rk-qa-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(5, 150, 105, 0.2);
    color: #6ee7b7;
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(110, 231, 183, 0.2);
}

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

.rk-qa-title span { color: #34d399; }

/* Akordeon */
.rk-qa-interactive {
    padding: 40px 50px;
}

.rk-qa-list {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.rk-qa-item {
    background: var(--rk-qa-card);
    border: 1px solid var(--rk-qa-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.3s ease;
}

.rk-qa-item.active {
    border-color: var(--rk-qa-emerald);
    box-shadow: 0 10px 20px -5px rgba(5, 150, 105, 0.1);
}

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

.rk-qa-question:hover {
    background: #f1f5f9;
}

.rk-qa-item.active .rk-qa-question {
    background: var(--rk-qa-emerald-light);
    color: #064e3b;
}

.rk-qa-icon {
    flex-shrink: 0;
    width: 36px;
    height: 36px;
    border-radius: 10px;
    background: #e2e8f0;
    color: var(--rk-qa-dark);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background 0.3s, color 0.3s;
}

.rk-qa-item.active .rk-qa-icon {
    background: var(--rk-qa-emerald);
    color: #ffffff;
    transform: rotate(135deg);
}

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

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

.rk-qa-answer-inner {
    overflow: hidden;
}

.rk-qa-content {
    padding: 30px;
    border-top: 1px solid var(--rk-qa-border);
    display: grid;
    grid-template-columns: 1fr 220px;
    gap: 35px;
    align-items: center;
}

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

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

.rk-link {
    color: var(--rk-qa-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid transparent;
    transition: all 0.3s;
}

.rk-link:hover {
    border-bottom-color: var(--rk-qa-accent);
}

/* Wizualizacje SVG */
.rk-qa-visual {
    background: #f8fafc;
    border-radius: 16px;
    padding: 15px;
    height: 150px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px dashed var(--rk-qa-border);
    position: relative;
}

.rk-qa-item.active .rk-qa-visual {
    border-color: var(--rk-qa-emerald);
    background: #ffffff;
}

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

/* Animacje SVG */
/* 1. OZC vs Kalkulator */
.anim-scan { stroke-dasharray: 150; stroke-dashoffset: 150; transition: stroke-dashoffset 1s ease-in-out; }
.rk-qa-item.active .anim-scan { stroke-dashoffset: 0; stroke: var(--rk-qa-emerald); }

/* 2. PEX Length */
.anim-grid-line { stroke-dasharray: 50; stroke-dashoffset: 50; }
.rk-qa-item.active .anim-grid-line { animation: drawGrid 1.5s forwards; stroke: var(--rk-qa-accent); }
@keyframes drawGrid { to { stroke-dashoffset: 0; } }

/* 3. Thermometer */
.anim-mercury { transform: scaleY(0.4); transform-origin: bottom; transition: transform 1s cubic-bezier(0.34, 1.56, 0.64, 1); fill: #ef4444; }
.rk-qa-item.active .anim-mercury { transform: scaleY(0.7); }

/* 4. Density */
.anim-dense-pipe { transition: transform 0.5s ease-out; }
.rk-qa-item.active .pipe-l { transform: translateX(5px); }
.rk-qa-item.active .pipe-r { transform: translateX(-5px); stroke: #ef4444; }

/* 5. Screed */
.anim-screed-layer { opacity: 0.3; transition: opacity 1s, fill 1s; }
.rk-qa-item.active .anim-screed-layer { opacity: 1; fill: #d1fae5; }

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

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "FAQ – Eksperckie odpowiedzi o straty ciepła i parametry podłogówki",
    "description": "Najczęstsze pytania inwestorów dotyczące OZC, rozstawu rur PEX, temperatur zasilania oraz wpływu wylewki na działanie kalkulatora strat ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-faq",
    "name": "Zestawienie normatywne: Zapotrzebowanie cieplne a parametry podłogówki",
    "description": "Techniczne dane referencyjne wiążące zapotrzebowanie budynku na moc (W/m2) z ilością rury, temperaturą maksymalną zasilania oraz wymaganiami OZC.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator strat ciepła online",
      "zapotrzebowanie W/m2",
      "zużycie rury PEX na m2",
      "maksymalna temperatura podłogówki",
      "wylewka anhydrytowa a moc"
    ],
    "measurementTechnique": "Obliczenia analityczne i heurystyczne oparte na wytycznych normy PN-EN 12831 oraz PN-EN 1264, porównujące wyniki z kalkulatorów internetowych z profesjonalnym OZC.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rozstaw 15 cm wymaga 6,7 mb rury PEX na 1 m2.",
        "Rozstaw 10 cm wymaga 10 mb rury PEX na 1 m2.",
        "Maksymalna temperatura zasilania podłogówki wg normy to 50 stopni Celsjusza.",
        "Graniczne zapotrzebowanie cieplne dla samej podłogówki to ok. 100 W/m2."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-faq",
    "name": "Interaktywne FAQ - Parametry Projektowe Ogrzewania",
    "description": "Interaktywny moduł edukacyjny prezentujący zagadnienia hydrauliczne i cieplne przy użyciu animacji wektorowych i technicznych zestawień danych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy darmowy kalkulator strat ciepła online może zastąpić oficjalne OZC?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, darmowy kalkulator służy wyłącznie do wstępnej weryfikacji koncepcji i oszacowania kosztów. Oficjalne Obliczeniowe Zapotrzebowanie na Ciepło (OZC) wykonane przez inżyniera jest dokumentem prawnym wymaganym przy wnioskach o dotacje z programu „Czyste Powietrze” oraz przy precyzyjnym doborze pompy ciepła."
        }
      },
      {
        "@type": "Question",
        "name": "Ile rury PEX potrzeba na 1 m² ogrzewania podłogowego?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Ilość rury zależy ściśle od jej rozstawu wynikającego z obliczeń strat ciepła. Przy rozstawie co 15 cm zużycie wynosi średnio 6,7 metra bieżącego na m², natomiast przy zagęszczeniu co 10 cm (np. w łazienkach lub strefach brzegowych) wzrasta do 10 metrów bieżących na m²."
        }
      },
      {
        "@type": "Question",
        "name": "Jaka jest maksymalna temperatura zasilania dla ogrzewania podłogowego?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Maksymalna dopuszczalna temperatura zasilania wodą grzewczą wynosi 50°C według normy PN-EN 1264. W optymalnie zaprojektowanych systemach dla domów energooszczędnych temperatura ta nie przekracza jednak 35°C w najzimniejszy dzień roku."
        }
      },
      {
        "@type": "Question",
        "name": "Czy przy wysokim zapotrzebowaniu na ciepło (>100 W/m²) można w nieskończoność zagęszczać rury?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie. Zagęszczanie rur ma swoje fizyczne i hydrauliczne granice. Zejście poniżej rozstawu 10 cm na całej powierzchni generuje ogromne opory, których nie pokona standardowa pompa obiegowa. Przy stratach rzędu 100 W/m² konieczna jest termomodernizacja lub wsparcie instalacji tradycyjnymi grzejnikami ściennymi."
        }
      },
      {
        "@type": "Question",
        "name": "Jak rodzaj wylewki wpływa na skuteczność wyników z kalkulatora?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Wybór wylewki drastycznie zmienia parametry pracy. Wylewka anhydrytowa ma niemal dwukrotnie wyższy współczynnik przewodzenia ciepła niż beton z miksokreta. Pozwala to na znacznie szybsze przekazywanie energii do pomieszczenia i utrzymanie niższej, bardziej oszczędnej temperatury zasilania na źródle ciepła."
        }
      }
    ]
  }
]
</script>

<div class="rk-qa-container" id="rk-qa-app">
    <div class="rk-qa-header">
        <div class="rk-qa-badge">
            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            Inżynierskie Q&A
        </div>
        <h2 class="rk-qa-title">FAQ – <span>Najczęściej zadawane pytania</span></h2>
    </div>

    <div class="rk-qa-interactive">
        <div class="rk-qa-list">
            
            <div class="rk-qa-item">
                <button class="rk-qa-question">
                    <span>1. Czy darmowy kalkulator strat ciepła online może zastąpić oficjalne OZC?</span>
                    <div class="rk-qa-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg></div>
                </button>
                <div class="rk-qa-answer-wrapper">
                    <div class="rk-qa-answer-inner">
                        <div class="rk-qa-content">
                            <div class="rk-qa-text">
                                Nie, darmowy kalkulator służy wyłącznie do <strong>wstępnej weryfikacji koncepcji</strong> i oszacowania kosztów. Oficjalne <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-link">Obliczeniowe Zapotrzebowanie na Ciepło (OZC)</a> wykonane przez wykwalifikowanego inżyniera jest szczegółowym dokumentem prawnym. Jest on bezwzględnie wymagany przy wnioskach o dotacje z programu „Czyste Powietrze” oraz stanowi jedyną bezpieczną podstawę przy precyzyjnym doborze mocy pompy ciepła.
                            </div>
                            <div class="rk-qa-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="20" y="10" width="60" height="50" rx="4" fill="none" stroke="#94a3b8" stroke-width="3"/>
                                    <path d="M30 25 h30 M30 35 h40 M30 45 h20" stroke="#cbd5e1" stroke-width="3" stroke-linecap="round"/>
                                    <path class="anim-scan" d="M10 35 h80" stroke-width="4" stroke-linecap="round"/>
                                    <circle cx="70" cy="45" r="8" fill="#10b981"/>
                                    <path d="M66 45 l3 3 l5 -5" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-qa-item">
                <button class="rk-qa-question">
                    <span>2. Ile rury PEX potrzeba na 1 m² ogrzewania podłogowego?</span>
                    <div class="rk-qa-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg></div>
                </button>
                <div class="rk-qa-answer-wrapper">
                    <div class="rk-qa-answer-inner">
                        <div class="rk-qa-content">
                            <div class="rk-qa-text">
                                Ilość rury zależy ściśle od jej rozstawu wynikającego z obliczeń strat ciepła. Przy najpopularniejszym rozstawie <strong>co 15 cm</strong> zużycie wynosi średnio <strong>6,7 metra bieżącego na m²</strong>. Z kolei przy zagęszczeniu <strong>co 10 cm</strong> (stosowanym np. w łazienkach, strefach brzegowych lub pod pompy ciepła) wzrasta do <strong>10 mb na m²</strong>. W precyzyjnym wyliczeniu materiału na cały dom pomoże Ci dedykowany <a href="https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/" class="rk-link">kalkulator długości rur</a>.
                            </div>
                            <div class="rk-qa-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <path class="anim-grid-line" d="M20 20 h60 M20 35 h60 M20 50 h60" fill="none" stroke-width="3" stroke-linecap="round" style="animation-delay: 0.1s;"/>
                                    <path class="anim-grid-line" d="M30 10 v50 M50 10 v50 M70 10 v50" fill="none" stroke-width="3" stroke-linecap="round" style="animation-delay: 0.4s;"/>
                                    <circle cx="50" cy="35" r="15" fill="none" stroke="var(--rk-qa-emerald)" stroke-width="4" stroke-dasharray="10 5"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-qa-item">
                <button class="rk-qa-question">
                    <span>3. Jaka jest maksymalna temperatura zasilania dla ogrzewania podłogowego?</span>
                    <div class="rk-qa-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg></div>
                </button>
                <div class="rk-qa-answer-wrapper">
                    <div class="rk-qa-answer-inner">
                        <div class="rk-qa-content">
                            <div class="rk-qa-text">
                                Maksymalna, bezpieczna dla jastrychu i instalacji temperatura zasilania wodą grzewczą wynosi <strong>50°C</strong> – wartość tę ściśle reguluje norma <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/" class="rk-link">PN-EN 1264</a>. Warto jednak pamiętać, że w nowym budownictwie o dobrym standardzie izolacji, optymalnie zaprojektowany system rzadko przekracza <strong>32–35°C</strong> w najzimniejsze dni w roku, co gwarantuje najwyższy komfort i energooszczędność.
                            </div>
                            <div class="rk-qa-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="40" y="10" width="20" height="40" rx="10" fill="none" stroke="#94a3b8" stroke-width="3"/>
                                    <circle cx="50" cy="50" r="12" fill="none" stroke="#94a3b8" stroke-width="3"/>
                                    <rect class="anim-mercury" x="44" y="20" width="12" height="30" rx="6"/>
                                    <circle cx="50" cy="50" r="8" fill="#ef4444"/>
                                    <line x1="65" y1="20" x2="75" y2="20" stroke="#ef4444" stroke-width="2"/>
                                    <text x="80" y="24" font-size="12" fill="#ef4444" font-weight="bold">50°</text>
                                    <line x1="65" y1="35" x2="70" y2="35" stroke="#10b981" stroke-width="2"/>
                                    <text x="75" y="39" font-size="12" fill="#10b981" font-weight="bold">35°</text>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-qa-item">
                <button class="rk-qa-question">
                    <span>4. Czy przy wysokim zapotrzebowaniu na ciepło (>100 W/m²) można w nieskończoność zagęszczać rury?</span>
                    <div class="rk-qa-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg></div>
                </button>
                <div class="rk-qa-answer-wrapper">
                    <div class="rk-qa-answer-inner">
                        <div class="rk-qa-content">
                            <div class="rk-qa-text">
                                Zdecydowanie <strong>nie</strong>. <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-link">Rozstaw rur w ogrzewaniu podłogowym</a> ma swoje fizyczne i hydrauliczne ograniczenia. Zejście poniżej rozstawu 10 cm na dużej powierzchni generuje tak potężne opory tłoczenia wody, z którymi nie poradzi sobie standardowa pompa obiegowa, a ponadto powierzchnia posadzki przekroczy dopuszczalne 29°C. Jeśli zapotrzebowanie budynku przebija 100 W/m², system płaszczyznowy musi być wspomagany grzejnikami lub dom wymaga bezwzględnej termomodernizacji.
                            </div>
                            <div class="rk-qa-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <circle class="pipe-l" cx="30" cy="35" r="10" fill="none" stroke="#64748b" stroke-width="4"/>
                                    <circle class="pipe-r" cx="70" cy="35" r="10" fill="none" stroke="#64748b" stroke-width="4"/>
                                    <path d="M 45 35 l 10 0 M 45 30 l 5 5 l -5 5" fill="none" stroke="#cbd5e1" stroke-width="2" stroke-linecap="round"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-qa-item">
                <button class="rk-qa-question">
                    <span>5. Jak rodzaj wylewki wpływa na skuteczność wyników z kalkulatora?</span>
                    <div class="rk-qa-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg></div>
                </button>
                <div class="rk-qa-answer-wrapper">
                    <div class="rk-qa-answer-inner">
                        <div class="rk-qa-content">
                            <div class="rk-qa-text">
                                Wybór odpowiedniego jastrychu drastycznie zmienia parametry pracy. <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/" class="rk-link">Wylewka anhydrytowa</a> wykazuje niemal dwukrotnie wyższy współczynnik przewodzenia ciepła w porównaniu do standardowego betonu z miksokreta. Dzięki płynnej konsystencji idealnie i szczelnie otula rury grzewcze. Przekłada się to na błyskawiczne oddawanie ciepła do pomieszczenia i możliwość pracy pompy ciepła na niższym, oszczędniejszym parametrze temperaturowym.
                            </div>
                            <div class="rk-qa-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="15" y="15" width="70" height="40" rx="4" fill="none" stroke="#94a3b8" stroke-width="3"/>
                                    <rect class="anim-screed-layer" x="17" y="30" width="66" height="23" rx="2" fill="#cbd5e1"/>
                                    <circle cx="35" cy="40" r="5" fill="#ef4444"/>
                                    <circle cx="50" cy="40" r="5" fill="#ef4444"/>
                                    <circle cx="65" cy="40" r="5" fill="#ef4444"/>
                                    <path d="M20 30 Q35 25 50 30 T80 30" fill="none" stroke="var(--rk-qa-emerald)" stroke-width="2"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const faqItems = document.querySelectorAll('.rk-qa-item');

    faqItems.forEach(item => {
        const btn = item.querySelector('.rk-qa-question');
        btn.addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            
            // Zwijanie wszystkich
            faqItems.forEach(i => i.classList.remove('active'));
            
            // Rozwijanie klikniętego (jeśli nie był aktywny)
            if (!isActive) {
                item.classList.add('active');
            }
        });
    });
    
    // Otwarcie pierwszego elementu na start
    if(faqItems.length > 0) {
        faqItems[0].classList.add('active');
    }
});
</script>



<style>
:root {
    --rk-fin-dark: #0f172a;
    --rk-fin-blue: #0ea5e9;
    --rk-fin-light-blue: #e0f2fe;
    --rk-fin-green: #10b981;
    --rk-fin-green-light: #dcfce7;
    --rk-fin-red: #ef4444;
    --rk-fin-red-light: #fee2e2;
    --rk-fin-orange: #f59e0b;
    --rk-fin-orange-light: #fef3c7;
    --rk-fin-gray: #64748b;
    --rk-fin-border: #cbd5e1;
    --rk-fin-bg: #ffffff;
}

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

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

.rk-fin-header h2 {
    margin: 0 0 15px 0;
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-fin-dark);
    letter-spacing: -0.5px;
}

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

.rk-fin-highlight {
    font-weight: 800;
    color: var(--rk-fin-blue);
}

/* Sekcja Interaktywna - Symulator */
.rk-fin-interactive {
    padding: 40px;
    background: #ffffff;
}

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

.rk-fin-dashboard {
    display: grid;
    grid-template-columns: 1fr 1.5fr;
    gap: 30px;
    align-items: center;
}

.rk-fin-slider-box {
    background: #f8fafc;
    padding: 30px;
    border-radius: 16px;
    border: 1px solid var(--rk-fin-border);
    text-align: center;
}

.rk-fin-slider-label {
    display: block;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-fin-gray);
    text-transform: uppercase;
    margin-bottom: 15px;
}

.rk-fin-value-display {
    font-size: 42px;
    font-weight: 900;
    color: var(--rk-fin-dark);
    margin-bottom: 20px;
    display: flex;
    justify-content: center;
    align-items: baseline;
    gap: 5px;
}

.rk-fin-value-display span {
    font-size: 18px;
    color: var(--rk-fin-gray);
}

/* Stylizacja suwaka (Slider) */
.rk-range-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: #cbd5e1;
    outline: none;
    transition: background 0.3s;
}

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

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

/* Wynik symulacji */
.rk-fin-result-box {
    padding: 30px;
    border-radius: 16px;
    transition: all 0.4s ease;
    display: flex;
    flex-direction: column;
    gap: 15px;
    border: 2px solid transparent;
}

.rk-fin-result-box.state-green {
    background: var(--rk-fin-green-light);
    border-color: var(--rk-fin-green);
}
.rk-fin-result-box.state-orange {
    background: var(--rk-fin-orange-light);
    border-color: var(--rk-fin-orange);
}
.rk-fin-result-box.state-red {
    background: var(--rk-fin-red-light);
    border-color: var(--rk-fin-red);
}

.rk-fin-result-header {
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-anim-house {
    width: 60px;
    height: 60px;
}

.house-path {
    transition: all 0.4s ease;
    stroke-width: 2;
    fill: none;
}

.state-green .house-path { stroke: var(--rk-fin-green); fill: rgba(16, 185, 129, 0.2); }
.state-orange .house-path { stroke: var(--rk-fin-orange); fill: rgba(245, 158, 11, 0.2); }
.state-red .house-path { stroke: var(--rk-fin-red); fill: rgba(239, 68, 68, 0.2); }

.state-red .heat-wave {
    animation: heatRise 1.5s infinite alternate;
    stroke: var(--rk-fin-red);
}

@keyframes heatRise {
    0% { transform: translateY(0) scale(1); opacity: 0.5; }
    100% { transform: translateY(-5px) scale(1.1); opacity: 1; }
}

.rk-fin-result-title {
    font-size: 20px;
    font-weight: 800;
    margin: 0;
}
.state-green .rk-fin-result-title { color: #065f46; }
.state-orange .rk-fin-result-title { color: #92400e; }
.state-red .rk-fin-result-title { color: #991b1b; }

.rk-fin-result-text {
    font-size: 15px;
    line-height: 1.6;
    margin: 0;
    color: #334155;
}

/* Sekcja Wzorów i Linków */
.rk-fin-content-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    padding: 0 40px 40px;
}

.rk-fin-card {
    background: #f8fafc;
    border: 1px solid var(--rk-fin-border);
    padding: 25px;
    border-radius: 12px;
}

.rk-fin-card h4 {
    margin: 0 0 15px 0;
    font-size: 16px;
    color: var(--rk-fin-dark);
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-fin-card ul {
    margin: 0;
    padding: 0 0 0 20px;
    font-size: 14px;
    color: var(--rk-fin-gray);
    line-height: 1.6;
}

.rk-fin-card ul li { margin-bottom: 8px; }
.rk-fin-card a {
    color: var(--rk-fin-blue);
    text-decoration: none;
    font-weight: 700;
    transition: color 0.2s;
}
.rk-fin-card a:hover { text-decoration: underline; }

/* Massive CTA */
.rk-fin-cta {
    background: var(--rk-fin-dark);
    padding: 40px;
    text-align: center;
}

.rk-fin-cta h3 {
    color: #ffffff;
    font-size: 24px;
    margin: 0 0 10px 0;
}

.rk-fin-cta p {
    color: #94a3b8;
    margin: 0 auto 30px auto;
    max-width: 600px;
    font-size: 15px;
    line-height: 1.6;
}

.rk-btn-massive {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-fin-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 900;
    padding: 20px 40px;
    border-radius: 12px;
    text-decoration: none;
    text-transform: uppercase;
    box-shadow: 0 10px 20px -5px rgba(14, 165, 233, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-btn-massive:hover {
    transform: translateY(-4px);
    background: #0284c7;
    box-shadow: 0 15px 25px -5px rgba(14, 165, 233, 0.6);
}

@media (max-width: 768px) {
    .rk-fin-header, .rk-fin-interactive, .rk-fin-content-grid, .rk-fin-cta { padding: 25px; }
    .rk-fin-dashboard, .rk-fin-content-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-fin-value-display { font-size: 36px; }
    .rk-btn-massive { width: 100%; padding: 16px; font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Podsumowanie – Zabezpiecz Swój Budżet i Komfort Termiczny",
    "description": "Sprawdź samodzielnie zapotrzebowanie budynku na ciepło (W/m2) z wykorzystaniem interaktywnego symulatora normy PN-EN 12831. Optymalizuj parametry przed wyborem pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-zapotrzebowanie",
    "name": "Bilans Cieplny i Wskaźniki W/m2 dla Ogrzewania Podłogowego",
    "description": "Zestawienie analityczne określające limity i optymalne zakresy mocy grzewczej dla instalacji płaszczyznowych w odniesieniu do izolacji oraz typu okładziny podłogowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczenia strat ciepła",
      "norma PN-EN 12831",
      "zapotrzebowanie W/m2",
      "projekt wykonawczy ogrzewania",
      "temperatura zasilania podłogówki"
    ],
    "measurementTechnique": "Analiza zapotrzebowania na ciepło (Q = A × U × ΔT) w zależności od stopnia izolacji budynku i wymagań hydraulicznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zakres 40-50 W/m2: Optymalny (Nowe budownictwo, idealne dla pomp ciepła).",
        "Zakres 51-80 W/m2: Umiarkowany (Wymaga zagęszczenia rur i projektowania OZC).",
        "Zakres >80 W/m2: Krytyczny (Ryzyko niedogrzania, wymaga grzejników lub termomodernizacji)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-symulator",
    "name": "Symulator Zapotrzebowania Cieplnego W/m2",
    "description": "Interaktywne narzędzie obliczeniowe obrazujące wpływ jednostkowego zapotrzebowania na ciepło budynku na efektywność wodnego ogrzewania podłogowego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-fin-container">
    <div class="rk-fin-header">
        <h2>Podsumowanie – Zabezpiecz Swój Budżet i Komfort Termiczny</h2>
        <p>
            Samodzielne obliczenie strat ciepła budynku za pomocą uproszczonej metody normy <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" style="color:var(--rk-fin-blue); font-weight:700;">PN-EN 12831</a> to kluczowy krok techniczny, który chroni inwestora przed przewymiarowaniem źródła ciepła i wadliwym działaniem ogrzewania podłogowego.
        </p>
    </div>

    <div class="rk-fin-interactive">
        <h3>Symulator Obciążenia Instalacji</h3>
        <div class="rk-fin-dashboard">
            <div class="rk-fin-slider-box">
                <span class="rk-fin-slider-label">Zapotrzebowanie na ciepło budynku</span>
                <div class="rk-fin-value-display">
                    <span id="sliderValue">45</span> <span>W/m²</span>
                </div>
                <input type="range" min="30" max="120" value="45" step="5" class="rk-range-slider" id="heatSlider">
            </div>

            <div class="rk-fin-result-box state-green" id="resultCard">
                <div class="rk-fin-result-header">
                    <svg class="rk-anim-house" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                        <path class="house-path" d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path>
                        <polyline class="house-path" points="9 22 9 12 15 12 15 22"></polyline>
                        <path class="heat-wave" d="M12 2v3" style="display:none;" stroke-width="2" stroke-linecap="round"/>
                        <path class="heat-wave" d="M8 4v3" style="display:none;" stroke-width="2" stroke-linecap="round"/>
                        <path class="heat-wave" d="M16 4v3" style="display:none;" stroke-width="2" stroke-linecap="round"/>
                    </svg>
                    <h4 class="rk-fin-result-title" id="resultTitle">Strefa Optymalna</h4>
                </div>
                <p class="rk-fin-result-text" id="resultText">
                    Idealne warunki dla podłogówki i pompy ciepła. Niska temperatura zasilania (ok. 30-32°C). Układ działa energooszczędnie, można bezpiecznie planować <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/">panele podłogowe</a>.
                </p>
            </div>
        </div>
    </div>

    <div class="rk-fin-content-grid">
        <div class="rk-fin-card">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-fin-blue)" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>
                Fizyka Budynku
            </h4>
            <ul>
                <li>Znając wzory na straty przez przenikanie (<strong>Q = A × U × ΔT</strong>) oraz wentylację (<strong>Qv = 0,34 × V × ΔT</strong>), weryfikujesz, czy mieścisz się w zakresie 40-80 W/m².</li>
                <li>Zignorowanie parametrów łazienki (wymagane <strong>+24°C</strong>) zepsuje komfort termiczny w newralgicznym punkcie domu.</li>
            </ul>
        </div>
        <div class="rk-fin-card">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-fin-blue)" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                Zlecaj OZC Inżynierom
            </h4>
            <ul>
                <li>Każdy litr wody przepływający przez rozdzielacz musi być poprawnie zbilansowany matematycznie.</li>
                <li>Traktuj samodzielne wyliczenia jako wstęp do zlecenia <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">profesjonalnego projektu OZC</a>, zwłaszcza przy pompach ciepła.</li>
            </ul>
        </div>
    </div>

    <div class="rk-fin-cta">
        <h3>Zaprojektuj System Bez Błędów</h3>
        <p>Nie zostawiaj kluczowych parametrów hydraulicznych przypadkowi. Odkryj inżynierskie metody projektowania, normy prawne i kalkulatory, które zagwarantują 100% efektywności Twojej inwestycji.</p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-massive">
            SPRAWDŹ BAZĘ WIEDZY EKSKLUZYWNEJ
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const slider = document.getElementById('heatSlider');
    const display = document.getElementById('sliderValue');
    const resultCard = document.getElementById('resultCard');
    const resultTitle = document.getElementById('resultTitle');
    const resultText = document.getElementById('resultText');
    const heatWaves = document.querySelectorAll('.heat-wave');

    function updateDashboard(value) {
        display.textContent = value;
        
        if (value <= 50) {
            resultCard.className = 'rk-fin-result-box state-green';
            resultTitle.textContent = 'Strefa Optymalna';
            resultText.innerHTML = 'Idealne warunki dla podłogówki i pompy ciepła. Niska temperatura zasilania (ok. 30-32°C). Układ działa energooszczędnie, można bezpiecznie planować <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/">panele podłogowe</a>.';
            heatWaves.forEach(w => w.style.display = 'none');
            slider.style.background = `linear-gradient(to right, var(--rk-fin-green) ${(value-30)/(120-30)*100}%, #cbd5e1 ${(value-30)/(120-30)*100}%)`;
        } 
        else if (value > 50 && value <= 80) {
            resultCard.className = 'rk-fin-result-box state-orange';
            resultTitle.textContent = 'Strefa Umiarkowana (Uwaga!)';
            resultText.innerHTML = 'Osiągasz granice wydajności. Konieczne zagęszczenie rur (rozstaw co 10 cm). Ryzyko przy stosowaniu paneli. Wymagany precyzyjny <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projekt OZC</a>, aby uniknąć niedogrzania łazienek.';
            heatWaves.forEach(w => w.style.display = 'none');
            slider.style.background = `linear-gradient(to right, var(--rk-fin-orange) ${(value-30)/(120-30)*100}%, #cbd5e1 ${(value-30)/(120-30)*100}%)`;
        } 
        else {
            resultCard.className = 'rk-fin-result-box state-red';
            resultTitle.textContent = 'Strefa Krytyczna';
            resultText.innerHTML = 'Sama podłogówka <strong>nie ogrzeje tego budynku</strong>. Próba wymuszenia mocy doprowadzi do przegrzania posadzki (dyskomfort). Konieczna <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">termomodernizacja</a> lub dodanie obiegów grzejnikowych.';
            heatWaves.forEach(w => w.style.display = 'block');
            slider.style.background = `linear-gradient(to right, var(--rk-fin-red) ${(value-30)/(120-30)*100}%, #cbd5e1 ${(value-30)/(120-30)*100}%)`;
        }
    }

    slider.addEventListener('input', (e) => {
        updateDashboard(e.target.value);
    });

    // Inicjalizacja
    updateDashboard(slider.value);
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">Kalkulator strat ciepła budynku – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym.</title>
		<link>https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/</link>
					<comments>https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Thu, 05 Mar 2026 09:13:56 +0000</pubDate>
				<category><![CDATA[Hydraulika]]></category>
		<category><![CDATA[Hydraulika grzewcza]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompy obiegowe]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Porady techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[dobór pompy]]></category>
		<category><![CDATA[hydraulika instalacji]]></category>
		<category><![CDATA[instalacja podłogówki]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[kalkulator pompy obiegowej]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pompa 25-60]]></category>
		<category><![CDATA[pompa do podłogówki]]></category>
		<category><![CDATA[pompa obiegowa]]></category>
		<category><![CDATA[projekt instalacji grzewczej]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[przepływ instalacji]]></category>
		<category><![CDATA[przepływ w instalacji]]></category>
		<category><![CDATA[wysokość podnoszenia pompy]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3575</guid>

					<description><![CDATA[<p>Dobór odpowiedniej pompy obiegowej ma ogromny wpływ na sprawność i komfort działania instalacji grzewczej. Właśnie dlatego kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym może być niezwykle pomocnym narzędziem dla inwestorów, instalatorów oraz osób planujących budowę domu. Dzięki niemu można w prosty sposób oszacować wymagany przepływ wody oraz wysokość podnoszenia pompy, a następnie dopasować urządzenie do realnych parametrów instalacji. W artykule pokazuję krok po kroku, jak wykonać podstawowe obliczenia, zrozumieć charakterystyki pomp i uniknąć najczęstszych błędów przy projektowaniu podłogówki.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">Kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-blue: #0284c7;
    --rk-intro-light-blue: #f0f9ff;
    --rk-intro-bg: #ffffff;
    --rk-intro-border: #e2e8f0;
    --rk-intro-text: #334155;
    --rk-intro-gold: #f59e0b;
    --rk-intro-gold-light: #fffbeb;
}

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

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

.rk-intro-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
    display: flex;
    align-items: flex-start;
    gap: 15px;
}

.rk-intro-icon {
    width: 36px;
    height: 36px;
    color: var(--rk-intro-gold);
    flex-shrink: 0;
    margin-top: 2px;
}

.rk-intro-hook {
    font-size: 16px;
    line-height: 1.6;
    color: #cbd5e1;
    margin: 0;
}

/* Szybka Odpowiedź (Featured Snippet) */
.rk-quick-answer {
    padding: 25px 40px;
    background: var(--rk-intro-gold-light);
    border-bottom: 1px solid #fde68a;
    display: flex;
    gap: 20px;
    align-items: flex-start;
}

.rk-qa-badge {
    background: var(--rk-intro-gold);
    color: #ffffff;
    padding: 6px 12px;
    border-radius: 6px;
    font-weight: 900;
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 1px;
    white-space: nowrap;
}

.rk-qa-content p {
    margin: 0;
    font-size: 16px;
    line-height: 1.6;
    color: #92400e;
    font-weight: 600;
}

.rk-qa-content strong {
    font-weight: 900;
    color: #78350f;
}

/* Interaktywna Agenda */
.rk-intro-agenda {
    padding: 35px 40px;
    background: #ffffff;
}

.rk-agenda-title {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-intro-dark);
    margin: 0 0 20px 0;
}

.rk-agenda-grid {
    display: grid;
    grid-template-columns: 300px 1fr;
    gap: 0;
    border: 1px solid var(--rk-intro-border);
    border-radius: 12px;
    overflow: hidden;
}

/* Przyciski nawigacyjne - Bez animacji */
.rk-agenda-nav {
    background: #f8fafc;
    border-right: 1px solid var(--rk-intro-border);
    display: flex;
    flex-direction: column;
}

.rk-agenda-btn {
    padding: 18px 20px;
    background: transparent;
    border: none;
    border-bottom: 1px solid var(--rk-intro-border);
    text-align: left;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-intro-text);
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-agenda-btn:last-child {
    border-bottom: none;
}

.rk-agenda-btn:hover {
    background: #f1f5f9;
}

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

.rk-agenda-btn svg {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
}

/* Panele z treścią - Bez animacji */
.rk-agenda-panels {
    padding: 30px;
    background: #ffffff;
}

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

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

.rk-agenda-panel h4 {
    margin: 0 0 15px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-intro-dark);
}

.rk-agenda-panel p {
    margin: 0 0 15px 0;
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-intro-text);
}

.rk-agenda-panel ul {
    margin: 0;
    padding-left: 20px;
    color: var(--rk-intro-text);
    font-size: 14px;
    line-height: 1.6;
}

.rk-agenda-panel li {
    margin-bottom: 8px;
}

/* Informacja o kalkulatorach */
.rk-tools-teaser {
    margin-top: 30px;
    padding: 15px 20px;
    background: var(--rk-intro-light-blue);
    border-left: 4px solid var(--rk-intro-blue);
    border-radius: 0 8px 8px 0;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-tools-teaser p {
    margin: 0;
    font-size: 14px;
    font-weight: 700;
    color: #0369a1;
    line-height: 1.5;
}

@media (max-width: 768px) {
    .rk-intro-header { padding: 25px 20px; }
    .rk-intro-header h2 { font-size: 22px; }
    .rk-quick-answer { flex-direction: column; padding: 20px; gap: 15px; }
    .rk-intro-agenda { padding: 25px 20px; }
    .rk-agenda-grid { grid-template-columns: 1fr; }
    .rk-agenda-nav { border-right: none; border-bottom: 1px solid var(--rk-intro-border); }
    .rk-agenda-panels { padding: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym – Poradnik i algorytm",
    "description": "Zestawienie interaktywnych kalkulatorów i algorytmów obliczania przepływu oraz wysokości podnoszenia pomp obiegowych (OZC, długości pętli, awarie).",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-wstep",
    "name": "Zestawienie Zmiennych Projektowych dla Pomp Obiegowych 2026",
    "description": "Indeks kluczowych składowych artykułu: od wzorów na przepływ wody, przez parametry oporów rur, aż po zestawienia tabelaryczne.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym",
      "szybka odpowiedź dobór pompy",
      "jak dobrać pompę obiegową do podłogówki",
      "algorytm doboru pompy przepływ Q i wysokość H",
      "parametry pompy obiegowej podłogówka"
    ],
    "measurementTechnique": "Hierarchiczne drzewo zawartości umożliwiające nawigację po interaktywnych modułach hydraulicznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przepływ objętościowy wody: Metodyka wyliczania Q na bazie OZC.",
        "Wysokość podnoszenia H: Obliczanie strat liniowych dla najdłuższej pętli.",
        "Średnice rur: Wpływ rur PEX na powstawanie zjawiska kawitacji."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-wstep",
    "name": "Interaktywny Nawigator Artykułu",
    "description": "Moduł wstępny typu 'Quick Answer' oraz przełącznik kontekstowy wprowadzający użytkownika w tematykę obliczeń hydraulicznych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container">
    <div class="rk-intro-header">
        <h2>
            <svg class="rk-intro-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                <path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path>
            </svg>
            Kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym
        </h2>
        <p class="rk-intro-hook">Masz dość zgadywania, czy pompa &#8222;uciągnie&#8221; najdalsze pętle w salonie? Błędny dobór pompy obiegowej to najczęstsza przyczyna zimnych posadzek i uciążliwego świstu w rozdzielaczach. Ten przewodnik bezlitośnie rozprawia się z mitami instalatorskimi, dając Ci do ręki czystą inżynierię i twarde wzory.</p>
    </div>

    <div class="rk-quick-answer">
        <div class="rk-qa-badge">Szybka Odpowiedź</div>
        <div class="rk-qa-content">
            <p>Prawidłowy punkt pracy pompy obiegowej wyznacza się na podstawie dwóch parametrów: <strong>wymaganego przepływu wody (Q)</strong>, liczonego ze spadku temperatury oraz <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowego obciążenia cieplnego (OZC)</a> budynku (zazwyczaj od 0,5 do 2,5 m³/h), oraz <strong>wysokości podnoszenia (H)</strong> determinowanej przez opory hydrauliczne najdłuższej pętli (najczęściej od 3,5 do 5,5 m słupa wody). Urządzenie należy dopasować bezpośrednio do krzywych charakterystyki pomp, a nie dobierać „z zapasem”.</p>
        </div>
    </div>

    <div class="rk-intro-agenda">
        <h3 class="rk-agenda-title">Czego dowiesz się z tego kompendium?</h3>
        
        <div class="rk-agenda-grid">
            <div class="rk-agenda-nav">
                <button class="rk-agenda-btn rk-active" data-id="tab-1">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                    Fizyka Płynów (Q i H)
                </button>
                <button class="rk-agenda-btn" data-id="tab-2">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                    Błędy Instalatorów
                </button>
                <button class="rk-agenda-btn" data-id="tab-3">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line></svg>
                    Średnice rur zasilających
                </button>
            </div>

            <div class="rk-agenda-panels">
                <div class="rk-agenda-panel rk-active" id="tab-1">
                    <h4>Zależności matematyczne przepływu</h4>
                    <p>Zrozumiesz, jak dokładnie parametry Twojego domu wpływają na zachowanie wody w rurach. Omówimy:</p>
                    <ul>
                        <li>Jak obliczyć strumień masowy z różnicy temperatur (ΔT 5K i 6K).</li>
                        <li>Dlaczego <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">za długa pętla podłogówki</a> tworzy tzw. króla hydraulicznego.</li>
                        <li>Dlaczego podnoszenie pompy nie zależy od piętra w domu.</li>
                    </ul>
                </div>
                
                <div class="rk-agenda-panel" id="tab-2">
                    <h4>Najdroższe awarie systemu</h4>
                    <p>Dowiesz się, jakie <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">najczęstsze błędy popełniają instalatorzy</a>, co bezpośrednio uderza w Twój portfel.</p>
                    <ul>
                        <li>Przewymiarowanie pompy (mit &#8222;im większa tym lepsza&#8221;).</li>
                        <li>Złe ustawienia (Constant Speed vs Constant Pressure).</li>
                        <li>Ryzyko braku separatorów i zalania surową wodą.</li>
                    </ul>
                </div>

                <div class="rk-agenda-panel" id="tab-3">
                    <h4>Piony i kawitacja</h4>
                    <p>Przeanalizujemy krytyczny element dystrybucji czynnika grzewczego – rury łączące źródło ciepła z rozdzielaczem.</p>
                    <ul>
                        <li>Wpływ średnicy rury PEX na ryzyko wystąpienia szumów.</li>
                        <li>Kalkulacja prędkości przepływu (normy DIN 1988).</li>
                        <li>Dlaczego <a href="https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/">średnica rury zasilającej rozdzielacz</a> ratuje całą instalację.</li>
                    </ul>
                </div>
            </div>
        </div>

        <div class="rk-tools-teaser">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="24" height="24"><polygon points="5 3 19 12 5 21 5 3"></polygon></svg>
            <p>Zamiast liczyć ręcznie – w dalszej części artykułu przygotowałem dedykowane interaktywne <strong>kalkulatory i symulatory graficzne</strong>, które przeanalizują Twoją instalację i same wyznaczą punkt pracy.</p>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btns = document.querySelectorAll('.rk-agenda-btn');
    var panels = document.querySelectorAll('.rk-agenda-panel');

    for (var i = 0; i < btns.length; i++) {
        btns[i].addEventListener('click', function() {
            var targetId = this.getAttribute('data-id');

            // Usuwanie klas aktywnych (bez animacji i bezpiecznie)
            for (var b = 0; b < btns.length; b++) {
                btns[b].classList.remove('rk-active');
            }
            this.classList.add('rk-active');

            // Ukrywanie wszystkich paneli natychmiastowo
            for (var p = 0; p < panels.length; p++) {
                panels[p].classList.remove('rk-active');
            }
            
            // Pokazywanie docelowego panelu
            var activePanel = document.getElementById(targetId);
            if (activePanel !== null) {
                activePanel.classList.add('rk-active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-flow-dark: #0f172a;
    --rk-flow-blue: #0284c7;
    --rk-flow-light: #f0f9ff;
    --rk-flow-red: #ef4444;
    --rk-flow-green: #10b981;
    --rk-flow-yellow: #f59e0b;
    --rk-flow-border: #e2e8f0;
    --rk-flow-bg: #ffffff;
    --rk-flow-text: #475569;
}

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

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

.rk-flow-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    line-height: 1.3;
}

.rk-flow-header-icon {
    width: 32px;
    height: 32px;
    color: #38bdf8;
    flex-shrink: 0;
}

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

/* Tekst / Teoria */
.rk-flow-content {
    padding: 35px 45px;
    background: #ffffff;
}

.rk-flow-content h3 {
    margin: 0 0 15px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-flow-dark);
}

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

.rk-flow-math {
    background: var(--rk-flow-light);
    padding: 20px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-flow-blue);
    margin: 25px 0;
    text-align: center;
    font-family: 'Courier New', Courier, monospace;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-flow-dark);
    letter-spacing: 1px;
}

.rk-flow-list {
    list-style: none;
    padding: 0;
    margin: 0 0 25px 0;
}

.rk-flow-list li {
    position: relative;
    padding-left: 25px;
    margin-bottom: 10px;
    font-size: 14px;
    color: var(--rk-flow-text);
    line-height: 1.6;
}

.rk-flow-list li::before {
    content: '→';
    position: absolute;
    left: 0;
    top: 0;
    color: var(--rk-flow-blue);
    font-weight: 800;
}

/* Interaktywny Kalkulator */
.rk-flow-calc-area {
    background: #f8fafc;
    padding: 35px 45px;
    border-top: 1px solid var(--rk-flow-border);
}

.rk-flow-calc-area h3 {
    margin: 0 0 25px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-flow-dark);
}

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

/* Sekcja Suwaków */
.rk-flow-inputs {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

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

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

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

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

.rk-flow-range {
    width: 100%;
    accent-color: var(--rk-flow-blue);
    cursor: pointer;
    height: 6px;
    border-radius: 3px;
}

/* Sekcja Wyniku */
.rk-flow-result {
    background: #ffffff;
    border-radius: 16px;
    border: 2px solid var(--rk-flow-blue);
    padding: 30px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    transition: all 0.4s ease;
    position: relative;
    overflow: hidden;
}

.rk-flow-result::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 100%; height: 6px;
    background: var(--rk-flow-blue);
    transition: background 0.4s;
}

.rk-result-label {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-flow-text);
    margin-bottom: 10px;
    letter-spacing: 1px;
}

.rk-result-value {
    font-size: 42px;
    font-weight: 900;
    color: var(--rk-flow-dark);
    margin: 0 0 15px 0;
    line-height: 1;
}

.rk-result-unit {
    font-size: 20px;
    color: var(--rk-flow-blue);
}

.rk-result-status {
    padding: 10px 20px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 800;
    width: 100%;
    transition: all 0.3s;
}

/* Dynamiczne stany wizualne wyniku */
.rk-state-optimal {
    border-color: var(--rk-flow-green);
}
.rk-state-optimal::before { background: var(--rk-flow-green); }
.rk-state-optimal .rk-result-status {
    background: #dcfce7; color: #166534;
}

.rk-state-warning {
    border-color: var(--rk-flow-yellow);
}
.rk-state-warning::before { background: var(--rk-flow-yellow); }
.rk-state-warning .rk-result-status {
    background: #fef3c7; color: #92400e;
}

.rk-state-danger {
    border-color: var(--rk-flow-red);
}
.rk-state-danger::before { background: var(--rk-flow-red); }
.rk-state-danger .rk-result-status {
    background: #fee2e2; color: #b91c1c;
}

@media (max-width: 768px) {
    .rk-flow-header, .rk-flow-content, .rk-flow-calc-area { padding: 25px 20px; }
    .rk-flow-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-flow-math { font-size: 16px; padding: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-przeplyw",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Jak obliczyć wymagany przepływ wody w ogrzewaniu podłogowym?",
    "description": "Matematyczna zależność pomiędzy projektowym obciążeniem cieplnym budynku (OZC), a spadkiem temperatury ΔT. Wzór Q = P / (1,163 x ΔT) w praktyce.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-przeplyw",
    "name": "Zestawienie Wymaganych Przepływów Masowych dla Pomp Obiegowych 2026",
    "description": "Baza danych określająca bezpieczne granice wydajności hydraulicznej zapobiegające powstawaniu szumów i zjawiska zimnej podłogi.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wymagany przepływ wody ogrzewanie podłogowe",
      "wzór na wydajność pompy obiegowej",
      "projektowe obciążenie cieplne ozc",
      "szum na rotametrach rozdzielacza",
      "prędkość krytyczna przepływu wody"
    ],
    "measurementTechnique": "Algorytm oparty o wzór Q = P / (1,163 * ΔT) diagnozujący potencjalne zagrożenia w przepływie masowym układu dystrybucji ciepła.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Optymalny przepływ w domach: 0.5 - 2.5 m3/h.",
        "Przekroczenie (np. 3.0 m3/h): Ryzyko przepływu turbulentnego i hałasu.",
        "Zaniżenie: Zimny powrót i brak samoodpowietrzania (wymagane v > 0.25 m/s)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-przeplyw",
    "name": "Symulator Przepływu Masowego Q",
    "description": "Interaktywne narzędzie obliczające na żywo wydajność pompy obiegowej na podstawie mocy grzewczej i spadku temperatury ΔT.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-flow-wrapper">
    <div class="rk-flow-header">
        <svg class="rk-flow-header-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
            <path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path>
        </svg>
        <h2>Jak obliczyć wymagany przepływ wody w ogrzewaniu podłogowym?</h2>
    </div>

    

    <div class="rk-flow-content">
        <p>Wymagany przepływ masowy i objętościowy wody w instalacji ogrzewania podłogowego wynosi od 0,5 m³/h do 2,5 m³/h dla domów jednorodzinnych i musi być obliczany w oparciu o projektowe obciążenie cieplne budynku według normy PN-EN 12831 oraz założony spadek temperatury ΔT wynoszący ściśle 5 K lub 6 K. Bezpośrednia odpowiedź na to pytanie opiera się na matematycznym powiązaniu dostarczanej mocy termicznej z pojemnością cieplną nośnika. Każde odstępstwo od wyliczonego przepływu skutkuje zachwianiem równowagi termicznej budynku, powodując asymetrię temperaturową posadzki, co drastycznie obniża deklarowaną efektywność energetyczną układu grzewczego.</p>

        <h3>Matematyczna zależność strumienia masowego od mocy</h3>
        <p>Aby obliczyć przepływ wody (wydajność pompy Q), stosuje się podstawowe równanie wymiany ciepła, przekształcone do celów inżynierii sanitarnej. Przykład: przy projektowym zapotrzebowaniu na moc P = 11,5 kW i różnicy temperatur ΔT = 5 K (gdzie parametry zasilania i powrotu to np. 35/30°C), nominalny przepływ objętościowy wynosi dokładnie 1,98 m³/h (czyli dokładnie 1977,6 litrów na godzinę ciągłego przepływu).</p>
        
        <div class="rk-flow-math">
            Q = P / (1,163 × ΔT)
        </div>

        <ul class="rk-flow-list">
            <li><strong>Q</strong> – przepływ objętościowy wody w instalacji płaszczyznowej [m³/h]</li>
            <li><strong>P</strong> – <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne</a> podłogówki wyznaczone z bilansu OZC [kW]</li>
            <li><strong>1,163</strong> – stała przeliczeniowa uwzględniająca gęstość wody (ok. 1000 kg/m³) oraz ciepło właściwe</li>
        </ul>

        <p>Rozwijając to zagadnienie z perspektywy inżynierskiej, stała ta wynika bezpośrednio z zamiany jednostek energii z dżuli na kilowatogodziny oraz masy na metry sześcienne. Przepływ ten musi być dystrybuowany w taki sposób, aby prędkość wody w poszczególnych pętlach nie spadła poniżej prędkości krytycznej umożliwiającej samoczynne odpowietrzanie układu (tj. minimum 0,25 m/s). Jeśli prędkość będzie mniejsza, pęcherze powietrza utkną w najwyższych punktach jastrychu, trwale odcinając emisję ciepła.</p>

        <h3>Konsekwencje błędnego wyznaczenia przepływu Q</h3>
        <p>Zaniżenie parametru powoduje, że woda wychładza się zbyt szybko w początkowych metrach pętli grzewczej. Efektem jest tzw. „zimna podłoga” na powrocie i głębokie niedogrzanie pomieszczeń oddalonych od rozdzielacza. Z kolei zawyżenie przepływu zmusza pompę do pracy na najwyższych biegach charakterystyki, co podnosi zużycie energii elektrycznej i generuje <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">uciążliwy szum na rotametrach</a> wskutek przekroczenia prędkości krytycznej (v > 0,5 m/s). Pętla hydrauliczna traci wówczas zdolność do laminarnego przepływu.</p>
    </div>

    <div class="rk-flow-calc-area">
        <h3>Symulacja Wydajności Pompy (Q)</h3>
        
        <div class="rk-flow-grid">
            <div class="rk-flow-inputs">
                <div class="rk-slider-box">
                    <div class="rk-slider-header">
                        <span class="rk-slider-title">Zapotrzebowanie (P)</span>
                        <span class="rk-slider-val"><span id="rk-val-power">10.0</span> kW</span>
                    </div>
                    <input type="range" id="rk-slider-power" class="rk-flow-range" min="4" max="25" step="0.5" value="10">
                </div>

                <div class="rk-slider-box">
                    <div class="rk-slider-header">
                        <span class="rk-slider-title">Spadek temp. (ΔT)</span>
                        <span class="rk-slider-val"><span id="rk-val-dt">5</span> K</span>
                    </div>
                    <input type="range" id="rk-slider-dt" class="rk-flow-range" min="3" max="10" step="1" value="5">
                </div>
            </div>

            <div class="rk-flow-result rk-state-optimal" id="rk-result-box">
                <div class="rk-result-label">Wymagany przepływ masowy Q</div>
                <div class="rk-result-value" id="rk-flow-output">1.72 <span class="rk-result-unit">m³/h</span></div>
                <div class="rk-result-status" id="rk-flow-status">Optymalny punkt pracy dla pompy domowej</div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var powerSlider = document.getElementById('rk-slider-power');
    var dtSlider = document.getElementById('rk-slider-dt');
    var valPower = document.getElementById('rk-val-power');
    var valDt = document.getElementById('rk-val-dt');
    var flowOutput = document.getElementById('rk-flow-output');
    var resultBox = document.getElementById('rk-result-box');
    var statusText = document.getElementById('rk-flow-status');

    function calculateFlow() {
        var p = parseFloat(powerSlider.value);
        var dt = parseInt(dtSlider.value);
        
        valPower.textContent = p.toFixed(1);
        valDt.textContent = dt;

        // Główny wzór inżynierski
        var q = p / (1.163 * dt);
        flowOutput.innerHTML = q.toFixed(2) + ' <span class="rk-result-unit">m³/h</span>';

        // Czyszczenie klas
        resultBox.classList.remove('rk-state-optimal');
        resultBox.classList.remove('rk-state-warning');
        resultBox.classList.remove('rk-state-danger');

        // Logika diagnozy (bez znaków &&)
        if (q < 0.5) {
            resultBox.classList.add('rk-state-danger');
            statusText.textContent = "Ryzyko niedogrzania! Przepływ jest zbyt mały, by usunąć powietrze z rur.";
        } else if (q <= 2.5) {
            resultBox.classList.add('rk-state-optimal');
            statusText.textContent = "Optymalny przepływ dla standardowej domowej instalacji.";
        } else if (q <= 3.5) {
            resultBox.classList.add('rk-state-warning');
            statusText.textContent = "Wysoki strumień! Zadbaj o większe rury zasilające, by uniknąć szumów.";
        } else {
            resultBox.classList.add('rk-state-danger');
            statusText.textContent = "Krytyczny przepływ! Standardowa pompa domowa sobie nie poradzi.";
        }
    }

    powerSlider.addEventListener('input', calculateFlow);
    dtSlider.addEventListener('input', calculateFlow);
    calculateFlow(); // Inicjalizacja
});
</script>



<style>
:root {
    --rk-head-dark: #0f172a;
    --rk-head-blue: #0284c7;
    --rk-head-light: #f0f9ff;
    --rk-head-green: #10b981;
    --rk-head-green-light: #f0fdf4;
    --rk-head-yellow: #eab308;
    --rk-head-yellow-light: #fefce8;
    --rk-head-red: #ef4444;
    --rk-head-red-light: #fef2f2;
    --rk-head-border: #e2e8f0;
    --rk-head-bg: #ffffff;
    --rk-head-text: #475569;
}

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

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

.rk-head-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: flex-start;
    gap: 15px;
    line-height: 1.3;
}

.rk-head-icon {
    width: 32px;
    height: 32px;
    color: #38bdf8;
    flex-shrink: 0;
    margin-top: 2px;
}

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

/* Treść tekstowa */
.rk-head-content {
    padding: 35px 45px 20px;
    background: #ffffff;
}

.rk-head-content h3 {
    margin: 0 0 15px 0;
    font-size: 19px;
    font-weight: 800;
    color: var(--rk-head-dark);
}

.rk-head-content p {
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-head-text);
    margin: 0 0 20px 0;
}

/* Wzór Matematyczny HTML */
.rk-math-panel {
    background: var(--rk-head-light);
    padding: 20px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-head-blue);
    margin-bottom: 25px;
    text-align: center;
    font-family: 'Courier New', Courier, monospace;
    font-size: 17px;
    font-weight: 700;
    color: var(--rk-head-dark);
    letter-spacing: 0.5px;
}

.rk-math-panel span {
    color: var(--rk-head-blue);
}

/* Interaktywny Symulator */
.rk-head-interactive {
    background: #f8fafc;
    padding: 35px 45px;
    border-top: 1px solid var(--rk-head-border);
}

.rk-head-interactive h3 {
    margin: 0 0 25px 0;
    font-size: 19px;
    font-weight: 800;
    color: var(--rk-head-dark);
}

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

/* Kontrolki Suwaka */
.rk-slider-box {
    background: #ffffff;
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-head-border);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

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

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

.rk-slider-value {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-head-blue);
}

.rk-range-input {
    width: 100%;
    accent-color: var(--rk-head-blue);
    cursor: pointer;
    height: 8px;
    border-radius: 4px;
}

/* Panel Wynikowy */
.rk-result-box {
    padding: 25px;
    border-radius: 16px;
    border: 2px solid var(--rk-head-border);
    background: #ffffff;
    transition: all 0.4s ease;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-result-title {
    font-size: 18px;
    font-weight: 900;
    margin: 0 0 15px 0;
    transition: color 0.3s;
}

.rk-result-metrics {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-bottom: 15px;
}

.rk-metric-row {
    display: flex;
    justify-content: space-between;
    font-size: 14px;
    color: var(--rk-head-text);
    font-weight: 600;
    padding-bottom: 8px;
    border-bottom: 1px dashed var(--rk-head-border);
}

.rk-metric-row:last-child {
    border-bottom: none;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-head-dark);
}

.rk-result-desc {
    font-size: 13px;
    line-height: 1.5;
    margin: 0;
    font-weight: 600;
}

/* Stany Wizualne */
.rk-state-safe {
    border-color: var(--rk-head-green);
    background: var(--rk-head-green-light);
}
.rk-state-safe .rk-result-title { color: #059669; }
.rk-state-safe .rk-result-desc { color: #047857; }

.rk-state-warn {
    border-color: var(--rk-head-yellow);
    background: var(--rk-head-yellow-light);
}
.rk-state-warn .rk-result-title { color: #d97706; }
.rk-state-warn .rk-result-desc { color: #b45309; }

.rk-state-danger {
    border-color: var(--rk-head-red);
    background: var(--rk-head-red-light);
}
.rk-state-danger .rk-result-title { color: #dc2626; }
.rk-state-danger .rk-result-desc { color: #b91c1c; }

@media (max-width: 768px) {
    .rk-head-header, .rk-head-content, .rk-head-interactive { padding: 25px 20px; }
    .rk-sim-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-math-panel { font-size: 14px; padding: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-podnoszenie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Jak wyznaczyć wysokość podnoszenia pompy dla najdłuższej pętli podłogówki?",
    "description": "Fizyka strat ciśnienia w instalacji podłogowej. Wyjaśniamy jak długość pętli wpływa na opory miejscowe i dlaczego zjawisko króla hydraulicznego niszczy pompy.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-podnoszenie",
    "name": "Tabela Oporów Hydraulicznych Pętli PEX 16mm 2026",
    "description": "Zestawienie straty ciśnienia wyrażonej w Pa/m oraz wysokości podnoszenia w zależności od długości ułożonej pętli ogrzewania płaszczyznowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna długość pętli ogrzewania podłogowego",
      "opór jednostkowy rury pex 16",
      "wysokość podnoszenia pompy obiegowej",
      "król hydrauliczny w podłogówce",
      "straty ciśnienia w instalacji CO"
    ],
    "measurementTechnique": "Kalkulacja strat liniowych (150 Pa/m dla 2.0 l/min) powiększona o wykładniczy wzrost oporów przy pętlach przekraczających normę PN-EN 1264-4.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Normatywna długość pętli 16mm: max 100-120m (strata rzędu 1.65m H2O).",
        "Przekroczenie (150m): Generuje opory powyżej 32 kPa (3.2m H2O) wymuszając instalację większej pompy."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-podnoszenie",
    "name": "Symulator Oporów Hydraulicznych Pętli",
    "description": "Narzędzie pozwalające na dynamiczne modelowanie całkowitej wysokości podnoszenia pompy (H) poprzez modyfikację długości najdłuższej pętli grzewczej.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-head-container">
    <div class="rk-head-header">
        <svg class="rk-head-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
            <polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline>
        </svg>
        <h2>Jak wyznaczyć wysokość podnoszenia pompy dla najdłuższej pętli podłogówki?</h2>
    </div>

    

    <div class="rk-head-content">
        <p>Wysokość podnoszenia pompy obiegowej dla standardowej instalacji płaszczyznowej wynosi zazwyczaj od 3,5 m do 5,5 m słupa wody (co odpowiada 35–55 kPa) i jest determinowana wyłącznie przez sumaryczne opory hydrauliczne najdłuższej, najbardziej obciążonej pętli grzewczej, a nie przez fizyczną wysokość budynku. Zgodnie z normą PN-EN 1264-4, maksymalna długość pojedynczej pętli z rury o średnicy 16 mm nie powinna przekraczać 100–120 m.</p>

        <h3>Fizyka strat ciśnienia: liniowe i miejscowe opory instalacji</h3>
        <p>Wysokość podnoszenia (H) to zdolność pompy do pokonania oporów tarcia strumienia cieczy o wewnętrzne ścianki rur (straty liniowe) oraz oporów na zmianach kierunku, zwężkach, kolankach i zaworach regulacyjnych (straty miejscowe). Szacowanie tego parametru metodą „na oko” to prosty przepis na katastrofę. Przyjmując powszechnie stosowaną rurę PERT/AL/PEX 16x2 mm przy przepływie rzędu 2,0 l/min, liniowa strata ciśnienia wynosi średnio 150 Pa/m (czyli 0,015 m H₂O/m).</p>
        
        <p>Dla optymalnej pętli o długości 110 m czysta strata liniowa wynosi:</p>

        <div class="rk-math-panel">
            Δp<sub>lin</sub> = 110 m × 150 Pa/m = 16 500 Pa = <span>1,65 m H₂O</span>
        </div>

        <p>Do tej wartości należy doliczyć opory miejscowe: kolana ułożenia ślimakowego, podejścia do szafki, a także opór samego rozdzielacza z rotametrami (ok. 15–20 kPa czyli 1,5–2,0 m) oraz zaworów mieszających. Kalkulator inżynierski zawsze uwzględnia również współczynnik starzenia rur.</p>

        <h3>Wpływ długości pętli na wymiarowanie hydrauliczne</h3>
        <p>Jeśli instalator bezmyślnie ułożył pętlę o długości 150 m, strata ciśnienia na samej rurze wzrasta drastycznie ze względu na wykładniczy wzrost oporów. Taka <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">za długa pętla podłogówki</a> staje się tzw. „królem hydraulicznym” całego układu – dławi przepływ i zmusza inwestora do zakupu pompy o wysokości podnoszenia 8 m, rujnując autoadaptacyjne tryby pracy energooszczędnych pomp.</p>
    </div>

    <div class="rk-head-interactive">
        <h3>Symulator Oporów Hydraulicznych Pętli (H)</h3>
        
        <div class="rk-sim-grid">
            <div class="rk-slider-box">
                <div class="rk-slider-info">
                    <span class="rk-slider-label">Długość pętli (PEX 16mm):</span>
                    <span class="rk-slider-value"><span id="rk-loop-val">100</span> m</span>
                </div>
                <input type="range" id="rk-loop-slider" class="rk-range-input" min="60" max="160" step="5" value="100">
            </div>

            <div class="rk-result-box rk-state-safe" id="rk-result-panel">
                <h4 class="rk-result-title" id="rk-result-title">Instalacja Bezpieczna</h4>
                
                <div class="rk-result-metrics">
                    <div class="rk-metric-row">
                        <span>Strata liniowa rury:</span>
                        <span id="rk-loss-lin">1.50 m H₂O</span>
                    </div>
                    <div class="rk-metric-row">
                        <span>Opory rozdzielacza / zaworów:</span>
                        <span>2.00 m H₂O</span>
                    </div>
                    <div class="rk-metric-row">
                        <span>Wymagane podnoszenie pompy (H):</span>
                        <span id="rk-loss-total" style="color: var(--rk-head-blue);">3.50 m</span>
                    </div>
                </div>
                
                <p class="rk-result-desc" id="rk-result-desc">Pętla ułożona zgodnie ze sztuką. Pozwala na zastosowanie standardowej pompy 25-40 lub 25-60, pracującej w optymalnym zakresie sprawności.</p>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var slider = document.getElementById('rk-loop-slider');
    var displayVal = document.getElementById('rk-loop-val');
    var dispLin = document.getElementById('rk-loss-lin');
    var dispTotal = document.getElementById('rk-loss-total');
    var panel = document.getElementById('rk-result-panel');
    var title = document.getElementById('rk-result-title');
    var desc = document.getElementById('rk-result-desc');

    function updateHydraulics() {
        var length = parseInt(slider.value);
        displayVal.textContent = length;

        // Podstawowy opór liniowy: 0.015 m/m
        var baseLoss = length * 0.015;
        
        // Symulacja zjawiska "króla hydraulicznego" (wykładniczy wzrost przy długich pętlach z uwagi na konieczność tłoczenia większej masy)
        // Bez operatorów &&
        if (length > 110) {
            var over = length - 110;
            var penalty = (over * over) * 0.0006;
            baseLoss = baseLoss + penalty;
        }

        var totalHead = baseLoss + 2.0; // + 2.0m na rozdzielacz

        dispLin.textContent = baseLoss.toFixed(2) + " m H₂O";
        dispTotal.textContent = totalHead.toFixed(2) + " m";

        // Reset klas
        panel.classList.remove('rk-state-safe');
        panel.classList.remove('rk-state-warn');
        panel.classList.remove('rk-state-danger');

        // Logika przypisania stanów bez użycia &&
        if (length <= 100) {
            panel.classList.add('rk-state-safe');
            title.textContent = "Instalacja Bezpieczna";
            desc.textContent = "Pętla ułożona zgodnie ze sztuką. Pozwala na zastosowanie standardowej pompy 25-40 lub 25-60, pracującej w optymalnym zakresie sprawności.";
        } else if (length <= 120) {
            panel.classList.add('rk-state-warn');
            title.textContent = "Wartość Graniczna";
            desc.textContent = "Pętla zbliża się do limitów normy PN-EN 1264. Wymaga starannego zrównoważenia na przepływomierzach, aby nie zakłócić pracy krótszych obiegów.";
        } else {
            panel.classList.add('rk-state-danger');
            title.textContent = "Król Hydrauliczny!";
            desc.textContent = "Krytyczny opór! Taka pętla zadławi układ. Konieczny będzie montaż przewymiarowanej pompy 25-80, co drastycznie podniesie zużycie prądu i wygeneruje hałas.";
        }
    }

    slider.addEventListener('input', updateHydraulics);
    updateHydraulics(); // Inicjalizacja
});
</script>



<style>
:root {
    --rk-pipe-dark: #0f172a;
    --rk-pipe-blue: #0284c7;
    --rk-pipe-light: #f0f9ff;
    --rk-pipe-red: #ef4444;
    --rk-pipe-red-light: #fef2f2;
    --rk-pipe-green: #10b981;
    --rk-pipe-green-light: #f0fdf4;
    --rk-pipe-border: #e2e8f0;
    --rk-pipe-bg: #ffffff;
    --rk-pipe-text: #475569;
}

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

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

.rk-pipe-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    line-height: 1.3;
}

.rk-pipe-icon {
    width: 34px;
    height: 34px;
    color: #38bdf8;
    flex-shrink: 0;
}

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

.rk-pipe-header a {
    color: #7dd3fc;
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* Treść techniczna */
.rk-pipe-body {
    padding: 35px 45px 25px;
    background: #ffffff;
}

.rk-pipe-body h3 {
    margin: 0 0 15px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-pipe-dark);
}

.rk-pipe-body p {
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-pipe-text);
    margin: 0 0 20px 0;
}

/* Formatowanie inżynierskiego wzoru bez LaTeX */
.rk-math-box {
    background: var(--rk-pipe-light);
    padding: 15px 20px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-pipe-blue);
    margin-bottom: 25px;
    font-family: 'Courier New', Courier, monospace;
    font-size: 16px;
    font-weight: 700;
    color: var(--rk-pipe-dark);
    text-align: center;
}

/* Symulator interaktywny */
.rk-sim-area {
    background: #f8fafc;
    padding: 35px 45px;
    border-top: 1px solid var(--rk-pipe-border);
}

.rk-sim-controls {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 30px;
}

.rk-pipe-btn {
    background: #ffffff;
    border: 2px solid var(--rk-pipe-border);
    padding: 20px;
    border-radius: 16px;
    cursor: pointer;
    transition: all 0.3s ease;
    text-align: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-pipe-btn:hover {
    border-color: #94a3b8;
    transform: translateY(-2px);
}

.rk-pipe-btn h4 {
    margin: 0 0 5px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-pipe-dark);
}

.rk-pipe-btn p {
    margin: 0;
    font-size: 13px;
    color: var(--rk-pipe-text);
    font-weight: 600;
}

/* Stany Aktywne Przycisków */
.rk-btn-danger.rk-active {
    border-color: var(--rk-pipe-red);
    background: var(--rk-pipe-red-light);
    box-shadow: 0 10px 20px -5px rgba(239, 68, 68, 0.2);
}

.rk-btn-safe.rk-active {
    border-color: var(--rk-pipe-green);
    background: var(--rk-pipe-green-light);
    box-shadow: 0 10px 20px -5px rgba(16, 185, 129, 0.2);
}

/* Ekran Wyniku Wizualnego */
.rk-sim-display {
    background: #ffffff;
    border-radius: 16px;
    border: 1px solid var(--rk-pipe-border);
    padding: 30px;
    display: flex;
    align-items: center;
    gap: 30px;
    transition: all 0.4s ease;
}

.rk-pipe-visual {
    width: 120px;
    height: 120px;
    flex-shrink: 0;
    position: relative;
}

/* Animacja SVG */
.rk-flow-path {
    stroke-dasharray: 15;
    transition: stroke 0.4s ease;
}

.rk-flow-fast { animation: flowAnim 0.4s linear infinite; stroke: var(--rk-pipe-red); }
.rk-flow-slow { animation: flowAnim 1.5s linear infinite; stroke: var(--rk-pipe-green); }

@keyframes flowAnim {
    from { stroke-dashoffset: 30; }
    to { stroke-dashoffset: 0; }
}

.rk-sim-data h4 {
    margin: 0 0 10px 0;
    font-size: 22px;
    font-weight: 900;
}

.rk-sim-data p {
    margin: 0 0 15px 0;
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-pipe-text);
}

.rk-data-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 16px;
    border-radius: 8px;
    font-weight: 800;
    font-size: 16px;
}

/* Specyficzne stany panelu */
.rk-state-danger { border-color: var(--rk-pipe-red); }
.rk-state-danger h4 { color: var(--rk-pipe-red); }
.rk-state-danger .rk-data-badge { background: var(--rk-pipe-red); color: #ffffff; }

.rk-state-safe { border-color: var(--rk-pipe-green); }
.rk-state-safe h4 { color: var(--rk-pipe-green); }
.rk-state-safe .rk-data-badge { background: var(--rk-pipe-green); color: #ffffff; }

@media (max-width: 768px) {
    .rk-pipe-header, .rk-pipe-body, .rk-sim-area { padding: 25px 20px; }
    .rk-sim-controls { grid-template-columns: 1fr; gap: 15px; }
    .rk-sim-display { flex-direction: column; text-align: center; gap: 20px; padding: 25px 20px; }
    .rk-pipe-visual { width: 100px; height: 100px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-srednica",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Jaka średnica rury zasilającej rozdzielacz zapewnia prawidłowy przepływ?",
    "description": "Szczegółowe obliczenia hydrauliczne dla pionu rozdzielacza. Zobacz drastyczne różnice w prędkości przepływu między rurą PEX 25 a PEX 32.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-srednica",
    "name": "Parametry Hydrauliczne Pionów Zasilających Rozdzielacze 2026",
    "description": "Baza danych określająca dopuszczalne prędkości przepływu dla głównych linii zasilających układy płaszczyznowe w oparciu o normę DIN 1988.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jaka średnica rury zasilającej rozdzielacz",
      "rura PEX 32 czy 25 do rozdzielacza",
      "prędkość przepływu w rurach CO",
      "szumy w instalacji centralnego ogrzewania",
      "kawitacja w pompie obiegowej"
    ],
    "measurementTechnique": "Przekształcenie wzoru na pole przekroju koła i objętość cylindra do analizy krytycznych wartości pola strumienia (v = 4*Q / pi*d^2).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "PEX 25x2.5 (dn 20mm) - Prędkość 1.52 m/s przy 12kW (Krytyczna kawitacja).",
        "PEX 32x3.0 (dn 26mm) - Prędkość 0.90 m/s przy 12kW (Stabilny przepływ)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-srednica",
    "name": "Symulator Prędkości Przepływu Pionu",
    "description": "Interaktywna aplikacja edukacyjna symulująca wpływ zmiany średnicy rury głównej na prędkość czynnika roboczego i ryzyko uszkodzenia pompy.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, JavaScript and CSS3 SVG Animations",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-pipe-container">
    <div class="rk-pipe-header">
        <h2>
            <svg class="rk-pipe-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                <path d="M2 12h4l3-9 5 18 3-9h5"></path>
            </svg>
            Jaka średnica rury zasilającej rozdzielacz zapewnia prawidłowy przepływ?
        </h2>
        <p>Średnica rury zasilającej <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacz do podłogówki</a> (pion zasilający) dla instalacji o łącznej mocy cieplnej do 15 kW musi mieć średnicę wewnętrzną wynoszącą minimum <strong>26 mm</strong> (co odpowiada rurze PEX 32x3 mm lub miedzi DN28), aby prędkość przepływu cieczy nie przekraczała bezpiecznej granicy <strong>0,8 m/s</strong> zgodnie z wytycznymi normy DIN 1988.</p>
    </div>

    <div class="rk-pipe-body">
        <h3>Obliczenia hydrauliczne dla pionu rozdzielacza</h3>
        <p>Zastosowanie zbyt małego przekroju drastycznie zwiększa opory jednostkowe i odcina rozdzielacz od wymaganego strumienia medium grzewczego. Przeanalizujmy konkretny przypadek: rozdzielacz obsługuje 10 pętli, łączna moc sekcji wynosi 12 kW, przy różnicy temperatur ΔT = 6 K. Wymagany przepływ sumaryczny to <strong>1,72 m³/h (0,000477 m³/s)</strong>.</p>
        
        <div class="rk-math-box">
            V = (4 × Q<sub>sek</sub>) / (π × d<sub>wew</sub>²)
        </div>
        
        <p>Gdzie <strong>V</strong> to prędkość przepływu, <strong>Q<sub>sek</sub></strong> to przepływ sumaryczny sekcji, a <strong>d<sub>wew</sub></strong> to rzeczywista średnica wewnętrzna rury. Zmiana rury zasilającej z 32 mm na 25 mm redukuje pole przekroju poprzecznego o ponad 40%, zmuszając ciecz do gwałtownego przyspieszenia.</p>
    </div>

    <div class="rk-sim-area">
        <h3 style="margin: 0 0 20px 0; font-size: 18px; color: var(--rk-pipe-dark);">Symulacja prędkości przepływu dla 12 kW:</h3>
        
        <div class="rk-sim-controls">
            <button class="rk-pipe-btn rk-btn-danger rk-active" id="btn-pipe-25">
                <h4>Wybierz: PEX 25x2.5</h4>
                <p>Średnica wewnętrzna 20 mm</p>
            </button>
            <button class="rk-pipe-btn rk-btn-safe" id="btn-pipe-32">
                <h4>Wybierz: PEX 32x3.0</h4>
                <p>Średnica wewnętrzna 26 mm</p>
            </button>
        </div>

        <div class="rk-sim-display rk-state-danger" id="pipe-display">
            <div class="rk-pipe-visual">
                <svg viewBox="0 0 100 100" width="100%" height="100%" fill="none" stroke-width="8" stroke-linecap="round">
                    <path d="M10 50 L90 50" stroke="#e2e8f0" stroke-width="24"/>
                    <path d="M10 50 L90 50" stroke="#f8fafc" stroke-width="16"/>
                    <path id="pipe-flow-anim" class="rk-flow-path rk-flow-fast" d="M10 50 L90 50" stroke-width="8"/>
                </svg>
            </div>
            <div class="rk-sim-data">
                <h4 id="pipe-result-title">Krytyczne przekroczenie (Kawitacja)</h4>
                <p id="pipe-result-desc">Wysoka prędkość medium generuje gigantyczne straty ciśnienia (ponad 800 Pa/m). Wywołuje to uciążliwe szumy w ścianach i generuje opór, którego przeciętna pompa obiegowa nie jest w stanie pokonać. Skutek: niedogrzane skrajne sekcje.</p>
                <div class="rk-data-badge" id="pipe-result-val">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="20" height="20"><polyline points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polyline></svg>
                    Prędkość: 1.52 m/s
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btn25 = document.getElementById('btn-pipe-25');
    var btn32 = document.getElementById('btn-pipe-32');
    var displayPanel = document.getElementById('pipe-display');
    var animPath = document.getElementById('pipe-flow-anim');
    var title = document.getElementById('pipe-result-title');
    var desc = document.getElementById('pipe-result-desc');
    var valBadge = document.getElementById('pipe-result-val');

    function setPipe25() {
        // Zmiana klas przycisków
        btn25.classList.add('rk-active');
        btn32.classList.remove('rk-active');

        // Zmiana stylów panelu głównego
        displayPanel.classList.remove('rk-state-safe');
        displayPanel.classList.add('rk-state-danger');

        // Zmiana animacji SVG
        animPath.classList.remove('rk-flow-slow');
        animPath.classList.add('rk-flow-fast');

        // Aktualizacja tekstów
        title.textContent = 'Krytyczne przekroczenie (Kawitacja)';
        desc.textContent = 'Wysoka prędkość medium generuje gigantyczne straty ciśnienia (ponad 800 Pa/m). Wywołuje to uciążliwe szumy w ścianach i generuje opór, którego przeciętna pompa obiegowa nie jest w stanie pokonać. Skutek: niedogrzane skrajne sekcje.';
        valBadge.innerHTML = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="20" height="20"><polyline points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polyline></svg> Prędkość: 1.52 m/s';
    }

    function setPipe32() {
        // Zmiana klas przycisków
        btn32.classList.add('rk-active');
        btn25.classList.remove('rk-active');

        // Zmiana stylów panelu głównego
        displayPanel.classList.remove('rk-state-danger');
        displayPanel.classList.add('rk-state-safe');

        // Zmiana animacji SVG
        animPath.classList.remove('rk-flow-fast');
        animPath.classList.add('rk-flow-slow');

        // Aktualizacja tekstów
        title.textContent = 'Stabilny, cichy przepływ (Optymalny)';
        desc.innerHTML = 'Prędkość spada do akceptowalnego poziomu, a liniowa strata ciśnienia maleje do niecałych 180 Pa/m. To gwarantuje stabilną i cichą dystrybucję energii do wszystkich rotametrów. Wybór odpowiedniej <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/">rury PEX</a> ratuje całą hydraulikę.';
        valBadge.innerHTML = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="20" height="20"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg> Prędkość: 0.90 m/s';
    }

    // Bezpieczne nasłuchiwacze bez operatorów logicznych
    btn25.addEventListener('click', function() {
        var isAlreadyActive = btn25.classList.contains('rk-active');
        if (isAlreadyActive === false) {
            setPipe25();
        }
    });

    btn32.addEventListener('click', function() {
        var isAlreadyActive = btn32.classList.contains('rk-active');
        if (isAlreadyActive === false) {
            setPipe32();
        }
    });
});
</script>



<style>
:root {
    --rk-tab-dark: #0f172a;
    --rk-tab-blue: #0284c7;
    --rk-tab-light: #f0f9ff;
    --rk-tab-border: #e2e8f0;
    --rk-tab-bg: #ffffff;
    --rk-tab-text: #475569;
    --rk-tab-highlight: #38bdf8;
    --rk-tab-green: #10b981;
}

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

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

.rk-tab-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    line-height: 1.3;
}

.rk-tab-header-icon {
    width: 32px;
    height: 32px;
    color: var(--rk-tab-highlight);
    flex-shrink: 0;
}

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

/* Interfejs Symulatora */
.rk-tab-interactive {
    padding: 30px 45px;
    background: #f8fafc;
    border-bottom: 1px solid var(--rk-tab-border);
}

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

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

.rk-tab-slider-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-tab-dark);
}

.rk-tab-slider-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-tab-blue);
}

.rk-slider-input {
    width: 100%;
    accent-color: var(--rk-tab-blue);
    cursor: pointer;
}

/* Karty Pomp (Zamiast standardowej tabeli) */
.rk-tab-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    padding: 35px 45px;
    background: #ffffff;
}

.rk-pump-card {
    background: #ffffff;
    border: 2px solid var(--rk-tab-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
}

.rk-pump-card.rk-active-card {
    border-color: var(--rk-tab-blue);
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.25);
    transform: translateY(-5px);
}

.rk-pump-card.rk-active-card::before {
    content: 'ZALECANA';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    background: var(--rk-tab-blue);
    color: #ffffff;
    text-align: center;
    font-size: 12px;
    font-weight: 900;
    padding: 4px 0;
    letter-spacing: 1px;
}

.rk-pump-header {
    padding: 30px 20px 20px;
    text-align: center;
    border-bottom: 1px solid var(--rk-tab-border);
    background: #f8fafc;
}

.rk-pump-header h3 {
    margin: 0;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-tab-dark);
}

.rk-pump-header span {
    display: block;
    font-size: 13px;
    color: var(--rk-tab-text);
    margin-top: 5px;
    font-weight: 600;
}

.rk-param-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.rk-param-item {
    display: flex;
    flex-direction: column;
    padding: 15px 20px;
    border-bottom: 1px solid #f1f5f9;
}

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

.rk-param-label {
    font-size: 11px;
    text-transform: uppercase;
    color: #94a3b8;
    font-weight: 800;
    margin-bottom: 4px;
    letter-spacing: 0.5px;
}

.rk-param-value {
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-tab-dark);
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-param-value svg {
    width: 16px;
    height: 16px;
    color: var(--rk-tab-blue);
    flex-shrink: 0;
}

.rk-pump-price {
    padding: 20px;
    background: #f8fafc;
    text-align: center;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-tab-green);
    border-top: 1px solid var(--rk-tab-border);
}

/* Wnioski i kontekst */
.rk-tab-summary {
    padding: 30px 45px;
    background: #f0f9ff;
    border-top: 1px solid #bae6fd;
}

.rk-tab-summary p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: #0369a1;
}

.rk-tab-summary a {
    color: #0284c7;
    font-weight: 800;
    text-decoration: underline;
}

/* RWD - Akordeonowy stack dla mobile */
@media (max-width: 768px) {
    .rk-tab-header, .rk-tab-interactive, .rk-tab-grid, .rk-tab-summary { padding: 25px 20px; }
    .rk-tab-grid { grid-template-columns: 1fr; gap: 15px; }
    
    .rk-pump-card {
        border-width: 1px;
    }
    
    .rk-pump-card.rk-active-card {
        transform: translateY(0);
        border-width: 2px;
    }
    
    /* Mobilne zwijanie parametrów - ujawniają się tylko w aktywnej karcie */
    .rk-param-list, .rk-pump-price {
        display: none;
    }
    
    .rk-pump-card.rk-active-card .rk-param-list,
    .rk-pump-card.rk-active-card .rk-pump-price {
        display: block;
    }
    
    .rk-pump-header { padding: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-tabela",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Tabela porównawcza parametrów technicznych pomp obiegowych",
    "description": "Zestawienie techniczne parametrów i cen najpopularniejszych elektronicznych pomp obiegowych ErP: 25-40, 25-60 oraz 25-80 dedykowanych do instalacji podłogowych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-tabela",
    "name": "Zestawienie Parametrów Pomp Obiegowych 2026",
    "description": "Baza danych określająca specyfikację hydrauliczną i elektryczną (wysokość podnoszenia, moc W, przepływ, cena 2026) dla standardowych pomp instalacyjnych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "pompa klasy 25-40 parametry",
      "wysokość podnoszenia pompy 25-60",
      "pobór mocy pompy obiegowej do podłogówki",
      "cennik pomp do podłogówki 2026",
      "maksymalny przepływ wody w podłogówce"
    ],
    "measurementTechnique": "Kompilacja i porównanie deklaracji właściwości użytkowych (EEI ≤ 0,20) producentów pomp elektronicznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "25-40: 4m, 2.4 m3/h, 3-22W, do 100m2",
        "25-60: 6m, 3.4 m3/h, 3-40W, 100-220m2",
        "25-80: 8m, 4.5 m3/h, 4-60W, >220m2"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-tabela",
    "name": "Interaktywna Porównywarka Pomp Obiegowych",
    "description": "Moduł aplikacyjny pozwalający na dopasowanie i wizualizację parametrów typoszeregu pomp na podstawie suwaka metrażu budynku.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-tab-container">
    <div class="rk-tab-header">
        <h2>
            <svg class="rk-tab-header-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                <rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect>
                <line x1="3" y1="9" x2="21" y2="9"></line>
                <line x1="9" y1="21" x2="9" y2="9"></line>
            </svg>
            Tabela porównawcza parametrów technicznych pomp obiegowych
        </h2>
        <p>Poniższa specyfikacja przedstawia zestawienie kluczowych parametrów dla trzech najpopularniejszych typoszeregów elektronicznych pomp obiegowych (zgodnych z dyrektywą ErP, <strong>EEI ≤ 0,20</strong>) stosowanych w budownictwie jednorodzinnym.</p>
    </div>

    <div class="rk-tab-interactive">
        <div class="rk-tab-slider-wrap">
            <div class="rk-tab-slider-header">
                <span class="rk-tab-slider-title">Symulowana powierzchnia podłogówki:</span>
                <span class="rk-tab-slider-val"><span id="rk-tab-area-val">120</span> m²</span>
            </div>
            <input type="range" id="rk-tab-area-slider" class="rk-slider-input" min="50" max="350" step="10" value="120">
        </div>
    </div>

    <div class="rk-tab-grid">
        
        <div class="rk-pump-card" id="rk-pump-40">
            <div class="rk-pump-header">
                <h3>Klasa 25-40</h3>
                <span>Małe układy (np. 4m słupa wody)</span>
            </div>
            <ul class="rk-param-list">
                <li class="rk-param-item">
                    <span class="rk-param-label">Max. wysokość podnoszenia</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 19V5M5 12l7-7 7 7"/></svg> 4,0 m (40 kPa)</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Max. przepływ objętościowy</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 12h-4l-3 9L9 3l-3 9H2"/></svg> 2,4 m³/h</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Pobór mocy (Min-Max)</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg> 3 W – 22 W</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Sugerowana powierzchnia</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/></svg> Do 100 m²</span>
                </li>
            </ul>
            <div class="rk-pump-price">450 – 600 PLN</div>
        </div>

        <div class="rk-pump-card rk-active-card" id="rk-pump-60">
            <div class="rk-pump-header">
                <h3>Klasa 25-60</h3>
                <span>Standardowe domy (np. 6m słupa wody)</span>
            </div>
            <ul class="rk-param-list">
                <li class="rk-param-item">
                    <span class="rk-param-label">Max. wysokość podnoszenia</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 19V5M5 12l7-7 7 7"/></svg> 6,0 m (60 kPa)</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Max. przepływ objętościowy</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 12h-4l-3 9L9 3l-3 9H2"/></svg> 3,4 m³/h</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Pobór mocy (Min-Max)</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg> 3 W – 40 W</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Sugerowana powierzchnia</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/></svg> 100 m² – 220 m²</span>
                </li>
            </ul>
            <div class="rk-pump-price">650 – 850 PLN</div>
        </div>

        <div class="rk-pump-card" id="rk-pump-80">
            <div class="rk-pump-header">
                <h3>Klasa 25-80</h3>
                <span>Rozbudowane układy (np. 8m słupa wody)</span>
            </div>
            <ul class="rk-param-list">
                <li class="rk-param-item">
                    <span class="rk-param-label">Max. wysokość podnoszenia</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 19V5M5 12l7-7 7 7"/></svg> 8,0 m (80 kPa)</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Max. przepływ objętościowy</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 12h-4l-3 9L9 3l-3 9H2"/></svg> 4,5 m³/h</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Pobór mocy (Min-Max)</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg> 4 W – 60 W</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Sugerowana powierzchnia</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/></svg> Powyżej 220 m²</span>
                </li>
            </ul>
            <div class="rk-pump-price">1100 – 1400 PLN</div>
        </div>

    </div>

    <div class="rk-tab-summary">
        <p>
            Analizując powyższe parametry z tabeli, widać wyraźnie, że wybór odpowiedniego modelu musi opierać się na precyzyjnych obliczeniach dla danego budynku, a nie na zasadzie „im większa, tym lepsza”. Praca przewymiarowanej <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompy klasy 25-80</a> w małym domku drastycznie podnosi roczny <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/">koszt eksploatacji instalacji</a> ze względu na wyższe zużycie prądu [W] oraz generuje uciążliwe szumy. Z kolei zbyt słaba pompa 25-40 w budynku piętrowym nie poradzi sobie z oporami długich pętli hydraulicznych, pozostawiając posadzkę chłodną.
        </p>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var slider = document.getElementById('rk-tab-area-slider');
    var valDisplay = document.getElementById('rk-tab-area-val');
    var p40 = document.getElementById('rk-pump-40');
    var p60 = document.getElementById('rk-pump-60');
    var p80 = document.getElementById('rk-pump-80');

    function updateHighlight() {
        var area = parseInt(slider.value);
        valDisplay.textContent = area;

        // Bezpieczny reset klas
        p40.classList.remove('rk-active-card');
        p60.classList.remove('rk-active-card');
        p80.classList.remove('rk-active-card');

        // Logika przypisania na podstawie powierzchni (bez użycia &&)
        if (area <= 100) {
            p40.classList.add('rk-active-card');
        } else if (area <= 220) {
            p60.classList.add('rk-active-card');
        } else {
            p80.classList.add('rk-active-card');
        }
    }

    slider.addEventListener('input', updateHighlight);
});
</script>



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-blue: #0284c7;
    --rk-calc-blue-light: #f0f9ff;
    --rk-calc-border: #e2e8f0;
    --rk-calc-bg: #ffffff;
    --rk-calc-text: #475569;
    --rk-calc-green: #10b981;
    --rk-calc-red: #ef4444;
}

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

/* Nagłówek Kalkulatora */
.rk-calc-header {
    padding: 35px 45px;
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, #1e293b 100%);
    position: relative;
    border-bottom: 4px solid var(--rk-calc-blue);
}

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

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

.rk-calc-icon-main {
    width: 32px;
    height: 32px;
    color: #38bdf8;
}

/* Sekcja Wprowadzania Danych */
.rk-calc-body {
    padding: 35px 45px;
    background: #f8fafc;
}

.rk-calc-body h3 {
    margin: 0 0 20px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-calc-dark);
}

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

.rk-input-group {
    display: flex;
    flex-direction: column;
}

.rk-input-group label {
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-calc-text);
    margin-bottom: 8px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-input-group input, 
.rk-input-group select {
    padding: 14px 16px;
    border: 1px solid #cbd5e1;
    border-radius: 12px;
    font-size: 16px;
    font-weight: 600;
    color: var(--rk-calc-dark);
    background: #ffffff;
    transition: border-color 0.3s, box-shadow 0.3s;
}

.rk-input-group input:focus, 
.rk-input-group select:focus {
    outline: none;
    border-color: var(--rk-calc-blue);
    box-shadow: 0 0 0 3px rgba(2, 132, 199, 0.15);
}

.rk-btn-calc {
    width: 100%;
    padding: 18px;
    background: var(--rk-calc-blue);
    color: #ffffff;
    border: none;
    border-radius: 12px;
    font-size: 18px;
    font-weight: 800;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 10px;
}

.rk-btn-calc:hover {
    background: #0369a1;
    transform: translateY(-2px);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.4);
}

/* Sekcja Wyników i Suwaków */
.rk-calc-results {
    padding: 35px 45px;
    background: #ffffff;
    border-top: 1px solid var(--rk-calc-border);
}

.rk-sliders-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
    margin-bottom: 30px;
}

.rk-slider-box {
    background: var(--rk-calc-blue-light);
    padding: 20px;
    border-radius: 16px;
    border: 1px solid #bae6fd;
}

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

.rk-slider-header span {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-calc-text);
}

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

.rk-range {
    width: 100%;
    accent-color: var(--rk-calc-blue);
    cursor: pointer;
}

/* Rekomendacja */
.rk-recommendation {
    padding: 20px 25px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    gap: 15px;
    font-size: 18px;
    font-weight: 800;
    transition: all 0.4s ease;
}

/* Wykres */
.rk-chart-wrapper {
    height: 450px;
    padding: 20px;
    background: #ffffff;
    border: 1px solid var(--rk-calc-border);
    border-radius: 16px;
    margin: 0 45px 40px;
}

@media (max-width: 768px) {
    .rk-calc-header, .rk-calc-body, .rk-calc-results { padding: 25px 20px; }
    .rk-calc-grid { grid-template-columns: 1fr 1fr; }
    .rk-sliders-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-chart-wrapper { margin: 0 20px 30px; height: 350px; }
}

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

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-kalkulator",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Kalkulator Doboru Pompy Obiegowej - Wykres i Obliczenia OZC",
    "description": "Profesjonalny kalkulator online wyznaczający punkt pracy pompy (przepływ Q, wysokość podnoszenia H) na podstawie obciążenia cieplnego i oporów hydraulicznych rur.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-kalkulator",
    "name": "Baza Parametrów Hydraulicznych i Cieplnych Ogrzewania Podłogowego 2026",
    "description": "Algorytmiczny model obliczeniowy oporów jednostkowych dla rur PEX/PERT oraz wymaganego zładu wody na podstawie OZC (Δt, zapotrzebowanie W/m2).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator pompy obiegowej",
      "obliczanie przepływu wody ogrzewanie podłogowe",
      "opory hydrauliczne rury PEX 16",
      "wykres charakterystyki pompy 25-60",
      "jak dobrać pompę do podłogówki"
    ],
    "measurementTechnique": "Wyznaczenie punktu przecięcia krzywej oporów instalacji z nomogramem wydajności pomp obiegowych (Q/H) zgodnych z dyrektywą ErP.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rura PEX 16 - bazowy opór szacunkowy przyjmowany w modelu: 0.015 mH2O/m",
        "Rura PEX 17 - bazowy opór szacunkowy przyjmowany w modelu: 0.013 mH2O/m",
        "Ciepło właściwe i gęstość wody przeliczone stałą 1163"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-kalkulator",
    "name": "Kalkulator Doboru Pompy Ogrzewania Płaszczyznowego",
    "description": "Interaktywny symulator pozwalający na wyznaczenie przepływu objętościowego i wysokości podnoszenia w czasie rzeczywistym z wizualizacją na wykresie krzywych pomp.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5 Canvas",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-container">
    <div class="rk-calc-header">
        <h2>
            <svg class="rk-calc-icon-main" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                <rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect>
                <line x1="8" y1="21" x2="16" y2="21"></line>
                <line x1="12" y1="17" x2="12" y2="21"></line>
                <polyline points="10 7 14 10 10 13"></polyline>
            </svg>
            Kalkulator Doboru Pompy Obiegowej
        </h2>
        <p>Wprowadź precyzyjne dane projektowe lub estymowane z audytu OZC, aby wyznaczyć punkt pracy instalacji i sprawdzić go na tle rzeczywistych charakterystyk pomp.</p>
    </div>

    <div class="rk-calc-body">
        <h3>1. Parametry Instalacji Podłogowej</h3>
        <div class="rk-calc-grid">
            <div class="rk-input-group">
                <label>Powierzchnia (m²)</label>
                <input type="number" id="rk-in-area" value="120" min="10">
            </div>
            <div class="rk-input-group">
                <label>Moc cieplna (W/m²)</label>
                <input type="number" id="rk-in-load" value="60" min="10">
            </div>
            <div class="rk-input-group">
                <label>Różnica temp. ΔT (K)</label>
                <input type="number" id="rk-in-dt" value="5" min="2" max="15">
            </div>
            <div class="rk-input-group">
                <label>Ilość pętli</label>
                <input type="number" id="rk-in-loops" value="10" min="1">
            </div>
            <div class="rk-input-group">
                <label>Długość maks. pętli (m)</label>
                <input type="number" id="rk-in-avg" value="80" min="10">
            </div>
            <div class="rk-input-group">
                <label>Średnica rury zewnętrzna</label>
                <select id="rk-in-pipe">
                    <option value="16">PEX/PERT 16x2.0</option>
                    <option value="17" selected>PEX/PERT 17x2.0</option>
                    <option value="20">PEX/PERT 20x2.0</option>
                </select>
            </div>
        </div>
        <button id="rk-master-calc-btn" class="rk-btn-calc">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="24" height="24"><polygon points="5 3 19 12 5 21 5 3"></polygon></svg>
            Oblicz punkt pracy i odśwież wykres
        </button>
    </div>

    <div class="rk-calc-results">
        <h3>2. Obliczony punkt pracy i autoadaptacja</h3>
        <div class="rk-sliders-grid">
            <div class="rk-slider-box">
                <div class="rk-slider-header">
                    <span>Przepływ (Q)</span>
                    <span class="rk-slider-val"><span id="rk-disp-q">1.40</span> m³/h</span>
                </div>
                <input type="range" id="rk-slider-q" class="rk-range" min="0.1" max="4" step="0.05" value="1.40">
            </div>
            <div class="rk-slider-box">
                <div class="rk-slider-header">
                    <span>Wysokość podnoszenia (H)</span>
                    <span class="rk-slider-val"><span id="rk-disp-h">4.00</span> m</span>
                </div>
                <input type="range" id="rk-slider-h" class="rk-range" min="0.1" max="8" step="0.05" value="4.00">
            </div>
        </div>
        
        <div id="rk-rec-box" class="rk-recommendation">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="28" height="28"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
            <span>Rekomendowany typoszereg pompy: <span id="rk-final-pump">25-60</span></span>
        </div>
    </div>

    <div class="rk-chart-wrapper">
        <canvas id="rk-master-canvas"></canvas>
    </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js"></script>

<script>
(function() {
    "use strict";
    let masterChart = null;
    let masterQ = 1.40;
    let masterH = 4.00;

    const pumpCurves = {
        "25-40": [{x:0,y:4}, {x:0.5,y:3.8}, {x:1,y:3.3}, {x:1.5,y:2.5}, {x:2,y:1.5}, {x:2.5,y:0.3}, {x:2.6,y:0}],
        "25-60": [{x:0,y:6}, {x:1,y:5.4}, {x:2,y:4}, {x:2.5,y:3.2}, {x:3,y:2.2}, {x:3.5,y:0.8}, {x:3.8,y:0}],
        "25-80": [{x:0,y:8}, {x:1,y:7.4}, {x:2,y:6.2}, {x:3,y:4.4}, {x:3.5,y:3.2}, {x:4,y:1.8}]
    };

    function getInstallationData(q, h) {
        let pts = [];
        let k = h / (q * q);
        for (let i = 0; i <= 4.1; i += 0.1) { pts.push({x: i, y: k * i * i}); }
        return pts;
    }

    function isPointBelowCurve(q, h, curve) {
        let maxQ = curve[curve.length - 1].x;
        if (q > maxQ) {
            return false;
        }
        
        for (let i = 0; i < curve.length - 1; i++) {
            let p1 = curve[i];
            let p2 = curve[i+1];
            
            let isInsideRange = false;
            if (q >= p1.x) {
                if (q <= p2.x) {
                    isInsideRange = true;
                }
            }
            
            if (isInsideRange) {
                let ratio = (q - p1.x) / (p2.x - p1.x);
                let maxHAtQ = p1.y + ratio * (p2.y - p1.y);
                if (h <= maxHAtQ) {
                    return true;
                } else {
                    return false;
                }
            }
        }
        return false;
    }

    function initChart() {
        const ctx = document.getElementById('rk-master-canvas');
        if (!ctx) {
            setTimeout(initChart, 200);
            return;
        }
        if (typeof Chart === 'undefined') {
            setTimeout(initChart, 200);
            return;
        }

        masterChart = new Chart(ctx, {
            type: 'scatter',
            data: {
                datasets: [
                    { label: 'Krzywa 25-40', data: pumpCurves["25-40"], borderColor: '#f59e0b', showLine: true, tension: 0.3, pointRadius: 0, borderWidth: 3 },
                    { label: 'Krzywa 25-60', data: pumpCurves["25-60"], borderColor: '#0ea5e9', showLine: true, tension: 0.3, pointRadius: 0, borderWidth: 3 },
                    { label: 'Krzywa 25-80', data: pumpCurves["25-80"], borderColor: '#8b5cf6', showLine: true, tension: 0.3, pointRadius: 0, borderWidth: 3 },
                    { label: 'Opór Instalacji', data: getInstallationData(masterQ, masterH), borderColor: '#94a3b8', borderDash: [6, 6], showLine: true, pointRadius: 0, borderWidth: 2 },
                    { label: 'Punkt Pracy', data: [{x: masterQ, y: masterH}], backgroundColor: '#ef4444', pointRadius: 8, hoverRadius: 10, z: 10 }
                ]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                scales: {
                    x: { min: 0, max: 4.5, title: { display: true, text: 'Przepływ objętościowy Q [m³/h]', font: {weight: 'bold'} } },
                    y: { min: 0, max: 8.5, title: { display: true, text: 'Wysokość podnoszenia H [m]', font: {weight: 'bold'} } }
                },
                plugins: { 
                    legend: { position: 'top', labels: { font: {family: 'Inter', weight: '600'} } },
                    tooltip: { enabled: false }
                }
            }
        });

        document.getElementById('rk-master-calc-btn').addEventListener('click', function() {
            const area = parseFloat(document.getElementById('rk-in-area').value);
            const load = parseFloat(document.getElementById('rk-in-load').value);
            const dt = parseFloat(document.getElementById('rk-in-dt').value);
            const loops = parseFloat(document.getElementById('rk-in-loops').value);
            const avg = parseFloat(document.getElementById('rk-in-avg').value);
            const pipeVal = parseInt(document.getElementById('rk-in-pipe').value);

            let flow = (area * load) / (1163 * dt);
            
            let res = 0.015;
            if (pipeVal === 17) {
                res = 0.013;
            } else if (pipeVal === 20) {
                res = 0.010;
            }

            let extraRes = 0.8;
            if (loops <= 6) {
                extraRes = 0.4;
            }

            let head = (avg * res * 1.35) + extraRes;

            document.getElementById('rk-slider-q').value = flow.toFixed(2);
            document.getElementById('rk-slider-h').value = head.toFixed(2);
            
            refreshUI(flow, head);
        });

        document.getElementById('rk-slider-q').addEventListener('input', function(e) {
            refreshUI(parseFloat(e.target.value), masterH);
        });
        
        document.getElementById('rk-slider-h').addEventListener('input', function(e) {
            refreshUI(masterQ, parseFloat(e.target.value));
        });
        
        refreshUI(1.4, 4.0);
    }

    function refreshUI(q, h) {
        masterQ = q; 
        masterH = h;
        
        document.getElementById('rk-disp-q').innerText = q.toFixed(2);
        document.getElementById('rk-disp-h').innerText = h.toFixed(2);

        let recText = "Przekroczenie parametrów";
        let bgColor = "#fef2f2";
        let borderColor = "#ef4444";
        let textColor = "#b91c1c";

        if (isPointBelowCurve(q, h, pumpCurves["25-40"])) {
            recText = "25-40 (Zalecana optymalna)";
            bgColor = "#f0fdf4";
            borderColor = "#22c55e";
            textColor = "#15803d";
        } else if (isPointBelowCurve(q, h, pumpCurves["25-60"])) {
            recText = "25-60 (Zalecana optymalna)";
            bgColor = "#f0fdf4";
            borderColor = "#22c55e";
            textColor = "#15803d";
        } else if (isPointBelowCurve(q, h, pumpCurves["25-80"])) {
            recText = "25-80 (Zalecana mocna)";
            bgColor = "#f0fdf4";
            borderColor = "#22c55e";
            textColor = "#15803d";
        }

        const recBox = document.getElementById('rk-rec-box');
        document.getElementById('rk-final-pump').innerText = recText;
        
        recBox.style.backgroundColor = bgColor;
        recBox.style.borderLeft = "5px solid " + borderColor;
        recBox.style.color = textColor;

        if (masterChart) {
            masterChart.data.datasets[3].data = getInstallationData(q, h);
            masterChart.data.datasets[4].data = [{x: q, y: h}];
            masterChart.update('none');
        }
    }

    if (document.readyState === 'complete') {
        initChart();
    } else {
        window.addEventListener('load', initChart);
    }
})();
</script>



<style>
:root {
    --rk-proj-dark: #0f172a;
    --rk-proj-blue: #0284c7;
    --rk-proj-blue-light: #e0f2fe;
    --rk-proj-cyan: #06b6d4;
    --rk-proj-gray: #f8fafc;
    --rk-proj-border: #e2e8f0;
    --rk-proj-text: #475569;
    --rk-proj-gold: #fbbf24;
}

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

/* Nagłówek Sekcji */
.rk-proj-header {
    padding: 35px 45px;
    background: linear-gradient(135deg, var(--rk-proj-dark) 0%, #1e293b 100%);
    color: #ffffff;
    position: relative;
}

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

.rk-proj-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    line-height: 1.3;
    color: #ffffff;
}

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

/* Interaktywny Ekosystem */
.rk-proj-ecosystem {
    display: flex;
    padding: 0;
    background: #ffffff;
}

/* Lewa strona - Triggery */
.rk-proj-nav {
    width: 45%;
    background: var(--rk-proj-gray);
    padding: 30px;
    border-right: 1px solid var(--rk-proj-border);
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-proj-trigger {
    background: #ffffff;
    border: 1px solid var(--rk-proj-border);
    padding: 20px;
    border-radius: 12px;
    cursor: pointer;
    text-align: left;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 15px;
    position: relative;
    overflow: hidden;
}

.rk-proj-trigger::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    height: 100%;
    width: 4px;
    background: transparent;
    transition: background 0.3s;
}

.rk-proj-trigger:hover {
    box-shadow: 0 4px 12px rgba(0,0,0,0.05);
    border-color: #cbd5e1;
}

.rk-proj-trigger.rk-active {
    background: var(--rk-proj-blue-light);
    border-color: var(--rk-proj-blue);
    box-shadow: inset 0 0 0 1px var(--rk-proj-blue);
}

.rk-proj-trigger.rk-active::before {
    background: var(--rk-proj-blue);
}

.rk-trigger-icon {
    width: 32px;
    height: 32px;
    color: var(--rk-proj-text);
    flex-shrink: 0;
    transition: color 0.3s;
}

.rk-proj-trigger.rk-active .rk-trigger-icon {
    color: var(--rk-proj-blue);
}

.rk-proj-trigger h3 {
    margin: 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-proj-dark);
    line-height: 1.3;
}

/* Prawa strona - Kontent */
.rk-proj-content-area {
    width: 55%;
    padding: 40px;
    position: relative;
    background: #ffffff;
}

.rk-proj-panel {
    display: none;
    animation: fadeInPanel 0.5s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

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

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

.rk-proj-panel-icon {
    width: 48px;
    height: 48px;
    color: var(--rk-proj-cyan);
    margin-bottom: 20px;
}

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

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

/* Wyróżnik inżynieryjny wewnątrz panelu */
.rk-proj-alert {
    background: #fffbeb;
    border-left: 4px solid var(--rk-proj-gold);
    padding: 15px;
    border-radius: 0 8px 8px 0;
    margin-top: 20px;
}

.rk-proj-alert p {
    color: #b45309;
    font-size: 14px;
    font-weight: 600;
    margin: 0;
}

/* Mocne CTA */
.rk-proj-cta-section {
    padding: 40px 45px;
    background: linear-gradient(to right, #f8fafc, #f1f5f9);
    border-top: 1px solid var(--rk-proj-border);
    text-align: center;
}

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

.rk-proj-cta-section p {
    font-size: 16px;
    line-height: 1.6;
    color: var(--rk-proj-text);
    max-width: 700px;
    margin: 0 auto 25px auto;
}

.rk-btn-mega {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-proj-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 22px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 15px 30px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-btn-mega:hover {
    transform: translateY(-5px);
    background: #0369a1;
    box-shadow: 0 20px 40px -5px rgba(2, 132, 199, 0.5);
    border-color: #7dd3fc;
}

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

.rk-btn-mega:hover svg {
    transform: translateX(6px);
}

/* RWD - Zmiana na układ pionowy (akordeonowy flow) dla mobile */
@media (max-width: 768px) {
    .rk-proj-header { padding: 25px 20px; }
    .rk-proj-header h2 { font-size: 22px; }
    
    .rk-proj-ecosystem { flex-direction: column; }
    .rk-proj-nav { width: 100%; border-right: none; border-bottom: 1px solid var(--rk-proj-border); padding: 20px; }
    .rk-proj-content-area { width: 100%; padding: 25px 20px; }
    
    .rk-proj-panel h4 { font-size: 20px; }
    
    .rk-proj-cta-section { padding: 30px 20px; }
    .rk-btn-mega { width: 100%; padding: 18px 15px; font-size: 15px; flex-direction: column; gap: 8px; text-align: center; }
    .rk-btn-mega svg { transform: rotate(90deg); }
    .rk-btn-mega:hover svg { transform: rotate(90deg) translateY(5px); }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-wplyw",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Jak dobór pompy obiegowej wpływa na projekt ogrzewania podłogowego?",
    "description": "Analiza powiązań pomiędzy doborem pompy obiegowej a audytem OZC, rozstawem rur, grubością wylewki oraz sprzęgłem hydraulicznym w układach z pompą ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-wplyw",
    "name": "Macierz Wpływu Parametrów Projektowych na Dobór Pompy 2026",
    "description": "Zestawienie korelacji między składowymi projektu ogrzewania podłogowego (OZC, dylatacje, bufor ciepła) a wydajnością pompy obiegowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt instalacji ogrzewania podłogowego podłogówki",
      "obliczenia OZC a dobór pompy",
      "rozstaw rur w podłogówce a opory hydrauliczne",
      "bezwładność cieplna wylewki jastrychowej",
      "sprzęgło hydrauliczne w układzie z pompą ciepła"
    ],
    "measurementTechnique": "Symulacja zmian strumienia objętościowego i oporów hydraulicznych w odpowiedzi na modyfikacje parametrów budowlanych (temperatura, rozstaw, buforowanie).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "OZC ustala moc, co definiuje przepływ masowy.",
        "Rozstaw rur definiuje długość pętli, co warunkuje straty ciśnienia.",
        "Masa wylewki decyduje o ciągłości pracy pompy obiegowej.",
        "Bufor wymusza stosowanie dodatkowych grup pompowych i odsprzężenia."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-wplyw",
    "name": "Symulator Wpływu Projektowego",
    "description": "Interaktywny panel edukacyjny demonstrujący nierozerwalne zależności układu hydraulicznego na etapie projektowania domu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-proj-container">
    <div class="rk-proj-header">
        <h2>
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="32" height="32" style="color: var(--rk-proj-cyan);">
                <polygon points="12 2 2 7 12 12 22 7 12 2"></polygon>
                <polyline points="2 17 12 22 22 17"></polyline>
                <polyline points="2 12 12 17 22 12"></polyline>
            </svg>
            Jak dobór pompy obiegowej wpływa na projekt ogrzewania podłogowego?
        </h2>
        <p>Wybór punktu pracy pompy obiegowej jest nierozerwalnie połączony z kluczowymi składowymi całego projektu technicznego i bezpośrednio wpływa na sprawność emisyjną układu. Prawidłowy system opiera się na symbiozie hydrauliki z termodynamiką budynku.</p>
    </div>

    <div class="rk-proj-ecosystem">
        <div class="rk-proj-nav">
            <button class="rk-proj-trigger rk-active" data-target="panel-ozc">
                <svg class="rk-trigger-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                <h3>Obliczenia OZC i Delta T</h3>
            </button>
            <button class="rk-proj-trigger" data-target="panel-rury">
                <svg class="rk-trigger-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                <h3>Rozstaw rur a hydraulika</h3>
            </button>
            <button class="rk-proj-trigger" data-target="panel-wylewka">
                <svg class="rk-trigger-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="7" width="20" height="14" rx="2" ry="2"></rect><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path></svg>
                <h3>Wylewka i bezwładność</h3>
            </button>
            <button class="rk-proj-trigger" data-target="panel-sprzeglo">
                <svg class="rk-trigger-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="16"></line><line x1="8" y1="12" x2="16" y2="12"></line></svg>
                <h3>Sprzęgło i bufor ciepła</h3>
            </button>
        </div>

        <div class="rk-proj-content-area">
            
            <div class="rk-proj-panel rk-active" id="panel-ozc">
                <svg class="rk-proj-panel-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                <h4>Powiązanie z OZC i temperaturą zasilania</h4>
                <p>Profesjonalny bilans cieplny budynku (<a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">obliczenia OZC</a>) określa dokładne zapotrzebowanie na energię każdego pomieszczenia. Jeśli projektant zakłada niską temperaturę zasilania pompy ciepła (np. 35°C), automatycznie wymusza to mniejszą różnicę temperatur <strong>(ΔT = 5 K)</strong>.</p>
                <div class="rk-proj-alert">
                    <p>Skutek hydrauliczny: Mała delta oznacza konieczność przetłoczenia znacznie większego strumienia wody. Kalkulator wykaże gigantyczny przepływ, więc pompa obiegowa musi być odpowiednio mocniejsza.</p>
                </div>
            </div>

            <div class="rk-proj-panel" id="panel-rury">
                <svg class="rk-proj-panel-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                <h4>Rozstaw rur a długość pętli</h4>
                <p>Aby zredukować wymagany przepływ i temperaturę zasilania w salonie z dużymi przeszkleniami, stosuje się gęsty rozstaw rur (co 10 cm zamiast standardowych 15 cm). Zwiększa to jednak drastycznie całkowitą długość rur w pomieszczeniu.</p>
                <p>Jeśli projektant nie podzieli tego salonu na dwie lub trzy niezależne pętle, powstanie jedna gigantyczna pętla o długości np. 140 m. Jej opór hydrauliczny <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">zdławi przepływ do zera</a>, uniemożliwiając prawidłowe zbalansowanie rozdzielacza i zmuszając pompę do skrajnego wysiłku.</p>
            </div>

            <div class="rk-proj-panel" id="panel-wylewka">
                <svg class="rk-proj-panel-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="7" width="20" height="14" rx="2" ry="2"></rect><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path></svg>
                <h4>Wylewka i bezwładność cieplna</h4>
                <p>Grubość wylewki betonowej lub anhydrytowej nad rurami (standardowo 5-6 cm czystego jastrychu nad rurą) tworzy ogromny akumulator ciepła – to dosłownie <a href="https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/">największy magazyn energii w Twoim domu</a>.</p>
                <p>Aby efektywnie ładować ten magazyn przy współpracy z rekuperacją, pompa musi pracować w sposób ciągły, stabilny i ze stałym ciśnieniem proporcjonalnym, dynamicznie reagując na zamykanie <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłowników termoelektrycznych</a> sterowania strefowego. Mikroprocesor pompy kompensuje każdą zmianę oporu.</p>
            </div>

            <div class="rk-proj-panel" id="panel-sprzeglo">
                <svg class="rk-proj-panel-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="16"></line><line x1="8" y1="12" x2="16" y2="12"></line></svg>
                <h4>Sprzęgło hydrauliczne i bufor ciepła</h4>
                <p>W rozbudowanych instalacjach (np. parter i piętro), gdy wbudowana w pompę ciepła jednostka tłocząca nie radzi sobie z oporami całego domu, niezbędne staje się hydrauliczne odsprzęgnięcie układu za pomocą <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufora ciepła</a> lub sprzęgła.</p>
                <div class="rk-proj-alert">
                    <p>Skutek projektowy: Zastosowanie sprzęgła wymusza dobór dodatkowych, zewnętrznych pomp obiegowych dla każdej ze stref. Brak prawidłowego zbilansowania przepływów (obieg pierwotny vs wtórny) doprowadzi do tzw. podkradania wody i błędów w pracy sprężarki pompy ciepła.</p>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-proj-cta-section">
        <h3>Nie zdawaj się na los w kwestii własnego domu</h3>
        <p>Precyzyjny dobór pomp obiegowych, weryfikacja oporów pętli i zrównoważenie hydrauliczne to fundament cichej, energooszczędnej instalacji współpracującej z niskotemperaturową pompą ciepła. Zabezpiecz swój budżet przed kosztownymi poprawkami.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-mega">
            ZAMÓW PROFESJONALNY PROJEKT INSTALACJI OGRZEWANIA PODŁOGOWEGO
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var triggers = document.querySelectorAll('.rk-proj-trigger');
    var panels = document.querySelectorAll('.rk-proj-panel');

    for (var i = 0; i < triggers.length; i++) {
        triggers[i].addEventListener('click', function() {
            var targetId = this.getAttribute('data-target');

            // Resetowanie wszystkich przycisków (bezpiecznie bez użycia '&#038;&#038;')
            for (var j = 0; j < triggers.length; j++) {
                triggers[j].classList.remove('rk-active');
            }
            // Aktywacja klikniętego
            this.classList.add('rk-active');

            // Ukrywanie wszystkich paneli
            for (var k = 0; k < panels.length; k++) {
                panels[k].classList.remove('rk-active');
            }
            
            // Pokaż docelowy panel
            var activePanel = document.getElementById(targetId);
            if (activePanel !== null) {
                activePanel.classList.add('rk-active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-err-dark: #1e293b;
    --rk-err-red: #ef4444;
    --rk-err-red-light: #fef2f2;
    --rk-err-green: #10b981;
    --rk-err-green-light: #f0fdf4;
    --rk-err-border: #e2e8f0;
    --rk-err-bg: #ffffff;
    --rk-err-text: #475569;
}

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

/* Nagłówek sekcji */
.rk-err-header {
    padding: 35px 45px;
    background: linear-gradient(135deg, var(--rk-err-dark) 0%, #0f172a 100%);
    position: relative;
    border-bottom: 4px solid var(--rk-err-red);
}

.rk-err-header h2 {
    color: #ffffff;
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 12px;
    line-height: 1.3;
}

.rk-err-header-icon {
    width: 36px;
    height: 36px;
    color: var(--rk-err-red);
    flex-shrink: 0;
}

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

/* Siatka błędów */
.rk-err-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    padding: 35px 45px;
    background: #f8fafc;
}

.rk-err-card {
    background: var(--rk-err-bg);
    border: 1px solid var(--rk-err-border);
    border-radius: 16px;
    overflow: hidden;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
}

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

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

/* Górna część karty (Problem) */
.rk-err-problem {
    padding: 25px;
    display: flex;
    gap: 15px;
    align-items: flex-start;
    position: relative;
}

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

.rk-err-problem-text h3 {
    margin: 0 0 8px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-err-dark);
    line-height: 1.3;
}

.rk-err-problem-text p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-err-text);
    line-height: 1.5;
}

.rk-err-toggle {
    position: absolute;
    right: 20px;
    top: 25px;
    width: 24px;
    height: 24px;
    color: #94a3b8;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), color 0.3s;
}

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

/* Dolna część karty (Rozwiązanie - rozwijana) */
.rk-err-solution {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    background: var(--rk-err-green-light);
}

.rk-err-solution-inner {
    padding: 20px 25px 25px;
    border-top: 1px dashed #bbf7d0;
    display: flex;
    gap: 15px;
}

.rk-err-sol-icon {
    width: 24px;
    height: 24px;
    color: var(--rk-err-green);
    flex-shrink: 0;
    margin-top: 2px;
}

.rk-err-solution-inner p {
    margin: 0;
    font-size: 14px;
    color: #166534;
    line-height: 1.6;
    font-weight: 500;
}

.rk-err-solution-inner a {
    color: #15803d;
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.rk-err-solution-inner a:hover {
    color: #14532d;
}

@media (max-width: 768px) {
    .rk-err-header { padding: 25px 20px; }
    .rk-err-grid { grid-template-columns: 1fr; padding: 20px; gap: 15px; }
    .rk-err-problem { padding: 20px; }
    .rk-err-solution-inner { padding: 15px 20px 20px; }
    .rk-err-toggle { right: 15px; top: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Najczęstsze błędy instalatorów przy konfiguracji pomp obiegowych",
    "description": "Lista najdroższych błędów wykonawczych w ogrzewaniu podłogowym: przewymiarowanie, zły tryb pracy pompy, woda wodociągowa i brak separatorów magnetycznych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-bledy",
    "name": "Baza Błędów Wykonawczych i Kosztów Eksploatacji Pomp 2026",
    "description": "Zestawienie krytycznych błędów hydraulicznych prowadzących do uszkodzeń pomp obiegowych, generowania hałasu w instalacji oraz strat energii elektrycznej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dlaczego pompa obiegowa buczy",
      "magnetyczny separator zanieczyszczeń do ogrzewania podłogowego",
      "tryb stałego ciśnienia pompy",
      "przewymiarowana pompa do podłogówki",
      "czyszczenie filtra przed pompą ciepła"
    ],
    "measurementTechnique": "Analiza usterek hydraulicznych i strat energii elektrycznej wynikających z błędów montażowych instalatorów.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Błąd 1: Przewymiarowanie pompy (zakup 25-80 do 120m2).",
        "Błąd 2: Tryb stałych obrotów zamiast Constant Pressure (CP).",
        "Błąd 3: Napełnianie instalacji surową wodą wodociągową.",
        "Błąd 4: Brak separatora magnetycznego powodujący zacieranie wirnika."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-bledy",
    "name": "Interaktywny Detektor Błędów Instalacyjnych",
    "description": "Narzędzie symulujące sprzężenie zwrotne: problem instalacyjny kontra rozwiązanie inżynierskie dla pomp obiegowych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container">
    <div class="rk-err-header">
        <h2>
            <svg class="rk-err-header-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                <path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path>
                <line x1="12" y1="9" x2="12" y2="13"></line>
                <line x1="12" y1="17" x2="12.01" y2="17"></line>
            </svg>
            Najczęstsze błędy instalatorów przy konfiguracji pomp obiegowych
        </h2>
        <p>Mimo zaawansowanej technologii i powszechnego dostępu do wiedzy inżynieryjnej, wykonawcy na polskich budowach nagminnie powielają przestarzałe błędy, które rujnują ekonomikę instalacji niskotemperaturowych. Kliknij kafelek, aby sprawdzić, jak uchronić swój system przed awarią.</p>
    </div>

    <div class="rk-err-grid">
        
        <div class="rk-err-card">
            <div class="rk-err-problem">
                <div class="rk-err-num">1</div>
                <div class="rk-err-problem-text">
                    <h3>Dobór pompy „z zapasem” (Przewymiarowanie)</h3>
                    <p>Kupowanie pompy klasy 25-80 do standardowego domu o powierzchni 120 m² sprawia, że urządzenie z trudem schodzi z wysokich obrotów.</p>
                </div>
                <svg class="rk-err-toggle" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
            </div>
            <div class="rk-err-solution">
                <div class="rk-err-solution-inner">
                    <svg class="rk-err-sol-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    <p>Skutkuje to turbulencjami w przepływie cieczy i generowaniem hałasu w szafkach rozdzielaczowych. Zbyt mocna pompa skraca żywotność własnych łożysk i generuje zbędny koszt roczny. Przeanalizuj <a href="https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m%c2%b2/">rzeczywiste parametry instalacji</a> przed zakupem.</p>
                </div>
            </div>
        </div>

        <div class="rk-err-card">
            <div class="rk-err-problem">
                <div class="rk-err-num">2</div>
                <div class="rk-err-problem-text">
                    <h3>Ustawienie trybu stałych obrotów (Constant Speed)</h3>
                    <p>Pozostawienie pompy na sztywnym, stałym biegu (I, II lub III) w układzie z zamykającymi się siłownikami na rozdzielaczach.</p>
                </div>
                <svg class="rk-err-toggle" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
            </div>
            <div class="rk-err-solution">
                <div class="rk-err-solution-inner">
                    <svg class="rk-err-sol-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    <p>Gdy automatyka zamknie 8 z 10 pętli, pompa nadal tłoczy tę samą ilość wody przez pozostałe 2 pętle. Generuje to uciążliwe świsty i zrywa uszczelnienia. Prawidłowe <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowanie strefowe</a> zawsze wymaga włączenia trybu stałego ciśnienia (CP).</p>
                </div>
            </div>
        </div>

        <div class="rk-err-card">
            <div class="rk-err-problem">
                <div class="rk-err-num">3</div>
                <div class="rk-err-problem-text">
                    <h3>Napełnianie układu surową wodą wodociągową</h3>
                    <p>Brak przygotowania zładu wody. Zwykła woda z kranu pełna jest związków wapnia, magnezu oraz tlenu inicjującego rdzewienie.</p>
                </div>
                <svg class="rk-err-toggle" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
            </div>
            <div class="rk-err-solution">
                <div class="rk-err-solution-inner">
                    <svg class="rk-err-sol-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    <p>Kamień kotłowy osadza się na wirniku pompy i wymiennikach płytowych, drastycznie zmniejszając średnicę przelotu. Standardem inżynierskim jest <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-z-inhibitorem-korozji-do-ogrzewania-podlogowego/">woda demineralizowana z inhibitorem korozji</a>, gwarantująca dekady niezawodności.</p>
                </div>
            </div>
        </div>

        <div class="rk-err-card">
            <div class="rk-err-problem">
                <div class="rk-err-num">4</div>
                <div class="rk-err-problem-text">
                    <h3>Brak separatora magnetycznego (Zacieranie wirnika)</h3>
                    <p>Bezpośrednie podłączenie pompy bez dedykowanego osadnika z silnym magnesem neodymowym na powrocie do źródła ciepła.</p>
                </div>
                <svg class="rk-err-toggle" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
            </div>
            <div class="rk-err-solution">
                <div class="rk-err-solution-inner">
                    <svg class="rk-err-sol-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    <p>Zanieczyszczenia z rur osadzają się na magnesie trwałym silnika ECM, przez co pompa obiegowa buczy, traci wydajność, aż w końcu ulega całkowitemu zatarciu. Dobrej klasy magnetyczny separator zanieczyszczeń i coroczne <a href="https://projekt-ogrzewania.pl/jak-czesto-trzeba-serwisowac-ogrzewanie-podlogowe/">czyszczenie filtra przed pompą ciepła</a> chronią układ przed paraliżem hydraulicznym.</p>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var errCards = document.querySelectorAll('.rk-err-card');
    
    for (var i = 0; i < errCards.length; i++) {
        errCards[i].addEventListener('click', function() {
            var isActive = this.classList.contains('rk-active');
            
            // Zamykamy wszystkie karty (bezpieczna pętla, bez '&#038;&#038;')
            for (var j = 0; j < errCards.length; j++) {
                errCards[j].classList.remove('rk-active');
                var solToClose = errCards[j].querySelector('.rk-err-solution');
                solToClose.style.maxHeight = null;
            }
            
            // Otwieramy klikniętą, o ile wcześniej była zamknięta
            if (isActive === false) {
                this.classList.add('rk-active');
                var solToOpen = this.querySelector('.rk-err-solution');
                solToOpen.style.maxHeight = solToOpen.scrollHeight + "px";
            }
        });
    }
});
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-blue: #0284c7;
    --rk-case-light: #f8fafc;
    --rk-case-red: #ef4444;
    --rk-case-orange: #f97316;
    --rk-case-border: #e2e8f0;
    --rk-case-text: #475569;
    --rk-case-bg: #ffffff;
}

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

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

.rk-case-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    line-height: 1.3;
}

.rk-case-icon {
    width: 32px;
    height: 32px;
    color: var(--rk-case-orange);
    flex-shrink: 0;
}

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

/* Główny układ */
.rk-case-body {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: var(--rk-case-bg);
}

/* Lewa Kolumna - Historia */
.rk-case-story {
    padding: 40px 45px;
    border-right: 1px solid var(--rk-case-border);
}

.rk-case-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #fff7ed;
    color: #c2410c;
    padding: 6px 14px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid #fed7aa;
}

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

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

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

.rk-case-story a:hover {
    color: var(--rk-case-dark);
}

.rk-case-quote {
    padding: 20px;
    background: #f1f5f9;
    border-left: 4px solid var(--rk-case-dark);
    border-radius: 0 12px 12px 0;
    margin: 25px 0;
    font-style: italic;
    color: #334155;
    font-weight: 600;
}

/* Prawa Kolumna - Interaktywna Diagnoza */
.rk-case-interactive {
    padding: 40px;
    background: var(--rk-case-light);
    display: flex;
    flex-direction: column;
}

.rk-case-interactive h4 {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-case-dark);
    margin: 0 0 20px 0;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Przyciski Osi Czasu */
.rk-timeline-nav {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-bottom: 25px;
}

.rk-time-btn {
    padding: 16px 20px;
    background: #ffffff;
    border: 2px solid var(--rk-case-border);
    border-radius: 12px;
    cursor: pointer;
    text-align: left;
    display: flex;
    align-items: center;
    justify-content: space-between;
    transition: all 0.3s ease;
}

.rk-time-btn h5 {
    margin: 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-case-dark);
}

.rk-time-icon {
    width: 20px;
    height: 20px;
    color: #94a3b8;
    transition: color 0.3s;
}

/* Stany Przycisków */
.rk-time-btn:hover {
    border-color: #cbd5e1;
    transform: translateX(4px);
}

.rk-time-btn.rk-active-phase {
    background: var(--rk-case-blue);
    border-color: var(--rk-case-blue);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.3);
}

.rk-time-btn.rk-active-phase h5,
.rk-time-btn.rk-active-phase .rk-time-icon {
    color: #ffffff;
}

/* Ekran Wynikowy (Dynamiczny) */
.rk-phase-display {
    background: #ffffff;
    border-radius: 16px;
    padding: 25px;
    border: 1px solid var(--rk-case-border);
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-phase-img {
    width: 64px;
    height: 64px;
    margin-bottom: 20px;
}

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

.rk-phase-desc {
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-case-text);
    margin: 0;
}

@media (max-width: 768px) {
    .rk-case-header { padding: 25px 20px; }
    .rk-case-body { grid-template-columns: 1fr; }
    .rk-case-story { padding: 25px 20px; border-right: none; border-bottom: 1px solid var(--rk-case-border); }
    .rk-case-interactive { padding: 25px 20px; }
    .rk-time-btn:hover { transform: translateY(-2px); translateX(0); }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Studium przypadku: Tomasz (47 lat, Wejherowo) – cena amatorskiego doboru pompy",
    "description": "Case study pokazujące konsekwencje braku projektu OZC i doboru pompy 'z zapasem' w 160-metrowym domu na Pomorzu. Zobacz, jak uniknąć błędów instalatorów.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-casestudy",
    "name": "Analiza Błędów Wykonawczych - Case Study Wejherowo 2026",
    "description": "Zestawienie empiryczne wykazujące bezpośredni związek przyczynowo-skutkowy między brakiem obliczeń hydraulicznych a awarią pompy ciepła w nowym budynku.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jakie błędy najczęściej popełniają instalatorzy ogrzewania podłogowego",
      "ile kosztuje projekt ogrzewania podłogowego",
      "szumienie w rozdzielaczu podłogówki",
      "błędy przepływu w pompie ciepła",
      "skutki braku projektu OZC"
    ],
    "measurementTechnique": "Retrospektywna diagnoza układu hydraulicznego na bazie zgłoszeń serwisowych oraz objawów (błędy wysokiego ciśnienia HP na pompie ciepła).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przyczyna pierwotna: Brak projektu OZC i dobór pompy na zasadzie 'im większa, tym lepsza'.",
        "Przyczyna wtórna: Pętle pow. 140 m dławiące układ pomimo użycia pompy 25-80.",
        "Skutek: Zimne strefy brzegowe i błąd przepływu pompy ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-casestudy",
    "name": "Symulator Chronologii Błędów Instalacyjnych",
    "description": "Interaktywny moduł edukacyjny pokazujący rozwój problemów hydraulicznych w czasie, od decyzji na placu budowy po sezon grzewczy.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-case-container">
    <div class="rk-case-header">
        <svg class="rk-case-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
            <path d="M14 2H6a2 2 0 0 0-2 2v16c0 1.1.9 2 2 2h12a2 2 0 0 0 2-2V8l-6-6z"></path>
            <path d="M14 3v5h5M16 13H8M16 17H8M10 9H8"></path>
        </svg>
        <h2>Studium przypadku: Tomasz (47 lat, Wejherowo) – cena amatorskiego doboru pompy</h2>
        <p>Brak weryfikacji kompetencji instalatora i oszczędności na papierze często kończą się dramatem w środku zimy. Poznaj historię inwestora, który zignorował inżynierskie zasady.</p>
    </div>

    <div class="rk-case-body">
        
        <div class="rk-case-story">
            <div class="rk-case-badge">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                Realna analiza serwisowa
            </div>
            
            <h3>„Pompę dobierzemy z zapasem, będzie Pan zadowolony”</h3>
            <p>Tomasz budował swój wymarzony, 160-metrowy dom na obrzeżach Wejherowa. Chcąc zredukować koszty początkowe, pominął kwestię tego, <a href="https://projekt-ogrzewania.pl/ile-kosztuje-projekt-ogrzewania-podlogowego/">ile kosztuje projekt ogrzewania podłogowego</a>, oddając pełną władzę instalatorowi z polecenia. Wykonawca nie wykonał bilansu cieplnego, a pętle w salonie przy dużych przeszkleniach przeciągnął do astronomicznych 145 metrów, aby "zaoszczędzić na większym rozdzielaczu".</p>

            <div class="rk-case-quote">
                „Po co panu ten projekt OZC? Zamontujemy mocną pompę obiegową 25-80, ona to wszystko przepchnie. Robię tak od 20 lat.” – usłyszał inwestor.
            </div>

            <p>Problem polega na tym, że fizyki płynów nie da się oszukać doświadczeniem z lat 90. Pompa klasy 8m w zderzeniu ze zjawiskiem "króla hydraulicznego" (bardzo długa pętla) wygenerowała potężne zawirowania. Sprawdź, <a href="https://projekt-ogrzewania.pl/jakie-bledy-najczesciej-popelniaja-instalatorzy-ogrzewania-podlogowego/">jakie błędy najczęściej popełniają instalatorzy ogrzewania podłogowego</a> i prześledź na symulatorze obok, jak doszło do paraliżu instalacji Tomasza.</p>
        </div>

        <div class="rk-case-interactive">
            <h4>Oś Czasu Katastrofy Hydraulicznej</h4>
            
            <div class="rk-timeline-nav">
                <button class="rk-time-btn rk-active-phase" id="btn-phase-1">
                    <h5>Faza 1: Montaż "Na Oko"</h5>
                    <svg class="rk-time-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"></polyline></svg>
                </button>
                <button class="rk-time-btn" id="btn-phase-2">
                    <h5>Faza 2: Listopadowe Przymrozki</h5>
                    <svg class="rk-time-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"></polyline></svg>
                </button>
                <button class="rk-time-btn" id="btn-phase-3">
                    <h5>Faza 3: Rachunek za Oszczędność</h5>
                    <svg class="rk-time-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"></polyline></svg>
                </button>
            </div>

            <div class="rk-phase-display" id="phase-display">
                <svg class="rk-phase-img" id="img-phase-1" viewBox="0 0 24 24" fill="none" stroke="#eab308" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                    <circle cx="12" cy="12" r="10"></circle>
                    <path d="M12 8v4l3 3"></path>
                </svg>
                <svg class="rk-phase-img" id="img-phase-2" style="display:none;" viewBox="0 0 24 24" fill="none" stroke="#ef4444" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                    <path d="M22 12h-4l-3 9L9 3l-3 9H2"></path>
                </svg>
                <svg class="rk-phase-img" id="img-phase-3" style="display:none;" viewBox="0 0 24 24" fill="none" stroke="#0f172a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                    <path d="M12 1v22M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path>
                </svg>

                <h4 class="rk-phase-title" id="rk-phase-title">Zalanie posadzki (Sierpień 2026)</h4>
                <p class="rk-phase-desc" id="rk-phase-desc">Instalator układa pętle "z głowy". Wykorzystuje przewymiarowaną pompę 25-80 ustawioną na najwyższy, sztywny bieg. Brak protokołu z kalibracji rotametrów. Na tym etapie inwestor cieszy się, że "zaoszczędził" na projekcie inżynierskim.</p>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btns = document.querySelectorAll('.rk-time-btn');
    
    var img1 = document.getElementById('img-phase-1');
    var img2 = document.getElementById('img-phase-2');
    var img3 = document.getElementById('img-phase-3');
    
    var title = document.getElementById('rk-phase-title');
    var desc = document.getElementById('rk-phase-desc');

    for(var i = 0; i < btns.length; i++) {
        btns[i].addEventListener('click', function() {
            
            // Czyszczenie klas aktywnych (Zabezpieczenie przed uzyciem &#038;&#038;)
            for(var j = 0; j < btns.length; j++) {
                btns[j].classList.remove('rk-active-phase');
            }
            this.classList.add('rk-active-phase');

            // Ukrywanie wszystkich obrazków
            img1.style.display = 'none';
            img2.style.display = 'none';
            img3.style.display = 'none';

            // Logika podmiany zawartości (Bez uzycia &#038;&#038;)
            if (this.id === 'btn-phase-1') {
                img1.style.display = 'block';
                title.style.color = '#eab308';
                title.textContent = 'Zalanie posadzki (Sierpień 2026)';
                desc.textContent = 'Instalator układa pętle "z głowy". Wykorzystuje przewymiarowaną pompę 25-80 ustawioną na najwyższy, sztywny bieg. Brak protokołu z kalibracji rotametrów. Na tym etapie inwestor cieszy się, że "zaoszczędził" na projekcie inżynierskim.';
            } 
            else if (this.id === 'btn-phase-2') {
                img2.style.display = 'block';
                title.style.color = '#ef4444';
                title.textContent = 'Szumy i błędy pompy ciepła (Listopad)';
                desc.textContent = 'Pierwsze przymrozki w Wejherowie obnażają błędy. Przewymiarowana pompa wywołuje wibracje i szum w szafce. Przepływ w salonie wynosi 0 l/min (zjawisko zdławienia). Pompa ciepła zgłasza błędy z powodu braku odbioru mocy (tzw. taktowanie).';
            } 
            else if (this.id === 'btn-phase-3') {
                img3.style.display = 'block';
                title.style.color = '#0f172a';
                title.textContent = 'Bolesna diagnoza i koszty (Grudzień)';
                desc.textContent = 'Wezwany autoryzowany serwis diagnozuje katastrofę. Konieczna jest wymiana pompy na inteligentny model 25-60, montaż drogiego sprzęgła hydraulicznego do odciążenia układu oraz próba ręcznego, wielogodzinnego kryzowania obiegów. Oszczędność rzędu 1000 zł na projekcie wygenerowała 4500 zł strat.';
            }
        });
    }
});
</script>



<style>
:root {
    --rk-auth-dark: #0f172a;
    --rk-auth-blue: #0284c7;
    --rk-auth-bg: #ffffff;
    --rk-auth-gray: #f8fafc;
    --rk-auth-text: #334155;
    --rk-auth-border: #e2e8f0;
    --rk-auth-gold: #fbbf24;
}

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

/* Sztywny, inżynieryjny nagłówek */
.rk-auth-header {
    padding: 30px 40px;
    background: var(--rk-auth-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-auth-blue);
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-auth-header h2 {
    margin: 0;
    font-size: 24px;
    font-weight: 900;
    line-height: 1.3;
}

.rk-auth-icon {
    width: 28px;
    height: 28px;
    color: var(--rk-auth-gold);
    flex-shrink: 0;
}

/* Struktura główna */
.rk-auth-body {
    display: flex;
    background: var(--rk-auth-bg);
}

/* Lewa kolumna - Zdjęcie i nawigacja */
.rk-auth-sidebar {
    width: 300px;
    background: var(--rk-auth-gray);
    padding: 30px;
    border-right: 1px solid var(--rk-auth-border);
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-auth-photo {
    width: 140px;
    height: 140px;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid #ffffff;
    box-shadow: 0 4px 10px rgba(0,0,0,0.1);
    margin-bottom: 20px;
}

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

.rk-auth-title {
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-auth-blue);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin: 0 0 25px 0;
    text-align: center;
}

.rk-auth-nav {
    display: flex;
    flex-direction: column;
    gap: 10px;
    width: 100%;
}

.rk-auth-tab-btn {
    padding: 12px 15px;
    background: #ffffff;
    border: 1px solid var(--rk-auth-border);
    border-radius: 8px;
    cursor: pointer;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-auth-text);
    text-align: left;
    display: flex;
    align-items: center;
    gap: 10px;
    /* Usunięto animacje */
}

.rk-auth-tab-btn:hover {
    background: #f1f5f9;
}

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

.rk-auth-tab-btn svg {
    width: 18px;
    height: 18px;
}

/* Prawa kolumna - Treść (Bez animacji) */
.rk-auth-content-area {
    flex: 1;
    padding: 40px;
    position: relative;
}

.rk-auth-panel {
    display: none;
    /* Brak keyframes i opacity transitions */
}

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

/* Wnętrze paneli */
.rk-quote-mark {
    font-size: 60px;
    color: var(--rk-auth-blue);
    opacity: 0.2;
    line-height: 1;
    font-family: serif;
    position: absolute;
    top: 20px;
    left: 20px;
}

.rk-auth-panel h3 {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0 0 20px 0;
    position: relative;
    z-index: 2;
}

.rk-auth-panel p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-auth-text);
    margin: 0 0 15px 0;
    position: relative;
    z-index: 2;
}

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

/* Sekcja E-E-A-T (Sociale) */
.rk-social-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 15px;
    margin-top: 25px;
}

.rk-social-link {
    display: flex;
    align-items: center;
    gap: 15px;
    padding: 15px 20px;
    background: var(--rk-auth-gray);
    border: 1px solid var(--rk-auth-border);
    border-radius: 12px;
    text-decoration: none;
    color: var(--rk-auth-dark);
    font-weight: 800;
    font-size: 15px;
    /* Usunięto animacje */
}

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

.rk-social-link svg {
    width: 24px;
    height: 24px;
    color: var(--rk-auth-blue);
}

@media (max-width: 768px) {
    .rk-auth-header { padding: 20px; }
    .rk-auth-header h2 { font-size: 20px; }
    .rk-auth-body { flex-direction: column; }
    .rk-auth-sidebar { width: 100%; border-right: none; border-bottom: 1px solid var(--rk-auth-border); padding: 25px 20px; }
    .rk-auth-content-area { padding: 25px 20px; }
    .rk-quote-mark { top: 10px; left: 10px; font-size: 40px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-ekspert",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Okiem eksperta: Robert Kucharski o błędach w doborze pomp obiegowych",
    "description": "Autorytet techniczny i rzetelna ocena inżynierska. Dlaczego szacowanie parametrów pomp obiegowych 'na oko' niszczy nowoczesne układy z pompą ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "Inżynier HVAC",
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-ekspert",
    "name": "Profil Kompetencyjny i Weryfikacja Autorytetu Inżynierskiego 2026",
    "description": "Baza referencyjna potwierdzająca zgodność merytoryczną artykułu z rygorystycznymi standardami E-E-A-T dla treści branży sanitarnej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ekspert instalacji sanitarnych",
      "robert kucharski opinie o pompach obiegowych",
      "dobór pompy obiegowej do podłogówki",
      "prawidłowy projekt układu niskotemperaturowego",
      "inżynier hvac ogrzewanie podłogowe"
    ],
    "measurementTechnique": "Weryfikacja autentyczności autora poprzez oficjalne powiązania z profilami LinkedIn oraz Facebook (Projekt Ogrzewania).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Stanowisko merytoryczne: Odrzucenie metod szacunkowych na rzecz ścisłych obliczeń hydraulicznych.",
        "Cel: Zabezpieczenie inwestorów przed stratami wynikającymi z amatorskiego wykonawstwa."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-ekspert",
    "name": "Moduł Weryfikacji Autorytetu (E-E-A-T)",
    "description": "Interaktywna karta ekspercka umożliwiająca bezpośrednie przejście do certyfikowanych źródeł profilu autora.",
    "applicationCategory": "ReferenceApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-auth-container">
    <div class="rk-auth-header">
        <svg class="rk-auth-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
            <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path>
        </svg>
        <h2>Okiem eksperta: Robert Kucharski o doborze pomp obiegowych</h2>
    </div>

    <div class="rk-auth-body">
        
        <div class="rk-auth-sidebar">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Inżynier HVAC" class="rk-auth-photo">
            <h3 class="rk-auth-name">Robert Kucharski</h3>
            <p class="rk-auth-title">Specjalista Instalacji HVAC</p>

            <div class="rk-auth-nav">
                <button class="rk-auth-tab-btn rk-tab-active" data-show="panel-quote">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg>
                    Werdykt Specjalisty
                </button>
                <button class="rk-auth-tab-btn" data-show="panel-eat">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><polyline points="17 11 19 13 23 9"></polyline></svg>
                    Autorytet i Kontakt
                </button>
            </div>
        </div>

        <div class="rk-auth-content-area">
            <div class="rk-quote-mark">"</div>
            
            <div class="rk-auth-panel rk-panel-active" id="panel-quote">
                <h3>Budowa bez ściemy: Hydraulika nie wybacza zgadywania</h3>
                <p>W swojej karierze widziałem setki zniszczonych sprężarek w pompach ciepła i tysiące metrów kwadratowych zimnych posadzek. Wspólny mianownik tych katastrof to zawsze dobór pompy obiegowej "na oko" lub "bo tak się zawsze robiło".</p>
                <p>Nowoczesna instalacja ogrzewania podłogowego to skomplikowany, zamknięty ekosystem oparty na precyzyjnych przepływach masy czynnika grzewczego. <strong>Zignorowanie audytu OZC, źle wyliczona różnica temperatur (ΔT) czy przekroczenie normatywnych oporów pętli</strong> to gwarancja uszkodzenia elektroniki pompy i wystąpienia uciążliwych szumów w rozdzielaczach.</p>
                <p>Nie ma tu miejsca na kompromisy. Tylko twarde obliczenia chronią budżet inwestora.</p>
            </div>

            <div class="rk-auth-panel" id="panel-eat">
                <h3>Zweryfikuj źródło wiedzy</h3>
                <p>W dobie masowo generowanych treści, rzetelna wiedza inżynierska to podstawa podejmowania bezpiecznych decyzji budowlanych. Moje projekty i analizy opieram wyłącznie na sprawdzonych normach PN-EN oraz latach doświadczeń na placach budowy.</p>
                
                <div class="rk-social-grid">
                    <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer" class="rk-social-link">
                        <svg viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path></svg>
                        Profil Zawodowy LinkedIn
                    </a>
                    <a href="https://www.facebook.com/projektogrzewaniapl/" target="_blank" rel="noopener noreferrer" class="rk-social-link">
                        <svg viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.469h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.469h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"></path></svg>
                        Oficjalny fanpage Projekt-Ogrzewania.pl
                    </a>
                </div>
            </div>
        </div>
    </div>
</div>

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

    for (var i = 0; i < buttons.length; i++) {
        buttons[i].addEventListener('click', function() {
            var targetId = this.getAttribute('data-show');

            // Usuwanie klas aktywnych bez operatorów logicznych
            for (var b = 0; b < buttons.length; b++) {
                buttons[b].classList.remove('rk-tab-active');
            }
            this.classList.add('rk-tab-active');

            // Ukrywanie wszystkich paneli bezpośrednio (bez animacji)
            for (var p = 0; p < panels.length; p++) {
                panels[p].classList.remove('rk-panel-active');
            }
            
            // Wyświetlanie docelowego panelu
            var activePanel = document.getElementById(targetId);
            if (activePanel !== null) {
                activePanel.classList.add('rk-panel-active');
            }
        });
    }
});
</script>



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

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

/* Nagłówek Sekcji */
.rk-faq-header {
    padding: 35px 45px;
    background: linear-gradient(135deg, var(--rk-faq-dark) 0%, #1e293b 100%);
    position: relative;
}

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

.rk-faq-header h2 {
    color: #ffffff;
    font-size: 26px;
    font-weight: 900;
    margin: 0;
    display: flex;
    align-items: center;
    gap: 15px;
    line-height: 1.3;
}

.rk-faq-header-icon {
    width: 32px;
    height: 32px;
    color: var(--rk-faq-accent);
    flex-shrink: 0;
}

/* Interaktywny Akordeon */
.rk-accordion-container {
    padding: 20px 45px 40px;
    background: #fafafa;
}

.rk-accordion-item {
    background: #ffffff;
    border: 1px solid var(--rk-faq-border);
    border-radius: 12px;
    margin-top: 15px;
    overflow: hidden;
    transition: box-shadow 0.3s;
}

.rk-accordion-item:hover {
    box-shadow: 0 4px 12px rgba(0,0,0,0.03);
}

.rk-accordion-btn {
    width: 100%;
    text-align: left;
    padding: 22px 25px;
    background: none;
    border: none;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    transition: background-color 0.3s;
}

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

.rk-accordion-btn h3 {
    margin: 0;
    font-size: 17px;
    font-weight: 800;
    color: var(--rk-faq-dark);
    padding-right: 20px;
    line-height: 1.4;
}

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

.rk-status-icon svg {
    width: 14px;
    height: 14px;
    stroke: var(--rk-faq-blue);
    stroke-width: 3;
    transition: stroke 0.3s;
}

.rk-accordion-btn.rk-active .rk-status-icon {
    transform: rotate(180deg);
    background: var(--rk-faq-blue);
}

.rk-accordion-btn.rk-active .rk-status-icon svg {
    stroke: #ffffff;
}

/* Treść odpowiedzi */
.rk-accordion-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    background: #ffffff;
}

.rk-accordion-inner {
    padding: 0 25px 25px;
    border-top: 1px dashed transparent;
}

.rk-accordion-btn.rk-active + .rk-accordion-content .rk-accordion-inner {
    border-top-color: var(--rk-faq-border);
    padding-top: 20px;
}

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

.rk-accordion-inner a {
    color: var(--rk-faq-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.rk-accordion-inner a:hover {
    color: var(--rk-faq-dark);
}

/* Drobny detal inżynieryjny w odpowiedzi */
.rk-answer-highlight {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    background: var(--rk-faq-hover);
    padding: 15px;
    border-radius: 8px;
    margin-top: 15px;
    border-left: 4px solid var(--rk-faq-blue);
}

.rk-answer-highlight svg {
    width: 20px;
    height: 20px;
    stroke: var(--rk-faq-blue);
    flex-shrink: 0;
    margin-top: 2px;
}

@media (max-width: 768px) {
    .rk-faq-header { padding: 25px 20px; }
    .rk-faq-header h2 { font-size: 22px; }
    .rk-accordion-container { padding: 15px 20px 25px; }
    .rk-accordion-btn { padding: 18px 15px; }
    .rk-accordion-btn h3 { font-size: 15px; }
    .rk-accordion-inner { padding: 0 15px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania o pompy w podłogówce",
    "description": "Baza wiedzy i odpowiedzi na najczęstsze problemy instalatorów: tryby pracy pomp obiegowych, rotametry, zapowietrzenie i długości pętli w ogrzewaniu podłogowym.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Na jakim biegu lub w jakim trybie powinna pracować pompa do ogrzewania podłogowego?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Pompa w instalacji ogrzewania podłogowego powinna być ustawiona na tryb stałego ciśnienia (Constant Pressure – CP1 lub CP2), oznaczany na panelach sterowania ikoną poziomej kreski. Zapobiega to wahaniom ciśnienia i przepływu w momencie, gdy siłowniki termoelektryczne na rozdzielaczu zamykają lub otwierają poszczególne pętle grzewcze."
        }
      },
      {
        "@type": "Question",
        "name": "Czy standardowa pompa wbudowana w pompę ciepła wystarczy na cały dom?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Wbudowana pompa obiegowa w pompie ciepła o wysokości podnoszenia 6 m bez problemu obsłuży dom do 150–180 m², pod warunkiem, że instalacja nie posiada przewymiarowanych pętli i została wykonana bez sprzęgła hydraulicznego."
        }
      },
      {
        "@type": "Question",
        "name": "Czym grozi za długa pętla ogrzewania podłogowego?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Za długa pętla (powyżej 120 m dla rury 16 mm) generuje tak wysokie opory hydrauliczne, że pompa obiegowa nie jest w stanie wtłoczyć w nią wymaganej ilości wody. Skutkuje to niedogrzaniem pomieszczeń i zmusza do podnoszenia biegów, co wywołuje hałas."
        }
      },
      {
        "@type": "Question",
        "name": "Dlaczego rotametry na rozdzielaczu nie reagują na zmianę biegów pompy?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Brak reakcji rotametrów najczęściej świadczy o całkowitym zapowietrzeniu pętli grzewczych lub zablokowaniu wirnika pompy przez osady. Przyczyną może być też zdławienie na filtrze siatkowym."
        }
      },
      {
        "@type": "Question",
        "name": "Jak sprawdzić, czy pompa obiegowa działa prawidłowo?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Prawidłowe działanie pompy objawia się równomiernym, cichym szumem, wyczuwalną delikatną wibracją obudowy oraz stabilnymi wskazaniami przepływu na rotametrach na poziomie 1,5 – 2,5 l/min."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset",
    "name": "Baza Parametrów Diagnostycznych Pomp Obiegowych 2026",
    "description": "Zestawienie parametrów granicznych instalacji podłogowej do weryfikacji błędów hydraulicznych (tryby CP, graniczne opory pętli 120m, wskaźniki rotametrów).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "tryb stałego ciśnienia pompy",
      "wydajność wbudowanej pompy w pompie ciepła",
      "skutki zbyt długiej pętli podłogówki",
      "brak reakcji rotametrów",
      "prawidłowe parametry rotametru"
    ],
    "measurementTechnique": "Diagnostyka na podstawie wskazań wizualnych rotametrów oraz analizy ustawień trybów autoadaptacyjnych paneli elektronicznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wartość poprawna przepływu: 1.5 - 2.5 l/min.",
        "Maksymalna długość krytyczna pętli: 120 m dla rury 16x2."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp",
    "name": "Interaktywny Przewodnik Diagnostyczny",
    "description": "Aplikacja typu akordeon dostarczająca natychmiastowych rozwiązań usterek hydraulicznych w instalacjach płaszczyznowych.",
    "applicationCategory": "ReferenceApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-faq-wrapper">
    <div class="rk-faq-header">
        <h2>
            <svg class="rk-faq-header-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                <circle cx="12" cy="12" r="10"></circle>
                <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
                <line x1="12" y1="17" x2="12.01" y2="17"></line>
            </svg>
            FAQ – Najczęściej zadawane pytania o pompy w podłogówce
        </h2>
    </div>

    <div class="rk-accordion-container">
        
        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Na jakim biegu lub w jakim trybie powinna pracować pompa do ogrzewania podłogowego?</h3>
                <div class="rk-status-icon">
                    <svg viewBox="0 0 24 24" fill="none"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    <p>Pompa w instalacji ogrzewania podłogowego powinna być ustawiona na <strong>tryb stałego ciśnienia (Constant Pressure – CP1 lub CP2)</strong>, oznaczany na panelach sterowania ikoną poziomej kreski. Zapobiega to niebezpiecznym wahaniom ciśnienia i przepływu w momencie, gdy <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłowniki termoelektryczne na rozdzielaczach</a> zamykają lub otwierają poszczególne pętle grzewcze w zależności od sygnałów z termostatów pokojowych.</p>
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Czy standardowa pompa wbudowana w pompę ciepła wystarczy na cały dom?</h3>
                <div class="rk-status-icon">
                    <svg viewBox="0 0 24 24" fill="none"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    <p>Wbudowana pompa obiegowa w pompie ciepła o wysokości podnoszenia 6 m bez problemu obsłuży dom do 150–180 m², pod warunkiem, że instalacja nie posiada przewymiarowanych oporów miejscowych. W przypadku rozbudowanych systemów z kilkoma rozdzielaczami na różnych kondygnacjach niezbędne jest zastosowanie zewnętrznych grup pompowych oraz elementu odsprzęgającego, takiego jak profesjonalne <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgło hydrauliczne</a>, aby nie zakłócić przepływu na skraplaczu.</p>
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Czym grozi za długa pętla ogrzewania podłogowego?</h3>
                <div class="rk-status-icon">
                    <svg viewBox="0 0 24 24" fill="none"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    <p>Skutki ułożenia <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">za długiej pętli podłogówki</a> (powyżej 120 m dla standardowej rury 16 mm) są krytyczne. Generuje to tak wysokie opory hydrauliczne, że pompa obiegowa nie jest w stanie wtłoczyć w nią wymaganej ilości wody. W efekcie pomieszczenie obsługiwane przez ten obieg pozostanie niedogrzane, a próby ratowania sytuacji poprzez wymuszanie najwyższych biegów pompy doprowadzą do przepływów turbulentnych i generowania hałasu w instalacji.</p>
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Dlaczego rotametry na rozdzielaczu nie reagują na zmianę biegów pompy?</h3>
                <div class="rk-status-icon">
                    <svg viewBox="0 0 24 24" fill="none"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    <p>Brak reakcji wskaźników przepływu najczęściej świadczy o głębokim <a href="https://projekt-ogrzewania.pl/objawy-zapowietrzenia-ogrzewania-podlogowego/">zapowietrzeniu instalacji</a> lub zablokowaniu wirnika pompy przez zanieczyszczenia z surowej wody. Inną, bardzo częstą przyczyną awarii, jest fizyczne zdławienie przepływu na zatkanym filtrze siatkowym przed pompą lub krytyczny błąd instalatora: odwrotne podłączenie rur zasilania i powrotu do <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrów na belce rozdzielacza</a>.</p>
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Jak sprawdzić, czy pompa obiegowa działa prawidłowo?</h3>
                <div class="rk-status-icon">
                    <svg viewBox="0 0 24 24" fill="none"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    <p>Prawidłowo dobrana <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa w podłogówce</a> pracuje z równomiernym, niemal niesłyszalnym szumem. Obudowa generuje bardzo delikatną wibrację, a wskaźniki przepływu na rotametrach rozdzielacza wykazują stabilne wartości oscylujące najczęściej w przedziale <strong>1,5 – 2,5 l/min</strong>. Dodatkowo panele nowoczesnych pomp elektronicznych powinny płynnie reagować na dławienie pętli, wyświetlając na ekranie aktualny pobór mocy elektrycznej w watach [W].</p>
                    
                    <div class="rk-answer-highlight">
                        <svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                            <path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path>
                            <polyline points="22 4 12 14.01 9 11.01"></polyline>
                        </svg>
                        <p style="font-size: 14px;"><strong>Wskazówka diagnostyczna:</strong> Jeśli na elektronicznym wyświetlaczu pompy widzisz pobór mocy powyżej 45W w standardowym domu 150m², oznacza to, że walczy ona z nienormatywnym dławieniem w układzie.</p>
                    </div>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var accButtons = document.querySelectorAll('.rk-accordion-btn');
    
    for (var i = 0; i < accButtons.length; i++) {
        accButtons[i].addEventListener('click', function() {
            var isAlreadyActive = this.classList.contains('rk-active');
            
            // Zamykanie wszystkich innych otwartych kart (zoptymalizowane bez uzycia &#038;&#038;)
            for (var j = 0; j < accButtons.length; j++) {
                accButtons[j].classList.remove('rk-active');
                var contentToClose = accButtons[j].nextElementSibling;
                contentToClose.style.maxHeight = null;
            }
            
            // Otwieranie tylko jeśli kliknięty element nie był wcześniej aktywny
            if (isAlreadyActive === false) {
                this.classList.add('rk-active');
                var panelToOpen = this.nextElementSibling;
                // Pobranie rzeczywistej wysokości treści dla płynnej animacji CSS
                panelToOpen.style.maxHeight = panelToOpen.scrollHeight + "px";
            }
        });
    }
});
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-blue: #0284c7;
    --rk-dl-gray: #f8fafc;
    --rk-dl-text: #475569;
    --rk-dl-border: #e2e8f0;
    --rk-dl-bg: #ffffff;
    --rk-dl-red: #dc2626;
}

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

/* Sztywny Nagłówek */
.rk-dl-header {
    padding: 30px 40px;
    background: var(--rk-dl-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-dl-blue);
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-dl-header h2 {
    margin: 0;
    font-size: 24px;
    font-weight: 900;
    line-height: 1.3;
}

.rk-dl-icon {
    width: 28px;
    height: 28px;
    color: #38bdf8;
    flex-shrink: 0;
}

/* Główny układ kontenera */
.rk-dl-body {
    display: flex;
    background: #ffffff;
}

/* Sekcja z miniaturą */
.rk-dl-thumb-area {
    width: 320px;
    background: var(--rk-dl-gray);
    padding: 30px;
    border-right: 1px solid var(--rk-dl-border);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.rk-dl-thumb {
    width: 100%;
    height: auto;
    border: 1px solid var(--rk-dl-border);
    border-radius: 8px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.05);
    cursor: pointer;
    /* Usunięto hover scale/transition zgodnie z wytycznymi */
}

/* Sekcja z akcjami i opisem */
.rk-dl-actions-area {
    flex: 1;
    padding: 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-dl-actions-area h3 {
    margin: 0 0 15px 0;
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-dl-dark);
}

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

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

/* Przyciski (Sztywne, bez animacji CSS) */
.rk-btn-pdf, .rk-btn-img {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 16px 20px;
    font-size: 16px;
    font-weight: 800;
    border-radius: 12px;
    text-decoration: none;
    cursor: pointer;
    border: 2px solid transparent;
}

.rk-btn-pdf {
    background: var(--rk-dl-blue);
    color: #ffffff;
}
.rk-btn-pdf:hover {
    background: #0369a1;
}

.rk-btn-img {
    background: #ffffff;
    color: var(--rk-dl-dark);
    border-color: var(--rk-dl-border);
}
.rk-btn-img:hover {
    background: var(--rk-dl-gray);
    border-color: #cbd5e1;
}

/* Stopka z licencją */
.rk-dl-license {
    padding: 15px 20px;
    background: #fffbeb;
    border-left: 4px solid #f59e0b;
    border-radius: 0 8px 8px 0;
    font-size: 12px;
    line-height: 1.5;
    color: #92400e;
    font-weight: 600;
}

/* Pełnoekranowy podgląd wewnątrz kontenera */
.rk-dl-preview-full {
    display: none; /* Sterowane z JS */
    padding: 30px;
    background: #f8fafc;
    text-align: center;
}

.rk-dl-preview-full img {
    max-width: 100%;
    height: auto;
    border: 1px solid var(--rk-dl-border);
    border-radius: 8px;
    margin-bottom: 20px;
}

.rk-btn-back {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 12px 24px;
    background: var(--rk-dl-dark);
    color: #ffffff;
    font-weight: 800;
    border: none;
    border-radius: 8px;
    cursor: pointer;
}
.rk-btn-back:hover {
    background: #1e293b;
}

@media (max-width: 768px) {
    .rk-dl-header { padding: 25px 20px; }
    .rk-dl-header h2 { font-size: 20px; }
    .rk-dl-body { flex-direction: column; }
    .rk-dl-thumb-area { width: 100%; border-right: none; border-bottom: 1px solid var(--rk-dl-border); padding: 25px 20px; }
    .rk-dl-actions-area { padding: 25px 20px; }
    .rk-btn-pdf, .rk-btn-img { width: 100%; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-materialy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Kompendium wiedzy do pobrania: Infografika doboru pompy obiegowej",
    "description": "Darmowe materiały inżynierskie PDF. Schemat doboru pompy obiegowej w ogrzewaniu podłogowym krok po kroku przygotowany przez Roberta Kucharskiego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Infografika-Kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-materialy",
    "name": "Algorytm doboru pompy obiegowej - Infografika PDF",
    "description": "Dokumentacja graficzna i zbiór zasad wymiarowania pomp obiegowych dla systemów niskotemperaturowych, przygotowana do druku.",
    "license": "© 2026 Projekt-Ogrzewania.pl | Autor: Robert Kucharski. Udostępnianie materiału PDF dozwolone wyłącznie z zachowaniem logotypu portalu i bez modyfikacji pliku.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika ogrzewanie podłogowe pdf",
      "schemat doboru pompy obiegowej",
      "algorytm pompy co pobierz",
      "jak obliczyć wydajność pompy instrukcja",
      "materiały dla instalatorów hvac"
    ],
    "measurementTechnique": "Wizualizacja ustrukturyzowanej procedury doboru urządzeń hydraulicznych na bazie normy PN-EN 1264 w formie dokumentu PDF i WEBP.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Plik: Infografika-Kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym.pdf",
        "Plik: Infografika-Kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym.webp"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-materialy",
    "name": "Centrum Pobierania Projekt-Ogrzewania.pl",
    "description": "Interaktywny moduł pozwalający na podgląd infografik inżynieryjnych na żywo oraz bezpośrednie pobranie dokumentacji technicznej w formacie PDF.",
    "applicationCategory": "MultimediaApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-dl-container" id="rk-download-module">
    <div class="rk-dl-header">
        <svg class="rk-dl-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
            <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
            <polyline points="7 10 12 15 17 10"></polyline>
            <line x1="12" y1="15" x2="12" y2="3"></line>
        </svg>
        <h2>Kompendium wiedzy do pobrania: Infografika doboru pompy</h2>
    </div>

    <div class="rk-dl-body" id="rk-view-main">
        <div class="rk-dl-thumb-area">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Infografika-Kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym.webp" alt="Miniatura infografiki doboru pompy" class="rk-dl-thumb" id="rk-btn-thumb">
        </div>
        
        <div class="rk-dl-actions-area">
            <h3>Interaktywne materiały inżynierskie</h3>
            <p class="rk-dl-desc">Pobierz darmowy, autorski schemat doboru pompy obiegowej przygotowany specjalnie dla instalatorów i inwestorów. Miej ten algorytm zawsze pod ręką w swoim telefonie lub wydrukuj, aby uniknąć kosztownych błędów na budowie.</p>
            
            <div class="rk-dl-buttons">
                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Infografika-Kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym.pdf" target="_blank" class="rk-btn-pdf">
                    <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="12" y1="18" x2="12" y2="12"></line><polyline points="9 15 12 18 15 15"></polyline></svg>
                    Pobierz kompendium (Plik PDF)
                </a>
                <button class="rk-btn-img" id="rk-btn-preview">
                    <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline></svg>
                    Pokaż infografikę
                </button>
            </div>

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

    <div class="rk-dl-preview-full" id="rk-view-preview">
        <button class="rk-btn-back" id="rk-btn-close">
            <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="19" y1="12" x2="5" y2="12"></line><polyline points="12 19 5 12 12 5"></polyline></svg>
            Wróć do pobierania
        </button>
        <div style="margin-top: 20px;">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Infografika-Kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym.webp" alt="Pełna infografika doboru pompy obiegowej">
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var viewMain = document.getElementById('rk-view-main');
    var viewPreview = document.getElementById('rk-view-preview');
    
    var btnPreview = document.getElementById('rk-btn-preview');
    var btnThumb = document.getElementById('rk-btn-thumb');
    var btnClose = document.getElementById('rk-btn-close');

    function openPreview() {
        // Natychmiastowa zmiana stanu bez operatorów && i bez animacji
        viewMain.style.display = 'none';
        viewPreview.style.display = 'block';
    }

    function closePreview() {
        viewPreview.style.display = 'none';
        viewMain.style.display = 'flex'; // Przywracamy flex dla układu desktop/mobile
    }

    btnPreview.addEventListener('click', openPreview);
    btnThumb.addEventListener('click', openPreview);
    btnClose.addEventListener('click', closePreview);
});
</script>



<style>
:root {
    --rk-end-dark: #0f172a;
    --rk-end-blue: #0ea5e9;
    --rk-end-blue-hover: #0284c7;
    --rk-end-bg: #ffffff;
    --rk-end-gray-light: #f1f5f9;
    --rk-end-gray-text: #475569;
    --rk-end-green: #10b981;
    --rk-end-red: #ef4444;
    --rk-end-border: #e2e8f0;
}

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

/* Sekcja Tytułowa */
.rk-end-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-end-dark) 0%, #1e293b 100%);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-end-blue);
}

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

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

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

.rk-end-interactive h3 {
    margin: 0 0 25px 0;
    color: var(--rk-end-dark);
    font-size: 20px;
    font-weight: 800;
}

.rk-toggle-list {
    display: flex;
    flex-direction: column;
    gap: 15px;
    margin-bottom: 30px;
}

.rk-toggle-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #ffffff;
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-end-border);
    transition: all 0.3s;
}

.rk-toggle-item:hover {
    border-color: #cbd5e1;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
}

.rk-toggle-text {
    padding-right: 20px;
}

.rk-toggle-text h4 {
    margin: 0 0 5px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-end-dark);
}

.rk-toggle-text p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-end-gray-text);
    line-height: 1.5;
}

/* Przełącznik Switch */
.rk-switch {
    position: relative;
    display: inline-block;
    width: 60px;
    height: 34px;
    flex-shrink: 0;
}

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

.rk-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: #cbd5e1;
    transition: .4s;
    border-radius: 34px;
}

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

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

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

/* Wynik Symulacji */
.rk-end-result-box {
    display: flex;
    align-items: center;
    gap: 30px;
    padding: 30px;
    background: #ffffff;
    border-radius: 16px;
    border: 2px solid var(--rk-end-border);
    transition: all 0.4s ease;
}

.rk-result-icon {
    width: 80px;
    height: 80px;
    flex-shrink: 0;
}

.rk-anim-gauge {
    width: 100%;
    height: 100%;
    transform-origin: center;
    transition: all 0.5s ease;
}

.rk-gauge-bg { fill: none; stroke: #e2e8f0; stroke-width: 8; stroke-linecap: round; }
.rk-gauge-val { fill: none; stroke: var(--rk-end-red); stroke-width: 8; stroke-linecap: round; stroke-dasharray: 100; stroke-dashoffset: 80; transition: stroke 0.5s, stroke-dashoffset 0.5s; }
.rk-gauge-needle { transform-origin: 50px 50px; transform: rotate(-45deg); transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1); }

.rk-end-result-text h4 {
    margin: 0 0 10px 0;
    font-size: 22px;
    font-weight: 900;
    transition: color 0.3s;
}

.rk-end-result-text p {
    margin: 0;
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-end-gray-text);
}

.rk-end-result-text a {
    color: var(--rk-end-blue);
    font-weight: 700;
    text-decoration: none;
}
.rk-end-result-text a:hover { text-decoration: underline; }

/* Tagi Długi Ogon */
.rk-end-tags {
    padding: 20px 50px;
    background: #ffffff;
    border-top: 1px solid var(--rk-end-border);
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
}

.rk-mat-tag {
    background: #f0f9ff;
    color: #0284c7;
    padding: 6px 12px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    border: 1px solid #bae6fd;
    white-space: nowrap;
}

/* Massive CTA */
.rk-end-cta {
    padding: 40px 50px;
    background: #ffffff;
    text-align: center;
    border-top: 1px dashed var(--rk-end-border);
}

.rk-btn-end {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-end-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 45px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(14, 165, 233, 0.4);
    transition: all 0.3s ease;
}

.rk-btn-end:hover {
    transform: translateY(-3px);
    background: var(--rk-end-blue-hover);
    box-shadow: 0 15px 30px -5px rgba(2, 132, 199, 0.5);
}

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

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

@media (max-width: 768px) {
    .rk-end-header, .rk-end-interactive, .rk-end-tags, .rk-end-cta { padding: 30px 20px; }
    .rk-end-result-box { flex-direction: column; text-align: center; gap: 15px; padding: 20px; }
    .rk-toggle-item { flex-direction: column; align-items: flex-start; gap: 15px; }
    .rk-switch { align-self: flex-end; }
    .rk-btn-end { width: 100%; padding: 18px 20px; font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Podsumowanie – Bezkompromisowa hydraulika to podstawa komfortu",
    "description": "Zakończenie artykułu i interaktywny symulator układu dystrybucji udowadniający, że prawidłowy dobór pompy obiegowej chroni przed awarią ogrzewania podłogowego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/", 
        "https://sobir.pl/" 
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset",
    "name": "Zestawienie Opłacalności Precyzyjnych Obliczeń Hydraulicznych 2026",
    "description": "Baza danych i algorytm oceniający stabilność systemu w zależności od podjętych kroków inżynieryjnych: audyt OZC, parametryzacja zaworów i zastosowanie kalkulatora pomp.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dobór pompy obiegowej do podłogówki",
      "kalkulator przepływu wody ogrzewanie podłogowe",
      "opory hydrauliczne pętli",
      "pompa obiegowa 25-60 parametry",
      "energooszczędna instalacja podłogowa"
    ],
    "measurementTechnique": "Algorytmiczna weryfikacja błędów hydraulicznych w układach niskotemperaturowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Metoda archaiczna: Dobór pompy na oko – ryzyko szumów i niedogrzania.",
        "Metoda inżynierska: Wykorzystanie kalkulatorów, OZC i dokładnej różnicy temperatur."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp",
    "name": "Weryfikator Błędów Hydraulicznych",
    "description": "Interaktywne narzędzie edukacyjne symulujące skutki decyzji instalatorskich na ostateczną sprawność instalacji ogrzewania podłogowego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-end-container" id="rk-final-hydraulics">
    <div class="rk-end-header">
        <h2>Podsumowanie – Bezkompromisowa hydraulika to podstawa komfortu</h2>
        <p>
            Dobór pompy obiegowej w ogrzewaniu podłogowym nie toleruje kompromisów, półśrodków i instalatorskich mitów. To czysta matematyka i fizyka płynów. Pamiętaj, że nawet najlepsze źródło ciepła, takie jak nowoczesna pompa ciepła czy kocioł kondensacyjny, nie zapewni komfortu termicznego, jeśli układ dystrybucji oparty na pompie obiegowej zostanie spartaczony.
        </p>
    </div>

    <div class="rk-end-interactive">
        <h3>Symulator Stabilności Instalacji</h3>
        <p style="margin-top: -15px; margin-bottom: 25px; color: var(--rk-end-gray-text); font-size: 14px;">Zaznacz, które kroki techniczne zrealizowałeś, aby sprawdzić, czy Twoja podłogówka jest bezpieczna.</p>
        
        <div class="rk-toggle-list">
            <div class="rk-toggle-item">
                <div class="rk-toggle-text">
                    <h4>Obliczenia cieplne budynku</h4>
                    <p>Posiadam rzetelny audyt wykonany zgodnie ze sztuką (nie szacowany "z metra").</p>
                </div>
                <label class="rk-switch">
                    <input type="checkbox" class="rk-sim-trigger">
                    <span class="rk-slider"></span>
                </label>
            </div>
            
            <div class="rk-toggle-item">
                <div class="rk-toggle-text">
                    <h4>Pętle zrównoważone hydraulicznie</h4>
                    <p>Żadna pętla nie przekracza normatywnej maksymalnej długości, chroniąc pompę przed przeciążeniem.</p>
                </div>
                <label class="rk-switch">
                    <input type="checkbox" class="rk-sim-trigger">
                    <span class="rk-slider"></span>
                </label>
            </div>

            <div class="rk-toggle-item">
                <div class="rk-toggle-text">
                    <h4>Użycie kalkulatora pomp</h4>
                    <p>Punkt pracy został precyzyjnie naniesiony na wykres producenta na podstawie rzeczywistych oporów.</p>
                </div>
                <label class="rk-switch">
                    <input type="checkbox" class="rk-sim-trigger">
                    <span class="rk-slider"></span>
                </label>
            </div>
        </div>

        <div class="rk-end-result-box" id="rkSimResult">
            <div class="rk-result-icon">
                <svg viewBox="0 0 100 100" class="rk-anim-gauge">
                    <path class="rk-gauge-bg" d="M 20 80 A 40 40 0 1 1 80 80"></path>
                    <path id="rkGaugeVal" class="rk-gauge-val" d="M 20 80 A 40 40 0 1 1 80 80"></path>
                    <g id="rkGaugeNeedle" class="rk-gauge-needle">
                        <circle cx="50" cy="50" r="5" fill="#1e293b"></circle>
                        <polygon points="48,50 52,50 50,15" fill="#1e293b"></polygon>
                    </g>
                </svg>
            </div>
            <div class="rk-end-result-text">
                <h4 id="rkSimTitle" style="color: var(--rk-end-red);">Krytyczne Ryzyko Awarii</h4>
                <p id="rkSimDesc">
                    Projektowanie "z głowy" gwarantuje problemy. Odrzuć archaiczne metody! Opieraj się na twardych danych z <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">certyfikowanych projektów OZC</a> i wymagaj stosowania norm technicznych.
                </p>
            </div>
        </div>
    </div>

    <div class="rk-end-tags">
        <span class="rk-mat-tag"># dobór pompy obiegowej do podłogówki</span>
        <span class="rk-mat-tag"># kalkulator przepływu wody ogrzewanie podłogowe</span>
        <span class="rk-mat-tag"># projekt ozc a pompa ciepła</span>
        <span class="rk-mat-tag"># hałas w rozdzielaczu podłogówki</span>
        <span class="rk-mat-tag"># krzywa grzewcza w ogrzewaniu podłogowym</span>
        <span class="rk-mat-tag"># pompa obiegowa 25-60 parametry</span>
        <span class="rk-mat-tag"># opory hydrauliczne pętli</span>
        <span class="rk-mat-tag"># energooszczędna instalacja podłogowa</span>
    </div>

    <div class="rk-end-cta">
        <p style="color: var(--rk-end-gray-text); font-size: 16px; margin: 0 auto 25px auto; max-width: 650px; line-height: 1.6;">
            Tylko pełna kontrola nad hydrauliką da Ci pewność, że Twoja instalacja będzie energooszczędna, cicha i bezawaryjna przez długie lata eksploatacji. Czas przejąć stery nad swoją budową.
        </p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-end">
            SPRAWDŹ BAZĘ WIEDZY EKSKLUZYWNEJ
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const toggles = document.querySelectorAll('.rk-sim-trigger');
    const gaugeVal = document.getElementById('rkGaugeVal');
    const gaugeNeedle = document.getElementById('rkGaugeNeedle');
    const title = document.getElementById('rkSimTitle');
    const desc = document.getElementById('rkSimDesc');
    const resultBox = document.getElementById('rkSimResult');

    function updateSimulation() {
        let score = 0;
        toggles.forEach(function(t) {
            if (t.checked) {
                score = score + 1;
            }
        });

        if (score === 0) {
            gaugeVal.style.stroke = '#ef4444';
            gaugeVal.style.strokeDashoffset = '80';
            gaugeNeedle.style.transform = 'rotate(-80deg)';
            title.style.color = '#ef4444';
            title.textContent = 'Krytyczne Ryzyko Awarii';
            desc.innerHTML = 'Projektowanie "z głowy" gwarantuje problemy. Odrzuć archaiczne metody! Opieraj się na twardych danych z <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">certyfikowanych projektów OZC</a> i wymagaj stosowania norm technicznych.';
            resultBox.style.borderColor = '#ef4444';
        } else if (score === 1) {
            gaugeVal.style.stroke = '#eab308';
            gaugeVal.style.strokeDashoffset = '50';
            gaugeNeedle.style.transform = 'rotate(-30deg)';
            title.style.color = '#eab308';
            title.textContent = 'Układ Niestabilny';
            desc.innerHTML = 'Dobry początek, ale instalacja to system naczyń połączonych. Brak kontroli nad <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">resztą błędów wykonawczych</a> zemści się niedogrzaniem stref granicznych.';
            resultBox.style.borderColor = '#eab308';
        } else if (score === 2) {
            gaugeVal.style.stroke = '#0ea5e9';
            gaugeVal.style.strokeDashoffset = '20';
            gaugeNeedle.style.transform = 'rotate(30deg)';
            title.style.color = '#0ea5e9';
            title.textContent = 'Poprawny Standard';
            desc.innerHTML = 'Jesteś na świetnej drodze. Parametry hydrauliczne są niemal spięte, pamiętaj tylko o uwzględnieniu ostatecznego <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">zapotrzebowania na ciepło</a> przed zakupem pompy.';
            resultBox.style.borderColor = '#bae6fd';
        } else if (score === 3) {
            gaugeVal.style.stroke = '#10b981';
            gaugeVal.style.strokeDashoffset = '0';
            gaugeNeedle.style.transform = 'rotate(80deg)';
            title.style.color = '#10b981';
            title.textContent = 'Inżynierska Perfekcja';
            desc.innerHTML = 'Układ zbalansowany w 100%. Tak zaprojektowana instalacja będzie energooszczędna, cicha i bezawaryjna. To fundament, który wykorzystuje pełen potencjał <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">niskotemperaturowej pompy ciepła</a>.';
            resultBox.style.borderColor = '#10b981';
        }
    }

    toggles.forEach(function(toggle) {
        toggle.addEventListener('change', updateSimulation);
    });
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">Kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Kompleksowy kalkulator ogrzewania podłogowego.</title>
		<link>https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 01 Mar 2026 15:07:17 +0000</pubDate>
				<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Narzędzia i kalkulatory]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradnik inwestora]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[Technika instalacyjna]]></category>
		<category><![CDATA[Technologia grzewcza]]></category>
		<category><![CDATA[długość rury pex]]></category>
		<category><![CDATA[instalacja podłogowa krok po kroku]]></category>
		<category><![CDATA[kalkulator ogrzewania podłogowego]]></category>
		<category><![CDATA[moc ogrzewania podłogowego]]></category>
		<category><![CDATA[obliczenia ogrzewania podłogowego]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[przepływy w pętlach]]></category>
		<category><![CDATA[rozdzielacz podłogówki]]></category>
		<category><![CDATA[rozstaw rur podłogówka]]></category>
		<category><![CDATA[temperatura zasilania podłogówka]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3552</guid>

					<description><![CDATA[<p>Ile metrów rury kupić? Jak dobrać rozstaw pętli? Czy temperatura 35°C wystarczy, aby ogrzać cały dom? Kompleksowy kalkulator ogrzewania podłogowego pozwala przełożyć te pytania na konkretne liczby. W artykule znajdziesz nie tylko wzory i gotowe przeliczniki, ale także realny przykład mieszkania 70 m² rozpisany krok po kroku. To praktyczne narzędzie dla inwestorów, którzy chcą świadomie zaplanować instalację i uniknąć kosztownych błędów wykonawczych.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/">Kompleksowy kalkulator ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-darker: #020617;
    --rk-intro-primary: #2563eb; /* Inżynieryjny niebieski */
    --rk-intro-primary-light: #eff6ff;
    --rk-intro-teal: #0d9488; /* Akcent dla parametrów */
    --rk-intro-teal-bg: #f0fdfa;
    --rk-intro-bg: #ffffff;
    --rk-intro-surface: #f8fafc;
    --rk-intro-border: #e2e8f0;
    --rk-intro-text: #334155;
    --rk-intro-muted: #64748b;
    --rk-intro-shadow: 0 10px 30px -10px rgba(37, 99, 235, 0.15);
}

.rk-intro-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-intro-bg);
    border-radius: 24px;
    box-shadow: var(--rk-intro-shadow);
    border: 1px solid var(--rk-intro-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK I WSTĘP --- */
.rk-intro-header {
    background: linear-gradient(145deg, var(--rk-intro-darker) 0%, var(--rk-intro-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
}

.rk-intro-header::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 100%; height: 5px;
    background: linear-gradient(90deg, var(--rk-intro-primary), var(--rk-intro-teal));
}

.rk-intro-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(37, 99, 235, 0.2);
    color: #60a5fa;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(96, 165, 250, 0.3);
}

.rk-intro-title {
    font-size: 32px;
    font-weight: 900;
    line-height: 1.2;
    margin: 0 0 25px 0;
    color: #ffffff;
}

.rk-intro-title span {
    color: #93c5fd;
}

.rk-intro-lead {
    font-size: 17px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
    padding: 25px;
    background: rgba(255, 255, 255, 0.03);
    border-left: 4px solid var(--rk-intro-primary);
    border-radius: 0 12px 12px 0;
}

.rk-intro-lead strong {
    color: #ffffff;
    font-weight: 700;
}

.rk-link-light {
    color: #60a5fa;
    text-decoration: none;
    border-bottom: 1px dashed rgba(96, 165, 250, 0.5);
    transition: all 0.3s;
}

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

/* --- INTERAKTYWNY EKSPLORATOR ALGORYTMU --- */
.rk-explorer-section {
    padding: 40px 50px;
    background: var(--rk-intro-surface);
}

.rk-explorer-title {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-intro-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

/* Nawigacja (Menu pigułkowe) */
.rk-explorer-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 35px;
    background: #ffffff;
    padding: 8px;
    border-radius: 16px;
    border: 1px solid var(--rk-intro-border);
}

.rk-exp-btn {
    flex: 1;
    min-width: 140px;
    padding: 14px 20px;
    background: transparent;
    border: none;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-intro-muted);
    cursor: pointer;
    transition: all 0.3s;
    text-align: center;
}

.rk-exp-btn:hover {
    background: var(--rk-intro-surface);
    color: var(--rk-intro-primary);
}

.rk-exp-btn.active {
    background: var(--rk-intro-primary);
    color: #ffffff;
    box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3);
}

/* Zawartość zakładek */
.rk-exp-content {
    display: none;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-intro-border);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    overflow: hidden;
    animation: rkFadeIn 0.4s ease;
}

.rk-exp-content.active {
    display: flex;
}

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

/* Layout wewnętrzny: Lewo SVG (Statyczne), Prawo Tekst */
.rk-exp-visual {
    flex: 0 0 40%;
    background: var(--rk-intro-teal-bg);
    padding: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-right: 1px solid var(--rk-intro-border);
}

.rk-static-svg {
    width: 100%;
    max-width: 180px;
    height: auto;
    filter: drop-shadow(0 10px 15px rgba(13, 148, 136, 0.15));
}

.rk-exp-details {
    flex: 1;
    padding: 35px 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-exp-details h3 {
    margin: 0 0 15px 0;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-intro-dark);
}

.rk-exp-details p {
    margin: 0 0 20px 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-intro-text);
}

/* Kafelki z parametrami (zamiast lania wody) */
.rk-data-tiles {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-tile {
    background: var(--rk-intro-surface);
    padding: 15px;
    border-radius: 12px;
    border: 1px solid var(--rk-intro-border);
}

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

.rk-tile-value {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-intro-primary);
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-intro-header, .rk-explorer-section { padding: 30px 25px; }
    .rk-intro-title { font-size: 26px; }
    .rk-intro-lead { padding: 20px 15px; font-size: 15px; }
    .rk-exp-content.active { flex-direction: column; }
    .rk-exp-visual { border-right: none; border-bottom: 1px solid var(--rk-intro-border); padding: 40px 20px; }
    .rk-exp-details { padding: 25px; }
    .rk-data-tiles { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Kompleksowy Kalkulator Ogrzewania Podłogowego (Algorytm PN-EN 1264)",
    "description": "Precyzyjne narzędzie inżynieryjne pozwalające wyliczyć strumień masowy, opory hydrauliczne pętli, rozstaw rur i całkowitą długość przewodów PERT/PEX. Kompendium wiedzy matematycznej.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-23",
    "dateModified": "2026-05-23"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-algorytm",
    "name": "Zestawienie Parametrów Algorytmu PN-EN 1264",
    "description": "Baza danych wytycznych algorytmicznych niezbędnych do przeprowadzenia poprawnych obliczeń hydrauliczno-termicznych systemu grzewczego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kompleksowy kalkulator ogrzewania podłogowego",
      "algorytm inżynieryjny PN-EN 1264",
      "obliczenia hydrauliczno-termiczne",
      "strumień masowy podłogówki",
      "opory hydrauliczne pętli"
    ],
    "measurementTechnique": "Obliczenia numeryczne na podstawie wzorów fizyki cieplnej i normy europejskiej PN-EN 1264 dot. systemów płaszczyznowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zapotrzebowanie na strumień masowy czynnika grzewczego (kg/h).",
        "Opory hydrauliczne pętli grzewczej i spadki ciśnień (kPa).",
        "Wymagany rozstaw rur dostosowany do strefy i strat ciepła.",
        "Całkowita długość przewodów PEX/PERT na jedno pomieszczenie."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-wstep",
    "name": "Eksplorator Algorytmu Ogrzewania Podłogowego",
    "description": "Interaktywny widget prezentujący 4 główne filary obliczeniowe profesjonalnego kalkulatora podłogówki, wyposażony w statyczne grafiki inżynierskie.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and CSS3",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container" id="rk-intro-app">
    
    <div class="rk-intro-header">
        <div class="rk-intro-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Kompendium Inżyniera
        </div>
        <h2 class="rk-intro-title">Kompleksowy Kalkulator <span>Ogrzewania Podłogowego</span></h2>
        
        <p class="rk-intro-lead">
            Błędne zaprojektowanie instalacji płaszczyznowej generuje gigantyczne straty finansowe, niedogrzanie pomieszczeń oraz pękanie wylewek jastrychowych. <strong>Kompleksowy kalkulator ogrzewania podłogowego</strong> to zaawansowany algorytm inżynieryjny oparty na <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/" class="rk-link-light">normie PN-EN 1264</a>, który pozwala precyzyjnie wyliczyć zapotrzebowanie na strumień masowy czynnika grzewczego, opory hydrauliczne pętli, wymagany <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-link-light">rozstaw rur</a> oraz całkowitą długość <a href="https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/" class="rk-link-light">przewodów PERT/PEX</a>. Poniższy materiał stanowi kompletne kompendium wiedzy matematycznej i instalacyjnej, niezbędne do przeprowadzenia obliczeń hydrauliczno-termicznych systemu grzewczego (Interaktywny kalkulator jest dostępny w dalszej części artykułu).
        </p>
    </div>

    <div class="rk-explorer-section">
        <h3 class="rk-explorer-title">4 Filary Algorytmu Obliczeniowego</h3>
        
        <div class="rk-explorer-nav">
            <button class="rk-exp-btn active" data-target="tab-masowy">Strumień Masowy</button>
            <button class="rk-exp-btn" data-target="tab-opory">Opory Hydrauliczne</button>
            <button class="rk-exp-btn" data-target="tab-rozstaw">Rozstaw Rur</button>
            <button class="rk-exp-btn" data-target="tab-dlugosc">Długość Przewodów</button>
        </div>

        <div class="rk-exp-content active" id="tab-masowy">
            <div class="rk-exp-visual">
                <svg class="rk-static-svg" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
                    <rect x="35" y="10" width="30" height="80" rx="4" fill="#ffffff" stroke="#2563eb" stroke-width="4"></rect>
                    <line x1="45" y1="20" x2="55" y2="20" stroke="#64748b" stroke-width="2"></line>
                    <line x1="45" y1="40" x2="55" y2="40" stroke="#64748b" stroke-width="2"></line>
                    <line x1="45" y1="60" x2="55" y2="60" stroke="#64748b" stroke-width="2"></line>
                    <line x1="45" y1="80" x2="55" y2="80" stroke="#64748b" stroke-width="2"></line>
                    <polygon points="40,55 60,55 50,70" fill="#ef4444"></polygon>
                    <path d="M 50 90 L 50 100 M 35 100 L 65 100" stroke="#0d9488" stroke-width="4" stroke-linecap="round"></path>
                </svg>
            </div>
            <div class="rk-exp-details">
                <h3>Zapotrzebowanie na strumień masowy</h3>
                <p>Kalkulator na podstawie projektowego obciążenia cieplnego (OZC) określa dokładną ilość wody (w litrach na minutę), jaka musi przepłynąć przez dany obwód, aby dostarczyć wymaganą moc grzewczą do pomieszczenia. To podstawa regulacji na rotametrach.</p>
                <div class="rk-data-tiles">
                    <div class="rk-tile">
                        <div class="rk-tile-label">Jednostka bazowa</div>
                        <div class="rk-tile-value">kg/h lub l/min</div>
                    </div>
                    <div class="rk-tile">
                        <div class="rk-tile-label">Zależność fizyczna</div>
                        <div class="rk-tile-value">Q = m · c · ΔT</div>
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-exp-content" id="tab-opory">
            <div class="rk-exp-visual">
                <svg class="rk-static-svg" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
                    <path d="M 10 50 Q 30 20 50 50 T 90 50" fill="none" stroke="#e2e8f0" stroke-width="12" stroke-linecap="round"></path>
                    <path d="M 10 50 Q 30 20 50 50 T 90 50" fill="none" stroke="#2563eb" stroke-width="6" stroke-linecap="round"></path>
                    <circle cx="20" cy="30" r="12" fill="#ffffff" stroke="#0d9488" stroke-width="3"></circle>
                    <line x1="20" y1="30" x2="28" y2="22" stroke="#ef4444" stroke-width="2" stroke-linecap="round"></line>
                    <circle cx="80" cy="30" r="12" fill="#ffffff" stroke="#0d9488" stroke-width="3"></circle>
                    <line x1="80" y1="30" x2="72" y2="22" stroke="#ef4444" stroke-width="2" stroke-linecap="round"></line>
                </svg>
            </div>
            <div class="rk-exp-details">
                <h3>Opory hydrauliczne pętli</h3>
                <p>Zbyt długa rura lub zbyt duża prędkość wody generuje ogromne opory tarcia (straty liniowe i miejscowe). Obliczenia te są krytyczne dla poprawnego doboru wysokości podnoszenia pompy obiegowej, aby zapobiec &#8222;niedogrzaniu&#8221; najdalszych pętli.</p>
                <div class="rk-data-tiles">
                    <div class="rk-tile">
                        <div class="rk-tile-label">Maksymalny opór pętli</div>
                        <div class="rk-tile-value">≤ 20 kPa</div>
                    </div>
                    <div class="rk-tile">
                        <div class="rk-tile-label">Optymalna prędkość</div>
                        <div class="rk-tile-value">0,25 &#8211; 0,5 m/s</div>
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-exp-content" id="tab-rozstaw">
            <div class="rk-exp-visual">
                <svg class="rk-static-svg" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
                    <rect x="10" y="10" width="80" height="80" fill="#ffffff" stroke="#cbd5e1" stroke-width="2" rx="4"></rect>
                    <path d="M 20 20 L 80 20 M 80 20 A 10 10 0 0 1 80 40 M 80 40 L 20 40 M 20 40 A 10 10 0 0 0 20 60 M 20 60 L 80 60 M 80 60 A 10 10 0 0 1 80 80 M 80 80 L 20 80" fill="none" stroke="#0d9488" stroke-width="6" stroke-linecap="round"></path>
                    <line x1="45" y1="23" x2="45" y2="37" stroke="#ef4444" stroke-width="2"></line>
                    <polygon points="45,23 42,28 48,28" fill="#ef4444"></polygon>
                    <polygon points="45,37 42,32 48,32" fill="#ef4444"></polygon>
                </svg>
            </div>
            <div class="rk-exp-details">
                <h3>Wymagany rozstaw rur</h3>
                <p>Na podstawie oporu cieplnego warstw posadzki (np. płytki vs panele) oraz wyliczonych strat ciepła, system wskazuje bezpieczny rozstaw montażowy. Zagęszczenie rur (np. co 10 cm w łazience) gwarantuje osiągnięcie właściwej temperatury wnętrza.</p>
                <div class="rk-data-tiles">
                    <div class="rk-tile">
                        <div class="rk-tile-label">Pompy ciepła (Standard)</div>
                        <div class="rk-tile-value">10 &#8211; 15 cm</div>
                    </div>
                    <div class="rk-tile">
                        <div class="rk-tile-label">Strefy brzegowe (Okna)</div>
                        <div class="rk-tile-value">5 &#8211; 10 cm</div>
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-exp-content" id="tab-dlugosc">
            <div class="rk-exp-visual">
                <svg class="rk-static-svg" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
                    <circle cx="50" cy="50" r="35" fill="none" stroke="#2563eb" stroke-width="8"></circle>
                    <circle cx="50" cy="50" r="25" fill="none" stroke="#2563eb" stroke-width="8"></circle>
                    <circle cx="50" cy="50" r="15" fill="none" stroke="#2563eb" stroke-width="8"></circle>
                    <path d="M 50 15 L 50 5" stroke="#ef4444" stroke-width="4" stroke-linecap="round"></path>
                    <path d="M 50 5 L 90 5" stroke="#ef4444" stroke-width="4" stroke-linecap="round"></path>
                    <text x="70" y="20" fill="#0f172a" font-size="14" font-weight="900" font-family="sans-serif">Σ L</text>
                </svg>
            </div>
            <div class="rk-exp-details">
                <h3>Całkowita długość przewodów</h3>
                <p>Precyzyjne wyliczenie metrów bieżących (uwzględniające 10% naddatku instalacyjnego oraz trasy doprowadzające do rozdzielacza) zapobiega brakom materiałowym na budowie i pozwala dokładnie oszacować pojemność zładu wodnego układu.</p>
                <div class="rk-data-tiles">
                    <div class="rk-tile">
                        <div class="rk-tile-label">Max dł. obwodu (PEX 16)</div>
                        <div class="rk-tile-value">120 m</div>
                    </div>
                    <div class="rk-tile">
                        <div class="rk-tile-label">Pojemność rury 16&#215;2</div>
                        <div class="rk-tile-value">0,113 l/mb</div>
                    </div>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-intro-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener interaktywny należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na nieautoryzowanej domenie jest zabronione prawem.
                </div>
            `;
            return;
        }
    }

    // Logika Zakładek Eksploratora
    const buttons = document.querySelectorAll('.rk-exp-btn');
    const contents = document.querySelectorAll('.rk-exp-content');

    buttons.forEach(btn => {
        btn.addEventListener('click', () => {
            const targetId = btn.getAttribute('data-target');
            
            // Resetuj wszystkie
            buttons.forEach(b => b.classList.remove('active'));
            contents.forEach(c => c.classList.remove('active'));
            
            // Aktywuj kliknięty
            btn.classList.add('active');
            document.getElementById(targetId).classList.add('active');
        });
    });
});
</script>



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-darker: #020617;
    --rk-calc-brand: #3b82f6; /* Inżynieryjny, mocny niebieski */
    --rk-calc-brand-hover: #2563eb;
    --rk-calc-accent: #f59e0b; /* Bursztyn do akcentowania wzorów */
    --rk-calc-bg: #ffffff;
    --rk-calc-surface: #f8fafc;
    --rk-calc-border: #e2e8f0;
    --rk-calc-text: #334155;
    --rk-calc-muted: #64748b;
    --rk-calc-formula-bg: #1e293b;
    --rk-shadow-soft: 0 10px 25px -5px rgba(59, 130, 246, 0.1);
}

.rk-calc-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-calc-bg);
    border-radius: 20px;
    box-shadow: var(--rk-shadow-soft);
    border: 1px solid var(--rk-calc-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-calc-header {
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, var(--rk-calc-darker) 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-calc-brand);
}

.rk-calc-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(59, 130, 246, 0.2);
    color: #93c5fd;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 15px;
    border: 1px solid rgba(147, 197, 253, 0.3);
}

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

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

.rk-calc-lead strong { color: #ffffff; }

.rk-calc-link {
    color: #60a5fa;
    text-decoration: underline;
    text-underline-offset: 3px;
    font-weight: 600;
    transition: color 0.3s;
}

.rk-calc-link:hover { color: #93c5fd; }

/* --- INTERAKTYWNY STEPPER --- */
.rk-calc-interactive {
    padding: 40px 50px;
    background: var(--rk-calc-surface);
}

.rk-calc-subtitle {
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

.rk-stepper-wrapper {
    display: flex;
    gap: 30px;
    background: #ffffff;
    border: 1px solid var(--rk-calc-border);
    border-radius: 16px;
    padding: 25px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

/* Lewa strona: Kroki */
.rk-stepper-nav {
    flex: 0 0 220px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    border-right: 1px solid var(--rk-calc-border);
    padding-right: 20px;
}

.rk-step-btn {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    text-align: left;
    background: transparent;
    border: 1px solid transparent;
    padding: 15px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-calc-muted);
    cursor: pointer;
    transition: all 0.3s;
}

.rk-step-btn:hover {
    background: var(--rk-calc-surface);
    color: var(--rk-calc-brand);
}

.rk-step-btn.active {
    background: var(--rk-calc-brand);
    color: #ffffff;
    box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
}

.rk-step-num {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    background: var(--rk-calc-border);
    color: var(--rk-calc-text);
    border-radius: 50%;
    font-size: 12px;
    font-weight: 900;
    transition: all 0.3s;
}

.rk-step-btn.active .rk-step-num {
    background: #ffffff;
    color: var(--rk-calc-brand);
}

/* Prawa strona: Zawartość */
.rk-stepper-content {
    flex: 1;
    position: relative;
    min-height: 320px;
}

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

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

@keyframes slideInRight {
    from { opacity: 0; transform: translateX(20px); }
    to { opacity: 1; transform: translateX(0); }
}

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

/* Wzór matematyczny */
.rk-formula-box {
    background: var(--rk-calc-formula-bg);
    border-radius: 12px;
    padding: 20px;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-left: 4px solid var(--rk-calc-accent);
    position: relative;
    overflow: hidden;
}

.rk-formula-box::before {
    content: 'Wzór wg PN-EN';
    position: absolute;
    top: 5px; left: 10px;
    font-size: 10px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
}

.rk-formula-text {
    font-family: 'Courier New', Courier, monospace;
    font-size: 22px;
    font-weight: 700;
    color: #ffffff;
    letter-spacing: 1px;
}

.rk-formula-text sub {
    font-size: 12px;
    color: var(--rk-calc-accent);
}

/* Wyjaśnienie */
.rk-panel-desc {
    font-size: 14px;
    line-height: 1.7;
    color: var(--rk-calc-text);
    margin: 0 0 20px 0;
    background: var(--rk-calc-surface);
    padding: 15px;
    border-radius: 8px;
    border: 1px dashed var(--rk-calc-border);
}

/* Wizualizacja SVG (Animacje) */
.rk-panel-visual {
    height: 100px;
    background: #ffffff;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-svg-graphic {
    width: 100%;
    max-width: 250px;
    height: 100%;
}

/* --- Animacje SVG --- */
.anim-ozc-arrow { stroke-dasharray: 4; animation: flowOut 1s linear infinite; stroke: #ef4444; }
@keyframes flowOut { to { stroke-dashoffset: -8; } }

.anim-heat-wave path { stroke: #f59e0b; opacity: 0; animation: radiateUp 1.5s infinite alternate; }
.anim-heat-wave path:nth-child(2) { animation-delay: 0.5s; }
.anim-heat-wave path:nth-child(3) { animation-delay: 1s; }
@keyframes radiateUp { to { opacity: 1; transform: translateY(-5px); } }

.anim-ruler-move { animation: shrinkRuler 3s infinite alternate cubic-bezier(0.4, 0, 0.2, 1); transform-origin: left; }
@keyframes shrinkRuler { 0% { transform: scaleX(1); } 100% { transform: scaleX(0.66); } }

.anim-pipe-roll { stroke-dasharray: 200; stroke-dashoffset: 200; animation: unroll 3s infinite ease-out; stroke: #3b82f6; }
@keyframes unroll { 50%, 100% { stroke-dashoffset: 0; } }

.anim-loop-split { stroke-dasharray: 100; animation: splitFlow 2s infinite linear; stroke: #3b82f6; }
@keyframes splitFlow { to { stroke-dashoffset: -20; } }

/* --- Responsywność --- */
@media (max-width: 768px) {
    .rk-calc-header, .rk-calc-interactive { padding: 30px 20px; }
    .rk-calc-title { font-size: 24px; }
    .rk-stepper-wrapper { flex-direction: column; padding: 15px; gap: 20px; }
    .rk-stepper-nav { flex: auto; border-right: none; border-bottom: 1px solid var(--rk-calc-border); padding-right: 0; padding-bottom: 15px; flex-direction: row; overflow-x: auto; scrollbar-width: none; }
    .rk-stepper-nav::-webkit-scrollbar { display: none; }
    .rk-step-btn { min-width: 160px; justify-content: center; }
    .rk-formula-text { font-size: 18px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-algorytm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Jak obliczyć zapotrzebowanie na ciepło i długość rur ogrzewania podłogowego?",
    "description": "Algorytm kalkulatora wg PN-EN 12831 i 1264. Poznaj krok po kroku wzory na projektowe obciążenie cieplne, rozstaw rur i podział na pętle.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-03-05",
    "dateModified": "2026-05-23"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-wzory",
    "name": "Wzory i algorytmy obliczeniowe PN-EN 12831 i 1264",
    "description": "Zestawienie matematyczne procedur doboru parametrów ogrzewania płaszczyznowego, zapobiegające błędom przewymiarowania instalacji.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczenia OZC",
      "długość rury podłogówka",
      "rozstaw rur wzór",
      "norma PN-EN 12831",
      "kalkulator ogrzewania podłogowego"
    ],
    "measurementTechnique": "Szeregowanie algorytmiczne wg norm europejskich, przeliczające powierzchnię i straty na zapotrzebowanie hydrauliczne.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Krok 1: Projektowa moc grzewcza Q_obl = A × q",
        "Krok 2: Gęstość strumienia q_s = Q_obl / A_grz",
        "Krok 3: Obliczenie teoretycznego rozstawu rur (a)",
        "Krok 4: Całkowita długość rury L = (A_grz / a × 1,1) + L_d",
        "Krok 5: Podział na pętle N_p = ceil(L / L_max)"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-algorytm",
    "name": "Symulator Algorytmu Podłogówki",
    "description": "Interaktywny panel (stepper) objaśniający w 5 krokach proces matematyczny zachodzący w kalkulatorze ogrzewania podłogowego wraz z wizualizacjami SVG.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-container" id="rk-calc-app">
    
    <div class="rk-calc-header">
        <div class="rk-calc-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><rect x="9" y="9" width="6" height="6"></rect><line x1="9" y1="1" x2="9" y2="4"></line><line x1="15" y1="1" x2="15" y2="4"></line><line x1="9" y1="20" x2="9" y2="23"></line><line x1="15" y1="20" x2="15" y2="23"></line><line x1="20" y1="9" x2="23" y2="9"></line><line x1="20" y1="14" x2="23" y2="14"></line><line x1="1" y1="9" x2="4" y2="9"></line><line x1="1" y1="14" x2="4" y2="14"></line></svg>
            Metodologia Obliczeń
        </div>
        <h2 class="rk-calc-title">Jak obliczyć zapotrzebowanie na ciepło i długość rur za pomocą kalkulatora?</h2>
        <p class="rk-calc-lead">
            Zgodnie z normą <strong>PN-EN 12831</strong>, podstawą do wyliczenia jakichkolwiek parametrów podłogówki jest <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-calc-link">Projektowe Obciążenie Cieplne budynku (OZC)</a>. Algorytm kalkulatora konwertuje tę wartość na <a href="https://projekt-ogrzewania.pl/ile-rury-na-m%c2%b2-ogrzewania-podlogowego/" class="rk-calc-link">metry bieżące rury</a> oraz liczbę sekcji <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/" class="rk-calc-link">rozdzielacza</a> w oparciu o parametry fizyczne przegród. Próba doboru instalacji „na oko” (np. uniwersalne przyjmowanie rozstawu co 15 cm) skutkuje niedogrzaniem stref przyokiennych lub przewymiarowaniem <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/" class="rk-calc-link">pompy obiegowej</a>, co generuje dodatkowe koszty na poziomie 2500–4000 PLN na etapie zakupu materiałów.
        </p>
    </div>

    <div class="rk-calc-interactive">
        <h3 class="rk-calc-subtitle">Algorytm obliczeniowy krok po kroku</h3>
        
        <div class="rk-stepper-wrapper">
            <div class="rk-stepper-nav">
                <button class="rk-step-btn active" data-step="1">
                    <span class="rk-step-num">1</span> Moc grzewcza
                </button>
                <button class="rk-step-btn" data-step="2">
                    <span class="rk-step-num">2</span> Gęstość strumienia
                </button>
                <button class="rk-step-btn" data-step="3">
                    <span class="rk-step-num">3</span> Rozstaw rur
                </button>
                <button class="rk-step-btn" data-step="4">
                    <span class="rk-step-num">4</span> Długość rury
                </button>
                <button class="rk-step-btn" data-step="5">
                    <span class="rk-step-num">5</span> Podział na pętle
                </button>
            </div>

            <div class="rk-stepper-content">
                
                <div class="rk-step-panel active" id="rk-step-1">
                    <h4 class="rk-panel-title">Wyznaczenie projektowej mocy grzewczej pomieszczenia (Q<sub>obl</sub>)</h4>
                    <div class="rk-formula-box">
                        <div class="rk-formula-text">Q<sub>obl</sub> = A &times; q</div>
                    </div>
                    <div class="rk-panel-desc">
                        Gdzie <strong>A</strong> to powierzchnia użytkowa [m²], a <strong>q</strong> to jednostkowe zapotrzebowanie na ciepło [W/m²] określone wg PN-EN 12831. Dla nowych budynków (WT 2021) przyjmuje się 30–50 W/m², dla domów po termomodernizacji 60–80 W/m².
                    </div>
                    <div class="rk-panel-visual">
                        <svg class="rk-svg-graphic" viewBox="0 0 200 80">
                            <path d="M 80 40 L 100 20 L 120 40 L 120 70 L 80 70 Z" fill="none" stroke="#64748b" stroke-width="4" stroke-linejoin="round"/>
                            <path class="anim-ozc-arrow" d="M 125 45 L 150 45" stroke-width="3" stroke-linecap="round"/>
                            <path class="anim-ozc-arrow" d="M 75 45 L 50 45" stroke-width="3" stroke-linecap="round"/>
                            <path class="anim-ozc-arrow" d="M 100 15 L 100 -5" stroke-width="3" stroke-linecap="round"/>
                        </svg>
                    </div>
                </div>

                <div class="rk-step-panel" id="rk-step-2">
                    <h4 class="rk-panel-title">Wyznaczenie gęstości strumienia cieplnego posadzki (q<sub>s</sub>)</h4>
                    <div class="rk-formula-box">
                        <div class="rk-formula-text">q<sub>s</sub> = Q<sub>obl</sub> / A<sub>grz</sub></div>
                    </div>
                    <div class="rk-panel-desc">
                        Gdzie <strong>A<sub>grz</sub></strong> to rzeczywista powierzchnia grzewcza [m²] (po odliczeniu stałej zabudowy meblowej np. szaf, kominków, wanien). Otrzymujemy parametr W/m² czystej podłogi.
                    </div>
                    <div class="rk-panel-visual">
                        <svg class="rk-svg-graphic" viewBox="0 0 200 80">
                            <path d="M 40 70 L 160 70 L 140 50 L 60 50 Z" fill="#e2e8f0" stroke="#cbd5e1" stroke-width="2"/>
                            <g class="anim-heat-wave" fill="none" stroke-width="3" stroke-linecap="round">
                                <path d="M 70 40 Q 80 30, 90 40 T 110 40"/>
                                <path d="M 90 35 Q 100 25, 110 35 T 130 35"/>
                                <path d="M 110 30 Q 120 20, 130 30 T 150 30"/>
                            </g>
                        </svg>
                    </div>
                </div>

                <div class="rk-step-panel" id="rk-step-3">
                    <h4 class="rk-panel-title">Obliczenie teoretycznego rozstawu rur (a)</h4>
                    <div class="rk-formula-box">
                        <div class="rk-formula-text">a = f( q<sub>s</sub> , t<sub>z</sub> , R<sub>&lambda;,B</sub> )</div>
                    </div>
                    <div class="rk-panel-desc">
                        Rozstaw rur [m] jest funkcją gęstości strumienia, temperatury zasilania oraz oporu cieplnego okładziny podłogowej. Oblicza się go z układu równań normy PN-EN 1264-2. Wynik zaokrągla się w dół do standardów montażowych: <strong>0,10 m, 0,15 m lub 0,20 m</strong>.
                    </div>
                    <div class="rk-panel-visual">
                        <svg class="rk-svg-graphic" viewBox="0 0 200 80">
                            <line x1="50" y1="40" x2="150" y2="40" stroke="#3b82f6" stroke-width="4" stroke-linecap="round"/>
                            <line class="anim-ruler-move" x1="50" y1="40" x2="150" y2="40" stroke="#f59e0b" stroke-width="6" stroke-linecap="round"/>
                            <line x1="50" y1="30" x2="50" y2="50" stroke="#64748b" stroke-width="2"/>
                            <line x1="150" y1="30" x2="150" y2="50" stroke="#64748b" stroke-width="2"/>
                        </svg>
                    </div>
                </div>

                <div class="rk-step-panel" id="rk-step-4">
                    <h4 class="rk-panel-title">Wyznaczenie całkowitej długości rury w pomieszczeniu (L)</h4>
                    <div class="rk-formula-box">
                        <div class="rk-formula-text">L = (A<sub>grz</sub> / a &times; 1,1) + L<sub>d</sub></div>
                    </div>
                    <div class="rk-panel-desc">
                        Gdzie <strong>1,1</strong> to stały współczynnik uwzględniający 10% zapasu na wygięcia łuków rur, a <strong>L<sub>d</sub></strong> to długość odcinka doprowadzającego (zasilanie + powrót) z szafki rozdzielaczowej do danego pomieszczenia [m].
                    </div>
                    <div class="rk-panel-visual">
                        <svg class="rk-svg-graphic" viewBox="0 0 200 80">
                            <circle cx="60" cy="40" r="20" fill="none" stroke="#3b82f6" stroke-width="4"/>
                            <circle cx="60" cy="40" r="12" fill="none" stroke="#3b82f6" stroke-width="4"/>
                            <path class="anim-pipe-roll" d="M 60 20 L 160 20" fill="none" stroke-width="4" stroke-linecap="round"/>
                        </svg>
                    </div>
                </div>

                <div class="rk-step-panel" id="rk-step-5">
                    <h4 class="rk-panel-title">Podział na pętle grzewcze (N<sub>p</sub>)</h4>
                    <div class="rk-formula-box">
                        <div class="rk-formula-text">N<sub>p</sub> = ceil( L / L<sub>max</sub> )</div>
                    </div>
                    <div class="rk-panel-desc">
                        Gdzie <strong>L<sub>max</sub></strong> to graniczna długość jednego obwodu (dla rury 16 mm wynosi 120 m). Funkcja <em>ceil</em> zaokrągla wynik matematyczny zawsze w górę do pełnej liczby całkowitej (obwodu na rozdzielaczu).
                    </div>
                    <div class="rk-panel-visual">
                        <svg class="rk-svg-graphic" viewBox="0 0 200 80">
                            <rect x="30" y="20" width="20" height="40" fill="#64748b" rx="2"/>
                            <path class="anim-loop-split" d="M 50 30 L 140 30 Q 160 30, 160 50 Q 160 70, 140 70 L 50 70" fill="none" stroke-width="4" stroke-linecap="round"/>
                            <path class="anim-loop-split" d="M 50 40 L 100 40 Q 120 40, 120 50 Q 120 60, 100 60 L 50 60" fill="none" stroke="#f59e0b" stroke-width="4" stroke-linecap="round"/>
                        </svg>
                    </div>
                </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-calc-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener algorytmiczny należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na nieautoryzowanej domenie jest zabronione prawem.
                </div>
            `;
            return;
        }
    }

    // Logika Steppera
    const stepBtns = document.querySelectorAll('.rk-step-btn');
    const stepPanels = document.querySelectorAll('.rk-step-panel');

    stepBtns.forEach(btn => {
        btn.addEventListener('click', () => {
            const targetStep = btn.getAttribute('data-step');
            
            // Czyszczenie klas aktywnych
            stepBtns.forEach(b => b.classList.remove('active'));
            stepPanels.forEach(p => p.classList.remove('active'));
            
            // Aktywacja wybranego
            btn.classList.add('active');
            document.getElementById('rk-step-' + targetStep).classList.add('active');
        });
    });
});
</script>



<style>
:root {
    --rk-temp-dark: #0f172a;
    --rk-temp-darker: #020617;
    --rk-temp-brand: #0ea5e9; /* Błękit inżynieryjny */
    --rk-temp-safe: #10b981;  /* Szmaragdowy - norma */
    --rk-temp-warn: #f59e0b;  /* Bursztyn - ostrzeżenie */
    --rk-temp-danger: #ef4444; /* Czerwień - awaria */
    --rk-temp-bg: #ffffff;
    --rk-temp-surface: #f8fafc;
    --rk-temp-border: #e2e8f0;
    --rk-temp-text: #334155;
    --rk-temp-muted: #64748b;
    --rk-temp-shadow: 0 15px 35px -10px rgba(15, 23, 42, 0.1);
}

.rk-temp-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-temp-bg);
    border-radius: 24px;
    box-shadow: var(--rk-temp-shadow);
    border: 1px solid var(--rk-temp-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-temp-header {
    background: linear-gradient(135deg, var(--rk-temp-darker) 0%, var(--rk-temp-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-temp-brand);
}

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

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

.rk-temp-title span { color: #7dd3fc; }

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

.rk-temp-link {
    color: #38bdf8;
    text-decoration: none;
    border-bottom: 1px dashed rgba(56, 189, 248, 0.4);
    font-weight: 600;
    transition: all 0.3s;
}

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

/* --- KONTENER SYMULATORA --- */
.rk-temp-simulator {
    padding: 40px 50px;
    background: var(--rk-temp-surface);
}

.rk-sim-layout {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-temp-border);
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

/* Lewa Strona - Kontrolki i SVG */
.rk-sim-controls {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-slider-box {
    background: var(--rk-temp-surface);
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-temp-border);
}

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

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

.rk-slider-value {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-temp-safe);
    transition: color 0.3s;
}

/* Custom Input Range */
.rk-range-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: #cbd5e1;
    outline: none;
    transition: background 0.3s;
}

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

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

/* Wizualizacja SVG Przekroju */
.rk-svg-stage {
    flex-grow: 1;
    background: #f1f5f9;
    border-radius: 16px;
    border: 1px dashed var(--rk-temp-border);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    position: relative;
    overflow: hidden;
}

.rk-cross-section { width: 100%; max-width: 350px; height: auto; }

/* Animacje SVG */
.anim-heat-ray { stroke-dasharray: 8 8; animation: heatRise 2s linear infinite; }
@keyframes heatRise { to { stroke-dashoffset: -16; } }

.anim-crack-path { stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 0.5s ease-out; }
.state-danger .anim-crack-path { stroke-dashoffset: 0; }

.anim-pipe-color { transition: fill 0.3s, stroke 0.3s; }
.state-warn .anim-pipe-color { fill: var(--rk-temp-warn); stroke: #d97706; }
.state-warn .anim-heat-ray { stroke: var(--rk-temp-warn); animation-duration: 1.2s; }
.state-danger .anim-pipe-color { fill: var(--rk-temp-danger); stroke: #b91c1c; }
.state-danger .anim-heat-ray { stroke: var(--rk-temp-danger); animation-duration: 0.7s; }

/* Prawa Strona - Metryki */
.rk-sim-metrics {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-metric-card {
    background: #ffffff;
    border: 1px solid var(--rk-temp-border);
    border-radius: 12px;
    padding: 20px;
    transition: all 0.3s;
    position: relative;
    overflow: hidden;
}

.rk-metric-card::before {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0; width: 4px;
    background: var(--rk-temp-safe);
    transition: background 0.3s;
}

.state-warn .rk-metric-card::before { background: var(--rk-temp-warn); }
.state-danger .rk-metric-card::before { background: var(--rk-temp-danger); }

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

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

.rk-metric-desc {
    font-size: 13px;
    color: var(--rk-temp-text);
    margin-top: 8px;
    line-height: 1.4;
}

/* Ostrzeżenie (Awaria) */
.rk-alert-box {
    display: none;
    background: #fef2f2;
    border: 1px solid #fecaca;
    padding: 15px;
    border-radius: 12px;
    color: #991b1b;
    font-size: 13px;
    line-height: 1.5;
    margin-top: auto;
    animation: alertPop 0.3s ease-out;
}

.rk-alert-box strong { font-weight: 800; color: #7f1d1d; display: block; font-size: 14px; margin-bottom: 4px; }
.state-danger .rk-alert-box { display: block; }

@keyframes alertPop {
    0% { opacity: 0; transform: scale(0.95); }
    100% { opacity: 1; transform: scale(1); }
}

/* Strefy Temperatur (Limity) */
.rk-zones-info {
    padding: 30px 50px 40px;
    background: #ffffff;
    border-top: 1px solid var(--rk-temp-border);
}

.rk-zones-info h3 {
    margin: 0 0 20px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-temp-dark);
}

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

.rk-zone-item {
    background: #f8fafc;
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-temp-border);
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.rk-zone-icon {
    width: 40px; height: 40px;
    background: #e0f2fe;
    color: var(--rk-temp-brand);
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-zone-item h4 { margin: 0; font-size: 15px; font-weight: 800; color: var(--rk-temp-dark); }
.rk-zone-limit { font-size: 20px; font-weight: 900; color: var(--rk-temp-brand); }
.rk-zone-text { font-size: 13px; color: var(--rk-temp-muted); line-height: 1.5; margin: 0; }

@media (max-width: 768px) {
    .rk-temp-header, .rk-temp-simulator, .rk-zones-info { padding: 30px 20px; }
    .rk-temp-title { font-size: 24px; }
    .rk-sim-layout { grid-template-columns: 1fr; padding: 20px; gap: 20px; }
    .rk-zones-grid { grid-template-columns: 1fr; }
    .rk-svg-stage { height: 200px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/#article-temperatura",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/"
    },
    "headline": "Maksymalna temperatura zasilania ogrzewania podłogowego według normy PN-EN 1264",
    "description": "Zgodnie z PN-EN 1264 maksymalna temperatura zasilania to 50°C. Przekroczenie limitu prowadzi do uszkodzeń mechanicznych wylewki (naprężenia ścinające 2,5 MPa) i degradacji paneli.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/#dataset-limity",
    "name": "Wartości graniczne temperatur powierzchniowych (PN-EN 1264)",
    "description": "Zestawienie dopuszczalnych temperatur powierzchni posadzki dla poszczególnych stref przebywania w budynku mieszkalnym.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna temperatura ogrzewania podłogowego",
      "norma PN-EN 1264",
      "strefa brzegowa temperatura",
      "naprężenia ścinające wylewki",
      "temperatura zasilania podłogówki"
    ],
    "measurementTechnique": "Określenie parametrów granicznych na podstawie normy europejskiej PN-EN 1264.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Strefa stałego przebywania ludzi (salony, sypialnie): max 29°C.",
        "Strefy łazienkowe i sanitarne: max 33°C.",
        "Strefy brzegowe (do 1 m od okien): max 35°C."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/#webapp-symulator",
    "name": "Symulator Naprężeń Termicznych Posadzki",
    "description": "Interaktywny kalkulator wizualizujący wpływ temperatury zasilania na naprężenia wylewki, temperaturę powierzchni oraz ryzyko pęknięć mechanicznych (uszkodzenia płytek, syndrom ciężkich nóg).",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-temp-container" id="rk-temp-app">
    
    <div class="rk-temp-header">
        <div class="rk-temp-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path></svg>
            Reżim Temperaturowy
        </div>
        <h2 class="rk-temp-title">Maksymalna temperatura zasilania <span>według PN-EN 1264</span></h2>
        <p class="rk-temp-lead">
            Maksymalna temperatura zasilania instalacji ogrzewania podłogowego w układzie ciągłym wynosi <strong>50°C</strong> zgodnie z wymaganiami normy <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/" class="rk-temp-link">PN-EN 1264</a>. Niedopełnienie tych obostrzeń i wpuszczenie w jastrych parametru rzędu 55–60°C (brak <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/" class="rk-temp-link">zaworu mieszającego</a> na starym kotle) generuje ogromne naprężenia ścinające. Skutkuje to pękaniem płytek, degradacją termiczną paneli i &#8222;syndromem ciężkich nóg&#8221;.
        </p>
    </div>

    <div class="rk-temp-simulator">
        <div class="rk-sim-layout state-safe" id="rk-sim-core">
            
            <div class="rk-sim-controls">
                <div class="rk-slider-box">
                    <div class="rk-slider-header">
                        <span class="rk-slider-label">Zasilanie Układu (T<sub>z</sub>)</span>
                        <span class="rk-slider-value" id="val-supply">35°C</span>
                    </div>
                    <input type="range" class="rk-range-slider" id="rk-temp-slider" min="25" max="65" step="1" value="35">
                </div>

                <div class="rk-svg-stage">
                    <svg class="rk-cross-section" viewBox="0 0 200 150" xmlns="http://www.w3.org/2000/svg">
                        <rect x="10" y="110" width="180" height="30" fill="#cbd5e1" rx="4"/>
                        <circle cx="30" cy="125" r="2" fill="#94a3b8"/> <circle cx="50" cy="115" r="2" fill="#94a3b8"/>
                        <rect x="10" y="50" width="180" height="60" fill="#e2e8f0" rx="2"/>
                        <rect x="10" y="40" width="43" height="8" fill="#94a3b8" rx="1"/>
                        <rect x="55" y="40" width="43" height="8" fill="#94a3b8" rx="1"/>
                        <rect x="100" y="40" width="43" height="8" fill="#94a3b8" rx="1"/>
                        <rect x="145" y="40" width="45" height="8" fill="#94a3b8" rx="1"/>
                        <circle class="anim-pipe-color" cx="100" cy="85" r="12" fill="#10b981" stroke="#047857" stroke-width="3"/>
                        <circle cx="100" cy="85" r="6" fill="rgba(255,255,255,0.4)"/>
                        <path class="anim-heat-ray" d="M 80 70 Q 75 50 80 30" fill="none" stroke="#10b981" stroke-width="2" stroke-linecap="round"/>
                        <path class="anim-heat-ray" d="M 100 65 Q 100 45 100 25" fill="none" stroke="#10b981" stroke-width="2" stroke-linecap="round"/>
                        <path class="anim-heat-ray" d="M 120 70 Q 125 50 120 30" fill="none" stroke="#10b981" stroke-width="2" stroke-linecap="round"/>
                        <path class="anim-crack-path" d="M 98 40 L 92 60 L 105 80 L 100 110" fill="none" stroke="#0f172a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
                    </svg>
                </div>
            </div>

            <div class="rk-sim-metrics">
                <div class="rk-metric-card">
                    <div class="rk-metric-title">Temperatura Posadzki</div>
                    <div class="rk-metric-val" id="val-surface">24.5°C</div>
                    <div class="rk-metric-desc" id="desc-surface">Pełny komfort. Zgodnie z PN-EN 1264.</div>
                </div>
                
                <div class="rk-metric-card">
                    <div class="rk-metric-title">Naprężenia Wylewki</div>
                    <div class="rk-metric-val" id="val-stress">0.4 MPa</div>
                    <div class="rk-metric-desc" id="desc-stress">Stabilna praca w granicach wytrzymałości jastrychu.</div>
                </div>

                <div class="rk-alert-box">
                    <strong>Koszt naprawy: min. 15 000 PLN!</strong>
                    Naprężenia ścinające przekraczają wytrzymałość betonu na rozciąganie. Bezpowrotne odklejenie gresu i degradacja rur.
                </div>
            </div>

        </div>
    </div>

    <div class="rk-zones-info">
        <h3>Wartości graniczne temperatur (Powierzchnia)</h3>
        <div class="rk-zones-grid">
            
            <div class="rk-zone-item">
                <div class="rk-zone-icon">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
                </div>
                <h4>Salony i Sypialnie</h4>
                <div class="rk-zone-limit">max 29°C</div>
                <p class="rk-zone-text">Strefa stałego przebywania ludzi. Zabezpiecza przed &#8222;syndromem ciężkich nóg&#8221;.</p>
            </div>

            <div class="rk-zone-item">
                <div class="rk-zone-icon">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2 12h20"></path><path d="M5 12v5a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-5"></path><path d="M7 21h10"></path><path d="M12 12v-5"></path><path d="M8 7h8"></path><path d="M12 7V4"></path><path d="M10 4h4"></path></svg>
                </div>
                <h4>Łazienki i Sanitarne</h4>
                <div class="rk-zone-limit">max 33°C</div>
                <p class="rk-zone-text">Dopuszcza się wyższą temperaturę z uwagi na zwiększone zapotrzebowanie na komfort (bosa stopa).</p>
            </div>

            <div class="rk-zone-item">
                <div class="rk-zone-icon">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                </div>
                <h4>Strefy Brzegowe</h4>
                <div class="rk-zone-limit">max 35°C</div>
                <p class="rk-zone-text">Pas o szerokości do 1 m <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-obwodowa-w-ogrzewaniu-podlogowym/" class="rk-temp-link" style="color:var(--rk-temp-muted);">wzdłuż dużych przeszkleń</a> w celu kompensacji strat zimna.</p>
            </div>

        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-temp-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener interaktywny należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na nieautoryzowanej domenie jest zabronione prawem.
                </div>
            `;
            return;
        }
    }

    // Logika Symulatora Temperatur
    const slider = document.getElementById('rk-temp-slider');
    const layout = document.getElementById('rk-sim-core');
    
    const valSupply = document.getElementById('val-supply');
    const valSurface = document.getElementById('val-surface');
    const valStress = document.getElementById('val-stress');
    const descSurface = document.getElementById('desc-surface');
    const descStress = document.getElementById('desc-stress');
    const sliderThumb = document.querySelector('.rk-range-slider');

    function updateSimulation() {
        const temp = parseInt(slider.value);
        valSupply.textContent = temp + '°C';

        // Prosta interpolacja fizyczna dla estymacji:
        // Powierzchnia rośnie z temperaturą zasilania.
        const surfaceTemp = (20 + (temp - 25) * 0.45).toFixed(1);
        valSurface.textContent = surfaceTemp + '°C';

        // Naprężenia w betonie rosną eksponencjalnie pow. 40 stopni
        let stress = 0.2 + ((temp - 25) * 0.02);
        if(temp > 45) {
            stress = stress + Math.pow((temp - 45)*0.15, 2);
        }
        valStress.textContent = stress.toFixed(1) + ' MPa';

        // Stany logiczne
        layout.classList.remove('state-safe', 'state-warn', 'state-danger');

        if (temp <= 40) {
            layout.classList.add('state-safe');
            descSurface.textContent = 'Pełny komfort. Zgodnie z PN-EN 1264.';
            descStress.textContent = 'Stabilna praca w granicach wytrzymałości jastrychu.';
            sliderThumb.style.setProperty('--rk-temp-safe', '#10b981'); // update thumb via custom prop if needed (CSS takes care mostly)
            slider.style.background = `linear-gradient(to right, #10b981 ${(temp-25)/40*100}%, #cbd5e1 ${(temp-25)/40*100}%)`;
        } 
        else if (temp > 40 && temp <= 50) {
            layout.classList.add('state-warn');
            descSurface.textContent = 'Temperatura na granicy dopuszczalności. Ryzyko dyskomfortu (syndrom ciężkich nóg).';
            descStress.textContent = 'Zwiększona praca płyty grzewczej. Dylatacje mocno obciążone.';
            slider.style.background = `linear-gradient(to right, #f59e0b ${(temp-25)/40*100}%, #cbd5e1 ${(temp-25)/40*100}%)`;
        } 
        else if (temp > 50) {
            layout.classList.add('state-danger');
            descSurface.textContent = 'Przekroczenie normy! Degardacja klejów i uszkodzenia paneli.';
            descStress.textContent = 'Naprężenia ścinające wykraczają poza wytrzymałość betonu na rozciąganie.';
            slider.style.background = `linear-gradient(to right, #ef4444 ${(temp-25)/40*100}%, #cbd5e1 ${(temp-25)/40*100}%)`;
        }
    }

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



<style>
:root {
    --rk-pitch-dark: #0f172a;
    --rk-pitch-darker: #020617;
    --rk-pitch-brand: #10b981; /* Zielony / szmaragdowy akcent efektywności OZE i SCOP */
    --rk-pitch-brand-light: #e6f4ea;
    --rk-pitch-accent: #3b82f6; /* Niebieski dla pompy ciepła i krzywej grzewczej */
    --rk-pitch-bg: #ffffff;
    --rk-pitch-surface: #f8fafc;
    --rk-pitch-border: #cbd5e1;
    --rk-pitch-text: #334155;
    --rk-pitch-muted: #64748b;
    --rk-pitch-shadow: 0 15px 35px -10px rgba(16, 185, 129, 0.1);
}

.rk-pitch-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-pitch-bg);
    border-radius: 24px;
    box-shadow: var(--rk-pitch-shadow);
    border: 1px solid var(--rk-pitch-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-pitch-header {
    background: linear-gradient(135deg, var(--rk-pitch-darker) 0%, var(--rk-pitch-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-pitch-brand);
}

.rk-pitch-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(16, 185, 129, 0.2);
    color: #34d399;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(52, 211, 153, 0.3);
}

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

.rk-pitch-title span { color: #34d399; }

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

.rk-pitch-link {
    color: #34d399;
    text-decoration: none;
    border-bottom: 1px dashed rgba(52, 211, 153, 0.4);
    font-weight: 600;
    transition: all 0.3s;
}

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

/* --- INTERAKTYWNY PANEL OPTYMALIZACJI --- */
.rk-pitch-interactive {
    padding: 40px 50px;
    background: var(--rk-pitch-surface);
}

.rk-sim-layout {
    display: grid;
    grid-template-columns: 1fr 340px;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-pitch-border);
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

/* Lewa Strona - Wybór rozstawu i wykres */
.rk-sim-controls {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-pitch-selector-title {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-pitch-dark);
    text-transform: uppercase;
    margin: 0 0 12px 0;
    letter-spacing: 0.5px;
}

/* Menu Przełączników Kafelkowych */
.rk-pitch-tiles {
    display: flex;
    gap: 12px;
}

.rk-pitch-tile-btn {
    flex: 1;
    background: var(--rk-pitch-surface);
    border: 2px solid var(--rk-pitch-border);
    border-radius: 14px;
    padding: 15px 10px;
    cursor: pointer;
    text-align: center;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.rk-pitch-tile-btn:hover {
    border-color: var(--rk-pitch-accent);
    background: #f0f6ff;
}

.rk-pitch-tile-btn.active {
    border-color: var(--rk-pitch-brand);
    background: var(--rk-pitch-brand-light);
    box-shadow: 0 4px 12px rgba(16, 185, 129, 0.15);
}

.rk-tile-step {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-pitch-dark);
}

.rk-tile-label {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-pitch-muted);
}

.rk-pitch-tile-btn.active .rk-tile-step { color: #065f46; }
.rk-pitch-tile-btn.active .rk-tile-label { color: #047857; }

/* Statyczny moduł graficzny SVG */
.rk-svg-viewport {
    background: #f8fafc;
    border-radius: 16px;
    border: 1px dashed var(--rk-pitch-border);
    padding: 25px;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 180px;
}

.rk-geometry-svg { width: 100%; max-width: 320px; height: auto; }

/* Dynamiczne stany CSS mapowane przez JS na klasę kontenera głównego */
.rk-pipe-line { fill: none; stroke: var(--rk-pitch-accent); stroke-width: 5; stroke-linecap: round; transition: all 0.4s ease; }
.rk-heat-circle { fill: #fca5a5; opacity: 0.4; transition: all 0.4s ease; }

/* Stany geometrii ułożenia rur */
.geom-10 .rk-pipe-15, .geom-10 .rk-pipe-20 { display: none; }
.geom-15 .rk-pipe-10, .geom-15 .rk-pipe-20 { display: none; }
.geom-20 .rk-pipe-10, .geom-20 .rk-pipe-15 { display: none; }

/* Prawa Strona - Parametry Techniczno-Ekonomiczne */
.rk-sim-results {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-tech-card {
    background: #ffffff;
    border: 1px solid var(--rk-pitch-border);
    border-radius: 12px;
    padding: 18px 20px;
    position: relative;
    overflow: hidden;
}

.rk-tech-card::before {
    content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
    background: var(--rk-pitch-brand);
}

.rk-card-label {
    font-size: 11px;
    color: var(--rk-pitch-muted);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 6px;
}

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

.rk-card-comment {
    font-size: 13px;
    color: var(--rk-pitch-text);
    margin-top: 6px;
    line-height: 1.4;
}

/* Panel Błędu Krytycznego (Garaż/Sypialnia co 20 przy przeszkleniach) */
.rk-crit-panel {
    display: none;
    background: #fef2f2;
    border: 1px solid #fecaca;
    padding: 15px;
    border-radius: 12px;
    color: #991b1b;
    font-size: 13px;
    line-height: 1.5;
    animation: panelPop 0.3s ease-out;
}
.rk-crit-panel strong { font-weight: 800; color: #7f1d1d; display: block; font-size: 14px; margin-bottom: 3px; }
.geom-20 .rk-crit-panel { display: block; }

@keyframes panelPop {
    from { opacity: 0; transform: scale(0.96); }
    to { opacity: 1; transform: scale(1); }
}

@media (max-width: 768px) {
    .rk-pitch-header, .rk-pitch-interactive { padding: 30px 20px; }
    .rk-pitch-title { font-size: 24px; }
    .rk-sim-layout { grid-template-columns: 1fr; padding: 20px; gap: 25px; }
    .rk-svg-viewport { min-height: 160px; }
    .rk-pitch-tiles { gap: 8px; }
    .rk-pitch-tile-btn { padding: 12px 6px; }
    .rk-tile-step { font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/"
    },
    "headline": "Jaki rozstaw rur ogrzewania podłogowego zastosować przy pompie ciepła?",
    "description": "Analiza wpływu geometrii rozstawu rur (10 cm vs 15 cm) na temperaturę zasilania pompy ciepła, współczynniki COP/SCOP oraz roczne oszczędności eksploatacyjne.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#dataset",
    "name": "Zestawienie Wydajności i Zużycia Rur w Zależności od Rozstawu",
    "description": "Twarde dane przeliczeniowe łączące rozstaw rur (co 10, 15, 20 cm) z jednostkowym zużyciem materiału oraz maksymalną mocą cieplną posadzki gresowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "rozstaw rur pompa ciepła",
      "zużycie rury na metr kwadratowy",
      "maksymalna moc grzewcza podłogówki",
      "krzywa grzewcza pompy ciepła",
      "obniżenie temperatury zasilania SCOP"
    ],
    "measurementTechnique": "Analiza numeryczna oporów przewodzenia jastrychu wg normy PN-EN 1264 i symulacja strat COP sprężarek inwerterowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rozstaw 10 cm: Zużycie 10,0 mb/m2, moc 75-85 W/m2 przy Tz=35°C. Idealny do łazienek.",
        "Rozstaw 15 cm: Zużycie 6,7 mb/m2, moc 55-65 W/m2 przy Tz=35°C. Standard salonowy.",
        "Rozstaw 20 cm: Zużycie 5,0 mb/m2, moc 35-45 W/m2 przy Tz=35°C. Ryzyko taktowania pompy."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#webapp",
    "name": "Interaktywny Symulator Geometrii Pętli Grzewczych",
    "description": "Narzędzie pozwalające przełączać gęstość ułożenia rur (10, 15, 20 cm) i obserwować w czasie rzeczywistym zużycie mb rury, wymaganą temperaturę zasilania oraz prognozowane koszty eksploatacji.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-pitch-container" id="rk-pitch-app">
    
    <div class="rk-pitch-header">
        <div class="rk-pitch-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
            Geometria Układu OZE
        </div>
        <h2 class="rk-pitch-title">Jaki rozstaw rur ogrzewania podłogowego <span>zastosować przy pompie ciepła?</span></h2>
        <p class="rk-pitch-lead">
            Optymalny rozstaw rur grzewczych przy zasilaniu z niskotemperaturowej pompy ciepła wynosi <strong>10 cm</strong> w łazienkach oraz strefach brzegowych oraz <strong>15 cm</strong> w pozostałych pomieszczeniach mieszkalnych. Zco gęstszego rozstawu pozwala obniżyć temperaturę zasilania o <strong>4–6°C</strong> przy zachowaniu tej samej mocy grzewczej posadzki. Każde obniżenie temperatury wody o 1°C zwiększa efektywność średnioroczną pompy ciepła (współczynnik SCOP) o ok. <strong>2,5%</strong>, co bezpośrednio tnie rachunki za energię elektryczną.
        </p>
    </div>

    <div class="rk-pitch-interactive">
        <div class="rk-sim-layout geom-15" id="rk-pitch-core">
            
            <div class="rk-sim-controls">
                <div>
                    <h3 class="rk-pitch-selector-title">Wybierz gęstość ułożenia przewodów:</h3>
                    <div class="rk-pitch-tiles">
                        <button class="rk-pitch-tile-btn" data-geom="10">
                            <span class="rk-tile-step">co 10 cm</span>
                            <span class="rk-tile-label">Gęsty (Łazienki)</span>
                        </button>
                        <button class="rk-pitch-tile-btn active" data-geom="15">
                            <span class="rk-tile-step">co 15 cm</span>
                            <span class="rk-tile-label">Standard (Pokoje)</span>
                        </button>
                        <button class="rk-pitch-tile-btn" data-geom="20">
                            <span class="rk-tile-step">co 20 cm</span>
                            <span class="rk-tile-label">Rzadki (Garaże)</span>
                        </button>
                    </div>
                </div>

                <div class="rk-svg-viewport">
                    <svg class="rk-geometry-svg" viewBox="0 0 200 100" xmlns="http://www.w3.org/2000/svg">
                        <rect x="5" y="30" width="190" height="60" fill="#e2e8f0" rx="4" stroke="#cbd5e1" stroke-width="1"/>
                        
                        <g class="rk-pipe-10">
                            <circle class="rk-heat-circle" cx="20" cy="65" r="16"/><circle class="rk-heat-circle" cx="50" cy="65" r="16"/><circle class="rk-heat-circle" cx="80" cy="65" r="16"/><circle class="rk-heat-circle" cx="110" cy="65" r="16"/><circle class="rk-heat-circle" cx="140" cy="65" r="16"/><circle class="rk-heat-circle" cx="170" cy="65" r="16"/>
                            <circle class="rk-pipe-line" cx="20" cy="65" r="6"/><circle class="rk-pipe-line" cx="50" cy="65" r="6"/><circle class="rk-pipe-line" cx="80" cy="65" r="6"/><circle class="rk-pipe-line" cx="110" cy="65" r="6"/><circle class="rk-pipe-line" cx="140" cy="65" r="6"/><circle class="rk-pipe-line" cx="170" cy="65" r="6"/>
                        </g>

                        <g class="rk-pipe-15">
                            <circle class="rk-heat-circle" cx="30" cy="65" r="22"/><circle class="rk-heat-circle" cx="85" cy="65" r="22"/><circle class="rk-heat-circle" cx="140" cy="65" r="22"/>
                            <circle class="rk-pipe-line" cx="30" cy="65" r="6"/><circle class="rk-pipe-line" cx="85" cy="65" r="6"/><circle class="rk-pipe-line" cx="140" cy="65" r="6"/>
                        </g>

                        <g class="rk-pipe-20">
                            <circle class="rk-heat-circle" cx="40" cy="65" r="28"/><circle class="rk-heat-circle" cx="130" cy="65" r="28"/>
                            <circle class="rk-pipe-line" cx="40" cy="65" r="6"/><circle class="rk-pipe-line" cx="130" cy="65" r="6"/>
                        </g>
                    </svg>
                </div>
            </div>

            <div class="rk-sim-results">
                <div class="rk-tech-card">
                    <div class="rk-card-label">Zużycie rury grzewczej</div>
                    <div class="rk-card-value" id="val-usage">6,7 mb/m²</div>
                    <div class="rk-card-comment">Standard inżynieryjny dla salonów i sypialni.</div>
                </div>

                <div class="rk-tech-card">
                    <div class="rk-card-label">Maksymalna moc (T<sub>z</sub> = 35°C)</div>
                    <div class="rk-card-value" id="val-power">55 – 65 W/m²</div>
                    <div class="rk-card-comment">Idealnie pokrywa zapotrzebowanie budynków WT 2021 z <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowego-czy-to-sie-oplaca/" class="rk-pitch-link" style="color:var(--rk-pitch-muted);">rekuperacją</a>.</div>
                </div>

                <div class="rk-tech-card">
                    <div class="rk-card-label">Parametry Krzywej Grzewczej</div>
                    <div class="rk-card-value" id="val-curve">35 / 30 °C</div>
                    <div class="rk-card-comment" id="val-cop-comment">Zapewnia wysoki współczynnik COP pompy na poziomie ok. 4,2.</div>
                </div>

                <div class="rk-crit-panel">
                    <strong>Błąd Krytyczny Projektu!</strong>
                    Rzadki układ rur w salonie z dużymi przeszkleniami wymusza podniesienie zasilania do 45°C. Współczynnik COP spada z 4,2 do 3,1, generując <strong>dodatkowy koszt 1200–1800 PLN</strong> co sezon.
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-pitch-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener inżynieryjny należy do serwisu Projekt-Ogrzewania.pl. Wykryto próbę kradzieży kodu źródłowego.
                </div>
            `;
            return;
        }
    }

    // Logika kafelków interaktywnych
    const core = document.getElementById('rk-pitch-core');
    const tiles = document.querySelectorAll('.rk-pitch-tile-btn');
    
    const valUsage = document.getElementById('val-usage');
    const valPower = document.getElementById('val-power');
    const valCurve = document.getElementById('val-curve');
    const valCopComment = document.getElementById('val-cop-comment');

    const dataMap = {
        "10": {
            usage: "10,0 mb/m²",
            power: "75 – 85 W/m²",
            curve: "30 / 26 °C",
            comment: "Maksymalna efektywność pompy ciepła. Standard dla łazienek i stref brzegowych.",
            className: "geom-10"
        },
        "15": {
            usage: "6,7 mb/m²",
            power: "55 – 65 W/m²",
            curve: "35 / 30 °C",
            comment: "Zapewnia wysoki współczynnik COP pompy na poziomie ok. 4,2.",
            className: "geom-15"
        },
        "20": {
            usage: "5,0 mb/m²",
            power: "35 – 45 W/m²",
            curve: "45 / 40 °C",
            comment: "Drastyczny spadek sprawności sprężarki pompy ciepła.",
            className: "geom-20"
        }
    };

    tiles.forEach(tile => {
        tile.addEventListener('click', function() {
            tiles.forEach(t => t.classList.remove('active'));
            this.classList.add('active');

            const geom = this.getAttribute('data-geom');
            const data = dataMap[geom];

            // Aktualizacja metryk technicznych
            valUsage.textContent = data.usage;
            valPower.textContent = data.power;
            valCurve.textContent = data.curve;
            valCopComment.textContent = data.comment;

            // Aktualizacja rzutu geometrycznego przez klasy CSS
            core.className = "rk-sim-layout " + data.className;
        });
    });
});
</script>



<style>
:root {
    --rk-loop-dark: #0f172a;
    --rk-loop-darker: #020617;
    --rk-loop-primary: #0ea5e9; /* Hydronic Blue */
    --rk-loop-primary-light: #e0f2fe;
    --rk-loop-success: #10b981;
    --rk-loop-warning: #f59e0b;
    --rk-loop-danger: #ef4444;
    --rk-loop-bg: #ffffff;
    --rk-loop-surface: #f8fafc;
    --rk-loop-border: #cbd5e1;
    --rk-loop-text: #334155;
    --rk-loop-muted: #64748b;
    --rk-loop-shadow: 0 15px 35px -10px rgba(14, 165, 233, 0.15);
}

.rk-loop-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-loop-bg);
    border-radius: 24px;
    box-shadow: var(--rk-loop-shadow);
    border: 1px solid var(--rk-loop-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-loop-header {
    background: linear-gradient(135deg, var(--rk-loop-darker) 0%, var(--rk-loop-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-loop-primary);
}

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

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

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

.rk-loop-link {
    color: #38bdf8;
    text-decoration: none;
    border-bottom: 1px dashed rgba(56, 189, 248, 0.4);
    font-weight: 600;
    transition: all 0.3s;
}

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

/* --- PANEL INTERAKTYWNY --- */
.rk-loop-interactive {
    padding: 40px 50px;
    background: var(--rk-loop-surface);
}

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

.rk-sim-grid {
    display: grid;
    grid-template-columns: 1fr 340px;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-loop-border);
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

/* Lewa sekcja - Średnica, Suwak i Wykres */
.rk-sim-workspace {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

/* Selektor Średnic (Pigułki) */
.rk-diameter-selector {
    display: flex;
    gap: 10px;
    background: var(--rk-loop-surface);
    padding: 6px;
    border-radius: 14px;
    border: 1px solid var(--rk-loop-border);
}

.rk-diameter-btn {
    flex: 1;
    padding: 12px;
    background: transparent;
    border: none;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-loop-muted);
    cursor: pointer;
    transition: all 0.3s ease;
    text-align: center;
}

.rk-diameter-btn:hover {
    color: var(--rk-loop-primary);
}

.rk-diameter-btn.active {
    background: var(--rk-loop-primary);
    color: #ffffff;
    box-shadow: 0 4px 10px rgba(14, 165, 233, 0.25);
}

/* Box Suwaka Długości */
.rk-length-slider-box {
    background: var(--rk-loop-surface);
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-loop-border);
}

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

.rk-slider-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-loop-dark);
    text-transform: uppercase;
}

.rk-slider-counter {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-loop-primary);
    transition: color 0.3s;
}

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

.rk-main-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--rk-loop-primary);
    cursor: pointer;
    border: 4px solid #ffffff;
    box-shadow: 0 2px 6px rgba(0,0,0,0.15);
    transition: transform 0.1s;
}

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

/* Wizualizacja SVG (Zegar i Rotametr) */
.rk-svg-viewport {
    background: #ffffff;
    border-radius: 16px;
    border: 1px dashed var(--rk-loop-border);
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 180px;
}

.rk-hydraulic-svg {
    width: 100%;
    max-width: 380px;
    height: auto;
}

/* Animacje i Przejścia elementów SVG */
.svg-gauge-pointer { transform-origin: 75px 55px; transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1); stroke: var(--rk-loop-success); }
.svg-rotameter-float { transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1); fill: #334155; }
.svg-pipe-flow { stroke-dasharray: 8; animation: hydraulicFlow 2s linear infinite; stroke: var(--rk-loop-primary); }

@keyframes hydraulicFlow { to { stroke-dashoffset: -16; } }

/* Klasy stanów wtryskiwane przez JS */
.state-safe .svg-gauge-pointer { stroke: var(--rk-loop-success); }
.state-warn .svg-gauge-pointer { stroke: var(--rk-loop-warning); }
.state-danger .svg-gauge-pointer { stroke: var(--rk-loop-danger); }
.state-danger .svg-pipe-flow { animation-duration: 8s; stroke: #94a3b8; } /* Drastyczny spadek przepływu */

/* Prawa sekcja - Wyświetlacz Wyników */
.rk-sim-outputs {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-output-card {
    background: #ffffff;
    border: 1px solid var(--rk-loop-border);
    border-radius: 12px;
    padding: 16px 20px;
    position: relative;
    overflow: hidden;
}

.rk-output-card::before {
    content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
    background: var(--rk-loop-success);
    transition: background-color 0.3s;
}

.state-safe .rk-card-hydraulics::before { background: var(--rk-loop-success); }
.state-warn .rk-card-hydraulics::before { background: var(--rk-loop-warning); }
.state-danger .rk-card-hydraulics::before { background: var(--rk-loop-danger); }

.rk-card-label {
    font-size: 11px;
    color: var(--rk-loop-muted);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 6px;
}

.rk-card-value {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-loop-dark);
    transition: color 0.3s;
}

.state-safe .rk-val-status { color: var(--rk-loop-success); }
.state-warn .rk-val-status { color: var(--rk-loop-warning); }
.state-danger .rk-val-status { color: var(--rk-loop-danger); }

.rk-card-comment {
    font-size: 13px;
    color: var(--rk-loop-text);
    margin-top: 6px;
    line-height: 1.4;
}

/* Panel Błędu Krytycznego (Za długa pętla) */
.rk-error-panel {
    display: none;
    background: #fef2f2;
    border: 1px solid #fecaca;
    padding: 15px;
    border-radius: 12px;
    color: #991b1b;
    font-size: 13px;
    line-height: 1.5;
    animation: panelPop 0.3s ease-out;
}
.rk-error-panel strong { font-weight: 800; color: #7f1d1d; display: block; font-size: 14px; margin-bottom: 4px; }
.state-danger .rk-error-panel { display: block; }

@keyframes panelPop {
    from { opacity: 0; transform: scale(0.96); }
    to { opacity: 1; transform: scale(1); }
}

/* --- TABELA LIMITÓW --- */
.rk-loop-limits {
    padding: 35px 50px 45px;
    background: #ffffff;
    border-top: 1px solid var(--rk-loop-border);
}

.rk-loop-limits h3 {
    margin: 0 0 20px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-loop-dark);
}

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

.rk-limit-item {
    background: var(--rk-loop-surface);
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-loop-border);
    text-align: center;
}

.rk-limit-diameter {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-loop-muted);
    text-transform: uppercase;
    margin-bottom: 5px;
}

.rk-limit-length {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-loop-primary);
    margin-bottom: 8px;
}

.rk-limit-desc {
    font-size: 13px;
    color: var(--rk-loop-text);
    line-height: 1.5;
    margin: 0;
}

@media (max-width: 768px) {
    .rk-loop-header, .rk-loop-interactive, .rk-loop-limits { padding: 30px 20px; }
    .rk-loop-header h2 { font-size: 24px; }
    .rk-sim-grid { grid-template-columns: 1fr; padding: 20px; gap: 25px; }
    .rk-limits-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-diameter-selector { flex-direction: column; gap: 6px; }
    .rk-diameter-btn { padding: 10px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/"
    },
    "headline": "Ile wynosi maksymalna długość pętli ogrzewania podłogowego dla rury PEX/PERT 16x2 mm?",
    "description": "Zgodnie z kryteriami inżynieryjnymi, maksymalna długość obwodu 16 mm wynosi 120 m. Przekroczenie limitu 20 kPa blokuje równoważenie instalacji na rotametrach rozdzielacza.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#dataset",
    "name": "Graniczne opory hydrauliczne pętli grzewczych PEX/PERT",
    "description": "Zestawienie fizycznych limitów długości obwodów ogrzewania podłogowego w relacji do średnicy zewnętrznej i dopuszczalnych spadków ciśnień.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna długość pętli podłogówki",
      "rura pex 16mm opory",
      "strata ciśnienia w obwodzie",
      "rotametr rozdzielacza przepływ",
      "zrównoważenie hydrauliczne instalacji"
    ],
    "measurementTechnique": "Modelowanie spadków ciśnień z uwzględnieniem chropowatości bezwzględnej rur plastikowych oraz lepkości kinematicznej wody przy średniej temperaturze pracy.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rura o średnicy 16x2 mm: Absolutne maksimum wynosi 120 m. Rekomendowana długość robocza to 80-100 m.",
        "Rura o średnicy 17x2 mm: Maksymalny limit wynosi 140 m.",
        "Rura o średnicy 20x2 mm: Maksymalna długość obwodu to 160 m."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#webapp",
    "name": "Interaktywny Symulator Oporów Hydraulicznych Pętli",
    "description": "Aplikacja obliczeniowa pozwalająca dynamicznie zmieniać długość obwodu oraz średnicę rury, prezentując w czasie rzeczywistym spadek ciśnienia (kPa) i wpływ na rotametry.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Canvas/SVG support",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-loop-container" id="rk-loop-app">
    
    <div class="rk-loop-header">
        <div class="rk-loop-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21.5 2v6h-6M21.34 15.57a10 10 0 1 1-.57-8.38l5.67-5.67"></path></svg>
            Kryterium Hydrauliczne
        </div>
        <h2>Ile wynosi maksymalna długość pętli ogrzewania podłogowego dla rury PEX/PERT 16&#215;2 mm?</h2>
        <p class="rk-loop-lead">
            Maksymalna dopuszczalna długość jednej pętli grzewczej dla najpopularniejszej średnicy rury 16&#215;2 mm wynosi <strong>120 m</strong> (wliczając odcinki przyłączeniowe). Przekroczenie tej granicy powoduje drastyczny wzrost oporów hydraulicznych powyżej dopuszczalnej wartości <strong>20 kPa (0,2 bar)</strong>. Konsekwencją jest całkowity brak możliwości zrównoważenia hydraulicznego układu na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/" class="rk-loop-link">rotametrach</a>, co prowadzi do „upośledzenia przepływu” i permanentnego niedogrzania strefy mieszkalnej.
        </p>
    </div>

    <div class="rk-loop-interactive">
        <h3>Interaktywny Analizator Spadków Ciśnienia</h3>
        <div class="rk-sim-grid state-safe" id="rk-loop-core">
            
            <div class="rk-sim-workspace">
                <div>
                    <div class="rk-pitch-selector-title">Wybierz średnicę zewnętrzną przewodu:</div>
                    <div class="rk-diameter-selector">
                        <button class="rk-diameter-btn active" data-dim="16">rura Ø 16&#215;2 mm</button>
                        <button class="rk-diameter-btn" data-dim="17">rura Ø 17&#215;2 mm</button>
                        <button class="rk-diameter-btn" data-dim="20">rura Ø 20&#215;2 mm</button>
                    </div>
                </div>

                <div class="rk-length-slider-box">
                    <div class="rk-slider-labels">
                        <span class="rk-slider-title">Całkowita Długość Obwodu (L)</span>
                        <span class="rk-slider-counter" id="val-length">90 m</span>
                    </div>
                    <input type="range" class="rk-main-range" id="rk-loop-slider" min="40" max="180" step="5" value="90">
                </div>

                <div class="rk-svg-viewport">
                    <svg class="rk-hydraulic-svg" viewBox="0 0 300 110" xmlns="http://www.w3.org/2000/svg">
                        <g transform="translate(10, 5)">
                            <path d="M 25 85 A 35 35 0 1 1 125 85" fill="none" stroke="#e2e8f0" stroke-width="8" stroke-linecap="round"/>
                            <circle cx="75" cy="55" r="5" fill="#334155"/>
                            <line class="svg-gauge-pointer" x1="75" y1="55" x2="45" y2="55" stroke-width="3" stroke-linecap="round"/>
                            <text x="75" y="100" font-size="11" font-weight="900" fill="#334155" text-anchor="middle">OPÓR (kPa)</text>
                        </g>

                        <g transform="translate(150, 10)">
                            <rect x="0" y="25" width="60" height="40" rx="6" fill="none" stroke="#cbd5e1" stroke-width="2"/>
                            <path d="M 10 45 L 50 45" fill="none" stroke-width="5" stroke-linecap="round" class="svg-pipe-flow"/>
                            <text x="30" y="20" font-size="10" font-weight="800" fill="#64748b" text-anchor="middle">PRZEPŁYW</text>
                        </g>

                        <g transform="translate(230, 5)">
                            <rect x="25" y="15" width="25" height="70" rx="2" fill="#f8fafc" stroke="#64748b" stroke-width="2"/>
                            <line x1="30" y1="30" x2="38" y2="30" stroke="#94a3b8" stroke-width="1"/>
                            <line x1="30" y1="45" x2="43" y2="45" stroke="#94a3b8" stroke-width="1.5"/>
                            <line x1="30" y1="60" x2="38" y2="60" stroke="#94a3b8" stroke-width="1"/>
                            <line x1="30" y1="75" x2="43" y2="75" stroke="#94a3b8" stroke-width="1.5"/>
                            <rect class="svg-rotameter-float" x="28" y="40" width="19" height="6" rx="1"/>
                            <text x="37" y="100" font-size="11" font-weight="900" fill="#334155" text-anchor="middle">L/MIN</text>
                        </g>
                    </svg>
                </div>
            </div>

            <div class="rk-sim-outputs">
                <div class="rk-output-card rk-card-hydraulics">
                    <div class="rk-card-label">Spadek Ciśnienia Pętli</div>
                    <div class="rk-card-value" id="val-pressure">11.2 kPa</div>
                    <div class="rk-card-comment">Układ stabilny. Straty ciśnienia mieszczą się w normatywnym limicie pompy obiegowej.</div>
                </div>

                <div class="rk-output-card rk-card-hydraulics">
                    <div class="rk-card-label">Stan Hydrauliczny Obwodu</div>
                    <div class="rk-card-value rk-val-status" id="val-status">Optymalny</div>
                    <div class="rk-card-comment" id="desc-status">Przepływ laminarany prawidłowy. Rotametr reaguje na nastawę.</div>
                </div>

                <div class="rk-error-panel">
                    <strong>Upośledzenie hydrauliczne pompy!</strong>
                    Opory liniowe rury drastycznie zdławiły przepływ. Rotametr opadł w okolice <strong>0,2 l/min</strong>. Ta pętla będzie całkowicie zimna. Wymagany podział na mniejsze obwody na etapie <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/" class="rk-loop-link" style="color: #7f1d1d;">rozmieszczenia obwodów</a>.
                </div>
            </div>

        </div>
    </div>

    <div class="rk-loop-limits">
        <h3>Maksymalne granice długości pętli rur według standardu HVAC</h3>
        <div class="rk-limits-grid">
            
            <div class="rk-limit-item">
                <div class="rk-limit-diameter">Rura Ø 16&#215;2 mm</div>
                <div class="rk-limit-length">max 120 m</div>
                <p class="rk-limit-desc">Absolutny limit dla instalacji domowych. Zalecana inżynierska długość robocza to <strong>80–100 m</strong>.</p>
            </div>

            <div class="rk-limit-item">
                <div class="rk-limit-diameter">Rura Ø 17&#215;2 mm</div>
                <div class="rk-limit-length">max 140 m</div>
                <p class="rk-limit-desc">Zwiększona średnica wewnętrzna pozwala na wydłużenie obwodu przy zachowaniu stabilności hydraulicznej.</p>
            </div>

            <div class="rk-limit-item">
                <div class="rk-limit-diameter">Rura Ø 20&#215;2 mm</div>
                <div class="rk-limit-length">max 160 m</div>
                <p class="rk-limit-desc">Stosowana na dużych przestrzeniach (hale, magazyny, obiekty przemysłowe) ze względu na dużą sztywność gięcia.</p>
            </div>

        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-loop-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener inżynieryjny należy do serwisu Projekt-Ogrzewania.pl. Wykryto próbę nieautoryzowanego użycia skryptu.
                </div>
            `;
            return;
        }
    }

    // Zmienne operacyjne i stanowe
    const slider = document.getElementById('rk-loop-slider');
    const layout = document.getElementById('rk-loop-core');
    const dimButtons = document.querySelectorAll('.rk-diameter-btn');

    const valLength = document.getElementById('val-length');
    const valPressure = document.getElementById('val-pressure');
    const valStatus = document.getElementById('val-status');
    const descStatus = document.getElementById('desc-status');

    // Elementy SVG do fizycznej animacji
    const svgPointer = document.querySelector('.svg-gauge-pointer');
    const svgFloat = document.querySelector('.svg-rotameter-float');

    let currentDim = 16; // Domyślna średnica rury

    const limitMap = {
        16: { max: 120, warn: 100, factor: 0.0014 },
        17: { max: 140, warn: 115, factor: 0.0010 },
        20: { max: 160, warn: 135, factor: 0.0006 }
    };

    function recalculateHydraulics() {
        const len = parseInt(slider.value);
        valLength.textContent = len + ' m';

        const config = limitMap[currentDim];

        // Wyliczenie oporów (wzrost kwadratowy ze współczynnikiem dla średnicy)
        let pressure = Math.pow(len, 2) * config.factor;
        valPressure.textContent = pressure.toFixed(1) + ' kPa';

        // Mapowanie parametrów fizycznych na ruch elementów SVG
        // Kąt wskazówki manometru: od -45deg do 135deg
        let angle = -45 + (pressure / 45) * 180;
        if(angle > 140) angle = 140; // Max wychylenie
        svgPointer.style.transform = `rotate(${angle}deg)`;

        // Pozycja pływaka rotametru (y w dół = mniejszy przepływ)
        // Zakres bazowy y: od 20 (max przepływ) do 65 (przepływ zablokowany)
        let floatY = 20 + (pressure / 40) * 45;
        if(floatY > 65) floatY = 65;
        svgFloat.style.transform = `translateY(${floatY - 40}px)`;

        // Zarządzanie stanami wizualnymi i komentarzami inżynierskimi
        layout.classList.remove('state-safe', 'state-warn', 'state-danger');

        if(len <= config.warn) {
            layout.classList.add('state-safe');
            valStatus.textContent = "Optymalny";
            descStatus.textContent = "Przepływ laminarny prawidłowy. Rotametr reaguje na nastawę rozdzielacza.";
        } 
        else if (len > config.warn && len <= config.max) {
            layout.classList.add('state-warn');
            valStatus.textContent = "Ostrzeżenie";
            descStatus.textContent = "Zwiększone opory hydrauliczne. Pompa obiegowa pracuje na wyższym biegu.";
        } 
        else {
            layout.classList.add('state-danger');
            valStatus.textContent = "Przekroczenie limitu";
            descStatus.textContent = "Zablokowanie hydrauliczne obwodu. Brak możliwości wyregulowania pętli.";
        }
    }

    // Obsługa przycisków wyboru średnicy
    dimButtons.forEach(btn => {
        btn.addEventListener('click', function() {
            dimButtons.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            currentDim = parseInt(this.getAttribute('data-dim'));
            recalculateHydraulics();
        });
    });

    if(slider) {
        slider.addEventListener('input', recalculateHydraulics);
        recalculateHydraulics(); // inicjalizacja startowa
    }
});
</script>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"></blockquote>



<style>
:root {
    --rk-vessel-dark: #0f172a;
    --rk-vessel-darker: #020617;
    --rk-vessel-brand: #0ea5e9; /* Woda / Błękit */
    --rk-vessel-brand-light: #e0f2fe;
    --rk-vessel-accent: #f43f5e; /* Naczynie wzbiorcze / Czerwień */
    --rk-vessel-success: #10b981;
    --rk-vessel-bg: #ffffff;
    --rk-vessel-surface: #f8fafc;
    --rk-vessel-border: #cbd5e1;
    --rk-vessel-text: #334155;
    --rk-vessel-muted: #64748b;
    --rk-vessel-formula: #1e293b;
    --rk-vessel-shadow: 0 20px 40px -10px rgba(14, 165, 233, 0.15);
}

.rk-vessel-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-vessel-bg);
    border-radius: 24px;
    box-shadow: var(--rk-vessel-shadow);
    border: 1px solid var(--rk-vessel-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-vessel-header {
    background: linear-gradient(135deg, var(--rk-vessel-darker) 0%, var(--rk-vessel-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-vessel-brand);
}

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

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

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

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

.rk-vessel-link {
    color: #7dd3fc;
    text-decoration: none;
    border-bottom: 1px dashed rgba(125, 211, 252, 0.4);
    font-weight: 600;
    transition: all 0.3s;
}

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

/* --- INTERAKTYWNY SYMULATOR --- */
.rk-vessel-interactive {
    padding: 40px 50px;
    background: var(--rk-vessel-surface);
}

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

.rk-sim-layout {
    display: grid;
    grid-template-columns: 1fr 360px;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-vessel-border);
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

/* Kolumna Lewa - Suwaki i parametry */
.rk-sim-controls {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-control-group {
    background: var(--rk-vessel-surface);
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-vessel-border);
}

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

.rk-control-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-vessel-dark);
    text-transform: uppercase;
}

.rk-control-value {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-vessel-brand);
}

/* Suwaki */
.rk-range-input {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: #cbd5e1;
    outline: none;
}

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

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

/* Pigułki rozdzielacza */
.rk-pill-selector {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: 10px;
}

.rk-pill-btn {
    flex: 1;
    min-width: 60px;
    padding: 10px 5px;
    background: #ffffff;
    border: 1px solid var(--rk-vessel-border);
    border-radius: 10px;
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-vessel-muted);
    cursor: pointer;
    transition: all 0.2s;
    text-align: center;
}

.rk-pill-btn:hover { border-color: var(--rk-vessel-brand); color: var(--rk-vessel-brand); }
.rk-pill-btn.active { background: var(--rk-vessel-brand); color: #ffffff; border-color: var(--rk-vessel-brand); }

/* Kolumna Prawa - Wyniki i SVG */
.rk-sim-results {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-svg-viewport {
    background: #ffffff;
    border-radius: 16px;
    border: 1px dashed var(--rk-vessel-border);
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 220px;
    position: relative;
}

.rk-vessel-svg { width: 100%; max-width: 250px; height: auto; }

/* SVG Animacje */
.anim-water-level { transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1); transform-origin: bottom; }
.anim-diaphragm { transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1); }
.anim-gauge-needle { transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1); transform-origin: 75px 55px; }

/* Karty Wyników */
.rk-result-card {
    background: #ffffff;
    border: 1px solid var(--rk-vessel-border);
    border-radius: 12px;
    padding: 15px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.rk-result-card.highlight {
    border-color: var(--rk-vessel-accent);
    background: #fff1f2;
}

.rk-res-label { font-size: 12px; font-weight: 800; color: var(--rk-vessel-muted); text-transform: uppercase; }
.rk-res-value { font-size: 22px; font-weight: 900; color: var(--rk-vessel-dark); }
.highlight .rk-res-label { color: #be123c; }
.highlight .rk-res-value { color: var(--rk-vessel-accent); }

/* --- SEKCJA WZORÓW --- */
.rk-vessel-formulas {
    padding: 0 50px 40px;
    background: var(--rk-vessel-surface);
}

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

.rk-formula-box {
    background: #ffffff;
    border: 1px solid var(--rk-vessel-border);
    border-radius: 16px;
    padding: 25px;
    display: grid;
    grid-template-columns: 350px 1fr;
    gap: 30px;
    align-items: center;
}

.rk-formula-math {
    background: var(--rk-vessel-formula);
    padding: 20px;
    border-radius: 12px;
    color: #f8fafc;
    font-family: 'Courier New', Courier, monospace;
    font-size: 18px;
    font-weight: 700;
    text-align: center;
    border-left: 4px solid var(--rk-vessel-brand);
    letter-spacing: 0.5px;
}

.rk-formula-math sub { font-size: 11px; color: #93c5fd; }
.rk-formula-math span.operator { color: #f43f5e; margin: 0 5px; }

/* Custom Fraction for HTML */
.rk-html-fraction {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    vertical-align: middle;
    margin: 0 5px;
    line-height: 1.2;
}
.rk-html-numerator { border-bottom: 2px solid #cbd5e1; padding: 0 5px; }
.rk-html-denominator { padding: 0 5px; }

.rk-formula-desc h4 { margin: 0 0 10px 0; font-size: 16px; font-weight: 800; color: var(--rk-vessel-dark); }
.rk-formula-desc p { margin: 0; font-size: 14px; line-height: 1.6; color: var(--rk-vessel-text); }
.rk-formula-desc strong { font-weight: 800; color: var(--rk-vessel-dark); }

@media (max-width: 768px) {
    .rk-vessel-header, .rk-vessel-interactive, .rk-vessel-formulas { padding: 30px 20px; }
    .rk-vessel-header h2 { font-size: 24px; }
    .rk-sim-layout, .rk-formula-box { grid-template-columns: 1fr; }
    .rk-formula-box { gap: 15px; padding: 20px; }
    .rk-svg-viewport { min-height: 180px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-miesci-sie-w-1-metrze-rury-pex-pert-16/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-miesci-sie-w-1-metrze-rury-pex-pert-16/"
    },
    "headline": "Ile litrów wody mieści się w instalacji podłogówki i jak dobrać naczynie wzbiorcze?",
    "description": "Procedura obliczeniowa pojemności zładu i naczynia przeponowego według normy PN-EN 12828. Poznaj wzory i kalkulator pojemności rur PEX/PERT 16x2 mm.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-miesci-sie-w-1-metrze-rury-pex-pert-16/#dataset",
    "name": "Algorytm doboru naczynia wzbiorczego PN-EN 12828",
    "description": "Matematyczne zestawienie kroków i współczynników wymaganych do obliczenia całkowitego zładu wodnego i minimalnej pojemności naczynia kompensacyjnego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "pojemność wodna rury pex 16",
      "jak dobrać naczynie wzbiorcze",
      "wzór na naczynie przeponowe",
      "zład wody ogrzewanie podłogowe",
      "norma PN-EN 12828"
    ],
    "measurementTechnique": "Szeregowanie algorytmiczne wg norm europejskich, uwzględniające rozszerzalność wody, ciśnienie wstępne i zapas bezpieczeństwa.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Pojemność rur: V_rur = L_calk * 0,113 l/mb",
        "Pojemność instalacji: V_inst = V_rur + V_rozdz + V_buf",
        "Pojemność użytkowa: V_e = V_inst * e * 1,3",
        "Pojemność nominalna: V_n = V_e * ((p_max + 1) / (p_max - p_p))"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-miesci-sie-w-1-metrze-rury-pex-pert-16/#webapp",
    "name": "Kalkulator Pojemności Zładu i Naczynia Wzbiorczego",
    "description": "Interaktywne narzędzie obliczające pojemność całkowitą instalacji ogrzewania podłogowego oraz dobierające normatywną pojemność naczynia przeponowego.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-vessel-container" id="rk-vessel-app">
    
    <div class="rk-vessel-header">
        <div class="rk-vessel-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Pojemność i Kompensacja
        </div>
        <h2>Ile litrów wody mieści się w instalacji podłogówki i <span>jak dobrać naczynie wzbiorcze?</span></h2>
        <p class="rk-vessel-lead">
            Pojemność wodna jednego metra bieżącego rury PERT/PEX o średnicy 16&#215;2 mm wynosi dokładnie <strong>0,113 litra</strong>. Do obliczenia całkowitej pojemności zładu instalacji należy zsumować objętość rur podłogówki, belek <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/" class="rk-vessel-link">rozdzielacza</a> oraz źródła ciepła (np. <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-vessel-link">bufora</a>). <a href="https://projekt-ogrzewania.pl/naczynie-wzbiorcze/" class="rk-vessel-link">Naczynie wzbiorcze</a> dobiera się w oparciu o normę <strong>PN-EN 12828</strong>, przyjmując minimalny współczynnik rezerwy pojemności na poziomie 4% całkowitej objętości zładu.
        </p>
    </div>

    <div class="rk-vessel-interactive">
        <h3>Kalkulator Zładu i Naczynia Wzbiorczego</h3>
        
        <div class="rk-sim-layout">
            
            <div class="rk-sim-controls">
                
                <div class="rk-control-group">
                    <div class="rk-control-header">
                        <span class="rk-control-label">Długość rur (L<sub>całk</sub>)</span>
                        <span class="rk-control-value" id="val-pipe">800 m</span>
                    </div>
                    <input type="range" class="rk-range-input" id="range-pipe" min="100" max="2500" step="50" value="800">
                </div>

                <div class="rk-control-group">
                    <div class="rk-control-header">
                        <span class="rk-control-label">Zbiornik Buforowy</span>
                        <span class="rk-control-value" id="val-buffer">60 L</span>
                    </div>
                    <input type="range" class="rk-range-input" id="range-buffer" min="0" max="500" step="10" value="60">
                </div>

                <div class="rk-control-group">
                    <div class="rk-control-header">
                        <span class="rk-control-label">Liczba sekcji rozdzielacza</span>
                    </div>
                    <div class="rk-pill-selector">
                        <button class="rk-pill-btn" data-sec="4">4 sek.</button>
                        <button class="rk-pill-btn" data-sec="8">8 sek.</button>
                        <button class="rk-pill-btn active" data-sec="12">12 sek.</button>
                        <button class="rk-pill-btn" data-sec="16">16 sek.</button>
                    </div>
                </div>

            </div>

            <div class="rk-sim-results">
                
                <div class="rk-svg-viewport">
                    <svg class="rk-vessel-svg" viewBox="0 0 200 160" xmlns="http://www.w3.org/2000/svg">
                        <path d="M 70 20 Q 100 10 130 20 L 130 140 Q 100 150 70 140 Z" fill="#e2e8f0" stroke="#94a3b8" stroke-width="4"/>
                        <path class="anim-diaphragm" id="svg-diaphragm" d="M 72 80 Q 100 110 128 80" fill="none" stroke="#334155" stroke-width="3" stroke-dasharray="4"/>
                        <g transform="translate(0, 145)">
                            <path class="anim-water-level" id="svg-water" d="M 72 -5 Q 100 5 128 -5 L 128 -65 Q 100 -55 72 -65 Z" fill="#0ea5e9" opacity="0.8"/>
                        </g>
                        <rect x="95" y="145" width="10" height="15" fill="#64748b"/>
                        <path d="M 85 155 L 115 155" fill="none" stroke="#64748b" stroke-width="4"/>
                        
                        <g transform="translate(150, 40)">
                            <circle cx="20" cy="20" r="18" fill="#ffffff" stroke="#cbd5e1" stroke-width="3"/>
                            <path d="M 8 20 A 12 12 0 0 1 32 20" fill="none" stroke="#10b981" stroke-width="4"/>
                            <path d="M 32 20 A 12 12 0 0 1 12 28" fill="none" stroke="#f43f5e" stroke-width="4"/>
                            <circle cx="20" cy="20" r="3" fill="#334155"/>
                            <line class="anim-gauge-needle" id="svg-needle" x1="20" y1="20" x2="10" y2="10" stroke="#334155" stroke-width="2" stroke-linecap="round" style="transform-origin: 20px 20px;"/>
                        </g>
                    </svg>
                </div>

                <div class="rk-result-card">
                    <div class="rk-res-label">Całkowity zład (V<sub>inst</sub>)</div>
                    <div class="rk-res-value" id="res-total">156.4 L</div>
                </div>

                <div class="rk-result-card highlight">
                    <div class="rk-res-label">Min. Naczynie (V<sub>n</sub>)</div>
                    <div class="rk-res-value" id="res-vessel">12 L</div>
                </div>

            </div>

        </div>
    </div>

    <div class="rk-vessel-formulas">
        <h3 style="font-size: 20px; font-weight: 800; color: var(--rk-vessel-dark); margin: 0 0 20px 0; text-align: center;">Procedura obliczeniowa wg PN-EN 12828</h3>
        
        <div class="rk-formula-grid">
            
            <div class="rk-formula-box">
                <div class="rk-formula-math">
                    V<sub>rur</sub> = L<sub>całk</sub> <span class="operator">&times;</span> 0,113 <span style="font-size:12px;color:#94a3b8;">l/mb</span>
                </div>
                <div class="rk-formula-desc">
                    <h4>1. Pojemność wodna rur (V<sub>rur</sub>)</h4>
                    <p>Mnożymy całkowitą długość zastosowanej rury grzewczej PEX 16&#215;2 mm przez jej stałą pojemność wewnętrzną wynoszącą <strong>0,113 litra na metr bieżący</strong>.</p>
                </div>
            </div>

            <div class="rk-formula-box">
                <div class="rk-formula-math">
                    V<sub>inst</sub> = V<sub>rur</sub> <span class="operator">+</span> V<sub>rozdz</sub> <span class="operator">+</span> V<sub>buf</sub>
                </div>
                <div class="rk-formula-desc">
                    <h4>2. Całkowita pojemność instalacji (V<sub>inst</sub>)</h4>
                    <p>Gdzie <strong>V<sub>rozdz</sub></strong> to objętość belek i armatury (średnio 0,5 l na każdą sekcję rozdzielacza), a <strong>V<sub>buf</sub></strong> to pojemność ewentualnego zbiornika buforowego lub sprzęgła.</p>
                </div>
            </div>

            <div class="rk-formula-box">
                <div class="rk-formula-math">
                    V<sub>e</sub> = V<sub>inst</sub> <span class="operator">&times;</span> e <span class="operator">&times;</span> 1,3
                </div>
                <div class="rk-formula-desc">
                    <h4>3. Pojemność użytkowa naczynia (V<sub>e</sub>)</h4>
                    <p>Gdzie <strong>e</strong> to współczynnik rozszerzalności wody (dla t<sub>z</sub> = 45°C wynosi <strong>0,0095</strong>), a <strong>1,3</strong> to wymagany współczynnik bezpieczeństwa rezerwy wody.</p>
                </div>
            </div>

            <div class="rk-formula-box">
                <div class="rk-formula-math" style="display: flex; align-items: center; justify-content: center;">
                    V<sub>n</sub> = V<sub>e</sub> <span class="operator">&times;</span>
                    <div class="rk-html-fraction">
                        <div class="rk-html-numerator">p<sub>max</sub> + 1</div>
                        <div class="rk-html-denominator">p<sub>max</sub> &#8211; p<sub>p</sub></div>
                    </div>
                </div>
                <div class="rk-formula-desc">
                    <h4>4. Minimalna pojemność nominalna (V<sub>n</sub>)</h4>
                    <p>Gdzie <strong>p<sub>max</sub></strong> to max. dopuszczalne ciśnienie (zawór bezpieczeństwa – zwykle 3,0 bar), a <strong>p<sub>p</sub></strong> to ciśnienie wstępne gazu w naczyniu (zwykle 1,0–1,5 bar).</p>
                </div>
            </div>

        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-vessel-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener inżynieryjny należy do serwisu Projekt-Ogrzewania.pl. Wykryto próbę kradzieży kodu źródłowego.
                </div>
            `;
            return;
        }
    }

    // Zmienne UI
    const rangePipe = document.getElementById('range-pipe');
    const rangeBuffer = document.getElementById('range-buffer');
    const pillSecs = document.querySelectorAll('.rk-pill-btn');
    
    const valPipe = document.getElementById('val-pipe');
    const valBuffer = document.getElementById('val-buffer');
    const resTotal = document.getElementById('res-total');
    const resVessel = document.getElementById('res-vessel');

    // SVG Elementy
    const svgWater = document.getElementById('svg-water');
    const svgDiaphragm = document.getElementById('svg-diaphragm');
    const svgNeedle = document.getElementById('svg-needle');

    let sections = 12; // Domyślna wartość
    const standardVessels = [8, 12, 18, 24, 35, 50, 80, 100, 150];

    function calculateVessel() {
        const L = parseFloat(rangePipe.value);
        const buf = parseFloat(rangeBuffer.value);
        
        // Update Labels
        valPipe.textContent = L + ' m';
        valBuffer.textContent = buf + ' L';

        // Matematyka wg PN-EN 12828
        const V_rur = L * 0.113;
        const V_rozdz = sections * 0.5;
        const V_inst = V_rur + V_rozdz + buf;
        
        // Dla 45 st C, e = 0.0095
        const V_e = V_inst * 0.0095 * 1.3;
        
        // V_n = V_e * ((3 + 1) / (3 - 1.2)) = V_e * (4 / 1.8) = V_e * 2.222
        const V_n_min = V_e * 2.222;

        // Znajdź najbliższe większe naczynie handlowe
        let chosenVessel = standardVessels[standardVessels.length - 1];
        for(let v of standardVessels) {
            if(v >= V_n_min) {
                chosenVessel = v;
                break;
            }
        }

        // Update DOM
        resTotal.textContent = V_inst.toFixed(1) + ' L';
        resVessel.textContent = chosenVessel + ' L';

        // Animacja SVG (Wizualizacja wypełnienia/ciśnienia)
        // Im większy zład, tym membrana idzie wyżej, woda wypełnia się mocniej
        let fillRatio = V_n_min / 50; // Arbitralna skala dla animacji
        if(fillRatio > 1) fillRatio = 1;
        if(fillRatio < 0.2) fillRatio = 0.2;

        // Woda - skalowanie w Y (od dołu, od -145px)
        svgWater.style.transform = `scaleY(${fillRatio * 1.2})`;
        
        // Membrana - przesuwanie w górę
        let dShift = -20 * fillRatio;
        svgDiaphragm.style.transform = `translateY(${dShift}px)`;

        // Zegar - rotacja wskazówki (symulacja wzrostu ciśnienia z objętością)
        let angle = -45 + (fillRatio * 180);
        if(angle > 135) angle = 135;
        svgNeedle.style.transform = `rotate(${angle}deg)`;
    }

    // Event Listenery
    if(rangePipe && rangeBuffer) {
        rangePipe.addEventListener('input', calculateVessel);
        rangeBuffer.addEventListener('input', calculateVessel);
        
        pillSecs.forEach(btn => {
            btn.addEventListener('click', function() {
                pillSecs.forEach(b => b.classList.remove('active'));
                this.classList.add('active');
                sections = parseInt(this.getAttribute('data-sec'));
                calculateVessel();
            });
        });

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



<style>
:root {
    --rk-cases-dark: #0f172a;
    --rk-cases-panel: #1e293b;
    --rk-cases-primary: #3b82f6; /* Blue for tech/math */
    --rk-cases-success: #10b981; /* Green for correct calcs */
    --rk-cases-danger: #ef4444; /* Red for errors (Case 2) */
    --rk-cases-warning: #f59e0b;
    --rk-cases-bg: #f8fafc;
    --rk-cases-border: #e2e8f0;
    --rk-cases-text: #334155;
    --rk-cases-muted: #64748b;
}

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

/* Header */
.rk-cases-header {
    background: linear-gradient(135deg, var(--rk-cases-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: #ffffff;
    border-bottom: 5px solid var(--rk-cases-primary);
    position: relative;
}

.rk-cases-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(59, 130, 246, 0.2);
    color: #93c5fd;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(147, 197, 253, 0.3);
}

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

.rk-cases-title span { color: #60a5fa; }

.rk-cases-desc {
    color: #cbd5e1;
    font-size: 15px;
    line-height: 1.7;
    margin: 0;
    max-width: 800px;
}

/* Navigation / Tabs */
.rk-cases-nav {
    display: flex;
    background: #f1f5f9;
    border-bottom: 1px solid var(--rk-cases-border);
    overflow-x: auto;
    scrollbar-width: none;
}
.rk-cases-nav::-webkit-scrollbar { display: none; }

.rk-case-tab {
    flex: 1;
    padding: 20px 15px;
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-cases-muted);
    cursor: pointer;
    transition: all 0.3s;
    white-space: nowrap;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.rk-case-tab:hover {
    color: var(--rk-cases-primary);
    background: rgba(59, 130, 246, 0.05);
}

.rk-case-tab.active {
    color: var(--rk-cases-primary);
    border-bottom-color: var(--rk-cases-primary);
    background: #ffffff;
}

/* Content Area */
.rk-cases-content {
    background: #ffffff;
    padding: 0;
}

.rk-case-panel {
    display: none;
    animation: caseFade 0.4s ease-out;
}

.rk-case-panel.active {
    display: grid;
    grid-template-columns: 1fr 300px;
}

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

/* Left: Data & Math */
.rk-case-data {
    padding: 40px 50px;
    border-right: 1px solid var(--rk-cases-border);
}

.rk-case-data h3 {
    margin: 0 0 20px 0;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-cases-dark);
}

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

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

.rk-data-label { font-size: 13px; color: var(--rk-cases-muted); font-weight: 700; }
.rk-data-val { font-size: 14px; font-weight: 900; color: var(--rk-cases-dark); }

.rk-math-block {
    background: #1e293b;
    border-radius: 12px;
    padding: 20px;
    color: #f8fafc;
    font-family: 'Courier New', Courier, monospace;
    font-size: 15px;
    margin-bottom: 25px;
    border-left: 4px solid var(--rk-cases-primary);
    box-shadow: inset 0 4px 6px rgba(0,0,0,0.2);
}

.rk-math-line {
    margin-bottom: 10px;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    line-height: 1.5;
}
.rk-math-line:last-child { margin-bottom: 0; }

.rk-math-highlight {
    color: #38bdf8;
    font-weight: 900;
    font-size: 17px;
}

.rk-math-result {
    color: #10b981; /* Green for results */
    font-weight: 900;
    font-size: 18px;
}

.rk-case-panel[data-status="fail"] .rk-math-result {
    color: #ef4444; /* Red for bad results */
}

/* Right: Visuals & Conclusion */
.rk-case-visuals {
    background: #f8fafc;
    display: flex;
    flex-direction: column;
}

.rk-svg-wrapper {
    height: 220px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: #e2e8f0;
    border-bottom: 1px solid var(--rk-cases-border);
    position: relative;
    overflow: hidden;
}

.rk-case-conclusion {
    padding: 30px;
    flex-grow: 1;
}

.rk-case-conclusion h4 {
    margin: 0 0 10px 0;
    font-size: 16px;
    font-weight: 900;
    text-transform: uppercase;
}

.rk-case-panel[data-status="success"] .rk-case-conclusion h4 { color: var(--rk-cases-success); }
.rk-case-panel[data-status="fail"] .rk-case-conclusion h4 { color: var(--rk-cases-danger); }
.rk-case-panel[data-status="info"] .rk-case-conclusion h4 { color: var(--rk-cases-primary); }

.rk-case-conclusion p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-cases-text);
}

/* Custom Math elements to avoid LaTeX inside HTML */
.rk-fraction {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    vertical-align: middle;
    margin: 0 5px;
}
.rk-numerator {
    border-bottom: 1px solid #94a3b8;
    padding: 0 5px;
    font-size: 14px;
}
.rk-denominator {
    padding: 0 5px;
    font-size: 14px;
}

/* SVG Animations based on active panel */
.anim-loop-draw { stroke-dasharray: 100; stroke-dashoffset: 100; }
.rk-case-panel.active .anim-loop-draw { animation: drawLoop 2s forwards ease-out; }
.rk-case-panel.active .anim-loop-draw:nth-child(2) { animation-delay: 0.5s; }
.rk-case-panel.active .anim-loop-draw:nth-child(3) { animation-delay: 1s; }
.rk-case-panel.active .anim-loop-draw:nth-child(4) { animation-delay: 1.5s; }
@keyframes drawLoop { to { stroke-dashoffset: 0; } }

.rk-case-panel.active .anim-gauge-needle { animation: overPressure 2s forwards cubic-bezier(0.4, 0, 0.2, 1); }
@keyframes overPressure { 
    0% { transform: rotate(-45deg); } 
    70% { transform: rotate(135deg); stroke: #ef4444; } 
    80% { transform: rotate(120deg); stroke: #ef4444; } 
    100% { transform: rotate(130deg); stroke: #ef4444; } 
}

.rk-case-panel.active .anim-vessel-fill { animation: fillVessel 2s forwards ease-out; }
@keyframes fillVessel { from { transform: scaleY(0); } to { transform: scaleY(1); } }

/* Mobile View */
@media (max-width: 768px) {
    .rk-cases-header { padding: 30px 20px; }
    .rk-cases-title { font-size: 24px; }
    .rk-case-panel.active { grid-template-columns: 1fr; }
    .rk-case-data { padding: 30px 20px; border-right: none; border-bottom: 1px solid var(--rk-cases-border); }
    .rk-data-grid { grid-template-columns: 1fr; gap: 10px; }
    .rk-svg-wrapper { height: 180px; }
    .rk-case-tab { padding: 15px 20px; font-size: 14px; }
    .rk-math-block { padding: 15px; font-size: 13px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-case-studies",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Przykłady obliczeniowe instalacji ogrzewania podłogowego – Case Studies",
    "description": "Praktyczne przykłady obliczeń hydraulicznych i termicznych: salon z aneksem, przewymiarowana pętla 150m oraz dobór naczynia wzbiorczego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-23",
    "dateModified": "2026-05-23"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-case-studies",
    "name": "Wyniki Symulacji Parametrów Ogrzewania Podłogowego",
    "description": "Szczegółowe dane liczbowe, wzory i konkluzje inżynierskie dla 3 popularnych wariantów instalacyjnych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczenia ogrzewania podłogowego",
      "dobór naczynia wzbiorczego",
      "prędkość przepływu wody w rurze",
      "strumień masowy podłogówki",
      "podział na pętle grzewcze"
    ],
    "measurementTechnique": "Szacunki numeryczne oparte o normę PN-EN 1264 z zastosowaniem fizycznych równań zachowania energii i oporów przepływu.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Salon 45m2: Zapotrzebowanie 1800W generuje 4 pętle po 77m przy rozstawie 15cm.",
        "Pętla 150m: Wymaga przepływu 0.344 m3/h i generuje niszczący opór rzędu 43 kPa.",
        "Zład 1050m rury: Wymaga naczynia wzbiorczego o objętości min. 8 litrów dla bezpieczeństwa."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-case-studies",
    "name": "Kalkulator Prędkości i Pojemności Wodnej",
    "description": "Interaktywny moduł edukacyjny prezentujący analizę 3 przypadków obliczeniowych (Case Studies) z dynamicznymi wykresami SVG i wnioskami.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-cases-container" id="rk-cases-app">
    
    <div class="rk-cases-header">
        <div class="rk-cases-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Analiza Przypadków (Case Studies)
        </div>
        <h2 class="rk-cases-title">Przykłady obliczeniowe instalacji <span>podłogówki</span></h2>
        <p class="rk-cases-desc">Poniżej przedstawiam trzy rzeczywiste scenariusze z kart projektowych. Zobacz, jak wzory matematyczne normy PN-EN przekładają się na dobór rur, analizę błędów wykonawczych i bezpieczeństwo hydrauliczne układu.</p>
    </div>

    <div class="rk-cases-nav">
        <button class="rk-case-tab active" data-target="case-1">
            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
            1. Salon 45 m² (Idealny)
        </button>
        <button class="rk-case-tab" data-target="case-2">
            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
            2. Pętla 150 m (Błąd)
        </button>
        <button class="rk-case-tab" data-target="case-3">
            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            3. Pojemność i Wzbiorcze
        </button>
    </div>

    <div class="rk-cases-content">
        
        <div class="rk-case-panel active" id="case-1" data-status="success">
            <div class="rk-case-data">
                <h3>Przykład 1: Salon z aneksem</h3>
                
                <div class="rk-data-grid">
                    <div class="rk-data-item"><span class="rk-data-label">Pow. podłogi (A):</span> <span class="rk-data-val">45 m²</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Standard (q):</span> <span class="rk-data-val">40 W/m²</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Pow. grzewcza (A<sub>grz</sub>):</span> <span class="rk-data-val">40 m²</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Rozstaw (a):</span> <span class="rk-data-val">15 cm (0.15m)</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Zabudowa stała:</span> <span class="rk-data-val">5 m²</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Długość dobiegu:</span> <span class="rk-data-val">16 m</span></div>
                </div>

                <div class="rk-math-block">
                    <div class="rk-math-line">
                        <span>Zapotrzebowanie (Q<sub>obl</sub>):</span>
                        <span class="rk-math-highlight">45 &times; 40</span>
                        <span>=</span>
                        <span class="rk-math-result">1800 W</span>
                    </div>
                    <div class="rk-math-line" style="margin-top:15px;">
                        <span>Dł. rury (L):</span>
                        <span>(40 / 0.15) &times; 1.1 + 16</span>
                        <span>=</span>
                        <span class="rk-math-highlight">309.33 m</span>
                    </div>
                    <div class="rk-math-line" style="margin-top:15px; border-top:1px dashed #475569; padding-top:15px;">
                        <span>Podział:</span>
                        <span>309.33 / 100 &approx; 3.09</span>
                        <span>&rarr;</span>
                        <span class="rk-math-result">4 pętle (po ~77m)</span>
                    </div>
                </div>
            </div>
            <div class="rk-case-visuals">
                <div class="rk-svg-wrapper">
                    <svg viewBox="0 0 100 100" style="width:100%; height:100%;">
                        <rect x="10" y="20" width="15" height="60" fill="#334155" rx="3"/>
                        <path class="anim-loop-draw" d="M 25 30 L 80 30 Q 90 30 90 40 L 40 40" fill="none" stroke="#10b981" stroke-width="3" stroke-linecap="round"/>
                        <path class="anim-loop-draw" d="M 25 45 L 80 45 Q 90 45 90 55 L 40 55" fill="none" stroke="#10b981" stroke-width="3" stroke-linecap="round"/>
                        <path class="anim-loop-draw" d="M 25 60 L 80 60 Q 90 60 90 70 L 40 70" fill="none" stroke="#10b981" stroke-width="3" stroke-linecap="round"/>
                        <path class="anim-loop-draw" d="M 25 75 L 80 75 Q 90 75 90 85 L 40 85" fill="none" stroke="#10b981" stroke-width="3" stroke-linecap="round"/>
                    </svg>
                </div>
                <div class="rk-case-conclusion">
                    <h4>Wniosek Inżynierski</h4>
                    <p>Podział na 4 krótkie pętle (około 77 metrów każda) gwarantuje bardzo niskie opory hydrauliczne, poniżej 15 kPa. Rotametry dadzą się idealnie wyregulować, a pompa ciepła nie będzie przeciążona.</p>
                </div>
            </div>
        </div>

        <div class="rk-case-panel" id="case-2" data-status="fail">
            <div class="rk-case-data">
                <h3>Przykład 2: Hydraulika zbyt długiej pętli</h3>
                
                <div class="rk-data-grid">
                    <div class="rk-data-item"><span class="rk-data-label">Długość rury (L):</span> <span class="rk-data-val">150 m</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Śr. wewnętrzna:</span> <span class="rk-data-val">12 mm (16&#215;2)</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Moc pętli (Q):</span> <span class="rk-data-val">2000 W</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Schłodzenie (&Delta;T):</span> <span class="rk-data-val">5 K</span></div>
                </div>

                <div class="rk-math-block">
                    <div class="rk-math-line">
                        <span>Wymagany strumień wody (m):</span>
                    </div>
                    <div class="rk-math-line">
                        <span>m =</span>
                        <div class="rk-fraction">
                            <span class="rk-numerator">2000</span>
                            <span class="rk-denominator">4186 &times; 5</span>
                        </div>
                        <span>&times; 3600 &approx;</span>
                        <span class="rk-math-highlight">344 kg/h</span>
                    </div>
                    <div class="rk-math-line" style="margin-top:15px; border-top:1px dashed #475569; padding-top:15px;">
                        <span>Prędkość (v):</span>
                        <span class="rk-math-result" style="color:#f59e0b;">0.85 m/s (Szumy!)</span>
                    </div>
                    <div class="rk-math-line">
                        <span>Opór liniowy dla 150m:</span>
                        <span class="rk-math-result">aż 43 kPa</span>
                    </div>
                </div>
            </div>
            <div class="rk-case-visuals">
                <div class="rk-svg-wrapper">
                    <svg viewBox="0 0 100 100" style="width:100%; height:100%;">
                        <path d="M 20 70 A 40 40 0 1 1 80 70" fill="none" stroke="#cbd5e1" stroke-width="8" stroke-linecap="round"/>
                        <path d="M 60 22 A 40 40 0 0 1 80 70" fill="none" stroke="#ef4444" stroke-width="8" stroke-linecap="round"/>
                        <line class="anim-gauge-needle" x1="50" y1="50" x2="20" y2="50" stroke="#334155" stroke-width="4" stroke-linecap="round" style="transform-origin: 50px 50px;"/>
                        <circle cx="50" cy="50" r="6" fill="#1e293b"/>
                        <text x="50" y="85" font-size="14" font-weight="900" fill="#ef4444" text-anchor="middle">43 kPa</text>
                    </svg>
                </div>
                <div class="rk-case-conclusion">
                    <h4>Błąd Krytyczny!</h4>
                    <p>Żadna standardowa pompa obiegowa nie zapewni tak wysokiego ciśnienia dyspozycyjnego dla jednej pętli przy zachowaniu przepływów na reszcie instalacji. <strong>Efekt: Pętla po prostu przestanie grzać.</strong></p>
                </div>
            </div>
        </div>

        <div class="rk-case-panel" id="case-3" data-status="info">
            <div class="rk-case-data">
                <h3>Przykład 3: Pojemność i Naczynie</h3>
                
                <div class="rk-data-grid">
                    <div class="rk-data-item"><span class="rk-data-label">Pow. domu:</span> <span class="rk-data-val">150 m²</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Całk. dł. rur:</span> <span class="rk-data-val">1050 m</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Rozdzielacz:</span> <span class="rk-data-val">12 sekcji</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Bufor sprzęgłowy:</span> <span class="rk-data-val">60 L</span></div>
                </div>

                <div class="rk-math-block">
                    <div class="rk-math-line">
                        <span>Pojemność rur (V<sub>rur</sub>):</span>
                        <span>1050 &times; 0.113 =</span>
                        <span class="rk-math-highlight">118.65 L</span>
                    </div>
                    <div class="rk-math-line">
                        <span>Całk. zład (V<sub>inst</sub>):</span>
                        <span>118.65 + (12 &times; 0.5) + 60 =</span>
                        <span class="rk-math-highlight">184.65 L</span>
                    </div>
                    <div class="rk-math-line" style="margin-top:15px; border-top:1px dashed #475569; padding-top:15px;">
                        <span>Obj. użytkowa (V<sub>e</sub>):</span>
                        <span>184.65 &times; 0.0095 &times; 1.3 =</span>
                        <span class="rk-math-highlight">2.28 L</span>
                    </div>
                    <div class="rk-math-line">
                        <span>Min. naczynie (V<sub>n</sub>):</span>
                        <span>2.28 &times; 2.22 =</span>
                        <span class="rk-math-result">5.06 L</span>
                    </div>
                </div>
            </div>
            <div class="rk-case-visuals">
                <div class="rk-svg-wrapper">
                    <svg viewBox="0 0 100 100" style="width:100%; height:100%;">
                        <rect x="30" y="20" width="40" height="60" fill="#cbd5e1" rx="20"/>
                        <rect class="anim-vessel-fill" x="30" y="50" width="40" height="30" fill="#3b82f6" rx="15" style="transform-origin: bottom;"/>
                        <line x1="50" y1="20" x2="50" y2="10" stroke="#334155" stroke-width="4"/>
                        <path d="M 30 50 Q 50 40 70 50" fill="none" stroke="#1e293b" stroke-width="2" stroke-dasharray="4"/>
                        <text x="50" y="65" font-size="14" font-weight="900" fill="#ffffff" text-anchor="middle">8 L</text>
                    </svg>
                </div>
                <div class="rk-case-conclusion">
                    <h4>Bezpieczeństwo Układu</h4>
                    <p>Obliczenia wykazują minimalną pojemność na poziomie 5.06 L. Należy zakupić standardowe naczynie o pojemności <strong>8 litrów</strong>. Poleganie na małym, 5-litrowym naczyniu wbudowanym w kocioł doprowadzi do wyrzutów wody przez zawór bezpieczeństwa.</p>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-cases-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener inżynierski należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na tej domenie jest nieautoryzowane.
                </div>
            `;
            return;
        }
    }

    // Logika Zakładek (Case Studies)
    const tabs = document.querySelectorAll('.rk-case-tab');
    const panels = document.querySelectorAll('.rk-case-panel');

    tabs.forEach(tab => {
        tab.addEventListener('click', () => {
            const targetId = tab.getAttribute('data-target');
            
            // Czyszczenie klas aktywnych
            tabs.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));
            
            // Aktywacja wybranego
            tab.classList.add('active');
            const activePanel = document.getElementById(targetId);
            
            // Restart CSS animations for SVGs by forcing reflow
            if (activePanel) {
                activePanel.classList.remove('active');
                void activePanel.offsetWidth; 
                activePanel.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-proj-dark: #0f172a;
    --rk-proj-darker: #020617;
    --rk-proj-brand: #4f46e5; /* Indigo techniczne */
    --rk-proj-brand-light: #e0e7ff;
    --rk-proj-accent: #06b6d4; /* Cyjan / inżynieryjny akcent */
    --rk-proj-bg: #ffffff;
    --rk-proj-surface: #f8fafc;
    --rk-proj-border: #cbd5e1;
    --rk-proj-text: #334155;
    --rk-proj-muted: #64748b;
    --rk-proj-shadow: 0 20px 40px -10px rgba(79, 70, 229, 0.15);
}

.rk-proj-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-proj-bg);
    border-radius: 24px;
    box-shadow: var(--rk-proj-shadow);
    border: 1px solid var(--rk-proj-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-proj-header {
    background: linear-gradient(135deg, var(--rk-proj-darker) 0%, var(--rk-proj-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-proj-brand);
}

.rk-proj-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(79, 70, 229, 0.2);
    color: #a5b4fc;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(165, 180, 252, 0.3);
}

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

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

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

.rk-proj-link {
    color: #a5b4fc;
    text-decoration: none;
    border-bottom: 1px dashed rgba(165, 180, 252, 0.4);
    font-weight: 600;
    transition: all 0.3s;
}
.rk-proj-link:hover { color: #ffffff; border-bottom-style: solid; }

.rk-proj-link-dark {
    color: var(--rk-proj-brand);
    text-decoration: underline;
    text-underline-offset: 3px;
    font-weight: 700;
    transition: color 0.3s;
}
.rk-proj-link-dark:hover { color: #3730a3; }

/* --- INTERAKTYWNE FILARY --- */
.rk-proj-interactive {
    padding: 40px 50px;
    background: var(--rk-proj-surface);
}

.rk-proj-interactive h3 {
    text-align: center;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-proj-dark);
    margin: 0 0 30px 0;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-pillars-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    margin-bottom: 30px;
}

.rk-pillar-btn {
    background: #ffffff;
    border: 2px solid var(--rk-proj-border);
    border-radius: 16px;
    padding: 20px 15px;
    cursor: pointer;
    text-align: center;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
}

.rk-pillar-btn:hover {
    border-color: var(--rk-proj-brand);
    background: var(--rk-proj-brand-light);
    transform: translateY(-3px);
}

.rk-pillar-btn.active {
    border-color: var(--rk-proj-brand);
    background: var(--rk-proj-brand);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(79, 70, 229, 0.4);
}

.rk-pillar-icon {
    width: 48px;
    height: 48px;
    background: var(--rk-proj-surface);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-proj-brand);
    transition: all 0.3s;
}
.rk-pillar-btn.active .rk-pillar-icon { background: rgba(255,255,255,0.2); color: #ffffff; }

.rk-pillar-title {
    font-size: 15px;
    font-weight: 800;
    line-height: 1.3;
    color: var(--rk-proj-dark);
    transition: color 0.3s;
}
.rk-pillar-btn.active .rk-pillar-title { color: #ffffff; }

/* Panele Zawartości */
.rk-pillar-content {
    display: none;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-proj-border);
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    animation: fadeScale 0.4s ease-out;
}
.rk-pillar-content.active { display: grid; grid-template-columns: 1fr 280px; gap: 30px; align-items: center; }

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

.rk-panel-text h4 { margin: 0 0 15px 0; font-size: 20px; font-weight: 900; color: var(--rk-proj-dark); }
.rk-panel-text p { margin: 0 0 20px 0; font-size: 15px; line-height: 1.7; color: var(--rk-proj-text); }

.rk-panel-highlight {
    background: var(--rk-proj-surface);
    padding: 15px;
    border-left: 4px solid var(--rk-proj-accent);
    border-radius: 0 8px 8px 0;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-proj-dark);
}

/* Wizualizacje SVG */
.rk-svg-stage {
    background: var(--rk-proj-dark);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 180px;
    box-shadow: inset 0 4px 20px rgba(0,0,0,0.5);
}

.rk-tech-svg { width: 100%; max-width: 200px; height: auto; }

/* Animacje SVG */
/* 1. OZC */
.anim-heat-loss { stroke-dasharray: 4; animation: flowOut 1.5s linear infinite; stroke: #ef4444; }
.anim-heat-gain { stroke-dasharray: 4; animation: flowIn 1.5s linear infinite; stroke: #10b981; }
@keyframes flowOut { to { stroke-dashoffset: -12; } }
@keyframes flowIn { to { stroke-dashoffset: 12; } }

/* 2. Rotametry */
.anim-float-1 { animation: balanceFloat1 2s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.anim-float-2 { animation: balanceFloat2 2s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.anim-float-3 { animation: balanceFloat3 2s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
@keyframes balanceFloat1 { from { transform: translateY(0); } to { transform: translateY(15px); } }
@keyframes balanceFloat2 { from { transform: translateY(30px); } to { transform: translateY(15px); } }
@keyframes balanceFloat3 { from { transform: translateY(10px); } to { transform: translateY(15px); } }

/* 3. Pompa */
.anim-pump-spin { transform-origin: center; animation: spinPump 2s linear infinite; }
@keyframes spinPump { to { transform: rotate(360deg); } }
.anim-pump-flow { stroke-dasharray: 10; animation: flowPump 1s linear infinite; stroke: var(--rk-proj-accent); }
@keyframes flowPump { to { stroke-dashoffset: -20; } }

/* --- MOCNE CTA --- */
.rk-proj-cta {
    background: linear-gradient(135deg, #eef2ff 0%, #ffffff 100%);
    padding: 45px 50px;
    text-align: center;
    border-top: 1px solid var(--rk-proj-brand-light);
}

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

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

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

.rk-btn-massive:hover {
    background: #4338ca;
    transform: translateY(-4px);
    box-shadow: 0 15px 35px -5px rgba(79, 70, 229, 0.5);
    border-color: #a5b4fc;
}

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

@media (max-width: 768px) {
    .rk-proj-header, .rk-proj-interactive, .rk-proj-cta { padding: 30px 20px; }
    .rk-proj-header h2, .rk-cta-title { font-size: 24px; }
    .rk-pillars-grid { grid-template-columns: 1fr; }
    .rk-pillar-content.active { grid-template-columns: 1fr; }
    .rk-svg-stage { min-height: 160px; order: -1; } /* SVG na górę na mobilce */
    .rk-btn-massive { width: 100%; font-size: 16px; padding: 18px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-projekt",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Jak kalkulator wpływa na projekt ogrzewania podłogowego?",
    "description": "Zrozum 3 inżynieryjne filary: bilans OZC, hydraulikę rozdzielacza i dobór pompy obiegowej. Zobacz, jak wyliczenia przekładają się na finalną dokumentację techniczną.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-projekt",
    "name": "Filary Projektowania Instalacji Ogrzewania Podłogowego",
    "description": "Klasyfikacja trzech głównych obszarów inżynieryjnych (OZC, Hydraulika, Pompy), które są definiowane przez wyniki kompleksowego kalkulatora.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego",
      "rzeczywisty bilans cieplny OZC",
      "hydraulika rozdzielacza i pętli",
      "dobór pompy obiegowej podłogówki",
      "dokumentacja techniczna instalacji"
    ],
    "measurementTechnique": "Synteza wyników obliczeniowych z norm PN-EN 12831 (OZC) oraz PN-EN 1264 do formy wykonawczej dokumentacji technicznej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Bilans Cieplny OZC: Precyzyjne zapotrzebowanie na energię dla każdego pomieszczenia.",
        "Hydraulika Pętli: Rozstaw rur co do centymetra i wartości nastaw rotametrów w l/min.",
        "Dobór Pompy: Wysokość podnoszenia oparta o sumaryczne opory najdłuższej pętli hydraulicznej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-projekt",
    "name": "Eksplorator Filarów Projektowych",
    "description": "Interaktywny schemat prezentujący wpływ wyliczeń kalkulatora na projekt techniczny OZC, hydraulikę i dobór pomp, wzbogacony o animacje wektorowe procesów fizycznych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-proj-container" id="rk-proj-app">
    
    <div class="rk-proj-header">
        <div class="rk-proj-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Dokumentacja Techniczna
        </div>
        <h2>Jak to wpływa na <span>projekt ogrzewania podłogowego?</span></h2>
        <p class="rk-proj-lead">
            Wszystkie wyliczenia realizowane przez kompleksowy kalkulator mają bezpośrednie przełożenie na finalną dokumentację techniczną. Poprawnie wykonany projekt ogrzewania podłogowego nie może opierać się na danych szacunkowych. Musi on bezwzględnie scalać trzy kluczowe filary inżynieryjne.
        </p>
    </div>

    <div class="rk-proj-interactive">
        <h3>3 Filary Inżynieryjne</h3>
        
        <div class="rk-pillars-grid">
            <button class="rk-pillar-btn active" data-target="p-ozc">
                <div class="rk-pillar-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                </div>
                <div class="rk-pillar-title">Bilans Cieplny (OZC)</div>
            </button>
            
            <button class="rk-pillar-btn" data-target="p-hyd">
                <div class="rk-pillar-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><line x1="4" y1="12" x2="20" y2="12"></line><line x1="12" y1="4" x2="12" y2="20"></line></svg>
                </div>
                <div class="rk-pillar-title">Hydraulika i Pętle</div>
            </button>

            <button class="rk-pillar-btn" data-target="p-pump">
                <div class="rk-pillar-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>
                </div>
                <div class="rk-pillar-title">Dobór Pompy</div>
            </button>
        </div>

        <div class="rk-pillar-content active" id="p-ozc">
            <div class="rk-panel-text">
                <h4>Rzeczywisty bilans cieplny OZC</h4>
                <p>Określa precyzyjne <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/" class="rk-proj-link-dark">zapotrzebowanie na energię</a> dla każdego pomieszczenia z osobna. Fundament, który eliminuje ryzyko niedogrzania łazienek czy skrajnych sypialni podczas mrozów.</p>
                <div class="rk-panel-highlight">
                    Wynik kalkulatora: Precyzyjny dobór mocy W/m² eliminuje szacunki &#8222;na oko&#8221;.
                </div>
            </div>
            <div class="rk-svg-stage">
                <svg class="rk-tech-svg" viewBox="0 0 100 100">
                    <rect x="20" y="20" width="60" height="60" fill="none" stroke="#64748b" stroke-width="4" rx="4"/>
                    <path class="anim-heat-loss" d="M 80 50 L 95 50" fill="none" stroke-width="3" stroke-linecap="round"/>
                    <path class="anim-heat-loss" d="M 50 20 L 50 5" fill="none" stroke-width="3" stroke-linecap="round"/>
                    <path class="anim-heat-gain" d="M 5 50 L 20 50" fill="none" stroke-width="4" stroke-linecap="round"/>
                    <path class="anim-heat-gain" d="M 50 95 L 50 80" fill="none" stroke-width="4" stroke-linecap="round"/>
                    <text x="50" y="55" font-size="16" font-weight="900" fill="#cbd5e1" text-anchor="middle">OZC</text>
                </svg>
            </div>
        </div>

        <div class="rk-pillar-content" id="p-hyd">
            <div class="rk-panel-text">
                <h4>Hydraulika rozdzielacza i pętli</h4>
                <p>Projekt definiuje dokładny rozstaw rur (co do centymetra), podział na równe obwody oraz wartości nastaw wstępnych (przepływów w l/min) na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/" class="rk-proj-link-dark">rotametrach</a>, co umożliwia prawidłowe <a href="https://projekt-ogrzewania.pl/regulacja-hydrauliczna-ogrzewania-podlogowego/" class="rk-proj-link-dark">zrównoważenie systemu</a>.</p>
                <div class="rk-panel-highlight">
                    Wynik kalkulatora: Stabilne przepływy i równomierne nagrzewanie podłogi.
                </div>
            </div>
            <div class="rk-svg-stage">
                <svg class="rk-tech-svg" viewBox="0 0 100 100">
                    <rect x="10" y="80" width="80" height="10" fill="#3b82f6" rx="2"/>
                    <rect x="20" y="20" width="10" height="60" fill="none" stroke="#64748b" stroke-width="2"/>
                    <rect class="anim-float-1" x="22" y="50" width="6" height="4" fill="#ef4444"/>
                    <rect x="45" y="20" width="10" height="60" fill="none" stroke="#64748b" stroke-width="2"/>
                    <rect class="anim-float-2" x="47" y="50" width="6" height="4" fill="#ef4444"/>
                    <rect x="70" y="20" width="10" height="60" fill="none" stroke="#64748b" stroke-width="2"/>
                    <rect class="anim-float-3" x="72" y="50" width="6" height="4" fill="#ef4444"/>
                    <line x1="15" y1="35" x2="85" y2="35" stroke="#10b981" stroke-width="2" stroke-dasharray="4"/>
                </svg>
            </div>
        </div>

        <div class="rk-pillar-content" id="p-pump">
            <div class="rk-panel-text">
                <h4>Dobór pompy obiegowej</h4>
                <p>Na podstawie zsumowanych oporów hydraulicznych najdłuższej pętli projektant przeprowadza <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/" class="rk-proj-link-dark">dobór pompy obiegowej</a>. Określamy dokładną wysokość podnoszenia, zapobiegając przeciążeniu lub niedomiarowi tłoczenia.</p>
                <div class="rk-panel-highlight">
                    Wynik kalkulatora: Brak &#8222;martwych&#8221;, zimnych stref z powodu słabej pompy.
                </div>
            </div>
            <div class="rk-svg-stage">
                <svg class="rk-tech-svg" viewBox="0 0 100 100">
                    <circle cx="30" cy="50" r="20" fill="none" stroke="#94a3b8" stroke-width="4"/>
                    <g class="anim-pump-spin" transform="translate(30, 50)">
                        <polygon points="-8,-8 10,0 -8,8" fill="#10b981"/>
                    </g>
                    <path class="anim-pump-flow" d="M 50 50 L 90 50" fill="none" stroke-width="6" stroke-linecap="round"/>
                    <path class="anim-pump-flow" d="M 90 50 Q 95 50 95 40 L 95 20" fill="none" stroke-width="4" stroke-linecap="round"/>
                </svg>
            </div>
        </div>

    </div>

    <div class="rk-proj-cta">
        <h3 class="rk-cta-title">Nie ryzykuj błędów na budowie</h3>
        <p class="rk-cta-desc">
            Skorzystaj z wiedzy ekspertów. Zamów kompleksowy, inżynieryjny projekt ogrzewania podłogowego, który zagwarantuje Ci optymalne zużycie materiałów, niskie rachunki za ogrzewanie i święty spokój na lata.
        </p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-massive">
            ZAMÓW PROFESJONALNY PROJEKT PODŁOGÓWKI
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg>
        </a>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-proj-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:24px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener informacyjny należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na nieautoryzowanej domenie jest zabronione prawem.
                </div>
            `;
            return;
        }
    }

    // Logika zakładek (Filary)
    const btns = document.querySelectorAll('.rk-pillar-btn');
    const contents = document.querySelectorAll('.rk-pillar-content');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            const targetId = this.getAttribute('data-target');
            
            // Reset
            btns.forEach(b => b.classList.remove('active'));
            contents.forEach(c => c.classList.remove('active'));
            
            // Aktywacja
            this.classList.add('active');
            const targetContent = document.getElementById(targetId);
            if(targetContent) {
                // Restart animacji SVG przez reflow
                targetContent.classList.remove('active');
                void targetContent.offsetWidth; 
                targetContent.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-calc-main-dark: #0f172a;
    --rk-calc-main-darker: #020617;
    --rk-calc-main-brand: #3b82f6; /* Hydronic Blue */
    --rk-calc-main-brand-light: #eff6ff;
    --rk-calc-main-accent: #10b981; /* Success Green */
    --rk-calc-main-danger: #ef4444; /* Error Red */
    --rk-calc-main-bg: #ffffff;
    --rk-calc-main-surface: #f8fafc;
    --rk-calc-main-border: #cbd5e1;
    --rk-calc-main-text: #334155;
    --rk-calc-main-muted: #64748b;
    --rk-calc-main-shadow: 0 20px 40px -10px rgba(59, 130, 246, 0.15);
}

.rk-calc-main-container {
    max-width: 1000px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-calc-main-bg);
    border-radius: 24px;
    box-shadow: var(--rk-calc-main-shadow);
    border: 1px solid var(--rk-calc-main-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-calc-main-header {
    background: linear-gradient(135deg, var(--rk-calc-main-darker) 0%, var(--rk-calc-main-dark) 100%);
    padding: 40px 50px;
    color: #ffffff;
    border-bottom: 5px solid var(--rk-calc-main-brand);
    text-align: center;
}

.rk-calc-main-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(59, 130, 246, 0.2);
    color: #93c5fd;
    padding: 6px 16px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 15px;
    border: 1px solid rgba(147, 197, 253, 0.3);
}

.rk-calc-main-title {
    font-size: 32px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 10px 0;
}

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

.rk-calc-main-desc {
    color: #cbd5e1;
    font-size: 15px;
    line-height: 1.6;
    margin: 0 auto;
    max-width: 700px;
}

/* --- SEKCJA GŁÓWNA --- */
.rk-calc-main-body {
    padding: 40px 50px;
    background: var(--rk-calc-main-surface);
}

/* Krok 1: Parametry Globalne */
.rk-calc-section-title {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-calc-main-dark);
    margin: 0 0 20px 0;
    display: flex;
    align-items: center;
    gap: 10px;
    border-bottom: 2px solid var(--rk-calc-main-border);
    padding-bottom: 10px;
}

.rk-calc-section-title svg { color: var(--rk-calc-main-brand); }

.rk-global-params {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 15px;
    margin-bottom: 40px;
}

.rk-input-group {
    background: #ffffff;
    padding: 15px;
    border-radius: 12px;
    border: 1px solid var(--rk-calc-main-border);
}

.rk-input-group label {
    display: block;
    font-size: 12px;
    font-weight: 800;
    color: var(--rk-calc-main-muted);
    text-transform: uppercase;
    margin-bottom: 8px;
}

.rk-input-group select, .rk-input-group input {
    width: 100%;
    padding: 10px;
    border: 1px solid var(--rk-calc-main-border);
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    color: var(--rk-calc-main-dark);
    background: var(--rk-calc-main-surface);
    transition: all 0.3s;
}

.rk-input-group select:focus, .rk-input-group input:focus {
    outline: none;
    border-color: var(--rk-calc-main-brand);
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}

/* Krok 2: Pomieszczenia */
.rk-rooms-container {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 20px;
    margin-bottom: 20px;
}

.rk-room-card {
    background: #ffffff;
    border: 1px solid var(--rk-calc-main-border);
    border-radius: 16px;
    padding: 20px;
    position: relative;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
    transition: all 0.3s ease;
    animation: roomPopIn 0.3s ease-out;
}

.rk-room-card:hover {
    border-color: var(--rk-calc-main-brand);
    box-shadow: 0 8px 16px rgba(59, 130, 246, 0.1);
}

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

.rk-room-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
    font-weight: 900;
    color: var(--rk-calc-main-dark);
}

.rk-room-delete {
    background: transparent;
    border: none;
    color: var(--rk-calc-main-danger);
    cursor: pointer;
    padding: 5px;
    border-radius: 6px;
    transition: background 0.2s;
}
.rk-room-delete:hover { background: #fef2f2; }

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

.rk-mini-input label {
    font-size: 11px;
    color: var(--rk-calc-main-muted);
    font-weight: 700;
    display: block;
    margin-bottom: 4px;
}
.rk-mini-input input {
    width: 100%;
    padding: 8px;
    border: 1px solid var(--rk-calc-main-border);
    border-radius: 6px;
    font-size: 14px;
    font-weight: 600;
    transition: border-color 0.3s;
}
.rk-mini-input input.error { border-color: var(--rk-calc-main-danger); background: #fef2f2; }

.rk-add-room-btn {
    width: 100%;
    padding: 15px;
    background: transparent;
    border: 2px dashed var(--rk-calc-main-border);
    border-radius: 16px;
    color: var(--rk-calc-main-muted);
    font-weight: 800;
    font-size: 14px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    transition: all 0.3s;
    margin-bottom: 40px;
}
.rk-add-room-btn:hover {
    border-color: var(--rk-calc-main-brand);
    color: var(--rk-calc-main-brand);
    background: var(--rk-calc-main-brand-light);
}

/* Krok 3: Oblicz */
.rk-calc-action-bar {
    display: flex;
    justify-content: center;
    margin-bottom: 40px;
}

.rk-calc-submit {
    background: var(--rk-calc-main-brand);
    color: #ffffff;
    font-size: 18px;
    font-weight: 900;
    padding: 20px 40px;
    border: none;
    border-radius: 16px;
    cursor: pointer;
    box-shadow: 0 10px 20px -5px rgba(59, 130, 246, 0.4);
    display: inline-flex;
    align-items: center;
    gap: 10px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-calc-submit:hover {
    transform: translateY(-3px);
    box-shadow: 0 15px 30px -5px rgba(59, 130, 246, 0.5);
    background: #2563eb;
}

.rk-calc-submit:active { transform: translateY(0); }

/* --- WYNIKI --- */
.rk-calc-results {
    display: none; /* Ukryte do kliknięcia */
    border-top: 2px solid var(--rk-calc-main-border);
    padding-top: 40px;
    animation: fadeInResult 0.5s ease-out;
}

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

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

.rk-res-card {
    background: #ffffff;
    border: 1px solid var(--rk-calc-main-border);
    border-radius: 16px;
    padding: 25px;
    position: relative;
    overflow: hidden;
}

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

.rk-res-card.c-blue::before { background: var(--rk-calc-main-brand); }
.rk-res-card.c-green::before { background: var(--rk-calc-main-accent); }
.rk-res-card.c-orange::before { background: #f59e0b; }

.rk-res-icon {
    margin-bottom: 15px;
    color: var(--rk-calc-main-dark);
}

.rk-res-label {
    font-size: 12px;
    font-weight: 800;
    color: var(--rk-calc-main-muted);
    text-transform: uppercase;
    margin-bottom: 5px;
}

.rk-res-value {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-calc-main-dark);
    margin-bottom: 10px;
}

.rk-res-value span { font-size: 16px; color: var(--rk-calc-main-muted); }

.rk-res-list {
    margin: 0; padding: 0; list-style: none;
    font-size: 13px; color: var(--rk-calc-main-text);
}
.rk-res-list li { margin-bottom: 4px; display: flex; justify-content: space-between; border-bottom: 1px dashed var(--rk-calc-main-border); padding-bottom: 4px; }
.rk-res-list li:last-child { border: none; margin: 0; padding: 0; }
.rk-res-list b { color: var(--rk-calc-main-dark); }

/* SVG Statusu Hydraulicznego */
.rk-res-status {
    background: var(--rk-calc-main-dark);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    align-items: center;
    gap: 30px;
    color: #ffffff;
    margin-bottom: 30px;
}

.rk-status-svg {
    width: 100px;
    height: 100px;
    flex-shrink: 0;
}

.rk-status-text h4 { margin: 0 0 10px 0; font-size: 20px; font-weight: 900; }
.rk-status-text p { margin: 0; font-size: 14px; color: #cbd5e1; line-height: 1.6; }
.rk-status-warn { color: var(--rk-calc-main-danger); }
.rk-status-ok { color: var(--rk-calc-main-accent); }

/* CTA Wynikowe */
.rk-res-cta {
    background: #eef2ff;
    border: 1px solid #c7d2fe;
    border-radius: 16px;
    padding: 25px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
}

.rk-res-cta p { margin: 0; font-size: 14px; color: #3730a3; line-height: 1.6; }
.rk-res-cta strong { font-weight: 900; color: #312e81; }

.rk-res-cta-btn {
    background: #4f46e5;
    color: #ffffff;
    padding: 12px 24px;
    border-radius: 10px;
    text-decoration: none;
    font-weight: 800;
    font-size: 14px;
    white-space: nowrap;
    transition: background 0.3s;
}
.rk-res-cta-btn:hover { background: #4338ca; }

@media (max-width: 768px) {
    .rk-calc-main-header, .rk-calc-main-body { padding: 30px 20px; }
    .rk-calc-main-title { font-size: 24px; }
    .rk-res-grid { grid-template-columns: 1fr; }
    .rk-res-status { flex-direction: column; text-align: center; }
    .rk-res-cta { flex-direction: column; text-align: center; }
}

/* Animacje wewnątrz SVG Wynikowego */
.anim-pump-impeller { transform-origin: center; animation: spinFast 1s linear infinite; }
@keyframes spinFast { to { transform: rotate(360deg); } }
.anim-flow-line { stroke-dasharray: 8; animation: flowHyd 1s linear infinite; }
@keyframes flowHyd { to { stroke-dashoffset: -16; } }
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-main-calc",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Kompleksowy Kalkulator Ogrzewania Podłogowego (Interaktywny)",
    "description": "Zaawansowane narzędzie inżynieryjne wyliczające długość rur, moc, rozstaw pętli oraz parametry pompy obiegowej na podstawie wprowadzonych danych pomieszczeń.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-calc-results",
    "name": "Wyniki Inżynierskich Obliczeń Ogrzewania Podłogowego",
    "description": "Dynamiczne wyliczenia parametrów fizycznych dla systemów płaszczyznowych, łączące zmienne izolacyjności, przepływu i strat ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator podłogówki online",
      "obliczanie pętli grzewczych",
      "dobór pompy do ogrzewania podłogowego",
      "średnica rury pex przepływ",
      "zapotrzebowanie na materiały podłogówka"
    ],
    "measurementTechnique": "Równania bilansu cieplnego i oporów hydraulicznych wg PN-EN 1264, z uwzględnieniem liczby Reynoldsa i modelu strat liniowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zestawienie całkowitej mocy (W) i długości rury (mb).",
        "Sugestie rozstawów rur względem zapotrzebowania cieplnego W/m2.",
        "Estymacja oporów hydraulicznych i wskazanie wymaganej wysokości podnoszenia pompy obiegowej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-main",
    "name": "Kompleksowy Kalkulator Ogrzewania Podłogowego PRO",
    "description": "Profesjonalna aplikacja webowa obliczająca wszystkie kluczowe parametry instalacji (pętle, rozstawy, hydraulika) na podstawie wprowadzonych danych pomieszczeń i warstw podłogi.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-main-container" id="rk-calc-main-app">
    
    <div class="rk-calc-main-header">
        <div class="rk-calc-main-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><rect x="9" y="9" width="6" height="6"></rect><line x1="9" y1="1" x2="9" y2="4"></line><line x1="15" y1="1" x2="15" y2="4"></line><line x1="9" y1="20" x2="9" y2="23"></line><line x1="15" y1="20" x2="15" y2="23"></line><line x1="20" y1="9" x2="23" y2="9"></line><line x1="20" y1="14" x2="23" y2="14"></line><line x1="1" y1="9" x2="4" y2="9"></line><line x1="1" y1="14" x2="4" y2="14"></line></svg>
            Narzędzie Obliczeniowe
        </div>
        <h2 class="rk-calc-main-title">Kompleksowy Kalkulator <span>Podłogówki</span></h2>
        <p class="rk-calc-main-desc">Wprowadź dane budynku oraz parametry poszczególnych pomieszczeń, aby wygenerować profesjonalne zestawienie materiałowe, rozstawy rur oraz wytyczne hydrauliczne dla pompy obiegowej.</p>
    </div>

    <div class="rk-calc-main-body">
        
        <div class="rk-calc-section-title">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>
            Krok 1: Parametry Globalne Konstrukcji
        </div>
        
        <div class="rk-global-params">
            <div class="rk-input-group">
                <label>Zasilanie (Tz)</label>
                <input type="number" id="rk-param-temp" value="35" min="25" max="50">
            </div>
            <div class="rk-input-group">
                <label>Okładzina podłogi</label>
                <select id="rk-param-floor">
                    <option value="1">Płytki / Gres</option>
                    <option value="0.85">Panele podłogowe</option>
                    <option value="0.75">Deska warstwowa</option>
                </select>
            </div>
            <div class="rk-input-group">
                <label>Rodzaj Wylewki</label>
                <select id="rk-param-screed">
                    <option value="1">Cementowa (Miksokret)</option>
                    <option value="1.13">Anhydrytowa (Płynna)</option>
                </select>
            </div>
            <div class="rk-input-group">
                <label>Izolacja Spodnia</label>
                <select id="rk-param-iso">
                    <option value="1">EPS 100 (Standard)</option>
                    <option value="1.05">EPS 200 (Twardy)</option>
                </select>
            </div>
            <div class="rk-input-group">
                <label>Rura Grzewcza</label>
                <select id="rk-param-pipe">
                    <option value="0.012">16&#215;2 (Wew. 12mm)</option>
                    <option value="0.013">17&#215;2 (Wew. 13mm)</option>
                    <option value="0.016">20&#215;2 (Wew. 16mm)</option>
                </select>
            </div>
        </div>

        <div class="rk-calc-section-title">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
            Krok 2: Bilans Pomieszczeń
        </div>

        <div class="rk-rooms-container" id="rk-rooms-wrapper">
            </div>

        <button class="rk-add-room-btn" id="rk-btn-add-room">
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
            Dodaj kolejne pomieszczenie
        </button>

        <div class="rk-calc-action-bar">
            <button class="rk-calc-submit" id="rk-btn-calculate">
                GENERUJ WYNIKI OBLICZEŃ
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 11 12 14 22 4"></polyline><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"></path></svg>
            </button>
        </div>

        <div class="rk-calc-results" id="rk-results-panel">
            
            <div class="rk-res-grid">
                
                <div class="rk-res-card c-blue">
                    <div class="rk-res-icon">
                        <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    </div>
                    <div class="rk-res-label">Całkowite Zapotrzebowanie</div>
                    <div class="rk-res-value" id="out-power">0 <span>W</span></div>
                    <ul class="rk-res-list">
                        <li>Ilość rury (zapas 10%): <b id="out-length">0 mb</b></li>
                        <li>Pojemność zładu: <b id="out-water">0 L</b></li>
                        <li>Całkowita powierzchnia: <b id="out-area">0 m²</b></li>
                    </ul>
                </div>

                <div class="rk-res-card c-green">
                    <div class="rk-res-icon">
                        <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                    </div>
                    <div class="rk-res-label">Rozdzielacz i Geometria</div>
                    <div class="rk-res-value" id="out-circuits">0 <span>sekcji</span></div>
                    <ul class="rk-res-list">
                        <li>Średni rozstaw rur: <b id="out-spacing-avg">0 cm</b></li>
                        <li>Sugerowane rozstawy: <b id="out-spacing-list">&#8211;</b></li>
                        <li>Limit długości pętli: <b>Zachowany</b></li>
                    </ul>
                </div>

                <div class="rk-res-card c-orange">
                    <div class="rk-res-icon">
                        <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                    </div>
                    <div class="rk-res-label">Wymogi Hydrauliczne</div>
                    <div class="rk-res-value" id="out-pump">Weryfikacja</div>
                    <ul class="rk-res-list">
                        <li>Przepływ sumaryczny: <b id="out-flow">0 m³/h</b></li>
                        <li>Opór najdłuższej pętli: <b id="out-pressure">0 kPa</b></li>
                        <li>Wys. podnoszenia: <b id="out-head">0 m</b></li>
                    </ul>
                </div>
            </div>

            <div class="rk-res-status">
                <div class="rk-status-svg">
                    <svg viewBox="0 0 100 100" style="width:100%;height:100%;">
                        <circle cx="50" cy="50" r="45" fill="none" stroke="#334155" stroke-width="6"></circle>
                        <circle cx="50" cy="50" r="30" fill="none" stroke="#475569" stroke-width="2"></circle>
                        <g class="anim-pump-impeller" transform="translate(50, 50)">
                            <path d="M 0 -25 L 10 0 L 0 25 L -10 0 Z" fill="#10b981" id="svg-impeller-color"></path>
                            <circle cx="0" cy="0" r="5" fill="#f8fafc"></circle>
                        </g>
                        <path class="anim-flow-line" d="M 15 80 Q 50 110 85 80" fill="none" stroke="#3b82f6" stroke-width="4" stroke-linecap="round"></path>
                    </svg>
                </div>
                <div class="rk-status-text">
                    <h4 id="out-status-title">Analiza w toku&#8230;</h4>
                    <p id="out-status-desc">&#8211;</p>
                </div>
            </div>

            <div class="rk-res-cta">
                <div>
                    <strong>Zastrzeżenie inżynierskie:</strong>
                    <p>Wyniki mają charakter poglądowy do szacowania kosztów. Błędy hydrauliczne kosztują krocie. Do realizacji niezbędny jest projekt wykonawczy uwzględniający opory miejscowe armatury i pełne badanie OZC.</p>
                </div>
                <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-res-cta-btn">ZAMÓW PROJEKT</a>
            </div>

        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-calc-main-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:24px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:40px; margin-bottom:15px;">🛑</div>
                    BŁĄD LICENCJI:<br>Główny silnik kalkulatora jest własnością Projekt-Ogrzewania.pl. Próba kradzieży kodu zatrzymana.
                </div>
            `;
            return;
        }
    }

    // --- LOGIKA KALKULATORA ---
    let rooms = [];
    const wrapper = document.getElementById('rk-rooms-wrapper');
    const btnAdd = document.getElementById('rk-btn-add-room');
    const btnCalc = document.getElementById('rk-btn-calculate');
    const resultsPanel = document.getElementById('rk-results-panel');

    function createRoomHTML(index) {
        return `
        <div class="rk-room-card" id="rk-room-${index}">
            <div class="rk-room-header">
                Pomieszczenie ${index + 1}
                <button class="rk-room-delete" onclick="rkRemoveRoom(${index})" title="Usuń">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="3 6 5 6 21 6"></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path></svg>
                </button>
            </div>
            <div class="rk-room-inputs">
                <div class="rk-mini-input">
                    <label>Powierzchnia (m²)</label>
                    <input type="number" id="rk-area-${index}" value="15" min="1" step="0.5" oninput="rkValidate(this)">
                </div>
                <div class="rk-mini-input">
                    <label>Straty (W/m²)</label>
                    <input type="number" id="rk-loss-${index}" value="50" min="10" step="5" oninput="rkValidate(this)">
                </div>
            </div>
        </div>`;
    }

    function renderRooms() {
        wrapper.innerHTML = '';
        rooms.forEach((r, idx) => {
            wrapper.innerHTML += createRoomHTML(idx);
            // Odtworzenie wartości po re-renderze
            setTimeout(() => {
                const aInput = document.getElementById(`rk-area-${idx}`);
                const lInput = document.getElementById(`rk-loss-${idx}`);
                if(aInput) aInput.value = r.area;
                if(lInput) lInput.value = r.loss;
            }, 0);
        });
    }

    window.rkAddRoom = function() {
        rooms.push({ area: 15, loss: 50 });
        renderRooms();
    }

    window.rkRemoveRoom = function(index) {
        // Zapisz obecne wartości przed usunięciem
        saveRoomStates();
        rooms.splice(index, 1);
        renderRooms();
    }

    function saveRoomStates() {
        rooms.forEach((r, idx) => {
            const aInput = document.getElementById(`rk-area-${idx}`);
            const lInput = document.getElementById(`rk-loss-${idx}`);
            if(aInput) r.area = parseFloat(aInput.value) || 0;
            if(lInput) r.loss = parseFloat(lInput.value) || 0;
        });
    }

    window.rkValidate = function(input) {
        let val = parseFloat(input.value);
        if(isNaN(val) || val <= 0) { input.classList.add('error'); } 
        else { input.classList.remove('error'); }
    }

    // Inicjalizacja z 2 pomieszczeniami
    rkAddRoom(); rkAddRoom();

    btnAdd.addEventListener('click', () => {
        saveRoomStates();
        rkAddRoom();
    });

    // Główna funkcja licząca (bazująca na logice ze wzorów inżynieryjnych)
    btnCalc.addEventListener('click', () => {
        saveRoomStates();

        const T = parseFloat(document.getElementById('rk-param-temp').value);
        const fF = parseFloat(document.getElementById('rk-param-floor').value);
        const sF = parseFloat(document.getElementById('rk-param-screed').value);
        const iF = parseFloat(document.getElementById('rk-param-iso').value);
        const D = parseFloat(document.getElementById('rk-param-pipe').value); // średnica wewnętrzna w [m]

        // Stałe fizyczne dla wody 35 st C
        const rho = 994; // gęstość kg/m3
        const mu = 0.00072; // lepkość dynamiczna
        const g = 9.81;

        let totalPower = 0;
        let totalArea = 0;
        let totalLength = 0;
        let totalCircuits = 0;
        let totalFlowM3H = 0;
        let maxHeadM = 0;
        let maxPressureKpa = 0;
        let spacings = [];

        let isValid = true;

        rooms.forEach(r => {
            if(r.area <= 0 || r.loss <= 0) isValid = false;
            
            // 1. Zapotrzebowanie W
            let power = r.area * r.loss;
            totalPower += power;
            totalArea += r.area;

            // 2. Szacowanie rozstawu bazując na stratach i okładzinie (Uproszczona logika PN-EN)
            // Baza dla 35 stC, płytki, jastrych cement, styro 100
            let baseProfile = { 10: 75, 15: 55, 20: 40, 25: 30 }; 
            let spacing = 10; // Domyślnie najgęściej dla pewności
            
            // Skalowanie wydajności podłogi parametrami
            for (let sp of [25, 20, 15, 10]) {
                // Skorygowana moc dla danego rozstawu
                let q_max = baseProfile[sp] * (T/35) * fF * sF * iF;
                if(q_max >= r.loss) {
                    spacing = sp; // Znaleziono optymalny, szerszy rozstaw
                    break;
                }
            }
            spacings.push(spacing);

            // 3. Długość rury (z zapasem 10% wg wytycznych)
            let spacingM = spacing / 100;
            let roomLen = (r.area / spacingM) * 1.1; 
            totalLength += roomLen;

            // 4. Pętle (limit 100m dla bezpieczeństwa hydraulicznego PEX 16)
            let circuits = Math.ceil(roomLen / 100);
            totalCircuits += circuits;

            // 5. Hydraulika (Przepływ masowy kg/h na m3/h). Założenie deltaT = 5K
            // m = Q / (cw * dT)
            let flow_kgh = power / (1.163 * 5); // uproszczenie
            let flow_m3h = flow_kgh / 1000;
            totalFlowM3H += flow_m3h;

            // Prędkość w pojedynczej pętli i opory tarcia (Darcy-Weisbach uproszczony)
            let flow_circuit_m3s = (flow_m3h / 3600) / circuits;
            let A_pipe = Math.PI * Math.pow(D/2, 2);
            let v = flow_circuit_m3s / A_pipe;
            
            // Re i Lambda
            let Re = (rho * v * D) / mu;
            let lambda = 0.3164 * Math.pow(Re, -0.25); // Blasius
            
            // Delta P = lambda * (L/D) * (rho*v^2 / 2)
            let len_circuit = roomLen / circuits;
            let dp = lambda * (len_circuit/D) * (rho * Math.pow(v, 2) / 2);
            // Dodajemy 20% na opory miejscowe (rozdzielacz)
            dp = dp * 1.2; 
            
            let head = dp / (rho * g);
            
            if(head > maxHeadM) maxHeadM = head;
            if(dp > maxPressureKpa) maxPressureKpa = dp;
        });

        if(!isValid || rooms.length === 0) {
            alert("Uzupełnij poprawnie wszystkie pola pomieszczeń (wartości > 0).");
            return;
        }

        // --- Aktualizacja widoku ---
        
        // Karta 1
        document.getElementById('out-power').innerHTML = totalPower.toFixed(0) + ' <span>W</span>';
        document.getElementById('out-length').textContent = totalLength.toFixed(0) + ' mb';
        // Pojemność wody 0.113 l/m dla 16mm (uproszczone zład całk)
        document.getElementById('out-water').textContent = (totalLength * 0.113).toFixed(1) + ' L';
        document.getElementById('out-area').textContent = totalArea.toFixed(1) + ' m²';

        // Karta 2
        document.getElementById('out-circuits').innerHTML = totalCircuits + ' <span>sekcji</span>';
        let uniqueSp = [...new Set(spacings)].sort((a,b) => a-b);
        let avgSp = (spacings.reduce((a,b) => a+b, 0) / spacings.length).toFixed(1);
        document.getElementById('out-spacing-avg').textContent = avgSp + ' cm';
        document.getElementById('out-spacing-list').textContent = uniqueSp.join(', ') + ' cm';

        // Karta 3
        let maxKpa = (maxPressureKpa / 1000).toFixed(1);
        document.getElementById('out-flow').textContent = totalFlowM3H.toFixed(2) + ' m³/h';
        document.getElementById('out-pressure').textContent = maxKpa + ' kPa';
        document.getElementById('out-head').textContent = maxHeadM.toFixed(1) + ' m';

        let pumpText = "Pompa 25-40";
        if(maxHeadM > 3.5) pumpText = "Pompa 25-60";
        if(maxHeadM > 5.5) pumpText = "Pompa 25-80";
        document.getElementById('out-pump').innerHTML = pumpText;

        // Status hydrauliczny do animacji i ostrzeżeń
        let stTitle = document.getElementById('out-status-title');
        let stDesc = document.getElementById('out-status-desc');
        let stColor = document.getElementById('svg-impeller-color');

        if(maxKpa > 25 || totalFlowM3H > 2.5) {
            stTitle.textContent = "Ryzyko Przeciążenia!";
            stTitle.className = "rk-status-warn";
            stDesc.textContent = "Obliczone opory hydrauliczne są bardzo wysokie. Parametr T zasilania jest prawdopodobnie zbyt niski do pokrycia strat przez wybraną podłogę. Pompa obiegowa może nie zapewnić wymaganego przepływu na instalacji.";
            stColor.setAttribute('fill', '#ef4444');
        } else {
            stTitle.textContent = "Instalacja Stabilna";
            stTitle.className = "rk-status-ok";
            stDesc.textContent = "Wartości oporów i przepływów mieszczą się w normach inżynieryjnych. Dobór standardowej pompy obiegowej zabezpieczy równomierne nagrzewanie podłogi.";
            stColor.setAttribute('fill', '#10b981');
        }

        resultsPanel.style.display = 'block';
        
        // Płynne przewinięcie do wyników
        setTimeout(() => {
            resultsPanel.scrollIntoView({ behavior: 'smooth', block: 'start' });
        }, 100);
    });

});
</script>



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



<style>
:root {
    --rk-cs-primary: #0f172a;
    --rk-cs-accent: #2563eb;
    --rk-cs-before: #ef4444; /* Czerwony - błędy */
    --rk-cs-before-bg: #fef2f2;
    --rk-cs-after: #10b981; /* Zielony - optymalizacja */
    --rk-cs-after-bg: #ecfdf5;
    --rk-cs-bg: #f8fafc;
    --rk-cs-border: #e2e8f0;
    --rk-cs-text: #475569;
}

.case-study-module {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--rk-cs-border);
    overflow: hidden;
}

/* ================= HEADER I METRYCZKA ================= */
.cs-header-wrapper {
    background: var(--rk-cs-primary);
    color: #ffffff;
    padding: 40px 50px;
    position: relative;
    overflow: hidden;
}

.cs-header-wrapper::after {
    content: '';
    position: absolute;
    top: -50px;
    right: -50px;
    width: 250px;
    height: 250px;
    background: radial-gradient(circle, rgba(37, 99, 235, 0.3) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
}

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

.cs-header-wrapper h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 25px 0;
    line-height: 1.3;
    color: #ffffff;
    position: relative;
    z-index: 2;
}

.cs-stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
    position: relative;
    z-index: 2;
}

.cs-stat-box {
    background: rgba(0, 0, 0, 0.2);
    border: 1px solid rgba(255, 255, 255, 0.1);
    padding: 15px;
    border-radius: 12px;
}

.cs-stat-label {
    display: block;
    font-size: 11px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 700;
    margin-bottom: 5px;
}

.cs-stat-value {
    display: block;
    font-size: 16px;
    font-weight: 900;
    color: #ffffff;
}

/* ================= OPIS WYZWANIA ================= */
.cs-content-section {
    padding: 40px 50px 30px 50px;
    background: #ffffff;
}

.cs-lead-text {
    font-size: 16px;
    line-height: 1.8;
    color: var(--rk-cs-text);
    margin: 0 0 20px 0;
}

.cs-lead-text strong {
    color: var(--rk-cs-primary);
}

.cs-author-box {
    background: #f0f9ff;
    border-left: 4px solid var(--rk-cs-accent);
    padding: 15px 20px;
    border-radius: 0 12px 12px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 10px;
}

.cs-author-photo {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid #ffffff;
    box-shadow: 0 4px 10px rgba(37, 99, 235, 0.2);
    flex-shrink: 0;
}

.cs-author-box p {
    margin: 0;
    font-size: 14px;
    color: #1e3a8a;
    line-height: 1.6;
}

.cs-author-box a {
    color: var(--rk-cs-accent);
    font-weight: 800;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
}

.cs-author-box a:hover {
    color: #1e3a8a;
}

/* ================= WYZWANIE (SPLIT CARDS - STATYCZNE) ================= */
.cs-interactive-section {
    padding: 0 50px 40px 50px;
}

.cs-split-container {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.cs-split-card {
    border-radius: 16px;
    padding: 25px;
    border: 2px solid;
    position: relative;
    overflow: hidden;
}

/* Karta Błędu (Czerwona) */
.cs-split-card.before {
    border-color: var(--rk-cs-before);
    background: var(--rk-cs-before-bg);
    box-shadow: 0 10px 25px rgba(239, 68, 68, 0.1);
}

/* Karta Poprawna (Zielona) */
.cs-split-card.after {
    border-color: var(--rk-cs-after);
    background: var(--rk-cs-after-bg);
    box-shadow: 0 10px 25px rgba(16, 185, 129, 0.1);
}

.cs-card-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 15px;
}

.cs-card-icon {
    font-size: 28px;
}

.cs-card-title {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-cs-primary);
    margin: 0;
}

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

/* Sekcje na długi ogon */
.cs-seo-details {
    margin-top: 15px;
    padding: 15px;
    background: rgba(255,255,255,0.7);
    border-radius: 8px;
    border-left: 3px solid;
}

.cs-split-card.before .cs-seo-details { border-left-color: var(--rk-cs-before); }
.cs-split-card.after .cs-seo-details { border-left-color: var(--rk-cs-after); }

.cs-seo-details h4 {
    margin: 0 0 8px 0;
    font-size: 14px;
    color: var(--rk-cs-primary);
}

.cs-seo-details ul {
    margin: 0;
    padding-left: 20px;
    font-size: 13px;
    color: var(--rk-cs-text);
    line-height: 1.5;
}

.cs-seo-details li { margin-bottom: 4px; }
.cs-seo-details li:last-child { margin-bottom: 0; }
.cs-seo-details strong { color: var(--rk-cs-primary); }

/* Statyczne grafiki SVG */
.cs-static-svg-box {
    margin-top: 20px;
    padding: 15px;
    background: #ffffff;
    border-radius: 8px;
    border: 1px dashed var(--rk-cs-border);
}

.cs-svg-graphic {
    width: 100%;
    height: 100px;
}

/* Rozwiązanie tekstowe */
.cs-card-solution {
    margin-top: 15px;
    padding-top: 15px;
    border-top: 1px dashed rgba(0,0,0,0.1);
    font-size: 13px;
    font-weight: 700;
}

.cs-split-card.before .cs-card-solution { color: #991b1b; }
.cs-split-card.after .cs-card-solution { color: #065f46; }

@media (max-width: 768px) {
    .cs-header-wrapper { padding: 35px 25px; }
    .cs-stats-grid { grid-template-columns: 1fr 1fr; }
    .cs-content-section { padding: 30px 25px 20px 25px; }
    .cs-interactive-section { padding: 0 25px 30px 25px; }
    .cs-split-container { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Analiza rzeczywistego projektu: Dom 165 m² w Krośnie",
    "description": "Case study audytu instalacji ogrzewania podłogowego. Optymalizacja rozstawu rur przy oknach tarasowych HS, podniesienie SCOP pompy ciepła z 3,2 do 4,15 i oszczędności 1450 PLN rocznie.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-krosno",
    "name": "Parametry OZC i hydrauliki przed i po optymalizacji (Krosno 165m2)",
    "description": "Zestawienie parametrów błędnego układu rur i zoptymalizowanej strefy brzegowej przy wielkogabarytowych przeszkleniach HS.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego Krosno",
      "rozstaw rur przy oknie tarasowym HS",
      "temperatura zasilania pompy ciepła 35 stopni",
      "optymalizacja długości pętli podłogówki",
      "wskaźnik SCOP pompy ciepła"
    ],
    "measurementTechnique": "Weryfikacja strat ciepła 85 W/m2 przy oknie HS i korekta rozstawu rur z 15 cm na 10 cm.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Projekt pierwotny: Rozstaw 15 cm, zasilanie 45°C, SCOP 3,2, najdłuższa pętla 138 m.",
        "Projekt zoptymalizowany: Rozstaw 10 cm przy oknie (strefa 1m), zasilanie 35°C, SCOP 4,15.",
        "Efekt ekonomiczny: Oszczędność 1450 PLN rocznie na energii elektrycznej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-casestudy",
    "name": "Eksplorator Błędów Projektowych HVAC",
    "description": "Moduł porównawczy prezentujący inżynierskie różnice pomiędzy wykonawstwem amatorskim a rzetelnym projektem OZC w kontekście stref przyokiennych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="case-study-module" id="app-case-study">

    <div class="cs-header-wrapper">
        <div class="cs-badge">Case Study – Audyt Projektu</div>
        <h2>Analiza rzeczywistego projektu instalacji</h2>
        <div class="cs-stats-grid">
            <div class="cs-stat-box">
                <span class="cs-stat-label">Data audytu</span>
                <span class="cs-stat-value">Marzec 2026</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Lokalizacja</span>
                <span class="cs-stat-value">Okolice Krosna</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Pow. domu</span>
                <span class="cs-stat-value">165 m²</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Oszczędności</span>
                <span class="cs-stat-value">1450 PLN / rok</span>
            </div>
        </div>
    </div>

    <div class="cs-content-section">
        <p class="cs-lead-text">
            Podczas weryfikacji dokumentacji technicznej dla inwestora budującego dom w województwie podkarpackim, natrafiliśmy na poważny błąd wykonawczy. Pierwotny instalator zaplanował ułożenie rur w uniwersalnym rozstawie 15 cm na całej powierzchni budynku. Zignorował fakt, że w salonie znajduje się <strong>wielkogabarytowe okno przesuwne HS o szerokości 5,5 metra</strong>.
        </p>
        
        <div class="cs-author-box">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="cs-author-photo" loading="lazy">
            <p>Audyt przeprowadził CEO portalu  <a href="https://projekt-ogrzewania.pl/">Robert Kucharski</a>. Wprowadzenie danych do autorskiego oprogramowania wykazało, że strefa przyokienna generuje straty ciepła na poziomie 85 W/m².</p>
        </div>
    </div>

    <div class="cs-interactive-section">
        <div class="cs-split-container">
            
            <div class="cs-split-card before">
                <div class="cs-card-header">
                    <span class="cs-card-icon">❌</span>
                    <h3 class="cs-card-title">Pierwotny pomysł wykonawcy</h3>
                </div>
                <p class="cs-card-desc">Rury ułożone rzadko (15 cm) pod oknem HS. Aby pokryć straty 85 W/m², instalator musiał podnieść temperaturę zasilania pompy do 45°C. Dodatkowo jedna pętla miała aż 138 metrów.</p>
                
                <div class="cs-seo-details">
                    <h4>Skutki inżynieryjne błędu:</h4>
                    <ul>
                        <li>Opór hydrauliczny pętli przekroczył <strong>25 kPa</strong>.</li>
                        <li>Spadek przepływu na rotametrze <strong>poniżej 0,5 l/min</strong>.</li>
                        <li>Wymuszenie podbicia krzywej grzewczej <strong>do 45/40°C</strong>.</li>
                    </ul>
                </div>

                <div class="cs-static-svg-box">
                    <svg class="cs-svg-graphic" viewBox="0 0 200 100">
                        <rect x="20" y="10" width="160" height="10" fill="#94a3b8"/>
                        <line x1="20" y1="15" x2="180" y2="15" stroke="#ffffff" stroke-width="2"/>
                        <circle cx="50" cy="50" r="6" fill="#ef4444"/>
                        <circle cx="100" cy="50" r="6" fill="#ef4444"/>
                        <circle cx="150" cy="50" r="6" fill="#ef4444"/>
                        <text x="100" y="85" font-size="12" font-weight="bold" fill="#ef4444" text-anchor="middle">Zasilanie: 45°C | SCOP: 3.2</text>
                    </svg>
                </div>

                <div class="cs-card-solution">
                    Efekt: Drastyczny spadek sprawności pompy (SCOP 3.2), wysokie opory hydrauliczne pętli 138m i chłód bijący od strony szyb w zimie.
                </div>
            </div>

            <div class="cs-split-card after">
                <div class="cs-card-header">
                    <span class="cs-card-icon">✅</span>
                    <h3 class="cs-card-title">Inżynierska optymalizacja</h3>
                </div>
                <p class="cs-card-desc">Skróciliśmy skrajną pętlę do bezpiecznych 92 m i zagęściliśmy rury do 10 cm w pasie o szerokości 1 metra (strefa brzegowa pod oknem). Reszta salonu co 15 cm.</p>
                
                <div class="cs-seo-details">
                    <h4>Korekta projektowa przyniosła:</h4>
                    <ul>
                        <li>Redukcję oporów hydraulicznych <strong>poniżej 15 kPa</strong>.</li>
                        <li>Prawidłowe zrównoważenie sekcji na <strong>1,8 l/min</strong>.</li>
                        <li>Obniżenie krzywej grzewczej dla PC <strong>do 35/30°C</strong>.</li>
                    </ul>
                </div>

                <div class="cs-static-svg-box">
                    <svg class="cs-svg-graphic" viewBox="0 0 200 100">
                        <rect x="20" y="10" width="160" height="10" fill="#94a3b8"/>
                        <line x1="20" y1="15" x2="180" y2="15" stroke="#ffffff" stroke-width="2"/>
                        <circle cx="40" cy="40" r="6" fill="#10b981"/>
                        <circle cx="70" cy="40" r="6" fill="#10b981"/>
                        <circle cx="100" cy="40" r="6" fill="#10b981"/>
                        <circle cx="145" cy="50" r="6" fill="#10b981"/>
                        <text x="100" y="85" font-size="12" font-weight="bold" fill="#10b981" text-anchor="middle">Zasilanie: 35°C | SCOP: 4.15</text>
                    </svg>
                </div>

                <div class="cs-card-solution">
                    Efekt: Obniżenie zasilania do 35°C, wzrost SCOP do 4.15 i realna oszczędność 1450 PLN każdego roku. Równomierny rozkład ciepła.
                </div>
            </div>

        </div>
    </div>

</div>

<script>
(function() {
    const initCaseStudy = () => {
        // Zabezpieczenie domenowe (Skrypt nie usuwa już interakcji z kart, służy tylko do blokady)
        const domain = window.location.hostname;
        const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
        
        if (!allowedDomains.includes(domain)) {
            const container = document.getElementById('app-case-study');
            if (container) {
                container.innerHTML = `
                    <div style="padding: 40px 25px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px; border: 2px solid #ef4444;">
                        <span style="font-size: 40px; display: block; margin-bottom: 10px;">🔒</span>
                        <h3 style="margin: 0 0 10px 0; font-size: 20px;">Studium Przypadku Chronione</h3>
                        <p style="font-size: 14px; margin-bottom: 15px;">Ten panel to autorska własność Projekt-Ogrzewania.pl. Użycie nieautoryzowane.</p>
                    </div>
                `;
            }
        }
    };

    // Zabezpieczenie przed przedwczesnym odpaleniem skryptu
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', initCaseStudy);
    } else {
        initCaseStudy();
    }
})();
</script>



<style>
:root {
    --rk-quote-dark: #0f172a;
    --rk-quote-darker: #020617;
    --rk-quote-primary: #3b82f6; /* Hydronic Blue */
    --rk-quote-accent: #10b981; /* Emerald/Green for success */
    --rk-quote-warning: #f59e0b; /* Amber */
    --rk-quote-danger: #ef4444; /* Red */
    --rk-quote-bg: #ffffff;
    --rk-quote-surface: #f8fafc;
    --rk-quote-border: #cbd5e1;
    --rk-quote-text: #334155;
    --rk-quote-muted: #64748b;
    --rk-quote-shadow: 0 20px 40px -10px rgba(59, 130, 246, 0.15);
}

.rk-quote-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-quote-bg);
    border-radius: 24px;
    box-shadow: var(--rk-quote-shadow);
    border: 1px solid var(--rk-quote-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK I CYTAT --- */
.rk-quote-header {
    background: linear-gradient(135deg, var(--rk-quote-darker) 0%, var(--rk-quote-dark) 100%);
    padding: 50px 50px 40px;
    position: relative;
    border-bottom: 4px solid var(--rk-quote-primary);
    text-align: center;
}

.rk-quote-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(59, 130, 246, 0.2);
    color: #93c5fd;
    padding: 6px 16px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 25px;
    border: 1px solid rgba(147, 197, 253, 0.3);
}

.rk-quote-box {
    position: relative;
    max-width: 800px;
    margin: 0 auto;
}

.rk-quote-mark {
    font-size: 100px;
    color: rgba(255,255,255,0.05);
    position: absolute;
    top: -40px;
    left: -30px;
    line-height: 1;
    font-family: Georgia, serif;
    user-select: none;
}

.rk-quote-text {
    font-size: 24px;
    font-weight: 900;
    line-height: 1.5;
    color: #ffffff;
    margin: 0 0 20px 0;
    position: relative;
    z-index: 2;
}

.rk-quote-text span {
    color: #93c5fd;
}

/* --- INTERAKTYWNE PODSUMOWANIE --- */
.rk-quote-body {
    display: grid;
    grid-template-columns: 320px 1fr;
    background: #ffffff;
}

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

.rk-rule-btn {
    background: #ffffff;
    border: 2px solid var(--rk-quote-border);
    padding: 15px;
    border-radius: 12px;
    text-align: left;
    cursor: pointer;
    transition: all 0.2s ease;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-rule-btn:hover {
    border-color: #94a3b8;
}

.rk-rule-btn.active {
    background: #eff6ff;
    border-color: var(--rk-quote-primary);
    box-shadow: 0 4px 10px rgba(59, 130, 246, 0.1);
}

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

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

.rk-rule-text h3 {
    margin: 0 0 4px 0;
    font-size: 14px;
    font-weight: 900;
    color: var(--rk-quote-dark);
}

.rk-rule-text p {
    margin: 0;
    font-size: 12px;
    color: var(--rk-quote-text);
    font-weight: 600;
}

/* Panele Detali */
.rk-rule-details {
    padding: 40px;
    position: relative;
}

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

.rk-detail-panel.active {
    display: flex;
    flex-direction: column;
    gap: 20px;
    animation: rkFadeIn 0.3s ease-out;
}

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

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

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

.rk-detail-panel strong { color: var(--rk-quote-dark); }

.rk-detail-svg-box {
    width: 100%;
    height: 180px;
    background: var(--rk-quote-dark);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
}

.rk-detail-svg { width: 100%; max-width: 250px; height: auto; }

/* --- AUTOR --- */
.rk-quote-author {
    background: #ffffff;
    padding: 30px 50px;
    display: flex;
    align-items: center;
    gap: 25px;
    border-top: 1px solid var(--rk-quote-border);
}

.rk-author-photo {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    border: 3px solid var(--rk-quote-primary);
    box-shadow: 0 4px 15px rgba(59, 130, 246, 0.2);
    object-fit: cover;
    flex-shrink: 0;
}

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

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

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

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

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

@media (max-width: 768px) {
    .rk-quote-header { padding: 40px 25px; }
    .rk-quote-text { font-size: 20px; }
    .rk-quote-body { grid-template-columns: 1fr; }
    .rk-rules-list { border-right: none; border-bottom: 1px solid var(--rk-quote-border); padding: 25px; }
    .rk-rule-details { padding: 25px; }
    .rk-quote-author { flex-direction: column; text-align: center; padding: 30px 25px; }
    .rk-author-links { justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-quote",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Ostateczne podsumowanie: Dlaczego kompleksowy kalkulator podłogówki to konieczność?",
    "description": "Podsumowanie eksperckie dotyczące projektowania ogrzewania podłogowego. Wpływ normy PN-EN 1264, rozstawu rur, i grubości wylewki na efektywność pomp ciepła i koszty instalacji.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-summary",
    "name": "Kluczowe Parametry i Limity Ogrzewania Podłogowego (Baza Wiedzy)",
    "description": "Zestawienie twardych norm inżynieryjnych podsumowujących artykuł o projektowaniu podłogówki.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kompleksowy kalkulator ogrzewania podłogowego",
      "projektowe obciążenie cieplne OZC",
      "rozstaw rur ogrzewania podłogowego",
      "przepływy na rotametrach",
      "długość pętli PEX"
    ],
    "measurementTechnique": "Synteza wniosków z normy PN-EN 1264, uwzględniająca przepływy, średnice i izolacyjność termiczną.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Maksymalna długość pętli PEX 16x2.0 mm wynosi 120 mb.",
        "Grubość wylewki cementowej to min. 45 mm nad rurą, izolacja EPS 100/200.",
        "Rozstaw rur pod pompę ciepła wynosi średnio 10-15 cm, aby uzyskać zasilanie 35°C."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-quote",
    "name": "Eksplorator Wniosków Projektowych",
    "description": "Interaktywny panel prezentujący 3 złote zasady inżynieryjne instalacji podłogowej, wzbogacony o schematy wektorowe.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-quote-container" id="rk-quote-app">
    
    <div class="rk-quote-header">
        <div class="rk-quote-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            Podsumowanie Eksperta
        </div>
        
        <div class="rk-quote-box">
            <div class="rk-quote-mark">&#8222;</div>
            <h2 class="rk-quote-text">
                Ogrzewanie podłogowe to nie jest zgadywanka. To czysta matematyka i fizyka budowli. Bez <span>kompleksowego kalkulatora</span> i obliczeń OZC ryzykujesz nie tylko tysiące złotych na etapie wykonawstwa, ale przede wszystkim komfort swojej rodziny przez kolejne dekady.
            </h2>
        </div>
    </div>

    <div class="rk-quote-body">
        
        <div class="rk-rules-list">
            <button class="rk-rule-btn active" data-target="rk-tab-ozc">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><path d="M12 8v4l3 3"></path></svg></div>
                <div class="rk-rule-text">
                    <h3>1. Bilans to Fundament</h3>
                    <p>Straty ciepła vs Zasilanie</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-target="rk-tab-loop">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M21.5 2v6h-6M21.34 15.57a10 10 0 1 1-.57-8.38l5.67-5.67"></path></svg></div>
                <div class="rk-rule-text">
                    <h3>2. Limity Hydrauliczne</h3>
                    <p>Max 120 m dla rury PEX 16</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-target="rk-tab-iso">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg></div>
                <div class="rk-rule-text">
                    <h3>3. Konstrukcja Płyty</h3>
                    <p>EPS 100 i Grubość Wylewki</p>
                </div>
            </button>
        </div>

        <div class="rk-rule-details">
            
            <div class="rk-detail-panel active" id="rk-tab-ozc">
                <h4>Projektowe Obciążenie Cieplne</h4>
                <p>Każdy budynek oddaje ciepło inaczej. <strong>Kompleksowy kalkulator ogrzewania podłogowego</strong> przetwarza parametry OZC, dobierając idealny <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" style="color:var(--rk-quote-primary);font-weight:bold;">rozstaw rur</a> (np. 10 cm przy oknach, 15 cm w salonie). Dzięki temu pompa ciepła może pracować na ekstremalnie niskim i tanim zasilaniu rzędu 35°C.</p>
                
                <div class="rk-detail-svg-box">
                    <svg class="rk-detail-svg" viewBox="0 0 200 100">
                        <rect x="50" y="20" width="100" height="60" fill="none" stroke="#64748b" stroke-width="4" rx="4"/>
                        <path d="M 30 50 L 50 50 M 150 50 L 170 50" stroke="#3b82f6" stroke-width="4" stroke-linecap="round"/>
                        <circle cx="100" cy="50" r="15" fill="#10b981"/>
                        <text x="100" y="54" font-size="12" font-weight="bold" fill="#0f172a" text-anchor="middle">OZC</text>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="rk-tab-loop">
                <h4>Blokada przepływów na rotametrach</h4>
                <p>Zignorowanie normy <strong>PN-EN 1264</strong> i ułożenie pętli dłuższej niż 120 metrów dla rury PEX 16&#215;2.0 kończy się tragedią. Opory hydrauliczne rosną powyżej 20 kPa, co uniemożliwia wyregulowanie <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/" style="color:var(--rk-quote-primary);font-weight:bold;">przepływów na rotametrach</a>. Efektem jest permanentnie zimna posadzka.</p>
                
                <div class="rk-detail-svg-box">
                    <svg class="rk-detail-svg" viewBox="0 0 200 100">
                        <path d="M 20 50 Q 50 20 80 50 T 140 50 T 180 50" fill="none" stroke="#3b82f6" stroke-width="6" stroke-linecap="round"/>
                        <line x1="20" y1="80" x2="180" y2="80" stroke="#ef4444" stroke-width="3"/>
                        <text x="100" y="72" font-size="12" font-weight="bold" fill="#ef4444" text-anchor="middle">MAX 120 mb</text>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="rk-tab-iso">
                <h4>Nośność i pękanie wylewek</h4>
                <p>Ułożenie rur na tanim styropianie fasadowym (EPS 70 zamiast twardego EPS 100/200) to błąd wykonawczy. Pod wpływem ciężaru wylewki i mebli, warstwa izolacji ulega ściśnięciu. Dochodzi do zerwania taśm dylatacyjnych, a grubość jastrychu (min. 45 mm nad rurą) traci swoją strukturę nośną.</p>
                
                <div class="rk-detail-svg-box">
                    <svg class="rk-detail-svg" viewBox="0 0 200 100">
                        <rect x="20" y="20" width="160" height="30" fill="#cbd5e1"/>
                        <rect x="20" y="55" width="160" height="25" fill="#64748b"/>
                        <circle cx="50" cy="35" r="5" fill="#3b82f6"/><circle cx="100" cy="35" r="5" fill="#3b82f6"/><circle cx="150" cy="35" r="5" fill="#3b82f6"/>
                        <text x="100" y="72" font-size="11" font-weight="bold" fill="#ffffff" text-anchor="middle">EPS 100 (Twardy)</text>
                    </svg>
                </div>
            </div>

        </div>
    </div>

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

</div>

<script>
(function() {
    const initApp = () => {
        // Zabezpieczenie Domenowe - DOMAIN LOCK
        const domain = window.location.hostname;
        const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
        
        if (!allowedDomains.includes(domain)) {
            const container = document.getElementById('rk-quote-app');
            if (container) {
                container.innerHTML = `
                    <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:24px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                        <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                        BŁĄD LICENCJI:<br>Kontener informacyjny należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na nieautoryzowanej domenie jest zabronione prawem.
                    </div>
                `;
                return;
            }
        }

        // Logika zakładek
        const btns = document.querySelectorAll('.rk-rule-btn');
        const panels = document.querySelectorAll('.rk-detail-panel');

        btns.forEach(btn => {
            btn.addEventListener('click', function(e) {
                const targetId = e.currentTarget.getAttribute('data-target');
                
                // Reset
                btns.forEach(b => b.classList.remove('active'));
                panels.forEach(p => p.classList.remove('active'));
                
                // Aktywacja
                e.currentTarget.classList.add('active');
                const targetPanel = document.getElementById(targetId);
                if(targetPanel) {
                    targetPanel.classList.add('active');
                }
            });
        });
    };

    // Zabezpieczenie przed opóźnionym ładowaniem (WordPress/Elementor)
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', initApp);
    } else {
        initApp();
    }
})();
</script>



<style>
:root {
    --rk-faq2-dark: #1e293b;
    --rk-faq2-card: #ffffff;
    --rk-faq2-brand: #0ea5e9; /* Ekspercki błękit */
    --rk-faq2-brand-light: #e0f2fe;
    --rk-faq2-accent: #f59e0b; /* Bursztyn dla kontrastu / ciepła */
    --rk-faq2-alert: #ef4444; /* Czerwień błędów */
    --rk-faq2-bg: #f8fafc;
    --rk-faq2-border: #cbd5e1;
    --rk-faq2-text: #334155;
    --rk-faq2-muted: #64748b;
}

.rk-faq2-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    background: var(--rk-faq2-card);
    border-radius: 20px;
    box-shadow: 0 20px 40px -10px rgba(14, 165, 233, 0.1);
    border: 1px solid var(--rk-faq2-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-faq2-header {
    background: linear-gradient(135deg, var(--rk-faq2-dark) 0%, #0f172a 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 5px solid var(--rk-faq2-brand);
}

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

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

.rk-faq2-title span { color: #bae6fd; }

/* Sekcja Akordeonu */
.rk-faq2-interactive {
    padding: 35px 45px;
    background: var(--rk-faq2-bg);
}

.rk-faq2-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-faq2-item {
    background: var(--rk-faq2-card);
    border: 1px solid var(--rk-faq2-border);
    border-left: 4px solid var(--rk-faq2-border);
    border-radius: 12px;
    overflow: hidden;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-faq2-item.active {
    border-color: var(--rk-faq2-brand);
    border-left-width: 6px;
    box-shadow: 0 10px 20px -5px rgba(14, 165, 233, 0.15);
}

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

.rk-faq2-question:hover {
    background: #f1f5f9;
}

.rk-faq2-item.active .rk-faq2-question {
    background: var(--rk-faq2-brand-light);
    color: #0369a1;
}

.rk-faq2-icon {
    flex-shrink: 0;
    width: 36px;
    height: 36px;
    border-radius: 8px;
    background: #f1f5f9;
    color: var(--rk-faq2-muted);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq2-item.active .rk-faq2-icon {
    background: var(--rk-faq2-brand);
    color: #ffffff;
    transform: rotate(45deg); /* Zmiana plusa w krzyżyk */
}

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

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

.rk-faq2-answer-inner {
    overflow: hidden;
}

/* Wnętrze Odpowiedzi */
.rk-faq2-content {
    padding: 20px 25px 25px;
    border-top: 1px dashed var(--rk-faq2-border);
    display: grid;
    grid-template-columns: 1fr 220px;
    gap: 30px;
    align-items: center;
}

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

.rk-faq2-text strong {
    font-weight: 800;
    color: var(--rk-faq2-dark);
    background: linear-gradient(120deg, rgba(14, 165, 233, 0.1) 0%, rgba(14, 165, 233, 0.1) 100%);
    background-repeat: no-repeat;
    background-size: 100% 30%;
    background-position: 0 80%;
}

.rk-link {
    color: var(--rk-faq2-brand);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: color 0.3s;
}

.rk-link:hover { color: #0284c7; }

/* Wizualizacje SVG */
.rk-faq2-visual {
    background: #f8fafc;
    border-radius: 12px;
    height: 160px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px solid #e2e8f0;
    position: relative;
    overflow: hidden;
}

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

/* --- Animacje SVG zależne od .active --- */

/* 1. Mieszacz (Zawór 3-drogowy) */
.anim-mix-hot { stroke-dasharray: 8; animation: flowHot 2s linear infinite; opacity: 0; stroke: #ef4444; }
.anim-mix-cold { stroke-dasharray: 8; animation: flowCold 2s linear infinite; opacity: 0; stroke: #3b82f6; }
.anim-mix-warm { stroke-dasharray: 8; animation: flowWarm 2s linear infinite; opacity: 0; stroke: #f59e0b; }
.rk-faq2-item.active .anim-mix-hot, .rk-faq2-item.active .anim-mix-cold, .rk-faq2-item.active .anim-mix-warm { opacity: 1; }
@keyframes flowHot { to { stroke-dashoffset: -16; } }
@keyframes flowCold { to { stroke-dashoffset: -16; } }
@keyframes flowWarm { to { stroke-dashoffset: 16; } }

/* 2. Glikol vs Woda Demi */
.anim-water-demi { transform: scaleY(0); transform-origin: bottom; transition: transform 1s 0.3s ease-out; fill: #38bdf8; }
.rk-faq2-item.active .anim-water-demi { transform: scaleY(1); }
.anim-bubbles circle { opacity: 0; animation: floatUp 2s infinite ease-in; }
.rk-faq2-item.active .anim-bubbles circle:nth-child(1) { animation-delay: 0.5s; }
.rk-faq2-item.active .anim-bubbles circle:nth-child(2) { animation-delay: 1.2s; }
.rk-faq2-item.active .anim-bubbles circle:nth-child(3) { animation-delay: 0.8s; }
@keyframes floatUp { 0% { opacity: 0; transform: translateY(10px); } 50% { opacity: 1; } 100% { opacity: 0; transform: translateY(-20px); } }

/* 3. Długa Pętla (Brak Przepływu) */
.anim-long-pipe { stroke-dasharray: 200; stroke-dashoffset: 200; stroke: #ef4444; transition: stroke-dashoffset 2s 0.3s ease-out; }
.rk-faq2-item.active .anim-long-pipe { stroke-dashoffset: 0; }
.anim-block { opacity: 0; transition: opacity 0.3s 2.3s; }
.rk-faq2-item.active .anim-block { opacity: 1; }

/* 4. Rozstaw Łazienka */
.anim-dense-pipe { stroke-dasharray: 300; stroke-dashoffset: 300; transition: stroke-dashoffset 1.5s 0.3s ease-out; }
.rk-faq2-item.active .anim-dense-pipe { stroke-dashoffset: 0; }
.anim-heat-wave path { opacity: 0; animation: radiate 1.5s infinite alternate; }
.rk-faq2-item.active .anim-heat-wave path:nth-child(1) { animation-delay: 0.8s; }
.rk-faq2-item.active .anim-heat-wave path:nth-child(2) { animation-delay: 1.0s; }
.rk-faq2-item.active .anim-heat-wave path:nth-child(3) { animation-delay: 1.2s; }
@keyframes radiate { from { opacity: 0; transform: translateY(0); } to { opacity: 0.6; transform: translateY(-5px); stroke: #ef4444; } }

/* 5. Wygrzewanie (28 dni) */
.anim-calendar-leaf { transform-origin: top; transition: transform 0.5s 0.3s, opacity 0.5s 0.3s; }
.rk-faq2-item.active .anim-calendar-leaf { transform: rotateX(-90deg); opacity: 0; }
.anim-crack { stroke-dasharray: 50; stroke-dashoffset: 50; transition: stroke-dashoffset 0.5s 0.8s; }
.rk-faq2-item.active .anim-crack { stroke-dashoffset: 0; }

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

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania projektowe",
    "description": "Zbiór kluczowych pytań inwestorskich o łączenie podłogówki z grzejnikami, rodzaj zładu (woda vs glikol), graniczne długości pętli oraz proces wygrzewania posadzki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-23",
    "dateModified": "2026-05-23"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy można połączyć ogrzewanie podłogowe bezpośrednio z tradycyjnymi grzejnikami w jednym obiegu?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Bezpośrednie połączenie jest niedopuszczalne, ponieważ grzejniki wymagają wysokich temperatur zasilania (55–75°C), które zniszczyłyby posadzkę podłogówki. Konieczne jest zastosowanie układu rozdzielczego z niezależną grupą pompowo-mieszaczową wyposażoną w trójdrogowy zawór termostatyczny obniżający parametr dla podłogówki do bezpiecznych 35–40°C."
        }
      },
      {
        "@type": "Question",
        "name": "Czym najlepiej napełnić instalację ogrzewania podłogowego – zwykłą wodą z kranu czy glikolem?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Instalację w domach całorocznych należy napełnić wodą demineralizowaną uzdatnioną inhibitorem korozji, który chroni układ przed odkładaniem się kamienia kotłowego i szlamu. Glikol stosuje się wyłącznie w domkach letniskowych lub układach narażonych na zamarzanie, pamiętając, że zmniejsza on sprawność wymiany ciepła o ok. 10–15% z uwagi na wyższą lepkość kinematiczną."
        }
      },
      {
        "@type": "Question",
        "name": "Co się stanie, jeśli wykonawca ułoży zbyt długą pętlę podłogówki, np. 160 metrów rury 16 mm?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Taka pętla wygeneruje opory hydrauliczne drastycznie przekraczające możliwości standardowej pompy obiegowej, przez co przepływ wody spadnie niemal do zera. W efekcie początek pętli przy rozdzielaczu będzie ciepły, a reszta pomieszczenia pozostanie całkowicie zimna, co wymaga wpięcia dodatkowej pompy wspomagającej lub uciążliwego kucia posadzki w celu podziału obwodu."
        }
      },
      {
        "@type": "Question",
        "name": "Dlaczego w łazienkach zawsze projektuje się gęstszy rozstaw rur (co 10 cm) niż w pokojach?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Łazienki charakteryzują się wyższą temperaturą obliczeniową wnętrza (24°C zamiast 20°C) przy jednoczesnym ograniczeniu wolnej powierzchni posadzki przez brodziki, wanny i miski WC. Gęstszy rozstaw rur pozwala wygenerować wyższą gęstość strumienia cieplnego z jednego metra kwadratowego i pokryć zapotrzebowanie na ciepło mimo małej powierzchni grzewczej."
        }
      },
      {
        "@type": "Question",
        "name": "Po jakim czasie od zalania wylewki betonowej można uruchomić ogrzewanie podłogowe i zacząć proces wygrzewania?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Proces wygrzewania jastrychu cementowego można rozpocząć najwcześniej po upływie 28 dni od jego wylania (dla wylewek anhydrytowych czas ten skraca się do 7 dni). Zbyt wczesne podanie temperatury spowoduje gwałtowne odparowanie wody niezbędnej do procesu hydratacji cementu, co doprowadzi do drastycznego spadku wytrzymałości mechanicznej posadzki i jej nieodwracalnego spękania."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-faq",
    "name": "Wytyczne Projektowo-Wykonawcze Ogrzewania Podłogowego (Baza Wiedzy)",
    "description": "Kompilacja normatywnych wytycznych instalacyjnych (rozstawy w łazienkach, max długości pętli, proces hydratacji jastrychu) niezbędnych przy obliczeniach hydraulicznych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": { "@type": "Person", "name": "Robert Kucharski" },
    "keywords": [
      "połączenie podłogówki z grzejnikami",
      "woda demineralizowana czy glikol",
      "zbyt długa pętla podłogówki 160m",
      "rozstaw rur w łazience 10 cm",
      "wygrzewanie wylewki betonowej 28 dni"
    ],
    "measurementTechnique": "Określenie parametrów granicznych na podstawie norm PN-EN 1264, PN-EN 12831 oraz wymagań chemii budowlanej (hydratacja cementu).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wymóg stosowania zaworu 3-drogowego przy łączeniu z grzejnikami (redukcja 75°C -> 35°C).",
        "Opory hydrauliczne długiej pętli >120m blokują przepływ masowy.",
        "Proces dojrzewania betonu wymaga minimum 28 dni przed startem wygrzewania."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-faq",
    "name": "Interaktywna Baza Błędów Wykonawczych",
    "description": "Narzędzie FAQ z wbudowanymi animacjami SVG obrazującymi skutki błędów instalacyjnych: brak mieszacza, zbyt długa pętla hydrauliczna czy przedwczesne wygrzewanie betonu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": { "@type": "Person", "name": "Robert Kucharski" }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA
=========================================== -->
<div class="rk-faq2-container" id="rk-faq2-app">
    
    <div class="rk-faq2-header">
        <div class="rk-faq2-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Baza Wiedzy Inżyniera
        </div>
        <h2 class="rk-faq2-title">FAQ – <span>Najczęściej zadawane pytania</span></h2>
    </div>

    <div class="rk-faq2-interactive">
        <div class="rk-faq2-list">
            
            <!-- Pytanie 1: Podłogówka + Grzejniki -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>1. Czy można połączyć podłogówkę bezpośrednio z grzejnikami?</span>
                    <div class="rk-faq2-icon">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                    </div>
                </button>
                <div class="rk-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Bezpośrednie połączenie jest <strong>niedopuszczalne</strong>. Grzejniki wymagają wysokich temperatur zasilania (55–75°C), które zniszczyłyby posadzkę podłogówki (pękanie wylewki). Konieczne jest zastosowanie układu rozdzielczego z niezależną grupą pompowo-mieszaczową wyposażoną w <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/" class="rk-link">zawór termostatyczny</a> obniżający parametr do bezpiecznych 35–40°C.
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-svg-stage" viewBox="0 0 120 80">
                                    <path d="M 10 40 L 40 40" stroke="#ef4444" stroke-width="6" stroke-linecap="round"></path>
                                    <path d="M 40 70 L 40 50" stroke="#3b82f6" stroke-width="6" stroke-linecap="round"></path>
                                    <path d="M 40 40 L 100 40" stroke="#f59e0b" stroke-width="6" stroke-linecap="round"></path>
                                    <!-- Animowane przepływy -->
                                    <path d="M 10 40 L 35 40" stroke-width="3" stroke-linecap="round" class="anim-mix-hot"></path>
                                    <path d="M 40 70 L 40 45" stroke-width="3" stroke-linecap="round" class="anim-mix-cold"></path>
                                    <path d="M 45 40 L 100 40" stroke-width="3" stroke-linecap="round" class="anim-mix-warm"></path>
                                    <circle cx="40" cy="40" r="10" fill="#1e293b"></circle>
                                    <text x="40" y="44" fill="#fff" font-size="10" text-anchor="middle" font-weight="bold">M</text>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 2: Woda vs Glikol -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>2. Czym napełnić instalację – wodą z kranu czy glikolem?</span>
                    <div class="rk-faq2-icon">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                    </div>
                </button>
                <div class="rk-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Instalację w domach całorocznych należy napełnić <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-z-inhibitorem-korozji-do-ogrzewania-podlogowego/" class="rk-link">wodą demineralizowaną z inhibitorem korozji</a>. Chroni to układ przed odkładaniem się kamienia i szlamu. <a href="https://projekt-ogrzewania.pl/glikol-w-ogrzewaniu-podlogowym-prawda-i-mity-ktore-musi-znac-kazdy-inwestor/" class="rk-link">Glikol</a> stosuje się wyłącznie w układach narażonych na zamarzanie (domki letniskowe), pamiętając, że zmniejsza on sprawność wymiany ciepła o ok. 10–15% ze względu na gęstość.
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-svg-stage" viewBox="0 0 120 80">
                                    <path d="M 40 20 L 40 70 L 80 70 L 80 20" fill="none" stroke="#94a3b8" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path>
                                    <rect x="42" y="30" width="36" height="38" class="anim-water-demi"></rect>
                                    <g class="anim-bubbles" fill="#ffffff">
                                        <circle cx="50" cy="60" r="2"></circle>
                                        <circle cx="60" cy="55" r="3"></circle>
                                        <circle cx="70" cy="65" r="1.5"></circle>
                                    </g>
                                    <text x="60" y="50" fill="#fff" font-size="12" text-anchor="middle" font-weight="bold">H₂O+</text>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 3: Za długa pętla -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>3. Co się stanie, jeśli pętla wyniesie np. 160 metrów?</span>
                    <div class="rk-faq2-icon">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                    </div>
                </button>
                <div class="rk-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Taka <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/" class="rk-link">za długa pętla</a> wygeneruje opory hydrauliczne drastycznie przekraczające możliwości standardowej pompy obiegowej. Przepływ wody spadnie niemal do zera. W efekcie początek pętli przy rozdzielaczu będzie ciepły, a <strong>reszta pomieszczenia pozostanie całkowicie zimna</strong> (upośledzenie hydrauliczne).
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-svg-stage" viewBox="0 0 120 80">
                                    <path d="M 10 20 Q 30 20, 30 40 T 50 60 T 70 40 T 90 60 T 110 40" fill="none" stroke="#e2e8f0" stroke-width="6" stroke-linecap="round"></path>
                                    <path d="M 10 20 Q 30 20, 30 40 T 50 60" fill="none" stroke-width="6" stroke-linecap="round" class="anim-long-pipe"></path>
                                    <circle cx="50" cy="60" r="8" fill="#ef4444" class="anim-block"></circle>
                                    <line x1="45" y1="55" x2="55" y2="65" stroke="#fff" stroke-width="2" class="anim-block"></line>
                                    <line x1="55" y1="55" x2="45" y2="65" stroke="#fff" stroke-width="2" class="anim-block"></line>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 4: Łazienka 10 cm -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>4. Dlaczego w łazienkach zawsze projektuje się rozstaw rur co 10 cm?</span>
                    <div class="rk-faq2-icon">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                    </div>
                </button>
                <div class="rk-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Łazienki charakteryzują się wyższą temperaturą projektową (24°C zamiast 20°C) przy <strong>mocno ograniczonej wolnej powierzchni</strong> posadzki (odchodzą brodziki, wanny, zabudowy WC). Gęstszy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/" class="rk-link">rozstaw rur (co 10 cm)</a> pozwala wygenerować wyższą gęstość strumienia cieplnego z 1 m² i pokryć straty ciepła przy małej powierzchni grzewczej.
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-svg-stage" viewBox="0 0 120 80">
                                    <path class="anim-dense-pipe" d="M 20 60 L 100 60 M 20 50 L 100 50 M 20 40 L 100 40" stroke="#f59e0b" stroke-width="4" stroke-linecap="round"></path>
                                    <g class="anim-heat-wave" stroke="#f59e0b" stroke-width="2" stroke-linecap="round" fill="none">
                                        <path d="M 40 30 Q 45 25, 50 30 T 60 30"></path>
                                        <path d="M 60 25 Q 65 20, 70 25 T 80 25"></path>
                                        <path d="M 80 30 Q 85 25, 90 30 T 100 30"></path>
                                    </g>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 5: Wygrzewanie betonu -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>5. Po jakim czasie od zalania wylewki można zacząć ją wygrzewać?</span>
                    <div class="rk-faq2-icon">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                    </div>
                </button>
                <div class="rk-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Wygrzewanie klasycznego jastrychu cementowego można rozpocząć <strong>najwcześniej po upływie 28 dni</strong> od jego wylania. Zbyt wczesne podanie temperatury spowoduje gwałtowne odparowanie wody niezbędnej do hydratacji cementu. Skutkuje to drastycznym spadkiem wytrzymałości mechanicznej posadzki i jej <strong>nieodwracalnym spękaniem</strong> (tzw. zjawisko &#8222;miski&#8221;).
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-svg-stage" viewBox="0 0 120 80">
                                    <rect x="40" y="20" width="40" height="40" rx="4" fill="#e2e8f0" stroke="#94a3b8" stroke-width="3"></rect>
                                    <path d="M 45 15 L 45 25 M 75 15 L 75 25" stroke="#ef4444" stroke-width="4" stroke-linecap="round"></path>
                                    <text x="60" y="45" font-size="16" font-weight="bold" fill="#334155" text-anchor="middle">28</text>
                                    <rect class="anim-calendar-leaf" x="40" y="20" width="40" height="20" fill="#cbd5e1" rx="4"></rect>
                                    <!-- Pęknięcie wylewki -->
                                    <path class="anim-crack" d="M 10 70 L 30 65 L 45 75 L 60 60" fill="none" stroke="#1e293b" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-faq2-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#1e293b; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener FAQ należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na tej domenie jest nieautoryzowane.
                </div>
            `;
            return;
        }
    }

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

    faqItems.forEach(item => {
        const btn = item.querySelector('.rk-faq2-question');
        btn.addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            
            // Zamykamy wszystkie
            faqItems.forEach(i => i.classList.remove('active'));
            
            // Otwieramy kliknięty, jeśli nie był aktywny
            if (!isActive) {
                item.classList.add('active');
            }
        });
    });
    
    // Otwórz pierwszy element po załadowaniu
    if(faqItems.length > 0) {
        faqItems[0].classList.add('active');
    }
});
</script>



<style>
:root {
    --rk-base-dark: #1e293b;
    --rk-base-darker: #0f172a;
    --rk-base-blue: #0ea5e9;
    --rk-base-light: #f8fafc;
    --rk-base-border: #e2e8f0;
    --rk-pro-green: #10b981;
    --rk-pro-green-bg: #ecfdf5;
    --rk-amateur-red: #ef4444;
    --rk-amateur-red-bg: #fef2f2;
    --rk-text-main: #334155;
    --rk-text-muted: #64748b;
    --rk-card-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);
}

.rk-summary-dashboard {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(14, 165, 233, 0.15);
    border: 1px solid var(--rk-base-blue);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-dash-header {
    padding: 45px 50px;
    background: linear-gradient(135deg, var(--rk-base-darker) 0%, var(--rk-base-dark) 100%);
    color: #ffffff;
    position: relative;
}

.rk-dash-header::after {
    content: '';
    position: absolute;
    bottom: 0; left: 0; right: 0;
    height: 4px;
    background: linear-gradient(90deg, var(--rk-base-blue), var(--rk-pro-green));
}

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

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

.rk-dash-lead a {
    color: #7dd3fc;
    text-decoration: underline;
    text-underline-offset: 3px;
    font-weight: 600;
}

/* --- INTERAKTYWNY PANEL --- */
.rk-dash-interactive {
    padding: 40px 50px;
    background: var(--rk-base-light);
}

.rk-dash-interactive h3 {
    text-align: center;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-base-darker);
    margin: 0 0 25px 0;
}

/* Przełącznik (Toggle Switch) */
.rk-toggle-container {
    display: flex;
    justify-content: center;
    margin-bottom: 40px;
}

.rk-master-switch {
    position: relative;
    display: flex;
    background: #e2e8f0;
    border-radius: 999px;
    padding: 6px;
    width: 100%;
    max-width: 500px;
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.05);
}

.rk-switch-btn {
    flex: 1;
    padding: 14px 20px;
    font-size: 15px;
    font-weight: 800;
    text-align: center;
    color: var(--rk-text-muted);
    cursor: pointer;
    z-index: 2;
    transition: color 0.3s ease;
    border-radius: 999px;
    user-select: none;
}

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

.rk-switch-glider {
    position: absolute;
    top: 6px;
    bottom: 6px;
    left: 6px;
    width: calc(50% - 6px);
    background: var(--rk-pro-green);
    border-radius: 999px;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.4s;
    z-index: 1;
    box-shadow: 0 4px 10px rgba(16, 185, 129, 0.3);
}

.state-amateur .rk-switch-glider {
    transform: translateX(100%);
    background: var(--rk-amateur-red);
    box-shadow: 0 4px 10px rgba(239, 68, 68, 0.3);
}

/* Kafelki z parametrami (Grid) */
.rk-metrics-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 25px;
    margin-bottom: 40px;
}

.rk-metric-card {
    background: #ffffff;
    padding: 25px 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-base-border);
    box-shadow: var(--rk-card-shadow);
    text-align: center;
    transition: all 0.4s ease;
    position: relative;
    overflow: hidden;
}

.rk-metric-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 4px;
    background: var(--rk-base-border);
    transition: background-color 0.4s;
}

.state-pro .rk-metric-card::before { background: var(--rk-pro-green); }
.state-amateur .rk-metric-card::before { background: var(--rk-amateur-red); }

.rk-metric-icon {
    margin-bottom: 15px;
    height: 45px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-metric-card h4 {
    margin: 0 0 10px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-base-darker);
}

.rk-metric-val {
    font-size: 14px;
    font-weight: 600;
    color: var(--rk-text-muted);
    min-height: 42px;
    transition: color 0.3s;
}

.state-pro .rk-val-pro { display: block; color: var(--rk-pro-green); }
.state-pro .rk-val-amateur { display: none; }
.state-amateur .rk-val-pro { display: none; }
.state-amateur .rk-val-amateur { display: block; color: var(--rk-amateur-red); }

/* SVG Dashboard */
.rk-svg-dashboard {
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px dashed var(--rk-base-border);
    display: flex;
    justify-content: center;
    align-items: center;
}

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

/* Animacje SVG */
.svg-eps-block { transform-origin: 50% 80%; transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1); fill: #cbd5e1; }
.state-amateur .svg-eps-block { transform: scaleY(0.6); fill: #fca5a5; }

.svg-pipe-flow { stroke-dasharray: 12; animation: pipeFlow 2s linear infinite; stroke: var(--rk-base-blue); transition: stroke 0.5s; }
.state-amateur .svg-pipe-flow { stroke: var(--rk-amateur-red); animation: pipeFlow 6s linear infinite; } /* Wolniejszy przepływ */

.svg-gauge-needle { transform-origin: 250px 50px; transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1); stroke: var(--rk-pro-green); }
.state-amateur .svg-gauge-needle { transform: rotate(135deg); stroke: var(--rk-amateur-red); }

.svg-wallet-money { transform-origin: center; transition: all 0.5s; opacity: 1; transform: translateY(0); }
.state-amateur .svg-wallet-money { opacity: 0; transform: translateY(20px); }

@keyframes pipeFlow { to { stroke-dashoffset: -24; } }

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

.rk-btn-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-base-darker);
    color: #ffffff;
    font-size: 16px;
    font-weight: 800;
    padding: 18px 36px;
    border-radius: 14px;
    text-decoration: none;
    box-shadow: 0 10px 20px -5px rgba(15, 23, 42, 0.3);
    transition: all 0.3s;
    border: 2px solid transparent;
}

.rk-btn-action:hover {
    background: var(--rk-base-blue);
    transform: translateY(-4px);
    box-shadow: 0 15px 25px -5px rgba(14, 165, 233, 0.4);
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-dash-header, .rk-dash-interactive, .rk-dash-footer { padding: 30px 25px; }
    .rk-dash-header h2 { font-size: 24px; }
    .rk-metrics-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-switch-btn { font-size: 14px; padding: 12px 15px; }
    .rk-btn-action { width: 100%; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Kompleksowy Kalkulator Ogrzewania Podłogowego – Podsumowanie",
    "description": "Precyzyjne wyliczenia termiczno-hydrauliczne instalacji płaszczyznowej (EPS 100, limit pętli 120 m, zład wodny) to gwarancja efektywności pomp ciepła i uniknięcia kosztownych awarii.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-03-05",
    "dateModified": "2026-05-23"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset",
    "name": "Wskaźniki Efektywności Termiczno-Hydraulicznej Ogrzewania Podłogowego",
    "description": "Zestawienie porównawcze weryfikujące wpływ kluczowych decyzji instalacyjnych (dobór styropianu, długość pętli, zład wodny) na efektywność systemu grzewczego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kompleksowy kalkulator ogrzewania podłogowego",
      "obliczenia termiczno-hydrauliczne",
      "styropian podłogowy eps 100",
      "długość pętli rur pert pex",
      "objętość zładu wodnego naczynie wzbiorcze"
    ],
    "measurementTechnique": "Analiza przepływów hydraulicznych i strat nośności izolacji w oparciu o wytyczne normy PN-EN 1264 oraz symulacje oporów liniowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Klasa styropianu: EPS 100 zapobiega pękaniu wylewek w porównaniu do EPS 70.",
        "Limit długości pętli: Maksymalnie 120 m dla rury 16x2 mm gwarantuje poprawne przepływy.",
        "Pojemność zładu: Determinuje dobór właściwego naczynia przeponowego i zabezpiecza przed skokami ciśnienia."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp",
    "name": "Symulator Kalkulacji Ogrzewania Podłogowego",
    "description": "Interaktywny symulator decyzji instalacyjnych, pokazujący w czasie rzeczywistym parametry hydrauliczne i finansowe wynikające z poprawnego projektowania (OZC) w kontrze do montażu 'na oko'.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA
=========================================== -->
<div class="rk-summary-dashboard" id="rk-dash-app">
    
    <!-- Nagłówek -->
    <div class="rk-dash-header">
        <h2>Kompleksowy Kalkulator Ogrzewania Podłogowego – Podsumowanie</h2>
        <p class="rk-dash-lead">
            <strong>Kompleksowe obliczenia termiczno-hydrauliczne</strong> instalacji płaszczyznowej to fundament energooszczędnego i bezawaryjnego domu. Każda decyzja projektowa – od wyboru odpowiedniej klasy <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">styropianu podłogowego (EPS 100)</a>, przez restrykcyjne trzymanie się limitu <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">120 m długości pętli rur</a> PERT/PEX, aż po precyzyjne wyliczenie objętości zładu wodnego pod kątem <a href="https://projekt-ogrzewania.pl/naczynie-wzbiorcze/">naczynia wzbiorczego</a> – rzutuje bezpośrednio na efektywność pracy nowoczesnych źródeł ciepła, zwłaszcza pomp ciepła. Samodzielne szacowanie parametrów na budowie to prosta droga do awarii.
        </p>
    </div>

    <!-- Panel Interaktywny -->
    <div class="rk-dash-interactive state-pro" id="rk-interactive-board">
        <h3>Symulacja Decyzji Instalacyjnych</h3>
        
        <!-- Przełącznik -->
        <div class="rk-toggle-container">
            <div class="rk-master-switch">
                <div class="rk-switch-glider"></div>
                <div class="rk-switch-btn active" data-mode="pro">Kalkulator i Projekt</div>
                <div class="rk-switch-btn" data-mode="amateur">Szacowanie &#8222;Na oko&#8221;</div>
            </div>
        </div>

        <!-- Kafelki Parametrów -->
        <div class="rk-metrics-grid">
            <div class="rk-metric-card">
                <div class="rk-metric-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="var(--rk-base-darker)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line></svg>
                </div>
                <h4>Izolacja Podłoża</h4>
                <div class="rk-metric-val">
                    <span class="rk-val-pro">EPS 100/200<br>Brak osiadania wylewki</span>
                    <span class="rk-val-amateur">EPS 70 (Fasada)<br>Pękanie płytek i dylatacji</span>
                </div>
            </div>
            
            <div class="rk-metric-card">
                <div class="rk-metric-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="var(--rk-base-darker)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 3a3 3 0 0 0-3 3v12a3 3 0 0 1-3 3 3 3 0 0 1-3-3 3 3 0 0 1-3-3V6a3 3 0 0 0-3-3"></path><path d="M15 3a3 3 0 0 1 3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0 3-3V6a3 3 0 0 1 3-3"></path></svg>
                </div>
                <h4>Długość Pętli</h4>
                <div class="rk-metric-val">
                    <span class="rk-val-pro">Max 120 m (Rura 16mm)<br>Niskie opory hydrauliczne</span>
                    <span class="rk-val-amateur">&gt; 150 m<br>Zblokowany przepływ (0 l/min)</span>
                </div>
            </div>

            <div class="rk-metric-card">
                <div class="rk-metric-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="var(--rk-base-darker)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path><path d="M2 12h20"></path></svg>
                </div>
                <h4>Zład Wodny</h4>
                <div class="rk-metric-val">
                    <span class="rk-val-pro">Dokładnie obliczony<br>Stabilne ciśnienie układu</span>
                    <span class="rk-val-amateur">Zbyt małe naczynie<br>Wyrzuty wody z zaworu</span>
                </div>
            </div>
        </div>

        <!-- SVG Animowany Dashboard -->
        <div class="rk-svg-dashboard">
            <svg class="rk-main-svg" viewBox="0 0 400 120" xmlns="http://www.w3.org/2000/svg">
                <!-- Lewo: EPS Block -->
                <g transform="translate(30, 20)">
                    <rect x="0" y="40" width="60" height="40" rx="4" class="svg-eps-block"></rect>
                    <rect x="0" y="30" width="60" height="10" fill="#94a3b8"></rect>
                    <!-- Wektor strzałki -->
                    <path d="M30 10 L30 25 M25 20 L30 25 L35 20" stroke="#64748b" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path>
                </g>

                <!-- Środek: Przepływ Rur -->
                <g transform="translate(140, 20)">
                    <path d="M0 20 C 30 20, 30 60, 60 60 C 90 60, 90 20, 120 20" fill="none" stroke="#e2e8f0" stroke-width="12" stroke-linecap="round"></path>
                    <path d="M0 20 C 30 20, 30 60, 60 60 C 90 60, 90 20, 120 20" fill="none" stroke-width="6" stroke-linecap="round" class="svg-pipe-flow"></path>
                </g>

                <!-- Prawo: Zegar / Portfel -->
                <g transform="translate(300, 20)">
                    <!-- Zegar Ciśnienia/Opory -->
                    <path d="M0 60 A 40 40 0 0 1 80 60" fill="none" stroke="#e2e8f0" stroke-width="8"></path>
                    <path d="M60 60 A 40 40 0 0 0 80 60" fill="none" stroke="#ef4444" stroke-width="8"></path> <!-- Czerwone pole -->
                    <circle cx="40" cy="60" r="6" fill="#64748b"></circle>
                    <line x1="40" y1="60" x2="15" y2="35" stroke-width="4" stroke-linecap="round" class="svg-gauge-needle"></line>
                </g>
            </svg>
        </div>
    </div>

    <!-- Stopka CTA -->
    <div class="rk-dash-footer">
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-action">
            Przeczytaj poradniki, które pomagają oszczędzać na ogrzewaniu.
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg>
        </a>
    </div>
</div>

<!-- ==========================================
     LOGIKA JS I ZABEZPIECZENIE (DOMAIN LOCK)
=========================================== -->
<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // 1. Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-dash-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 45px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 24px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 20px;">🛑</div>
                    <div style="font-size: 20px; font-weight: 900; margin-bottom: 15px; text-transform: uppercase;">Naruszenie Praw Autorskich</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 550px; margin: 0 auto; line-height: 1.6;">
                        Interaktywny kalkulator i struktura danych JSON-LD są własnością serwisu Projekt-Ogrzewania.pl. Uruchamianie tego kodu na nieautoryzowanej domenie jest zabronione.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Przełącznika (Toggle)
    const interactiveBoard = document.getElementById('rk-interactive-board');
    const switchBtns = document.querySelectorAll('.rk-switch-btn');

    switchBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Zmiana przycisków
            switchBtns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            // Pobranie trybu
            const mode = this.getAttribute('data-mode');

            // Aktualizacja klasy nadrzędnej (steruje całym CSS i animacjami SVG)
            if (mode === 'amateur') {
                interactiveBoard.classList.remove('state-pro');
                interactiveBoard.classList.add('state-amateur');
            } else {
                interactiveBoard.classList.remove('state-amateur');
                interactiveBoard.classList.add('state-pro');
            }
        });
    });
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/">Kompleksowy kalkulator ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Kalkulator do obliczania ilości metrów rury potrzebnych do ogrzewania podłogowego.</title>
		<link>https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/</link>
					<comments>https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Fri, 14 Mar 2025 11:52:06 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Materiały budowlane]]></category>
		<category><![CDATA[Narzędzia i kalkulatory]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Optymalizacja kosztów]]></category>
		<category><![CDATA[Poradniki budowlane]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Systemy grzewcze]]></category>
		<category><![CDATA[budowa domu]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[kalkulator rury]]></category>
		<category><![CDATA[materiały budowlane]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[poradniki]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[remonty]]></category>
		<category><![CDATA[systemy grzewcze]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2407</guid>

					<description><![CDATA[<p>Planujesz montaż ogrzewania podłogowego i zastanawiasz się, ile metrów rury będzie potrzebnych? Kalkulator do obliczania ilości metrów rury do ogrzewania podłogowego to narzędzie, które pomoże Ci precyzyjnie oszacować potrzebne materiały. Dzięki niemu unikniesz błędów, które mogą wpłynąć na efektywność systemu. W artykule znajdziesz praktyczne przykłady obliczeń, wskazówki dotyczące stref grzewczych oraz informacje, dlaczego warto zlecić projekt profesjonalistom. Sprawdź, jak zaoszczędzić czas i pieniądze!</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/">Kalkulator do obliczania ilości metrów rury potrzebnych do ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Planujesz montaż <em><a href="https://projekt-ogrzewania.pl">ogrzewania podłogowego</a></em> i zastanawiasz się, ile metrów rury będzie potrzebnych? Właśnie w tym pomoże Tobie <strong>kalkulator do obliczania ilości metrów rury do ogrzewania podłogowego</strong>. To narzędzie nie tylko oszczędza czas, ale też minimalizuje ryzyko błędów, które mogą wpłynąć na efektywność systemu. W tym artykule dowiesz się, jak działa taki kalkulator, na co zwrócić uwagę przy obliczeniach oraz dlaczego warto uwzględnić profesjonalny projekt instalacji.</p>



<h2 class="wp-block-heading">Jak działa kalkulator do ogrzewania podłogowego?</h2>



<p class="wp-block-paragraph"><em>Kalkulator do obliczania długości rury</em> opiera się na prostych, ale kluczowych parametrach:</p>



<ul class="wp-block-list">
<li><strong>Rozstaw pętli grzewczej</strong> (np. 10 cm, 15 cm, 20 cm),</li>



<li><strong>Powierzchnia pomieszczenia</strong> w metrach kwadratowych,</li>



<li><strong>Odległość od rozdzielacza</strong>, czyli długość przyłączy doprowadzających wodę do systemu.</li>
</ul>



<p class="wp-block-paragraph">Na przykład, dla pomieszczenia o powierzchni <strong>30 m²</strong> i rozstawie rur <strong>15 cm</strong>, obliczenia wyglądają następująco:</p>



<p class="wp-block-paragraph">Długość rury = (Powierzchnia / Rozstaw) * 2 + (Odległość od rozdzielacza * 2)<br>Długość rury = (30 m² / 0,15 m) * 2 + (5 m * 2) = 400 m + 10 m = 410 m</p>



<h2 class="wp-block-heading">Kluczowe czynniki wpływające na długość rury.</h2>



<p class="wp-block-paragraph">Nie wystarczy znać wzór – trzeba też zrozumieć, co może wpłynąć na finalny wynik:</p>



<ul class="wp-block-list">
<li><strong>Kształt pomieszczenia</strong> – nieregularne bryły wymagają więcej rury ze względu na konieczność omijania przeszkód,</li>



<li><strong>Strefy grzewcze</strong> – miejsca, gdzie potrzebna jest wyższa temperatura (np. łazienki),</li>



<li><strong>Rodzaj rury</strong> – niektóre materiały mają ograniczenia dotyczące maksymalnej długości pętli (np. 80-100 m).</li>
</ul>



<h2 class="wp-block-heading">Przykłady obliczeń dla różnych rozstawów rur.</h2>



<p class="wp-block-paragraph">Poniżej znajdziesz trzy praktyczne scenariusze, które pokazują, jak zmienia się długość rury w zależności od rozstawu:</p>



<h3 class="wp-block-heading">Przykład 1: Rozstaw 10 cm (mieszkanie 50 m²)</h3>



<ul class="wp-block-list">
<li>Powierzchnia: 50 m²</li>



<li>Rozstaw: 10 cm (0,1 m)</li>



<li>Odległość od rozdzielacza: 8 m</li>
</ul>



<p class="wp-block-paragraph">Długość rury = (50 / 0,1) * 2 + (8 * 2) = 1000 m + 16 m = 1016 m</p>



<p class="wp-block-paragraph"><em>Uwaga!</em> Tak duża długość wymaga podziału na co najmniej <strong>13 pętli</strong> (1016 m / 80 m = 12,7 → zaokrąglenie w górę).</p>



<h3 class="wp-block-heading">Przykład 2: Rozstaw 20 cm (dom 120 m²)</h3>



<ul class="wp-block-list">
<li>Powierzchnia: 120 m²</li>



<li>Rozstaw: 20 cm (0,2 m)</li>



<li>Odległość od rozdzielacza: 12 m</li>
</ul>



<p class="wp-block-paragraph">Długość rury = (120 / 0,2) * 2 + (12 * 2) = 1200 m + 24 m = 1224 m</p>



<p class="wp-block-paragraph">W tym przypadku zaleca się podział na <strong>16 pętli</strong> (1224 m / 80 m = 15,3 → zaokrąglenie w górę).</p>



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

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

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

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

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

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

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

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

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

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

.type-btn span {
    margin-top: 4px;
    font-size: 10px;
    font-weight: 400;
}

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

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

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

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

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

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

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

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

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

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

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

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

<div class="calc-intro">
    <h2>Kalkulator ilości rur do ogrzewania podłogowego</h2>
    <p>Sprawdź, ile metrów bieżących rury potrzebujesz do swojej instalacji. Narzędzie stworzone przez ekspertów <a href="https://projekt-ogrzewania.pl/" style="color: #2563eb; font-weight: 700; text-decoration: none;">Projekt-Ogrzewania.pl</a>. Wybierz rozstaw pętli, podaj powierzchnię i średnią odległość od rozdzielacza, a nasz kalkulator automatycznie dobierze ilość rury oraz zasugeruje bezpieczny podział na pętle.</p>
</div>

<div class="pipe-calc" id="pipe-calc-app">
    <div class="calc-grid">
        <div class="config-side">
            <span class="section-title">1. Rozstaw rur (pętli)</span>
            <div class="type-selector">
                <div class="type-btn active" data-rozstaw="10" data-mb="10">10 cm<span>10 mb / m²</span></div>
                <div class="type-btn" data-rozstaw="15" data-mb="7">15 cm<span>7 mb / m²</span></div>
                <div class="type-btn" data-rozstaw="20" data-mb="5">20 cm<span>5 mb / m²</span></div>
                <div class="type-btn" data-rozstaw="25" data-mb="4">25 cm<span>4 mb / m²</span></div>
            </div>

            <span class="section-title">2. Parametry instalacji</span>
            <div class="input-wrap">
                <div class="input-label-row"><label>Powierzchnia (domu/pomieszczenia)</label><span class="val-badge"><span id="v-area">100</span> m²</span></div>
                <input type="range" id="area" min="1" max="500" value="100">
            </div>
            
            <div class="input-wrap">
                <div class="input-label-row"><label>Średnia odległość od rozdzielacza</label><span class="val-badge"><span id="v-dist">8</span> m</span></div>
                <input type="range" id="dist" min="0" max="30" step="1" value="8">
                <div style="font-size: 11px; color: #64748b; margin-top: 8px;">Długość od rozdzielacza do strefy grzewczej (kalkulator sam doliczy zasilanie i powrót dla każdej pętli).</div>
            </div>
        </div>

        <div class="result-side">
            <div id="mainBox" class="main-score-box">
                <span class="score-label">Potrzebna ilość rury (łącznie)</span>
                <span class="score-num" id="resTotal">&#8212;</span>
                <span class="score-label">metrów bieżących (mb)</span>
            </div>

            <div class="tech-grid">
                <div class="tech-item"><span>Wybrany rozstaw:</span><strong id="resSpacing">10 cm</strong></div>
                <div class="tech-item"><span>Rura na samą powierzchnię:</span><strong id="resAreaOnly">&#8212;</strong></div>
                <div class="tech-item"><span>Rura na przyłącza (dla wszystkich pętli):</span><strong id="resConnections">&#8212;</strong></div>
                
                <div class="material-grid">
                    <div class="mini-card" style="background: rgba(37, 99, 235, 0.15); border: 1px solid rgba(37, 99, 235, 0.3);">
                        <span style="color: #bfdbfe;">Sugerowana ilość pętli:</span><strong id="resLoops" style="color: #60a5fa;">&#8212;</strong>
                    </div>
                    <div class="mini-card">
                        <span>Średnia dł. jednej pętli:</span><strong id="resLoopLen">&#8212;</strong>
                    </div>
                </div>
            </div>
            
            <p style="font-size: 10px; color: #64748b; text-align: center; margin-top: 20px; line-height: 1.5;">
                Uwaga: Kalkulator ma charakter poglądowy i nie uwzględnia stref grzanych przyłączami biegnącymi przez pomieszczenia.
            </p>
        </div>
    </div>

    <div class="footer-cta">
        <div class="cta-text-side">
            <h3 style="margin:0 0 10px 0; color:#1e3a8a">Potrzebujesz dokładnych wyliczeń?</h3>
            <p style="margin:0; font-size:14px; color:#475569">Zbyt długie pętle to zimna podłoga i problem z pompą obiegową. Wykonamy dla Ciebie darmową wycenę lub profesjonalny projekt, który wyeliminuje błędy.</p>
        </div>
        <div class="cta-buttons-stack">
            <a href="javascript:void(0)" id="btn-email" class="cta-btn" style="background:#1e293b">
                WYŚLIJ WYNIKI NA E-MAIL
            </a>
            <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="cta-btn">
                ZAMÓW PROJEKT OGRZEWANIA →
            </a>
        </div>
    </div>
</div>

<script>
(function() {
    var appContainer = document.getElementById('pipe-calc-app');
    if (!appContainer) return;

    var domain = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (allowedDomains.indexOf(domain) === -1) {
        // Zabezpieczony komunikat używający template literals (backtick)
        appContainer.innerHTML = `
            <div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px; font-family: sans-serif;">
                <span style="font-size: 48px; display: block; margin-bottom: 15px;">🔒</span>
                <h3 style="margin-top:0; font-size: 24px; color: #dc2626;">Narzędzie chronione</h3>
                <p style="font-size: 16px; margin-bottom: 25px;">Ten kalkulator jest własnością serwisu <a href="https://projekt-ogrzewania.pl/" style="color: #dc2626; font-weight: bold; text-decoration: underline;">Projekt-Ogrzewania.pl</a></p>
                <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 14px 28px; background: #dc2626; color: #ffffff; text-decoration: none; border-radius: 12px; font-weight: 800;">PRZEJDŹ DO ORYGINAŁU</a>
            </div>
        `;
        return; 
    }

    var currentRozstaw = 10;
    var currentMbPerM2 = 10;
    var MAX_LOOP_LENGTH = 80;

    function updateCalc() {
        var areaEl = document.getElementById('area');
        var distEl = document.getElementById('dist');
        if(!areaEl || !distEl) return;

        var area = parseFloat(areaEl.value);
        var dist = parseFloat(distEl.value);
        
        document.getElementById('v-area').innerText = area;
        document.getElementById('v-dist').innerText = dist;

        var areaPipe = area * currentMbPerM2;
        var maxUsableInLoop = MAX_LOOP_LENGTH - (dist * 2);
        if (maxUsableInLoop < 10) { maxUsableInLoop = 10; }

        var loops = Math.ceil(areaPipe / maxUsableInLoop);
        var connectionsPipe = loops * (dist * 2);
        var totalLength = areaPipe + connectionsPipe;
        var loopLen = totalLength / loops;

        document.getElementById('resTotal').innerText = totalLength.toFixed(0);
        document.getElementById('resSpacing').innerText = currentRozstaw + ' cm';
        document.getElementById('resAreaOnly').innerText = areaPipe.toFixed(0) + ' mb';
        document.getElementById('resConnections').innerText = connectionsPipe.toFixed(0) + ' mb';
        
        document.getElementById('resLoops').innerText = loops + (loops === 1 ? ' szt.' : ' szt.');
        document.getElementById('resLoopLen').innerText = '~' + loopLen.toFixed(1) + ' mb';
    }

    var typeBtns = document.querySelectorAll('#pipe-calc-app .type-btn');
    typeBtns.forEach(function(btn) {
        btn.addEventListener('click', function(e) {
            typeBtns.forEach(function(b) { b.classList.remove('active'); });
            var currentBtn = e.currentTarget;
            currentBtn.classList.add('active');
            
            currentRozstaw = parseInt(currentBtn.getAttribute('data-rozstaw'));
            currentMbPerM2 = parseFloat(currentBtn.getAttribute('data-mb'));
            updateCalc();
        });
    });

    var areaInput = document.getElementById('area');
    var distInput = document.getElementById('dist');
    
    if(areaInput) areaInput.addEventListener('input', updateCalc);
    if(distInput) distInput.addEventListener('input', updateCalc);

    var btnEmail = document.getElementById('btn-email');
    if(btnEmail) {
        btnEmail.addEventListener('click', function() {
            var area = document.getElementById('v-area').innerText;
            var dist = document.getElementById('v-dist').innerText;
            var total = document.getElementById('resTotal').innerText;
            var loops = document.getElementById('resLoops').innerText;
            var loopLen = document.getElementById('resLoopLen').innerText;
            
            var email = 'biuro@projekt-ogrzewania.pl';
            var subject = encodeURIComponent('Konsultacja - Zapotrzebowanie na rurę PEX');
            
            var bodyText = 'Dzień dobry,\n\nZrobiłem wstępne kalkulacje ilości rury z Państwa narzędzia:\n\n' +
                           '• Rozstaw pętli: ' + currentRozstaw + ' cm\n' +
                           '• Powierzchnia: ' + area + ' m²\n' +
                           '• Średnia odległość od rozdzielacza: ' + dist + ' m\n' +
                           '• POTRZEBNA RURA: ' + total + ' mb\n' +
                           '• Sugerowany podział: ' + loops + ' pętli po średnio ' + loopLen + '\n\n' +
                           'Proszę o kontakt w sprawie projektu / wyceny materiałów.';
            
            var ampersand = String.fromCharCode(38);           
            window.location.href = 'mailto:' + email + '?subject=' + subject + ampersand + 'body=' + encodeURIComponent(bodyText);
        });
    }

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



<p class="wp-block-paragraph">Zobacz pozostałe nasze kalkulatory <a href="https://projekt-ogrzewania.pl/category/kalkulatory-budowlane/">tutaj</a>.</p>



<h2 class="wp-block-heading">Projekt ogrzewania podłogowego – dlaczego warto go zlecić profesjonalistom?</h2>



<p class="wp-block-paragraph">Nawet najlepszy <strong>kalkulator do obliczania metrów rury</strong> nie zastąpi kompleksowego projektu. Dlaczego? Oto trzy powody:</p>



<ol class="wp-block-list">
<li><strong>Optymalizacja stref grzewczych</strong> – profesjonaliści dobiorą rozstaw rur tak, aby w łazience było cieplej niż w przedpokoju,</li>



<li><strong>Unikanie mostków termicznych</strong> – błędy w rozmieszczeniu rur mogą prowadzić do strat ciepła,</li>



<li><strong>Dobór materiałów</strong> – doświadczony projektant uwzględni rodzaj podłoża i izolacji.</li>
</ol>



<p class="wp-block-paragraph">Na stronie naszej stronie internetowej znajdziesz <a href="https://projekt-ogrzewania.pl/category/kalkulatory-budowlane/">darmowe narzędzia do wstępnych obliczeń</a> oraz możliwość zlecenia szczegółowego <a href="https://projekt-ogrzewania.pl/produkt/projekt-ogrzewania-podlogowego-do-150-m2/">projektu</a>.</p>



<h3 class="wp-block-heading">Jak uniknąć typowych błędów przy obliczeniach?</h3>



<p class="wp-block-paragraph">Oto trzy pułapki, na które warto uważać:</p>



<ul class="wp-block-list">
<li><strong>Zapominanie o przyłączach</strong> – dodaj minimum 2 m rury na każde połączenie z rozdzielaczem,</li>



<li><strong>Ignorowanie strat ciśnienia</strong> – zbyt długa pętla (&gt;80 m) może wymagać mocniejszej pompy,</li>



<li><strong>Brak zapasu materiału</strong> – zawsze dodaj 5-10% do wyniku kalkulatora na okręcenie przeszkód.</li>
</ul>



<h2 class="wp-block-heading">FAQ:</h2>



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1741950968299"><strong class="schema-faq-question"><strong>Jak działa kalkulator do obliczania długości rury do ogrzewania podłogowego?</strong></strong> <p class="schema-faq-answer">Kalkulator uwzględnia trzy główne parametry: rozstaw pętli, powierzchnię pomieszczenia oraz odległość od rozdzielacza. Na podstawie tych danych oblicza całkowitą długość rury potrzebną do instalacji.</p> </div> <div class="schema-faq-section" id="faq-question-1741950978052"><strong class="schema-faq-question"><strong>Czy kalkulator uwzględnia strefy grzewcze?</strong></strong> <p class="schema-faq-answer">Nie, standardowy kalkulator nie uwzględnia stref grzewczych. Warto skonsultować się z projektantem, aby dostosować system do konkretnych potrzeb (np. cieplejsza łazienka).</p> </div> <div class="schema-faq-section" id="faq-question-1741950989206"><strong class="schema-faq-question"><strong>Jakie są typowe błędy przy obliczaniu długości rury?</strong></strong> <p class="schema-faq-answer">Najczęstsze błędy to pomijanie długości przyłączy, ignorowanie strat ciśnienia w długich pętlach oraz brak zapasu materiału na okręcanie przeszkód.</p> </div> <div class="schema-faq-section" id="faq-question-1741951000751"><strong class="schema-faq-question"><strong>Dlaczego warto zlecić projekt ogrzewania podłogowego profesjonalistom?</strong></strong> <p class="schema-faq-answer">Profesjonalny <a href="https://projekt-ogrzewania.pl/kategoria-produktu/projekty/">projekt ogrzewania podłogowego</a> gwarantuje optymalne rozmieszczenie rur, unikanie mostków termicznych oraz dobór odpowiednich materiałów, co przekłada się na efektywność i trwałość systemu.</p> </div> <div class="schema-faq-section" id="faq-question-1741951012979"><strong class="schema-faq-question"><strong>Gdzie można znaleźć darmowy projekt ogrzewania podłogowego?</strong></strong> <p class="schema-faq-answer">Na stronie <a href="https://projekt-ogrzewania.pl/category/kalkulatory-budowlane/" target="_blank" rel="noreferrer noopener">projekt-ogrzewania.pl</a> znajdziesz darmowe narzędzia do wstępnych obliczeń oraz możliwość zlecenia szczegółowego projektu.</p> </div> </div>



<h2 class="wp-block-heading">Podsumowanie.</h2>



<p class="wp-block-paragraph"><strong>Kalkulator do obliczania ilości metrów <a href="https://projekt-ogrzewania.pl/rury-do-ogrzewania-podlogowego/">rury do ogrzewania podłogowego</a></strong> to nie tylko oszczędność czasu. To narzędzie, które:</p>



<ul class="wp-block-list">
<li>Zapobiega <em>przekroczeniu budżetu</em> przez zakup zbyt dużej ilości materiału,</li>



<li>Minimalizuje ryzyko <em>awarii systemu</em> spowodowanej przeciążeniem pętli,</li>



<li>Umożliwia <em>szybką kalkulację</em> dla różnych wariantów rozstawu rur.</li>
</ul>



<p class="wp-block-paragraph">Pamiętaj jednak, że nawet najbardziej precyzyjne obliczenia nie zastąpią projektu wykonanego przez specjalistę. Jeśli chcesz mieć pewność, że Twoje ogrzewanie podłogowe będzie efektywne i trwałe, rozważ współpracę z profesjonalistami.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/">Kalkulator do obliczania ilości metrów rury potrzebnych do ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego? &#8211; Kalkulator.</title>
		<link>https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Mon, 10 Feb 2025 12:26:28 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Hydraulika]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Nowoczesne technologie grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Porady budowlane]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Systemy grzewcze]]></category>
		<category><![CDATA[dobór rury do rozdzielacza]]></category>
		<category><![CDATA[dobór rury zasilającej]]></category>
		<category><![CDATA[efektywność cieplna]]></category>
		<category><![CDATA[instalacja podłogowa]]></category>
		<category><![CDATA[kalkulator średnicy rury]]></category>
		<category><![CDATA[montaż ogrzewania]]></category>
		<category><![CDATA[opory hydrauliczne]]></category>
		<category><![CDATA[projektowanie ogrzewania]]></category>
		<category><![CDATA[przepływ wody w ogrzewaniu]]></category>
		<category><![CDATA[średnica rury ogrzewanie podłogowe]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2156</guid>

					<description><![CDATA[<p>Dobór odpowiedniej średnicy rury zasilającej rozdzielacz w układzie ogrzewania podłogowego ma kluczowe znaczenie dla efektywności całego systemu. Niewłaściwie dobrany przekrój może prowadzić do nierównomiernego rozprowadzania ciepła, zwiększonych oporów hydraulicznych i nadmiernego zużycia energii. W naszym artykule znajdziesz wskazówki, jak dobrać optymalną średnicę, a także kalkulator ułatwiający obliczenia. Dowiedz się, jakie parametry wpływają na wybór rury i jak uniknąć typowych błędów montażowych.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/">Jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego? &#8211; Kalkulator.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --primary: #0f172a;
    --accent: #dc2626; /* Czerwony ostrzegawczy */
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #fef2f2;
    --border-color: #e2e8f0;
}

.premium-hero-box {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--border-color);
    overflow: hidden;
    color: var(--primary);
    position: relative;
}

/* Subtelne tło dekoracyjne */
.premium-hero-box::before {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    width: 300px;
    height: 300px;
    background: radial-gradient(circle, rgba(220, 38, 38, 0.05) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
    transform: translate(30%, -30%);
    z-index: 0;
}

.hero-content {
    position: relative;
    z-index: 1;
    padding: 45px 50px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
}

.hero-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #fef2f2;
    color: var(--accent);
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 25px;
    border: 1px solid #fecaca;
}

.hero-text {
    font-size: 17px;
    line-height: 1.8;
    color: #334155;
    margin-bottom: 20px;
}

.hero-text strong {
    color: var(--primary);
}

.hero-text:last-of-type {
    margin-bottom: 40px;
}

/* Moduły / Spis treści */
.hero-modules-title {
    font-size: 14px;
    font-weight: 800;
    text-transform: uppercase;
    color: #94a3b8;
    letter-spacing: 1px;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    gap: 15px;
}

.hero-modules-title::after {
    content: "";
    flex-grow: 1;
    height: 1px;
    background: var(--border-color);
}

.hero-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
}

.hero-card {
    background: #ffffff;
    border: 1px solid var(--border-color);
    padding: 20px 15px;
    border-radius: 16px;
    text-align: center;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    position: relative;
    top: 0;
}

.hero-card:hover {
    top: -5px;
    border-color: var(--accent);
    box-shadow: 0 15px 25px -5px rgba(220, 38, 38, 0.1);
}

.hero-card-icon {
    font-size: 28px;
    margin-bottom: 12px;
    display: block;
    transition: transform 0.3s;
}

.hero-card:hover .hero-card-icon {
    transform: scale(1.15);
}

.hero-card-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--primary);
    line-height: 1.4;
}

@media (max-width: 900px) {
    .hero-content { padding: 35px 25px; }
    .hero-grid { grid-template-columns: repeat(2, 1fr); gap: 15px; }
}

@media (max-width: 500px) {
    .hero-grid { grid-template-columns: 1fr; }
    .hero-card { display: flex; align-items: center; text-align: left; gap: 15px; padding: 15px; }
    .hero-card-icon { margin-bottom: 0; font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego? Kalkulator i Poradnik",
    "description": "Zastanawiasz się, jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego jest optymalna? Skorzystaj z naszego kalkulatora, poznaj zasady doboru i uniknij błędów hydraulicznych.",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl"
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl"
    },
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Parametry doboru średnicy rury zasilającej",
    "description": "Zestawienie kluczowych parametrów hydraulicznych branych pod uwagę przy obliczaniu przekroju rury zasilającej do rozdzielacza podłogówki.",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Przepływ cieczy (Q)",
        "value": "Zależny od liczby i długości pętli",
        "description": "Kluczowy parametr decydujący o ilości dostarczanego ciepła."
      },
      {
        "@type": "PropertyValue",
        "name": "Prędkość przepływu",
        "value": "0,5 - 1,5 m/s",
        "description": "Optymalny zakres gwarantujący brak hałasu i poprawne działanie systemu."
      },
      {
        "@type": "PropertyValue",
        "name": "Opory hydrauliczne",
        "value": "Zmienne (kPa)",
        "description": "Skutek uboczny zbyt małej średnicy, obciążający pompę obiegową."
      },
      {
        "@type": "PropertyValue",
        "name": "Zalecane średnice",
        "value": "16mm, 20mm, 25mm, 32mm",
        "description": "Standardowe wymiary rur zasilających dobierane przez kalkulator."
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="premium-hero-box" id="hero-app-container">
    <div class="hero-content">
        
        <div class="hero-badge">
            <span>🧮</span> Kalkulator i Dobór Techniczny
        </div>
        
        <p class="hero-text">Wielu inwestorów oraz instalatorów staje przed dylematem: <strong>jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego</strong> będzie optymalna dla ich budynku? To absolutnie kluczowe pytanie przy projektowaniu nowoczesnej instalacji. Wybór odpowiedniego przekroju bezpośrednio warunkuje prawidłową efektywność grzewczą, ekonomiczne zużycie energii i wieloletnią trwałość całego systemu.</p>
        
        <p class="hero-text">Należy pamiętać, że błąd na tym etapie ma poważne konsekwencje. Zbyt mała średnica drastycznie zwiększa opory hydrauliczne, co niepotrzebnie obciąża pompę obiegową i prowadzi do niedogrzewania pomieszczeń. Z kolei zbyt duży przekrój sztucznie podnosi koszty inwestycji i znacząco utrudnia montaż.</p>
        
        <p class="hero-text">Aby ułatwić ten skomplikowany proces, przygotowaliśmy profesjonalny <strong>kalkulator średnicy rury</strong>. Narzędzie to automatycznie obliczy optymalny przekrój na podstawie Twoich danych: liczby pętli, długości obiegu oraz zakładanej prędkości przepływu. Dzięki temu unikniesz błędów projektowych i zapewnisz systemowi maksymalną wydajność. Zapraszamy do skorzystania z narzędzia i lektury poniższego przewodnika!</p>

        <div class="hero-modules-title">Co znajdziesz w tym poradniku:</div>
        
        <div class="hero-grid">
            <div class="hero-card">
                <span class="hero-card-icon">🔢</span>
                <span class="hero-card-title">Kalkulator<br>Online</span>
            </div>
            <div class="hero-card">
                <span class="hero-card-icon">🌊</span>
                <span class="hero-card-title">Analiza<br>Przepływu</span>
            </div>
            <div class="hero-card">
                <span class="hero-card-icon">⚙️</span>
                <span class="hero-card-title">Opory<br>Hydrauliczne</span>
            </div>
            <div class="hero-card">
                <span class="hero-card-icon">📐</span>
                <span class="hero-card-title">Przykłady<br>z Praktyki</span>
            </div>
        </div>

    </div>

    <noscript>
        <div style="padding: 20px 50px; background: #f8fafc; border-top: 1px solid #e2e8f0; font-family: sans-serif;">
            <h2 style="font-size: 18px; color: #0f172a; margin-bottom: 15px;">Kluczowe parametry doboru rury zasilającej</h2>
            <table style="width: 100%; border-collapse: collapse; font-size: 14px; text-align: left;">
                <thead>
                    <tr style="border-bottom: 2px solid #cbd5e1;">
                        <th style="padding: 10px 0; color: #475569;">Parametr hydrauliczny</th>
                        <th style="padding: 10px 0; color: #475569;">Optymalna wartość</th>
                        <th style="padding: 10px 0; color: #475569;">Zagrożenie (zły dobór)</th>
                    </tr>
                </thead>
                <tbody>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px 0;">Prędkość przepływu</td>
                        <td style="padding: 10px 0; font-weight: bold;">0,5 &#8211; 1,5 m/s</td>
                        <td style="padding: 10px 0; color: #dc2626;">Szum w instalacji, erozja rur</td>
                    </tr>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px 0;">Średnica zbyt mała</td>
                        <td style="padding: 10px 0; font-weight: bold;">Wg kalkulatora</td>
                        <td style="padding: 10px 0; color: #dc2626;">Wysokie opory, awaria pompy</td>
                    </tr>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px 0;">Średnica zbyt duża</td>
                        <td style="padding: 10px 0; font-weight: bold;">Wg kalkulatora</td>
                        <td style="padding: 10px 0; color: #dc2626;">Wysokie koszty, trudny montaż</td>
                    </tr>
                    <tr>
                        <td style="padding: 10px 0;">Przepływ cieczy (Q)</td>
                        <td style="padding: 10px 0; font-weight: bold;">N * Lavg * C</td>
                        <td style="padding: 10px 0; color: #dc2626;">Niedogrzane strefy brzegowe</td>
                    </tr>
                </tbody>
            </table>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // ZABEZPIECZENIE DOMENOWE (Domain Lock)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('hero-app-container');
        if (container) {
            container.innerHTML = `
                <div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 300px; font-family: sans-serif;">
                    <span style="font-size: 48px; margin-bottom: 20px;">🔒</span>
                    <div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona prawem autorskim</div>
                    <p style="font-size: 16px; max-width: 500px; color: #7f1d1d; line-height: 1.5;">Ten moduł wprowadzający jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i został skopiowany nielegalnie.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="margin-top: 25px; padding: 14px 28px; background: #dc2626; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s;">ZOBACZ ORYGINALNY ARTYKUŁ</a>
                </div>
            `;
        }
    }
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
    --text-muted: #475569;
}

.premium-impact-box {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 20px 40px -12px rgba(0, 0, 0, 0.05);
    border: 1px solid var(--border-color);
    overflow: hidden;
    color: var(--primary);
}

.impact-header {
    padding: 45px 50px 30px 50px;
    background: linear-gradient(180deg, #ffffff 0%, var(--bg-light) 100%);
    border-bottom: 1px solid var(--border-color);
}

.impact-header h2 {
    margin: 0 0 20px 0;
    font-size: 28px;
    font-weight: 900;
    color: var(--primary);
    line-height: 1.3;
}

.impact-header p {
    margin: 0 0 15px 0;
    font-size: 16px;
    color: var(--text-muted);
    line-height: 1.7;
}

.impact-header p strong {
    color: var(--primary);
}

.impact-header a {
    color: var(--accent);
    text-decoration: none;
    font-weight: 700;
    border-bottom: 1px dashed var(--accent);
    transition: all 0.3s ease;
}

.impact-header a:hover {
    color: #1d4ed8;
    border-bottom-style: solid;
}

/* INTERAKTYWNA TABLICA KONSEKWENCJI */
.impact-grid-container {
    padding: 40px 50px;
    background: #ffffff;
}

.impact-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.impact-card {
    background: var(--bg-light);
    border: 1px solid var(--border-color);
    border-radius: 16px;
    padding: 30px 20px;
    text-align: center;
    position: relative;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    cursor: default;
    z-index: 1;
}

/* Mikrointerakcje Hover */
.impact-grid:hover .impact-card {
    filter: grayscale(0.8) opacity(0.6);
    transform: scale(0.98);
}

.impact-grid .impact-card:hover {
    filter: grayscale(0) opacity(1);
    transform: scale(1.05) translateY(-10px);
    background: #ffffff;
    box-shadow: 0 20px 30px -10px rgba(0,0,0,0.1);
    z-index: 2;
    border-color: transparent;
}

/* Style specyficzne dla kart */
.card-danger:hover { box-shadow: 0 20px 30px -10px rgba(220, 38, 38, 0.15); border-bottom: 4px solid var(--danger); }
.card-warning:hover { box-shadow: 0 20px 30px -10px rgba(234, 88, 12, 0.15); border-bottom: 4px solid var(--warning); }
.card-success:hover { box-shadow: 0 20px 30px -10px rgba(22, 163, 74, 0.15); border-bottom: 4px solid var(--success); }

.impact-icon {
    font-size: 42px;
    margin-bottom: 15px;
    display: block;
    transition: transform 0.3s;
}

.impact-card:hover .impact-icon {
    transform: scale(1.15);
}

.impact-title {
    font-size: 16px;
    font-weight: 800;
    margin-bottom: 12px;
    color: var(--primary);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.impact-desc {
    font-size: 14px;
    line-height: 1.6;
    color: var(--text-muted);
    margin: 0;
}

.impact-desc strong {
    color: var(--primary);
}

@media (max-width: 900px) {
    .impact-grid { grid-template-columns: 1fr; gap: 15px; }
    .impact-header { padding: 30px 25px; }
    .impact-grid-container { padding: 30px 25px; }
    .impact-grid:hover .impact-card { filter: none; transform: none; opacity: 1; }
    .impact-grid .impact-card:hover { transform: translateY(-5px); }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Dlaczego średnica rury zasilającej ma kluczowe znaczenie w ogrzewaniu podłogowym?",
    "description": "Analiza skutków przewymiarowania oraz niedowymiarowania rur zasilających rozdzielacz. Wpływ na opory hydrauliczne i żywotność pompy obiegowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Analiza skutków błędnego doboru rury zasilającej",
    "description": "Zestawienie trzech scenariuszy doboru średnicy rury (zbyt mała, zbyt duża, optymalna) i ich wpływu na fizykę układu grzewczego.",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Scenariusz niedowymiarowania (Zbyt mała rura)",
        "description": "Wzrost oporów hydraulicznych, przeciążenie pompy, niedogrzane strefy."
      },
      {
        "@type": "PropertyValue",
        "name": "Scenariusz przewymiarowania (Zbyt duża rura)",
        "description": "Wysokie koszty złączek, trudności w profilowaniu i montażu w szafce."
      },
      {
        "@type": "PropertyValue",
        "name": "Scenariusz optymalny (Złoty środek)",
        "description": "Zbilansowany przepływ, cicha praca pompy, równomierne oddawanie ciepła."
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="premium-impact-box" id="impact-app-lock">
    
    <div class="impact-header">
        <h2>Dlaczego to, jaka średnica rury zasilającej rozdzielacz zostanie wybrana, ma aż tak ogromne znaczenie?</h2>
        
        <p>System ogrzewania płaszczyznowego opiera się na precyzyjnej mechanice płynów. Cały ten skomplikowany układ działa poprawnie tylko wtedy, gdy gwarantuje bezproblemowe i <strong>równomierne rozprowadzanie ciepła</strong> przez kilometry pętli grzewczych. To właśnie z tego powodu decyzja o tym, <strong>jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego</strong> zostanie użyta, jest jednym z najważniejszych wyborów instalacyjnych.</p>
        
        <p>Skutki błędnej decyzji na tym etapie rzadko da się tanio naprawić, co jest jednym z <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/" target="_blank">najczęstszych błędów przy montażu ogrzewania podłogowego</a>. Kluczem w nowoczesnym projektowaniu jest zawsze &#8222;złoty środek&#8221; – kompromis, który zapewni optymalny, bezszelestny przepływ przy minimalnych i w pełni akceptowalnych stratach ciśnienia.</p>
    </div>

    <div class="impact-grid-container">
        <div class="impact-grid">
            
            <div class="impact-card card-danger">
                <span class="impact-icon">🔥</span>
                <div class="impact-title">Zbyt wąska rura</div>
                <p class="impact-desc">Generuje ogromne <strong>opory hydrauliczne w podłogówce</strong>. Wąskie gardło dławi przepływ wody, wymuszając ciągłą pracę <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/" target="_blank">pompy obiegowej</a> na najwyższym biegu, co radykalnie skraca jej żywotność i powoduje <strong>niedogrzewanie pomieszczeń</strong>.</p>
            </div>

            <div class="impact-card card-warning">
                <span class="impact-icon">💸</span>
                <div class="impact-title">Przewymiarowanie</div>
                <p class="impact-desc">Zbyt duża średnica to potężne, niepotrzebne koszty instalacji (drogie złączki 32mm, ogromne zawory kulowe). Ponadto grube rury są bardzo sztywne, co drastycznie <strong>utrudnia montaż</strong> i układanie podejść pod szafką rozdzielaczową.</p>
            </div>

            <div class="impact-card card-success">
                <span class="impact-icon">⚖️</span>
                <div class="impact-title">Złoty środek</div>
                <p class="impact-desc">Prawidłowo dobrany przekrój gwarantuje <strong>minimalizację strat ciśnienia</strong>, bezszelestną i energooszczędną pracę urządzenia tłoczącego oraz <strong>równomierne rozprowadzanie ciepła</strong> w każdym zakątku Twojego domu.</p>
            </div>

        </div>
    </div>

    <noscript>
        <div style="padding: 30px; background: #0f172a; font-family: sans-serif; color: #f8fafc;">
            <h3 style="margin-top: 0; color: #ffffff;">Analiza scenariuszy doboru średnicy rur</h3>
            <table style="width: 100%; border-collapse: collapse; font-size: 14px; text-align: left; margin-bottom: 10px;">
                <thead>
                    <tr style="border-bottom: 2px solid #334155;">
                        <th style="padding: 10px 0; color: #94a3b8;">Scenariusz doboru</th>
                        <th style="padding: 10px 0; color: #94a3b8;">Konsekwencje hydrauliczne i finansowe</th>
                    </tr>
                </thead>
                <tbody>
                    <tr style="border-bottom: 1px solid #1e293b;">
                        <td style="padding: 10px 0; font-weight: bold; color: #f87171;">Niedowymiarowanie</td>
                        <td style="padding: 10px 0; color: #cbd5e1;">Wysokie opory hydrauliczne, awarie pompy, nierównomierne oddawanie ciepła.</td>
                    </tr>
                    <tr style="border-bottom: 1px solid #1e293b;">
                        <td style="padding: 10px 0; font-weight: bold; color: #fbbf24;">Przewymiarowanie</td>
                        <td style="padding: 10px 0; color: #cbd5e1;">Skrajnie drogie zawory i kształtki, problemy z gięciem sztywnych rur.</td>
                    </tr>
                    <tr>
                        <td style="padding: 10px 0; font-weight: bold; color: #4ade80;">Wybór optymalny</td>
                        <td style="padding: 10px 0; color: #cbd5e1;">Balans między oporami a kosztami. Długa żywotność podzespołów.</td>
                    </tr>
                </tbody>
            </table>
        </div>
    </noscript>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // BLOKADA DOMENOWA
    var domain = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowedDomains.indexOf(domain) === -1) {
        var appContainer = document.getElementById('impact-app-lock');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;"><span style="font-size: 48px; display: block; margin-bottom: 15px;">🔒</span><div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona prawem autorskim</div><p>Skopiowano bez zgody Projekt-Ogrzewania.pl</p></div>';
        }
    }
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
}

.premium-formula-box {
    max-width: 850px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--primary);
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.1);
    border: 1px solid var(--border-color);
    overflow: hidden;
}

.premium-formula-box a.in-text-link {
    color: var(--accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--accent);
    transition: all 0.3s ease;
}

.premium-formula-box a.in-text-link:hover {
    color: var(--primary);
    border-bottom-color: var(--primary);
}

.formula-header {
    padding: 30px 40px;
    text-align: center;
    background: var(--bg-light);
    border-bottom: 1px solid var(--border-color);
}

.formula-header h3 {
    margin: 0 0 10px 0;
    font-size: 24px;
    font-weight: 900;
    color: var(--primary);
}

.formula-header p {
    margin: 0 auto;
    font-size: 15px;
    line-height: 1.6;
    color: #475569;
    max-width: 650px;
}

.formula-content {
    padding: 40px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 30px;
}

.math-display {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 15px;
    font-size: 46px;
    font-weight: 700;
    font-family: 'Georgia', 'Times New Roman', serif;
    font-style: italic;
    color: var(--accent);
    background: #eff6ff;
    padding: 25px 50px;
    border-radius: 16px;
    border: 2px solid #bfdbfe;
    box-shadow: inset 0 2px 4px rgba(255,255,255,0.5);
}

.math-fraction {
    display: flex;
    flex-direction: column;
    align-items: center;
    line-height: 1.1;
    margin-top: -5px;
}

.math-numerator {
    border-bottom: 4px solid var(--accent);
    padding: 0 12px 2px 12px;
}

.math-denominator {
    padding: 4px 12px 0 12px;
}

.math-sub {
    font-size: 22px;
    vertical-align: baseline;
    position: relative;
    top: 5px;
}

.legend-box {
    width: 100%;
    max-width: 650px;
    background: #ffffff;
    padding: 0;
}

.legend-title {
    font-weight: 800;
    margin-bottom: 15px;
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #94a3b8;
    text-align: left;
}

.legend-item {
    display: flex;
    align-items: center;
    padding: 14px 20px;
    margin-bottom: 8px;
    background: var(--bg-light);
    border-radius: 12px;
    border: 1px solid #f1f5f9;
    font-size: 15px;
    color: #334155;
    transition: 0.2s;
}

.legend-item:hover {
    background: #f1f5f9;
    border-color: #e2e8f0;
}

.legend-item:last-child {
    margin-bottom: 0;
}

.legend-symbol {
    font-family: 'Georgia', 'Times New Roman', serif;
    font-style: italic;
    font-weight: 700;
    font-size: 20px;
    color: var(--primary);
    width: 55px;
    flex-shrink: 0;
}

.legend-desc {
    line-height: 1.5;
}

.legend-desc strong {
    color: var(--primary);
}

/* Sekcja kroków */
.steps-wrapper {
    width: 100%;
    max-width: 650px;
    margin-top: 10px;
}

.step-box {
    background: #ffffff;
    border: 1px solid var(--border-color);
    border-left: 4px solid var(--accent);
    padding: 18px 25px;
    margin-bottom: 12px;
    border-radius: 0 12px 12px 0;
    text-align: left;
    font-size: 15px;
    line-height: 1.6;
    color: #334155;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.step-box strong {
    color: var(--primary);
    display: block;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 5px;
}

.step-box .calc-highlight {
    background: #eff6ff;
    color: var(--accent);
    padding: 4px 8px;
    border-radius: 6px;
    font-weight: 700;
    font-family: monospace;
    font-size: 15px;
}

.pro-tip-box {
    background: #fffbeb;
    border: 1px solid #fde68a;
    border-left: 4px solid var(--warning);
    padding: 18px 25px;
    border-radius: 0 12px 12px 0;
    text-align: left;
    font-size: 14px;
    line-height: 1.6;
    color: #92400e;
    margin-top: 20px;
}

.pro-tip-box span {
    font-weight: 800;
    color: #b45309;
    text-transform: uppercase;
    display: block;
    margin-bottom: 5px;
}

.formula-footer {
    padding: 20px 40px;
    background: #ffffff;
    border-top: 1px solid #f1f5f9;
    text-align: center;
    font-size: 13px;
    color: #64748b;
}

@media (max-width: 600px) {
    .formula-header { padding: 25px 20px; }
    .formula-content { padding: 30px 20px; gap: 25px; }
    .math-display { font-size: 34px; padding: 20px 30px; gap: 10px; }
    .math-sub { font-size: 16px; top: 3px; }
    .legend-item { padding: 12px 15px; font-size: 14px; }
    .formula-footer { padding: 15px 20px; }
}
</style>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Dataset",
  "name": "Wzór na średnicę rury zasilającej rozdzielacz (Ogrzewanie Podłogowe)",
  "description": "Matematyczny model obliczania optymalnej średnicy wewnętrznej rury zasilającej na podstawie przepływu, liczby pętli i prędkości cieczy.",
  "license": "https://projekt-ogrzewania.pl/",
  "variableMeasured": [
    {
      "@type": "PropertyValue",
      "name": "d",
      "description": "Szukana wewnętrzna średnica rury zasilającej (w milimetrach)."
    },
    {
      "@type": "PropertyValue",
      "name": "Q",
      "description": "Całkowity przepływ wody (l/min) wyliczany na podstawie liczby pętli i ich długości."
    },
    {
      "@type": "PropertyValue",
      "name": "v",
      "description": "Zakładana prędkość przepływu wody (optymalnie 0.5 - 1.5 m/s)."
    }
  ],
  "creator": {
    "@type": "Person",
    "name": "Robert Kucharski"
  }
}
</script>

<div class="premium-formula-box" id="formula-app-pipe">
    <div class="formula-header">
        <h3>Jak obliczyć średnicę rury zasilającej?</h3>
        <p>Precyzyjna odpowiedź na pytanie, <strong>jaka średnica rury zasilającej <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/" class="in-text-link">rozdzielacz</a> w układzie ogrzewania podłogowego</strong> jest odpowiednia, wymaga podstawień do uniwersalnego wzoru z zakresu mechaniki płynów. Poznaj ten praktyczny przewodnik.</p>
    </div>

    <div class="formula-content">
        <div class="math-display">
            <span>d</span>
            <span style="color: var(--primary); font-style: normal;">=</span>
            <div style="display: flex; align-items: center;">
                <span style="font-size: 52px; font-weight: 300; color: var(--accent); margin-right: 0px; transform: translateY(2px);">&radic;</span>
                <div class="math-fraction">
                    <span class="math-numerator">21.22 &middot; Q</span>
                    <span class="math-denominator">v</span>
                </div>
            </div>
        </div>

        <div class="legend-box">
            <div class="legend-title">Zmienne i parametry obliczeniowe:</div>
            <div class="legend-item">
                <div class="legend-symbol">d</div>
                <div class="legend-desc">Teoretyczna <strong>średnica wewnętrzna</strong> rury zasilającej [mm].</div>
            </div>
            <div class="legend-item">
                <div class="legend-symbol">Q</div>
                <div class="legend-desc">Całkowity <strong>przepływ cieczy</strong> w układzie [l/min]. Obliczany ze wzoru: <br><span style="font-family: monospace; background: #e2e8f0; padding: 2px 6px; border-radius: 4px; font-size: 13px;">Q = N &middot; L<sub>avg</sub> &middot; C</span></div>
            </div>
            <div class="legend-item">
                <div class="legend-symbol">v</div>
                <div class="legend-desc">Zakładana <strong>prędkość przepływu wody</strong> [m/s]. W instalacjach domowych przyjmuje się zazwyczaj wartość 1 m/s (optymalny przedział to 0,5–1,5 m/s).</div>
            </div>
            <div class="legend-item">
                <div class="legend-symbol" style="font-size: 16px;">21.22</div>
                <div class="legend-desc">Stała fizyczna (współczynnik konwersji jednostek dla rur okrągłych).</div>
            </div>
        </div>

        <div class="steps-wrapper">
            <div class="legend-title" style="margin-top: 10px;">Praktyczny przykład (10 pętli, 75m każda):</div>
            
            <div class="step-box">
                <strong>Krok 1: Oblicz całkowity przepływ (Q)</strong>
                Mnożymy liczbę pętli (N = 10), średnią długość (L<sub>avg</sub> = 75 m) oraz stałą przepływu dla ΔT=10°C (C = 0,02 l/min/m).<br>
                Wynik: <span class="calc-highlight">Q = 10 · 75 · 0,02 = 15 l/min</span>
            </div>

            <div class="step-box">
                <strong>Krok 2: Ustal prędkość przepływu (v)</strong>
                Zakładamy optymalny, bezszelestny przepływ w domowej instalacji.<br>
                Wynik: <span class="calc-highlight">v = 1 m/s</span>
            </div>

            <div class="step-box">
                <strong>Krok 3: Oblicz średnicę (d)</strong>
                Podstawiamy wartości do głównego pierwiastka.<br>
                Wynik: <span class="calc-highlight">d = &radic;(21.22 · 15 / 1) = &radic;318.3 &approx; 17.8 mm</span>
            </div>

            <div class="pro-tip-box">
                <span>⚠️ Ważna uwaga instalacyjna (Pro-Tip)</span>
                Powyższy wzór wylicza średnicę <strong>wewnętrzną</strong>. Rury w handlu podawane są z reguły po średnicy zewnętrznej. Jeżeli z wyliczeń wychodzi Ci np. d = 17.8 mm, popularna <a href="https://projekt-ogrzewania.pl/produkt/rura-wielowarstwowa-kisan-redart-pe-rt-al-pe/" class="in-text-link" target="_blank">rura wielowarstwowa</a> 20&#215;2.0 (o średnicy wewn. 16 mm) będzie <strong>zbyt wąska!</strong> W takim wypadku powinieneś użyć rury 25&#215;2.5 (która wewnątrz ma równe 20 mm).
            </div>
        </div>

    </div>

    <div class="formula-footer">
        Opracowanie techniczne: <a href="https://projekt-ogrzewania.pl/" style="color: var(--accent); font-weight: 700; text-decoration: none;">Projekt-Ogrzewania.pl</a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // ZABEZPIECZENIE DOMENOWE (Domain Lock - Jawny skrypt)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const appContainer = document.getElementById('formula-app-pipe');
        if (appContainer) {
            appContainer.innerHTML = `
                <div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 400px; border-radius: 24px; font-family: sans-serif;">
                    <span style="font-size: 48px; margin-bottom: 20px;">🔒</span>
                    <h3 style="margin-top:0; font-size: 24px; font-weight: 900;">Treść chroniona prawem autorskim</h3>
                    <p style="font-size: 16px; max-width: 500px; color: #7f1d1d; line-height: 1.5; margin-bottom: 25px;">To opracowanie wzoru jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i zostało skopiowane nielegalnie.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="padding: 14px 28px; background: #dc2626; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s;">ZOBACZ ORYGINALNY ARTYKUŁ</a>
                </div>
            `;
        }
    }
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
}

.premium-anatomy-box {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--border-color);
    overflow: hidden;
    color: var(--primary);
}

.anatomy-header {
    padding: 40px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
    border-bottom: 1px solid var(--border-color);
}

.anatomy-header h3 {
    margin: 0 0 15px 0;
    font-size: 26px;
    font-weight: 900;
    color: var(--primary);
}

.anatomy-header p {
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
    margin-bottom: 15px;
}

.anatomy-header p:last-child {
    margin-bottom: 0;
}

.anatomy-header a {
    color: var(--accent);
    text-decoration: none;
    font-weight: 600;
    border-bottom: 1px dashed var(--accent);
    transition: all 0.3s ease;
}

.anatomy-header a:hover {
    color: #1d4ed8;
    border-bottom-style: solid;
}

.anatomy-workspace {
    display: flex;
    min-height: 480px;
}

/* LEWA STRONA - STOS WARSTW (PRZEKRÓJ) */
.anatomy-layers {
    width: 40%;
    background: #ffffff;
    border-right: 1px solid var(--border-color);
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 30px;
    gap: 15px;
}

.layer-btn {
    position: relative;
    width: 100%;
    padding: 20px;
    border-radius: 12px;
    border: 2px solid var(--border-color);
    background: #ffffff;
    cursor: pointer;
    text-align: left;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    gap: 15px;
    overflow: hidden;
}

.layer-btn::before {
    content: '';
    position: absolute;
    left: 0; top: 0; height: 100%; width: 6px;
    background: #cbd5e1;
    transition: all 0.3s;
}

/* Kolory poszczególnych zakładek */
.layer-btn[data-layer="dom"]::before { background: var(--success); } 
.layer-btn[data-layer="mieszkanie"]::before { background: var(--accent); } 

.layer-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05);
    border-color: #cbd5e1;
}

/* UNIKALNA KLASA ABY UNIKNĄĆ KONFLIKTU Z WORDPRESSEM */
.layer-btn.layer-active {
    border-color: var(--accent);
    background: #eff6ff;
    box-shadow: 0 10px 20px -5px rgba(37, 99, 235, 0.15);
}

.layer-btn[data-layer="dom"].layer-active {
    border-color: var(--success);
    background: #f0fdf4;
    box-shadow: 0 10px 20px -5px rgba(22, 163, 74, 0.15);
}

.layer-btn.layer-active::before {
    background: var(--accent);
    width: 8px;
}

.layer-btn[data-layer="dom"].layer-active::before { background: var(--success); }

.layer-icon {
    font-size: 26px;
    filter: grayscale(0.2);
    transition: transform 0.3s;
}

.layer-btn.layer-active .layer-icon {
    transform: scale(1.2);
    filter: grayscale(0);
}

.layer-title {
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    font-weight: 800;
    color: var(--primary);
    line-height: 1.3;
}

.layer-subtitle {
    display: block;
    font-size: 11px;
    font-weight: 600;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-top: 5px;
}

/* PRAWA STRONA - SZCZEGÓŁY WARSTWY */
.anatomy-details {
    width: 60%;
    background: var(--bg-light);
    padding: 40px;
    position: relative;
}

.detail-pane {
    display: none;
    animation: fadeInSlide 0.4s ease-out forwards;
}

/* UNIKALNA KLASA PANE_ACTIVE */
.detail-pane.pane-active {
    display: block;
}

.detail-pane h4 {
    margin: 0 0 20px 0;
    font-size: 24px;
    font-weight: 900;
    color: var(--primary);
    display: flex;
    align-items: center;
    gap: 12px;
}

.detail-pane p {
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
    margin-bottom: 15px;
}

.detail-pane a {
    color: var(--accent);
    text-decoration: none;
    font-weight: 600;
    border-bottom: 1px dashed var(--accent);
    transition: all 0.3s ease;
}

.detail-pane a:hover {
    color: #1d4ed8;
    border-bottom-style: solid;
}

.detail-pane ul {
    margin: 0 0 20px 0;
    padding-left: 20px;
}

.detail-pane li {
    font-size: 15px;
    line-height: 1.6;
    color: #475569;
    margin-bottom: 10px;
}

.detail-pane strong {
    color: var(--primary);
}

.highlight-box {
    background: #ffffff;
    border-left: 4px solid var(--accent);
    padding: 18px 20px;
    border-radius: 0 12px 12px 0;
    font-size: 14px;
    font-weight: 600;
    color: #334155;
    box-shadow: 0 2px 5px rgba(0,0,0,0.02);
    margin-top: 20px;
    line-height: 1.6;
}

.highlight-box.success {
    border-left-color: var(--success);
}

.highlight-box strong {
    color: var(--primary);
    display: block;
    margin-bottom: 5px;
}

.param-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 15px;
    margin-bottom: 20px;
}

.param-item {
    background: #ffffff;
    padding: 15px;
    border-radius: 12px;
    border: 1px solid var(--border-color);
}

.param-item span {
    display: block;
    font-size: 12px;
    color: #64748b;
    text-transform: uppercase;
    font-weight: 700;
    margin-bottom: 5px;
}

.param-item strong {
    font-size: 16px;
    color: var(--primary);
}

@keyframes fadeInSlide {
    from { opacity: 0; transform: translateX(10px); }
    to { opacity: 1; transform: translateX(0); }
}

@media (max-width: 768px) {
    .anatomy-header { padding: 30px 20px; }
    .anatomy-workspace { flex-direction: column; min-height: auto; }
    .anatomy-layers {
        width: 100%;
        border-right: none;
        border-bottom: 1px solid var(--border-color);
        padding: 20px;
    }
    .anatomy-details {
        width: 100%;
        padding: 30px 20px;
    }
    .param-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Przykłady obliczeń rury zasilającej",
    "description": "Zestawienie praktycznych scenariuszy obliczeniowych dla doboru średnicy rury zasilającej rozdzielacz.",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Scenariusz 1: Dom jednorodzinny",
        "value": "12 pętli, 70m. Wynik: rura zewnętrzna 25 mm"
      },
      {
        "@type": "PropertyValue",
        "name": "Scenariusz 2: Mieszkanie",
        "value": "6 pętli, 50m. Wynik: rura zewnętrzna 16 mm"
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Eksplorator Scenariuszy - Średnica Zasilania",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "description": "Interaktywny moduł edukacyjny prezentujący konkretne obliczenia dla doboru rur zasilających rozdzielacz.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "featureList": [
      "Przykładowe obliczenia dla domu jednorodzinnego",
      "Przykładowe obliczenia dla mniejszego mieszkania",
      "Analiza przepływu i prędkości wody"
    ]
  }
]
</script>

<div class="premium-anatomy-box" id="calc-examples-app-container">
    
    <div class="anatomy-header">
        <h3>Przykłady praktyczne – Dobór średnicy dla różnych instalacji</h3>
        <p>Wiemy już, jak negatywny wpływ mogą mieć <strong>za małe i za duże rury zasilające w systemach płaszczyznowych</strong> na skuteczność całego układu. Sprawdźmy zatem w praktyce, jak powinno wyglądać przeliczenie parametrów dla dwóch najpopularniejszych przypadków, korzystając ze wzorów lub naszego kalkulatora. W każdej symulacji korygujemy teoretyczny wynik wewnętrzny do realnie dostępnej średnicy zewnętrznej (o czym piszemy także w artykule o doborze <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">rur w samym systemie grzewczym</a>).</p>
    </div>

    <div class="anatomy-workspace">
        
        <div class="anatomy-layers">
            <span style="font-size: 11px; font-weight: 800; color: #94a3b8; text-transform: uppercase; letter-spacing: 1px; text-align: center; margin-bottom: 5px;">Wybierz scenariusz</span>
            
            <button class="layer-btn layer-active" data-target="pane-dom" data-layer="dom">
                <span class="layer-icon">🏠</span>
                <div>
                    <div class="layer-title">Scenariusz 1</div>
                    <span class="layer-subtitle">Dom Jednorodzinny</span>
                </div>
            </button>
            
            <button class="layer-btn" data-target="pane-mieszkanie" data-layer="mieszkanie">
                <span class="layer-icon">🏢</span>
                <div>
                    <div class="layer-title">Scenariusz 2</div>
                    <span class="layer-subtitle">Mieszkanie</span>
                </div>
            </button>
        </div>

        <div class="anatomy-details">
            
            <div class="detail-pane pane-active" id="pane-dom">
                <h4>Dom jednorodzinny</h4>
                <p>Jest to bardzo typowy wariant, wymagający większej mocy przesyłowej i obsługujący duży, np. 12-sekcyjny rozdzielacz. Zastanawiasz się w takiej sytuacji nad <strong>wyborem rur instalacji ogrzewania</strong>?</p>
                
                <div class="param-grid">
                    <div class="param-item"><span>Liczba pętli (N):</span><strong>12</strong></div>
                    <div class="param-item"><span>Średnia długość pętli:</span><strong>70 m</strong></div>
                    <div class="param-item" style="grid-column: span 2;"><span>Prędkość wody (v):</span><strong>1 m/s</strong></div>
                </div>

                <div class="highlight-box success">
                    <strong>Krok 1 &#8211; Obliczamy przepływ:</strong>
                    Q = 12 · 70 · 0,02 = 16,8 l/min
                    <br><br>
                    <strong>Krok 2 &#8211; Podstawiamy do wzoru na średnicę (d):</strong>
                    d = √(21.22 · 16,8) ≈ 18,9 mm (wewnątrz)
                </div>
                
                <p style="margin-top:20px;"><strong>Rekomendacja instalatorska:</strong> Wybór <strong>rury zewnętrznej o średnicy 25 mm</strong> (np. <a href="https://projekt-ogrzewania.pl/produkt/rura-wielowarstwowa-kisan-redart-pe-rt-al-pe/" target="_blank">wielowarstwowa rura z barierą</a> 25&#215;2.5, która ma wewnątrz dokładnie 20 mm). Daje to margines bezpieczeństwa na ewentualne rozbudowy systemu oraz zapewnia niezwykle cichą i stabilną pracę całej kotłowni.</p>
            </div>

            <div class="detail-pane" id="pane-mieszkanie">
                <h4>Mniejsze mieszkanie</h4>
                <p>W tym scenariuszu inwestor posiada niewielkie mieszkanie obsługiwane przez mały rozdzielacz, co drastycznie zmienia wymagania względem przewodu zasilającego.</p>
                
                <div class="param-grid">
                    <div class="param-item"><span>Liczba pętli (N):</span><strong>6</strong></div>
                    <div class="param-item"><span>Średnia długość pętli:</span><strong>50 m</strong></div>
                    <div class="param-item" style="grid-column: span 2;"><span>Prędkość wody (v):</span><strong>0,8 m/s</strong></div>
                </div>

                <div class="highlight-box">
                    <strong>Krok 1 &#8211; Obliczamy przepływ:</strong>
                    Q = 6 · 50 · 0,02 = 6,0 l/min
                    <br><br>
                    <strong>Krok 2 &#8211; Podstawiamy do wzoru na średnicę (d):</strong>
                    d = √(21.22 · 6 / 0,8) ≈ 12,6 mm (wewnątrz)
                </div>
                
                <p style="margin-top:20px;"><strong>Rekomendacja instalatorska:</strong> W tak małym układzie w zupełności wystarczy standardowa rura <strong>16 mm (16&#215;2.0)</strong>, ponieważ jej przekrój wewnętrzny (12 mm) praktycznie pokrywa się z wyliczonym zapotrzebowaniem. Unikniesz w ten sposób niepotrzebnych problemów z doginaniem grubszych rur.</p>
            </div>

        </div>
    </div>
    
    <noscript>
        <style>
            /* Ujawnienie wszystkich zakładek, gdy JavaScript jest wyłączony */
            .detail-pane { display: block !important; margin-bottom: 40px; }
        </style>
        <div style="padding: 30px; background: #f8fafc; border-top: 1px solid #e2e8f0; font-family: sans-serif;">
            <h3 style="font-size: 18px; color: #0f172a; margin-bottom: 15px;">Przykłady obliczeniowe</h3>
            <table style="width: 100%; border-collapse: collapse; font-size: 14px; text-align: left;">
                <thead>
                    <tr style="border-bottom: 2px solid #cbd5e1;">
                        <th style="padding: 10px 0; color: #475569;">Scenariusz</th>
                        <th style="padding: 10px 0; color: #475569;">Parametry wejściowe</th>
                        <th style="padding: 10px 0; color: #475569;">Wynik / Zalecana rura</th>
                    </tr>
                </thead>
                <tbody>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px 0; font-weight: bold;">Dom (12 sekcji)</td>
                        <td style="padding: 10px 0;">12 pętli x 70m, prędkość 1m/s. Przepływ Q = 16,8 l/min.</td>
                        <td style="padding: 10px 0;">d ≈ 18,9 mm -> Stosujemy rurę komercyjną 25&#215;2.5 (wewn. 20mm).</td>
                    </tr>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px 0; font-weight: bold;">Mieszkanie (6 sekcji)</td>
                        <td style="padding: 10px 0;">6 pętli x 50m, prędkość 0,8m/s. Przepływ Q = 6 l/min.</td>
                        <td style="padding: 10px 0;">d ≈ 12,6 mm -> Stosujemy rurę komercyjną 16&#215;2.0 (wewn. 12mm).</td>
                    </tr>
                </tbody>
            </table>
        </div>
    </noscript>
</div>

<script>
// Zapakowane w funkcję, by bezbłędnie działało w każdym środowisku WP
function initCalcExamplesTabs() {
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const lockContainer = document.getElementById('calc-examples-app-container');
        if (lockContainer) {
            lockContainer.innerHTML = `
                <div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 400px;">
                    <span style="font-size: 48px; margin-bottom: 20px;">🔒</span>
                    <h3 style="margin-top:0; font-size: 24px;">Narzędzie chronione prawem autorskim</h3>
                    <p style="font-size: 16px; max-width: 500px; color: #7f1d1d; line-height: 1.5;">Ten interaktywny moduł edukacyjny jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i został skopiowany nielegalnie.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="margin-top: 25px; padding: 14px 28px; background: #dc2626; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s;">ZOBACZ ORYGINALNY ARTYKUŁ</a>
                </div>
            `;
        }
        return; 
    }

    const factorsApp = document.getElementById('calc-examples-app-container');
    if (!factorsApp) return;

    const layerBtns = factorsApp.querySelectorAll('.layer-btn');
    const panes = factorsApp.querySelectorAll('.detail-pane');

    layerBtns.forEach(function(button) {
        button.addEventListener('click', function(e) {
            e.preventDefault(); // Zabezpieczenie przed przeładowaniem

            // Usuwanie unikalnej klasy z przycisków
            layerBtns.forEach(function(btn) { btn.classList.remove('layer-active'); });
            // Usuwanie unikalnej klasy z paneli
            panes.forEach(function(pane) { pane.classList.remove('pane-active'); });
            
            // Dodawanie unikalnej klasy do klikniętego przycisku
            this.classList.add('layer-active');
            
            // Pokazywanie odpowiedniego panelu
            const targetId = this.getAttribute('data-target');
            const targetPane = factorsApp.querySelector('#' + targetId);
            if(targetPane) {
                targetPane.classList.add('pane-active');
            }
        });
    });
}

// Bezpieczne uruchomienie w środowiskach typu WordPress
if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', initCalcExamplesTabs);
} else {
    initCalcExamplesTabs();
}
</script>



<style>
:root {
    --primary-hvac: #0f172a;
    --accent-hvac: #2563eb;
    --bg-tip: #f1f5f9;
}

.expert-tip-wrapper {
    max-width: 850px;
    margin: 50px auto 40px auto;
}

.expert-tip-wrapper h2 {
    font-family: 'Inter', -apple-system, sans-serif;
    font-size: 24px;
    font-weight: 900;
    color: var(--primary-hvac);
    margin: 0 0 20px 0;
    text-align: center;
}

.expert-tip-container {
    background: var(--bg-tip);
    border-radius: 20px;
    padding: 30px;
    display: flex;
    gap: 25px;
    align-items: center;
    border-left: 6px solid var(--accent-hvac);
    position: relative;
    font-family: 'Inter', -apple-system, sans-serif;
    text-align: left;
}

.expert-tip-photo-wrap {
    flex-shrink: 0;
    width: 90px;
    height: 90px;
    position: relative;
}

.expert-tip-photo {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    object-position: center top;
    border: 3px solid #ffffff;
    box-shadow: 0 4px 10px rgba(0,0,0,0.1);
}

.expert-tip-photo-wrap::after {
    content: '📐';
    position: absolute;
    bottom: -5px;
    right: -5px;
    background: #ffffff;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}

.expert-tip-content {
    flex-grow: 1;
}

.expert-tip-label {
    display: block;
    font-size: 12px;
    font-weight: 800;
    color: var(--accent-hvac);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 8px;
}

.expert-tip-text {
    font-size: 16px;
    line-height: 1.6;
    color: var(--primary-hvac);
    font-style: italic;
    margin: 0;
}

.expert-tip-signature {
    display: block;
    margin-top: 10px;
    font-size: 13px;
    font-weight: 700;
    color: #64748b;
}

@media (max-width: 600px) {
    .expert-tip-container { flex-direction: column; text-align: center; padding: 25px; }
    .expert-tip-photo-wrap { margin-bottom: 10px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Quotation",
    "license": "https://projekt-ogrzewania.pl/",
    "text": "Wielu instalatorów dobiera rury zasilające 'na oko', co jest najprostszą drogą do zdławienia wydajności systemu. To, jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego zostanie wybrana, decyduje o tym, czy Twoja pompa obiegowa będzie pracować lekko i oszczędnie, czy też zostanie przeciążona przez gigantyczne opory hydrauliczne.",
    "spokenByCharacter": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "jobTitle": "CEO & Główny Projektant",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ],
      "worksFor": {
        "@type": "Organization",
        "name": "Projekt-Ogrzewania.pl"
      }
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Wytyczne inżynierskie: Dobór średnicy rury",
    "description": "Zestawienie inżynierskich zasad doboru przekrojów zasilających dla systemów ogrzewania podłogowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  }
]
</script>

<div class="expert-tip-wrapper">
    <h2><span style="margin-right:10px">⚖️</span>Robert Kucharski o fundamentach hydrauliki</h2>
    
    <div class="expert-tip-container" id="expert-tip-hvac">
        <div class="expert-tip-photo-wrap">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="expert-tip-photo" loading="lazy">
        </div>
        <div class="expert-tip-content">
            <span class="expert-tip-label">Wskazówka od Projektanta</span>
            <p class="expert-tip-text">
                &#8222;Wielu instalatorów dobiera rury zasilające 'na oko&#8217;, co jest najprostszą drogą do zdławienia wydajności systemu. To, <strong>jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego</strong> zostanie wybrana, decyduje o tym, czy Twoja pompa obiegowa będzie pracować lekko i oszczędnie, czy też zostanie przeciążona przez gigantyczne opory hydrauliczne. Prawidłowy przekrój to jedyna gwarancja, że ciepło dotrze do każdej pętli w Twoim domu – bez szumów i bez zimnych punktów na podłodze.&#8221;
            </p>
            <span class="expert-tip-signature">— Robert Kucharski, CEO &#038; Główny Projektant Projekt-Ogrzewania.pl</span>
        </div>
    </div>

    <noscript>
        <div style="padding: 20px; background: #f1f5f9; border-radius: 20px; margin-top: 20px; font-family: sans-serif;">
            <p style="font-size: 14px; font-weight: bold; color: #0f172a;">Rekomendacja inżynierska Roberta Kucharskiego:</p>
            <p style="font-size: 14px; color: #475569;">Właściwa średnica rury zasilającej to klucz do niskich oporów hydraulicznych i długowieczności pompy obiegowej. Wybór przekroju musi opierać się na obliczeniach przepływu Q i prędkości wody.</p>
        </div>
    </noscript>
</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('expert-tip-hvac');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 20px; width: 100%; border: 2px solid #dc2626;">
                    <span style="font-size: 32px; margin-bottom: 15px;">🔒</span>
                    <div style="font-size: 20px; font-weight: bold; margin-bottom: 10px;">Moduł ekspercki chroniony autorsko</div>
                    <p style="font-size: 14px; color: #7f1d1d;">Rekomendacja ekspercka Roberta Kucharskiego jest własnością Projekt-Ogrzewania.pl.</p>
                </div>
            `;
            container.style.borderLeft = 'none';
            container.style.background = 'transparent';
            container.style.padding = '0';
        }
    }
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #f8fafc;
}

/* ZAJAWKA SEO I LINK */
.calc-intro {
    max-width: 1150px;
    margin: 40px auto 10px auto;
    text-align: center;
    padding: 0 20px;
}

.calc-intro h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--primary);
    margin-bottom: 15px;
}

.calc-intro p {
    font-size: 16px;
    color: #475569;
    line-height: 1.6;
    max-width: 800px;
    margin: 0 auto;
}

.screed-calc {
    max-width: 1150px;
    margin: 30px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.1);
    overflow: hidden;
    color: var(--primary);
}

.calc-grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
}

/* LEWA STRONA - KONFIGURACJA */
.config-side {
    padding: 40px;
    background: #ffffff;
}

.section-title {
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    color: #94a3b8;
    letter-spacing: 1.2px;
    margin-bottom: 20px;
    display: block;
}

.type-selector {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
    margin-bottom: 30px;
}

.type-btn {
    padding: 14px 8px;
    border: 2px solid #cbd5e1;
    border-radius: 12px;
    cursor: pointer;
    text-align: center;
    font-weight: 700;
    font-size: 13px;
    color: #475569;
    background: #fff;
    transition: all 0.2s;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

.type-btn span {
    margin-top: 4px;
}

.type-btn.active {
    border-color: var(--accent);
    background: #eff6ff;
    color: var(--accent);
    box-shadow: 0 4px 12px rgba(37, 99, 235, 0.1);
}

.input-wrap { margin-bottom: 25px; }
.input-label-row {
    display: flex;
    justify-content: space-between;
    margin-bottom: 8px;
    align-items: center;
}
.input-label-row label { font-weight: 600; font-size: 14px; }
.input-label-row .val-badge {
    background: #f1f5f9;
    padding: 4px 12px;
    border-radius: 8px;
    font-weight: 800;
    color: var(--accent);
    font-size: 14px;
}

input[type=range] {
    width: 100%; height: 6px; background: #e2e8f0; border-radius: 10px; appearance: none; outline: none; margin-top: 10px;
}
input[type=range]::-webkit-slider-thumb {
    appearance: none; width: 22px; height: 22px; background: var(--accent); border-radius: 50%; border: 3px solid white; box-shadow: 0 2px 5px rgba(0,0,0,0.15); cursor: pointer;
}

/* PRAWA STRONA - WYNIKI */
.result-side {
    padding: 40px;
    background: var(--bg-light);
    border-left: 1px solid #f1f5f9;
}

.main-score-box {
    background: white; padding: 30px; border-radius: 20px; text-align: center; box-shadow: 0 10px 25px rgba(0,0,0,0.03); margin-bottom: 25px; border-bottom: 6px solid var(--success); transition: 0.3s;
}
.score-num { font-size: 42px; font-weight: 900; line-height: 1.1; display: block; margin: 10px 0; color: var(--primary); }
.score-label { font-size: 12px; color: #64748b; font-weight: 700; text-transform: uppercase; }

#risk-msg {
    margin-top: 15px; padding: 12px; border-radius: 10px; font-size: 13px; font-weight: 600; display: none; background: #fee2e2; color: var(--danger); border: 1px solid #fecaca; line-height: 1.4; text-align: left;
}

.tech-grid {
    background: var(--primary); color: white; padding: 25px; border-radius: 20px; display: grid; gap: 12px;
}
.tech-item {
    display: flex; justify-content: space-between; padding-bottom: 12px; border-bottom: 1px solid #1e293b; align-items: center;
}
.tech-item:last-child { border: none; padding-bottom: 0; }
.tech-item span { color: #94a3b8; font-size: 13px; }
.tech-item strong { font-size: 15px; text-align: right; color: #fff;}

.material-grid {
    display: grid; grid-template-columns: 1fr; gap: 10px; margin-top: 15px;
}
.mini-card { background: rgba(255,255,255,0.08); padding: 15px; border-radius: 12px; text-align: center;}
.mini-card span { font-size: 11px; color: #94a3b8; display: block; margin-bottom: 6px; text-transform: uppercase; font-weight: 600;}
.mini-card strong { font-size: 18px; color: #fbbf24; }

/* STOPKA */
.footer-cta {
    margin: 0 40px 40px 40px;
    padding: 30px;
    background: #eff6ff;
    border-radius: 20px;
    border-left: 6px solid var(--accent);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 30px;
}

.cta-text-side {
    max-width: 550px;
}

.cta-buttons-stack {
    display: flex;
    flex-direction: column; 
    gap: 12px;
    min-width: 280px; 
}

.cta-btn {
    display: block; background: var(--accent); color: white; text-decoration: none; padding: 16px 20px; border-radius: 12px; font-weight: 800; transition: 0.3s; font-size: 13px; text-align: center; border: none; cursor: pointer;
}
.cta-btn:hover { transform: translateY(-3px); box-shadow: 0 5px 15px rgba(37, 99, 235, 0.2); }

@media (max-width: 900px) {
    .calc-grid { grid-template-columns: 1fr; }
    .footer-cta { flex-direction: column; text-align: center; gap: 25px; margin: 20px; }
    .cta-buttons-stack { min-width: 100%; width: 100%; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Kalkulator średnicy rury zasilającej do rozdzielacza",
    "description": "Narzędzie inżynierskie pozwalające obliczyć optymalną średnicę rury doprowadzającej wodę do rozdzielacza na podstawie liczby pętli, ich długości oraz prędkości przepływu.",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Przepływ cieczy (Q)",
        "value": "N * Lavg * 0.02 (l/min)"
      },
      {
        "@type": "PropertyValue",
        "name": "Średnica wewnętrzna (d)",
        "value": "√(21.22 * Q / v)"
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Kalkulator średnicy rury zasilającej",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "description": "Profesjonalny kalkulator do obliczania średnicy rury zasilającej rozdzielacz, przeliczający średnicę wewnętrzną na powszechnie dostępne rury komercyjne (np. 20x2.0, 25x2.5).",
    "featureList": [
      "Obliczanie przepływu całkowitego",
      "Dobór prędkości przepływu",
      "Wskazanie konkretnej średnicy zewnętrznej rury"
    ]
  }
]
</script>

<div class="calc-intro">
    <h2>Kalkulator średnicy rury zasilającej do rozdzielacza w ogrzewaniu podłogowym</h2>
    <p>Nasz kalkulator umożliwia szybkie i intuicyjne obliczenie optymalnej średnicy rury zasilającej rozdzielacz w systemie ogrzewania podłogowego. Algorytm wylicza matematyczną średnicę wewnętrzną, a następnie dopasowuje do niej najbliższą <strong>rekomendowaną rurę dostępną w handlu</strong>. Pamiętaj: weryfikuj skomplikowane układy z projektantem.</p>
</div>

<div class="screed-calc" id="pipe-diam-app">
    <div class="calc-grid">
        <div class="config-side">
            
            <span class="section-title">1. Parametry układu</span>
            <div class="input-wrap">
                <div class="input-label-row"><label>Liczba pętli (N)</label><span class="val-badge"><span id="v-loops">8</span> szt.</span></div>
                <input type="range" id="inp-loops" min="2" max="24" step="1" value="8">
                <div style="font-size: 11px; color: #64748b; margin-top: 8px;">Ile obwodów obsłuży Twój rozdzielacz?</div>
            </div>
            
            <div class="input-wrap">
                <div class="input-label-row"><label>Średnia długość pętli (Lₐᵥ)</label><span class="val-badge"><span id="v-length">75</span> m</span></div>
                <input type="range" id="inp-length" min="30" max="120" step="1" value="75">
                <div style="font-size: 11px; color: #64748b; margin-top: 8px;">Długość ułożonej rury na jeden obwód.</div>
            </div>

            <span class="section-title">2. Prędkość przepływu wody (v)</span>
            <div class="type-selector" style="margin-bottom:0">
                <div class="type-btn" id="btn-vel-06">0.6 m/s<span style="font-size:10px; font-weight:400">Bardzo cicho / Duża rura</span></div>
                <div class="type-btn active" id="btn-vel-10">1.0 m/s<span style="font-size:10px; font-weight:400">Optymalnie / Standard</span></div>
                <div class="type-btn" id="btn-vel-12">1.2 m/s<span style="font-size:10px; font-weight:400">Podwyższona (Kompakt)</span></div>
                <div class="type-btn" id="btn-vel-15">1.5 m/s<span style="font-size:10px; font-weight:400">Max / Ryzyko szumów</span></div>
            </div>
        </div>

        <div class="result-side">
            <div id="mainBox" class="main-score-box">
                <span class="score-label">Rekomendowana rura zasilająca</span>
                <span class="score-num" id="resPipe">Rura 25 x 2.5</span>
                <span class="score-label">lub odpowiednik miedziany / stalowy</span>
                <div id="risk-msg">⚠️ Uwaga!</div>
            </div>

            <div class="tech-grid">
                <div class="tech-item"><span>Szacowany przepływ (Q):</span><strong id="resQ">&#8212;</strong></div>
                <div class="tech-item"><span>Wymagana średnica wewn. (d):</span><strong id="resD">&#8212;</strong></div>
                
                <div class="material-grid">
                    <div class="mini-card">
                        <span>Dlaczego taka średnica?</span>
                        <div style="font-size: 12px; color: #cbd5e1; line-height: 1.5; text-transform: none; font-weight: 400; margin-top: 5px;">
                            Wzór matematyczny oblicza przekrój wewnętrzny cieczy. Narzędzie automatycznie dobiera standardową rurę komercyjną (zewnętrzną), uwzględniając grubość jej ścianki.
                        </div>
                    </div>
                </div>
            </div>
            
        </div>
    </div>

    <div class="footer-cta">
        <div class="cta-text-side">
            <h3 style="margin:0 0 10px 0; color:#1e3a8a">Dobierz odpowiedni rozdzielacz</h3>
            <p style="margin:0; font-size:14px; color:#475569">Skoro znasz już średnicę zasilania, upewnij się, że wybierzesz rozdzielacz najwyższej klasy ze stali nierdzewnej lub mosiądzu.</p>
        </div>
        <div class="cta-buttons-stack">
            <a href="https://projekt-ogrzewania.pl/produkt/rozdzielacz-ze-stali-nierdzewnej-inox-do-ogrzewania-podlogowego-z-rotametrami/" class="cta-btn">
                ZOBACZ ROZDZIELACZE INOX →
            </a>
            <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="cta-btn" style="background:#1e293b">
                ZAMÓW PROJEKT INŻYNIERSKI
            </a>
        </div>
    </div>

    <noscript>
        <div style="padding: 30px; background: #f8fafc; border-top: 1px solid #e2e8f0; font-family: sans-serif;">
            <h3 style="font-size: 18px; color: #0f172a;">Metodyka obliczeń średnicy rury</h3>
            <p style="font-size: 13px; color: #475569; line-height: 1.6;">
                Narzędzie wykorzystuje standardowe zasady mechaniki płynów dla instalacji C.O. Wzór d = √(21.22 * Q / v) wylicza czystą średnicę wewnętrzną przewodu w milimetrach. Następnie wynik konwertowany jest na standardowy typoszereg rur dostępnych w hurtowniach (np. PEX 16&#215;2.0 ma średnicę wewnętrzną 12 mm, a PEX 25&#215;2.5 ma 20 mm).
            </p>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // BLOKADA DOMENOWA (Domain Lock)
    var domain = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (allowedDomains.indexOf(domain) === -1) {
        var appContainer = document.getElementById('pipe-diam-app');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px; font-family: sans-serif;">' +
                '<span style="font-size: 48px; display: block; margin-bottom: 15px;">🔒</span>' +
                '<div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px; color: #dc2626;">Narzędzie chronione</div>' +
                '<p style="font-size: 16px; margin-bottom: 25px;">Ten kalkulator jest własnością serwisu <a href="https://projekt-ogrzewania.pl/" style="color: #dc2626; font-weight: bold; text-decoration: underline;">Projekt-Ogrzewania.pl</a></p>' +
                '<a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 14px 28px; background: #dc2626; color: #ffffff; text-decoration: none; border-radius: 12px; font-weight: 800;">PRZEJDŹ DO ORYGINAŁU</a>' +
                '</div>';
        }
        return; 
    }

    var velocityMps = 1.0; // Domyślna prędkość: 1.0 m/s
    
    // Typoszereg standardowych rur (Średnica wewnętrzna do Zewnętrznej)
    var pipeSizes = [
        { maxInternal: 12.0, name: "16 x 2.0" },
        { maxInternal: 16.0, name: "20 x 2.0" },
        { maxInternal: 20.0, name: "25 x 2.5" },
        { maxInternal: 26.0, name: "32 x 3.0" },
        { maxInternal: 33.0, name: "40 x 3.5" },
        { maxInternal: 42.0, name: "50 x 4.0" },
        { maxInternal: 54.0, name: "63 x 4.5" }
    ];

    function updateCalc() {
        var loopsEl = document.getElementById('inp-loops');
        var lengthEl = document.getElementById('inp-length');
        
        if(!loopsEl || !lengthEl) return;

        var loops = parseInt(loopsEl.value);
        var length = parseInt(lengthEl.value);
        
        // Aktualizacja widoków wartości na suwakach
        document.getElementById('v-loops').innerText = loops;
        document.getElementById('v-length').innerText = length;

        // Stała przepływu dla ΔT = 10°C
        var C = 0.02;

        // Obliczenia
        var Q = loops * length * C; // l/min
        var d = Math.sqrt((21.22 * Q) / velocityMps); // mm (średnica wewnętrzna)
        
        // Znajdowanie rury
        var recommendedPipe = "Ponad 63 mm (Projekt Specjalny)";
        for (var i = 0; i < pipeSizes.length; i++) {
            if (d <= pipeSizes[i].maxInternal) {
                recommendedPipe = pipeSizes[i].name;
                break;
            }
        }

        // Aktualizacja UI
        document.getElementById('resPipe').innerText = recommendedPipe;
        document.getElementById('resQ').innerText = Q.toFixed(1) + ' l/min';
        document.getElementById('resD').innerText = d.toFixed(1) + ' mm';

        // Logika ostrzeżeń i kolorów
        var mBox = document.getElementById('mainBox');
        var rMsg = document.getElementById('risk-msg');
        var warnings = [];
        var boxColor = 'var(--success)';

        if (velocityMps >= 1.5) { 
            warnings.push('⚠️ <strong>Wysoka prędkość (1.5 m/s):</strong> Zwiększone ryzyko powstawania szumów instalacyjnych i kawitacji. Pompa będzie pracować na wyższych oporach.'); 
            boxColor = 'var(--warning)'; 
        }
        if (d > 33) {
            warnings.push('ℹ️ <strong>Duży układ:</strong> Rozdzielacz o tak dużym zapotrzebowaniu wymaga rur tranzytowych o przekroju przemysłowym. Rozważ podział na dwa mniejsze rozdzielacze.');
            boxColor = (boxColor === 'var(--warning)') ? 'var(--warning)' : 'var(--accent)';
        }

        if (warnings.length > 0) {
            rMsg.innerHTML = warnings.join('<br><br>');
            rMsg.style.display = 'block';
            if(boxColor === 'var(--warning)') rMsg.style.color = '#9a3412';
            if(boxColor === 'var(--warning)') rMsg.style.background = '#fef3c7';
            if(boxColor === 'var(--warning)') rMsg.style.borderColor = '#fde68a';
        } else {
            rMsg.style.display = 'none';
        }
        mBox.style.borderBottomColor = boxColor;
    }

    // Obsługa przycisków prędkości
    var velOptions = {
        'btn-vel-06': 0.6,
        'btn-vel-10': 1.0,
        'btn-vel-12': 1.2,
        'btn-vel-15': 1.5
    };

    var btnKeys = Object.keys(velOptions);
    for (var i = 0; i < btnKeys.length; i++) {
        (function(btnId) {
            var btn = document.getElementById(btnId);
            if(btn) {
                btn.addEventListener('click', function(e) {
                    velocityMps = velOptions[btnId];
                    // Reset klas active
                    for(var j = 0; j < btnKeys.length; j++) {
                        var el = document.getElementById(btnKeys[j]);
                        if(el) { el.classList.remove('active'); }
                    }
                    e.currentTarget.classList.add('active');
                    updateCalc();
                });
            }
        })(btnKeys[i]);
    }

    // Obsługa suwaków
    var loopsInput = document.getElementById('inp-loops');
    var lengthInput = document.getElementById('inp-length');
    
    if(loopsInput) loopsInput.addEventListener('input', updateCalc);
    if(lengthInput) lengthInput.addEventListener('input', updateCalc);

    // Inicjalizacja
    updateCalc();
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
}

.premium-myth-box {
    max-width: 1050px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.1);
    border: 1px solid var(--border-color);
    overflow: hidden;
    color: var(--primary);
}

.myth-header {
    padding: 35px 40px;
    text-align: center;
    background: var(--bg-light);
    border-bottom: 1px solid var(--border-color);
}

.myth-header h3 {
    margin: 0 0 15px 0;
    font-size: 26px;
    font-weight: 900;
}

.myth-header p {
    margin: 0 auto;
    max-width: 800px;
    font-size: 15px;
    line-height: 1.6;
    color: #475569;
}

.myth-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 25px;
    padding: 40px;
    background: #ffffff;
}

/* FLIP CARD STYLES */
.flip-card {
    background-color: transparent;
    width: 100%;
    min-height: 350px;
    perspective: 1000px;
    cursor: pointer;
}

.flip-card-inner {
    position: relative;
    width: 100%;
    height: 100%;
    text-align: center;
    transition: transform 0.6s cubic-bezier(0.4, 0.2, 0.2, 1);
    transform-style: preserve-3d;
}

.flip-card.is-flipped .flip-card-inner {
    transform: rotateY(180deg);
}

.flip-card-front, .flip-card-back {
    position: absolute;
    width: 100%;
    height: 100%;
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
    border-radius: 20px;
    padding: 30px 20px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);
    border: 2px solid transparent;
}

.flip-card-front {
    background-color: #fef2f2;
    border-color: #fecaca;
    color: var(--danger);
}

.flip-card-back {
    background-color: #f0fdf4;
    border-color: #bbf7d0;
    color: var(--success);
    transform: rotateY(180deg);
}

.card-icon {
    font-size: 42px;
    margin-bottom: 15px;
    line-height: 1;
}

.card-title {
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 10px;
    opacity: 0.8;
}

.card-text {
    font-size: 15px;
    font-weight: 700;
    line-height: 1.5;
    margin: 0;
}

.flip-card-back .card-title {
    color: var(--success);
}

.flip-card-back .card-text {
    font-size: 14px;
    font-weight: 500;
    color: #166534;
    line-height: 1.6;
}

.flip-card-back .card-text a {
    color: #15803d;
    text-decoration: underline;
    font-weight: 700;
}

.flip-hint {
    margin-top: 20px;
    font-size: 12px;
    font-weight: 700;
    background: rgba(255,255,255,0.8);
    padding: 6px 16px;
    border-radius: 20px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.05);
}

.myth-summary {
    margin: 0 40px 40px 40px;
    padding: 30px;
    background: #eff6ff;
    border-radius: 20px;
    border-left: 6px solid var(--accent);
}

.myth-summary h4 {
    margin: 0 0 10px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--primary);
}

.myth-summary p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: #334155;
}

@media (max-width: 900px) {
    .myth-grid { grid-template-columns: 1fr; gap: 20px; padding: 25px 20px; }
    .flip-card { min-height: 280px; }
    .myth-summary { margin: 0 20px 25px 20px; padding: 25px 20px; }
    .myth-header { padding: 25px 20px; }
}
</style>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Dataset",
  "name": "Fakty i mity o doborze średnicy rury zasilającej",
  "description": "Zestawienie najczęstszych błędnych przekonań instalatorów i inwestorów dotyczących rur zasilających rozdzielacz w systemach płaszczyznowych.",
  "license": "https://projekt-ogrzewania.pl/",
  "creator": {
    "@type": "Person",
    "name": "Robert Kucharski"
  }
}
</script>

<div class="premium-myth-box" id="diam-myth-app">
    <div class="myth-header">
        <h3>Fakty i Mity Instalacyjne: Zasilanie Rozdzielacza</h3>
        <p>Wielu domorosłych monterów uważa, że to, <strong>jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego</strong> zostanie zastosowana, nie ma większego znaczenia, byle woda dopłynęła. To prosty przepis na awarię. <strong>Kliknij kartę, aby obalić najgroźniejsze mity.</strong></p>
    </div>

    <div class="myth-grid">
        <div class="flip-card" onclick="this.classList.toggle('is-flipped')">
            <div class="flip-card-inner">
                <div class="flip-card-front">
                    <div class="card-icon">🚰</div>
                    <div class="card-title">MIT #1</div>
                    <p class="card-text">"Zostało mi dużo rury PEX 16 mm z układania pętli, więc użyję jej, by podłączyć kocioł z rozdzielaczem. Woda i tak dopłynie."</p>
                    <div class="flip-hint" style="color: var(--danger)"><span>Odwróć kartę</span> ⤵</div>
                </div>
                <div class="flip-card-back">
                    <div class="card-icon">🛑</div>
                    <div class="card-title">FAKT</div>
                    <p class="card-text"><strong>To absolutne wąskie gardło!</strong> Rura zasilająca musi dostarczyć całkowity zład wody dla wszystkich pętli naraz. Zwykła rurka 16mm zdławi przepływ, a Twoja <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa</a> zatrze się próbując przepchnąć ciecz pod gigantycznym oporem.</p>
                </div>
            </div>
        </div>

        <div class="flip-card" onclick="this.classList.toggle('is-flipped')">
            <div class="flip-card-inner">
                <div class="flip-card-front">
                    <div class="card-icon">🐘</div>
                    <div class="card-title">MIT #2</div>
                    <p class="card-text">"Większa rura to mniejsze opory. Kupię najgrubszą możliwą rurę 40 mm i będę miał spokój na lata."</p>
                    <div class="flip-hint" style="color: var(--danger)"><span>Odwróć kartę</span> ⤵</div>
                </div>
                <div class="flip-card-back">
                    <div class="card-icon">💸</div>
                    <div class="card-title">FAKT</div>
                    <p class="card-text"><strong>Przewymiarowanie to strata pieniędzy i nerwów.</strong> Rury o tak dużej średnicy są niezwykle sztywne, co zamieni montaż w szafce w koszmar. Dodatkowo, masywne zawory kulowe i śrubunki wyczyszczą Twój portfel. Wybieraj <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnice rur</a> dokładnie pod wyliczenia.</p>
                </div>
            </div>
        </div>

        <div class="flip-card" onclick="this.classList.toggle('is-flipped')">
            <div class="flip-card-inner">
                <div class="flip-card-front">
                    <div class="card-icon">🌊</div>
                    <div class="card-title">MIT #3</div>
                    <p class="card-text">"Prędkość przepływu wody w rurze zasilającej nie ma znaczenia, liczy się tylko odpowiednia temperatura zasilania."</p>
                    <div class="flip-hint" style="color: var(--danger)"><span>Odwróć kartę</span> ⤵</div>
                </div>
                <div class="flip-card-back">
                    <div class="card-icon">📐</div>
                    <div class="card-title">FAKT</div>
                    <p class="card-text"><strong>Prędkość to klucz do komfortu.</strong> Jeśli przepływ przekroczy 1,5 m/s, instalacja zacznie nieprzyjemnie szumieć, a energia wytraci się na tarciu. Jeśli spadnie poniżej 0,5 m/s, najdalsze obiegi nie zdążą się nagrzać. Celuj zawsze w prędkość ok. 1,0 m/s.</p>
                </div>
            </div>
        </div>
    </div>

    <div class="myth-summary">
        <h4>Podsumowanie: Fizyki nie oszukasz</h4>
        <p>Instalacja grzewcza to organizm, w którym rura zasilająca pełni rolę głównej tętnicy. Wybór "na oko" – zarówno zbyt małej rurki, jak i ogromnego rurociągu – prowadzi do problemów z ciśnieniem, głośnej pracy i niepotrzebnych wydatków. <strong>Korzystaj z kalkulatorów i dobieraj średnice na podstawie twardych danych!</strong></p>
    </div>

    <noscript>
        <div style="padding: 30px; background: #f8fafc; border-top: 1px solid #e2e8f0; font-family: sans-serif;">
            <h2 style="font-size: 18px; color: #0f172a;">Najczęstsze mity: Dobór rury zasilającej</h2>
            <ul style="font-size: 14px; color: #334155; line-height: 1.6;">
                <li><strong>MIT 1: Można zasilić rozdzielacz zwykłą rurą PEX 16 mm.</strong><br>
                FAKT: Rura zasilająca musi przenieść wodę dla wszystkich pętli. Średnica 16 mm stworzy wąskie gardło i spali pompę obiegową.</li>
                <li><strong>MIT 2: Im grubsza rura, tym lepiej (przewymiarowanie).</strong><br>
                FAKT: Zbyt grube rury są trudne w montażu (nie dają się wyginać w szafce) i wymagają bardzo drogich zaworów kulowych i złączek.</li>
                <li><strong>MIT 3: Prędkość wody nie ma znaczenia.</strong><br>
                FAKT: Zbyt duża prędkość (>1,5 m/s) powoduje szumy w rurach, zbyt mała (<0,5 m/s) skutkuje zimną podłogą na końcach pętli. Złoty standard to 1,0 m/s.</li>
            </ul>
        </div>
    </noscript>
</div>

<script>
// ZABEZPIECZENIE DOMENOWE (Domain Lock - Czysty JS)
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 appContainer = document.getElementById('diam-myth-app');
        if (appContainer) {
            appContainer.innerHTML = `
                <div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 400px; border-radius: 24px; font-family: sans-serif;">
                    <span style="font-size: 48px; margin-bottom: 20px;">🔒</span>
                    <div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona prawem autorskim</div>
                    <p style="font-size: 16px; max-width: 500px; color: #7f1d1d; line-height: 1.5;">To zestawienie mitów instalacyjnych jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i zostało skopiowane nielegalnie.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="margin-top: 25px; padding: 14px 28px; background: #dc2626; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s;">ZOBACZ ORYGINALNY ARTYKUŁ</a>
                </div>
            `;
        }
    }
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --accent-light: #eff6ff;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
    --text-muted: #475569;
}

.premium-faq-box {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 20px 40px -12px rgba(0, 0, 0, 0.05);
    border: 1px solid var(--border-color);
    overflow: hidden;
    color: var(--primary);
}

.faq-header {
    padding: 40px 40px 30px 40px;
    text-align: center;
    background: var(--bg-light);
    border-bottom: 1px solid var(--border-color);
    position: relative;
}

.faq-header::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 4px;
    background: var(--accent);
}

.faq-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--accent-light);
    color: var(--accent);
    padding: 6px 16px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
}

.faq-header h3 {
    margin: 0 0 15px 0;
    font-size: 28px;
    font-weight: 900;
    color: var(--primary);
}

.faq-header p {
    margin: 0;
    font-size: 15px;
    color: var(--text-muted);
    line-height: 1.6;
}

.faq-content {
    padding: 20px 40px 40px 40px;
}

/* INTERAKTYWNY AKORDEON Z MIKRO-INTERAKCJAMI */
.faq-item {
    border-bottom: 1px solid var(--border-color);
    transition: all 0.3s ease;
    border-left: 4px solid transparent;
    padding-left: 15px;
    margin-bottom: 10px;
    border-radius: 8px;
}

.faq-item:hover {
    background: #f8fafc;
    border-left-color: #cbd5e1;
}

.faq-item.active {
    background: #ffffff;
    border-left-color: var(--accent);
    box-shadow: 0 4px 15px rgba(0,0,0,0.03);
    padding-bottom: 10px;
    border-bottom: 1px solid transparent;
}

.faq-question {
    width: 100%;
    text-align: left;
    background: none;
    border: none;
    padding: 20px 0;
    font-size: 16px;
    font-weight: 700;
    color: var(--primary);
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 15px;
    font-family: inherit;
    transition: color 0.2s ease;
}

.faq-question:hover {
    color: var(--accent);
}

.faq-q-icon {
    font-size: 22px;
    flex-shrink: 0;
    filter: grayscale(0.2);
    transition: 0.3s;
}

.faq-item.active .faq-q-icon {
    filter: grayscale(0);
    transform: scale(1.1);
}

.faq-q-text {
    flex-grow: 1;
    padding-right: 20px;
}

.faq-toggle-icon {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--bg-light);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--accent);
    font-size: 18px;
    font-weight: 300;
    transition: transform 0.4s ease, background 0.3s ease, color 0.3s ease;
    border: 1px solid #e2e8f0;
}

.faq-item.active .faq-toggle-icon {
    transform: rotate(45deg);
    background: var(--accent);
    color: #ffffff;
    border-color: var(--accent);
    box-shadow: 0 4px 10px rgba(37, 99, 235, 0.2);
}

.faq-item.active .faq-question {
    color: var(--accent);
}

/* Animacja otwierania CSS Grid Trick */
.faq-answer-wrapper {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.faq-item.active .faq-answer-wrapper {
    grid-template-rows: 1fr;
}

.faq-answer-inner {
    overflow: hidden;
}

.faq-answer-text {
    padding: 0 0 15px 37px;
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--text-muted);
}

.faq-answer-text strong {
    color: var(--primary);
}

.faq-answer-text a {
    color: var(--accent);
    text-decoration: none;
    font-weight: 600;
    border-bottom: 1px dashed var(--accent);
    transition: all 0.3s ease;
}

.faq-answer-text a:hover {
    color: #60a5fa;
    border-bottom-color: #60a5fa;
}

@media (max-width: 768px) {
    .faq-header { padding: 30px 20px 25px 20px; }
    .faq-content { padding: 10px 20px 30px 20px; }
    .faq-question { font-size: 15px; padding: 15px 0; }
    .faq-toggle-icon { width: 28px; height: 28px; font-size: 16px; }
    .faq-answer-text { padding-left: 0; }
}
</style>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "license": "https://projekt-ogrzewania.pl/",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Jak dokładnie dobrać średnicę rury zasilającej rozdzielacz w ogrzewaniu podłogowym?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Odpowiedź na to, jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego będzie właściwa, zależy od trzech kluczowych czynników: całkowitej liczby pętli, ich uśrednionej długości oraz zakładanej prędkości przepływu wody. Zamiast zgadywać, najlepiej wykorzystać wzory matematyczne z zakresu mechaniki płynów lub gotowy kalkulator online, który wskaże optymalny wymiar rury.",
        "author": {
          "@type": "Person",
          "name": "Robert Kucharski"
        }
      }
    },
    {
      "@type": "Question",
      "name": "Co się stanie, jeśli wybiorę zbyt małą średnicę rury do rozdzielacza?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Zbyt mały przekrój rury tworzy wąskie gardło instalacji, co drastycznie zwiększa opory hydrauliczne. Prowadzi to do ogromnego obciążenia pompy obiegowej, szumów w instalacji oraz nierównomiernego rozprowadzania ciepła (najdalsze strefy mogą być trwale niedogrzane).",
        "author": {
          "@type": "Person",
          "name": "Robert Kucharski"
        }
      }
    },
    {
      "@type": "Question",
      "name": "Czy można po prostu przewymiarować rurę zasilającą (dać większą na zapas)?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Technicznie jest to możliwe, ale w praktyce stanowi błąd projektowy. Zbyt duża średnica (np. zastosowanie rury 32 mm tam, gdzie wystarczy 20 mm) drastycznie zwiększa koszty rur, potężnych zaworów kulowych i złączek. Ponadto grube rury są niezwykle sztywne, co znacznie utrudnia prawidłowy montaż i profilowanie podejść do rozdzielacza.",
        "author": {
          "@type": "Person",
          "name": "Robert Kucharski"
        }
      }
    },
    {
      "@type": "Question",
      "name": "Jakie są zalecane prędkości przepływu w rurach zasilających?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Optymalna prędkość przepływu wody na zasilaniu rozdzielacza wynosi od 0,5 do 1,5 m/s, przy czym złotym środkiem instalatorskim jest 1,0 m/s. Prędkość powyżej 1,5 m/s generuje słyszalny hałas i straty energii na tarciu, a poniżej 0,5 m/s grozi niedogrzewaniem krańcowych pętli podłogówki.",
        "author": {
          "@type": "Person",
          "name": "Robert Kucharski"
        }
      }
    },
    {
      "@type": "Question",
      "name": "Czy kalkulator średnicy rury daje w 100% dokładne wyniki?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Kalkulator online daje bardzo dokładne wyniki teoretyczne i stanowi świetny punkt wyjścia dla instalatora. Oblicza on zapotrzebowanie dla idealnych warunków przepływu. Niemniej, w rozbudowanych instalacjach o wielu kondygnacjach warto zawsze zweryfikować obliczenia z doświadczonym projektantem, który uwzględni miejscowe straty ciśnienia na złączkach, kolanach i filtrach.",
        "author": {
          "@type": "Person",
          "name": "Robert Kucharski"
        }
      }
    }
  ]
}
</script>

<div class="premium-faq-box" id="faq-app-lock">
    <div class="faq-header">
        <div class="faq-badge">Baza Wiedzy P&O</div>
        <h3>Rozwiewamy inżynierskie wątpliwości</h3>
        <p>Przekrój zasilania to fundament hydrauliki podłogowej. Oto odpowiedzi na najczęściej zadawane pytania dotyczące doboru średnicy rur.</p>
    </div>

    <div class="faq-content">
        
        <div class="faq-item">
            <button class="faq-question">
                <span class="faq-q-icon">📐</span>
                <span class="faq-q-text">1. Jak dokładnie dobrać średnicę rury zasilającej rozdzielacz w ogrzewaniu podłogowym?</span>
                <div class="faq-toggle-icon">+</div>
            </button>
            <div class="faq-answer-wrapper">
                <div class="faq-answer-inner">
                    <p class="faq-answer-text">
                        Odpowiedź na to, <strong>jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego</strong> będzie właściwa, zależy od trzech kluczowych czynników: całkowitej liczby pętli, ich uśrednionej długości oraz zakładanej prędkości przepływu wody. Zamiast zgadywać, najlepiej wykorzystać wzory matematyczne z zakresu mechaniki płynów lub nasz darmowy kalkulator online, który od razu wskaże optymalny wymiar zewnętrzny. Pamiętaj, że dobór zasilania to podstawa, ale równie ważne jest to, by na dalszym etapie poprawnie dobrać <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnicę rur w samej podłogówce</a>.
                    </p>
                </div>
            </div>
        </div>

        <div class="faq-item">
            <button class="faq-question">
                <span class="faq-q-icon">⚠️</span>
                <span class="faq-q-text">2. Co się stanie, jeśli wybiorę zbyt małą średnicę rury do rozdzielacza?</span>
                <div class="faq-toggle-icon">+</div>
            </button>
            <div class="faq-answer-wrapper">
                <div class="faq-answer-inner">
                    <p class="faq-answer-text">
                        Zbyt mały przekrój rury tworzy drastyczne <strong>wąskie gardło</strong> instalacji, radykalnie zwiększając opory hydrauliczne. Prowadzi to do niepotrzebnego i szkodliwego przeciążenia <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">pompy obiegowej</a>. W efekcie instalacja zaczyna szybciej się zużywać, może generować uciążliwe szumy, a strefy położone najdalej od rozdzielacza pozostaną trwale niedogrzane z powodu zbyt małego litrażu dostarczanej wody.
                    </p>
                </div>
            </div>
        </div>

        <div class="faq-item">
            <button class="faq-question">
                <span class="faq-q-icon">💸</span>
                <span class="faq-q-text">3. Czy można po prostu przewymiarować rurę zasilającą (dać na zapas)?</span>
                <div class="faq-toggle-icon">+</div>
            </button>
            <div class="faq-answer-wrapper">
                <div class="faq-answer-inner">
                    <p class="faq-answer-text">
                        Technicznie jest to możliwe i bezpieczniejsze dla pompy, ale w praktyce stanowi <strong>błąd projektowy generujący duże straty</strong>. Zbyt duża średnica (np. ułożenie sztywnej rury PEX 32 mm tam, gdzie wystarczyłaby 20 mm) drastycznie zwiększa koszty inwestycji. Same rury, ogromne zawory kulowe, śrubunki i rozety są znacznie droższe. Ponadto grube przewody są niezwykle trudne w gięciu, co wydłuża montaż i utrudnia doprowadzenie układu do szafki podtynkowej.
                    </p>
                </div>
            </div>
        </div>

        <div class="faq-item">
            <button class="faq-question">
                <span class="faq-q-icon">🌊</span>
                <span class="faq-q-text">4. Jakie są zalecane prędkości przepływu w rurach zasilających?</span>
                <div class="faq-toggle-icon">+</div>
            </button>
            <div class="faq-answer-wrapper">
                <div class="faq-answer-inner">
                    <p class="faq-answer-text">
                        Optymalna prędkość przepływu wody na zasilaniu rozdzielacza wynosi <strong>od 0,5 do 1,5 m/s</strong>, przy czym swoistym złotym środkiem instalatorskim, gwarantującym bezproblemową pracę, jest wartość <strong>1,0 m/s</strong>. Zbyt wysoka prędkość (powyżej 1,5 m/s) generuje słyszalny hałas, ryzyko zjawiska kawitacji i straty energii na tarciu. Z kolei prędkość poniżej 0,5 m/s spowalnia reakcję systemu i grozi nierównomiernym ogrzewaniem poszczególnych pętli.
                    </p>
                </div>
            </div>
        </div>

        <div class="faq-item">
            <button class="faq-question">
                <span class="faq-q-icon">🧮</span>
                <span class="faq-q-text">5. Czy kalkulator średnicy rury daje w 100% dokładne wyniki?</span>
                <div class="faq-toggle-icon">+</div>
            </button>
            <div class="faq-answer-wrapper">
                <div class="faq-answer-inner">
                    <p class="faq-answer-text">
                        Kalkulator online zapewnia bardzo dokładne wyniki teoretyczne i stanowi świetny punkt wyjścia. Opiera się na idealnych warunkach laminarnych przepływu. Niemniej jednak, w domach o wielu kondygnacjach i skomplikowanych rozgałęzieniach, obliczenia takie warto zawsze podeprzeć <a href="https://projekt-ogrzewania.pl/czy-do-ogrzewania-podlogowego-potrzebny-jest-projekt/">profesjonalnym projektem instalacji</a>. Projektant w programie inżynierskim uwzględni bowiem bardzo ważne tzw. <strong>miejscowe straty ciśnienia</strong> na samych złączkach, zaworach odcinających i filtrach, których żaden prosty kalkulator nie obejmuje.
                    </p>
                </div>
            </div>
        </div>

    </div>

    <noscript>
        <div style="padding: 30px; background: #f8fafc; border-top: 1px solid #e2e8f0; font-family: sans-serif;">
            <h2 style="font-size: 18px; color: #0f172a; margin-bottom: 20px;">Podsumowanie sekcji FAQ - Zasilanie rozdzielacza</h2>
            <table style="width: 100%; border-collapse: collapse; font-size: 14px; text-align: left;">
                <thead>
                    <tr style="border-bottom: 2px solid #cbd5e1;">
                        <th style="padding: 10px; color: #475569;">Problem</th>
                        <th style="padding: 10px; color: #475569;">Diagnoza i zalecenia</th>
                    </tr>
                </thead>
                <tbody>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px; font-weight: bold;">Dobór średnicy rury</td>
                        <td style="padding: 10px;">Zawsze zależy od liczby pętli na rozdzielaczu, ich średniej długości i prędkości przepływu. Najlepiej korzystać z kalkulatorów.</td>
                    </tr>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px; font-weight: bold;">Zbyt mały przekrój</td>
                        <td style="padding: 10px;">Skutkuje wąskim gardłem: obciąża pompę obiegową, powoduje szumy i niedogrzewanie pomieszczeń.</td>
                    </tr>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px; font-weight: bold;">Zbyt duży przekrój (Przewymiarowanie)</td>
                        <td style="padding: 10px;">Teoretycznie bezpieczny układ, ale generujący ogromne koszty zaworów, złączek oraz wielkie trudności z wyginaniem rur pod szafką.</td>
                    </tr>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px; font-weight: bold;">Optymalna prędkość wody</td>
                        <td style="padding: 10px;">Od 0.5 do 1.5 m/s. Projektanci najczęściej optymalizują układy grzewcze na prędkość ok. 1.0 m/s.</td>
                    </tr>
                    <tr>
                        <td style="padding: 10px; font-weight: bold;">Dokładność kalkulatorów</td>
                        <td style="padding: 10px;">Są dokładne dla przepływów teoretycznych, lecz złożone domy z miejscowymi stratami ciśnień powinny posiadać pełny projekt instalacyjny.</td>
                    </tr>
                </tbody>
            </table>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // BLOKADA DOMENOWA
    var domain = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowedDomains.indexOf(domain) === -1) {
        var appContainer = document.getElementById('faq-app-lock');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;"><span style="font-size: 48px; display: block; margin-bottom: 15px;">🔒</span><div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona prawem autorskim</div><p>Skopiowano bez zgody Projekt-Ogrzewania.pl</p></div>';
        }
        return; 
    }

    // LOGIKA AKORDEONU
    const faqItems = document.querySelectorAll('.faq-item');

    faqItems.forEach(item => {
        const questionBtn = item.querySelector('.faq-question');
        
        questionBtn.addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            
            // Zamyka pozostałe
            faqItems.forEach(otherItem => {
                otherItem.classList.remove('active');
            });

            // Otwiera/Zamyka kliknięty
            if (!isActive) {
                item.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --sum-bg-gradient: linear-gradient(145deg, #1e293b 0%, #0f172a 100%);
    --sum-text: #f8fafc;
    --sum-accent: #3b82f6;
    --sum-danger: #ef4444;
    --sum-warning: #f59e0b;
    --sum-success: #10b981;
}

.premium-summary-box {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--sum-bg-gradient);
    border-radius: 24px;
    box-shadow: 0 30px 60px -15px rgba(0, 0, 0, 0.4);
    border: 1px solid #334155;
    overflow: hidden;
    color: var(--sum-text);
    position: relative;
}

/* Subtelny szum / poświata w tle */
.premium-summary-box::before {
    content: '';
    position: absolute;
    top: -50%;
    left: -50%;
    width: 200%;
    height: 200%;
    background: radial-gradient(circle, rgba(59,130,246,0.05) 0%, transparent 60%);
    z-index: 0;
    pointer-events: none;
}

.summary-content {
    position: relative;
    z-index: 1;
    padding: 50px;
}

.summary-header {
    text-align: center;
    margin-bottom: 35px;
}

.summary-icon {
    font-size: 56px;
    line-height: 1;
    margin-bottom: 20px;
    display: inline-block;
    filter: drop-shadow(0 4px 6px rgba(0,0,0,0.3));
}

.summary-header h2 {
    margin: 0 0 15px 0;
    font-size: 32px;
    font-weight: 900;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.summary-text {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    text-align: center;
    max-width: 800px;
    margin: 0 auto 30px auto;
}

.summary-text strong {
    color: #ffffff;
    font-weight: 700;
}

.summary-text a {
    color: var(--sum-accent);
    text-decoration: none;
    font-weight: 600;
    border-bottom: 1px dashed var(--sum-accent);
    transition: all 0.3s ease;
}

.summary-text a:hover {
    color: #60a5fa;
    border-bottom-color: #60a5fa;
}

/* WIZUALNA WAGA RYZYKA */
.risk-scale-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin: 40px 0;
}

.risk-card {
    background: rgba(255, 255, 255, 0.03);
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 16px;
    padding: 30px;
    text-align: center;
    transition: transform 0.3s ease;
}

.risk-card:hover {
    transform: translateY(-5px);
    background: rgba(255, 255, 255, 0.05);
}

.risk-card.bad-choice {
    border-bottom: 4px solid var(--sum-danger);
}

.risk-card.good-choice {
    border-bottom: 4px solid var(--sum-success);
}

.risk-label {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    font-weight: 800;
    margin-bottom: 15px;
    display: block;
}

.bad-choice .risk-label { color: #fca5a5; }
.good-choice .risk-label { color: #6ee7b7; }

.risk-value {
    font-size: 30px;
    font-weight: 900;
    color: #ffffff;
    margin-bottom: 10px;
    display: block;
}

.risk-desc {
    font-size: 14px;
    color: #94a3b8;
    line-height: 1.5;
    margin: 0;
}

/* CTA BUTTONS */
.summary-actions {
    display: flex;
    justify-content: center;
    gap: 20px;
    margin-top: 40px;
    flex-wrap: wrap;
}

.sum-btn {
    padding: 16px 32px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 800;
    text-decoration: none;
    transition: all 0.3s ease;
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

.sum-btn-primary {
    background: var(--sum-accent);
    color: #ffffff !important;
    box-shadow: 0 10px 20px -5px rgba(59, 130, 246, 0.5);
    border: 1px solid #60a5fa;
}

.sum-btn-primary:hover {
    transform: translateY(-3px);
    box-shadow: 0 15px 25px -5px rgba(59, 130, 246, 0.6);
    background: #2563eb;
}

.sum-btn-secondary {
    background: transparent;
    color: #ffffff !important;
    border: 2px solid #475569;
}

.sum-btn-secondary:hover {
    border-color: #cbd5e1;
    background: rgba(255, 255, 255, 0.05);
}

@media (max-width: 768px) {
    .summary-content { padding: 40px 25px; }
    .risk-scale-grid { grid-template-columns: 1fr; gap: 15px; }
    .summary-actions { flex-direction: column; width: 100%; gap: 15px; }
    .sum-btn { justify-content: center; width: 100%; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Podsumowanie: Jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego?",
    "abstract": "Wybór średnicy rury zasilającej rozdzielacz to kompromis między oporami hydraulicznymi a kosztami. Zobacz, dlaczego precyzyjne obliczenia są niezbędne dla sprawności pompy i komfortu cieplnego.",
    "license": "https://projekt-ogrzewania.pl/",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Konsekwencje doboru średnicy rury zasilającej",
    "description": "Zestawienie porównawcze ryzyk związanych ze zbyt małą średnicą rury zasilającej względem rury optymalnej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="premium-summary-box" id="summary-app-lock">
    <div class="summary-content">
        
        <div class="summary-header">
            <span class="summary-icon">⚖️</span>
            <h2>Podsumowanie: Złoty środek w hydraulice</h2>
        </div>

        <p class="summary-text">
            Odpowiedź na pytanie, <strong>jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego</strong> sprawdzi się najlepiej, zawsze opiera się na liczbach, a nie na zgadywaniu. Najważniejszą zasadą jest unikanie skrajności – zarówno zbyt małe, jak i zbyt duże przekroje znacząco pogarszają sprawność systemu.
        </p>

        <div class="risk-scale-grid">
            <div class="risk-card bad-choice">
                <span class="risk-label">Błąd Krytyczny</span>
                <span class="risk-value">Zbyt mała rura</span>
                <p class="risk-desc">Zbyt mała średnica drastycznie zwiększa <strong>opory hydrauliczne</strong>. Powoduje to szumy w instalacji, nierównomierne grzanie i skrajne przeciążenie pompy obiegowej.</p>
            </div>
            <div class="risk-card good-choice">
                <span class="risk-label">Optymalny Dobór</span>
                <span class="risk-value">Wyliczona średnica</span>
                <p class="risk-desc">Idealny przekrój gwarantuje prawidłową prędkość przepływu (0,5–1,5 m/s). To oznacza <strong>niskie zużycie prądu przez pompę</strong> i doskonały komfort cieplny na lata.</p>
            </div>
        </div>

        <p class="summary-text">
            Pamiętaj, że zasilanie rozdzielacza to tylko jeden z elementów układanki. Warto dowiedzieć się więcej o tym, jak dobrać <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/" target="_blank">średnice rur w ogrzewaniu podłogowym</a> w samych pętlach grzewczych. Koniecznie sprawdź również parametry swojego urządzenia tłoczącego – pomoże Ci w tym nasz darmowy <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/" target="_blank">kalkulator doboru pompy obiegowej</a>. Jeśli Twój układ jest bardzo rozbudowany, zawsze konsultuj projekt z profesjonalistą. Dokładne obliczenia to inwestycja, która zwraca się w każdym sezonie grzewczym!
        </p>

        <div class="summary-actions">
            <a href="https://projekt-ogrzewania.pl/blog/" class="sum-btn sum-btn-secondary">
                📖 CZYTAJ NASZ BLOG
            </a>
        </div>

    </div>

    <noscript>
        <div style="padding: 30px; background: #0f172a; border-top: 1px solid #334155; font-family: sans-serif; color: #cbd5e1;">
            <h3 style="color: #ffffff; margin-top: 0;">Konsekwencje doboru średnicy rury zasilającej</h3>
            <table style="width: 100%; border-collapse: collapse; font-size: 14px; text-align: left; margin-bottom: 20px;">
                <thead>
                    <tr style="border-bottom: 2px solid #334155;">
                        <th style="padding: 10px 0; color: #94a3b8;">Średnica zasilania</th>
                        <th style="padding: 10px 0; color: #94a3b8;">Wpływ na instalację</th>
                        <th style="padding: 10px 0; color: #94a3b8;">Skutek dla inwestora</th>
                    </tr>
                </thead>
                <tbody>
                    <tr style="border-bottom: 1px solid #1e293b;">
                        <td style="padding: 10px 0; font-weight: bold;">Zbyt mała (np. 16mm na duży dom)</td>
                        <td style="padding: 10px 0; color: #ef4444;">Wysokie opory, dławienie przepływu</td>
                        <td style="padding: 10px 0;">Zniszczenie pompy, zimne podłogi.</td>
                    </tr>
                    <tr style="border-bottom: 1px solid #1e293b;">
                        <td style="padding: 10px 0; font-weight: bold;">Zbyt duża (np. 32mm na małe mieszkanie)</td>
                        <td style="padding: 10px 0; color: #f59e0b;">Zbyt niska prędkość przepływu</td>
                        <td style="padding: 10px 0;">Trudny montaż, niepotrzebne koszty rur i złączek.</td>
                    </tr>
                    <tr>
                        <td style="padding: 10px 0; font-weight: bold;">Optymalna (wyliczona kalkulatorem)</td>
                        <td style="padding: 10px 0; color: #10b981;">Równomierny przepływ (0,5-1,5 m/s)</td>
                        <td style="padding: 10px 0;">Cicha praca, optymalne zużycie prądu i ciepła.</td>
                    </tr>
                </tbody>
            </table>
            <p style="font-size: 13px; line-height: 1.6;">
                Dobór rury zasilającej rozdzielacz to kluczowy element projektu. Wymaga zestawienia długości pętli, liczby obwodów i wydajności pompy obiegowej.
            </p>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // BLOKADA DOMENOWA
    var domain = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowedDomains.indexOf(domain) === -1) {
        var appContainer = document.getElementById('summary-app-lock');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;"><span style="font-size: 48px; display: block; margin-bottom: 15px;">🔒</span><div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona</div><p>Ten moduł jest własnością Projekt-Ogrzewania.pl</p></div>';
        }
    }
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/">Jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego? &#8211; Kalkulator.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ile wody potrzeba do wypełnienia instalacji podłogówki &#8211; Kalkulator.</title>
		<link>https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 08 Feb 2025 11:55:32 +0000</pubDate>
				<category><![CDATA[Hydraulika]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki budowlane]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Technologie grzewcze]]></category>
		<category><![CDATA[domowe systemy grzewcze]]></category>
		<category><![CDATA[hydraulika]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[kalkulator wody]]></category>
		<category><![CDATA[obliczenia budowlane]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędności energii]]></category>
		<category><![CDATA[poradniki]]></category>
		<category><![CDATA[projektowanie instalacji]]></category>
		<category><![CDATA[remonty]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2128</guid>

					<description><![CDATA[<p>Planujesz montaż ogrzewania podłogowego i zastanawiasz się, ile wody potrzeba do wypełnienia instalacji podłogówki? Właściwe oszacowanie objętości wody ma kluczowe znaczenie dla efektywności systemu i kosztów eksploatacji. W naszym artykule znajdziesz szczegółowe wyliczenia, praktyczne przykłady oraz kalkulator, który ułatwi Ci precyzyjne obliczenia. Dowiesz się, jak dobrać odpowiednią ilość wody, aby Twoja instalacja działała sprawnie i ekonomicznie. Sprawdź już teraz!</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/">Ile wody potrzeba do wypełnienia instalacji podłogówki &#8211; Kalkulator.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --hvac-primary: #0f172a;
    --hvac-water: #0ea5e9;
    --hvac-water-dark: #0284c7;
    --hvac-water-light: #e0f2fe;
    --hvac-alert: #ef4444;
    --hvac-bg: #f8fafc;
    --hvac-border: #cbd5e1;
}

.water-module-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 20px 40px -10px rgba(14, 165, 233, 0.1);
    border: 1px solid var(--hvac-border);
    overflow: hidden;
    color: var(--hvac-primary);
}

.water-module-header {
    background: linear-gradient(135deg, var(--hvac-primary), #1e293b);
    padding: 35px 45px;
    color: #ffffff;
    position: relative;
    overflow: hidden;
}

.water-module-header::after {
    content: '';
    position: absolute;
    bottom: -50px;
    right: -50px;
    width: 200px;
    height: 200px;
    background: radial-gradient(circle, rgba(14, 165, 233, 0.2) 0%, transparent 70%);
    border-radius: 50%;
}

.water-module-header h2 {
    font-size: 26px;
    font-weight: 800;
    margin: 0 0 15px 0;
    line-height: 1.3;
    color: #ffffff;
}

.water-module-header p {
    font-size: 16px;
    color: #94a3b8;
    margin: 0;
    line-height: 1.6;
    max-width: 800px;
}

.water-module-content {
    padding: 40px 45px;
    background: linear-gradient(to bottom, #ffffff, var(--hvac-bg));
}

.water-text-block {
    margin-bottom: 20px;
}

.water-text-block p {
    font-size: 17px;
    line-height: 1.8;
    color: #334155;
    margin-bottom: 20px;
}

.water-text-block h3 {
    font-size: 20px;
    color: var(--hvac-primary);
    margin: 30px 0 15px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.water-text-block a {
    color: var(--hvac-water-dark);
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px dashed var(--hvac-water-dark);
    transition: all 0.2s;
}

.water-text-block a:hover {
    color: var(--hvac-water);
    border-bottom-style: solid;
}

@media (max-width: 768px) {
    .water-module-header, .water-module-content {
        padding: 25px;
    }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/"
    },
    "headline": "Ile wody potrzeba do wypełnienia instalacji podłogówki? Konsekwencje błędów i obliczanie zładu",
    "description": "Precyzyjne wyliczenie zładu wody w ogrzewaniu podłogowym. Wpływ ilości wody na naczynie wzbiorcze, pompę ciepła i dawkę inhibitora korozji.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-08T08:00:00+01:00",
    "dateModified": "2026-05-04T10:50:00+02:00"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#dataset",
    "name": "Pojemność wodna pętli grzewczych dla rur PEX i PERT",
    "description": "Zestawienie parametrów objętościowych (zładu wody) na metr bieżący dla średnic rur ogrzewania płaszczyznowego, wykorzystywanych do doboru armatury.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ile wody w podłogówce",
      "zład wody pompa ciepła",
      "objętość instalacji ogrzewania podłogowego",
      "kalkulator zładu",
      "pojemność rury pex 16"
    ],
    "measurementTechnique": "Algorytm oparty na obliczaniu pola przekroju poprzecznego dla wewnętrznej średnicy rury (d_i) pomnożonego przez szacunkową długość pętli dla zadanego rozstawu.",
    "mainEntity": [
      {
        "@type": "PropertyValue",
        "name": "Pojemność rury 16x2.0 mm",
        "value": "0.113 l/mb"
      },
      {
        "@type": "PropertyValue",
        "name": "Pojemność rury 20x2.0 mm",
        "value": "0.201 l/mb"
      }
    ]
  }
]
</script>

<div class="water-module-container" id="water-app-security-wrapper">
    <div class="water-module-header">
        <h2>Ile wody potrzeba do wypełnienia instalacji podłogówki? Konsekwencje błędu z kwietnia 2026</h2>
        <p>Ignorowanie zładu wody to prosta droga do niestabilnego ciśnienia i frustrujących awarii, które potrafią unieruchomić dom w najzimniejszym momencie roku.</p>
    </div>

    <div class="water-module-content">
        <div class="water-text-block">
            <p>W kwietniu 2026 roku, podczas ekspertyzy przy uruchamianiu systemu grzewczego w nowoczesnym budynku o powierzchni 180 m², natrafiłem na klasyczny błąd &#8222;wykonawstwa na oko&#8221;. Brak rzetelnej wiedzy o całkowitym zładzie układu doprowadził do krytycznego błędu w dozowaniu <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-z-inhibitorem-korozji-do-ogrzewania-podlogowego/">drogich inhibitorów korozji</a>. Środek chemiczny został rozcieńczony ponad dwukrotnie poniżej wartości granicznych, narażając mosiężną armaturę na błyskawiczną korozję i powstawanie biofilmu w rotametrach.</p>
            
            <h3>Dlaczego precyzyjny zład wody to fundament układu?</h3>
            
            <p>Odpowiedź na pytanie, <strong>ile wody potrzeba do wypełnienia instalacji podłogówki</strong>, to nie jest luźna ciekawostka, lecz precyzyjna wartość wyrażona w litrach, która bezpośrednio definiuje architekturę systemu. Oprócz oczywistego kosztu zakupu płynu niezamarzającego lub zdemineralizowanej wody, zład determinuje:</p>
            
            <ul style="line-height: 1.8; margin-bottom: 20px; color: #334155;">
                <li><strong>Bezpieczeństwo źródła ciepła:</strong> Inwerterowa <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompa ciepła</a> wymaga określonego zładu minimalnego (często min. 10-15 litrów na kW mocy), aby przeprowadzić stabilny proces odszraniania (defrost) bez wpadania w awarię z powodu wychłodzenia układu.</li>
                <li><strong>Absorpcję rozszerzalności:</strong> Podgrzewana woda zwiększa swoją objętość. Prawidłowo wyliczony zład jest jedyną bazą do poprawnego doboru <a href="https://projekt-ogrzewania.pl/naczynie-wzbiorcze/">naczynia wzbiorczego przeponowego</a>. Zbyt małe naczynie to ciągłe skoki ciśnienia, zrzuty wody przez zawór bezpieczeństwa i ciągłe zapowietrzanie pętli.</li>
            </ul>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // ---- ZABEZPIECZENIE DOMENOWE ----
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('water-app-security-wrapper');
        if (container) {
            container.innerHTML = `
                <div style="padding: 50px 20px; text-align: center; background: #fee2e2; border: 2px solid #ef4444; border-radius: 16px; color: #991b1b; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 250px; font-family: sans-serif;">
                    <span style="font-size: 40px; margin-bottom: 15px;">🚫</span>
                    <div style="font-size: 22px; font-weight: 800; margin-bottom: 10px; text-transform: uppercase;">Naruszenie praw autorskich</div>
                    <p style="font-size: 16px; max-width: 500px; color: #7f1d1d; line-height: 1.6;">Ta zawartość jest własnością intelektualną inż. Roberta Kucharskiego i serwisu <strong>Projekt-Ogrzewania.pl</strong>. Została opublikowana na nieautoryzowanej domenie.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="margin-top: 20px; padding: 12px 24px; background: #dc2626; color: white; text-decoration: none; border-radius: 8px; font-weight: 700;">Przejdź do oryginalnego źródła</a>
                </div>
            `;
        }
    }
});
</script>



<style>
:root {
    --po-primary: #0f172a;
    --po-blue: #0ea5e9;
    --po-blue-hover: #0284c7;
    --po-blue-light: #f0f9ff;
    --po-gray: #f8fafc;
    --po-border: #e2e8f0;
    --po-accent: #38bdf8;
}

.po-theory-module {
    max-width: 900px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
}

/* Wprowadzenie z akcentem */
.po-theory-intro {
    background: #ffffff;
    border-left: 5px solid var(--po-blue);
    padding: 30px 40px;
    border-radius: 0 16px 16px 0;
    box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);
    margin-bottom: 40px;
}

.po-theory-intro h2 {
    font-size: 26px;
    font-weight: 800;
    color: var(--po-primary);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.po-theory-intro p {
    font-size: 17px;
    line-height: 1.7;
    color: #475569;
    margin: 0;
}

/* Sekcja wpływu na osprzęt */
.po-impact-section h3 {
    font-size: 22px;
    font-weight: 800;
    color: var(--po-primary);
    margin-bottom: 25px;
    text-align: center;
}

.po-impact-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 25px;
}

/* Interaktywne Karty Osprzętu */
.po-impact-card {
    background: #ffffff;
    border: 1px solid var(--po-border);
    border-radius: 16px;
    padding: 30px 20px;
    text-align: center;
    position: relative;
    overflow: hidden;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-decoration: none;
    z-index: 1;
}

/* Efekt "podnoszenia" i fali przy najechaniu */
.po-impact-card::before {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 0%;
    background: var(--po-blue-light);
    transition: height 0.3s ease;
    z-index: -1;
}

.po-impact-card:hover {
    transform: translateY(-8px);
    border-color: var(--po-blue-light);
    box-shadow: 0 20px 25px -5px rgba(14, 165, 233, 0.1);
}

.po-impact-card:hover::before {
    height: 100%;
}

.po-icon-wrapper {
    width: 70px;
    height: 70px;
    background: var(--po-gray);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 20px;
    color: var(--po-blue);
    transition: transform 0.3s ease, background 0.3s ease;
}

.po-impact-card:hover .po-icon-wrapper {
    transform: scale(1.1);
    background: #ffffff;
    color: var(--po-blue-hover);
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.po-impact-card h4 {
    font-size: 16px;
    font-weight: 800;
    color: var(--po-primary);
    margin: 0 0 12px 0;
    line-height: 1.4;
}

.po-impact-card p {
    font-size: 14px;
    line-height: 1.6;
    color: #64748b;
    margin: 0 0 15px 0;
    flex-grow: 1;
}

.po-card-link-text {
    font-size: 13px;
    font-weight: 700;
    color: var(--po-blue);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    display: flex;
    align-items: center;
    gap: 5px;
    transition: color 0.2s;
}

.po-impact-card:hover .po-card-link-text {
    color: var(--po-blue-hover);
}

.po-card-link-text svg {
    transition: transform 0.2s;
}

.po-impact-card:hover .po-card-link-text svg {
    transform: translateX(4px);
}

/* Wskazówka przejścia do kalkulatora */
.po-tool-transition {
    margin-top: 40px;
    background: linear-gradient(to right, #f8fafc, #e0f2fe, #f8fafc);
    padding: 20px;
    border-radius: 12px;
    text-align: center;
    font-weight: 600;
    color: var(--po-primary);
    font-size: 15px;
    border: 1px dashed var(--po-border);
}

@media (max-width: 768px) {
    .po-impact-grid {
        grid-template-columns: 1fr;
    }
    .po-theory-intro {
        padding: 25px 20px;
    }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#theory-module",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/"
    },
    "headline": "Obliczanie objętości wody: Od teorii do praktyki na budowie",
    "description": "Zależność między objętością wody w instalacji podłogowej a doborem bufora ciepła, pompy obiegowej i rozdzielacza. Zrozum zasady hydrauliki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-08T08:00:00+01:00",
    "dateModified": "2026-05-04T11:00:00+02:00"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#equipment-impact",
    "name": "Wpływ zładu wody na dobór osprzętu kotłowni",
    "description": "Kluczowe kryteria techniczne określające wpływ objętości cieczy na elementy dystrybucyjne systemu HVAC.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczanie zładu podłogówki",
      "wpływ ilości wody na osprzęt",
      "dobór bufora do pompy ciepła",
      "krzywa przepływu pompa obiegowa",
      "rotametry w rozdzielaczu podłogówki"
    ],
    "measurementTechnique": "Analiza projektowa oporów hydraulicznych i bezwładności cieplnej instalacji w powiązaniu z wydajnością źródeł ciepła.",
    "mainEntity": [
      {
        "@type": "PropertyValue",
        "name": "Bufor Ciepła",
        "value": "Wymiarowanie bazujące na pojemności układu celem wyrównania cykli sprężarki."
      },
      {
        "@type": "PropertyValue",
        "name": "Pompa Obiegowa",
        "value": "Zależność masy wody od oporów miejscowych i wymaganej krzywej przepływu."
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#interactive-theory",
    "name": "Interaktywny panel edukacyjny: Hydraulika układu",
    "description": "Moduł webowy prezentujący w sposób wizualny krytyczne powiązania między objętością zładu a komponentami maszynowymi kotłowni.",
    "applicationCategory": "Edukacja HVAC",
    "operatingSystem": "All",
    "browserRequirements": "Wymaga przeglądarki z obsługą CSS Grid i interakcji hover",
    "softwareVersion": "1.0",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="po-theory-module" id="po-theory-security">
    <div class="po-theory-intro">
        <h2>Obliczanie objętości wody: Od teorii do praktyki na budowie</h2>
        <p>Kiedy planujemy wydajny system grzewczy, <strong>nie możemy opierać się wyłącznie na orientacyjnych wytycznych</strong>. Całkowity zład układu wpływa bezpośrednio na parametry hydrauliczne oraz dobór urządzeń zabezpieczających i dystrybuujących ciepło. Jeżeli układ jest zbyt &#8222;pojemny&#8221;, rodzi to konkretne wymogi sprzętowe, które musisz uwzględnić w budżecie.</p>
    </div>

    <div class="po-impact-section">
        <h3>Jak zład wpływa na osprzęt kotłowni?</h3>
        
        <div class="po-impact-grid">
            
            <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="po-impact-card">
                <div class="po-icon-wrapper">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                        <path d="M5 6v12a3 3 0 0 0 3 3h8a3 3 0 0 0 3-3V6"></path>
                        <path d="M5 6a3 3 0 0 1 3-3h8a3 3 0 0 1 3 3"></path>
                        <path d="M5 6a3 3 0 0 0 3 3h8a3 3 0 0 0 3-3"></path>
                        <path d="M12 9v9"></path>
                    </svg>
                </div>
                <h4>Pojemność Bufora</h4>
                <p>Przy dużym zładzie (np. rury 20 mm komercyjnie) wymagany jest większy bufor, by zrównoważyć masę wody i zabezpieczyć cykle pracy sprężarki pompy ciepła.</p>
                <div class="po-card-link-text">
                    Czytaj o buforze 
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg>
                </div>
            </a>

            <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/" class="po-impact-card">
                <div class="po-icon-wrapper">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                        <circle cx="12" cy="12" r="9"></circle>
                        <path d="m12 8-4 4 4 4"></path>
                        <path d="M16 12H8"></path>
                    </svg>
                </div>
                <h4>Krzywa Przepływu</h4>
                <p>Większa masa wody stawia mniejsze opory miejscowe rur, ale wymaga innej krzywej przepływu. Ma to bezpośrednie przełożenie na moc i typ pompy obiegowej.</p>
                <div class="po-card-link-text">
                    Kalkulator pomp 
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg>
                </div>
            </a>

            <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/" class="po-impact-card">
                <div class="po-icon-wrapper">
                    <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="6" width="16" height="4" rx="1"></rect>
                        <path d="M8 10v4"></path>
                        <path d="M16 10v4"></path>
                        <rect x="4" y="14" width="16" height="4" rx="1"></rect>
                    </svg>
                </div>
                <h4>Precyzja Dystrybucji</h4>
                <p>Cała woda zbiega się w jednym miejscu budynku. Właściwie wyskalowane rotametry to gwarancja, że zład popłynie do pętli z precyzyjnie zaprojektowaną prędkością.</p>
                <div class="po-card-link-text">
                    Dobór rozdzielacza 
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg>
                </div>
            </a>

        </div>
    </div>

    <div class="po-tool-transition">
        🧮 Aby ułatwić Ci wizualizację i oszacowanie tych parametrów dla poszczególnych średnic, przygotowałem poniższy symulator zładu.
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // ---- Zabezpieczenie przed kradzieżą treści ----
    const originHost = window.location.hostname;
    const authHosts = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!authHosts.includes(originHost)) {
        const protectionBox = document.getElementById('po-theory-security');
        if (protectionBox) {
            protectionBox.innerHTML = `
                <div style="padding: 30px; text-align: center; background: #fff1f2; border: 2px dashed #e11d48; border-radius: 12px; color: #881337; font-family: sans-serif; margin-bottom: 30px;">
                    <div style="font-size: 24px; font-weight: 800; margin-bottom: 15px;">Uwaga: Naruszenie praw własności</div>
                    <p style="margin-bottom: 20px; font-size: 16px; line-height: 1.5;">Ten moduł edukacyjny jest autorstwa <strong>inż. Roberta Kucharskiego</strong> i należy do portalu Projekt-Ogrzewania.pl. Prosimy nie kopiować cudzej pracy inżynierskiej.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; background: #e11d48; color: white; padding: 12px 25px; text-decoration: none; border-radius: 8px; font-weight: 700; transition: 0.3s;">Czytaj oryginał artykułu</a>
                </div>
            `;
        }
    }
});
</script>



<style>
:root {
    --sim-primary: #0f172a;
    --sim-accent: #0ea5e9;
    --sim-accent-dark: #0284c7;
    --sim-accent-light: #e0f2fe;
    --sim-bg: #ffffff;
    --sim-panel-bg: #f8fafc;
    --sim-border: #e2e8f0;
    --sim-text: #475569;
    --sim-text-light: #94a3b8;
    --sim-alert-bg: #fef2f2;
    --sim-alert-text: #ef4444;
}

.kucharski-sim-container {
    max-width: 900px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
}

.sim-intro-text {
    margin-bottom: 30px;
}

.sim-intro-text h2 {
    font-size: 24px;
    font-weight: 800;
    color: var(--sim-primary);
    margin-bottom: 15px;
    letter-spacing: -0.5px;
}

.sim-intro-text p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--sim-text);
    margin-bottom: 15px;
}

.sim-intro-text a {
    color: var(--sim-accent-dark);
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: 0.2s ease;
}

.sim-intro-text a:hover {
    border-bottom-color: var(--sim-accent-dark);
}

/* GŁÓWNY KONTENER APLIKACJI */
.sim-app-wrapper {
    background: var(--sim-bg);
    border-radius: 20px;
    box-shadow: 0 10px 40px -10px rgba(14, 165, 233, 0.08);
    border: 1px solid var(--sim-accent-light);
    padding: 40px 50px;
    position: relative;
}

.sim-app-title {
    text-align: center;
    font-size: 20px;
    font-weight: 900;
    letter-spacing: 1.5px;
    color: var(--sim-primary);
    margin-bottom: 40px;
    text-transform: uppercase;
}

.sim-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 50px;
    align-items: center;
}

/* KONTROLKI - LEWA STRONA */
.sim-controls {
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.sim-control-group {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.sim-label {
    font-size: 16px;
    font-weight: 700;
    color: var(--sim-text);
}

.sim-label span {
    color: var(--sim-primary);
}

/* Custom Slider */
.sim-slider-wrapper {
    position: relative;
    padding: 10px 0;
}

input[type=range].sim-slider {
    -webkit-appearance: none;
    width: 100%;
    background: transparent;
}

input[type=range].sim-slider:focus {
    outline: none;
}

input[type=range].sim-slider::-webkit-slider-runnable-track {
    width: 100%;
    height: 8px;
    cursor: pointer;
    background: #cbd5e1;
    border-radius: 4px;
}

input[type=range].sim-slider::-webkit-slider-thumb {
    height: 24px;
    width: 24px;
    border-radius: 50%;
    background: var(--sim-accent);
    cursor: pointer;
    -webkit-appearance: none;
    margin-top: -8px;
    box-shadow: 0 2px 6px rgba(14, 165, 233, 0.4);
    transition: transform 0.1s, background 0.2s;
}

input[type=range].sim-slider::-webkit-slider-thumb:hover {
    transform: scale(1.15);
    background: var(--sim-accent-dark);
}

/* Radio Toggles */
.sim-radio-group {
    display: flex;
    gap: 15px;
}

.sim-radio-group label {
    flex: 1;
    text-align: center;
    background: var(--sim-panel-bg);
    padding: 14px;
    border-radius: 12px;
    cursor: pointer;
    font-weight: 700;
    font-size: 15px;
    color: var(--sim-text);
    border: 2px solid transparent;
    transition: all 0.2s ease;
    margin: 0;
}

.sim-radio-group input[type="radio"] {
    display: none;
}

.sim-radio-group input[type="radio"]:checked + label {
    background: var(--sim-accent-light);
    border-color: var(--sim-accent);
    color: var(--sim-accent-dark);
}

.sim-disclaimer {
    font-size: 13px;
    color: var(--sim-text-light);
    line-height: 1.5;
    margin-top: 5px;
}

/* WYNIKI - PRAWA STRONA */
.sim-results-panel {
    background: #fafcff;
    border-radius: 20px;
    padding: 40px 30px;
    text-align: center;
    border: 1px dashed var(--sim-border);
    display: flex;
    flex-direction: column;
    align-items: center;
}

/* SVG Animacja */
.sim-svg-box {
    width: 130px;
    height: 130px;
    margin-bottom: 25px;
    position: relative;
}

.sim-result-number {
    font-size: 56px;
    font-weight: 900;
    color: var(--sim-primary);
    line-height: 1;
    margin-bottom: 8px;
    transition: transform 0.3s;
}

.sim-result-desc {
    font-size: 13px;
    font-weight: 800;
    color: var(--sim-text);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 25px;
}

.sim-alert-box {
    background: var(--sim-alert-bg);
    border: 1px solid #fecaca;
    padding: 12px 20px;
    border-radius: 10px;
    color: var(--sim-alert-text);
    font-weight: 700;
    font-size: 14px;
    width: 100%;
}

@media (max-width: 768px) {
    .sim-grid {
        grid-template-columns: 1fr;
        gap: 40px;
    }
    .sim-app-wrapper {
        padding: 30px 20px;
    }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/"
    },
    "headline": "Interaktywny kalkulator zładu wody w instalacji podłogowej",
    "description": "Narzędzie do precyzyjnego wyliczania objętości wody w układach ogrzewania płaszczyznowego. Symuluje zład dla rur PEX/PERT o średnicach 16mm i 20mm.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-08T08:00:00+01:00",
    "dateModified": "2026-05-04T11:07:50+02:00"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#dataset",
    "name": "Pojemność wodna pętli grzewczych dla rur PEX i PERT",
    "description": "Dane przeliczeniowe litrażu wody na metr kwadratowy powierzchni w zależności od średnicy zastosowanej rury (16x2.0 oraz 20x2.0).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator zładu wody w podłogówce",
      "ile wody w 100m2 ogrzewania podłogowego",
      "pojemność rury pex 16 kalkulator",
      "ile litrów wody do pompy ciepła",
      "dozowanie inhibitora korozji ogrzewanie podłogowe"
    ],
    "measurementTechnique": "Obliczenia oparte na algorytmie: (Powierzchnia * Średni rozstaw mb) * Pojemność mb rury + 10% naddatku na układ dystrybucyjny.",
    "mainEntity": [
      {
        "@type": "PropertyValue",
        "name": "Przelicznik rury 16x2.0 mm",
        "value": "1.13 L na m2 podłogi (przy rozstawie 10cm)"
      },
      {
        "@type": "PropertyValue",
        "name": "Przelicznik rury 20x2.0 mm",
        "value": "1.346 L na m2 podłogi (przy rozstawie 15cm)"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#simulator",
    "name": "Symulator Zładu Instalacji Podłogowej",
    "description": "Interaktywny suwak pozwalający inwestorom i wykonawcom na błyskawiczne przeliczenie litrażu układu i wyznaczenie precyzyjnej dawki chemii kotłowej.",
    "applicationCategory": "Kalkulator Inżynieryjny HVAC",
    "operatingSystem": "Przeglądarka internetowa (HTML5/JS)",
    "browserRequirements": "Wymaga włączonej obsługi JavaScript do przeliczania zmiennych w czasie rzeczywistym.",
    "softwareVersion": "3.1.0",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="kucharski-sim-container" id="kucharski-auth-wrapper">
    
    <div class="sim-intro-text">
        <h2>Praktyczne obliczenia: Skalibruj swój zład</h2>
        <p>Znajomość parametru określającego <a href="https://projekt-ogrzewania.pl/ile-wody-miesci-sie-w-1-metrze-rury-pex-pert-16/">ile wody mieści się w rurze PEX/PERT</a> pozwala nam przejść od pojedynczej pętli do perspektywy całego budynku. Zbyt mały zład zagraża cyklom defrostu w pompach ciepła, z kolei zbyt duży wydłuża czas reakcji i rodzi konieczność zastosowania większych naczyń przeponowych.</p>
        <p>Przygotowałem dla Ciebie narzędzie, które natychmiastowo przelicza całkowitą objętość płynu. Uwzględnia ono średni rozstaw montażowy zależny od <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnicy rur w ogrzewaniu podłogowym</a> oraz 10-procentowy margines błędu na podejścia i rozdzielacze. Poda Ci ono również precyzyjną dawkę <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-z-inhibitorem-korozji-do-ogrzewania-podlogowego/">wody demineralizowanej z inhibitorem korozji</a>, aby Twoja armatura przetrwała dekady.</p>
    </div>

    <div class="sim-app-wrapper">
        <div class="sim-app-title">Symulator Zładu Instalacji Podłogowej</div>
        
        <div class="sim-grid">
            <div class="sim-controls">
                
                <div class="sim-control-group">
                    <div class="sim-label">Powierzchnia grzewcza: <span id="dynArea">70</span> m²</div>
                    <div class="sim-slider-wrapper">
                        <input type="range" class="sim-slider" id="sliderAreaVal" min="40" max="250" step="1" value="70">
                    </div>
                </div>

                <div class="sim-control-group">
                    <div class="sim-label">Średnica rury PEX/PERT:</div>
                    <div class="sim-radio-group">
                        <input type="radio" id="pipe16mm" name="pipeDiam" value="16" checked>
                        <label for="pipe16mm">16&#215;2.0 mm</label>
                        
                        <input type="radio" id="pipe20mm" name="pipeDiam" value="20">
                        <label for="pipe20mm">20&#215;2.0 mm</label>
                    </div>
                </div>

                <div class="sim-disclaimer">
                    *Założenia: Rozstaw pętli dla 16mm to śr. 10cm, dla 20mm to śr. 15cm. Obejmuje szacunkowy naddatek na dobiegi i rozdzielacz (10%).
                </div>
            </div>

            <div class="sim-results-panel">
                <div class="sim-svg-box">
                    <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
                        <circle cx="50" cy="50" r="44" fill="none" stroke="#cbd5e1" stroke-width="8" />
                        
                        <clipPath id="waterMask">
                            <circle cx="50" cy="50" r="40" />
                        </clipPath>
                        
                        <g clip-path="url(#waterMask)">
                            <circle cx="50" cy="50" r="40" fill="#e0f2fe" />
                            
                            <path fill="#38bdf8" d="M-100,50 Q-75,35 -50,50 T0,50 T50,50 T100,50 T150,50 T200,50 V100 H-100 Z" opacity="0.6">
                                <animate attributeName="d" 
                                         values="M-100,45 Q-75,30 -50,45 T0,45 T50,45 T100,45 T150,45 T200,45 V100 H-100 Z;
                                                 M-100,45 Q-75,60 -50,45 T0,45 T50,45 T100,45 T150,45 T200,45 V100 H-100 Z;
                                                 M-100,45 Q-75,30 -50,45 T0,45 T50,45 T100,45 T150,45 T200,45 V100 H-100 Z" 
                                         dur="4s" repeatCount="indefinite"/>
                            </path>
                            <path fill="#0ea5e9" d="M-100,55 Q-75,45 -50,55 T0,55 T50,55 T100,55 T150,55 T200,55 V100 H-100 Z">
                                <animate attributeName="d" 
                                         values="M-100,52 Q-75,67 -50,52 T0,52 T50,52 T100,52 T150,52 T200,52 V100 H-100 Z;
                                                 M-100,52 Q-75,37 -50,52 T0,52 T50,52 T100,52 T150,52 T200,52 V100 H-100 Z;
                                                 M-100,52 Q-75,67 -50,52 T0,52 T50,52 T100,52 T150,52 T200,52 V100 H-100 Z" 
                                         dur="3.2s" repeatCount="indefinite"/>
                            </path>
                        </g>
                    </svg>
                </div>
                
                <div class="sim-result-number" id="dynVolume">87</div>
                <div class="sim-result-desc">Litrów całkowitego zładu</div>
                
                <div class="sim-alert-box" id="dynInhibitor">
                    Wymagany inhibitor (stęż. 0.5%): <br><b>0.43 L</b>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // --- OCHRONA DOMENOWA ---
    const hostname = window.location.hostname;
    const whitelist = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!whitelist.includes(hostname)) {
        const wrap = document.getElementById('kucharski-auth-wrapper');
        if (wrap) {
            wrap.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #fff1f2; border: 2px dashed #e11d48; border-radius: 16px; color: #881337;">
                    <div style="font-size: 22px; font-weight: 800; margin-bottom: 15px; text-transform: uppercase;">Naruszenie praw własności</div>
                    <p style="font-size: 16px; margin-bottom: 25px;">Ten kalkulator to autorskie oprogramowanie inż. Roberta Kucharskiego. Został skopiowany bez zgody autora.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="background: #e11d48; color: white; padding: 12px 24px; text-decoration: none; border-radius: 8px; font-weight: bold;">Zobacz wersję legalną</a>
                </div>
            `;
        }
        return;
    }

    // --- LOGIKA APLIKACJI ---
    const slider = document.getElementById('sliderAreaVal');
    const areaLabel = document.getElementById('dynArea');
    const pipe16 = document.getElementById('pipe16mm');
    const pipe20 = document.getElementById('pipe20mm');
    
    const resVolume = document.getElementById('dynVolume');
    const resInhibitor = document.getElementById('dynInhibitor');

    function executeSimulation() {
        let area = parseFloat(slider.value);
        areaLabel.textContent = area;

        let volTotal = 0;
        
        // Zgodnie z inżynierskim założeniem
        if (pipe16.checked) {
            // Rura 16mm: śr rozstaw 10cm = 10 mb/m2. Pojemność: 0.113 l/mb.
            let loopsVol = area * 10 * 0.113; // 70 * 1.13 = 79.1
            volTotal = loopsVol * 1.10;       // Naddatek 10% = 87.01
        } else {
            // Rura 20mm: śr rozstaw 15cm = ~6.7 mb/m2. Pojemność: 0.201 l/mb.
            let loopsVol = area * 6.7 * 0.201; 
            volTotal = loopsVol * 1.10;
        }

        // Zaokrąglamy do pełnych litrów zgodnie ze standardami projektowymi
        let finalLiters = Math.round(volTotal);
        
        // Obliczenie inhibitora w stężeniu 0.5% (bezbłędne zaokrąglenie w dół by dopasować do grafiki)
        let inhibitorReq = Math.floor(finalLiters * 0.005 * 100) / 100;
        
        // UI Updates with animation trigger
        resVolume.style.transform = 'scale(1.1)';
        setTimeout(() => {
            resVolume.textContent = finalLiters;
            resVolume.style.transform = 'scale(1)';
        }, 100);

        resInhibitor.innerHTML = `Wymagany inhibitor (stęż. 0.5%):<br><span style="font-size: 18px;">${inhibitorReq.toFixed(2)} L</span>`;
    }

    // Nasłuchiwacze zdarzeń
    slider.addEventListener('input', executeSimulation);
    pipe16.addEventListener('change', executeSimulation);
    pipe20.addEventListener('change', executeSimulation);

    // Initial Trigger
    executeSimulation();
});
</script>



<style>
:root {
    --pex-primary: #0f172a;
    --pex-accent: #0ea5e9;
    --pex-accent-dark: #0284c7;
    --pex-accent-light: #eff6ff;
    --pex-gray: #f8fafc;
    --pex-border: #e2e8f0;
    --pex-text: #475569;
}

.kucharski-pex-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(14, 165, 233, 0.08);
    border: 1px solid var(--pex-border);
    overflow: hidden;
    color: var(--pex-primary);
}

.pex-header {
    padding: 40px;
    background: linear-gradient(to bottom, #ffffff, var(--pex-gray));
    border-bottom: 1px solid var(--pex-border);
    position: relative;
    overflow: hidden;
}

.pex-header::after {
    content: '';
    position: absolute;
    right: -50px;
    top: -50px;
    width: 200px;
    height: 200px;
    background: radial-gradient(circle, rgba(14, 165, 233, 0.1) 0%, transparent 70%);
    border-radius: 50%;
    pointer-events: none;
}

.pex-header h2 {
    margin: 0 0 15px 0;
    font-size: 26px;
    font-weight: 900;
    color: var(--pex-primary);
    line-height: 1.3;
}

.pex-header p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--pex-text);
    margin-bottom: 0;
    max-width: 800px;
}

.pex-workspace {
    display: flex;
    min-height: 480px;
}

/* LEWY PANEL - ZAKŁADKI */
.pex-tabs {
    width: 40%;
    background: #ffffff;
    border-right: 1px solid var(--pex-border);
    display: flex;
    flex-direction: column;
    padding: 30px;
    gap: 15px;
}

.pex-tab-hint {
    font-size: 11px;
    font-weight: 800;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 1px;
    text-align: center;
    margin-bottom: 5px;
}

.pex-btn {
    position: relative;
    width: 100%;
    padding: 20px;
    border-radius: 12px;
    border: 2px solid var(--pex-border);
    background: #ffffff;
    cursor: pointer;
    text-align: left;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    gap: 15px;
    overflow: hidden;
}

.pex-btn::before {
    content: '';
    position: absolute;
    left: 0; top: 0; height: 100%; width: 6px;
    background: #cbd5e1;
    transition: all 0.3s;
}

.pex-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05);
    border-color: #cbd5e1;
}

.pex-btn.pex-active {
    border-color: var(--pex-accent);
    background: var(--pex-accent-light);
    box-shadow: 0 10px 20px -5px rgba(14, 165, 233, 0.15);
}

.pex-btn.pex-active::before {
    background: var(--pex-accent);
    width: 8px;
}

.pex-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    color: #64748b;
    transition: all 0.3s;
}

.pex-btn.pex-active .pex-icon {
    color: var(--pex-accent-dark);
    transform: scale(1.15);
}

.pex-tab-title {
    font-family: 'Inter', sans-serif;
    font-size: 15px;
    font-weight: 800;
    color: var(--pex-primary);
    line-height: 1.3;
}

.pex-tab-subtitle {
    display: block;
    font-size: 11px;
    font-weight: 700;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-top: 5px;
}

/* PRAWY PANEL - TREŚĆ */
.pex-details {
    width: 60%;
    background: var(--pex-gray);
    padding: 40px;
    position: relative;
}

.pex-pane {
    display: none;
    animation: pexFadeIn 0.4s ease-out forwards;
}

.pex-pane.pane-active {
    display: block;
}

.pex-pane h3 {
    margin: 0 0 20px 0;
    font-size: 22px;
    font-weight: 900;
    color: var(--pex-primary);
}

.pex-pane p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--pex-text);
    margin-bottom: 20px;
}

.pex-pane a {
    color: var(--pex-accent-dark);
    text-decoration: none;
    border-bottom: 1px dashed var(--pex-accent-dark);
    font-weight: 600;
    transition: 0.2s;
}

.pex-pane a:hover {
    color: var(--pex-accent);
    border-bottom-style: solid;
}

.pex-highlight {
    background: #ffffff;
    border-left: 4px solid var(--pex-accent);
    padding: 20px;
    border-radius: 0 12px 12px 0;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    margin-top: 25px;
}

.pex-data-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 0;
    border-bottom: 1px solid #f1f5f9;
}

.pex-data-row:last-child {
    border-bottom: none;
}

.pex-data-label {
    font-size: 14px;
    font-weight: 600;
    color: #64748b;
}

.pex-data-value {
    font-size: 18px;
    font-weight: 900;
    color: var(--pex-primary);
}

/* SVG Animacje */
@keyframes flowLine {
    0% { stroke-dashoffset: 24; }
    100% { stroke-dashoffset: 0; }
}
.svg-flow {
    stroke-dasharray: 6 6;
    animation: flowLine 1s linear infinite;
}

@keyframes pexFadeIn {
    from { opacity: 0; transform: translateX(10px); }
    to { opacity: 1; transform: translateX(0); }
}

@media (max-width: 768px) {
    .pex-header { padding: 30px 20px; }
    .pex-workspace { flex-direction: column; min-height: auto; }
    .pex-tabs {
        width: 100%;
        border-right: none;
        border-bottom: 1px solid var(--pex-border);
        padding: 20px;
    }
    .pex-details {
        width: 100%;
        padding: 30px 20px;
    }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#pojemnosc-rury-pex",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/"
    },
    "headline": "Ile wody mieści się w 1 metrze bieżącym rury PEX 16mm?",
    "description": "Szczegółowe wyliczenia pojemności wodnej rury PEX 16x2.0 mm oraz analiza całkowitego zładu na m2 w zależności od rozstawu pętli grzewczych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-08T08:00:00+01:00",
    "dateModified": "2026-05-04T11:23:00+02:00"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#pojemnosc-dane",
    "name": "Zależność objętości wody od rozstawu rur 16mm",
    "description": "Normatywne wartości objętości cieczy w instalacji ogrzewania płaszczyznowego wg PN-EN 1264-4 dla średnicy wewnętrznej 12mm.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ile wody w rurze pex 16",
      "objętość rury 16x2",
      "norma PN-EN 1264-4",
      "zład wody rozstaw 10cm",
      "dobór naczynia wzbiorczego"
    ],
    "measurementTechnique": "Wyliczenie objętości walca na bazie średnicy wewnętrznej rury (di=12mm) pomnożonej przez statystyczne zapotrzebowanie rury na 1 m2 podłogi.",
    "mainEntity": [
      {
        "@type": "PropertyValue",
        "name": "Pojemność 1 metra bieżącego",
        "value": "0.113",
        "unitText": "L"
      },
      {
        "@type": "PropertyValue",
        "name": "Pojemność na 1 m2 (rozstaw 10cm)",
        "value": "1.13",
        "unitText": "L/m2"
      },
      {
        "@type": "PropertyValue",
        "name": "Pojemność na 1 m2 (rozstaw 15cm)",
        "value": "0.76",
        "unitText": "L/m2"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#interaktywna-analiza",
    "name": "Interaktywna analiza zładu wody na m2",
    "description": "Moduł edukacyjny pozwalający na dynamiczne przełączanie się między parametrami zładu dla różnych rozstawów pętli grzewczych.",
    "applicationCategory": "Edukacja inżynieryjna",
    "operatingSystem": "Web",
    "browserRequirements": "HTML5, CSS3, JavaScript",
    "softwareVersion": "1.0",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="kucharski-pex-container" id="pex-anatomy-app">
    
    <div class="pex-header">
        <h2>Ile wody mieści się w 1 metrze rury PEX 16mm?</h2>
        <p>Precyzyjne określenie ilości płynu to fundament do obliczenia bezwładności cieplnej układu oraz prawidłowego zabezpieczenia hydraulicznego. Poznaj normatywne przeliczniki dla najpopularniejszej średnicy na rynku.</p>
    </div>

    <div class="pex-workspace">
        
        <div class="pex-tabs">
            <div class="pex-tab-hint">Eksploruj warianty obliczeń</div>
            
            <button class="pex-btn pex-active" data-target="pane-bazowa">
                <div class="pex-icon">
                    <svg viewBox="0 0 24 24" width="28" height="28" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                        <circle cx="12" cy="12" r="10"></circle>
                        <circle cx="12" cy="12" r="6" stroke-dasharray="3 3"></circle>
                    </svg>
                </div>
                <div>
                    <div class="pex-tab-title">Pojemność bazowa</div>
                    <span class="pex-tab-subtitle">1 metr bieżący (di=12mm)</span>
                </div>
            </button>
            
            <button class="pex-btn" data-target="pane-rozstaw-10">
                <div class="pex-icon">
                    <svg viewBox="0 0 24 24" width="28" height="28" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                        <path d="M4 6h16M4 12h16M4 18h16"></path>
                    </svg>
                </div>
                <div>
                    <div class="pex-tab-title">Rozstaw co 10 cm</div>
                    <span class="pex-tab-subtitle">Standard dla salonu / łazienki</span>
                </div>
            </button>
            
            <button class="pex-btn" data-target="pane-rozstaw-15">
                <div class="pex-icon">
                    <svg viewBox="0 0 24 24" width="28" height="28" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                        <path d="M4 8h16M4 16h16"></path>
                    </svg>
                </div>
                <div>
                    <div class="pex-tab-title">Rozstaw co 15 cm</div>
                    <span class="pex-tab-subtitle">Sypialnie i strefy brzegowe</span>
                </div>
            </button>
            
            <button class="pex-btn" data-target="pane-konsekwencje">
                <div class="pex-icon">
                    <svg viewBox="0 0 24 24" width="28" height="28" 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>
                        <path d="M12 8v4"></path>
                        <path d="M12 16h.01"></path>
                    </svg>
                </div>
                <div>
                    <div class="pex-tab-title">Konsekwencje w projekcie</div>
                    <span class="pex-tab-subtitle">Zabezpieczenia hydrauliczne</span>
                </div>
            </button>
        </div>

        <div class="pex-details">
            
            <div class="pex-pane pane-active" id="pane-bazowa">
                <h3>Parametry 1 metra rury</h3>
                <p>W standardowej rurze PEX/AL/PEX o średnicy zewnętrznej 16 mm i grubości ścianki 2,0 mm mieści się precyzyjnie wyliczona ilość wody.</p>
                <p>Zgodnie z wytycznymi <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">normy PN-EN 1264-4</a>, projektant musi uwzględnić objętość wewnętrzną rury, która dla średnicy wewnętrznej <strong>di = 12 mm</strong> wynika bezpośrednio ze wzoru na objętość walca.</p>
                
                <div class="pex-highlight">
                    <div class="pex-data-row">
                        <span class="pex-data-label">Średnica wewnętrzna (di)</span>
                        <span class="pex-data-value">12.0 mm</span>
                    </div>
                    <div class="pex-data-row">
                        <span class="pex-data-label">Pojemność 1 metra bieżącego</span>
                        <span class="pex-data-value" style="color: var(--pex-accent-dark);">0.113 Litra</span>
                    </div>
                </div>
            </div>

            <div class="pex-pane" id="pane-rozstaw-10">
                <h3>Gęsty rozstaw pętli</h3>
                <p>Przyjmując <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstaw rur co 10 cm</a>, zwiększamy gęstość układu, co przekłada się na proporcjonalnie wyższy zład wody w wylewce.</p>
                <p>Na każdy metr kwadratowy powierzchni grzejnej przypada w tym układzie około 10 metrów bieżących rury. To standardowe rozwiązanie dla pomieszczeń o wysokim zapotrzebowaniu na ciepło, takich jak salony z dużymi przeszkleniami czy łazienki.</p>
                
                <div class="pex-highlight">
                    <div class="pex-data-row">
                        <span class="pex-data-label">Zapotrzebowanie rury / m²</span>
                        <span class="pex-data-value">10.0 mb</span>
                    </div>
                    <div class="pex-data-row">
                        <span class="pex-data-label">Pojemność wodna na 1 m²</span>
                        <span class="pex-data-value" style="color: var(--pex-accent-dark);">1.13 Litra</span>
                    </div>
                </div>
            </div>

            <div class="pex-pane" id="pane-rozstaw-15">
                <h3>Oszczędny układ w sypialniach</h3>
                <p>W pomieszczeniach, gdzie <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">straty cieplne są niższe</a>, a oczekiwana temperatura pokojowa wynosi około 18-20°C (np. sypialnie), standardem jest rzadsze układanie rur.</p>
                <p>Jeśli zwiększymy rozstaw do 15 cm, zapotrzebowanie na rurę spada do ok. 6,7 metra bieżącego na metr kwadratowy, co znacząco odciąża układ pompowy i zmniejsza całkowity zład.</p>
                
                <div class="pex-highlight">
                    <div class="pex-data-row">
                        <span class="pex-data-label">Zapotrzebowanie rury / m²</span>
                        <span class="pex-data-value">~ 6.7 mb</span>
                    </div>
                    <div class="pex-data-row">
                        <span class="pex-data-label">Pojemność wodna na 1 m²</span>
                        <span class="pex-data-value" style="color: var(--pex-accent-dark);">0.76 Litra</span>
                    </div>
                </div>
            </div>

            <div class="pex-pane" id="pane-konsekwencje">
                <h3>Skutki w projekcie instalacji</h3>
                <p>Dokładne zsumowanie tych wartości (litrów z poszczególnych pętli) decyduje o kluczowych parametrach fizycznych całego systemu.</p>
                <p>Precyzyjne określenie objętości jest absolutnym fundamentem do analizy <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładności cieplnej układu</a> oraz, co najważniejsze z punktu widzenia bezpieczeństwa, doboru odpowiedniego <a href="https://projekt-ogrzewania.pl/naczynie-wzbiorcze/">naczynia przeponowego (wzbiorczego)</a>. Obliczenia te muszą być zgodne z wymaganiami normy <strong>PN-B-02414:1999</strong>.</p>
                
                <div class="pex-highlight" style="border-left-color: #ef4444;">
                    <div style="font-weight: 800; color: #b91c1c; margin-bottom: 8px;">Pamiętaj o rozszerzalności cieplnej!</div>
                    <p style="margin:0; font-size: 14px; color: #475569; line-height: 1.6;">Podgrzewana woda zwiększa swoją objętość. Jeśli źle oszacujesz zład z pętli, dobierzesz zbyt małe naczynie, co doprowadzi do niebezpiecznych skoków ciśnienia i awarii zaworów bezpieczeństwa.</p>
                </div>
            </div>

        </div>
    </div>
    
    <noscript>
        <style>
            .pex-pane { display: block !important; margin-bottom: 30px; border-bottom: 1px solid #cbd5e1; padding-bottom: 30px; }
        </style>
    </noscript>
</div>

<script>
function initPexTabs() {
    // Zabezpieczenie przed kradzieżą
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const wrap = document.getElementById('pex-anatomy-app');
        if (wrap) {
            wrap.innerHTML = `
                <div style="padding: 50px 20px; text-align: center; background: #fff1f2; color: #be123c; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 400px; border: 2px dashed #fda4af;">
                    <span style="font-size: 48px; margin-bottom: 15px;">⚠️</span>
                    <h3 style="margin-top:0; font-size: 22px; font-weight: 900; text-transform: uppercase;">Naruszenie Praw Autorskich</h3>
                    <p style="font-size: 16px; max-width: 500px; line-height: 1.6; color: #881337;">Ten moduł interaktywny został skopiowany z serwisu <strong>Projekt-Ogrzewania.pl</strong> bez autoryzacji inż. Roberta Kucharskiego.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="margin-top: 20px; padding: 12px 25px; background: #e11d48; color: white; text-decoration: none; border-radius: 8px; font-weight: bold;">Zobacz oryginał artykułu</a>
                </div>
            `;
        }
        return; 
    }

    const app = document.getElementById('pex-anatomy-app');
    if (!app) return;

    const btns = app.querySelectorAll('.pex-btn');
    const panes = app.querySelectorAll('.pex-pane');

    btns.forEach(btn => {
        btn.addEventListener('click', function(e) {
            e.preventDefault();
            
            // Reset klas
            btns.forEach(b => b.classList.remove('pex-active'));
            panes.forEach(p => p.classList.remove('pane-active'));
            
            // Aktywacja klikniętego
            this.classList.add('pex-active');
            const targetId = this.getAttribute('data-target');
            const targetPane = app.querySelector('#' + targetId);
            if (targetPane) {
                targetPane.classList.add('pane-active');
            }
        });
    });
}

if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', initPexTabs);
} else {
    initPexTabs();
}
</script>



<style>
:root {
    --po-primary: #0f172a;
    --po-blue: #0ea5e9;
    --po-blue-dark: #0284c7;
    --po-blue-light: #f0f9ff;
    --po-gray: #f8fafc;
    --po-border: #e2e8f0;
    --po-text: #334155;
    --po-text-light: #64748b;
    --po-success: #10b981;
}

.po-module-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--po-primary);
}

/* Sekcja Wprowadzająca (Top Card) */
.po-intro-card {
    background: #ffffff;
    border: 1px solid var(--po-border);
    border-left: 8px solid var(--po-border); /* Charakterystyczny gruby margines */
    padding: 40px 45px;
    border-radius: 16px;
    box-shadow: 0 4px 20px -10px rgba(0, 0, 0, 0.03);
    margin-bottom: 30px;
}

.po-intro-card h2 {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 20px 0;
    letter-spacing: -0.5px;
    color: var(--po-primary);
}

.po-intro-card p {
    font-size: 18px;
    line-height: 1.7;
    color: var(--po-text);
    margin: 0;
}

/* Układ Wierszowy (Case Study & Analiza) */
.po-calc-row {
    display: grid;
    grid-template-columns: 1fr 1.3fr;
    gap: 30px;
    margin-bottom: 50px;
    align-items: stretch;
}

/* Lewa Karta (Case Study) */
.po-box-left {
    background: #ffffff;
    border: 1px solid var(--po-border);
    border-radius: 16px;
    padding: 50px 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 20px -10px rgba(0,0,0,0.03);
}

.po-svg-beaker {
    width: 60px;
    height: 90px;
    margin-bottom: 25px;
}

.po-box-left h3 {
    font-size: 24px;
    font-weight: 900;
    color: var(--po-primary);
    margin: 0;
    text-align: center;
}

/* Prawa Karta (Analiza) */
.po-box-right-wrapper {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.po-box-right {
    background: var(--po-gray);
    border: 1px solid var(--po-border);
    border-radius: 16px;
    padding: 40px 45px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    flex-grow: 1;
}

.po-box-right h4 {
    font-size: 17px;
    color: var(--po-blue-dark);
    margin: 0 0 20px 0;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    font-weight: 800;
}

.po-box-right p {
    font-size: 20px;
    line-height: 1.6;
    font-weight: 400;
    color: var(--po-primary);
    margin: 0;
}

.po-box-right a {
    color: var(--po-blue);
    text-decoration: underline;
    text-underline-offset: 4px;
    text-decoration-thickness: 1px;
    font-weight: 600;
    transition: color 0.2s;
}

.po-box-right a:hover {
    color: var(--po-blue-dark);
}

.po-result-highlight {
    display: block;
    font-size: 32px;
    font-weight: 900;
    color: var(--po-blue-dark);
    margin-top: 15px;
}

/* Nota pod spodem */
.po-calc-note {
    font-size: 14px;
    color: var(--po-text-light);
    font-style: italic;
    line-height: 1.5;
    margin: 0;
    padding: 0 10px;
}

/* Interaktywny Kalkulator Chemii - Odświeżony Design */
.po-app-container {
    background: #ffffff;
    border: 1px solid var(--po-border);
    border-radius: 20px;
    padding: 45px 50px;
    box-shadow: 0 10px 30px -10px rgba(0, 0, 0, 0.05);
}

.po-app-title {
    text-align: center;
    font-size: 22px;
    font-weight: 900;
    margin-bottom: 40px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--po-primary);
}

.po-app-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 50px;
    align-items: center;
}

.po-controls {
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.po-label {
    font-size: 16px;
    font-weight: 700;
    margin-bottom: 12px;
    display: block;
    color: var(--po-primary);
}

input[type=range].po-range {
    -webkit-appearance: none;
    width: 100%;
    background: transparent;
}

input[type=range].po-range::-webkit-slider-runnable-track {
    width: 100%;
    height: 8px;
    background: #cbd5e1;
    border-radius: 4px;
}

input[type=range].po-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    height: 24px;
    width: 24px;
    border-radius: 50%;
    background: var(--po-blue);
    cursor: pointer;
    margin-top: -8px;
    box-shadow: 0 4px 10px rgba(14, 165, 233, 0.3);
    transition: transform 0.1s;
}

input[type=range].po-range::-webkit-slider-thumb:hover {
    transform: scale(1.15);
}

.po-select {
    width: 100%;
    padding: 14px 16px;
    border-radius: 12px;
    border: 2px solid var(--po-border);
    font-size: 15px;
    font-weight: 600;
    color: var(--po-text);
    background-color: #ffffff;
    cursor: pointer;
    outline: none;
    transition: border-color 0.2s;
}

.po-select:focus {
    border-color: var(--po-blue);
}

.po-results-display {
    background: var(--po-gray);
    border-radius: 16px;
    padding: 40px;
    text-align: center;
    border: 1px dashed var(--po-border);
}

.po-val-main {
    font-size: 64px;
    font-weight: 900;
    color: var(--po-primary);
    line-height: 1;
    transition: transform 0.3s;
}

.po-val-sub {
    font-size: 13px;
    font-weight: 800;
    color: var(--po-text-light);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-top: 10px;
}

.po-inhibitor-box {
    margin-top: 30px;
    padding: 15px 20px;
    background: #ffffff;
    border-radius: 12px;
    border: 1px solid var(--po-border);
    box-shadow: 0 2px 5px rgba(0,0,0,0.02);
}

/* SVG Animacja Napełniania */
@keyframes beakerFill {
    0% { height: 10%; y: 64; }
    50% { height: 50%; y: 24; }
    100% { height: 10%; y: 64; }
}
.svg-water-fill {
    animation: beakerFill 4s ease-in-out infinite;
}

@media (max-width: 768px) {
    .po-calc-row, .po-app-grid {
        grid-template-columns: 1fr;
    }
    .po-intro-card, .po-box-left, .po-box-right, .po-app-container {
        padding: 25px;
    }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#water-100m2",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/"
    },
    "headline": "Ile wody potrzeba na 100 m² ogrzewania podłogowego?",
    "description": "Szczegółowe obliczenia zładu wody dla instalacji o powierzchni 100-120 m2. Przykłady analityczne oraz zasady dawkowania chemii instalacyjnej.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-08T08:00:00+01:00",
    "dateModified": "2026-05-04T11:45:00+02:00"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#dataset-zlad",
    "name": "Zestawienie zładu wody dla powierzchni 100m2 i 120m2",
    "description": "Dane techniczne objętości cieczy grzewczej w zależności od rozstawu rur PEX 16mm (10cm, 12.5cm, 15cm).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zład wody na 100m2 podłogówki",
      "objętość rur 16mm",
      "ile mb rury na 120m2",
      "wymiennik pompy ciepła pojemność",
      "ilość inhibitora korozji"
    ],
    "measurementTechnique": "Algorytm oparty na normatywnym zapotrzebowaniu rury (mb/m2) oraz pojemności jednostkowej 0,113 l/mb.",
    "mainEntity": [
      {
        "@type": "PropertyValue",
        "name": "Objętość rur na 100m² (rozstaw mieszany)",
        "value": "85-95",
        "unitText": "L"
      },
      {
        "@type": "PropertyValue",
        "name": "Całkowity zład z osprzętem dla 100m²",
        "value": "110-125",
        "unitText": "L"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#app-inhibitor",
    "name": "Kalkulator Całkowitego Zładu i Chemii Instalacyjnej",
    "description": "Interaktywne narzędzie do szacowania całkowitej objętości wody w układzie oraz wyliczania liczby butelek inhibitora korozji Fernox/Sentinel.",
    "applicationCategory": "HVAC Design Tool",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "browserRequirements": "HTML5, ES6 JavaScript",
    "softwareVersion": "2.2.0",
    "author": {
        "@type": "Person",
        "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="po-module-wrapper" id="po-security-100m2">
    
    <div class="po-intro-card">
        <h2>Ile wody potrzeba na 100 m² ogrzewania podłogowego?</h2>
        <p>Dla domu o powierzchni 100 m² z rurą 16&#215;2,0 mm ułożoną w rozstawie mieszanym (strefy brzegowe co 10 cm, środek co 15 cm), całkowita objętość wody w pętlach wynosi średnio 85–95 litrów. Wartość ta musi zostać powiększona o objętość w podejściach do rozdzielaczy oraz w samym źródle ciepła (np. wymiennik pompy ciepła), co zazwyczaj sumuje się do ok. 110–125 litrów całkowitego zładu.</p>
    </div>

    <div class="po-calc-row">
        
        <div class="po-box-left">
            <svg class="po-svg-beaker" viewBox="0 0 40 74" fill="none" xmlns="http://www.w3.org/2000/svg">
                <rect x="2" y="2" width="36" height="70" rx="4" stroke="#cbd5e1" stroke-width="4"/>
                <rect class="svg-water-fill" x="4" y="44" width="32" height="26" fill="#7dd3fc" />
                <rect class="svg-water-fill" x="4" y="54" width="32" height="16" fill="#38bdf8" style="animation-delay: 0.2s;" />
            </svg>
            <h3>Case Study: 120 m²</h3>
        </div>
        
        <div class="po-box-right-wrapper">
            <div class="po-box-right">
                <h4>Analiza Techniczna</h4>
                <p>Przy rozstawie 12,5 cm (<a href="https://projekt-ogrzewania.pl/ile-rury-na-m%c2%b2-ogrzewania-podlogowego/">8 mb rury na m²</a>) w domu 120 m², całkowity zład po dodaniu przyłączy i wymiennika wynosi: <span class="po-result-highlight">120,48 litra</span></p>
            </div>
            <p class="po-calc-note">*Znajomość tej liczby pozwala na zakup odpowiedniej ilości środka chemicznego. Przykładowo, popularne inhibitory korozji (np. Fernox F1) dozuje się w proporcji 1 opakowanie (500 ml) na 100 litrów wody. W powyższym przypadku inwestor musi zakupić 2 opakowania, aby utrzymać stężenie gwarantujące ochronę pompy ciepła i rozdzielaczy mosiężnych przed osadami.</p>
        </div>
        
    </div>

    <div class="po-app-container">
        <div class="po-app-title">Symulator Zładu i Chemii Instalacyjnej</div>
        
        <div class="po-app-grid">
            <div class="po-controls">
                <div>
                    <label class="po-label">Powierzchnia domu: <span id="areaVal">100</span> m²</label>
                    <input type="range" class="po-range" id="areaSlider" min="50" max="300" step="5" value="100">
                </div>
                
                <div>
                    <label class="po-label">Standard rozstawu rur:</label>
                    <select id="spacingSelect" class="po-select">
                        <option value="10">Gęsty &#8211; 10 cm (10 mb/m²)</option>
                        <option value="8" selected>Standard &#8211; 12.5 cm (8 mb/m²)</option>
                        <option value="6.7">Ekonomiczny &#8211; 15 cm (6.7 mb/m²)</option>
                    </select>
                </div>
            </div>

            <div class="po-results-display">
                <div class="po-val-main" id="totalLiters">115</div>
                <div class="po-val-sub">Litrów całkowitego zładu</div>
                
                <div class="po-inhibitor-box">
                    <span style="font-size: 14px; font-weight: 600; color: var(--po-text-light);">Zalecana ochrona:</span><br>
                    <span id="inhibitorBottles" style="font-size: 18px; font-weight: 800; color: var(--po-success);">2</span> <span style="font-size: 15px; font-weight: 600; color: var(--po-primary);">butelki inhibitora (500ml)</span>
                </div>
            </div>
        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- ZABEZPIECZENIE DOMENOWE ---
    const hostname = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(hostname)) {
        const wrap = document.getElementById('po-security-100m2');
        if (wrap) {
            wrap.innerHTML = `<div style="padding: 40px; text-align: center; background: #fff1f2; color: #881337; border-radius: 16px; border: 2px dashed #e11d48;">
                <h3 style="font-size: 22px; margin-top:0; margin-bottom: 15px; font-weight: 900; text-transform: uppercase;">Naruszenie Praw Autorskich</h3>
                <p style="font-size: 16px; line-height:1.6; margin-bottom: 25px;">Ten interaktywny moduł inżynieryjny należy do <strong>Projekt-Ogrzewania.pl</strong>. Kopiowanie bez zgody inż. Roberta Kucharskiego jest zabronione.</p>
                <a href="https://projekt-ogrzewania.pl/" style="display:inline-block; background:#e11d48; color:white; padding:12px 25px; border-radius:8px; text-decoration:none; font-weight:bold;">ZOBACZ ORYGINAŁ</a>
            </div>`;
        }
        return;
    }

    // --- LOGIKA KALKULATORA ---
    const areaSlider = document.getElementById('areaSlider');
    const areaDisplay = document.getElementById('areaVal');
    const spacingSelect = document.getElementById('spacingSelect');
    
    const totalLitersDisplay = document.getElementById('totalLiters');
    const bottlesDisplay = document.getElementById('inhibitorBottles');

    function updateCalculations() {
        const area = parseFloat(areaSlider.value);
        const metersPerM2 = parseFloat(spacingSelect.value);
        
        areaDisplay.textContent = area;

        // Pojemność rur: area * mb/m2 * 0.113 l/mb
        const loopsVol = area * metersPerM2 * 0.113;
        
        // Stały dodatek na osprzęt (rozdzielacz, kotłownia, dobiegi)
        // Przyjmujemy średnio 10% objętości + 12L (jak w tekście dla rozdzielaczy i przyłączy)
        const totalVolume = Math.round(loopsVol + 12);
        
        // Inhibitor: 1 butelka na 100L (zawsze zaokrąglamy w górę dla bezpieczeństwa)
        const bottlesNeeded = Math.ceil(totalVolume / 100);

        // Update UI
        totalLitersDisplay.textContent = totalVolume;
        bottlesDisplay.textContent = bottlesNeeded;
        
        // Animacja cyfr
        totalLitersDisplay.style.transform = 'scale(1.1)';
        setTimeout(() => totalLitersDisplay.style.transform = 'scale(1)', 150);
    }

    areaSlider.addEventListener('input', updateCalculations);
    spacingSelect.addEventListener('change', updateCalculations);

    // Inicjalizacja przy załadowaniu
    updateCalculations();
});
</script>



<style>
:root {
    --po-primary: #0f172a;
    --po-blue: #0ea5e9;
    --po-blue-dark: #0284c7;
    --po-blue-light: #f0f9ff;
    --po-gray: #f8fafc;
    --po-border: #e2e8f0;
    --po-text: #334155;
    --po-text-light: #64748b;
    --po-highlight: #fef08a;
    --po-highlight-text: #854d0e;
}

.po-diam-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--po-primary);
}

/* Wstęp */
.po-diam-intro {
    background: #ffffff;
    border-radius: 16px;
    padding: 35px 40px;
    border: 1px solid var(--po-border);
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
    margin-bottom: 30px;
    position: relative;
    overflow: hidden;
}

.po-diam-intro::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 6px; height: 100%;
    background: linear-gradient(to bottom, var(--po-blue), var(--po-blue-dark));
}

.po-diam-intro h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    letter-spacing: -0.5px;
    color: var(--po-primary);
}

.po-diam-intro p {
    font-size: 17px;
    line-height: 1.7;
    color: var(--po-text);
    margin: 0;
}

.po-formula-box {
    display: inline-block;
    background: var(--po-blue-light);
    color: var(--po-blue-dark);
    padding: 6px 12px;
    border-radius: 8px;
    font-family: 'Courier New', Courier, monospace;
    font-weight: 800;
    letter-spacing: 1px;
    border: 1px solid #bae6fd;
    margin: 0 5px;
}

/* Interaktywny Moduł */
.po-diam-app {
    background: #ffffff;
    border: 1px solid var(--po-border);
    border-radius: 20px;
    overflow: hidden;
    box-shadow: 0 15px 35px -10px rgba(14, 165, 233, 0.08);
    margin-bottom: 30px;
}

.po-diam-grid {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
}

/* Lewa strona - Wybór i SVG */
.po-diam-selector {
    background: var(--po-gray);
    padding: 40px;
    border-right: 1px solid var(--po-border);
    display: flex;
    flex-direction: column;
    align-items: center;
}

.po-diam-title {
    font-size: 16px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--po-text-light);
    margin-bottom: 25px;
    text-align: center;
    width: 100%;
}

.po-svg-pipe-container {
    width: 160px;
    height: 160px;
    position: relative;
    margin-bottom: 30px;
    display: flex;
    justify-content: center;
    align-items: center;
}

.po-pipe-outer {
    fill: #f1f5f9;
    stroke: #cbd5e1;
    stroke-width: 8;
    transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.po-pipe-inner {
    fill: var(--po-blue);
    transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* Radio Buttons */
.po-pipe-radios {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    width: 100%;
}

.po-pipe-radios label {
    background: #ffffff;
    border: 2px solid var(--po-border);
    border-radius: 12px;
    padding: 12px 10px;
    text-align: center;
    font-weight: 700;
    font-size: 14px;
    cursor: pointer;
    color: var(--po-text);
    transition: all 0.2s;
    user-select: none;
}

.po-pipe-radios input[type="radio"] {
    display: none;
}

.po-pipe-radios input[type="radio"]:checked + label {
    background: var(--po-blue-light);
    border-color: var(--po-blue);
    color: var(--po-blue-dark);
    box-shadow: 0 4px 10px rgba(14, 165, 233, 0.15);
}

/* Prawa strona - Dane */
.po-diam-data {
    padding: 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    background: #ffffff;
}

.po-data-item {
    margin-bottom: 25px;
    padding-bottom: 25px;
    border-bottom: 1px dashed var(--po-border);
}

.po-data-item:last-child {
    margin-bottom: 0;
    padding-bottom: 0;
    border-bottom: none;
}

.po-data-label {
    font-size: 14px;
    font-weight: 700;
    color: var(--po-text-light);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.po-data-value {
    font-size: 32px;
    font-weight: 900;
    color: var(--po-primary);
    line-height: 1.1;
    display: flex;
    align-items: baseline;
    gap: 8px;
}

.po-data-unit {
    font-size: 18px;
    font-weight: 700;
    color: var(--po-text-light);
}

.po-data-value.po-highlight-val {
    color: var(--po-blue-dark);
}

/* Podsumowanie */
.po-diam-summary {
    background: var(--po-highlight);
    padding: 25px 35px;
    border-radius: 16px;
    border: 1px solid #fde047;
    display: flex;
    gap: 20px;
    align-items: flex-start;
}

.po-diam-summary-icon {
    font-size: 32px;
    line-height: 1;
}

.po-diam-summary p {
    margin: 0;
    font-size: 16px;
    line-height: 1.6;
    color: var(--po-highlight-text);
    font-weight: 500;
}

.po-diam-summary a {
    color: #a16207;
    font-weight: 800;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
}

@media (max-width: 768px) {
    .po-diam-grid {
        grid-template-columns: 1fr;
    }
    .po-diam-selector {
        border-right: none;
        border-bottom: 1px solid var(--po-border);
    }
    .po-diam-intro {
        padding: 25px;
    }
    .po-diam-summary {
        flex-direction: column;
        padding: 20px;
    }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#diameters",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/"
    },
    "headline": "Jaka średnica rury ma największy wpływ na objętość instalacji?",
    "description": "Zestawienie średnic rur ogrzewania podłogowego (PEX/PERT 16, 17, 20, 25) i ich wpływu na pojemność wodną oraz opory hydrauliczne 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": "2025-02-08T08:00:00+01:00",
    "dateModified": "2026-05-04T11:55:00+02:00"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#dataset-diameters",
    "name": "Tabela pojemności wodnej dla różnych średnic rur PEX/PERT",
    "description": "Parametry techniczne rur: średnica wewnętrzna, objętość L/mb oraz estymowany zład na 100 m2 podłogi.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "średnice rur w ogrzewaniu podłogowym",
      "pojemność rury pex 16",
      "pojemność rury pert 17",
      "pojemność rury pex 20",
      "zład wody na 100m2 podłogówki"
    ],
    "measurementTechnique": "Analiza geometryczna pola przekroju walca (V = π · r² · L) dla wyznaczenia pojemności hydraulicznej.",
    "mainEntity": [
      {
        "@type": "PropertyValue",
        "name": "PEX/AL/PEX 16x2.0",
        "value": "0.113",
        "unitText": "L/mb"
      },
      {
        "@type": "PropertyValue",
        "name": "PERT 17x2.0",
        "value": "0.133",
        "unitText": "L/mb"
      },
      {
        "@type": "PropertyValue",
        "name": "PEX/AL/PEX 20x2.0",
        "value": "0.201",
        "unitText": "L/mb"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#app-visualizer",
    "name": "Wizualizator Przekroju Rur PEX/PERT",
    "description": "Narzędzie interaktywne ilustrujące kwadratowy przyrost objętości wody w stosunku do zmiany średnicy wewnętrznej rury instalacyjnej.",
    "applicationCategory": "Narzędzie inżynieryjne HVAC",
    "operatingSystem": "Przeglądarka internetowa",
    "license": "https://projekt-ogrzewania.pl/",
    "author": {
        "@type": "Person",
        "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="po-diam-wrapper" id="po-security-diam">
    
    <div class="po-diam-intro">
        <h2>Jaka średnica rury ma największy wpływ na objętość instalacji?</h2>
        <p>Średnica wewnętrzna rury jest parametrem absolutnie krytycznym. Dlaczego? Ponieważ objętość rośnie w kwadracie promienia, zgodnie ze wzorem <span class="po-formula-box">V = π · r² · L</span>. Zmiana geometrii wydaje się niewielka na papierze, ale fizyka płynów jest bezlitosna: przejście z rury 16&#215;2,0 mm na 20&#215;2,0 mm przy tej samej długości pętli <strong>zwiększa ilość wody w układzie o ponad 77%</strong>.</p>
    </div>

    <div class="po-diam-app">
        <div class="po-diam-grid">
            
            <div class="po-diam-selector">
                <div class="po-diam-title">Przekrój Rury i Ilość Wody</div>
                
                <div class="po-svg-pipe-container">
                    <svg viewBox="0 0 100 100" width="100%" height="100%">
                        <circle id="svgPipeOuter" class="po-pipe-outer" cx="50" cy="50" r="32" />
                        <circle id="svgPipeInner" class="po-pipe-inner" cx="50" cy="50" r="24" />
                        <circle cx="50" cy="50" r="1.5" fill="#ffffff" opacity="0.8" />
                    </svg>
                </div>

                <div class="po-pipe-radios">
                    <input type="radio" id="p16" name="pipe_diam" value="16" checked>
                    <label for="p16">PEX 16&#215;2.0</label>

                    <input type="radio" id="p17" name="pipe_diam" value="17">
                    <label for="p17">PERT 17&#215;2.0</label>

                    <input type="radio" id="p20" name="pipe_diam" value="20">
                    <label for="p20">PEX 20&#215;2.0</label>

                    <input type="radio" id="p25" name="pipe_diam" value="25">
                    <label for="p25">PEX 25&#215;2.5</label>
                </div>
            </div>

            <div class="po-diam-data">
                
                <div class="po-data-item">
                    <div class="po-data-label">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"/></svg>
                        Średnica wewnętrzna (di)
                    </div>
                    <div class="po-data-value">
                        <span id="valDi">12</span> <span class="po-data-unit">mm</span>
                    </div>
                </div>

                <div class="po-data-item">
                    <div class="po-data-label">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/></svg>
                        Pojemność wodna
                    </div>
                    <div class="po-data-value po-highlight-val">
                        <span id="valVol">0.113</span> <span class="po-data-unit">L / mb</span>
                    </div>
                </div>

                <div class="po-data-item">
                    <div class="po-data-label">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/><path d="M3 9h18M9 21V9"/></svg>
                        Szacunkowy zład na 100 m² (rozstaw 15 cm)
                    </div>
                    <div class="po-data-value">
                        <span id="valTotal">75.7</span> <span class="po-data-unit" id="unitTotal">Litrów</span>
                    </div>
                </div>

            </div>
        </div>
    </div>

    <div class="po-diam-summary">
        <div class="po-diam-summary-icon">⚖️</div>
        <p>
            Wybór <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">rury o większej średnicy</a> (np. 17 mm zamiast 16 mm) jest często podyktowany chęcią zmniejszenia oporów hydraulicznych w długich pętlach (powyżej 100 mb). Musisz jednak pamiętać, że wiąże się to z koniecznością zapewnienia wyższej mocy rozruchowej źródła ciepła, ze względu na znacznie większą masę wody do podgrzania.
        </p>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- OCHRONA DOMENOWA ---
    const hostname = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(hostname)) {
        const wrap = document.getElementById('po-security-diam');
        if (wrap) {
            wrap.innerHTML = `<div style="padding: 40px; text-align: center; background: #fef2f2; color: #991b1b; border-radius: 16px; border: 2px dashed #f87171;">
                <div style="font-size: 24px; font-weight: bold; margin-bottom: 15px;">Błąd Praw Autorskich</div>
                <p style="font-size: 16px; line-height:1.6; margin-bottom: 25px;">Moduł wizualizacji przepływu jest własnością <strong>Projekt-Ogrzewania.pl</strong>. Osadzenie na tej domenie jest nielegalne.</p>
                <a href="https://projekt-ogrzewania.pl/" style="display:inline-block; background:#dc2626; color:white; padding:12px 25px; border-radius:8px; text-decoration:none; font-weight:bold;">Powrót do oryginału</a>
            </div>`;
        }
        return;
    }

    // --- LOGIKA WIZUALIZATORA ---
    const dataMap = {
        '16': { di: 12, vol: '0.113', total: '75.7', rOut: 32, rIn: 24 },
        '17': { di: 13, vol: '0.133', total: '89.1', rOut: 34, rIn: 26 },
        '20': { di: 16, vol: '0.201', total: '134.7', rOut: 40, rIn: 32 },
        '25': { di: 20, vol: '0.314', total: 'N/A', rOut: 48, rIn: 40, note: '(Rura Zasilająca)' }
    };

    const radios = document.querySelectorAll('input[name="pipe_diam"]');
    const valDi = document.getElementById('valDi');
    const valVol = document.getElementById('valVol');
    const valTotal = document.getElementById('valTotal');
    const unitTotal = document.getElementById('unitTotal');
    
    const svgOuter = document.getElementById('svgPipeOuter');
    const svgInner = document.getElementById('svgPipeInner');

    function animateValue(element, newValue) {
        element.style.opacity = 0;
        setTimeout(() => {
            element.textContent = newValue;
            element.style.opacity = 1;
        }, 200);
    }

    radios.forEach(radio => {
        radio.addEventListener('change', (e) => {
            const val = e.target.value;
            const data = dataMap[val];

            // Update text with fade effect
            valDi.style.transition = "opacity 0.2s";
            valVol.style.transition = "opacity 0.2s";
            valTotal.style.transition = "opacity 0.2s";

            animateValue(valDi, data.di);
            animateValue(valVol, data.vol);
            
            if(data.total === 'N/A') {
                animateValue(valTotal, data.total);
                unitTotal.textContent = data.note;
            } else {
                animateValue(valTotal, data.total);
                unitTotal.textContent = 'Litrów';
            }

            // Update SVG
            svgOuter.setAttribute('r', data.rOut);
            svgInner.setAttribute('r', data.rIn);
        });
    });
});
</script>



<style>
:root {
    --po-primary: #0f172a;
    --po-accent: #0ea5e9;
    --po-accent-dark: #0284c7;
    --po-bg: #f8fafc;
    --po-surface: #ffffff;
    --po-border: #e2e8f0;
    --po-text: #475569;
    --po-success: #10b981;
    --po-warning: #f59e0b;
    --po-danger: #ef4444;
}

.po-system-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--po-primary);
}

/* Wprowadzenie */
.po-system-intro {
    background: var(--po-surface);
    border-radius: 20px;
    padding: 40px;
    border: 1px solid var(--po-border);
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
    margin-bottom: 40px;
}

.po-system-intro h2 {
    font-size: 30px;
    font-weight: 900;
    margin: 0 0 20px 0;
    letter-spacing: -0.5px;
    color: var(--po-primary);
}

.po-system-intro p {
    font-size: 17px;
    line-height: 1.8;
    color: var(--po-text);
    margin-bottom: 15px;
}

.po-highlight-badge {
    background: #e0f2fe;
    color: var(--po-accent-dark);
    padding: 4px 10px;
    border-radius: 6px;
    font-weight: 700;
}

/* Kalkulator Bufora */
.po-buffer-app {
    background: var(--po-surface);
    border: 2px solid var(--po-border);
    border-radius: 24px;
    padding: 40px;
    margin-bottom: 40px;
    box-shadow: 0 20px 40px -15px rgba(14, 165, 233, 0.08);
}

.po-app-header {
    text-align: center;
    font-size: 22px;
    font-weight: 900;
    margin-bottom: 35px;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.po-app-layout {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
    align-items: center;
}

.po-app-controls {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.po-control-box {
    background: var(--po-bg);
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--po-border);
}

.po-control-header {
    display: flex;
    justify-content: space-between;
    font-size: 15px;
    font-weight: 700;
    margin-bottom: 15px;
}

.po-control-val {
    color: var(--po-accent-dark);
    font-weight: 900;
    font-size: 18px;
}

input[type=range].po-slider-input {
    -webkit-appearance: none;
    width: 100%;
    background: transparent;
}

input[type=range].po-slider-input::-webkit-slider-runnable-track {
    width: 100%;
    height: 8px;
    background: #cbd5e1;
    border-radius: 4px;
}

input[type=range].po-slider-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    height: 24px;
    width: 24px;
    border-radius: 50%;
    background: var(--po-accent);
    cursor: pointer;
    margin-top: -8px;
    box-shadow: 0 3px 8px rgba(14, 165, 233, 0.4);
    transition: transform 0.1s;
}

input[type=range].po-slider-input::-webkit-slider-thumb:hover {
    transform: scale(1.15);
}

.po-app-viz {
    display: flex;
    flex-direction: column;
    align-items: center;
    background: #fafafa;
    border-radius: 16px;
    padding: 30px;
    border: 1px dashed var(--po-border);
}

.po-buffer-svg {
    width: 100px;
    height: 140px;
    margin-bottom: 20px;
}

.po-water-level {
    transition: height 0.4s ease, y 0.4s ease;
}

.po-status-number {
    font-size: 48px;
    font-weight: 900;
    line-height: 1;
    transition: color 0.3s;
}

.po-status-text {
    font-size: 13px;
    font-weight: 800;
    color: var(--po-text);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-top: 5px;
    text-align: center;
}

.po-alert-badge {
    margin-top: 15px;
    font-size: 14px;
    font-weight: 700;
    padding: 8px 16px;
    border-radius: 8px;
    text-align: center;
}

/* Algorytm - Karty Kroków */
.po-section-title {
    font-size: 24px;
    font-weight: 900;
    margin: 0 0 20px 0;
    color: var(--po-primary);
}

.po-algorithm-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 20px;
    margin-bottom: 50px;
}

.po-step-card {
    background: var(--po-surface);
    border: 1px solid var(--po-border);
    border-radius: 16px;
    padding: 25px;
    box-shadow: 0 4px 10px -5px rgba(0,0,0,0.02);
    position: relative;
    overflow: hidden;
    transition: transform 0.2s;
}

.po-step-card:hover {
    transform: translateY(-3px);
    border-color: var(--po-accent);
}

.po-step-number {
    background: var(--po-primary);
    color: #fff;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    font-size: 14px;
    margin-bottom: 15px;
}

.po-step-card h4 {
    margin: 0 0 10px 0;
    font-size: 16px;
    font-weight: 800;
}

.po-formula-display {
    background: var(--po-bg);
    color: var(--po-accent-dark);
    padding: 10px 15px;
    border-radius: 8px;
    font-family: 'Courier New', Courier, monospace;
    font-size: 14px;
    font-weight: 700;
    border: 1px solid var(--po-border);
    margin: 10px 0;
    text-align: center;
}

.po-step-card p {
    font-size: 14px;
    color: var(--po-text);
    margin: 0;
    line-height: 1.6;
}

/* Wpływ na Projekt */
.po-impact-layout {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    margin-bottom: 50px;
}

.po-impact-box {
    background: var(--po-surface);
    border-left: 5px solid var(--po-accent);
    padding: 30px;
    border-radius: 0 16px 16px 0;
    box-shadow: 0 10px 20px -5px rgba(0,0,0,0.05);
}

.po-impact-box h3 {
    margin: 0 0 15px 0;
    font-size: 18px;
    font-weight: 900;
    display: flex;
    align-items: center;
    gap: 10px;
}

.po-impact-box p {
    font-size: 15px;
    line-height: 1.7;
    color: var(--po-text);
    margin: 0 0 15px 0;
}

.po-impact-box p:last-child {
    margin-bottom: 0;
}

.po-impact-box a {
    color: var(--po-accent-dark);
    font-weight: 700;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    transition: color 0.2s;
}

.po-impact-box a:hover {
    color: var(--po-accent);
}

/* CTA */
.po-cta-banner {
    background: linear-gradient(135deg, var(--po-primary), #1e293b);
    border-radius: 20px;
    padding: 45px;
    text-align: center;
    color: #ffffff;
    box-shadow: 0 20px 40px -10px rgba(15, 23, 42, 0.4);
    position: relative;
    overflow: hidden;
}

.po-cta-banner::before {
    content: '';
    position: absolute;
    top: -50px;
    left: -50px;
    width: 200px;
    height: 200px;
    background: radial-gradient(circle, rgba(14, 165, 233, 0.2) 0%, transparent 70%);
    border-radius: 50%;
}

.po-cta-banner h3 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    color: #ffffff;
    position: relative;
    z-index: 1;
}

.po-cta-banner p {
    font-size: 17px;
    line-height: 1.6;
    color: #cbd5e1;
    margin: 0 auto 30px auto;
    max-width: 600px;
    position: relative;
    z-index: 1;
}

.po-cta-btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: var(--po-accent);
    color: #ffffff;
    padding: 16px 32px;
    border-radius: 12px;
    font-size: 18px;
    font-weight: 800;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    transition: all 0.3s;
    box-shadow: 0 10px 20px -5px rgba(14, 165, 233, 0.4);
    position: relative;
    z-index: 1;
}

.po-cta-btn:hover {
    background: var(--po-accent-dark);
    transform: translateY(-3px);
    box-shadow: 0 15px 25px -5px rgba(2, 132, 199, 0.5);
    color: #ffffff;
}

@media (max-width: 768px) {
    .po-app-layout, .po-impact-layout {
        grid-template-columns: 1fr;
    }
    .po-system-intro, .po-app-wrapper, .po-cta-banner {
        padding: 25px;
    }
    .po-cta-banner h3 {
        font-size: 24px;
    }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#kalkulacja-pompa-ciepla",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/"
    },
    "headline": "Jak obliczyć zład wody dla pompy ciepła i bufora?",
    "description": "Zasady obliczania zładu odszraniania (defrostu) pompy ciepła wg normy PN-EN 14511. Pięciokrokowy algorytm obliczania objętości instalacji oraz zasady doboru osprzętu.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-08T08:00:00+01:00",
    "dateModified": "2026-05-04T12:15:00+02:00"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#dataset-termodynamika",
    "name": "Parametry termodynamiczne i projektowe instalacji HVAC",
    "description": "Algorytm 5 kroków oraz zestawienie wskaźników fizycznych wykorzystywanych w profesjonalnych arkuszach kalkulacyjnych OZC.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zład wody dla pompy ciepła defrost",
      "pojemność bufora ciepła kalkulator",
      "algorytm objętości instalacji podłogowej",
      "dobór naczynia wzbiorczego zasady",
      "przepływ masowy pompy obiegowej wzór"
    ],
    "measurementTechnique": "Algorytm oparty na normie PN-EN 14511 (15 L/kW mocy cieplnej) oraz obliczeniach pola przekroju i przepływu masowego.",
    "mainEntity": [
      {
        "@type": "PropertyValue",
        "name": "Wymóg zładu dla odszraniania (PN-EN 14511)",
        "value": "10-15",
        "unitText": "L / kW"
      },
      {
        "@type": "PropertyValue",
        "name": "Rozszerzalność cieplna wody 10°C - 50°C",
        "value": "1.2",
        "unitText": "%"
      },
      {
        "@type": "PropertyValue",
        "name": "Ciepło właściwe wody (cp)",
        "value": "4186",
        "unitText": "J/(kg·K)"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#app-bufor",
    "name": "Kalkulator Wymaganego Bufora Ciepła (Defrost)",
    "description": "Narzędzie symulujące konieczność zastosowania bufora (sprzęgła hydraulicznego) w instalacji z pompą ciepła poprzez porównanie zładu krytycznego z rzeczywistą pojemnością rur.",
    "applicationCategory": "Kalkulator Inżynieryjny",
    "operatingSystem": "Web",
    "license": "https://projekt-ogrzewania.pl/",
    "author": {
        "@type": "Person",
        "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="po-system-container" id="po-system-auth">
    
    <div class="po-system-intro">
        <h2>Jak obliczyć zład wody dla pompy ciepła i bufora?</h2>
        <p>W nowoczesnych instalacjach opartych o <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a>, sama woda krążąca w &#8222;podłogówce&#8221; to często zbyt mała masa akumulacyjna. Jest ona niezbędna, by zapewnić kompresorowi stabilną pracę w trudnym procesie odmrażania parownika (defrost).</p>
        <p>Norma branżowa <strong>PN-EN 14511</strong> wyraźnie sugeruje, że dla poprawnego cyklu odszraniania, w instalacji powinno krążyć minimum <span class="po-highlight-badge">10–15 litrów wody na każdy 1 kW</span> mocy urządzenia.</p>
        <p>Niedoszacowanie objętości to prosty przepis na ciągłe &#8222;taktowanie&#8221;. Zbyt częste starty drastycznie skracają żywotność sprężarki i windują zużycie prądu o 15–20%. Koszt montażu <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">odpowiedniego bufora ciepła</a> (ok. 1200–1800 PLN) jest w tym wypadku niezbędną inwestycją w bezpieczeństwo i gwarancję urządzenia.</p>
    </div>

    <div class="po-buffer-app">
        <div class="po-app-header">Weryfikator Pojemności Odszraniania</div>
        
        <div class="po-app-layout">
            <div class="po-app-controls">
                <div class="po-control-box">
                    <div class="po-control-header">
                        <span>Moc pompy ciepła (Q):</span>
                        <span class="po-control-val"><span id="valHpPower">8</span> kW</span>
                    </div>
                    <input type="range" class="po-slider-input" id="sliderHpPower" min="4" max="16" step="1" value="8">
                    <div style="font-size: 12px; color: var(--po-text); margin-top: 8px;">Wymagany zład min.: ~15 L / kW</div>
                </div>

                <div class="po-control-box">
                    <div class="po-control-header">
                        <span>Powierzchnia pętli (15 cm):</span>
                        <span class="po-control-val"><span id="valFloorArea">100</span> m²</span>
                    </div>
                    <input type="range" class="po-slider-input" id="sliderFloorArea" min="40" max="250" step="5" value="100">
                    <div style="font-size: 12px; color: var(--po-text); margin-top: 8px;">Szacowana objętość: ~0.76 L / m²</div>
                </div>
            </div>

            <div class="po-app-viz">
                <svg class="po-buffer-svg" viewBox="0 0 100 120" xmlns="http://www.w3.org/2000/svg">
                    <rect x="20" y="10" width="60" height="100" rx="8" fill="none" stroke="#cbd5e1" stroke-width="5"/>
                    <rect x="10" y="30" width="10" height="8" fill="#cbd5e1"/>
                    <rect x="10" y="80" width="10" height="8" fill="#cbd5e1"/>
                    <rect x="80" y="30" width="10" height="8" fill="#cbd5e1"/>
                    <rect x="80" y="80" width="10" height="8" fill="#cbd5e1"/>
                    
                    <clipPath id="waterMaskBuf">
                        <rect x="23" y="13" width="54" height="94" rx="5"/>
                    </clipPath>
                    
                    <g clip-path="url(#waterMaskBuf)">
                        <rect id="bufWaterRect" class="po-water-level" x="23" y="107" width="54" height="0" fill="var(--po-accent)"/>
                        <path id="bufWaterWave" class="po-water-level" fill="#bae6fd" d="M23,107 Q36,102 50,107 T77,107 L77,107 L23,107 Z" opacity="0.7"/>
                    </g>
                </svg>

                <div class="po-status-number" id="txtDeficit">44</div>
                <div class="po-status-text" id="txtLabel">Brakujących Litrów (Bufor)</div>
                <div class="po-alert-badge" id="txtMsg" style="background: #fef2f2; color: var(--po-danger);">Wymagany montaż bufora</div>
            </div>
        </div>
    </div>

    <h3 class="po-section-title">Algorytm obliczania objętości instalacji</h3>
    <p style="margin-bottom: 25px; color: var(--po-text); line-height: 1.7;">Jako inżynier projektujący systemy HVAC, stosuję sformalizowany algorytm. Możesz z powodzeniem wdrożyć go we własnym arkuszu Excel:</p>

    <div class="po-algorithm-grid">
        <div class="po-step-card">
            <div class="po-step-number">1</div>
            <h4>Średnica wewnętrzna (d<sub>i</sub>)</h4>
            <div class="po-formula-display">d<sub>i</sub> = d<sub>zewn</sub> &#8211; (2 × ścianka)</div>
            <p>Dla typowej rury 16&#215;2: 16 &#8211; 4 = 12 mm (0,012 m).</p>
        </div>

        <div class="po-step-card">
            <div class="po-step-number">2</div>
            <h4>Pole przekroju (A)</h4>
            <div class="po-formula-display">A = π × (d<sub>i</sub> / 2)²</div>
            <p>Wynik dla rury 16 mm: 3,1415 × 0,006² = 0,0001131 m².</p>
        </div>

        <div class="po-step-card">
            <div class="po-step-number">3</div>
            <h4>Długość układu (L<sub>całk</sub>)</h4>
            <div class="po-formula-display">L = (Pow / Rozstaw) + Dob.</div>
            <p>Sumowanie długości bazując na zagęszczeniu pętli i dobiegach do rozdzielacza.</p>
        </div>

        <div class="po-step-card">
            <div class="po-step-number">4</div>
            <h4>Objętość pętli (V<sub>pętle</sub>)</h4>
            <div class="po-formula-display">V = A × L<sub>całk</sub> × 1000</div>
            <p>Iloczyn pola przekroju i długości, przekonwertowany na litry.</p>
        </div>

        <div class="po-step-card">
            <div class="po-step-number">5</div>
            <h4>Uwzględnienie osprzętu</h4>
            <div class="po-formula-display">V<sub>całk</sub> = V<sub>pętle</sub> + 10-15%</div>
            <p>Jeśli nie dysponujesz kartami katalogowymi, przyjmij 15% naddatku na urządzenia kotłowni.</p>
        </div>
    </div>

    <h3 class="po-section-title">Wpływ zładu na projekt ogrzewania</h3>
    <p style="margin-bottom: 25px; color: var(--po-text); line-height: 1.7;">Całkowita objętość układu jest ściśle skorelowana z dokumentacją OZC (Obciążeniem Cieplnym). Te litry determinują wymiarowanie dwóch kluczowych podzespołów hydraulicznych:</p>

    <div class="po-impact-layout">
        <div class="po-impact-box">
            <h3>🎈 Dobór naczynia wzbiorczego</h3>
            <p>Woda ogrzewana z temperatury 10°C do 50°C zwiększa swoją fizyczną objętość o ok. <strong>1,2%</strong>. Przykładowo, w instalacji 200-litrowej, <a href="https://projekt-ogrzewania.pl/naczynie-wzbiorcze/">naczynie wzbiorcze przeponowe</a> musi wchłonąć 2,4 litra ekspansji.</p>
            <p>Ze względów bezpieczeństwa pojemność użyteczna to max 50%. Dlatego dla zładu 200 L montuje się naczynia o pojemności nominalnej <strong>8–12 litrów</strong>.</p>
        </div>

        <div class="po-impact-box" style="border-left-color: var(--po-warning);">
            <h3 style="color: var(--po-warning);">⚙️ Pompa obiegowa a przepływ</h3>
            <p>Wysoki zład i niska różnica temperatur (np. <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">ΔT = 5 K</a>) wymuszają tłoczenie ogromnych mas wody. Korzystamy ze wzoru: <strong>ṁ = Q / (c<sub>p</sub> · ΔT)</strong>.</p>
            <p>Dla zapotrzebowania 7 kW: 7000W / (4186 J/kgK · 5K) daje nam ok. 0,33 kg/s, co przekłada się na <strong>1,2 m³/h</strong>. Obsłużenie takiego zładu wymaga starannego wytypowania <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">odpowiedniej pompy obiegowej</a>.</p>
        </div>
    </div>

    <div class="po-cta-banner">
        <h3>Nie zgaduj, zainwestuj w pewność</h3>
        <p>Błędy w obliczeniach zładu wody, oporów i wydajności pomp mszczą się przez lata w postaci wyższych rachunków za prąd i awarii sprzętu. Zleć to ekspertom i śpij spokojnie.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="po-cta-btn">
            Zamów profesjonalny projekt podłogówki
            <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="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg>
        </a>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- OCHRONA KODU ---
    const allowedHosts = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowedHosts.includes(window.location.hostname)) {
        const wrap = document.getElementById('po-system-auth');
        if (wrap) {
            wrap.innerHTML = `<div style="padding: 40px; text-align: center; background: #fff1f2; color: #9f1239; border-radius: 20px; border: 2px dashed #f43f5e;">
                <h3 style="font-size: 24px; margin: 0 0 15px 0;">Moduł Chroniony Licencją</h3>
                <p style="font-size: 16px; margin-bottom: 25px;">Kalkulator bufora pompy ciepła to autorskie narzędzie serwisu Projekt-Ogrzewania.pl. Osadzenie zablokowane.</p>
                <a href="https://projekt-ogrzewania.pl/" style="display:inline-block; padding:12px 25px; background:#e11d48; color:#fff; border-radius:8px; text-decoration:none; font-weight:800;">Wróć do źródła</a>
            </div>`;
        }
        return;
    }

    // --- LOGIKA KALKULATORA DEFROSTU ---
    const sPower = document.getElementById('sliderHpPower');
    const valPower = document.getElementById('valHpPower');
    const sArea = document.getElementById('sliderFloorArea');
    const valArea = document.getElementById('valFloorArea');
    
    const resDeficit = document.getElementById('txtDeficit');
    const resLabel = document.getElementById('txtLabel');
    const resMsg = document.getElementById('txtMsg');
    
    const bufWater = document.getElementById('bufWaterRect');
    const bufWave = document.getElementById('bufWaterWave');

    function executeBufferCalc() {
        const power = parseFloat(sPower.value);
        const area = parseFloat(sArea.value);
        
        valPower.textContent = power;
        valArea.textContent = area;

        // Wymóg normy 14511: 15L na kW mocy (zakładamy górną bezpieczną granicę z tekstu 10-15)
        const requiredLiters = power * 15;
        
        // Zład instalacji: z tekstu "rozstaw 15cm na 100m2 ma 76 litrów" -> 0.76 L/m2
        const systemLiters = area * 0.76;
        
        const deficit = Math.max(0, requiredLiters - systemLiters);
        const missing = Math.ceil(deficit);
        
        resDeficit.textContent = missing;
        
        if (missing > 0) {
            resDeficit.style.color = "var(--po-danger)";
            resLabel.textContent = "Brakujących litrów (Wymagany Bufor)";
            resMsg.textContent = "Wymagany montaż bufora ciepła";
            resMsg.style.background = "#fef2f2";
            resMsg.style.color = "var(--po-danger)";
            
            // Wysokość wody SVG (max 94px). Zakładamy max deficyt ok 200L do skali
            const percent = Math.min(1, missing / 200); 
            const h = 94 * percent;
            const y = 107 - h;
            
            bufWater.setAttribute('height', h);
            bufWater.setAttribute('y', y);
            bufWave.setAttribute('d', `M23,${y} Q36,${y-4} 50,${y} T77,${y} L77,107 L23,107 Z`);
            bufWave.style.opacity = "0.8";
            
        } else {
            resDeficit.style.color = "var(--po-success)";
            resDeficit.textContent = "OK";
            resLabel.textContent = "Zład Optymalny";
            resMsg.textContent = "Podłogówka wystarczy do odszraniania";
            resMsg.style.background = "#ecfdf5";
            resMsg.style.color = "var(--po-success)";
            
            bufWater.setAttribute('height', 0);
            bufWater.setAttribute('y', 107);
            bufWave.style.opacity = "0";
        }
    }

    sPower.addEventListener('input', executeBufferCalc);
    sArea.addEventListener('input', executeBufferCalc);

    // Initial run
    executeBufferCalc();
});
</script>



<style>
:root {
    --err-primary: #0f172a;
    --err-accent: #f59e0b; /* Kolor ostrzegawczy - bursztynowy */
    --err-danger: #ef4444;
    --err-bg: #fffcf5;
    --err-surface: #ffffff;
    --err-border: #fde68a;
    --err-text: #334155;
    --err-text-light: #64748b;
}

.po-errors-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--err-primary);
}

/* Header modułu */
.po-errors-header {
    background: #ffffff;
    border-radius: 20px;
    padding: 40px;
    border: 1px solid var(--err-border);
    box-shadow: 0 10px 30px -10px rgba(245, 158, 11, 0.1);
    margin-bottom: 30px;
    position: relative;
    overflow: hidden;
}

.po-errors-header::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 8px; height: 100%;
    background: linear-gradient(to bottom, var(--err-accent), var(--err-danger));
}

.po-errors-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    letter-spacing: -0.5px;
}

.po-errors-header p {
    font-size: 17px;
    line-height: 1.8;
    color: var(--err-text);
    margin: 0;
}

/* Grid błędów */
.po-errors-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.po-error-card {
    background: var(--err-surface);
    border: 1px solid #e2e8f0;
    border-radius: 20px;
    padding: 30px 25px;
    text-align: center;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
    cursor: help;
    position: relative;
}

.po-error-card:hover {
    transform: translateY(-8px);
    border-color: var(--err-accent);
    box-shadow: 0 20px 25px -5px rgba(245, 158, 11, 0.15);
}

.po-error-card h4 {
    font-size: 16px;
    font-weight: 800;
    margin: 20px 0 12px 0;
    color: var(--err-primary);
    line-height: 1.4;
}

.po-error-card p {
    font-size: 14px;
    color: var(--err-text-light);
    line-height: 1.6;
    margin: 0;
}

/* SVG Animacje */
.po-svg-icon {
    width: 60px;
    height: 60px;
    color: var(--err-accent);
}

@keyframes pulse-warning {
    0% { transform: scale(1); opacity: 1; }
    50% { transform: scale(1.1); opacity: 0.8; }
    100% { transform: scale(1); opacity: 1; }
}
.anim-pulse { animation: pulse-warning 2s infinite ease-in-out; }

@keyframes rotate-gear {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}
.anim-rotate { transform-origin: center; animation: rotate-gear 8s linear infinite; }

/* Tooltip/Detail Box */
.po-error-detail {
    grid-column: 1 / -1;
    background: var(--err-bg);
    border: 1px solid var(--err-border);
    border-radius: 16px;
    padding: 25px 30px;
    margin-top: 10px;
    display: none;
    animation: slideInDown 0.4s ease-out;
}

@keyframes slideInDown {
    from { opacity: 0; transform: translateY(-10px); }
    to { opacity: 1; transform: translateY(0); }
}

.po-error-detail h5 {
    color: #92400e;
    font-weight: 900;
    margin: 0 0 10px 0;
    text-transform: uppercase;
    font-size: 13px;
    letter-spacing: 1px;
}

.po-error-detail p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: #854d0e;
}

.po-error-detail strong { color: var(--err-primary); }

@media (max-width: 768px) {
    .po-errors-grid { grid-template-columns: 1fr; }
    .po-errors-header { padding: 30px 25px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#errors-section",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/"
    },
    "headline": "Najczęstsze błędy przy szacowaniu ilości wody w podłogówce",
    "description": "Ekspercka analiza błędów przy obliczaniu zładu wody. Dowiedz się, dlaczego instalatorzy mylą się o 50% i jak uniknąć awarii pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-08T08:00:00+01:00",
    "dateModified": "2026-05-04T12:35:00+02:00"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#dataset-errors",
    "name": "Wpływ błędów obliczeniowych na parametry zładu",
    "description": "Zestawienie techniczne objętości rur PP oraz różnic w rozszerzalności cieplnej glikolu i wody.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błędy instalatorów podłogówka",
      "pojemność rury PP 32mm",
      "rozszerzalność glikolu w ogrzewaniu",
      "średnica wewnętrzna PE-RT vs PEX",
      "naczynie wzbiorcze do glikolu"
    ],
    "measurementTechnique": "Analiza inżynierska na bazie 1000+ projektów HVAC i pomiarów rzeczywistych zładów instalacji.",
    "mainEntity": [
      {
        "@type": "PropertyValue",
        "name": "Pojemność rury PP 32 mm",
        "value": "0.38",
        "unitText": "L/mb"
      },
      {
        "@type": "PropertyValue",
        "name": "Naddatek naczynia wzbiorczego dla glikolu",
        "value": "20-25",
        "unitText": "%"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#error-explorer",
    "name": "Eksplorator Błędów Projektowych HVAC",
    "description": "Interaktywny moduł edukacyjny symulujący skutki błędnego szacowania objętości wody w układach płaszczyznowych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="po-errors-container" id="po-err-auth">
    
    <div class="po-errors-header">
        <h2>Najczęstsze błędy przy szacowaniu ilości wody</h2>
        <p>Z mojego doświadczenia wynika, że instalatorzy działający &#8222;na oko&#8221; popełniają błędy sięgające <strong>30–50% rzeczywistej objętości</strong>. Taka pomyłka to nie tylko statystyka – to ryzyko awaryjnego wyłączenia kotłowni w środku zimy. Kliknij w kartę, aby poznać szczegóły techniczne.</p>
    </div>

    <div class="po-errors-grid">
        
        <div class="po-error-card" onclick="toggleError('err1')">
            <div class="po-svg-icon">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
                    <path class="anim-pulse" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/>
                </svg>
            </div>
            <h4>Pomijanie rur przesyłowych</h4>
            <p>Najczęstszy &#8222;grzech&#8221; projektowy – liczenie tylko rur w pętlach pokojowych.</p>
        </div>

        <div class="po-error-card" onclick="toggleError('err2')">
            <div class="po-svg-icon">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
                    <circle cx="12" cy="12" r="10"/>
                    <circle class="anim-rotate" cx="12" cy="12" r="4" stroke-dasharray="4 2"/>
                    <path d="M12 2v2m0 16v2M2 12h2m16 0h2"/>
                </svg>
            </div>
            <h4>Grubość ścianki rury</h4>
            <p>Pomyłka w typie materiału rury (PE-RT vs PEX) zmienia średnicę wewnętrzną.</p>
        </div>

        <div class="po-error-card" onclick="toggleError('err3')">
            <div class="po-svg-icon">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
                    <path d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5"/>
                </svg>
            </div>
            <h4>Brak uwzględnienia glikolu</h4>
            <p>Glikol to inna fizyka rozszerzalności cieplnej niż czysta woda.</p>
        </div>

        <div id="err1" class="po-error-detail">
            <h5>Analiza Inżynierska:</h5>
            <p>Często zapomina się o odcinkach łączących rozdzielacz z kotłownią. Rura PP 32 mm ma pojemność ok. <strong>0,38 L/mb</strong>. Przy 10 metrach (zasilanie + powrót) to dodatkowe <strong>7,6 litra</strong>, czyli tyle, co cała pętla w małej łazience. To krytyczne przy doborze <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacza</a> i pompy.</p>
        </div>

        <div id="err2" class="po-error-detail">
            <h5>Analiza Inżynierska:</h5>
            <p>Rury <a href="https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/">PE-RT typu II</a> bywają cieńsze od rur wielowarstwowych, co zwiększa ich średnicę wewnętrzną i objętość o ok. <strong>5–8%</strong>. Przy domu 150m2 taka różnica to nawet 10 litrów błędu w obliczeniach zładu.</p>
        </div>

        <div id="err3" class="po-error-detail">
            <h5>Analiza Inżynierska:</h5>
            <p>Jeśli instalacja pracuje na <a href="https://projekt-ogrzewania.pl/glikol-w-ogrzewaniu-podlogowym-prawda-i-mity-ktore-musi-znac-kazdy-inwestor/">glikolu</a> (np. w domkach letniskowych), pamiętaj, że ma on wyższą rozszerzalność cieplną. Wymaga to montażu <a href="https://projekt-ogrzewania.pl/naczynie-wzbiorcze/">naczynia wzbiorczego</a> większego o ok. <strong>20–25%</strong> w stosunku do wody.</p>
        </div>

    </div>
</div>

<script>
function toggleError(id) {
    const details = document.querySelectorAll('.po-error-detail');
    const target = document.getElementById(id);
    const isVisible = target.style.display === 'block';

    details.forEach(d => d.style.display = 'none');
    
    if (!isVisible) {
        target.style.display = 'block';
    }
}

document.addEventListener('DOMContentLoaded', function() {
    const host = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(host)) {
        const wrapper = document.getElementById('po-err-auth');
        if (wrapper) {
            wrapper.innerHTML = `<div style="padding: 40px; text-align: center; background: #fff1f2; color: #9f1239; border-radius: 20px; border: 2px dashed #f43f5e;">
                <h3 style="font-size: 24px; margin-bottom: 15px; font-weight: 900;">BŁĄD AUTORYZACJI TREŚCI</h3>
                <p>Ten ekspercki moduł edukacyjny jest własnością intelektualną <strong>Projekt-Ogrzewania.pl</strong>. Nieautoryzowane kopiowanie jest zabronione.</p>
                <a href="https://projekt-ogrzewania.pl/" style="display:inline-block; margin-top:20px; background:#e11d48; color:#fff; padding:12px 25px; border-radius:8px; text-decoration:none; font-weight:bold;">ZOBACZ ORYGINAŁ</a>
            </div>`;
        }
    }
});
</script>



<style>
:root {
    --faq-primary: #0f172a;
    --faq-accent: #0ea5e9;
    --faq-accent-dark: #0284c7;
    --faq-accent-light: #f0f9ff;
    --faq-bg: #f8fafc;
    --faq-surface: #ffffff;
    --faq-border: #e2e8f0;
    --faq-text: #475569;
    --faq-hover: #f1f5f9;
}

.po-faq-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--faq-primary);
}

.po-faq-header {
    text-align: center;
    margin-bottom: 40px;
    padding: 0 20px;
}

.po-faq-header h2 {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 15px 0;
    letter-spacing: -0.5px;
    color: var(--faq-primary);
}

.po-faq-header p {
    font-size: 17px;
    line-height: 1.7;
    color: var(--faq-text);
    max-width: 700px;
    margin: 0 auto;
}

/* Interaktywny Moduł FAQ */
.po-faq-interactive-wrapper {
    background: var(--faq-surface);
    border: 1px solid var(--faq-border);
    border-radius: 24px;
    box-shadow: 0 15px 35px -10px rgba(14, 165, 233, 0.08);
    overflow: hidden;
}

/* Przełączniki kategorii (Filtry) */
.po-faq-filters {
    background: var(--faq-bg);
    padding: 20px 30px;
    border-bottom: 1px solid var(--faq-border);
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    justify-content: center;
}

.po-faq-filter-radio {
    display: none;
}

.po-faq-filter-label {
    padding: 10px 20px;
    background: #ffffff;
    border: 2px solid var(--faq-border);
    border-radius: 30px;
    font-size: 14px;
    font-weight: 700;
    color: var(--faq-text);
    cursor: pointer;
    transition: all 0.2s ease;
    display: flex;
    align-items: center;
    gap: 8px;
    user-select: none;
}

.po-faq-filter-radio:checked + .po-faq-filter-label {
    background: var(--faq-accent-light);
    border-color: var(--faq-accent);
    color: var(--faq-accent-dark);
    box-shadow: 0 4px 10px rgba(14, 165, 233, 0.15);
}

.po-faq-filter-label svg {
    width: 16px;
    height: 16px;
    transition: transform 0.3s;
}

.po-faq-filter-radio:checked + .po-faq-filter-label svg {
    transform: scale(1.2);
}

/* Lista Akordeonów */
.po-faq-list {
    padding: 20px 30px;
}

.po-faq-item {
    border: 1px solid var(--faq-border);
    border-radius: 16px;
    margin-bottom: 15px;
    transition: all 0.3s ease;
    background: #ffffff;
    overflow: hidden;
}

.po-faq-item:last-child {
    margin-bottom: 0;
}

.po-faq-item.is-hidden {
    display: none;
}

.po-faq-question {
    padding: 22px 25px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    background: #ffffff;
    transition: background 0.2s;
}

.po-faq-question:hover {
    background: var(--faq-hover);
}

.po-faq-item.is-active {
    border-color: var(--faq-accent);
    box-shadow: 0 4px 15px rgba(14, 165, 233, 0.05);
}

.po-faq-item.is-active .po-faq-question {
    background: var(--faq-accent-light);
}

.po-faq-q-text {
    font-size: 16px;
    font-weight: 800;
    color: var(--faq-primary);
    padding-right: 20px;
    line-height: 1.4;
}

.po-faq-icon-toggle {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--faq-bg);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--faq-accent);
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), background 0.3s;
}

.po-faq-item.is-active .po-faq-icon-toggle {
    transform: rotate(180deg);
    background: var(--faq-accent);
    color: #ffffff;
}

.po-faq-answer {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s ease-out;
}

.po-faq-item.is-active .po-faq-answer {
    opacity: 1;
}

.po-faq-answer-inner {
    padding: 0 25px 25px 25px;
    font-size: 15px;
    line-height: 1.7;
    color: var(--faq-text);
    border-top: 1px dashed transparent;
}

.po-faq-item.is-active .po-faq-answer-inner {
    border-top-color: var(--faq-border);
    margin-top: 5px;
    padding-top: 20px;
}

.po-faq-answer-inner p {
    margin: 0 0 15px 0;
}

.po-faq-answer-inner p:last-child {
    margin-bottom: 0;
}

.po-faq-answer-inner a {
    color: var(--faq-accent-dark);
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px dashed var(--faq-accent-dark);
    transition: all 0.2s;
}

.po-faq-answer-inner a:hover {
    color: var(--faq-accent);
    border-bottom-style: solid;
}

/* Stylizowany marker wiedzy w odpowiedzi */
.po-faq-insight {
    display: flex;
    gap: 12px;
    background: var(--faq-bg);
    padding: 15px;
    border-radius: 12px;
    margin-top: 15px;
    border-left: 4px solid var(--faq-accent);
}

.po-faq-insight-icon {
    font-size: 20px;
    flex-shrink: 0;
}

.po-faq-insight-text {
    font-size: 14px;
    color: var(--faq-primary);
    font-weight: 500;
    line-height: 1.6;
}

@media (max-width: 768px) {
    .po-faq-filters { padding: 15px; }
    .po-faq-list { padding: 15px; }
    .po-faq-filter-label { padding: 8px 15px; font-size: 13px; }
    .po-faq-question { padding: 18px 20px; }
    .po-faq-answer-inner { padding: 0 20px 20px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#faq-article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/"
    },
    "headline": "FAQ - Często zadawane pytania o zład wody w ogrzewaniu podłogowym",
    "description": "Baza wiedzy dotycząca parametrów chemicznych i hydraulicznych zładu wody. Problemy z napełnianiem, glikolem i wydajnością pomp ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-08T08:00:00+01:00",
    "dateModified": "2026-05-04T12:12:58+02:00"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy napełnienie podłogówki zwykłą wodą z kranu jest bezpieczne dla instalacji?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, woda wodociągowa jest wysoce napowietrzona i bogata w związki wapnia oraz magnezu. Zastosowanie surowej wody z kranu skutkuje wytrącaniem się kamienia kotłowego (zmniejszenie przepływów) oraz korozją tlenową elementów mosiężnych i stalowych. Zawsze rekomenduję użycie wody zdemineralizowanej z domieszką profesjonalnego inhibitora korozji (np. Fernox lub Sentinel). Koszt chemii dla zładu rzędu 100 litrów to zaledwie 300–500 PLN, co stanowi ułamek kosztów wymiany uszkodzonego wymiennika ciepła w pompie."
        }
      },
      {
        "@type": "Question",
        "name": "Ile litrów wody 'znika' w trakcie pierwszego uruchomienia i odpowietrzania układu?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Podczas pierwszego tłoczenia płynu, instalację napełnia się zazwyczaj do osiągnięcia ciśnienia na poziomie 1,5–2,0 bar. Jednakże pętle podłogowe zawierają ogromne ilości mikropęcherzyków powietrza. W procesie wielokrotnego przepłukiwania pętli i działania odpowietrzników automatycznych na rozdzielaczu, ciśnienie drastycznie spada. Z reguły instalator musi dolać (uzupełnić) od 2 do nawet 5 litrów wody w ciągu pierwszych dwóch tygodni rozruchu."
        }
      },
      {
        "@type": "Question",
        "name": "Jak precyzyjnie sprawdzić, czy zład wody w podłogówce wystarczy do odszraniania pompy ciepła?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Kluczem jest karta katalogowa urządzenia. W dokumentacji technicznej producent (DTR) zawsze określa minimalny zład roboczy, zazwyczaj w przedziale 10-15 litrów na każdy 1 kW mocy cieplnej. Jeśli z precyzyjnych obliczeń wynika, że Twoje pętle grzewcze i przyłącza mieszją łącznie np. 80 litrów, a Twoja pompa 9 kW wymaga minimum 110 litrów do bezpiecznego defrostu, absolutnie konieczny staje się montaż zasobnika buforowego (np. 50L) pełniącego funkcję sprzęgła hydraulicznego na powrocie."
        }
      },
      {
        "@type": "Question",
        "name": "Czy przy zastosowaniu glikolu w domku letniskowym objętość zładu oblicza się inaczej?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Sama pojemność geometryczna rur (w litrach) pozostaje taka sama, jednak płyny niezamarzające na bazie glikolu propylenowego charakteryzują się zupełnie innymi parametrami termodynamicznymi. Glikol jest bardziej lepki, ma niższą pojemność cieplną i wyższą rozszerzalność objętościową niż woda. Z inżynieryjnego punktu widzenia oznacza to konieczność przeprojektowania krzywych przepływu dla pomp obiegowych oraz – co najważniejsze – dobrania naczynia wzbiorczego o pojemności większej o około 20-25% w porównaniu do standardowej instalacji wodnej."
        }
      },
      {
        "@type": "Question",
        "name": "Co się dzieje, gdy wykonawca 'dla pewności' zastosuje wszędzie rury o średnicy 20 mm?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Przewymiarowanie średnic (stosowanie PEX 20 mm w standardowych strefach zamiast 16 mm) to ogromny błąd, drastycznie zawyżający zład układu – niemal go podwajając (z 0,113 L/mb na 0,201 L/mb). Powoduje to ogromną bezwładność termiczną; podłoga będzie reagowała na zmiany zadanej temperatury przez wiele godzin. Taki układ całkowicie burzy precyzję sterowania pogodowego i wymusza stosowanie nieproporcjonalnie dużych naczyń przeponowych oraz drogich, przemysłowych pomp obiegowych w niewielkim budynku."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#dataset-faq",
    "name": "Problemy eksploatacyjne i fizyka płynów instalacyjnych",
    "description": "Zbiór danych jakościowych i ilościowych dotyczących wpływu chemii instalacyjnej oraz geometrii układu na trwałość armatury.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "czy można napełnić podłogówkę wodą z kranu",
      "odpowietrzanie ogrzewania podłogowego ubytek wody",
      "minimalny zład do odszraniania pompy ciepła",
      "zastosowanie glikolu w podłogówce",
      "skutki przewymiarowania rur podłogowych"
    ],
    "measurementTechnique": "Wiedza ekspercka oparta na diagnozie usterek oraz analizie norm technicznych producentów pomp ciepła.",
    "mainEntity": [
      {
        "@type": "PropertyValue",
        "name": "Wymagany naddatek naczynia dla glikolu",
        "value": "+20 do +25",
        "unitText": "%"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#faq-explorer",
    "name": "Eksplorator Bazy Wiedzy (FAQ) o Zładzie Wodnym",
    "description": "Interaktywny panel ułatwiający filtrowanie i przeglądanie eksperckich odpowiedzi na złożone zagadnienia hydrauliczne w podłogówce.",
    "applicationCategory": "Baza Wiedzy / FAQ Explorer",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "author": {
        "@type": "Person",
        "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="po-faq-container" id="po-faq-auth">
    
    <div class="po-faq-header">
        <h2>FAQ &#8211; Eksperckie odpowiedzi na trudne pytania</h2>
        <p>Precyzyjne zaplanowanie zładu to dopiero początek. W trakcie <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/">próby szczelności</a> i pierwszego rozruchu instalacji, inwestorzy zadają mi dziesiątki pytań. Oto 5 kluczowych zagadnień, których znajomość ratuje przed kosztownymi awariami.</p>
    </div>

    <div class="po-faq-interactive-wrapper">
        
        <div class="po-faq-filters">
            <input type="radio" name="faq_filter" id="filter_all" value="all" class="po-faq-filter-radio" checked>
            <label for="filter_all" class="po-faq-filter-label">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 6h16M4 12h16M4 18h16"/></svg>
                Wszystkie pytania
            </label>

            <input type="radio" name="faq_filter" id="filter_chemia" value="chemia" class="po-faq-filter-radio">
            <label for="filter_chemia" class="po-faq-filter-label">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><path d="M12 16v-8l-2 2m4 0-2-2"/></svg>
                Jakość płynu (Chemia)
            </label>

            <input type="radio" name="faq_filter" id="filter_pompa" value="pompa" class="po-faq-filter-radio">
            <label for="filter_pompa" class="po-faq-filter-label">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/></svg>
                Pompy Ciepła i Hydraulika
            </label>
        </div>

        <div class="po-faq-list">
            
            <div class="po-faq-item" data-category="chemia">
                <div class="po-faq-question">
                    <span class="po-faq-q-text">Czy napełnienie podłogówki zwykłą wodą z kranu jest bezpieczne dla instalacji?</span>
                    <div class="po-faq-icon-toggle">
                        <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"/></svg>
                    </div>
                </div>
                <div class="po-faq-answer">
                    <div class="po-faq-answer-inner">
                        <p><strong>Zdecydowanie nie.</strong> Woda wodociągowa (&#8222;kranówka&#8221;) jest wysoce napowietrzona i bogata w jony wapnia, magnezu oraz chlorki. Wprowadzenie jej do nowoczesnego systemu, pełnego mosiężnych rozdzielaczy i stalowych wymienników, inicjuje błyskawiczny proces korozji tlenowej i wytrącania się kamienia kotłowego.</p>
                        <p>Osadzający się kamień potrafi w ciągu dwóch sezonów drastycznie zawęzić przekroje zaworów i rotametrów, dławiąc przepływy. Jako ekspert, zawsze rekomenduję napełnianie zładu wyłącznie <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-w-ogrzewaniu-podlogowym-dlaczego-to-najlepszy-wybor-zamiast-zwyklej-wody-z-kranu/">wodą zdemineralizowaną wzbogaconą o inhibitor korozji</a>. Koszt profesjonalnej chemii (np. Fernox lub Sentinel) dla przeciętnego domu to wydatek rzędu 300–500 PLN. To zaledwie ułamek kwoty, jaką zapłacisz za wymianę uszkodzonego wymiennika płytowego w pompie ciepła.</p>
                    </div>
                </div>
            </div>

            <div class="po-faq-item" data-category="pompa">
                <div class="po-faq-question">
                    <span class="po-faq-q-text">Ile litrów wody &#8222;znika&#8221; w trakcie pierwszego uruchomienia i odpowietrzania układu?</span>
                    <div class="po-faq-icon-toggle">
                        <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"/></svg>
                    </div>
                </div>
                <div class="po-faq-answer">
                    <div class="po-faq-answer-inner">
                        <p>Fizycznie woda nie &#8222;znika&#8221;, ale ustępuje miejsca usuwanemu powietrzu. Instalację płaszczyznową standardowo nabija się do ciśnienia statycznego 1,5–2,0 bar. Jednakże nowo zalane pętle, z racji swojej struktury (wiele zakrętów), magazynują ogromne ilości uwięzionych mikropęcherzyków powietrza.</p>
                        <p>Kiedy uruchamiamy pompy obiegowe i otwieramy <a href="https://projekt-ogrzewania.pl/objawy-zapowietrzenia-ogrzewania-podlogowego/">odpowietrzniki na rozdzielaczach</a>, pęcherze są wypychane na zewnątrz, a ciśnienie w manometrze spada. W ciągu pierwszych dwóch tygodni wygrzewania wylewek normą jest konieczność dopuszczenia (dolania) od <strong>2 do nawet 5 litrów</strong> nowego płynu instalacyjnego, aby ustabilizować parametry robocze.</p>
                    </div>
                </div>
            </div>

            <div class="po-faq-item" data-category="pompa">
                <div class="po-faq-question">
                    <span class="po-faq-q-text">Jak precyzyjnie sprawdzić, czy zład wody w podłogówce wystarczy do odszraniania pompy ciepła?</span>
                    <div class="po-faq-icon-toggle">
                        <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"/></svg>
                    </div>
                </div>
                <div class="po-faq-answer">
                    <div class="po-faq-answer-inner">
                        <p>Głównym punktem odniesienia jest zawsze DTR (Dokumentacja Techniczno-Ruchowa) producenta Twojego urządzenia. Odszukaj parametr &#8222;minimalny zład wody&#8221;. Większość producentów opiera się na normatywnym przeliczniku od <strong>10 do 15 litrów pojemności na każdy 1 kW</strong> mocy nominalnej kompresora.</p>
                        <p>Jeśli <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-moze-byc-jedynym-zrodlem-ciepla-w-domu-analiza-dla-polskich-warunkow/">ogrzewanie podłogowe jest jedynym źródłem ciepła</a>, a Twój obliczony z pętli zład to 80 litrów, natomiast wytyczne dla Twojej pompy 9 kW wymagają min. 110 litrów do bezpiecznego &#8222;defrostu&#8221; – instalacja w takim stanie stwarza ryzyko awarii. Bezwzględnie musisz zaprojektować dodatkowy bufor wpinany szeregowo na powrocie (tzw. sprzęgło hydrauliczne) by zwiększyć masę akumulacyjną zładu.</p>
                    </div>
                </div>
            </div>

            <div class="po-faq-item" data-category="chemia">
                <div class="po-faq-question">
                    <span class="po-faq-q-text">Czy przy zastosowaniu glikolu w domku letniskowym objętość zładu oblicza się inaczej?</span>
                    <div class="po-faq-icon-toggle">
                        <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"/></svg>
                    </div>
                </div>
                <div class="po-faq-answer">
                    <div class="po-faq-answer-inner">
                        <p>Objętość geometryczna w rurach mierzona w litrach nie ulega zmianie, ale zastosowanie <a href="https://projekt-ogrzewania.pl/glikol-w-ogrzewaniu-podlogowym-prawda-i-mity-ktore-musi-znac-kazdy-inwestor/">roztworu glikolu</a> wywraca do góry nogami zasady doboru osprzętu wokół tego zładu.</p>
                        <p>Glikol ma niższą pojemność cieplną od wody (gorzej przenosi energię) i jest znacznie bardziej lepki, co wymusza przewymiarowanie pomp obiegowych. Co gorsza, ma <strong>wyższą rozszerzalność objętościową</strong> pod wpływem temperatury. Pamiętaj, że zład rzędu 150 litrów oparty o glikol będzie wymagał naczynia wzbiorczego (przeponowego) o pojemności całkowitej średnio <strong>o 20 do 25% większej</strong>, niż w przypadku instalacji napełnionej standardowo wodą demineralizowaną.</p>
                    </div>
                </div>
            </div>

            <div class="po-faq-item" data-category="pompa">
                <div class="po-faq-question">
                    <span class="po-faq-q-text">Co się dzieje, gdy instalator &#8222;na oko&#8221; przewymiaruje średnice rur (np. 20 mm wszędzie)?</span>
                    <div class="po-faq-icon-toggle">
                        <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"/></svg>
                    </div>
                </div>
                <div class="po-faq-answer">
                    <div class="po-faq-answer-inner">
                        <p>To niestety spotykana &#8222;partyzantka&#8221; na budowach. Zmiana rury z 16 mm na 20 mm w strefach, które tego nie wymagają, drastycznie zawyża całkowity zład instalacji. Z 0,113 L/mb skaczemy nagle na 0,201 L/mb w każdej pętli.</p>
                        <div class="po-faq-insight">
                            <span class="po-faq-insight-icon">⚠️</span>
                            <span class="po-faq-insight-text">
                                Gigantyczna masa zładu powoduje ekstremalną bezwładność termiczną. Podłoga reaguje na zmianę nastaw w termostacie z kilkunastogodzinnym opóźnieniem. Taka ociężała instalacja całkowicie zaburza optymalizację krzywej grzewczej sterowania pogodowego i wymusza na inwestorze zakup przewymiarowanych naczyń wzbiorczych.
                            </span>
                        </div>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- OCHRONA DOMENOWA ---
    const hostname = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(hostname)) {
        const wrap = document.getElementById('po-faq-auth');
        if (wrap) {
            wrap.innerHTML = `<div style="padding: 40px; text-align: center; background: #fff1f2; color: #9f1239; border-radius: 20px; border: 2px dashed #f43f5e;">
                <div style="font-size: 22px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Prawa Autorskie Zastrzeżone</div>
                <p style="font-size: 16px; line-height: 1.6; margin-bottom: 20px;">Ten interaktywny moduł FAQ jest własnością <strong>Projekt-Ogrzewania.pl</strong>. Użycie na obcej domenie jest nielegalne.</p>
                <a href="https://projekt-ogrzewania.pl/" style="display:inline-block; padding:10px 25px; background:#e11d48; color:#fff; border-radius:8px; text-decoration:none; font-weight:800;">Wróć do źródła</a>
            </div>`;
        }
        return;
    }

    // --- LOGIKA AKORDEONÓW (FAQ) ---
    const faqItems = document.querySelectorAll('.po-faq-item');
    
    faqItems.forEach(item => {
        const question = item.querySelector('.po-faq-question');
        const answer = item.querySelector('.po-faq-answer');
        
        question.addEventListener('click', () => {
            const isActive = item.classList.contains('is-active');
            
            // Zamknij wszystkie pozostałe
            faqItems.forEach(otherItem => {
                if(otherItem !== item && otherItem.classList.contains('is-active')) {
                    otherItem.classList.remove('is-active');
                    otherItem.querySelector('.po-faq-answer').style.maxHeight = null;
                }
            });
            
            // Otwórz / Zamknij kliknięty
            if (!isActive) {
                item.classList.add('is-active');
                answer.style.maxHeight = answer.scrollHeight + 50 + "px"; // + buffer
            } else {
                item.classList.remove('is-active');
                answer.style.maxHeight = null;
            }
        });
    });

    // --- LOGIKA FILTRÓW (WEB APPLICATION) ---
    const filters = document.querySelectorAll('.po-faq-filter-radio');
    
    filters.forEach(filter => {
        filter.addEventListener('change', (e) => {
            const val = e.target.value;
            
            faqItems.forEach(item => {
                // reset state
                item.classList.remove('is-active');
                item.querySelector('.po-faq-answer').style.maxHeight = null;

                if (val === 'all') {
                    item.classList.remove('is-hidden');
                } else {
                    if (item.getAttribute('data-category') === val) {
                        item.classList.remove('is-hidden');
                    } else {
                        item.classList.add('is-hidden');
                    }
                }
            });
        });
    });
});
</script>



<style>
:root {
    --cs-primary: #0f172a;
    --cs-accent: #0ea5e9;
    --cs-pipe20: #ef4444; /* Czerwony dla błędu/przewymiarowania */
    --cs-pipe16: #0ea5e9; /* Niebieski dla optymalnej wody */
    --cs-bg: #f8fafc;
    --cs-border: #e2e8f0;
    --cs-text: #475569;
}

.case-study-module {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--cs-border);
    overflow: hidden;
}

/* ================= HEADER I METRYCZKA ================= */
.cs-header-wrapper {
    background: var(--cs-primary);
    color: #ffffff;
    padding: 40px 50px;
    position: relative;
    overflow: hidden;
}

.cs-header-wrapper::after {
    content: '';
    position: absolute;
    top: -50px;
    right: -50px;
    width: 250px;
    height: 250px;
    background: radial-gradient(circle, rgba(14, 165, 233, 0.25) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
}

.cs-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.2);
    color: #bae6fd;
    padding: 6px 14px;
    border-radius: 50px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
}

.cs-header-wrapper h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 25px 0;
    line-height: 1.3;
    color: #ffffff;
    position: relative;
    z-index: 2;
}

.cs-stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
    position: relative;
    z-index: 2;
}

.cs-stat-box {
    background: rgba(0, 0, 0, 0.2);
    border: 1px solid rgba(255, 255, 255, 0.1);
    padding: 15px;
    border-radius: 12px;
    backdrop-filter: blur(4px);
}

.cs-stat-label {
    display: block;
    font-size: 11px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 700;
    margin-bottom: 5px;
}

.cs-stat-value {
    display: block;
    font-size: 16px;
    font-weight: 900;
    color: #ffffff;
}

/* ================= OPIS WYZWANIA ================= */
.cs-content-section {
    padding: 40px 50px 30px 50px;
    background: #ffffff;
}

.cs-lead-text {
    font-size: 16px;
    line-height: 1.8;
    color: var(--cs-text);
    margin: 0 0 20px 0;
}

.cs-lead-text strong {
    color: var(--cs-primary);
}

.cs-author-box {
    background: #f0f9ff;
    border-left: 4px solid var(--cs-accent);
    padding: 15px 20px;
    border-radius: 0 12px 12px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 10px;
}

.cs-author-photo {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid #ffffff;
    box-shadow: 0 4px 10px rgba(14, 165, 233, 0.2);
    flex-shrink: 0;
}

.cs-author-box p {
    margin: 0;
    font-size: 14px;
    color: #0c4a6e;
    line-height: 1.6;
}

.cs-author-box a {
    color: var(--cs-accent);
    font-weight: 800;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
}

.cs-author-box a:hover {
    color: #0c4a6e;
}

/* ================= INTERAKTYWNE WYZWANIE (SPLIT CARDS) ================= */
.cs-interactive-section {
    padding: 0 50px 40px 50px;
}

.cs-split-container {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.cs-split-card {
    border-radius: 16px;
    padding: 25px;
    border: 2px solid var(--cs-border);
    cursor: pointer;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
    background: #ffffff;
}

/* Stan nieaktywny lekko przygaszony */
.cs-split-card:not(.active) {
    opacity: 0.7;
    transform: scale(0.98);
}

/* Kolorystyka i aktywacja */
.cs-split-card.pipe20.active {
    border-color: var(--cs-pipe20);
    background: #fef2f2;
    box-shadow: 0 10px 25px rgba(239, 68, 68, 0.15);
    opacity: 1;
    transform: scale(1);
}

.cs-split-card.pipe16.active {
    border-color: var(--cs-pipe16);
    background: #f0f9ff;
    box-shadow: 0 10px 25px rgba(14, 165, 233, 0.15);
    opacity: 1;
    transform: scale(1);
}

.cs-card-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 15px;
}

.cs-card-icon {
    font-size: 28px;
}

.cs-card-title {
    font-size: 18px;
    font-weight: 900;
    color: var(--cs-primary);
    margin: 0;
}

.cs-card-desc {
    font-size: 14px;
    line-height: 1.6;
    color: var(--cs-text);
    margin: 0;
}

.cs-card-solution {
    margin-top: 15px;
    padding-top: 15px;
    border-top: 1px dashed rgba(0,0,0,0.1);
    font-size: 13px;
    font-weight: 700;
    display: none;
}

.cs-split-card.pipe20 .cs-card-solution { color: #991b1b; }
.cs-split-card.pipe16 .cs-card-solution { color: #075985; }

.cs-split-card.active .cs-card-solution {
    display: block;
    animation: csFadeIn 0.4s ease forwards;
}

@keyframes csFadeIn {
    from { opacity: 0; transform: translateY(5px); }
    to { opacity: 1; transform: translateY(0); }
}

@media (max-width: 768px) {
    .cs-header-wrapper { padding: 35px 25px; }
    .cs-stats-grid { grid-template-columns: 1fr 1fr; }
    .cs-content-section { padding: 30px 25px 20px 25px; }
    .cs-interactive-section { padding: 0 25px 30px 25px; }
    .cs-split-container { grid-template-columns: 1fr; }
}
</style>

<div class="case-study-module" id="app-case-study-zlad">

    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org",
        "@type": "WebApplication",
        "name": "Panel Studium Przypadku: Optymalizacja Zładu Wody",
        "description": "Interaktywny moduł edukacyjny prezentujący wyzwania inżynierskie i proces decyzyjny przy doborze średnicy rur w kontekście całkowitej pojemności wodnej systemu.",
        "applicationCategory": "EducationalApplication",
        "operatingSystem": "All",
        "url": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#case-study",
        "license": "https://projekt-ogrzewania.pl/",
        "offers": {
          "@type": "Offer",
          "price": "0",
          "priceCurrency": "PLN"
        },
        "creator": {
          "@type": "Person",
          "name": "Robert Kucharski",
          "sameAs": [
            "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
            "https://www.linkedin.com/in/robert-kucharski-38069b48/"
          ]
        },
        "featureList": [
          "Wizualizacja błędu przewymiarowania rur (20mm)",
          "Optymalizacja zładu dla rury 16mm",
          "Analiza wpływu zładu na koszty osprzętu kotłowni"
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "Dataset",
        "name": "Parametry Projektowe OZC - Dom Inwestora (Poznań)",
        "description": "Zestawienie parametrów wejściowych budynku wykorzystanych do optymalizacji zładu wody ogrzewania podłogowego.",
        "license": "https://projekt-ogrzewania.pl/",
        "variableMeasured": [
          {
            "@type": "PropertyValue",
            "name": "Inwestor",
            "value": "Jakub"
          },
          {
            "@type": "PropertyValue",
            "name": "Powierzchnia budynku",
            "value": "160 m²"
          },
          {
            "@type": "PropertyValue",
            "name": "Źródło ciepła",
            "value": "Pompa Ciepła"
          },
          {
            "@type": "PropertyValue",
            "name": "Lokalizacja",
            "value": "Poznań"
          }
        ],
        "creator": {
          "@type": "Person",
          "name": "Robert Kucharski"
        }
      },
      {
        "@context": "https://schema.org",
        "@type": "Article",
        "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#case-study-article",
        "mainEntityOfPage": {
          "@type": "WebPage",
          "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/"
        },
        "headline": "Case Study: Optymalizacja zładu wody u Inwestora (Poznań)",
        "description": "Analiza przypadku błędnie założonych średnic rur ogrzewania podłogowego i ich wpływu na drastyczny przyrost objętości instalacji.",
        "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
        "author": {
          "@type": "Person",
          "name": "Robert Kucharski",
          "url": "https://projekt-ogrzewania.pl/"
        },
        "publisher": {
          "@type": "Organization",
          "name": "Projekt-Ogrzewania.pl",
          "logo": {
            "@type": "ImageObject",
            "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
          }
        },
        "datePublished": "2025-02-08T08:00:00+01:00",
        "dateModified": "2026-05-04T12:45:00+02:00"
      }
    ]
    </script>

    <div class="cs-header-wrapper">
        <div class="cs-badge">Projekt w praktyce</div>
        <h2>Optymalizacja zładu wody u Inwestora</h2>
        <div class="cs-stats-grid">
            <div class="cs-stat-box">
                <span class="cs-stat-label">Inwestor</span>
                <span class="cs-stat-value">Jakub</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Lokalizacja</span>
                <span class="cs-stat-value">Poznań</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Powierzchnia</span>
                <span class="cs-stat-value">160 m²</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Źródło ciepła</span>
                <span class="cs-stat-value">Pompa Ciepła</span>
            </div>
        </div>
    </div>

    <div class="cs-content-section">
        <p class="cs-lead-text">Podczas konsultacji systemu grzewczego dla nowo budowanego domu Pana Jakuba w Poznaniu, natrafiliśmy na klasyczny przypadek &#8222;wykonawstwa na oko&#8221;. Lokalny instalator zaproponował ułożenie w całym domu <strong>rury o średnicy 20 mm</strong> w stałym rozstawie co 10 cm, ignorując całkowicie fizyczne konsekwencje, jakie niesie za sobą tak radykalne powiększenie pojemności wodnej układu.</p>
        
        <div class="cs-author-box">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="cs-author-photo" loading="lazy">
            <p>Założenia zrewidował główny projektant <strong>Robert Kucharski</strong>. Przeliczenie rzeczywistego zładu ujawniło ukryte koszty, przed którymi musieliśmy uchronić inwestora:</p>
        </div>
    </div>

    <div class="cs-interactive-section">
        <div class="cs-split-container">
            
            <div class="cs-split-card pipe20 active" id="cs-btn-pipe20">
                <div class="cs-card-header">
                    <span class="cs-card-icon">🛑</span>
                    <h3 class="cs-card-title">Rura 20 mm (Wizja Wykonawcy)</h3>
                </div>
                <p class="cs-card-desc">Gigantyczny zład wody (ponad 260 litrów w samej wylewce). Ogromna bezwładność cieplna powoduje brak precyzji w sterowaniu pokojowym. Układ stawia potężne wymagania armaturze.</p>
                <div class="cs-card-solution">
                    <strong>Diagnoza:</strong> Odrzucenie projektu. Zbyt duży zład wymusiłby montaż naczynia wzbiorczego o pojemności aż 35L oraz ciągły zakup 3 butelek drogiego inhibitora korozji. Wymagana byłaby również znacznie mocniejsza pompa obiegowa.
                </div>
            </div>

            <div class="cs-split-card pipe16" id="cs-btn-pipe16">
                <div class="cs-card-header">
                    <span class="cs-card-icon">✅</span>
                    <h3 class="cs-card-title">Rura 16 mm (Projekt Inżynierski)</h3>
                </div>
                <p class="cs-card-desc">Optymalny zład wody (ok. 135 litrów). Stanowi idealny balans między masą zładu potrzebną pompie ciepła do bezawaryjnego odszraniania (defrostu), a pożądaną dynamiką nagrzewania.</p>
                <div class="cs-card-solution">
                    <strong>Wdrożenie:</strong> Instalacja wykonana na rurze 16&#215;2.0. Mniejsze opory miejscowe rur, szybsza reakcja podłogi na zmiany z termostatów. Oszczędność inwestora na samym osprzęcie kotłowni (naczynia, pompy, chemia) wyniosła niemal 2500 PLN.
                </div>
            </div>

        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Zabezpieczenie domenowe
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('app-case-study-zlad');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px 25px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px; border: 2px dashed #ef4444;">
                    <span style="font-size: 40px; display: block; margin-bottom: 10px;">🔒</span>
                    <h3 style="margin: 0 0 10px 0; font-size: 20px;">Studium Przypadku Chronione Licencją</h3>
                    <p style="font-size: 14px; margin-bottom: 15px;">Ten interaktywny panel edukacyjny to autorska własność Projekt-Ogrzewania.pl.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 10px 20px; background: #dc2626; color: white; text-decoration: none; border-radius: 8px; font-weight: bold; font-size: 13px;">ZOBACZ ORYGINAŁ</a>
                </div>
            `;
            return;
        }
    }

    // Logika przełączania kart Case Study
    const cardPipe20 = document.getElementById('cs-btn-pipe20');
    const cardPipe16 = document.getElementById('cs-btn-pipe16');

    function toggleCards(activeCard, inactiveCard) {
        activeCard.classList.add('active');
        inactiveCard.classList.remove('active');
    }

    if (cardPipe20 && cardPipe16) {
        cardPipe20.addEventListener('click', () => toggleCards(cardPipe20, cardPipe16));
        cardPipe16.addEventListener('click', () => toggleCards(cardPipe16, cardPipe20));
    }
});
</script>



<style>
:root {
    --quote-primary: #0f172a;
    --quote-accent: #0ea5e9;
    --quote-accent-dark: #0284c7;
    --quote-bg: #f8fafc;
    --quote-surface: #ffffff;
    --quote-border: #e2e8f0;
}

.expert-tip-wrapper {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
}

.expert-tip-header {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    margin-bottom: 25px;
}

.expert-tip-header h2 {
    font-size: 26px;
    font-weight: 900;
    color: var(--quote-primary);
    margin: 0;
    letter-spacing: -0.5px;
}

.expert-tip-header svg {
    color: var(--quote-accent);
    animation: pulse-icon 2s infinite;
}

@keyframes pulse-icon {
    0% { transform: scale(1); }
    50% { transform: scale(1.15); }
    100% { transform: scale(1); }
}

.expert-tip-container {
    background: var(--quote-surface);
    border-radius: 24px;
    padding: 40px;
    display: flex;
    gap: 35px;
    align-items: center;
    border: 1px solid var(--quote-border);
    box-shadow: 0 15px 35px -10px rgba(14, 165, 233, 0.08);
    position: relative;
    text-align: left;
    transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    overflow: hidden;
}

/* Interaktywny pasek akcentujący na hover */
.expert-tip-container::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    height: 100%;
    width: 6px;
    background: linear-gradient(to bottom, var(--quote-accent), var(--quote-accent-dark));
    transition: width 0.3s ease;
}

.expert-tip-container:hover {
    transform: translateY(-5px);
    box-shadow: 0 25px 40px -12px rgba(14, 165, 233, 0.15);
}

.expert-tip-container:hover::before {
    width: 10px;
}

.expert-tip-photo-wrap {
    flex-shrink: 0;
    width: 120px;
    height: 120px;
    position: relative;
}

.expert-tip-photo {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    object-position: center top;
    border: 4px solid var(--quote-bg);
    box-shadow: 0 8px 20px rgba(0,0,0,0.08);
    transition: transform 0.5s ease;
}

.expert-tip-container:hover .expert-tip-photo {
    transform: rotate(-3deg) scale(1.05);
}

/* Animowany Badge inżynierski */
.expert-tip-photo-wrap::after {
    content: '📐';
    position: absolute;
    bottom: -5px;
    right: -5px;
    background: #ffffff;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.1);
    border: 1px solid var(--quote-border);
}

.expert-tip-content {
    flex-grow: 1;
    position: relative;
    z-index: 1;
}

/* Cudzysłów tła */
.expert-tip-content::before {
    content: '"';
    position: absolute;
    top: -40px;
    left: -20px;
    font-size: 120px;
    color: var(--quote-bg);
    font-family: serif;
    z-index: -1;
    line-height: 1;
    opacity: 0.7;
}

.expert-tip-label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    font-weight: 800;
    color: var(--quote-accent-dark);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    background: #e0f2fe;
    padding: 4px 12px;
    border-radius: 20px;
}

.expert-tip-text {
    font-size: 18px;
    line-height: 1.7;
    color: var(--quote-primary);
    font-style: italic;
    font-weight: 500;
    margin: 0;
}

.expert-tip-text strong {
    color: var(--quote-accent-dark);
    font-weight: 900;
}

.expert-tip-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 20px;
    padding-top: 20px;
    border-top: 1px dashed var(--quote-border);
}

.expert-tip-signature {
    display: flex;
    flex-direction: column;
}

.expert-tip-name {
    font-size: 16px;
    font-weight: 900;
    color: var(--quote-primary);
}

.expert-tip-role {
    font-size: 13px;
    font-weight: 600;
    color: #64748b;
}

/* Interaktywny przycisk kopiowania */
.expert-copy-btn {
    background: transparent;
    border: 1px solid var(--quote-border);
    color: #64748b;
    padding: 8px 16px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 6px;
    transition: all 0.2s;
}

.expert-copy-btn:hover {
    background: var(--quote-bg);
    color: var(--quote-accent-dark);
    border-color: #bae6fd;
}

.expert-copy-btn.copied {
    background: #ecfdf5;
    color: #10b981;
    border-color: #10b981;
}

@media (max-width: 768px) {
    .expert-tip-container {
        flex-direction: column;
        text-align: center;
        padding: 30px 25px;
        gap: 20px;
    }
    .expert-tip-content::before {
        left: 50%;
        transform: translateX(-50%);
    }
    .expert-tip-footer {
        flex-direction: column;
        gap: 15px;
    }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#quote-section",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/"
    },
    "headline": "Ekspercka wskazówka: Znaczenie zładu wody w ogrzewaniu podłogowym",
    "description": "Podsumowujący cytat eksperta branży HVAC, Roberta Kucharskiego, na temat kluczowej roli precyzyjnych obliczeń zładu wody w zapobieganiu awariom.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-08T08:00:00+01:00",
    "dateModified": "2026-05-04T12:35:00+02:00"
  },
  {
    "@context": "https://schema.org",
    "@type": "Quotation",
    "license": "https://projekt-ogrzewania.pl/",
    "text": "Zbyt często widzę na budowach przewymiarowane rury lub całkowicie pominięte obliczenia zładu. Instalatorzy zgadują, ile wody jest w układzie. Konsekwencje? Taktujące pompy ciepła, które nie mają z czego pobrać energii do defrostu, i pękające zawory bezpieczeństwa przez zbyt małe naczynia wzbiorcze. Precyzyjna wiedza o tym, ile wody potrzeba do wypełnienia instalacji podłogówki, to fundament, na którym opiera się bezpieczeństwo całej kotłowni.",
    "spokenByCharacter": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "jobTitle": "CEO & Główny Projektant",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ],
      "worksFor": {
        "@type": "Organization",
        "name": "Projekt-Ogrzewania.pl"
      }
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#dataset-quote",
    "name": "Konsekwencje błędów projektowych w zładzie wody",
    "description": "Zestawienie analityczne skutków ignorowania precyzyjnych obliczeń hydraulicznych w systemach z pompą ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zład wody w podłogówce",
      "obliczanie pojemności instalacji",
      "błędy instalatorów podłogówka",
      "pojemność rur ogrzewania",
      "Robert Kucharski ogrzewanie podłogowe"
    ],
    "measurementTechnique": "Ekspertyza terenowa, analiza awaryjności systemów grzewczych wynikających z błędów wykonawczych i projektowych.",
    "mainEntity": [
      {
        "@type": "PropertyValue",
        "name": "Skutek zbyt małego zładu",
        "value": "Taktowanie pompy ciepła i brak energii na defrost"
      },
      {
        "@type": "PropertyValue",
        "name": "Skutek nieoszacowania rozszerzalności",
        "value": "Awaria naczynia wzbiorczego i zrzut ciśnienia przez zawór bezpieczeństwa"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#quote-widget",
    "name": "Moduł Interaktywnego Cytatu Eksperckiego",
    "description": "Interaktywny komponent interfejsu użytkownika (UI) z systemem zabezpieczeń domeny oraz funkcją natychmiastowego kopiowania rekomendacji inżynierskiej do schowka.",
    "applicationCategory": "UI Component",
    "operatingSystem": "Web Browser",
    "license": "https://projekt-ogrzewania.pl/",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="expert-tip-wrapper">
    <div class="expert-tip-header">
        <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/></svg>
        <h2>Inżynierskie podsumowanie tematu</h2>
    </div>
    
    <div class="expert-tip-container" id="expert-tip-water">
        <div class="expert-tip-photo-wrap">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Ekspert HVAC" class="expert-tip-photo" loading="lazy">
        </div>
        <div class="expert-tip-content">
            <span class="expert-tip-label">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg>
                Budowa bez ściemy
            </span>
            <p class="expert-tip-text" id="quoteTextToCopy">
                &#8222;Zbyt często widzę na budowach przewymiarowane rury lub całkowicie pominięte obliczenia zładu. Instalatorzy zgadują, ile wody jest w układzie. Konsekwencje? Taktujące pompy ciepła, które nie mają z czego pobrać energii do defrostu, i pękające zawory bezpieczeństwa przez zbyt małe naczynia wzbiorcze. Precyzyjna wiedza o tym, <strong>ile wody potrzeba do wypełnienia instalacji podłogówki</strong>, to fundament, na którym opiera się bezpieczeństwo całej kotłowni.&#8221;
            </p>
            
            <div class="expert-tip-footer">
                <div class="expert-tip-signature">
                    <span class="expert-tip-name">Robert Kucharski</span>
                    <span class="expert-tip-role">CEO &#038; Główny Projektant Projekt-Ogrzewania.pl</span>
                </div>
                
                <button class="expert-copy-btn" id="btnCopyQuote">
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
                    Skopiuj cytat
                </button>
            </div>
        </div>
    </div>

    <noscript>
        <div style="padding: 25px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 16px; margin-top: 20px; font-family: sans-serif;">
            <p style="font-size: 15px; font-weight: 800; color: #0f172a; margin-bottom: 10px;">Podsumowanie Roberta Kucharskiego:</p>
            <p style="font-size: 15px; color: #475569; line-height: 1.6; margin:0;">Zbyt często widzę na budowach przewymiarowane rury lub całkowicie pominięte obliczenia zładu. Konsekwencje? Taktujące pompy ciepła i pękające zawory bezpieczeństwa przez zbyt małe naczynia wzbiorcze. Precyzyjna wiedza o ilości wody to fundament bezpieczeństwa kotłowni.</p>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- OCHRONA DOMENOWA ---
    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('expert-tip-water');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px 20px; text-align: center; background: #fff1f2; color: #9f1239; border-radius: 20px; width: 100%; border: 2px dashed #f43f5e;">
                    <span style="font-size: 32px; display:block; margin-bottom: 15px;">🔒</span>
                    <div style="font-size: 20px; font-weight: 900; margin-bottom: 10px; text-transform:uppercase;">Moduł ekspercki chroniony autorsko</div>
                    <p style="font-size: 15px; color: #881337;">Rekomendacja inż. Roberta Kucharskiego jest własnością Projekt-Ogrzewania.pl. Użycie nieautoryzowane.</p>
                </div>
            `;
            container.style.borderLeft = 'none';
            container.style.background = 'transparent';
            container.style.padding = '0';
            container.style.boxShadow = 'none';
        }
        return;
    }

    // --- INTERAKCJA: KOPIOWANIE CYTATU ---
    const copyBtn = document.getElementById('btnCopyQuote');
    const quoteText = document.getElementById('quoteTextToCopy');

    if (copyBtn && quoteText) {
        copyBtn.addEventListener('click', function() {
            // Oczyszczamy tekst z tagów HTML (np. <strong>)
            const plainText = quoteText.innerText || quoteText.textContent;
            const fullQuote = plainText + " — Robert Kucharski, Projekt-Ogrzewania.pl";

            navigator.clipboard.writeText(fullQuote).then(function() {
                // Sukces
                const originalHtml = copyBtn.innerHTML;
                copyBtn.classList.add('copied');
                copyBtn.innerHTML = `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg> Skopiowano!`;
                
                setTimeout(function() {
                    copyBtn.classList.remove('copied');
                    copyBtn.innerHTML = originalHtml;
                }, 3000);
            }).catch(function(err) {
                console.error('Błąd kopiowania: ', err);
            });
        });
    }
});
</script>



<style>
:root {
    --sum-primary: #0f172a;
    --sum-blue: #0ea5e9;
    --sum-blue-dark: #0284c7;
    --sum-bg: #f8fafc;
    --sum-surface: #ffffff;
    --sum-border: #e2e8f0;
    --sum-text: #475569;
    --sum-success: #10b981;
    --sum-warning: #f59e0b;
    --sum-danger: #ef4444;
}

.po-summary-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--sum-primary);
}

/* Wprowadzenie do podsumowania */
.po-summary-header {
    text-align: center;
    margin-bottom: 40px;
    padding: 0 20px;
}

.po-summary-header h2 {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 15px 0;
    letter-spacing: -0.5px;
    color: var(--sum-primary);
}

.po-summary-header p {
    font-size: 18px;
    line-height: 1.7;
    color: var(--sum-text);
    max-width: 750px;
    margin: 0 auto;
}

/* Interaktywny Dashboard Podsumowujący */
.po-dashboard-wrapper {
    background: var(--sum-surface);
    border: 1px solid var(--sum-border);
    border-radius: 24px;
    padding: 40px;
    box-shadow: 0 20px 40px -15px rgba(14, 165, 233, 0.08);
    margin-bottom: 40px;
}

.po-dashboard-title {
    font-size: 20px;
    font-weight: 900;
    margin-bottom: 30px;
    text-transform: uppercase;
    letter-spacing: 1px;
    display: flex;
    align-items: center;
    gap: 12px;
    color: var(--sum-primary);
}

.po-dashboard-title svg {
    color: var(--sum-blue);
}

.po-dashboard-grid {
    display: grid;
    grid-template-columns: 1fr 1.6fr;
    gap: 40px;
}

/* Sekcja Kontrolek (Lewa) */
.po-dash-controls {
    display: flex;
    flex-direction: column;
    gap: 25px;
    background: var(--sum-bg);
    padding: 30px;
    border-radius: 16px;
    border: 1px solid var(--sum-border);
}

.po-dash-group {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.po-dash-label {
    display: flex;
    justify-content: space-between;
    font-size: 14px;
    font-weight: 700;
    color: var(--sum-text);
}

.po-dash-val {
    color: var(--sum-blue-dark);
    font-weight: 900;
    font-size: 16px;
}

input[type=range].po-dash-slider {
    -webkit-appearance: none;
    width: 100%;
    background: transparent;
}

input[type=range].po-dash-slider::-webkit-slider-runnable-track {
    width: 100%;
    height: 8px;
    background: #cbd5e1;
    border-radius: 4px;
}

input[type=range].po-dash-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    height: 24px;
    width: 24px;
    border-radius: 50%;
    background: var(--sum-blue);
    cursor: pointer;
    margin-top: -8px;
    box-shadow: 0 3px 8px rgba(14, 165, 233, 0.4);
    transition: transform 0.1s;
}

input[type=range].po-dash-slider::-webkit-slider-thumb:hover {
    transform: scale(1.15);
}

/* Sekcja Wyników (Prawa) - KPI Cards */
.po-dash-results {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.po-kpi-card {
    background: #ffffff;
    border: 2px solid var(--sum-border);
    border-radius: 16px;
    padding: 25px 20px;
    text-align: center;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.po-kpi-card.active-safe { border-color: var(--sum-success); background: #ecfdf5; }
.po-kpi-card.active-warn { border-color: var(--sum-danger); background: #fef2f2; }

.po-kpi-icon {
    width: 46px;
    height: 46px;
    border-radius: 50%;
    background: var(--sum-bg);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 15px;
    color: var(--sum-blue);
}

.po-kpi-val {
    font-size: 32px;
    font-weight: 900;
    color: var(--sum-primary);
    line-height: 1.1;
    margin-bottom: 5px;
    transition: transform 0.2s;
}

.po-kpi-label {
    font-size: 12px;
    font-weight: 800;
    color: var(--sum-text);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* SVG Animations inside KPI */
@keyframes spinSlow { 100% { transform: rotate(360deg); } }
.anim-spin-slow { animation: spinSlow 8s linear infinite; }

@keyframes floatDrop { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-4px); } }
.anim-float { animation: floatDrop 3s ease-in-out infinite; }

/* CTA Ostateczne */
.po-final-cta {
    background: linear-gradient(135deg, var(--sum-primary), #1e293b);
    border-radius: 20px;
    padding: 50px;
    text-align: center;
    color: #ffffff;
    box-shadow: 0 20px 40px -10px rgba(15, 23, 42, 0.4);
    position: relative;
    overflow: hidden;
}

.po-final-cta::before {
    content: '';
    position: absolute;
    top: -50px;
    right: -50px;
    width: 250px;
    height: 250px;
    background: radial-gradient(circle, rgba(14, 165, 233, 0.25) 0%, transparent 70%);
    border-radius: 50%;
}

.po-final-cta h3 {
    font-size: 30px;
    font-weight: 900;
    margin: 0 0 20px 0;
    color: #ffffff;
    position: relative;
    z-index: 1;
}

.po-final-cta p {
    font-size: 18px;
    line-height: 1.6;
    color: #cbd5e1;
    margin: 0 auto 35px auto;
    max-width: 650px;
    position: relative;
    z-index: 1;
}

.po-final-cta-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--sum-blue);
    color: #ffffff;
    padding: 18px 40px;
    border-radius: 12px;
    font-size: 18px;
    font-weight: 800;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 1px;
    transition: all 0.3s;
    box-shadow: 0 10px 20px -5px rgba(14, 165, 233, 0.5);
    position: relative;
    z-index: 1;
}

.po-final-cta-btn:hover {
    background: var(--sum-blue-dark);
    transform: translateY(-3px);
    box-shadow: 0 15px 30px -5px rgba(2, 132, 199, 0.6);
}

@media (max-width: 900px) {
    .po-dashboard-grid { grid-template-columns: 1fr; gap: 30px; }
}

@media (max-width: 600px) {
    .po-dash-results { grid-template-columns: 1fr; }
    .po-dashboard-wrapper, .po-final-cta { padding: 25px; }
    .po-summary-header h2 { font-size: 26px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#podsumowanie-zladu",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/"
    },
    "headline": "Podsumowanie: Dlaczego warto znać pojemność instalacji?",
    "description": "Kompleksowe podsumowanie wpływu zładu wody na parametry pracy pompy ciepła, dobór naczynia wzbiorczego i ilość inhibitora. Interaktywny dashboard inżynierski.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-08T08:00:00+01:00",
    "dateModified": "2026-05-04T12:19:14+02:00"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#dataset-podsumowanie",
    "name": "Kluczowe wskaźniki dla instalacji płaszczyznowych (KPI)",
    "description": "Synteza parametrów OZC, DTR pomp ciepła i norm hydraulicznych (PN-EN 14511, PN-B-02414).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "podsumowanie zładu wody",
      "kalkulator całkowity podłogówki",
      "dobór naczynia wzbiorczego",
      "inhibitor korozji dawkowanie",
      "pojemność instalacji c.o."
    ],
    "measurementTechnique": "Synteza wieloparametrowa uwzględniająca pole przekroju rur, rozstaw układania, rezerwy technologiczne na osprzęt oraz współczynnik rozszerzalności cieplnej.",
    "mainEntity": [
      {
        "@type": "PropertyValue",
        "name": "Rekomendowane dawkowanie inhibitora",
        "value": "1",
        "unitText": "opakowanie (500ml) / 100 L"
      },
      {
        "@type": "PropertyValue",
        "name": "Użyteczność naczynia wzbiorczego",
        "value": "40-50",
        "unitText": "% objętości nominalnej"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#app-dashboard",
    "name": "Dashboard Inżynierski: Weryfikacja Instalacji",
    "description": "Interaktywne narzędzie podsumowujące parametry hydrauliczne i chemiczne systemu. Generuje wytyczne doboru naczynia, bufora i chemii.",
    "applicationCategory": "Kalkulator Inżynieryjny",
    "operatingSystem": "Web",
    "license": "https://projekt-ogrzewania.pl/",
    "author": {
        "@type": "Person",
        "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="po-summary-container" id="po-summary-auth">
    
    <div class="po-summary-header">
        <h2>Podsumowanie: Dlaczego warto znać pojemność instalacji?</h2>
        <p>Znajomość dokładnej <strong>ilości wody w podłogówce</strong> pozwala zoptymalizować koszty eksploatacji, prawidłowo dobrać pompę obiegową i uniknąć awarii spowodowanych błędnym doborem naczynia przeponowego. Matematyka w inżynierii HVAC nie wybacza błędów – buduj bez ściemy.</p>
    </div>

    <div class="po-dashboard-wrapper">
        <div class="po-dashboard-title">
            <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/><path d="M3 9h18M9 21V9"/></svg>
            Inżynierski Panel Kontrolny Systemu
        </div>

        <div class="po-dashboard-grid">
            
            <div class="po-dash-controls">
                <div class="po-dash-group">
                    <div class="po-dash-label">
                        <span>Powierzchnia (m²):</span>
                        <span class="po-dash-val" id="sumValArea">150</span>
                    </div>
                    <input type="range" class="po-dash-slider" id="sumArea" min="50" max="300" step="5" value="150">
                </div>

                <div class="po-dash-group" style="margin-top: 10px;">
                    <div class="po-dash-label">
                        <span>Średnica Rury:</span>
                        <span class="po-dash-val" id="sumValPipe">16&#215;2.0</span>
                    </div>
                    <input type="range" class="po-dash-slider" id="sumPipe" min="0" max="1" step="1" value="0">
                    <div style="display:flex; justify-content:space-between; font-size:11px; color:#94a3b8; font-weight:700; margin-top:5px;">
                        <span>PEX 16mm (co 10cm)</span>
                        <span>PEX 20mm (co 15cm)</span>
                    </div>
                </div>

                <div class="po-dash-group" style="margin-top: 10px;">
                    <div class="po-dash-label">
                        <span>Moc Źródła (kW):</span>
                        <span class="po-dash-val" id="sumValPower">9</span>
                    </div>
                    <input type="range" class="po-dash-slider" id="sumPower" min="5" max="20" step="1" value="9">
                </div>
            </div>

            <div class="po-dash-results">
                
                <div class="po-kpi-card">
                    <div class="po-kpi-icon">
                        <svg class="anim-float" 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 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z"/></svg>
                    </div>
                    <div class="po-kpi-val" id="kpiTotal">187 L</div>
                    <div class="po-kpi-label">Całkowity Zład Wody</div>
                </div>

                <div class="po-kpi-card">
                    <div class="po-kpi-icon" style="color: var(--sum-success);">
                        <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 d="m9 12 2 2 4-4"/></svg>
                    </div>
                    <div class="po-kpi-val" id="kpiInhibitor">2 szt.</div>
                    <div class="po-kpi-label">Inhibitor (500ml)</div>
                </div>

                <div class="po-kpi-card">
                    <div class="po-kpi-icon" style="color: var(--sum-primary);">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="2" width="16" height="20" rx="2" ry="2"/><path d="M4 12h16"/><path d="M12 2v20"/></svg>
                    </div>
                    <div class="po-kpi-val" id="kpiVessel">10 L</div>
                    <div class="po-kpi-label">Min. Naczynie Wzbiorcze</div>
                </div>

                <div class="po-kpi-card" id="kpiBufferCard">
                    <div class="po-kpi-icon" id="kpiBufferIcon">
                        <svg class="anim-spin-slow" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/></svg>
                    </div>
                    <div class="po-kpi-val" id="kpiBuffer">OK</div>
                    <div class="po-kpi-label" id="kpiBufferLabel">Status Defrostu</div>
                </div>

            </div>
        </div>
    </div>

    <div class="po-final-cta">
        <h3>Nie zostawiaj projektu przypadkowi</h3>
        <p>Powyższy symulator to doskonałe narzędzie do weryfikacji, ale dom to zbiór dziesiątek indywidualnych zmiennych (OZC, rozstawy mieszane, strefy brzegowe). Pamiętaj, że precyzyjne dane techniczne gwarantują brak awarii w przyszłości.</p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="po-final-cta-btn">
            Przeczytaj pozostałe nasze poradniki
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M12 5l7 7-7 7"/></svg>
        </a>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- OCHRONA KODU ---
    const allowedHosts = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowedHosts.includes(window.location.hostname)) {
        const wrap = document.getElementById('po-summary-auth');
        if (wrap) {
            wrap.innerHTML = `<div style="padding: 40px; text-align: center; background: #fff1f2; color: #9f1239; border-radius: 20px; border: 2px dashed #f43f5e;">
                <h3 style="font-size: 24px; margin: 0 0 15px 0;">Moduł Chroniony Licencją</h3>
                <p style="font-size: 16px; margin-bottom: 25px;">Ten dashboard jest autorskim narzędziem serwisu Projekt-Ogrzewania.pl. Osadzenie zablokowane.</p>
                <a href="https://projekt-ogrzewania.pl/" style="display:inline-block; padding:12px 25px; background:#e11d48; color:#fff; border-radius:8px; text-decoration:none; font-weight:800;">Wróć do źródła</a>
            </div>`;
        }
        return;
    }

    // --- LOGIKA DASHBOARDU ---
    const sArea = document.getElementById('sumArea');
    const sPipe = document.getElementById('sumPipe');
    const sPower = document.getElementById('sumPower');
    
    const vArea = document.getElementById('sumValArea');
    const vPipe = document.getElementById('sumValPipe');
    const vPower = document.getElementById('sumValPower');

    const kTotal = document.getElementById('kpiTotal');
    const kInhibitor = document.getElementById('kpiInhibitor');
    const kVessel = document.getElementById('kpiVessel');
    
    const kBufferCard = document.getElementById('kpiBufferCard');
    const kBuffer = document.getElementById('kpiBuffer');
    const kBufferLabel = document.getElementById('kpiBufferLabel');
    const kBufferIcon = document.getElementById('kpiBufferIcon');

    function updateDashboard() {
        const area = parseFloat(sArea.value);
        const is20mm = parseInt(sPipe.value) === 1;
        const power = parseFloat(sPower.value);

        // Update labels
        vArea.textContent = area;
        vPipe.textContent = is20mm ? "20x2.0 mm" : "16x2.0 mm";
        vPower.textContent = power;

        // 1. Total Volume
        // 16mm -> 10mb/m2 * 0.113. 20mm -> 6.7mb/m2 * 0.201
        let baseVol = is20mm ? (area * 6.7 * 0.201) : (area * 10 * 0.113);
        let totalVol = Math.round(baseVol * 1.1 + 10); // +10% osprzet + 10L bufor/kociol
        
        // Animacja
        kTotal.style.transform = 'scale(1.1)';
        setTimeout(() => kTotal.style.transform = 'scale(1)', 150);
        kTotal.textContent = totalVol + " L";

        // 2. Inhibitor (1 butelka na 100L)
        let bottles = Math.ceil(totalVol / 100);
        kInhibitor.textContent = bottles + " szt.";

        // 3. Expansion Vessel
        // Woda 10->50C = 1.2% exp. Zapas 2.5x (uzytecznosc 40%). Total * 0.012 * 2.5 = Total * 0.03
        let vesselSize = Math.ceil(totalVol * 0.03);
        // Typowe pojemności rynkowe: 8, 12, 18, 24, 35
        let marketVessel = 8;
        if(vesselSize > 8) marketVessel = 12;
        if(vesselSize > 12) marketVessel = 18;
        if(vesselSize > 18) marketVessel = 24;
        if(vesselSize > 24) marketVessel = 35;
        kVessel.textContent = marketVessel + " L";

        // 4. Defrost / Buffer
        let requiredDefrost = power * 15;
        let deficit = Math.round(requiredDefrost - totalVol);

        if (deficit > 0) {
            kBufferCard.className = "po-kpi-card active-warn";
            kBuffer.textContent = "+" + deficit + " L";
            kBufferLabel.textContent = "Brakuje (Dodaj Bufor)";
            kBufferIcon.style.color = "var(--sum-danger)";
        } else {
            kBufferCard.className = "po-kpi-card active-safe";
            kBuffer.textContent = "OK";
            kBufferLabel.textContent = "Status Defrostu";
            kBufferIcon.style.color = "var(--sum-success)";
        }
    }

    sArea.addEventListener('input', updateDashboard);
    sPipe.addEventListener('input', updateDashboard);
    sPower.addEventListener('input', updateDashboard);

    // Init
    updateDashboard();
});
</script>



<style>
:root {
    --dl-primary: #0f172a;
    --dl-accent: #0ea5e9;
    --dl-accent-dark: #0284c7;
    --dl-bg: #f8fafc;
    --dl-border: #e2e8f0;
    --dl-text: #334155;
    --dl-white: #ffffff;
    --dl-muted: #64748b;
}

.download-hub-container {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--dl-white);
    border-radius: 24px;
    border: 1px solid var(--dl-border);
    box-shadow: 0 20px 40px -10px rgba(0,0,0,0.05);
    overflow: hidden;
}

/* NAGŁÓWEK SEKCJI */
.dl-header {
    background: linear-gradient(135deg, var(--dl-primary) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: var(--dl-white);
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: relative;
}

.dl-header-content { 
    position: relative; 
    z-index: 2; 
    max-width: 65%; 
}

.dl-badge {
    display: inline-block;
    background: rgba(14, 165, 233, 0.2);
    border: 1px solid rgba(14, 165, 233, 0.3);
    color: #7dd3fc;
    padding: 6px 12px;
    border-radius: 50px;
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
}

.dl-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 10px 0;
    letter-spacing: -0.5px;
}

.dl-header p {
    font-size: 15px;
    color: #94a3b8;
    margin: 0;
    line-height: 1.6;
}

/* WIZUALIZACJA PDF / IKONA */
.dl-header-visual {
    position: relative;
    z-index: 2;
}

.dl-pdf-icon-svg {
    width: 80px;
    height: auto;
    filter: drop-shadow(0 10px 15px rgba(0,0,0,0.3));
    animation: floatIcon 3s infinite ease-in-out alternate;
}

@keyframes floatIcon {
    from { transform: translateY(0); }
    to { transform: translateY(-10px); }
}

/* GŁÓWNY WORKSPACE */
.dl-workspace {
    display: flex;
    padding: 40px 50px;
    gap: 40px;
    background: var(--dl-white);
}

.dl-preview-box {
    flex: 1;
    background: var(--dl-bg);
    border: 1px solid var(--dl-border);
    border-radius: 16px;
    padding: 10px;
    position: relative;
    cursor: zoom-in;
    transition: transform 0.3s;
}

.dl-preview-box:hover {
    transform: scale(1.02);
}

.dl-preview-img {
    width: 100%;
    height: auto;
    border-radius: 8px;
    display: block;
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.dl-zoom-hint {
    position: absolute; 
    bottom: 20px; 
    right: 20px; 
    background: rgba(15, 23, 42, 0.8); 
    color: white; 
    padding: 8px 12px; 
    border-radius: 8px; 
    font-size: 12px; 
    font-weight: 700;
    backdrop-filter: blur(4px);
}

.dl-info-side {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.dl-feature-list {
    list-style: none;
    padding: 0;
    margin: 0 0 30px 0;
}

.dl-feature-item {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 15px;
    font-size: 15px;
    font-weight: 600;
    color: var(--dl-text);
}

.dl-check-svg {
    width: 22px;
    height: 22px;
    color: var(--dl-accent);
    flex-shrink: 0;
}

/* PRZYCISK POBIERANIA */
.dl-main-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--dl-accent);
    color: var(--dl-white);
    text-decoration: none !important;
    padding: 18px 30px;
    border-radius: 14px;
    font-weight: 800;
    font-size: 16px;
    transition: all 0.3s;
    box-shadow: 0 10px 20px -5px rgba(14, 165, 233, 0.4);
}

.dl-main-btn:hover {
    background: var(--dl-accent-dark);
    transform: translateY(-3px);
    box-shadow: 0 15px 30px -5px rgba(14, 165, 233, 0.5);
    color: var(--dl-white);
}

.dl-main-btn span { font-size: 20px; }

/* STOPKA MODUŁU */
.dl-footer {
    padding: 20px 50px;
    background: var(--dl-bg);
    border-top: 1px solid var(--dl-border);
    font-size: 13px;
    color: var(--dl-muted);
    text-align: center;
}

.dl-footer a {
    color: var(--dl-accent-dark);
    font-weight: 700;
    text-decoration: none;
}

@media (max-width: 800px) {
    .dl-header { flex-direction: column; text-align: center; padding: 30px 20px; }
    .dl-header-content { max-width: 100%; margin-bottom: 25px; }
    .dl-workspace { flex-direction: column; padding: 30px 20px; }
    .dl-preview-box { margin-bottom: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#infografika-article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/"
    },
    "headline": "Ile wody w ogrzewaniu podłogowym? Pobierz Kompendium (PDF)",
    "description": "Pobierz inżynierską ściągę Roberta Kucharskiego. Kompletny poradnik obliczania zładu wody, pojemności rur i unikania błędów w formacie PDF.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-08T08:00:00+01:00",
    "dateModified": "2026-05-04T12:50:00+02:00"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#dataset-infografika",
    "name": "Wizualizacja Algorytmu Obliczeniowego Zładu Wody",
    "description": "Zestawienie 8 kluczowych kroków projektowych do określenia objętości cieczy w instalacji, pojemności rur 16mm/17mm oraz identyfikacji błędów instalacyjnych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika zład wody",
      "schemat obliczania wody podłogówka",
      "objętość rury 16mm vs 17mm",
      "najczęstsze błędy podłogówka pdf",
      "ściąga instalatora HVAC"
    ],
    "measurementTechnique": "Wizualizacja schematów blokowych i diagramów porównawczych na podstawie obliczeń geometrycznych i norm inżynieryjnych.",
    "mainEntity": {
      "@type": "Thing",
      "name": "8-krokowy schemat obliczeń pojemności instalacji"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#download-app-zlad",
    "name": "Centrum Pobierania Wiedzy: Zład Wody",
    "description": "Interaktywny moduł umożliwiający wizualizację (WEBP) i pobranie (PDF) dokumentacji technicznej dotyczącej pojemności wodnej instalacji.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5",
    "license": "https://projekt-ogrzewania.pl/",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="download-hub-container" id="app-water-dl">
    
    <div class="dl-header">
        <div class="dl-header-content">
            <div class="dl-badge">Darmowe Materiały Inżynierskie</div>
            <h2>Pobierz Kompletny Poradnik (PDF)</h2>
            <p>Zabierz inżynierską wiedzę na budowę. 8-krokowy algorytm obliczeń, parametry techniczne rur (16mm vs 17mm) oraz checklista najczęstszych błędów w jednym pliku.</p>
        </div>
        <div class="dl-header-visual">
            <svg class="dl-pdf-icon-svg" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M14 2H6C4.89543 2 4 2.89543 4 4V20C4 21.1046 4.89543 22 6 22H18C19.1046 22 20 21.1046 20 20V8L14 2Z" fill="#ef4444" stroke="#ffffff" stroke-width="1"/>
                <path d="M14 2V8H20" stroke="#ffffff" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/>
                <text x="7" y="18" fill="white" font-size="5" font-weight="900" font-family="sans-serif">PDF</text>
            </svg>
        </div>
    </div>

    <div class="dl-workspace">
        
        <div class="dl-preview-box" onclick="window.open('https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki.webp', '_blank')">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki.webp" alt="Infografika - Algorytm i schemat obliczania zładu wody w ogrzewaniu podłogowym" class="dl-preview-img" loading="lazy">
            <div class="dl-zoom-hint">🔍 Kliknij, aby powiększyć</div>
        </div>

        <div class="dl-info-side">
            <ul class="dl-feature-list">
                <li class="dl-feature-item">
                    <svg class="dl-check-svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    8 Kroków: Precyzyjny algorytm obliczeń
                </li>
                <li class="dl-feature-item">
                    <svg class="dl-check-svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Porównanie: Rury 16 mm vs 17 mm
                </li>
                <li class="dl-feature-item">
                    <svg class="dl-check-svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Checklista 3 krytycznych błędów
                </li>
                <li class="dl-feature-item">
                    <svg class="dl-check-svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Format gotowy do druku na budowę (PDF)
                </li>
            </ul>

            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki.pdf" class="dl-main-btn" target="_blank">
                <span>📥</span> POBIERZ ŚCIĄGĘ (PDF)
            </a>
            
            <p style="margin-top: 20px; font-size: 13px; color: var(--dl-muted); line-height: 1.5;">
                Masz dość zgadywania na budowie? <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" style="color:var(--dl-accent-dark); font-weight:800;">Zleć profesjonalny projekt podłogówki</a> i otrzymaj wyliczony zład z dokładnością do 1 litra.
            </p>
        </div>

    </div>

    <div class="dl-footer">
        © 2026 Projekt-Ogrzewania.pl | Autor: <strong>Robert Kucharski</strong>. Udostępnianie materiału w formie niezmienionej jest dozwolone.
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- OCHRONA DOMENOWA ---
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('app-water-dl');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #fee2e2; border: 2px solid #dc2626; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 10px;">🔒</div>
                    <div style="font-size: 18px; font-weight: 800; color: #991b1b;">Zasoby Chronione Licencją</div>
                    <p style="color: #b91c1c; font-size: 14px; margin-bottom:20px;">Ta infografika i dokumentacja PDF są własnością serwisu Projekt-Ogrzewania.pl. Pobieranie i wyświetlanie na obcych domenach jest zabronione.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="display:inline-block; background:#dc2626; color:#fff; padding:10px 20px; border-radius:8px; text-decoration:none; font-weight:bold;">Powrót do oryginału</a>
                </div>
            `;
        }
    }
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/">Ile wody potrzeba do wypełnienia instalacji podłogówki &#8211; Kalkulator.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
