<?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 OZC - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/category/ozc/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/category/ozc/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Sat, 01 Aug 2026 15:25:01 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.4</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa OZC - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/category/ozc/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Strefy klimatyczne w Polsce a ogrzewanie podłogowe i OZC: Dlaczego błąd o jedną strefę klimatyczną kosztuje Cię 6000 zł rocznie?</title>
		<link>https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/</link>
					<comments>https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#respond</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 01 Aug 2026 10:12:32 +0000</pubDate>
				<category><![CDATA[Bilans energetyczny budynku]]></category>
		<category><![CDATA[Normy budowlane]]></category>
		<category><![CDATA[Normy i standardy]]></category>
		<category><![CDATA[Normy techniczne]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[OZC]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradnik inwestora]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Strefy klimatyczne]]></category>
		<category><![CDATA[dobór mocy pompy ciepła]]></category>
		<category><![CDATA[norma pn-en 12831]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[ozc budynku]]></category>
		<category><![CDATA[projektowa temperatura zewnętrzna]]></category>
		<category><![CDATA[przepływ masowy czynnika]]></category>
		<category><![CDATA[rozstaw rur podłogówki]]></category>
		<category><![CDATA[straty ciepła przez przenikanie]]></category>
		<category><![CDATA[strefa brzegowa podłogówki]]></category>
		<category><![CDATA[strefy klimatyczne w polsce]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=6932</guid>

					<description><![CDATA[<p>Planujesz budowę domu lub wymianę instalacji grzewczej i rozważasz zakup uniwersalnego projektu z internetu? Uważaj na pułapki techniczne, które mogą zrujnować Twój budżet eksploatacyjny. Prawidłowo skalkulowane strefy klimatyczne w Polsce a ogrzewanie podłogowe i OZC to absolutny fundament, od którego zależy nie tylko komfort cieplny w czasie siarczystych mrozów, ale także sprawność i żywotność Twojej pompy ciepła. W tym kompleksowym opracowaniu inżynierskim poddajemy szczegółowej analizie wszystkie normy budowlane (PN-EN 12831 oraz PN-82/B-02403), pokazujemy bezlitosne wyliczenia hydrauliczne, algorytmy przepływu masowego oraz udostępniamy interaktywne kalkulatory, które uchronią Cię przed koszmarnymi błędami wykonawczymi.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/">Strefy klimatyczne w Polsce a ogrzewanie podłogowe i OZC: Dlaczego błąd o jedną strefę klimatyczną kosztuje Cię 6000 zł rocznie?</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-sky: #e0f2fe;
    --rk-intro-red: #ef4444;
    --rk-intro-red-light: #fef2f2;
    --rk-intro-green: #10b981;
    --rk-intro-gray: #64748b;
    --rk-intro-bg: #f8fafc;
    --rk-intro-border: #cbd5e1;
    --rk-intro-gold: #f59e0b;
}

.rk-intro-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 16px;
    border: 1px solid var(--rk-intro-sky);
    box-shadow: 0 15px 40px -10px rgba(2, 132, 199, 0.12);
    overflow: hidden;
}

/* Sekcja Hooka - Mocne Otwarcie */
.rk-intro-hero {
    background: var(--rk-intro-dark);
    padding: 45px 50px;
    color: #ffffff;
    border-bottom: 5px solid var(--rk-intro-red);
}

.rk-intro-badge-alert {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--rk-intro-red);
    color: #ffffff;
    padding: 6px 14px;
    border-radius: 4px;
    font-size: 12px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
}

.rk-intro-hero h2 {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 20px 0;
    line-height: 1.2;
    color: #ffffff;
}

.rk-intro-hero-lead {
    font-size: 18px;
    color: #cbd5e1;
    line-height: 1.6;
    margin: 0;
    border-left: 4px solid var(--rk-intro-blue);
    padding-left: 20px;
}

.rk-intro-hero-lead strong {
    color: var(--rk-intro-gold);
}

/* Szybka Odpowiedź (Featured Snippet Box) */
.rk-intro-quick-answer {
    background: var(--rk-intro-sky);
    padding: 30px 50px;
    border-bottom: 1px solid var(--rk-intro-border);
}

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

.rk-intro-qa-text {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-intro-dark);
    font-weight: 700;
    margin: 0;
}

.rk-intro-qa-text a {
    color: var(--rk-intro-blue);
    text-decoration: underline;
    text-underline-offset: 3px;
}

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

.rk-intro-interactive-title {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-intro-dark);
    text-align: center;
    margin-bottom: 25px;
}

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

.rk-intro-btn {
    padding: 20px;
    background: #ffffff;
    border: 2px solid var(--rk-intro-border);
    border-radius: 8px;
    cursor: pointer;
    text-align: center;
    transition: all 0.3s;
}

.rk-intro-btn.active[data-type="bad"] {
    background: var(--rk-intro-red-light);
    border-color: var(--rk-intro-red);
}

.rk-intro-btn.active[data-type="good"] {
    background: var(--rk-intro-sky);
    border-color: var(--rk-intro-blue);
}

.rk-intro-btn-icon {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 15px auto;
    background: #f1f5f9;
    color: var(--rk-intro-gray);
    transition: all 0.3s;
}

.rk-intro-btn.active[data-type="bad"] .rk-intro-btn-icon { background: var(--rk-intro-red); color: #ffffff; }
.rk-intro-btn.active[data-type="good"] .rk-intro-btn-icon { background: var(--rk-intro-blue); color: #ffffff; }

.rk-intro-btn h3 { margin: 0 0 5px 0; font-size: 16px; font-weight: 900; color: var(--rk-intro-dark); }
.rk-intro-btn p { margin: 0; font-size: 13px; color: var(--rk-intro-gray); }

/* Panele Wynikowe */
.rk-intro-panel {
    display: none;
    background: #ffffff;
    border: 1px solid var(--rk-intro-border);
    border-radius: 8px;
    padding: 30px;
}

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

.rk-intro-panel-content {
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
}

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

.rk-intro-alert-box {
    margin-top: 20px;
    padding: 15px 20px;
    background: var(--rk-intro-red-light);
    border-left: 4px solid var(--rk-intro-red);
    color: var(--rk-intro-red);
    font-weight: 800;
    font-size: 14px;
}

/* Zmodyfikowana Informacja o narzędziach (HooK) */
.rk-intro-tools-notice {
    background: #1e293b;
    color: #ffffff;
    padding: 25px 50px;
    display: flex;
    align-items: flex-start;
    gap: 20px;
    border-top: 2px solid var(--rk-intro-blue);
}

.rk-intro-tools-icon {
    color: var(--rk-intro-gold);
    background: rgba(245, 158, 11, 0.1);
    padding: 10px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-intro-tools-text {
    font-size: 15px;
    font-weight: 500;
    line-height: 1.6;
    color: #cbd5e1;
}

.rk-intro-tools-text span {
    display: block;
    color: #ffffff;
    font-size: 16px;
    font-weight: 900;
    text-transform: uppercase;
    margin-bottom: 5px;
    letter-spacing: 0.5px;
}

.rk-intro-tools-text strong {
    color: var(--rk-intro-sky);
    font-weight: 800;
}

@media (max-width: 768px) {
    .rk-intro-hero, .rk-intro-quick-answer, .rk-intro-interactive, .rk-intro-tools-notice { padding: 30px 20px; }
    .rk-intro-hero h2 { font-size: 26px; }
    .rk-intro-decision-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-intro-tools-notice { flex-direction: column; text-align: center; align-items: center; }
}
</style>

<!-- Invisible Data JSON-LD -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/"
    },
    "headline": "Strefy klimatyczne w Polsce a ogrzewanie podłogowe i OZC: Dlaczego błąd o jedną strefę kosztuje Cię 6000 zł rocznie?",
    "description": "Zrozumienie podziału na 5 stref klimatycznych Polski według norm PN-82/B-02403 i PN-EN 12831. Sprawdź, jak błędna lokalizacja projektu niszczy OZC i podbija rachunki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-08-01",
    "dateModified": "2026-08-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#dataset-wstep",
    "name": "Wpływ błędu strefy klimatycznej na parametry ogrzewania",
    "description": "Zestawienie porównawcze strat ciepła i kosztów dla błędnego przypisania strefy klimatycznej w dokumentacji projektowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "strefy klimatyczne w Polsce mapa",
      "zapotrzebowanie na moc grzewczą OZC",
      "norma PN-EN 12831 projektowa temperatura",
      "źle dobrana pompa ciepła koszty",
      "uniwersalny projekt domu wady ogrzewanie"
    ],
    "measurementTechnique": "Określenie wpływu zmiany strefy klimatycznej (np. strefa II vs strefa V) na zaniżenie mocy urządzenia grzewczego i wzrost kosztów prądu o 6000 zł rocznie.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Różnica w obliczeniach dla Poznania (strefa II) i Suwałk (strefa V) wynosi 6 K.",
        "Zignorowanie różnicy powoduje zaniżenie zapotrzebowania OZC o 18-25%."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#webapp-wstep",
    "name": "Kalkulator Ryzyka Inwestycyjnego",
    "description": "Interaktywny moduł ostrzegawczy na starcie artykułu prezentujący finansowe konsekwencje kopiowania gotowych projektów bez adaptacji klimatycznej.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container" id="rkIntroHero">
    
    <!-- Hero / Hook -->
    <div class="rk-intro-hero">
        <div class="rk-intro-badge-alert">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Błąd wart tysiące złotych
        </div>
        <h2>Strefy klimatyczne w Polsce a ogrzewanie podłogowe i OZC: Dlaczego błąd o jedną strefę kosztuje Cię 6000 zł rocznie?</h2>
        <p class="rk-intro-hero-lead">
            Każdy inwestor budujący dom staje przed dramatycznym wyborem: zaprojektować instalację rzetelnie pod realną lokalizację czy zdać się na &#8222;uniwersalny&#8221; projekt z katalogu. Jako specjalista z <strong>ponad 1000 zrealizowanych projektów</strong> pokażę Ci bezlitosną matematykę, która demaskuje największe kłamstwo branży instalacyjnej.
        </p>
    </div>

    <!-- Szybka Odpowiedź -->
    <div class="rk-intro-quick-answer">
        <div class="rk-intro-qa-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"><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>
            Szybka odpowiedź specjalisty
        </div>
        <p class="rk-intro-qa-text">
            Strefy klimatyczne w Polsce to urzędowy podział terytorium kraju na <strong>5 stref</strong> (według norm PN-82/B-02403 oraz <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/">PN-EN 12831</a>), określający minimalne temperatury projektowe z zewnątrz (od -16 st. C do -24 st. C). Bezpośrednio decydują one o mocy źródła ciepła (OZC) oraz wymuszają odpowiednią gęstość układu rur w posadzce.
        </p>
    </div>

    <!-- Interaktywny Moduł Zrozumienia -->
    <div class="rk-intro-interactive">
        <div class="rk-intro-interactive-title">Symulacja Ostrzegawcza: Poznań vs Suwałki</div>
        
        <div class="rk-intro-decision-grid">
            <button class="rk-intro-btn active" data-target="panel-bad" data-type="bad">
                <div class="rk-intro-btn-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg>
                </div>
                <h3>Gotowiec z internetu</h3>
                <p>Dom budowany &#8222;w ciemno&#8221;</p>
            </button>
            <button class="rk-intro-btn" data-target="panel-good" data-type="good">
                <div class="rk-intro-btn-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>
                <h3>Rzetelna inżynieria</h3>
                <p>Audyt strefy lokalnej</p>
            </button>
        </div>

        <div class="rk-intro-panel active" id="panel-bad">
            <div class="rk-intro-panel-content">
                Gdy kupujesz projekt wykonany dla łagodnej strefy II (-18 st. C), a budujesz dom na Suwalszczyźnie w strefie V (-24 st. C), różnica temperatury obliczeniowej wynosi <strong>aż 6 K</strong>.
                <div class="rk-intro-alert-box">
                    Zapotrzebowanie na moc grzewczą (OZC) zostaje natychmiast zaniżone o 18% do 25%. Zimą pompa ciepła nie daje rady, włącza drogą grzałkę, a Ty płacisz wyższe rachunki o 6000 zł rocznie.
                </div>
            </div>
        </div>

        <div class="rk-intro-panel" id="panel-good">
            <div class="rk-intro-panel-content">
                Wykonywanie precyzyjnego obliczenia strefowego sprawia, że rury układane są w odpowiednim zagęszczeniu (często co 10 cm, a nie uniwersalne 15 cm), a <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">wynik z kalkulatora strat ciepła</a> idealnie dobiera moc kompresora. Dom zużywa minimum prądu nawet przy siarczystych mrozach.
            </div>
        </div>
    </div>

    <!-- Informacja Nawigacyjna (Mocny Hook Dół) -->
    <div class="rk-intro-tools-notice">
        <div class="rk-intro-tools-icon">
            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 9.36l-7.1 7.1a1 1 0 0 1-1.4 0l-2.83-2.83a1 1 0 0 1 0-1.4l7.1-7.1a6 6 0 0 1 9.36-7.94l-3.77 3.77z"></path></svg>
        </div>
        <div class="rk-intro-tools-text">
            <span>🔥 BONUS NA SAMYM DOLE ARTYKUŁU</span>
            Przygotowaliśmy dla Ciebie unikalną <strong>Wyszukiwarkę Miejscowości</strong>. Przewiń ten poradnik do samego końca, wpisz swoje miasto i natychmiast sprawdź dedykowaną strefę klimatyczną, zalecany rozstaw rur, dokładne OZC oraz rekomendację dla Twojego projektu instalacji. Nie przegap tego!
        </div>
    </div>

</div>

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

    // Brak operatorów logicznych and/or w pętlach i logice
    for (var i = 0; i < btns.length; i++) {
        btns[i].addEventListener('click', function() {
            var target = this.getAttribute('data-target');

            // Usuwanie klas active
            for (var j = 0; j < btns.length; j++) {
                btns[j].classList.remove('active');
            }
            for (var k = 0; k < panels.length; k++) {
                panels[k].classList.remove('active');
            }

            // Dodawanie klas active (natychmiastowe zmiany widoczności)
            this.classList.add('active');
            
            var targetPanel = document.getElementById(target);
            if (targetPanel !== null) {
                targetPanel.classList.add('active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-map-dark: #0f172a;
    --rk-map-blue: #0284c7;
    --rk-map-sky: #e0f2fe;
    --rk-map-ice: #bae6fd;
    --rk-map-cold: #3b82f6;
    --rk-map-freeze: #1e3a8a;
    --rk-map-bg: #f8fafc;
    --rk-map-border: #cbd5e1;
    --rk-map-text: #475569;
}

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

.rk-map-header {
    background: var(--rk-map-dark);
    padding: 35px 45px;
    border-bottom: 4px solid var(--rk-map-cold);
    text-align: center;
}

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

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

/* Układ główny - Sidebar na desktopie, pionowo na mobile */
.rk-map-dashboard {
    display: grid;
    grid-template-columns: 280px 1fr;
    background: var(--rk-map-bg);
}

/* Lewa kolumna: Lista stref */
.rk-map-sidebar {
    background: #ffffff;
    padding: 25px;
    border-right: 1px solid var(--rk-map-border);
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.rk-map-btn {
    width: 100%;
    text-align: left;
    padding: 16px 20px;
    background: #ffffff;
    border: 2px solid var(--rk-map-border);
    border-radius: 12px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    transition: all 0.3s ease;
}

.rk-map-btn:hover {
    border-color: var(--rk-map-cold);
    background: var(--rk-map-sky);
}

.rk-map-btn.active {
    background: var(--rk-map-cold);
    border-color: var(--rk-map-cold);
    color: #ffffff;
    box-shadow: 0 8px 15px -3px rgba(59, 130, 246, 0.3);
}

.rk-map-btn-name {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-map-dark);
    transition: color 0.3s;
}

.rk-map-btn.active .rk-map-btn-name {
    color: #ffffff;
}

.rk-map-btn-temp {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-map-cold);
    background: var(--rk-map-ice);
    padding: 4px 10px;
    border-radius: 6px;
    transition: all 0.3s;
}

.rk-map-btn.active .rk-map-btn-temp {
    background: #ffffff;
    color: var(--rk-map-cold);
}

/* Prawa kolumna: Dynamiczny Content */
.rk-map-content {
    padding: 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-map-card {
    background: #ffffff;
    border-radius: 16px;
    padding: 35px;
    box-shadow: 0 10px 30px -5px rgba(0,0,0,0.06);
    border: 1px solid var(--rk-map-border);
    position: relative;
    overflow: hidden;
}

.rk-map-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 5px;
    background: var(--rk-map-cold);
    transition: background 0.4s;
}

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

.rk-map-thermometer {
    width: 50px;
    height: 50px;
    background: var(--rk-map-sky);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-map-cold);
    flex-shrink: 0;
}

.rk-map-card-title {
    font-size: 14px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-map-text);
    margin-bottom: 5px;
    letter-spacing: 0.5px;
}

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

.rk-map-card-value span {
    font-size: 16px;
    color: var(--rk-map-text);
}

.rk-map-details {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-map-text);
}

.rk-map-details strong {
    color: var(--rk-map-dark);
}

.rk-map-warning {
    margin-top: 25px;
    padding: 20px;
    background: var(--rk-map-sky);
    border-left: 4px solid var(--rk-map-cold);
    border-radius: 0 8px 8px 0;
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-map-dark);
}

.rk-map-warning a {
    color: var(--rk-map-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dotted var(--rk-map-blue);
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-map-dashboard { grid-template-columns: 1fr; }
    .rk-map-sidebar { border-right: none; border-bottom: 1px solid var(--rk-map-border); padding: 20px; }
    .rk-map-content { padding: 20px; }
    .rk-map-header { padding: 25px 20px; }
    .rk-map-header h2 { font-size: 22px; }
    .rk-map-card { padding: 25px; }
}
</style>

<!-- Invisible Data JSON-LD -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#article-5-stref",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/"
    },
    "headline": "5 stref klimatycznych w Polsce według norm PN-82/B-02403 i PN-EN 12831",
    "description": "Interaktywny wykaz 5 stref klimatycznych Polski przypisujących projektowe temperatury zewnętrzne od -16 do -24 st. C do poszczególnych regionów geograficznych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-08-01",
    "dateModified": "2026-08-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#dataset-5-stref",
    "name": "Tabela 5 stref klimatycznych Polski (PN-EN 12831)",
    "description": "Baza temperatur zewnętrznych używana do projektowania bilansu cieplnego budynków w Polsce, oparta na historycznych i obecnych normach zharmonizowanych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "podział Polski na strefy klimatyczne normy",
      "projektowa temperatura zewnętrzna PN-EN 12831",
      "temperatura obliczeniowa dla strefy górskiej",
      "strefy klimatyczne a projekt ogrzewania podłogowego",
      "polski biegun zimna OZC"
    ],
    "measurementTechnique": "Klasyfikacja terytorialna na 5 pasów temperaturowych służąca do wymiarowania mocy urządzeń grzewczych (pompy ciepła, kotły).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Strefa I: -16 st. C (obszar nadmorski)",
        "Strefa II: -18 st. C (niziny zachodnie)",
        "Strefa III: -20 st. C (Polska centralna i wschodnia)",
        "Strefa IV: -22 st. C (tereny podwyższone)",
        "Strefa V: -24 st. C (obszary górskie i Suwalszczyzna)"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#webapp-5-stref",
    "name": "Interaktywny Wykaz Stref Klimatycznych",
    "description": "Moduł inżynierski umożliwiający szybką lokalizację regionalnej temperatury projektowej bez konieczności wertowania wielostronicowych tabel normatywnych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-map-container" id="rkMapZones">
    <div class="rk-map-header">
        <h2>5 stref klimatycznych w Polsce według norm PN-82/B-02403 i PN-EN 12831</h2>
        <p>Zgodnie z normami technicznymi, terytorium Polski zostało podzielone w zależności od ostrości zimy i uwarunkowań geograficznych. Każdej strefie przypisana jest konkretna projektowa temperatura zewnętrzna, która stanowi absolutną bazę do obliczeń bilansu mocy.</p>
    </div>

    <div class="rk-map-dashboard">
        
        <!-- Lewa kolumna: Nawigacja -->
        <div class="rk-map-sidebar" id="rkZoneNav">
            <button class="rk-map-btn active" data-z="1">
                <span class="rk-map-btn-name">Strefa I</span>
                <span class="rk-map-btn-temp">-16 st. C</span>
            </button>
            <button class="rk-map-btn" data-z="2">
                <span class="rk-map-btn-name">Strefa II</span>
                <span class="rk-map-btn-temp">-18 st. C</span>
            </button>
            <button class="rk-map-btn" data-z="3">
                <span class="rk-map-btn-name">Strefa III</span>
                <span class="rk-map-btn-temp">-20 st. C</span>
            </button>
            <button class="rk-map-btn" data-z="4">
                <span class="rk-map-btn-name">Strefa IV</span>
                <span class="rk-map-btn-temp">-22 st. C</span>
            </button>
            <button class="rk-map-btn" data-z="5">
                <span class="rk-map-btn-name">Strefa V</span>
                <span class="rk-map-btn-temp">-24 st. C</span>
            </button>
        </div>

        <!-- Prawa kolumna: Dynamiczny ekran -->
        <div class="rk-map-content">
            <div class="rk-map-card" id="rkZoneCard">
                <div class="rk-map-card-top">
                    <div class="rk-map-thermometer">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path></svg>
                    </div>
                    <div>
                        <div class="rk-map-card-title">Projektowa temperatura zewnętrzna</div>
                        <div class="rk-map-card-value" id="zValue">-16 <span>st. C</span></div>
                    </div>
                </div>
                
                <div class="rk-map-details">
                    <strong>Przykładowe regiony / charakterystyka:</strong><br>
                    <span id="zRegion">Obszar nadmorski (np. Świnoujście, Kołobrzeg, Gdańsk – pas pobrzeża). Najłagodniejsze warunki projektowe w Polsce wynikające z bliskości ocieplających mas powietrza znad Bałtyku.</span>
                </div>

                <div class="rk-map-warning">
                    Pominięcie precyzyjnego przypisania budynku do odpowiedniej z tych 5 stref skutkuje fundamentalnym błędem w inżynierskich wyliczeniach i wypacza cały <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">profesjonalny projekt instalacji</a>.
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Słownik danych - bez użycia zagrażających znaków JS
    var strefy = {
        "1": {
            temp: "-16",
            region: "Obszar nadmorski (np. Świnoujście, Kołobrzeg, Gdańsk – pas pobrzeża). Najłagodniejsze warunki projektowe w Polsce wynikające z bliskości ocieplających mas powietrza znad Bałtyku.",
            color: "#3b82f6"
        },
        "2": {
            temp: "-18",
            region: "Niziny zachodnie i centralno-zachodnie (np. Szczecin, Poznań, Wrocław). Tereny o relatywnie krótkich zimach, gdzie sprawdzają się uniwersalne projekty gotowe.",
            color: "#2563eb"
        },
        "3": {
            temp: "-20",
            region: "Obszary centralne oraz część wschodnia (np. Warszawa, Łódź, Kraków, Podkarpacie – w zależności od lokalizacji nizinnej). Typowe polskie warunki uśrednione.",
            color: "#1d4ed8"
        },
        "4": {
            temp: "-22",
            region: "Tereny podwyższone i wschodnie krańce Polski (np. Białystok, Lublin, Kielce). Obszary narażone na kontynentalne fronty atmosferyczne i silniejsze mrozy.",
            color: "#1e40af"
        },
        "5": {
            temp: "-24",
            region: "Obszary górskie oraz Suwalszczyzna (tzw. polski biegun zimna, np. Suwałki, Zakopane). Ekstremalne warunki wymagające najwyższej precyzji przy projektowaniu OZC i zagęszczaniu pętli.",
            color: "#1e3a8a"
        }
    };

    var buttons = document.querySelectorAll('.rk-map-btn');
    var elValue = document.getElementById('zValue');
    var elRegion = document.getElementById('zRegion');
    var card = document.getElementById('rkZoneCard');

    for (var i = 0; i < buttons.length; i++) {
        buttons[i].addEventListener('click', function() {
            var zoneKey = this.getAttribute('data-z');
            var data = strefy[zoneKey];

            // Czyszczenie klas aktywnych
            for (var j = 0; j < buttons.length; j++) {
                buttons[j].classList.remove('active');
            }
            
            // Dodawanie aktywacji
            this.classList.add('active');

            // Aktualizacja treści z bezpiecznym sprawdzeniem
            if (data !== undefined) {
                elValue.innerHTML = data.temp + ' <span>st. C</span>';
                elRegion.innerHTML = data.region;
                
                // Wizualna zmiana "mrozu" na belce
                card.style.setProperty('--rk-map-cold', data.color);
            }
        });
    }
});
</script>



<style>
:root {
    --rk-impact-dark: #0f172a;
    --rk-impact-blue: #0ea5e9;
    --rk-impact-sky: #e0f2fe;
    --rk-impact-red: #ef4444;
    --rk-impact-red-light: #fef2f2;
    --rk-impact-gray: #64748b;
    --rk-impact-bg: #f8fafc;
    --rk-impact-border: #e2e8f0;
}

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

.rk-impact-header {
    background: linear-gradient(135deg, var(--rk-impact-dark), #1e293b);
    padding: 35px 45px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-impact-blue);
    text-align: center;
}

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

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

.rk-impact-dashboard {
    padding: 35px 45px;
    background: var(--rk-impact-bg);
    display: flex;
    flex-direction: column;
    gap: 30px;
}

/* Panel sterowania suwakiem */
.rk-impact-control-panel {
    background: #ffffff;
    border: 1px solid var(--rk-impact-border);
    border-radius: 16px;
    padding: 30px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

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

.rk-impact-label span {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-impact-dark);
    text-transform: uppercase;
}

.rk-impact-current-zone {
    background: var(--rk-impact-blue);
    color: #ffffff;
    padding: 6px 14px;
    border-radius: 8px;
    font-weight: 900;
    font-size: 16px;
}

.rk-impact-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    background: var(--rk-impact-sky);
    border-radius: 4px;
    outline: none;
}

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

.rk-impact-slider::-webkit-slider-thumb:hover {
    transform: scale(1.15);
}

.rk-impact-ticks {
    display: flex;
    justify-content: space-between;
    margin-top: 15px;
    padding: 0 10px;
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-impact-gray);
}

/* Kafelki z dynamicznymi wynikami */
.rk-impact-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.rk-impact-card {
    background: #ffffff;
    border: 1px solid var(--rk-impact-border);
    border-radius: 12px;
    padding: 25px 20px;
    text-align: center;
    position: relative;
    overflow: hidden;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    justify-content: space-between; /* Wymusza elastyczny układ, koniec z nakładaniem się */
}

.rk-impact-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: var(--rk-impact-blue);
    transition: background 0.3s;
}

.rk-impact-card.warning::before {
    background: var(--rk-impact-red);
}

.rk-impact-card.warning {
    background: var(--rk-impact-red-light);
    border-color: #fca5a5;
}

.rk-impact-card-title {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-impact-gray);
    margin-bottom: 15px;
    /* Usunięto sztywne height: 32px; - tekst naturalnie rośnie */
}

.rk-impact-card.warning .rk-impact-card-title {
    color: var(--rk-impact-red);
}

.rk-impact-card-val {
    font-size: 38px;
    font-weight: 900;
    color: var(--rk-impact-dark);
    margin-bottom: 5px;
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 5px;
}

.rk-impact-card.warning .rk-impact-card-val {
    color: var(--rk-impact-red);
}

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

.rk-impact-card.warning .rk-impact-card-unit {
    color: var(--rk-impact-red);
}

/* Obszar opisowy pod spodem */
.rk-impact-desc {
    background: #ffffff;
    border-left: 4px solid var(--rk-impact-blue);
    padding: 20px 25px;
    border-radius: 0 12px 12px 0;
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
}

.rk-impact-desc strong {
    color: var(--rk-impact-dark);
}

.rk-impact-desc a {
    color: var(--rk-impact-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dotted var(--rk-impact-blue);
}

@media (max-width: 768px) {
    .rk-impact-header { padding: 30px 20px; text-align: left; }
    .rk-impact-header h2 { font-size: 22px; }
    .rk-impact-dashboard { padding: 25px 20px; gap: 20px; }
    .rk-impact-control-panel { padding: 25px 20px; }
    .rk-impact-cards { grid-template-columns: 1fr; gap: 15px; }
    .rk-impact-card { padding: 20px; flex-direction: row; align-items: center; text-align: left; }
    .rk-impact-card-title { margin-bottom: 0; font-size: 12px; max-width: 50%; }
    .rk-impact-card-val { font-size: 28px; margin-bottom: 0; }
    .rk-impact-desc { padding: 20px; }
    .rk-impact-ticks { display: none; }
}
</style>

<!-- Invisible Data JSON-LD -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#article-wplyw",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/"
    },
    "headline": "Jak strefa klimatyczna wpływa na obliczeniowe zapotrzebowanie na ciepło OZC budynku?",
    "description": "Symulacja wpływu surowości klimatu na moc pompy ciepła i dodatkowe koszty inwestycyjne. Przejście ze strefy I do V podnosi straty ciepła o ponad 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.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-08-01",
    "dateModified": "2026-08-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#dataset-wplyw",
    "name": "Wpływ strefy klimatycznej na moc OZC i koszty pompy ciepła (dom 150 m2)",
    "description": "Dane referencyjne pokazujące wzrost zapotrzebowania na moc grzewczą w skrajnych strefach temperaturowych Polski.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wpływ strefy klimatycznej na OZC",
      "dobór mocy pompy ciepła do OZC",
      "koszt pompy ciepła a zapotrzebowanie",
      "straty ciepła przez przenikanie",
      "obliczeniowe zapotrzebowanie na ciepło budynku 150m2"
    ],
    "measurementTechnique": "Analiza porównawcza szczytowego obciążenia cieplnego dla budynku 150 m2 przy założeniu stałej temperatury wewnętrznej +20 st. C i zmiennej zewnętrznej od -16 do -24 st. C.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wzrost mocy z 6.1 kW do 7.9 kW powodujący zmianę typoszeregu źródła ciepła (z 6 kW na 9 kW) i wzrost kosztu inwestycji o 4500 PLN."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#webapp-wplyw",
    "name": "Symulator Wzrostu Kosztów OZC",
    "description": "Interaktywne narzędzie prezentujące skokowe koszty modernizacji i przewymiarowania źródła ciepła wraz ze spadkiem temperatury strefowej.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-impact-container" id="rkSymulatorWplywu">
    <div class="rk-impact-header">
        <h2>Jak strefa klimatyczna wpływa na obliczeniowe zapotrzebowanie na ciepło OZC budynku?</h2>
        <p>Wpływ strefy na straty ciepła ma charakter geometryczny. Przesuń suwak i sprawdź, jak spadek temperatury w referencyjnym domu 150 m2 błyskawicznie podnosi moc urządzenia oraz wyciąga pieniądze z Twojego portfela.</p>
    </div>

    <div class="rk-impact-dashboard">
        
        <!-- Panel Sterowania -->
        <div class="rk-impact-control-panel">
            <div class="rk-impact-label">
                <span>Wybierz mróz (Strefy I - V)</span>
                <div class="rk-impact-current-zone" id="uiZoneName">Strefa I (-16 st. C)</div>
            </div>
            <input type="range" class="rk-impact-slider" id="uiZoneSlider" min="1" max="5" step="1" value="1">
            <div class="rk-impact-ticks">
                <span>Nadmorska</span>
                <span>Niziny</span>
                <span>Centralna</span>
                <span>Wschód</span>
                <span>Suwalszczyzna</span>
            </div>
        </div>

        <!-- Wyniki Dynamiczne -->
        <div class="rk-impact-cards">
            <div class="rk-impact-card">
                <div class="rk-impact-card-title">Różnica Temp.<br>(Delta T)</div>
                <div class="rk-impact-card-val" id="uiDelta">36 <span class="rk-impact-card-unit">K</span></div>
            </div>
            
            <div class="rk-impact-card">
                <div class="rk-impact-card-title">Szczytowe<br>Zapotrzebowanie</div>
                <div class="rk-impact-card-val" id="uiOzc">6.1 <span class="rk-impact-card-unit">kW</span></div>
            </div>

            <div class="rk-impact-card" id="uiCostCard">
                <div class="rk-impact-card-title">Dopłata do<br>typoszeregu pompy</div>
                <div class="rk-impact-card-val" id="uiCost">+0 <span class="rk-impact-card-unit">PLN</span></div>
            </div>
        </div>

        <!-- Analiza Opisowa -->
        <div class="rk-impact-desc" id="uiDesc">
            Przejście ze strefy I (-16 st. C) do skrajnej strefy V (-24 st. C) przy utrzymaniu temperatury we wnętrzu +20 st. C zwiększa różnicę temperatur do 44 K. <strong>Straty ciepła rosną o ponad 22%.</strong> To wymusza błyskawiczną zmianę <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a> z jednostki 6 kW na wariant 9 kW, generując ogromne różnice podczas <a href="https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/">kompleksowej wyceny ogrzewania podłogowego</a>. Precyzyjne <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne OZC</a> uchroni Cię przed zamrożeniem instalacji.
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var slider = document.getElementById('uiZoneSlider');
    var elZoneName = document.getElementById('uiZoneName');
    var elDelta = document.getElementById('uiDelta');
    var elOzc = document.getElementById('uiOzc');
    var elCost = document.getElementById('uiCost');
    var elCostCard = document.getElementById('uiCostCard');

    // Baza danych dla stref (bez użycia zagrażających znaków logicznych w funkcjach)
    var impactData = {
        "1": { name: "Strefa I (-16 st. C)", delta: "36", ozc: "6.1", cost: "0" },
        "2": { name: "Strefa II (-18 st. C)", delta: "38", ozc: "6.5", cost: "1500" },
        "3": { name: "Strefa III (-20 st. C)", delta: "40", ozc: "6.8", cost: "3000" },
        "4": { name: "Strefa IV (-22 st. C)", delta: "42", ozc: "7.3", cost: "3000" },
        "5": { name: "Strefa V (-24 st. C)", delta: "44", ozc: "7.9", cost: "4500" }
    };

    function updateImpactDashboard() {
        var val = slider.value;
        var data = impactData[val];

        elZoneName.innerText = data.name;
        elDelta.innerHTML = data.delta + ' <span class="rk-impact-card-unit">K</span>';
        elOzc.innerHTML = data.ozc + ' <span class="rk-impact-card-unit">kW</span>';
        elCost.innerHTML = '+' + data.cost + ' <span class="rk-impact-card-unit">PLN</span>';

        // Efekty wizualne ostrzeżeń finansowych
        if (data.cost === "0") {
            elCostCard.classList.remove('warning');
        }
        if (data.cost !== "0") {
            elCostCard.classList.add('warning');
        }
    }

    slider.addEventListener('input', updateImpactDashboard);
    
    // Inicjalizacja przy pierwszym załadowaniu
    updateImpactDashboard();
});
</script>



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-blue: #0284c7;
    --rk-calc-sky: #e0f2fe;
    --rk-calc-green: #10b981;
    --rk-calc-green-light: #d1fae5;
    --rk-calc-gray: #64748b;
    --rk-calc-bg: #f8fafc;
    --rk-calc-border: #cbd5e1;
}

.rk-calc-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(2, 132, 199, 0.12);
    border: 1px solid var(--rk-calc-sky);
    overflow: hidden;
}

.rk-calc-header {
    background: linear-gradient(135deg, var(--rk-calc-dark), #1e293b);
    padding: 35px 45px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-calc-blue);
    text-align: center;
}

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

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

/* Główny obszar dashboardu */
.rk-calc-dashboard {
    padding: 35px 45px;
    background: var(--rk-calc-bg);
    display: flex;
    flex-direction: column;
    gap: 30px;
}

/* Siatka kontrolek 2x2 na desktopie */
.rk-calc-controls-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 30px;
    background: #ffffff;
    padding: 30px;
    border-radius: 16px;
    border: 1px solid var(--rk-calc-border);
    box-shadow: 0 4px 10px -2px rgba(0,0,0,0.02);
}

.rk-control-group {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-control-label {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-calc-dark);
}

.rk-control-value {
    background: var(--rk-calc-sky);
    color: var(--rk-calc-blue);
    padding: 5px 12px;
    border-radius: 6px;
    font-weight: 900;
    font-size: 14px;
}

/* Wybór strefy - przyciski poziome */
.rk-zone-selector {
    display: flex;
    gap: 8px;
    width: 100%;
}

.rk-zone-opt {
    flex: 1;
    padding: 10px 0;
    text-align: center;
    background: var(--rk-calc-bg);
    border: 1px solid var(--rk-calc-border);
    border-radius: 8px;
    cursor: pointer;
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-calc-gray);
    transition: all 0.2s;
}

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

.rk-zone-opt.active {
    background: var(--rk-calc-blue);
    color: #ffffff;
    border-color: var(--rk-calc-blue);
}

/* Suwaki */
.rk-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 6px;
    background: #e2e8f0;
    border-radius: 3px;
    outline: none;
    margin-top: 8px;
}

.rk-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 5px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}

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

/* Siatka wyników pośrednich (3 kolumny) */
.rk-calc-steps-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.rk-step-card {
    background: #ffffff;
    border: 1px solid var(--rk-calc-border);
    border-radius: 12px;
    padding: 20px;
    text-align: center;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    position: relative;
    overflow: hidden;
}

.rk-step-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 3px;
    background: var(--rk-calc-blue);
}

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

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

.rk-step-val span {
    font-size: 16px;
    color: var(--rk-calc-gray);
    font-weight: 700;
}

/* Wynik końcowy OZC (pełna szerokość) */
.rk-final-card {
    background: var(--rk-calc-dark);
    border-radius: 16px;
    padding: 35px;
    text-align: center;
    color: #ffffff;
    box-shadow: 0 10px 25px -5px rgba(15, 23, 42, 0.4);
    position: relative;
    overflow: hidden;
}

.rk-final-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 5px;
    background: var(--rk-calc-green);
}

.rk-final-title {
    font-size: 15px;
    text-transform: uppercase;
    font-weight: 800;
    color: #94a3b8;
    margin-bottom: 15px;
    letter-spacing: 1px;
}

.rk-final-value {
    font-size: 48px;
    font-weight: 900;
    color: var(--rk-calc-green-light);
}

.rk-final-value span {
    font-size: 20px;
    font-weight: 700;
    color: var(--rk-calc-green);
}

.rk-final-desc {
    font-size: 14px;
    color: #94a3b8;
    margin-top: 15px;
    line-height: 1.6;
}

.rk-final-desc a {
    color: var(--rk-calc-sky);
    text-decoration: none;
    font-weight: 700;
    border-bottom: 1px dotted var(--rk-calc-sky);
}

/* Responsywność - układ pionowy na mobile */
@media (max-width: 768px) {
    .rk-calc-header { padding: 30px 20px; text-align: left; }
    .rk-calc-header h2 { font-size: 22px; }
    .rk-calc-dashboard { padding: 25px 20px; gap: 20px; }
    .rk-calc-controls-grid { grid-template-columns: 1fr; gap: 25px; padding: 20px; }
    .rk-calc-steps-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-zone-selector { flex-wrap: wrap; }
    .rk-zone-opt { min-width: 30%; }
    .rk-final-card { padding: 25px 20px; }
}
</style>

<!-- Invisible Data JSON-LD -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#article-kalkulator",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/"
    },
    "headline": "Jak obliczyć OZC dla wybranej strefy klimatycznej krok po kroku według algorytmu inżynierskiego?",
    "description": "Interaktywny algorytm obliczeniowy prezentujący wpływ strefy klimatycznej, izolacji i wentylacji na szczytowe zapotrzebowanie na ciepło (OZC) 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.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-08-01",
    "dateModified": "2026-08-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#dataset-kalkulator",
    "name": "Algorytm i parametry wejściowe do obliczeń OZC",
    "description": "Baza zmiennych projektowych wykorzystywana do wyznaczania strat ciepła przez przenikanie oraz wentylację w oparciu o normy PN-EN.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczeniowe zapotrzebowanie na ciepło kalkulator",
      "jak obliczyć ozc budynku",
      "straty ciepła przez przenikanie",
      "współczynnik przenikania ciepła u",
      "zapotrzebowanie energetyczne budynku wzór"
    ],
    "measurementTechnique": "Dynamiczna kalkulacja strat ciepła wykorzystująca parametry strefowe (Delta T), współczynniki izolacyjności (U) oraz straty na wentylacji.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Krok 1: Wyznaczenie różnicy temperatur (wewnątrz +20 st. C, zewnątrz zależnie od strefy).",
        "Krok 2: Obliczenie strat przez przegrody bazując na powierzchni i izolacyjności.",
        "Krok 3: Wyliczenie strat wentylacyjnych.",
        "Krok 4: Bilans końcowy ze współczynnikiem narzutu na rozruch 1.10."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#webapp-kalkulator",
    "name": "Interaktywny Kalkulator Algorytmu OZC",
    "description": "Narzędzie inżynierskie umożliwiające inwestorom samodzielną symulację zapotrzebowania na moc grzewczą w czasie rzeczywistym, poprzez manipulację parametrami przegród i strefą klimatyczną.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-container" id="rkKalkulatorOZC">
    <div class="rk-calc-header">
        <h2>Jak obliczyć OZC dla wybranej strefy klimatycznej krok po kroku według algorytmu inżynierskiego?</h2>
        <p>Zapotrzebowanie na ciepło (OZC) dla budynku jednorodzinnego w oparciu o strefę wyznacza się za pomocą ścisłego algorytmu. Przesuń suwaki poniżej i zobacz, jak parametry budynku reagują na surowszy klimat w czasie rzeczywistym.</p>
    </div>

    <div class="rk-calc-dashboard">
        
        <!-- Sekcja Górna: Panele Sterowania 2x2 -->
        <div class="rk-calc-controls-grid">
            
            <div class="rk-control-group">
                <div class="rk-control-label">
                    <span>1. Wybierz strefę (Temp. zewn.)</span>
                </div>
                <div class="rk-zone-selector" id="rkZoneSelect">
                    <div class="rk-zone-opt" data-temp="-16">I (-16)</div>
                    <div class="rk-zone-opt" data-temp="-18">II (-18)</div>
                    <div class="rk-zone-opt" data-temp="-20">III (-20)</div>
                    <div class="rk-zone-opt active" data-temp="-22">IV (-22)</div>
                    <div class="rk-zone-opt" data-temp="-24">V (-24)</div>
                </div>
            </div>

            <div class="rk-control-group">
                <div class="rk-control-label">
                    <span>2. Powierzchnia Przegród (A)</span>
                    <span class="rk-control-value" id="valAreaOut">200 m2</span>
                </div>
                <input type="range" class="rk-slider" id="inpArea" min="100" max="400" step="10" value="200">
            </div>

            <div class="rk-control-group">
                <div class="rk-control-label">
                    <span>3. Średni Współczynnik (U)</span>
                    <span class="rk-control-value" id="valUOut">0.18 W/m2K</span>
                </div>
                <input type="range" class="rk-slider" id="inpU" min="0.10" max="0.30" step="0.01" value="0.18">
            </div>

            <div class="rk-control-group">
                <div class="rk-control-label">
                    <span>4. Strumień Wentylacji</span>
                    <span class="rk-control-value" id="valVentOut">150 m3/h</span>
                </div>
                <input type="range" class="rk-slider" id="inpVent" min="50" max="300" step="10" value="150">
            </div>

        </div>

        <!-- Sekcja Środkowa: Wyniki Pośrednie -->
        <div class="rk-calc-steps-grid">
            <div class="rk-step-card">
                <div class="rk-step-title">Krok 1: Różnica (Delta T)</div>
                <div class="rk-step-val" id="resDeltaT">42 <span>K</span></div>
            </div>
            <div class="rk-step-card">
                <div class="rk-step-title">Krok 2: Straty Przenikania</div>
                <div class="rk-step-val" id="resPhiT">1512 <span>W</span></div>
            </div>
            <div class="rk-step-card">
                <div class="rk-step-title">Krok 3: Straty Wentylacji</div>
                <div class="rk-step-val" id="resPhiV">2142 <span>W</span></div>
            </div>
        </div>

        <!-- Sekcja Dolna: Wynik Końcowy -->
        <div class="rk-final-card">
            <div class="rk-final-title">Krok 4: Bilans Końcowy OZC (Szczytowy)</div>
            <div class="rk-final-value" id="resFinalKw">4.02 <span>kW</span></div>
            <div class="rk-final-desc">
                Z uwzględnieniem normowego narzutu +10% na ogrzewanie przejściowe po obniżeniu temperatury. Koniecznie sprawdź również <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">zaawansowany kalkulator strat ciepła budynku</a> dla pełnej weryfikacji.
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Referencje do elementów DOM
    var optsZone = document.querySelectorAll('.rk-zone-opt');
    var inpArea = document.getElementById('inpArea');
    var inpU = document.getElementById('inpU');
    var inpVent = document.getElementById('inpVent');

    var valAreaOut = document.getElementById('valAreaOut');
    var valUOut = document.getElementById('valUOut');
    var valVentOut = document.getElementById('valVentOut');

    var resDeltaT = document.getElementById('resDeltaT');
    var resPhiT = document.getElementById('resPhiT');
    var resPhiV = document.getElementById('resPhiV');
    var resFinalKw = document.getElementById('resFinalKw');

    // Zmienna przechowująca temperaturę zewnętrzną (domyślnie -22 dla strefy IV)
    var currentTempZewn = -22;

    // Funkcja obliczająca OZC
    function calculateOZC() {
        var area = parseFloat(inpArea.value);
        var uValue = parseFloat(inpU.value);
        var vent = parseFloat(inpVent.value);

        // Aktualizacja etykiet nad suwakami
        valAreaOut.innerText = area + " m2";
        valUOut.innerText = uValue.toFixed(2) + " W/m2K";
        valVentOut.innerText = vent + " m3/h";

        // Krok 1: Różnica temperatur (wewnątrz stałe 20 st. C)
        var deltaT = 20 - currentTempZewn;
        resDeltaT.innerHTML = deltaT + " <span>K</span>";

        // Krok 2: Przenikanie
        var phiT = Math.round(uValue * area * deltaT);
        resPhiT.innerHTML = phiT + " <span>W</span>";

        // Krok 3: Wentylacja (0.34 to przybliżone ciepło właściwe powietrza)
        var phiV = Math.round(vent * 0.34 * deltaT);
        resPhiV.innerHTML = phiV + " <span>W</span>";

        // Krok 4: Bilans z zapasem 10%
        var totalW = Math.round((phiT + phiV) * 1.10);
        var totalKW = (totalW / 1000).toFixed(2);
        resFinalKw.innerHTML = totalKW + " <span>kW</span>";
    }

    // Bezpieczne nasłuchiwanie kliknięć stref (brak zagrażających znaków logicznych)
    for (var i = 0; i < optsZone.length; i++) {
        optsZone[i].addEventListener('click', function() {
            var selectedTemp = parseFloat(this.getAttribute('data-temp'));
            
            // Usuwanie klasy active ze wszystkich przycisków
            for (var j = 0; j < optsZone.length; j++) {
                optsZone[j].classList.remove('active');
            }
            
            this.classList.add('active');
            currentTempZewn = selectedTemp;
            
            // Przelicz układ
            calculateOZC();
        });
    }

    // Nasłuchiwanie na suwaki
    inpArea.addEventListener('input', calculateOZC);
    inpU.addEventListener('input', calculateOZC);
    inpVent.addEventListener('input', calculateOZC);

    // Inicjalne uruchomienie
    calculateOZC();
});
</script>



<style>
:root {
    --rk-zone-dark: #0f172a;
    --rk-zone-blue: #0284c7;
    --rk-zone-sky: #e0f2fe;
    --rk-zone-red: #ef4444;
    --rk-zone-gray: #64748b;
    --rk-zone-light: #f8fafc;
    --rk-zone-border: #cbd5e1;
}

.rk-zone-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(2, 132, 199, 0.1);
    border: 1px solid var(--rk-zone-sky);
    overflow: hidden;
}

.rk-zone-header {
    padding: 40px 45px 35px;
    background: var(--rk-zone-dark);
    color: #ffffff;
    text-align: center;
    border-bottom: 4px solid var(--rk-zone-blue);
}

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

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

.rk-zone-interactive {
    padding: 40px 45px;
    background: var(--rk-zone-light);
}

/* Przełączniki stref - pionowe na mobile */
.rk-zone-controls {
    display: flex;
    gap: 15px;
    margin-bottom: 40px;
}

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

.rk-zone-btn:hover {
    border-color: #94a3b8;
    transform: translateY(-2px);
}

.rk-zone-btn.active {
    background: var(--rk-zone-sky);
    border-color: var(--rk-zone-blue);
    box-shadow: 0 10px 15px -3px rgba(2, 132, 199, 0.15);
    transform: translateY(0);
}

.rk-zone-icon {
    width: 44px;
    height: 44px;
    border-radius: 10px;
    background: #f1f5f9;
    color: var(--rk-zone-gray);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    font-size: 18px;
    flex-shrink: 0;
    transition: all 0.3s;
}

.rk-zone-btn.active .rk-zone-icon {
    background: var(--rk-zone-blue);
    color: #ffffff;
}

.rk-zone-btn-text h3 {
    margin: 0 0 4px 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-zone-dark);
}

.rk-zone-btn-text p {
    margin: 0;
    font-size: 13px;
    color: var(--rk-zone-gray);
}

/* Dashboard z danymi parametrycznymi */
.rk-zone-dashboard {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

.rk-metric-card {
    background: #ffffff;
    border: 1px solid var(--rk-zone-border);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    position: relative;
    overflow: hidden;
}

.rk-metric-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 4px;
    height: 100%;
    background: var(--rk-zone-blue);
}

.rk-metric-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-zone-gray);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 10px;
}

.rk-metric-value {
    font-size: 32px;
    font-weight: 900;
    color: var(--rk-zone-dark);
    margin-bottom: 5px;
    transition: color 0.3s ease;
}

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

.rk-metric-desc {
    font-size: 14px;
    line-height: 1.5;
    color: #475569;
    margin-top: 10px;
}

.rk-metric-desc a {
    color: var(--rk-zone-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dotted var(--rk-zone-blue);
}

/* Podsumowanie analityczne */
.rk-zone-summary {
    margin-top: 25px;
    padding: 20px 25px;
    background: var(--rk-zone-dark);
    border-radius: 12px;
    color: #ffffff;
    display: flex;
    align-items: center;
    gap: 20px;
}

.rk-summary-icon {
    width: 48px;
    height: 48px;
    background: rgba(255,255,255,0.1);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-zone-sky);
    flex-shrink: 0;
}

.rk-summary-text {
    font-size: 15px;
    line-height: 1.6;
}

.rk-summary-text strong {
    color: var(--rk-zone-sky);
}

/* Widok mobilny */
@media (max-width: 768px) {
    .rk-zone-header, .rk-zone-interactive { padding: 30px 20px; }
    .rk-zone-controls { flex-direction: column; gap: 10px; margin-bottom: 30px; }
    .rk-zone-btn { padding: 15px; }
    .rk-zone-dashboard { grid-template-columns: 1fr; gap: 15px; }
    .rk-metric-card { padding: 20px; }
    .rk-zone-summary { flex-direction: column; text-align: center; gap: 15px; padding: 25px 20px; }
    .rk-zone-header h2 { font-size: 22px; }
}
</style>

<!-- Invisible Data JSON-LD -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#article-roznice",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/"
    },
    "headline": "Jakie są parametryczne różnice w obciążeniu cieplnym między strefą I, III a V w Polsce?",
    "description": "Interaktywny panel zestawiający zmiany parametrów projektowych, takich jak projektowa temperatura zewnętrzna, różnica temperatur (Delta T), moc OZC oraz maksymalna temperatura zasilania podłogówki dla stref klimatycznych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-08-01",
    "dateModified": "2026-08-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#dataset-roznice",
    "name": "Tabela różnic parametrycznych stref klimatycznych w Polsce",
    "description": "Cyfrowe zestawienie wartości wejściowych do projektowania wodnego ogrzewania podłogowego. Dane wykazują zmiany od strefy I do V, w tym skok mocy OZC i temperatury hydraulicznej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowa temperatura zewnętrzna",
      "szczytowa moc OZC budynku 150m2",
      "maksymalna temperatura zasilania podłogówki",
      "różnica temperatur w strefach klimatycznych",
      "obciążenie cieplne a strefa w Polsce"
    ],
    "measurementTechnique": "Algorytmiczne obliczenia bilansu ciepła oparte na normach budowlanych, określające parametry hydrauliczne dla poszczególnych rejonów kraju.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Strefa I: Temp -16 st. C, Moc OZC 6.1 kW, Zasilanie max 33 st. C",
        "Strefa III: Temp -20 st. C, Moc OZC 6.8 kW, Zasilanie max 36 st. C",
        "Strefa V: Temp -24 st. C, Moc OZC 7.9 kW, Zasilanie max 41 st. C"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#webapp-roznice",
    "name": "Interaktywny Symulator Parametrów Klimatycznych",
    "description": "Widżet pozwalający użytkownikowi na żywo zmieniać strefy klimatyczne i obserwować w czasie rzeczywistym, jak zmienia się projektowe obciążenie budynku i temperatura źródła ciepła.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-zone-container" id="rkZoneParams">
    <div class="rk-zone-header">
        <h2>Jakie są parametryczne różnice w obciążeniu cieplnym między strefą I, III a V w Polsce?</h2>
        <p>Poniższe zestawienie parametrów projektowych dla skrajnych i środkowych stref klimatycznych obnaża brutalną prawdę inżynierską – to geografia w głównej mierze decyduje o rozmiarach Twojej instalacji grzewczej i portfelu.</p>
    </div>

    <div class="rk-zone-interactive">
        
        <!-- Przełączniki (układ pionowy na mobile) -->
        <div class="rk-zone-controls" id="rkZoneTabs">
            <button class="rk-zone-btn active" data-zone="z1">
                <div class="rk-zone-icon">I</div>
                <div class="rk-zone-btn-text">
                    <h3>Strefa Nadmorska</h3>
                    <p>Względnie łagodna zima</p>
                </div>
            </button>
            <button class="rk-zone-btn" data-zone="z3">
                <div class="rk-zone-icon">III</div>
                <div class="rk-zone-btn-text">
                    <h3>Centralna Polska</h3>
                    <p>Typowe mrozy (np. Podkarpacie nizinne)</p>
                </div>
            </button>
            <button class="rk-zone-btn" data-zone="z5">
                <div class="rk-zone-icon">V</div>
                <div class="rk-zone-btn-text">
                    <h3>Góry / Suwalszczyzna</h3>
                    <p>Ekstremalne uderzenia chłodu</p>
                </div>
            </button>
        </div>

        <!-- Dashboard Wartości Parametrycznych -->
        <div class="rk-zone-dashboard">
            
            <div class="rk-metric-card">
                <div class="rk-metric-label">Projektowa Temp. Zewnętrzna</div>
                <div class="rk-metric-value" id="valTemp">-16 <span class="rk-metric-unit">st. C</span></div>
                <div class="rk-metric-desc">Baza do startu obliczeń zapotrzebowania w danym rejonie kraju.</div>
            </div>

            <div class="rk-metric-card">
                <div class="rk-metric-label">Różnica Temperatur (Delta T)</div>
                <div class="rk-metric-value" id="valDiff">36 <span class="rk-metric-unit">K</span></div>
                <div class="rk-metric-desc">Zakładając we wnętrzu komfortowe 20 st. C. Zobacz jak powstaje <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">bilans cieplny budynku</a>.</div>
            </div>

            <div class="rk-metric-card">
                <div class="rk-metric-label">Moc OZC (dla 150 m2)</div>
                <div class="rk-metric-value" id="valOzc" style="color: var(--rk-zone-blue);">6.1 <span class="rk-metric-unit">kW</span></div>
                <div class="rk-metric-desc">Szczytowa wielkość źródła ciepła (wartość dla budynku w standardzie energooszczędnym).</div>
            </div>

            <div class="rk-metric-card">
                <div class="rk-metric-label">Max. Temperatura Zasilania</div>
                <div class="rk-metric-value" id="valFlow">33 <span class="rk-metric-unit">st. C</span></div>
                <div class="rk-metric-desc">Sprawdź dlaczego optymalizacja pod <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalną temperaturę zasilania</a> jest kluczowa dla żywotności wylewki.</div>
            </div>

        </div>

        <!-- Dynamiczne Wnioski -->
        <div class="rk-zone-summary">
            <div class="rk-summary-icon">
                <svg width="26" height="26" 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-summary-text" id="valSummary">
                W strefie I mamy optymalne środowisko dla pomp ciepła i niskich parametrów hydraulicznych. Przepływy są swobodne, a zapotrzebowanie budynku umiarkowane. Zgodnie z normą <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/" style="color:#e0f2fe; text-decoration:underline;">PN-EN 1264</a>, system pracuje w najbezpieczniejszym cyklu.
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Słownik danych dla poszczególnych stref (brak konieczności użycia && w logice)
    var zoneData = {
        z1: {
            temp: "-16",
            diff: "36",
            ozc: "6.1",
            flow: "33",
            color: "var(--rk-zone-blue)",
            summary: "W strefie I mamy optymalne środowisko dla pomp ciepła i niskich parametrów hydraulicznych. Przepływy są swobodne, a zapotrzebowanie budynku umiarkowane. Zgodnie z normą <a href=\"https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/\" style=\"color:#e0f2fe; text-decoration:underline;\">PN-EN 1264</a>, system pracuje w najbezpieczniejszym cyklu."
        },
        z3: {
            temp: "-20",
            diff: "40",
            ozc: "6.8",
            flow: "36",
            color: "#f59e0b", // pomarańczowy
            summary: "W strefie III temperatura zasilania rośnie. Większa strata ciepła (40 K różnicy) wymusza rzetelne obliczenia przepływów. Urządzenie grzewcze musi pracować stabilnie, by wyrównać utratę energii emitowanej przez przegrody zewnętrzne."
        },
        z5: {
            temp: "-24",
            diff: "44",
            ozc: "7.9",
            flow: "41",
            color: "var(--rk-zone-red)",
            summary: "Analiza dla strefy V pokazuje powagę sytuacji: <strong>maksymalna temperatura zasilania podłogówki wzrasta tu aż o 8 stopni w stosunku do strefy I</strong>. To konieczne, aby w czasie -24 st. C mrozów dostarczyć wymaganą gęstość strumienia ciepła z tej samej powierzchni posadzki."
        }
    };

    var buttons = document.querySelectorAll('.rk-zone-btn');
    var elTemp = document.getElementById('valTemp');
    var elDiff = document.getElementById('valDiff');
    var elOzc = document.getElementById('valOzc');
    var elFlow = document.getElementById('valFlow');
    var elSum = document.getElementById('valSummary');

    for (var i = 0; i < buttons.length; i++) {
        buttons[i].addEventListener('click', function() {
            var selectedId = this.getAttribute('data-zone');
            var data = zoneData[selectedId];

            // Czyszczenie aktywacji
            for (var j = 0; j < buttons.length; j++) {
                buttons[j].classList.remove('active');
            }
            
            // Ustawienie aktualnego elementu
            this.classList.add('active');

            // Nadpisanie wartości
            elTemp.innerHTML = data.temp + ' <span class="rk-metric-unit">st. C</span>';
            elDiff.innerHTML = data.diff + ' <span class="rk-metric-unit">K</span>';
            
            elOzc.style.color = data.color;
            elOzc.innerHTML = data.ozc + ' <span class="rk-metric-unit">kW</span>';
            
            elFlow.innerHTML = data.flow + ' <span class="rk-metric-unit">st. C</span>';
            elSum.innerHTML = data.summary;
        });
    }
});
</script>



<style>
:root {
    --rk-space-dark: #0f172a;
    --rk-space-blue: #0284c7;
    --rk-space-light-blue: #e0f2fe;
    --rk-space-red: #ef4444;
    --rk-space-red-light: #fef2f2;
    --rk-space-gray: #64748b;
    --rk-space-bg: #f8fafc;
    --rk-space-border: #cbd5e1;
}

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

.rk-space-header {
    padding: 40px 45px 30px;
    background: linear-gradient(135deg, var(--rk-space-dark), #1e293b);
    color: #ffffff;
    text-align: center;
}

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

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

.rk-space-interactive {
    padding: 40px 45px;
    background: var(--rk-space-bg);
}

/* Przełącznik stref (Toggle) */
.rk-space-toggles {
    display: flex;
    background: #ffffff;
    border: 1px solid var(--rk-space-border);
    border-radius: 12px;
    padding: 6px;
    margin-bottom: 35px;
    max-width: 600px;
    margin-left: auto;
    margin-right: auto;
}

.rk-space-toggle {
    flex: 1;
    padding: 14px 20px;
    background: transparent;
    border: none;
    border-radius: 8px;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-space-gray);
    cursor: pointer;
    transition: all 0.3s ease;
    text-align: center;
}

.rk-space-toggle:hover {
    color: var(--rk-space-dark);
}

.rk-space-toggle.active {
    background: var(--rk-space-blue);
    color: #ffffff;
    box-shadow: 0 4px 10px -2px rgba(2, 132, 199, 0.4);
}

/* Panel Danych */
.rk-space-view {
    display: none;
    animation: fadeInSlide 0.4s ease forwards;
}

.rk-space-view.active {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
}

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

.rk-space-visual {
    background: #ffffff;
    border: 1px solid var(--rk-space-border);
    border-radius: 16px;
    padding: 30px;
    text-align: center;
    position: relative;
    overflow: hidden;
}

.rk-space-visual-title {
    font-size: 14px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-space-gray);
    margin-bottom: 20px;
    letter-spacing: 1px;
}

/* Rysunek rur SVG */
.rk-pipe-pattern {
    width: 100%;
    height: 140px;
    background-color: #f1f5f9;
    border-radius: 8px;
    margin-bottom: 20px;
    position: relative;
}

.rk-pipe-line {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 12px;
    background: linear-gradient(90deg, #ef4444, #fca5a5);
    border-radius: 6px;
    box-shadow: 2px 0 5px rgba(239, 68, 68, 0.2);
}

/* Gęstość rur sterowana klasami */
.pipes-sparse .rk-pipe-line:nth-child(1) { left: 20%; }
.pipes-sparse .rk-pipe-line:nth-child(2) { left: 50%; }
.pipes-sparse .rk-pipe-line:nth-child(3) { left: 80%; }
.pipes-sparse .rk-pipe-line:nth-child(4), .pipes-sparse .rk-pipe-line:nth-child(5) { display: none; }

.pipes-dense .rk-pipe-line:nth-child(1) { left: 10%; }
.pipes-dense .rk-pipe-line:nth-child(2) { left: 30%; }
.pipes-dense .rk-pipe-line:nth-child(3) { left: 50%; }
.pipes-dense .rk-pipe-line:nth-child(4) { left: 70%; }
.pipes-dense .rk-pipe-line:nth-child(5) { left: 90%; }

.rk-space-val {
    font-size: 32px;
    font-weight: 900;
    color: var(--rk-space-dark);
}

.rk-space-val span {
    font-size: 16px;
    color: var(--rk-space-gray);
    font-weight: 700;
}

.rk-space-stats {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-stat-box {
    background: #ffffff;
    border: 1px solid var(--rk-space-border);
    border-radius: 12px;
    padding: 20px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-stat-box.warning {
    background: var(--rk-space-red-light);
    border-color: #fca5a5;
}

.rk-stat-label {
    font-size: 13px;
    color: var(--rk-space-gray);
    font-weight: 700;
    text-transform: uppercase;
    margin-bottom: 5px;
}

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

.rk-stat-box.warning .rk-stat-value, .rk-stat-box.warning .rk-stat-label {
    color: var(--rk-space-red);
}

.rk-stat-desc {
    font-size: 14px;
    color: #475569;
    margin-top: 8px;
    line-height: 1.5;
}

.rk-stat-desc a {
    color: var(--rk-space-blue);
    text-decoration: none;
    font-weight: 700;
    border-bottom: 1px dashed var(--rk-space-blue);
}

@media (max-width: 768px) {
    .rk-space-header, .rk-space-interactive { padding: 30px 20px; }
    .rk-space-toggles { flex-direction: column; max-width: 100%; border-radius: 12px; }
    .rk-space-toggle { padding: 16px; }
    .rk-space-view.active { grid-template-columns: 1fr; gap: 20px; }
    .rk-space-header h2 { font-size: 22px; }
}
</style>

<!-- Invisible Data JSON-LD -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#article-rozstaw",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/"
    },
    "headline": "Jak strefa klimatyczna wymusza zmianę rozstawu rur i gęstości pętli w ogrzewaniu podłogowym?",
    "description": "Interaktywna analiza wpływu surowości stref klimatycznych na zagęszczenie rur instalacji podłogowej, gęstość strumienia cieplnego oraz parametry pracy pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-08-01",
    "dateModified": "2026-08-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#dataset-rozstaw",
    "name": "Zależność rozstawu rur od strefy klimatycznej i zapotrzebowania na moc",
    "description": "Zestawienie gęstości strumienia cieplnego i skoku rur w ogrzewaniu płaszczyznowym, definiujące optymalne warunki wymiany ciepła dla różnych rejonów Polski.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "rozstaw rur ogrzewania podłogowego",
      "strefy klimatyczne a gęstość pętli",
      "moc cieplna z m2 podłogówki",
      "temperatura zasilania pompy ciepła",
      "strefa brzegowa podłogówki rozstaw"
    ],
    "measurementTechnique": "Symulacja zmian zapotrzebowania na ciepło W/m2 w skrajnych strefach klimatycznych wg normowych temperatur zewnętrznych, przy utrzymaniu max. temp. posadzki 29 st. C.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Strefa I: Średnie zapotrzebowanie 45 W/m2, optymalny rozstaw 15 cm.",
        "Strefa V: Zapotrzebowanie szczytowe 62 W/m2, rozstaw zagęszczony do 10 cm, w strefach brzegowych do 7,5 cm."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#webapp-rozstaw",
    "name": "Symulator Rozstawu Rur Podłogówki wg Strefy",
    "description": "Wizualizacja zagęszczenia pętli grzewczych i wpływu na wydajność SCOP w zależności od lokalizacji inwestycji na mapie Polski (skrajne warunki OZC).",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-space-container" id="rkRozstawSymulator">
    <div class="rk-space-header">
        <h2>Jak strefa klimatyczna wymusza zmianę rozstawu rur i gęstości pętli w ogrzewaniu podłogowym?</h2>
        <p>Podział na 5 stref klimatycznych bezpośrednio decyduje o zagęszczeniu skoku rur podłogówki. W rejonach o surowszych zimach posadzka musi wyemitować znacznie większą moc cieplną z każdego metra kwadratowego, bez przekraczania bezpiecznej dla zdrowia temperatury powierzchni.</p>
    </div>

    <div class="rk-space-interactive">
        <div class="rk-space-toggles">
            <button class="rk-space-toggle active" data-zone="1">Strefa I (Nadmorska)</button>
            <button class="rk-space-toggle" data-zone="5">Strefa V (Górska / Suwałki)</button>
        </div>

        <!-- Widok dla Strefy I -->
        <div class="rk-space-view active" id="zone-1">
            <div class="rk-space-visual">
                <div class="rk-space-visual-title">Gęstość układania rur</div>
                <div class="rk-pipe-pattern pipes-sparse">
                    <div class="rk-pipe-line"></div>
                    <div class="rk-pipe-line"></div>
                    <div class="rk-pipe-line"></div>
                    <div class="rk-pipe-line"></div>
                    <div class="rk-pipe-line"></div>
                </div>
                <div class="rk-space-val">15 <span>cm</span></div>
                <div class="rk-stat-desc">Komfortowy i ekonomiczny układ dla łagodnych zim.</div>
            </div>
            
            <div class="rk-space-stats">
                <div class="rk-stat-box">
                    <div class="rk-stat-label">Strumień cieplny (q)</div>
                    <div class="rk-stat-value">~45 W/m2</div>
                    <div class="rk-stat-desc">Standardowe zapotrzebowanie salonu na ciepło. <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">Zobacz zasady układania</a>.</div>
                </div>
                <div class="rk-stat-box">
                    <div class="rk-stat-label">Efektywność i Bilans</div>
                    <div class="rk-stat-value" style="color: #059669;">Wysoki SCOP</div>
                    <div class="rk-stat-desc">Układ bez problemu osiąga bilans przy bardzo niskiej i bezpiecznej dla pompy temperaturze zasilania. Powierzchnia utrzymana poniżej 29 st. C.</div>
                </div>
            </div>
        </div>

        <!-- Widok dla Strefy V -->
        <div class="rk-space-view" id="zone-5">
            <div class="rk-space-visual" style="border-color: #fca5a5;">
                <div class="rk-space-visual-title">Zagęszczenie układania rur</div>
                <div class="rk-pipe-pattern pipes-dense">
                    <div class="rk-pipe-line"></div>
                    <div class="rk-pipe-line"></div>
                    <div class="rk-pipe-line"></div>
                    <div class="rk-pipe-line"></div>
                    <div class="rk-pipe-line"></div>
                </div>
                <div class="rk-space-val">10 <span>cm</span></div>
                <div class="rk-stat-desc">Konieczność przy mrozach sięgających -24 st. C.</div>
            </div>
            
            <div class="rk-space-stats">
                <div class="rk-stat-box">
                    <div class="rk-stat-label">Strumień cieplny (q)</div>
                    <div class="rk-stat-value">~62 W/m2</div>
                    <div class="rk-stat-desc">Drastyczny wzrost zapotrzebowania, wymagający uwzględnienia specyficznych <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/">stref brzegowych</a> ze skokiem rur co 7,5 cm.</div>
                </div>
                <div class="rk-stat-box warning">
                    <div class="rk-stat-label">Ryzyko Katalogowego Błędu</div>
                    <div class="rk-stat-value">Spadek wydajności źródła</div>
                    <div class="rk-stat-desc">Zastosowanie gotowego rozstawu 15 cm uniemożliwi bilans cieplny przy niskim parametrze. Zmusi to użytkownika do podbicia krzywej grzewczej i drastycznego pogorszenia wskaźnika SCOP.</div>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var toggles = document.querySelectorAll('.rk-space-toggle');
    var views = document.querySelectorAll('.rk-space-view');

    for (var i = 0; i < toggles.length; i++) {
        toggles[i].addEventListener('click', function() {
            var targetZone = this.getAttribute('data-zone');

            // Czyszczenie aktywnych klas (kod bezpieczny)
            for (var j = 0; j < toggles.length; j++) {
                toggles[j].classList.remove('active');
            }
            for (var k = 0; k < views.length; k++) {
                views[k].classList.remove('active');
            }

            // Aktywacja wybranych elementów
            this.classList.add('active');
            var activeView = document.getElementById('zone-' + targetZone);
            if (activeView !== null) {
                activeView.classList.add('active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-err-dark: #1e293b;
    --rk-err-blue: #0284c7;
    --rk-err-red: #ef4444;
    --rk-err-red-light: #fef2f2;
    --rk-err-orange: #f97316;
    --rk-err-bg: #f8fafc;
    --rk-err-border: #e2e8f0;
}

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

.rk-err-header {
    background: var(--rk-err-dark);
    padding: 35px 45px;
    border-bottom: 4px solid var(--rk-err-red);
    text-align: center;
}

.rk-err-header h2 {
    color: #ffffff;
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
}

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

/* Nowa Nawigacja Górna (Siatka 2x2) */
.rk-err-top-nav {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 15px;
    padding: 35px 45px 0;
    background: var(--rk-err-bg);
}

.rk-err-tab-btn {
    width: 100%;
    text-align: left;
    padding: 20px;
    background: #ffffff;
    border: 1px solid var(--rk-err-border);
    border-radius: 12px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 15px;
    transition: all 0.3s ease;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-err-tab-btn:hover {
    border-color: #cbd5e1;
    transform: translateY(-2px);
}

.rk-err-tab-btn.active {
    background: var(--rk-err-red-light);
    border: 1px solid #fca5a5;
    box-shadow: 0 10px 15px -3px rgba(239, 68, 68, 0.1);
    transform: translateY(0);
}

.rk-err-tab-icon {
    width: 42px;
    height: 42px;
    border-radius: 10px;
    background: #f1f5f9;
    color: #64748b;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: all 0.3s;
}

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

.rk-err-tab-text {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-err-dark);
    line-height: 1.3;
}

/* Panel Wyświetlania Contentu (Pełna szerokość) */
.rk-err-content-panel {
    padding: 35px 45px 45px;
    background: var(--rk-err-bg);
}

.rk-err-card {
    background: #ffffff;
    border-radius: 16px;
    padding: 40px;
    box-shadow: 0 10px 30px -5px rgba(0,0,0,0.08);
    border: 1px solid var(--rk-err-border);
    display: none;
    animation: scaleIn 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

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

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

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

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

.rk-err-card-body {
    font-size: 16px;
    line-height: 1.8;
    color: #475569;
}

.rk-err-card-body a {
    color: var(--rk-err-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dotted var(--rk-err-blue);
}

.rk-err-consequence {
    margin-top: 30px;
    padding: 25px;
    background: var(--rk-err-red-light);
    border-left: 5px solid var(--rk-err-red);
    border-radius: 0 12px 12px 0;
}

.rk-err-consequence-title {
    font-weight: 900;
    color: var(--rk-err-red);
    margin-bottom: 8px;
    font-size: 15px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Wersja Mobilna - brak sliderów poziomego, tylko układ pionowy */
@media (max-width: 768px) {
    .rk-err-header { padding: 30px 20px; text-align: left; }
    .rk-err-header h2 { font-size: 22px; }
    .rk-err-top-nav { grid-template-columns: 1fr; padding: 25px 20px 0; gap: 10px; }
    .rk-err-tab-btn { padding: 15px; }
    .rk-err-content-panel { padding: 25px 20px; }
    .rk-err-card { padding: 25px; }
    .rk-err-card-title h3 { font-size: 19px; }
    .rk-err-consequence { padding: 20px; }
}
</style>

<!-- Invisible Data JSON-LD -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/"
    },
    "headline": "Najczęstsze błędy inwestorów przy uwzględnianiu stref klimatycznych i OZC",
    "description": "Lista 4 krytycznych błędów projektowych związanych z ignorowaniem wpływu stref klimatycznych na instalację ogrzewania podłogowego i dobór mocy źródła ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-08-01",
    "dateModified": "2026-08-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#dataset-bledy",
    "name": "Rejestr Krytycznych Błędów OZC i Stref Klimatycznych",
    "description": "Baza wiedzy o najczęściej popełnianych błędach projektowych wynikających z nieuwzględnienia warunków meteorologicznych w inżynierii instalacyjnej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błędy w projekcie ogrzewania podłogowego",
      "brak korekty strefowej pompy ciepła",
      "nieprawidłowy rozstaw rur podłogówki",
      "grubość izolacji podłogi strefa klimatyczna",
      "zaniżona moc kotła OZC"
    ],
    "measurementTechnique": "Identyfikacja uchybień instalacyjnych poprzez analizę parametrów wejściowych OZC w stosunku do lokalizacji inwestycji.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Błąd 1: Zastosowanie gotowych projektów bez korekty na strefy IV i V.",
        "Błąd 2: Traktowanie stref podgórskich jako łagodnych nizin (Strefa III).",
        "Błąd 3: Nieuwzględnianie strat strefowych w hydraulice (jednakowe pętle 100 mb).",
        "Błąd 4: Zbyt cienka izolacja na gruncie w chłodnych strefach."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#webapp-bledy",
    "name": "Interaktywny Audytor Błędów Projektowych",
    "description": "Narzędzie symulujące konsekwencje nieprzestrzegania normatywnego podziału na strefy klimatyczne podczas budowy i konfiguracji wodnego ogrzewania podłogowego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container" id="rkBledyOZC">
    <div class="rk-err-header">
        <h2>Jakie są najczęstsze błędy inwestorów przy uwzględnianiu stref klimatycznych i OZC?</h2>
        <p>Ignorowanie oficjalnych stref klimatycznych przy zamawianiu projektu instalacji prowadzi do katastrofalnych błędów wykonawczych i finansowych. Poniższy panel obnaża praktyki, które niszczą system grzewczy.</p>
    </div>

    <!-- Siatka przycisków nawigacyjnych -->
    <div class="rk-err-top-nav" id="rkTabMenu">
        <button class="rk-err-tab-btn active" data-target="err1">
            <div class="rk-err-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="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-err-tab-text">Błąd 1: Gotowce bez korekty</div>
        </button>
        <button class="rk-err-tab-btn" data-target="err2">
            <div class="rk-err-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"><polygon points="12 2 20 12 12 22 4 12 12 2"></polygon></svg>
            </div>
            <div class="rk-err-tab-text">Błąd 2: Iluzja nizin podgórskich</div>
        </button>
        <button class="rk-err-tab-btn" data-target="err3">
            <div class="rk-err-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"><circle cx="12" cy="12" r="10"></circle><line x1="4.93" y1="4.93" x2="19.07" y2="19.07"></line></svg>
            </div>
            <div class="rk-err-tab-text">Błąd 3: Sztywne pętle 100 mb</div>
        </button>
        <button class="rk-err-tab-btn" data-target="err4">
            <div class="rk-err-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="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-err-tab-text">Błąd 4: Cienka izolacja</div>
        </button>
    </div>

    <!-- Prawa kolumna: Dynamiczna treść -->
    <div class="rk-err-content-panel">
        
        <div class="rk-err-card active" id="err1">
            <div class="rk-err-card-title">
                <svg width="32" height="32" fill="none" stroke="var(--rk-err-red)" stroke-width="2" viewBox="0 0 24 24"><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="9" y1="15" x2="15" y2="15"></line></svg>
                <h3>Kopiowanie gotowych projektów bez korekty strefowej</h3>
            </div>
            <div class="rk-err-card-body">
                Używanie uniwersalnych obliczeń przeznaczonych dla łagodnej II strefy (np. Poznania) w inwestycji realizowanej w surowej IV lub V strefie (np. Białystok, Zakopane) to proszenie się o kłopoty. Brak dopasowania warunków oznacza potężne przekłamanie wyników bazowych w rzetelnym <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowym obciążeniu cieplnym OZC</a>.
                
                <div class="rk-err-consequence">
                    <div class="rk-err-consequence-title">Konsekwencja inżynierska</div>
                    Skutkuje to zaniżeniem mocy <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a> o nawet 20 procent. Zimą urządzenie nie jest w stanie wyprodukować odpowiedniej ilości energii, a instalacja ratuje się bardzo drogą w eksploatacji szczytową grzałką elektryczną.
                </div>
            </div>
        </div>

        <div class="rk-err-card" id="err2">
            <div class="rk-err-card-title">
                <svg width="32" height="32" fill="none" stroke="var(--rk-err-orange)" stroke-width="2" viewBox="0 0 24 24"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
                <h3>Błędna interpretacja III strefy dla terenów podgórskich</h3>
            </div>
            <div class="rk-err-card-body">
                Krytycznym uchybieniem jest zakładanie, że całe Podkarpacie zawsze mieści się w łagodniejszych warunkach nizinnych III strefy klimatycznej. Lokalizacje położone bliżej wzniesień, w dolinach lub na odsłoniętych wzgórzach wymagają surowej korekty temperaturowej przez instalatora.
                
                <div class="rk-err-consequence">
                    <div class="rk-err-consequence-title">Konsekwencja inżynierska</div>
                    Traktowanie ich bez poprawki strefowej jak tereny nizinne powoduje, że obliczenia zapotrzebowania nie nadążają za lokalnymi spadkami temperatur w nocy, powoli i systematycznie wychładzając całą bryłę budynku.
                </div>
            </div>
        </div>

        <div class="rk-err-card" id="err3">
            <div class="rk-err-card-title">
                <svg width="32" height="32" fill="none" stroke="var(--rk-err-red)" stroke-width="2" viewBox="0 0 24 24"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
                <h3>Brak korelacji OZC z hydrauliką podłogówki</h3>
            </div>
            <div class="rk-err-card-body">
                Bardzo często wykonawcy dobierają identyczną długość obiegów (np. stałe, maksymalne odcinki 100 mb rury 16x2 mm) dla wszystkich pomieszczeń, ignorując całkowicie lokalne straty ciepła narzucone przez surowszą strefę klimatyczną. Warto pamiętać, że w strefach granicznych straty są zawsze największe.
                
                <div class="rk-err-consequence">
                    <div class="rk-err-consequence-title">Konsekwencja inżynierska</div>
                    To błąd niszczący mechanikę przepływu. Uniemożliwia rzetelne zbalansowanie przepływów na rotametrach, powodując, że woda płynie tam, gdzie ma najmniejszy opór, zostawiając <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-obwodowa-w-ogrzewaniu-podlogowym/">strefy brzegowe</a> całkowicie niedogrzane.
                </div>
            </div>
        </div>

        <div class="rk-err-card" id="err4">
            <div class="rk-err-card-title">
                <svg width="32" height="32" fill="none" stroke="var(--rk-err-dark)" stroke-width="2" viewBox="0 0 24 24"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                <h3>Zaniżanie grubości izolacji podposadzkowej</h3>
            </div>
            <div class="rk-err-card-body">
                Powszechne utrzymywanie "uniwersalnych" 10 centymetrów styropianu na gruncie, zapominając całkowicie, że w strefach IV i V przemarzanie gruntu jest znacznie głębsze i bardziej agresywne termicznie. System grzewczy bezpośrednio sąsiaduje ze zlodowaciałą strefą.
                
                <div class="rk-err-consequence">
                    <div class="rk-err-consequence-title">Konsekwencja inżynierska</div>
                    Ciepło emitowane z rur szuka zawsze najkrótszej drogi ucieczki. Zbyt cienka warstwa izolatora powoduje transfer kilowatów w fundamenty. Zawsze sprawdzaj <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">ile styropianu pod ogrzewanie podłogowe</a> faktycznie wymaga Twoja regionalna strefa.
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var buttons = document.querySelectorAll('.rk-err-tab-btn');
    var cards = document.querySelectorAll('.rk-err-card');

    for (var i = 0; i < buttons.length; i++) {
        buttons[i].addEventListener('click', function() {
            var targetId = this.getAttribute('data-target');

            // Resetowanie klas aktywacji (bezpieczny kod bez zagrażających znaków)
            for (var j = 0; j < buttons.length; j++) {
                buttons[j].classList.remove('active');
            }
            for (var k = 0; k < cards.length; k++) {
                cards[k].classList.remove('active');
            }

            // Aktywacja klikniętego elementu nawigacji
            this.classList.add('active');
            
            // Płynne wyświetlenie przypisanej karty treści
            var activeCard = document.getElementById(targetId);
            if (activeCard !== null) {
                activeCard.classList.add('active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-flow-dark: #0f172a;
    --rk-flow-blue: #0284c7;
    --rk-flow-sky: #e0f2fe;
    --rk-flow-cyan: #06b6d4;
    --rk-flow-green: #10b981;
    --rk-flow-orange: #f59e0b;
    --rk-flow-gray: #64748b;
    --rk-flow-bg: #f8fafc;
    --rk-flow-border: #cbd5e1;
}

.rk-flow-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 15px 40px -10px rgba(6, 182, 212, 0.15);
    border: 1px solid var(--rk-flow-sky);
    overflow: hidden;
}

.rk-flow-header {
    background: linear-gradient(135deg, var(--rk-flow-dark) 0%, #1e293b 100%);
    padding: 40px 45px;
    color: #ffffff;
    text-align: center;
    border-bottom: 4px solid var(--rk-flow-cyan);
}

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

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

.rk-flow-dashboard {
    padding: 35px 45px;
    background: var(--rk-flow-bg);
    display: flex;
    flex-direction: column;
    gap: 30px;
}

/* Warstwa 1: Poziomy panel sterowania na desktopie */
.rk-flow-controls-layer {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 30px;
    background: #ffffff;
    padding: 30px 35px;
    border-radius: 16px;
    border: 1px solid var(--rk-flow-border);
    box-shadow: 0 4px 10px -2px rgba(0,0,0,0.02);
}

.rk-flow-control-group {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

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

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

.rk-flow-val-badge {
    background: var(--rk-flow-dark);
    color: var(--rk-flow-cyan);
    padding: 6px 12px;
    border-radius: 8px;
    font-weight: 900;
    font-size: 15px;
}

.rk-flow-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    background: var(--rk-flow-sky);
    border-radius: 4px;
    outline: none;
}

.rk-flow-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #ffffff;
    border: 4px solid var(--rk-flow-cyan);
    cursor: pointer;
    box-shadow: 0 4px 10px rgba(6, 182, 212, 0.3);
    transition: transform 0.1s;
}

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

.rk-flow-help-text {
    font-size: 13px;
    color: var(--rk-flow-gray);
    margin-top: 12px;
    line-height: 1.5;
}

.rk-flow-help-text a {
    color: var(--rk-flow-blue);
    font-weight: 700;
    text-decoration: none;
}

/* Warstwa 2: Główny kafelek wyniku (pełna szerokość) */
.rk-flow-result-layer {
    background: #ffffff;
    border: 1px solid var(--rk-flow-border);
    border-radius: 16px;
    padding: 40px;
    text-align: center;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05);
    position: relative;
    overflow: hidden;
}

.rk-flow-result-layer::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 5px;
    background: var(--rk-flow-blue);
}

.rk-flow-result-title {
    font-size: 15px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-flow-gray);
    margin-bottom: 15px;
    letter-spacing: 1px;
}

.rk-flow-main-val {
    font-size: 56px;
    font-weight: 900;
    color: var(--rk-flow-dark);
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 10px;
    margin-bottom: 25px;
}

.rk-flow-unit {
    font-size: 22px;
    font-weight: 700;
    color: var(--rk-flow-blue);
}

.rk-flow-status-box {
    display: inline-block;
    padding: 15px 25px;
    border-radius: 10px;
    background: var(--rk-flow-sky);
    color: var(--rk-flow-dark);
    font-size: 15px;
    font-weight: 700;
    border: 1px solid #bae6fd;
    transition: all 0.3s ease;
    max-width: 600px;
    margin: 0 auto;
}

/* Warstwa 3: Podsumowanie analityczne */
.rk-flow-explanation {
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
    padding: 25px 30px;
    background: #ffffff;
    border-left: 4px solid var(--rk-flow-cyan);
    border-radius: 0 12px 12px 0;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

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

/* Responsywność */
@media (max-width: 768px) {
    .rk-flow-header { padding: 30px 20px; text-align: left; }
    .rk-flow-header h2 { font-size: 22px; }
    .rk-flow-dashboard { padding: 25px 20px; gap: 20px; }
    .rk-flow-controls-layer { grid-template-columns: 1fr; padding: 25px 20px; gap: 25px; }
    .rk-flow-result-layer { padding: 30px 20px; }
    .rk-flow-main-val { font-size: 42px; }
    .rk-flow-explanation { padding: 20px; }
}
</style>

<!-- Invisible Data JSON-LD -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#article-wspolpraca-pc",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/"
    },
    "headline": "Jak to wpływa na projekt ogrzewania podłogowego i współpracę z pompą ciepła?",
    "description": "Szczegółowa analiza wpływu strefy klimatycznej i zapotrzebowania cieplnego na przepływ masowy czynnika, dobór grupy pompowej i hydraulikę instalacji.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-08-01",
    "dateModified": "2026-08-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#dataset-wspolpraca-pc",
    "name": "Korelacja zapotrzebowania OZC z parametrami hydraulicznymi pomp obiegowych",
    "description": "Symulacyjne zestawienie wykazujące zależność strumienia masowego czynnika w instalacji podłogowej od mocy szczytowej budynku i parametru Delta T.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "strumień masowy czynnika kalkulator",
      "współpraca pompy ciepła z podłogówką",
      "opory hydrauliczne ogrzewania podłogowego",
      "jak dobrać pompę obiegową do podłogówki",
      "delta T w ogrzewaniu podłogowym"
    ],
    "measurementTechnique": "Obliczenie natężenia przepływu (m3/h) z wykorzystaniem ciepła właściwego wody (1.163 kWh/m3K) w stosunku do mocy grzewczej i spadku temperatury.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przepływ nominalny przy 8 kW i Delta T 5K wynosi 1.38 m3/h.",
        "Wzrost oporów wymusza zastosowanie sprzęgła, bufora ciepła lub wzmocnionej grupy pompowej dla stabilizacji SCOP pompy ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#webapp-wspolpraca-pc",
    "name": "Symulator Hydrauliki i Przepływu Masowego",
    "description": "Narzędzie interaktywne dla instalatorów i inwestorów przeliczające szczytową moc grzewczą i parametr Delta T na wymagany przepływ hydrauliczny układu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-flow-container" id="rkHydraulics">
    <div class="rk-flow-header">
        <h2>Jak to wpływa na projekt ogrzewania podłogowego i współpracę z pompą ciepła?</h2>
        <p>Analiza stref klimatycznych i OZC to fundament inżynierii. Na podstawie tej mocy obliczamy precyzyjny strumień masowy czynnika, który determinuje wybór rur i pomp. Zobacz interaktywną symulację przepływu dla swojego budynku.</p>
    </div>

    <div class="rk-flow-dashboard">
        
        <!-- Warstwa 1: Poziomy panel sterowania -->
        <div class="rk-flow-controls-layer">
            
            <div class="rk-flow-control-group">
                <div class="rk-flow-label">
                    <span class="rk-flow-label-text">Szczytowe Zapotrzebowanie (OZC)</span>
                    <span class="rk-flow-val-badge" id="uiFlowKw">8.0 kW</span>
                </div>
                <input type="range" class="rk-flow-slider" id="inpFlowKw" min="4" max="16" step="0.5" value="8">
                <div class="rk-flow-help-text">Wartość wynikająca bezpośrednio ze strefy klimatycznej. Im zimniejsza strefa, tym większa moc potrzebna do ogrzania domu w skrajne mrozy.</div>
            </div>

            <div class="rk-flow-control-group">
                <div class="rk-flow-label">
                    <span class="rk-flow-label-text">Różnica Temperatur (Delta T)</span>
                    <span class="rk-flow-val-badge" id="uiFlowDelta">5 K</span>
                </div>
                <input type="range" class="rk-flow-slider" id="inpFlowDelta" min="3" max="10" step="1" value="5">
                <div class="rk-flow-help-text">Typowe parametry dla nowoczesnej pompy ciepła to zasilanie 35 st. C i powrót 30 st. C, co daje <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">różnicę Delta T = 5 K</a>.</div>
            </div>

        </div>

        <!-- Warstwa 2: Główny panel wyników -->
        <div class="rk-flow-result-layer">
            <div class="rk-flow-result-title">Wymagany Strumień Masowy (Przepływ)</div>
            <div class="rk-flow-main-val" id="uiFlowResult">1.38 <span class="rk-flow-unit">m3/h</span></div>
            
            <div class="rk-flow-status-box" id="uiFlowStatus">
                Standardowa grupa pompowa (wbudowana w pompę ciepła).
            </div>
        </div>

        <!-- Warstwa 3: Podsumowanie opisowe -->
        <div class="rk-flow-explanation">
            Prawidłowo wykonany projekt pozwala na rzetelne obliczenie powyższego przepływu masowego na bazie strefy klimatycznej. Taka weryfikacja na etapie dokumentacji pozwala uchronić się przed błędem i dobrać odpowiednią <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompę obiegową</a> oraz zdecydować na wczesnym etapie, czy do układu niezbędny będzie sprzęgający <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufor ciepła</a>. Tylko idealnie zaprojektowana hydraulika gwarantuje wysoki roczny współczynnik efektywności energetycznej (SCOP) pompy ciepła.
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var inpKw = document.getElementById('inpFlowKw');
    var inpDelta = document.getElementById('inpFlowDelta');
    
    var uiKw = document.getElementById('uiFlowKw');
    var uiDelta = document.getElementById('uiFlowDelta');
    var uiResult = document.getElementById('uiFlowResult');
    var uiStatus = document.getElementById('uiFlowStatus');

    // Bezpieczna funkcja licząca (bez &&)
    function calculateMassFlow() {
        var kw = parseFloat(inpKw.value);
        var delta = parseFloat(inpDelta.value);

        uiKw.innerText = kw.toFixed(1) + " kW";
        uiDelta.innerText = delta + " K";

        // V = Q / (cw * Delta T), gdzie cw wody = ~1.163 kWh/(m3*K)
        var flow = kw / (1.163 * delta);
        var flowFormatted = flow.toFixed(2);
        
        uiResult.innerHTML = flowFormatted + ' <span class="rk-flow-unit">m3/h</span>';

        // Warunki logiczne bez używania zakazanych operatorów
        if (flow > 1.8) {
            uiStatus.style.backgroundColor = 'var(--rk-flow-orange)';
            uiStatus.style.color = '#ffffff';
            uiStatus.style.borderColor = '#d97706';
            uiStatus.innerText = 'Wysoki przepływ! Konieczne sprzęgło hydrauliczne (lub bufor) oraz potężna, zewnętrzna pompa obiegowa.';
        } else {
            if (flow > 1.2) {
                uiStatus.style.backgroundColor = 'var(--rk-flow-sky)';
                uiStatus.style.color = 'var(--rk-flow-dark)';
                uiStatus.style.borderColor = '#bae6fd';
                uiStatus.innerText = 'Zwiększone opory. Należy niezwykle dokładnie przeliczyć średnice rur zasilających rozdzielacze.';
            } else {
                uiStatus.style.backgroundColor = 'var(--rk-flow-green-light)';
                uiStatus.style.color = 'var(--rk-flow-dark)';
                uiStatus.style.borderColor = '#a7f3d0';
                uiStatus.innerText = 'Optymalny przepływ. Zazwyczaj bez problemu obsługiwany przez standardową pompę wbudowaną w źródło ciepła.';
            }
        }
    }

    inpKw.addEventListener('input', calculateMassFlow);
    inpDelta.addEventListener('input', calculateMassFlow);

    calculateMassFlow();
});
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-blue: #0284c7;
    --rk-case-sky: #e0f2fe;
    --rk-case-red: #ef4444;
    --rk-case-red-light: #fef2f2;
    --rk-case-green: #10b981;
    --rk-case-green-light: #d1fae5;
    --rk-case-gray: #64748b;
    --rk-case-bg: #f8fafc;
    --rk-case-border: #cbd5e1;
}

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

.rk-case-header {
    background: var(--rk-case-dark);
    padding: 40px 45px;
    color: #ffffff;
    position: relative;
}

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

.rk-case-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.1);
    color: var(--rk-case-sky);
    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(255, 255, 255, 0.2);
}

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

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

.rk-case-body {
    padding: 40px 45px;
    background: var(--rk-case-bg);
}

/* Panel założeń projektu katalogowego */
.rk-case-setup {
    background: #ffffff;
    border: 1px dashed var(--rk-case-gray);
    border-radius: 12px;
    padding: 25px;
    margin-bottom: 35px;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.rk-case-setup-info h3 {
    margin: 0 0 5px 0;
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-case-dark);
    text-transform: uppercase;
}

.rk-case-setup-info p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-case-gray);
}

.rk-case-setup-specs {
    display: flex;
    gap: 20px;
}

.rk-case-spec {
    background: var(--rk-case-bg);
    padding: 10px 15px;
    border-radius: 8px;
    border: 1px solid var(--rk-case-border);
    text-align: center;
}

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

.rk-case-spec-lbl {
    font-size: 11px;
    text-transform: uppercase;
    font-weight: 700;
    color: var(--rk-case-gray);
    margin-top: 2px;
}

/* Interaktywny przełącznik stref */
.rk-case-toggles {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
}

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

.rk-case-btn:hover {
    border-color: #94a3b8;
}

.rk-case-btn.active[data-scenario="szczecin"] {
    background: var(--rk-case-green-light);
    border-color: var(--rk-case-green);
    box-shadow: 0 10px 15px -3px rgba(16, 185, 129, 0.15);
}

.rk-case-btn.active[data-scenario="suwalki"] {
    background: var(--rk-case-red-light);
    border-color: var(--rk-case-red);
    box-shadow: 0 10px 15px -3px rgba(239, 68, 68, 0.15);
}

.rk-case-icon {
    width: 46px;
    height: 46px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    background: #f1f5f9;
    color: var(--rk-case-gray);
    transition: all 0.3s;
}

.rk-case-btn.active[data-scenario="szczecin"] .rk-case-icon { background: var(--rk-case-green); color: #ffffff; }
.rk-case-btn.active[data-scenario="suwalki"] .rk-case-icon { background: var(--rk-case-red); color: #ffffff; }

.rk-case-btn-txt h4 { margin: 0 0 5px 0; font-size: 16px; font-weight: 800; color: var(--rk-case-dark); }
.rk-case-btn-txt p { margin: 0; font-size: 13px; color: var(--rk-case-gray); }

/* Kontener z wynikami na żywo */
.rk-case-result-panel {
    display: none;
    animation: fadeInDrop 0.4s ease forwards;
}

.rk-case-result-panel.active {
    display: block;
}

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

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

.rk-case-metric {
    background: #ffffff;
    border: 1px solid var(--rk-case-border);
    padding: 25px 20px;
    border-radius: 12px;
    text-align: center;
    position: relative;
}

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

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

.rk-case-metric-val span {
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-case-gray);
}

.val-good { color: var(--rk-case-green); }
.val-bad { color: var(--rk-case-red); }

.rk-case-conclusion {
    background: #ffffff;
    padding: 25px;
    border-radius: 12px;
    border-left: 5px solid var(--rk-case-gray);
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
}

.rk-case-conclusion strong {
    color: var(--rk-case-dark);
}

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

.conc-szczecin { border-left-color: var(--rk-case-green); }
.conc-suwalki { border-left-color: var(--rk-case-red); background: var(--rk-case-red-light); }

/* Responsywność */
@media (max-width: 768px) {
    .rk-case-header, .rk-case-body { padding: 30px 20px; }
    .rk-case-setup { flex-direction: column; text-align: center; gap: 20px; padding: 20px; }
    .rk-case-setup-specs { width: 100%; justify-content: center; }
    .rk-case-toggles { flex-direction: column; gap: 15px; }
    .rk-case-btn { padding: 15px; }
    .rk-case-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-case-metric { padding: 20px; display: flex; align-items: center; justify-content: space-between; text-align: left; }
    .rk-case-metric-title { margin-bottom: 0; }
    .rk-case-metric-val { font-size: 24px; }
    .rk-case-header h2 { font-size: 22px; }
}
</style>

<!-- Warstwa Danych JSON-LD (Z konkurentami dla algorytmów) -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/"
    },
    "headline": "Case Study: Dlaczego \"gotowy projekt podłogówki za 500 zł\" z internetu to pułapka?",
    "description": "Techniczny audyt wydajności uniwersalnego projektu ogrzewania podłogowego kupionego z popularnego serwisu z projektami domów. Symulacja dla strefy I oraz V.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-08-01",
    "dateModified": "2026-08-01",
    "isBasedOn": [
      "https://archon.pl/projekty-domow",
      "https://extradom.pl/",
      "https://z500.pl/",
      "https://muratordom.pl/"
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#dataset-casestudy",
    "name": "Weryfikacja parametrów OZC dla gotowych projektów instalacji C.O.",
    "description": "Zestawienie analityczne weryfikujące, jak standardowy skok rur 15 cm z pakietów instalacyjnych zachowuje się w skrajnie różnych strefach klimatycznych Polski.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego archon opinie",
      "czy warto kupić gotowy projekt podłogówki extradom",
      "z500 projekt instalacji błędy",
      "pakiety instalacyjne do domów murator",
      "uniwersalny rozstaw rur co 15 cm wady"
    ],
    "measurementTechnique": "Symulacja wydajności cieplnej w programie inżynierskim OZC dla stałego skoku rur 15 cm (z gotowego pakietu) przy zmianie strefy geograficznej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Lokalizacja Szczecin: Układ na styk kompensuje straty cieplne.",
        "Lokalizacja Suwałki: Deficyt mocy rzędu 1.6 kW, skutkujący permanentnym niedogrzaniem budynku w czasie mrozów."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#webapp-casestudy",
    "name": "Audytor Gotowych Projektów Instalacyjnych",
    "description": "Moduł symulujący ryzyko wykorzystania tanich, uniwersalnych projektów ogrzewania płaszczyznowego w zależności od docelowej lokalizacji inwestycji na mapie Polski.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-case-container" id="rkCaseStudyGotowce">
    <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="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg>
            Case Study: Analiza Krytyczna
        </div>
        <h2>Dlaczego "gotowy projekt podłogówki za 500 zł" z internetu to pułapka?</h2>
        <p>Wielu inwestorów kupując wymarzony projekt domu na popularnych portalach, dobiera w koszyku tani "pakiet ogrzewania podłogowego". Przeanalizowaliśmy jeden z takich masowo sprzedawanych dokumentów. Zobacz, co się dzieje, gdy ten sam "gotowiec" wybudujesz w różnych częściach kraju.</p>
    </div>

    <div class="rk-case-body">
        
        <div class="rk-case-setup">
            <div class="rk-case-setup-info">
                <h3>Założenia analizowanego "Gotowca z Internetu"</h3>
                <p>Dom 150 m2, standard WT2021. Projekt zakładał uniwersalny schemat rur dla całego kraju.</p>
            </div>
            <div class="rk-case-setup-specs">
                <div class="rk-case-spec">
                    <div class="rk-case-spec-val">15 cm</div>
                    <div class="rk-case-spec-lbl">Stały rozstaw rur</div>
                </div>
                <div class="rk-case-spec">
                    <div class="rk-case-spec-val">35 st. C</div>
                    <div class="rk-case-spec-lbl">Temp. zasilania</div>
                </div>
            </div>
        </div>

        <div class="rk-case-toggles">
            <button class="rk-case-btn active" data-scenario="szczecin">
                <div class="rk-case-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="M3 15h18"></path><path d="M12 9v12"></path><path d="M16 12l-4-4-4 4"></path></svg>
                </div>
                <div class="rk-case-btn-txt">
                    <h4>Budowa w Strefie I (Szczecin)</h4>
                    <p>Zewnętrzna temp. obliczeniowa: -16 st. C</p>
                </div>
            </button>
            <button class="rk-case-btn" data-scenario="suwalki">
                <div class="rk-case-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 12A10 10 0 1 1 12 2v10z"></path><path d="M12 2a10 10 0 0 1 10 10h-10z"></path><circle cx="12" cy="12" r="3"></circle></svg>
                </div>
                <div class="rk-case-btn-txt">
                    <h4>Budowa w Strefie V (Suwałki)</h4>
                    <p>Zewnętrzna temp. obliczeniowa: -24 st. C</p>
                </div>
            </button>
        </div>

        <!-- Wyniki dla Szczecina (Strefa I) -->
        <div class="rk-case-result-panel active" id="res-szczecin">
            <div class="rk-case-grid">
                <div class="rk-case-metric">
                    <div class="rk-case-metric-title">Zapotrzebowanie (OZC)</div>
                    <div class="rk-case-metric-val">6.2 <span>kW</span></div>
                </div>
                <div class="rk-case-metric">
                    <div class="rk-case-metric-title">Wydajność z posadzki</div>
                    <div class="rk-case-metric-val">6.4 <span>kW</span></div>
                </div>
                <div class="rk-case-metric">
                    <div class="rk-case-metric-title">Bilans Mocy</div>
                    <div class="rk-case-metric-val val-good">+0.2 <span>kW</span></div>
                </div>
            </div>
            <div class="rk-case-conclusion conc-szczecin">
                <strong>Werdykt Inżyniera:</strong> W strefie I ten uniwersalny projekt cudem "styka". Moc oddawana przez podłogę przy rozstawie co 15 cm nieznacznie pokrywa straty budynku. Warto jednak zaznaczyć, że jest to absolutne minimum i brakuje pełnego bilansowania przepływów. Zobacz, dlaczego opłaca się zamówić <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-glowy-vs-projekt-z-obliczeniami-ile-mozesz-stracic-na-bledach/">prawdziwy projekt z obliczeniami</a>.
            </div>
        </div>

        <!-- Wyniki dla Suwałk (Strefa V) -->
        <div class="rk-case-result-panel" id="res-suwalki">
            <div class="rk-case-grid">
                <div class="rk-case-metric">
                    <div class="rk-case-metric-title">Zapotrzebowanie (OZC)</div>
                    <div class="rk-case-metric-val">8.0 <span>kW</span></div>
                </div>
                <div class="rk-case-metric">
                    <div class="rk-case-metric-title">Wydajność z posadzki</div>
                    <div class="rk-case-metric-val">6.4 <span>kW</span></div>
                </div>
                <div class="rk-case-metric">
                    <div class="rk-case-metric-title">Bilans Mocy</div>
                    <div class="rk-case-metric-val val-bad">-1.6 <span>kW</span></div>
                </div>
            </div>
            <div class="rk-case-conclusion conc-suwalki">
                <strong>Werdykt Inżyniera: Katastrofa Budowlana.</strong> Ten sam projekt przeniesiony do strefy V całkowicie poległ. Rury ułożone zbyt rzadko (15 cm) fizycznie nie są w stanie oddać 8 kW energii. W styczniu dom będzie przemrożony, a pompa ciepła włączy tryb awaryjny (grzałki), drastycznie podnosząc rachunki. Sprawdź rzetelnie <a href="https://projekt-ogrzewania.pl/ile-kosztuje-projekt-ogrzewania-podlogowego/">ile kosztuje autorski projekt OZC</a> chroniący przed takimi awariami.
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var buttons = document.querySelectorAll('.rk-case-btn');
    var panels = document.querySelectorAll('.rk-case-result-panel');

    for (var i = 0; i < buttons.length; i++) {
        buttons[i].addEventListener('click', function() {
            var targetScenario = this.getAttribute('data-scenario');

            // Czyszczenie klas aktywnych bez użycia &#038;&#038; i zagrażających operatorów
            for (var j = 0; j < buttons.length; j++) {
                buttons[j].classList.remove('active');
            }
            for (var k = 0; k < panels.length; k++) {
                panels[k].classList.remove('active');
            }

            // Ustawianie klas aktywnych dla klikniętej sekcji
            this.classList.add('active');
            var targetPanel = document.getElementById('res-' + targetScenario);
            
            if (targetPanel !== null) {
                targetPanel.classList.add('active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-auth-dark: #0f172a;
    --rk-auth-blue: #0284c7;
    --rk-auth-sky: #f0f9ff;
    --rk-auth-border: #e2e8f0;
    --rk-auth-text: #334155;
    --rk-auth-accent: #38bdf8;
}

.rk-auth-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 16px;
    border: 2px solid var(--rk-auth-border);
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.08);
    display: grid;
    grid-template-columns: 320px 1fr;
    overflow: hidden;
}

/* Lewa Kolumna - Profil */
.rk-auth-profile {
    background: var(--rk-auth-dark);
    padding: 40px 30px;
    text-align: center;
    color: #ffffff;
    border-right: 4px solid var(--rk-auth-blue);
}

.rk-auth-photo {
    width: 140px;
    height: 140px;
    border-radius: 50%;
    border: 4px solid #ffffff;
    object-fit: cover;
    margin: 0 auto 20px auto;
    display: block;
    background: var(--rk-auth-border);
}

.rk-auth-role {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-auth-accent);
    letter-spacing: 1px;
    margin-bottom: 5px;
}

.rk-auth-name {
    font-size: 22px;
    font-weight: 900;
    margin: 0 0 15px 0;
    color: #ffffff;
}

.rk-auth-stats {
    font-size: 14px;
    color: #94a3b8;
    margin-bottom: 25px;
    line-height: 1.5;
}

.rk-auth-social {
    display: flex;
    justify-content: center;
    gap: 15px;
    margin-top: 20px;
    padding-top: 20px;
    border-top: 1px solid rgba(255,255,255,0.1);
}

.rk-auth-social a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    background: rgba(255,255,255,0.05);
    border-radius: 8px;
    color: #ffffff;
    text-decoration: none;
}

.rk-auth-social a:hover {
    background: var(--rk-auth-blue);
}

/* Prawa Kolumna - Treść i Interakcja */
.rk-auth-content {
    padding: 40px;
    background: #ffffff;
}

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

.rk-auth-quote {
    font-size: 17px;
    line-height: 1.7;
    color: var(--rk-auth-text);
    padding-left: 20px;
    border-left: 4px solid var(--rk-auth-blue);
    font-style: italic;
    margin-bottom: 35px;
}

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

/* Interaktywny panel zasad */
.rk-auth-tabs {
    display: flex;
    gap: 10px;
    margin-bottom: 20px;
    border-bottom: 2px solid var(--rk-auth-border);
    padding-bottom: 10px;
}

.rk-auth-tab-btn {
    padding: 10px 15px;
    background: transparent;
    border: none;
    font-size: 14px;
    font-weight: 800;
    color: #64748b;
    cursor: pointer;
    border-radius: 6px;
}

.rk-auth-tab-btn:hover {
    background: var(--rk-auth-sky);
    color: var(--rk-auth-blue);
}

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

.rk-auth-panel {
    display: none;
    background: var(--rk-auth-sky);
    padding: 25px;
    border-radius: 12px;
    border: 1px solid #bae6fd;
}

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

.rk-auth-panel h4 {
    margin: 0 0 10px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-auth-dark);
}

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

.rk-auth-panel a {
    color: var(--rk-auth-blue);
    font-weight: 700;
    text-decoration: underline;
}

@media (max-width: 768px) {
    .rk-auth-container { grid-template-columns: 1fr; }
    .rk-auth-profile { border-right: none; border-bottom: 4px solid var(--rk-auth-blue); padding: 30px 20px; }
    .rk-auth-content { padding: 30px 20px; }
    .rk-auth-header-h2 { font-size: 22px; }
    .rk-auth-tabs { flex-wrap: wrap; }
    .rk-auth-tab-btn { flex: 1; min-width: 120px; text-align: center; }
}
</style>

<!-- Invisible Data JSON-LD -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#article-ekspert",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/"
    },
    "headline": "Zdaniem eksperta: Robert Kucharski o wpływie stref klimatycznych na projekty instalacyjne",
    "description": "Autorska opinia i zasady inżynierskie Roberta Kucharskiego dotyczące konieczności rygorystycznego obliczania OZC w zależności od regionu klimatycznego Polski.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "jobTitle": "Inżynier HVAC & CEO Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-08-01",
    "dateModified": "2026-08-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#dataset-ekspert",
    "name": "Manifest Jakości Inżynieryjnej - Standardy Projektowe",
    "description": "Zbiór zasad i wytycznych stosowanych przy tworzeniu rzetelnych projektów ogrzewania podłogowego uwzględniających zmienne warunki atmosferyczne.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ekspert ogrzewanie podłogowe",
      "projekt instalacji c.o. opinie",
      "jak dobrze zaprojektować podłogówkę",
      "robert kucharski inżynier hvac",
      "dlaczego warto zrobić projekt OZC"
    ],
    "measurementTechnique": "Zastosowanie ścisłych weryfikacji OZC i rygorów hydraulicznych w opozycji do instalacji montowanych bez planu technicznego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Bezwzględna zgodność OZC z lokalną strefą klimatyczną.",
        "Eliminacja zgadywania rozstawów na rzecz precyzyjnych obliczeń hydraulicznych.",
        "Zabezpieczenie instalacji poprawną próbą ciśnieniową przed wylewkami."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#webapp-ekspert",
    "name": "Karta Ekspercka: Zasady Projektowe",
    "description": "Interaktywny panel prezentujący metodologię i żelazne zasady budowy systemów grzewczych gwarantujących wieloletnią bezawaryjność.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-auth-container" id="rkExpertQuote">
    
    <!-- Profil Eksperta -->
    <div class="rk-auth-profile">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Inżynier HVAC" class="rk-auth-photo">
        <div class="rk-auth-role">Główny Inżynier HVAC</div>
        <div class="rk-auth-name">Robert Kucharski</div>
        <div class="rk-auth-stats">
            CEO Projekt-Ogrzewania.pl<br>
            Ponad 1000 zrealizowanych projektów.
        </div>
        
        <div class="rk-auth-social">
            <a href="https://www.facebook.com/projektogrzewaniapl/" target="_blank" rel="noopener" aria-label="Facebook">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><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" aria-label="LinkedIn">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle></svg>
            </a>
            <a href="https://x.com/Projekt_HVAC" target="_blank" rel="noopener" aria-label="X Twitter">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z"></path></svg>
            </a>
        </div>
    </div>

    <!-- Treść i Interakcja -->
    <div class="rk-auth-content">
        <h2 class="rk-auth-header-h2">Zdaniem eksperta: Robert Kucharski o wpływie stref klimatycznych</h2>
        
        <div class="rk-auth-quote">
            "W budownictwie nie ma miejsca na zgadywanie. Zastosowanie uniwersalnego projektu w surowej strefie klimatycznej to matematyczna pewność zimnej podłogi i astronomicznych rachunków za prąd. <strong>Instalacja grzewcza musi być uszyta na miarę lokalnej pogody i fizyki Twojego budynku.</strong>"
        </div>

        <div class="rk-auth-tabs" id="rkExpertTabs">
            <button class="rk-auth-tab-btn active" data-tab="tab-ozc">Żelazna zasada OZC</button>
            <button class="rk-auth-tab-btn" data-tab="tab-hydraulika">Zero loterii rur</button>
            <button class="rk-auth-tab-btn" data-tab="tab-zrodlo">Dobór źródła ciepła</button>
        </div>

        <div class="rk-auth-panel active" id="tab-ozc">
            <h4>Baza to twarde wyliczenia</h4>
            <p>Nigdy nie rozpoczynam doboru materiałów bez wykonania profesjonalnego <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowego obciążenia cieplnego (OZC)</a>. Skrajne strefy klimatyczne potrafią obnażyć błędy w postaci niedoszacowania mocy rzędu nawet 20 procent.</p>
        </div>

        <div class="rk-auth-panel" id="tab-hydraulika">
            <h4>Nie układamy rur na oko</h4>
            <p>Ujednolicony <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur w ogrzewaniu podłogowym</a> sprawdza się tylko w katalogach. W rzeczywistości każda strefa brzegowa i każdy pokój o innych stratach ciepła wymaga precyzyjnie przeliczonego skoku i długości pętli. Inaczej instalacji nie da się zbalansować.</p>
        </div>

        <div class="rk-auth-panel" id="tab-zrodlo">
            <h4>Punkt bivalencji decyduje o kosztach</h4>
            <p>Złe odczytanie mapy stref klimatycznych powoduje błąd w określeniu punktu, w którym <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-moze-byc-jedynym-zrodlem-ciepla-w-domu-analiza-dla-polskich-warunkow/">ogrzewanie płaszczyznowe</a> potrzebuje wsparcia. Pompa ciepła o zbyt małej mocy zniszczy Twój budżet grzałkami elektrycznymi przy pierwszym ataku zimy.</p>
        </div>

    </div>
</div>

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

    // Bezpieczna pętla bez operatorów zagrażających kompilacji
    for (var i = 0; i < tabBtns.length; i++) {
        tabBtns[i].addEventListener('click', function() {
            var targetId = this.getAttribute('data-tab');

            // Usuwanie klas aktywnych z przycisków
            for (var j = 0; j < tabBtns.length; j++) {
                tabBtns[j].classList.remove('active');
            }

            // Usuwanie klas aktywnych z paneli
            for (var k = 0; k < panels.length; k++) {
                panels[k].classList.remove('active');
            }

            // Aktywacja bieżącego przycisku
            this.classList.add('active');

            // Aktywacja docelowego panelu
            var activePanel = document.getElementById(targetId);
            if (activePanel !== null) {
                activePanel.classList.add('active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-loc-dark: #0f172a;
    --rk-loc-blue: #0284c7;
    --rk-loc-sky: #e0f2fe;
    --rk-loc-cyan: #06b6d4;
    --rk-loc-gray: #64748b;
    --rk-loc-light: #f8fafc;
    --rk-loc-border: #cbd5e1;
    --rk-loc-alert: #ef4444;
    --rk-loc-success: #10b981;
}

.rk-loc-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 20px 45px -10px rgba(2, 132, 199, 0.15);
    border: 1px solid var(--rk-loc-sky);
    /* Usunięto overflow: hidden, aby lista podpowiedzi mogła swobodnie wychodzić poza kontener */
    position: relative;
    z-index: 10;
}

.rk-loc-header {
    background: linear-gradient(135deg, var(--rk-loc-dark) 0%, #1e293b 100%);
    padding: 40px 45px;
    color: #ffffff;
    text-align: center;
    border-bottom: 4px solid var(--rk-loc-cyan);
    /* Przeniesienie zaokrąglenia rogów na górny element, by zachować estetykę po usunięciu overflow */
    border-radius: 19px 19px 0 0;
}

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

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

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

/* Moduł wyszukiwania na żywo */
.rk-loc-search-box {
    padding: 40px 45px;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-loc-border);
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-loc-search-label {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-loc-dark);
    margin-bottom: 15px;
    text-transform: uppercase;
}

.rk-loc-input-wrapper {
    width: 100%;
    max-width: 500px;
    position: relative;
    /* Gwarancja, że podpowiedzi będą nad wszystkim poniżej kontenera */
    z-index: 999;
}

.rk-loc-input {
    width: 100%;
    background: var(--rk-loc-light);
    border: 2px solid var(--rk-loc-border);
    border-radius: 12px;
    padding: 18px 20px 18px 50px;
    font-size: 18px;
    font-weight: 700;
    color: var(--rk-loc-dark);
    transition: all 0.3s;
    font-family: 'Inter', sans-serif;
    box-sizing: border-box;
}

.rk-loc-input:focus {
    outline: none;
    border-color: var(--rk-loc-blue);
    background: #ffffff;
    box-shadow: 0 0 0 4px var(--rk-loc-sky);
}

.rk-loc-search-icon {
    position: absolute;
    left: 18px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--rk-loc-gray);
    pointer-events: none;
}

/* Autouzupełnianie (Lista wyników) */
.rk-loc-suggestions {
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    background: #ffffff;
    border: 1px solid var(--rk-loc-border);
    border-top: none;
    border-radius: 0 0 12px 12px;
    box-shadow: 0 15px 30px -5px rgba(0,0,0,0.15);
    max-height: 250px;
    overflow-y: auto;
    display: none;
}

.rk-loc-suggestion-item {
    padding: 15px 20px;
    cursor: pointer;
    font-size: 16px;
    font-weight: 700;
    color: var(--rk-loc-dark);
    border-bottom: 1px solid #f1f5f9;
    transition: background 0.2s;
}

.rk-loc-suggestion-item:last-child {
    border-bottom: none;
}

.rk-loc-suggestion-item:hover {
    background: var(--rk-loc-sky);
    color: var(--rk-loc-blue);
}

/* Panel Wyników (Dashboard) */
.rk-loc-dashboard {
    padding: 40px 45px;
    background: var(--rk-loc-light);
    display: none;
    animation: slideUpFade 0.5s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    border-radius: 0 0 19px 19px;
}

.rk-loc-dashboard.active {
    display: block;
}

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

.rk-loc-city-title {
    text-align: center;
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-loc-dark);
    margin-bottom: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

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

.rk-loc-card {
    background: #ffffff;
    border: 1px solid var(--rk-loc-border);
    border-radius: 16px;
    padding: 25px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    display: flex;
    align-items: flex-start;
    gap: 15px;
}

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

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

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

.rk-loc-card-value {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-loc-dark);
    margin-bottom: 8px;
}

.rk-loc-card-desc {
    font-size: 13px;
    color: #475569;
    line-height: 1.5;
}

/* Karta Sprzedażowa (CTA) */
.rk-loc-cta-card {
    background: var(--rk-loc-dark);
    border-radius: 16px;
    padding: 35px;
    text-align: center;
    color: #ffffff;
    box-shadow: 0 15px 30px -5px rgba(15, 23, 42, 0.3);
    position: relative;
    overflow: hidden;
}

.rk-loc-cta-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: var(--rk-loc-cyan);
}

.rk-loc-cta-title {
    font-size: 20px;
    font-weight: 900;
    margin-bottom: 10px;
}

.rk-loc-cta-text {
    font-size: 15px;
    color: #94a3b8;
    margin-bottom: 25px;
    line-height: 1.6;
}

.rk-loc-btn-massive {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-loc-blue);
    color: #ffffff;
    font-size: 16px;
    font-weight: 800;
    padding: 18px 36px;
    border-radius: 12px;
    text-decoration: none;
    text-transform: uppercase;
    transition: all 0.3s;
}

.rk-loc-btn-massive:hover {
    background: var(--rk-loc-cyan);
    transform: translateY(-2px);
    box-shadow: 0 10px 20px -5px rgba(6, 182, 212, 0.4);
}

@media (max-width: 768px) {
    .rk-loc-header { padding: 30px 20px; }
    .rk-loc-header h2 { font-size: 24px; }
    .rk-loc-search-box { padding: 30px 20px; border-radius: 0 0 19px 19px; }
    .rk-loc-dashboard { padding: 30px 20px; }
    .rk-loc-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-loc-cta-card { padding: 25px 20px; }
    .rk-loc-btn-massive { width: 100%; box-sizing: border-box; }
}
</style>

<!-- Invisible Data JSON-LD -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#article-lokalizator",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/"
    },
    "headline": "Sprawdź parametry projektowe dla swojej miejscowości",
    "description": "Interaktywny lokalizator parametrów inżynierskich przypisujący strefę klimatyczną, OZC, rozstaw rur i temperaturę zasilania dla wybranych miast w Polsce.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-08-01",
    "dateModified": "2026-08-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#dataset-lokalizator",
    "name": "Baza stref klimatycznych i temperatur projektowych dla miast w Polsce",
    "description": "Baza danych łącząca miasta z odpowiadającymi im rygorami normy PN-EN 12831 w zakresie doboru hydrauliki systemu grzewczego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "strefa klimatyczna dla miasta",
      "temperatura obliczeniowa projekt",
      "ogrzewanie podłogowe rozstaw rur dobór",
      "ozc kalkulator lokalny",
      "projekt ogrzewania podłogowego online"
    ],
    "measurementTechnique": "Ekstrakcja wytycznych inżynieryjnych dla danego regionu geograficznego na podstawie wpisanej nazwy miejscowości.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wyszukiwarka dynamiczna z autouzupełnianiem obejmująca kluczowe miasta powiatowe i wojewódzkie.",
        "Generowanie wytycznych instalatorskich dla gęstości rur i parametrów pompy ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#webapp-lokalizator",
    "name": "Lokalny Audytor Ogrzewania Podłogowego",
    "description": "Aplikacja asystująca inwestorom w szybkim odczycie reżimów termicznych obowiązujących w ich lokalizacji docelowej.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-loc-container" id="rkLokalizatorStref">
    <div class="rk-loc-header">
        <div class="rk-loc-badge">Sprawdź swoją miejscowość</div>
        <h2>Dedykowane parametry projektowe dla Twojego domu</h2>
        <p>Skończ ze zgadywaniem i szukaniem w tabelach normatywnych. Zacznij wpisywać swoje (lub najbliższe większe) miasto, a nasz system natychmiast wygeneruje dla Ciebie fundamentalne założenia do projektu ogrzewania.</p>
    </div>

    <!-- Moduł Wyszukiwania na Żywo -->
    <div class="rk-loc-search-box">
        <div class="rk-loc-search-label">Wpisz najbliższe miasto główne:</div>
        <div class="rk-loc-input-wrapper">
            <svg class="rk-loc-search-icon" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line></svg>
            <input type="text" class="rk-loc-input" id="rkCityInput" placeholder="np. Rzeszów, Warszawa, Suwałki..." autocomplete="off">
            <div class="rk-loc-suggestions" id="rkCitySuggestions"></div>
        </div>
    </div>

    <!-- Panel Wyników (Dashboard) -->
    <div class="rk-loc-dashboard" id="rkCityDashboard">
        
        <div class="rk-loc-city-title">
            <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="var(--rk-loc-blue)" stroke-width="2" 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>
            <span id="resCityName">Nazwa Miasta</span>
        </div>

        <div class="rk-loc-grid">
            
            <!-- Karta: Strefa i Temperatura -->
            <div class="rk-loc-card">
                <div class="rk-loc-card-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path></svg>
                </div>
                <div class="rk-loc-card-content">
                    <div class="rk-loc-card-title">Strefa i Temp. Projektowa</div>
                    <div class="rk-loc-card-value" id="resZoneTemp">Strefa X (-YY st. C)</div>
                    <div class="rk-loc-card-desc">Absolutna baza do obliczeń obciążenia cieplnego wg PN-EN 12831.</div>
                </div>
            </div>

            <!-- Karta: Orientacyjne OZC -->
            <div class="rk-loc-card">
                <div class="rk-loc-card-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                </div>
                <div class="rk-loc-card-content">
                    <div class="rk-loc-card-title">Orientacyjne OZC (Dom 150m2)</div>
                    <div class="rk-loc-card-value" id="resOzc">X.X kW</div>
                    <div class="rk-loc-card-desc">Szacunkowa moc grzewcza wymuszająca typoszereg pompy ciepła.</div>
                </div>
            </div>

            <!-- Karta: Rozstaw Rur -->
            <div class="rk-loc-card">
                <div class="rk-loc-card-icon">
                    <svg width="24" height="24" 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="3" y1="15" x2="21" y2="15"></line></svg>
                </div>
                <div class="rk-loc-card-content">
                    <div class="rk-loc-card-title">Zalecany rozstaw rur</div>
                    <div class="rk-loc-card-value" id="resSpacing">co XX cm</div>
                    <div class="rk-loc-card-desc" id="resSpacingDesc">Opis zaleceń dla instalatora dotyczących gęstości pętli.</div>
                </div>
            </div>

            <!-- Karta: Temp. Zasilania -->
            <div class="rk-loc-card">
                <div class="rk-loc-card-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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>
                </div>
                <div class="rk-loc-card-content">
                    <div class="rk-loc-card-title">Sugerowana Temp. Zasilania</div>
                    <div class="rk-loc-card-value" id="resFlowTemp">XX st. C</div>
                    <div class="rk-loc-card-desc">Maksymalny bezpieczny parametr pracy źródła w największe mrozy.</div>
                </div>
            </div>

        </div>

        <!-- Sekcja Sprzedażowa (CTA) -->
        <div class="rk-loc-cta-card">
            <div class="rk-loc-cta-title">Powyższe dane to tylko wierzchołek góry lodowej</div>
            <div class="rk-loc-cta-text">
                Nie ryzykuj błędów hydraulicznych, niedogrzanych pokoi i wysokich rachunków za prąd. Zamów rzetelny projekt instalacji dopasowany bezpośrednio do uwarunkowań Twojej miejscowości.
            </div>
            <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-loc-btn-massive">
                ZAMÓW PROJEKT DO SWOJEGO DOMU
                <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>
document.addEventListener('DOMContentLoaded', function() {
    var searchInput = document.getElementById('rkCityInput');
    var suggestionsBox = document.getElementById('rkCitySuggestions');
    var dashboard = document.getElementById('rkCityDashboard');
    
    // Pola wynikowe
    var elCityName = document.getElementById('resCityName');
    var elZoneTemp = document.getElementById('resZoneTemp');
    var elOzc = document.getElementById('resOzc');
    var elSpacing = document.getElementById('resSpacing');
    var elSpacingDesc = document.getElementById('resSpacingDesc');
    var elFlowTemp = document.getElementById('resFlowTemp');

    // Wzorcowe pakiety opisów dla stref (żeby nie duplikować długich tekstów)
    var txtStrefa1 = { zone: "Strefa I", temp: "-16 st. C", ozc: "6.1 kW", spacing: "co 15 cm", spacingDesc: "Komfortowy rozstaw zapewniający optymalne zyski ciepła przy łagodnej zimie.", flow: "33 st. C" };
    var txtStrefa2 = { zone: "Strefa II", temp: "-18 st. C", ozc: "6.5 kW", spacing: "co 15 cm", spacingDesc: "Standardowy skok rur z obowiązkowym zagęszczeniem brzegowym.", flow: "34 st. C" };
    var txtStrefa3 = { zone: "Strefa III", temp: "-20 st. C", ozc: "6.8 kW", spacing: "10 do 15 cm", spacingDesc: "Wymagane precyzyjne przeliczenie oporów przez projektanta na bazie OZC.", flow: "36 st. C" };
    var txtStrefa4 = { zone: "Strefa IV", temp: "-22 st. C", ozc: "7.3 kW", spacing: "co 10 cm", spacingDesc: "Zalecane silne zagęszczenie pętli na całej płaszczyźnie posadzki.", flow: "38 st. C" };
    var txtStrefa5 = { zone: "Strefa V", temp: "-24 st. C", ozc: "8.0 kW", spacing: "10 cm / 7.5 cm", spacingDesc: "Ekstremalne warunki. Bardzo gęste strefy brzegowe to absolutny wymóg normowy.", flow: "41 st. C" };

    // Rozbudowana baza danych miast (Bez zakazanych znaków)
    var cityData = {
        // Strefa I
        "szczecin": { name: "Szczecin", data: txtStrefa1 },
        "gdansk": { name: "Gdańsk", data: txtStrefa1 },
        "gdynia": { name: "Gdynia", data: txtStrefa1 },
        "sopot": { name: "Sopot", data: txtStrefa1 },
        "koszalin": { name: "Koszalin", data: txtStrefa1 },
        "swinoujscie": { name: "Świnoujście", data: txtStrefa1 },
        "kolobrzeg": { name: "Kołobrzeg", data: txtStrefa1 },
        "slupsk": { name: "Słupsk", data: txtStrefa1 },
        "wejherowo": { name: "Wejherowo", data: txtStrefa1 },
        "tczew": { name: "Tczew", data: txtStrefa1 },
        "starogard gdanski": { name: "Starogard Gdański", data: txtStrefa1 },
        "rumia": { name: "Rumia", data: txtStrefa1 },
        "lebork": { name: "Lębork", data: txtStrefa1 },
        "police": { name: "Police", data: txtStrefa1 },
        "goleniow": { name: "Goleniów", data: txtStrefa1 },
        "gryfice": { name: "Gryfice", data: txtStrefa1 },
        
        // Strefa II
        "poznan": { name: "Poznań", data: txtStrefa2 },
        "wroclaw": { name: "Wrocław", data: txtStrefa2 },
        "zielona gora": { name: "Zielona Góra", data: txtStrefa2 },
        "gorzow wielkopolski": { name: "Gorzów Wielkopolski", data: txtStrefa2 },
        "leszno": { name: "Leszno", data: txtStrefa2 },
        "opole": { name: "Opole", data: txtStrefa2 },
        "legnica": { name: "Legnica", data: txtStrefa2 },
        "pila": { name: "Piła", data: txtStrefa2 },
        "gniezno": { name: "Gniezno", data: txtStrefa2 },
        "kalisz": { name: "Kalisz", data: txtStrefa2 },
        "konin": { name: "Konin", data: txtStrefa2 },
        "ostrow wielkopolski": { name: "Ostrów Wielkopolski", data: txtStrefa2 },
        "lubin": { name: "Lubin", data: txtStrefa2 },
        "glogow": { name: "Głogów", data: txtStrefa2 },
        "swidnica": { name: "Świdnica", data: txtStrefa2 },
        "walbrzych": { name: "Wałbrzych", data: txtStrefa2 },
        "nowa sol": { name: "Nowa Sól", data: txtStrefa2 },
        "zary": { name: "Żary", data: txtStrefa2 },
        "boleslawiec": { name: "Bolesławiec", data: txtStrefa2 },
        "krotoszyn": { name: "Krotoszyn", data: txtStrefa2 },
        "nysa": { name: "Nysa", data: txtStrefa2 },
        "brzeg": { name: "Brzeg", data: txtStrefa2 },
        "kedzierzyn-kozle": { name: "Kędzierzyn-Koźle", data: txtStrefa2 },

        // Strefa III
        "warszawa": { name: "Warszawa", data: txtStrefa3 },
        "krakow": { name: "Kraków", data: txtStrefa3 },
        "lodz": { name: "Łódź", data: txtStrefa3 },
        "rzeszow": { name: "Rzeszów", data: txtStrefa3 },
        "debica": { name: "Dębica", data: txtStrefa3 },
        "katowice": { name: "Katowice", data: txtStrefa3 },
        "lublin": { name: "Lublin", data: txtStrefa3 },
        "tarnow": { name: "Tarnów", data: txtStrefa3 },
        "kielce": { name: "Kielce", data: txtStrefa3 },
        "radom": { name: "Radom", data: txtStrefa3 },
        "czestochowa": { name: "Częstochowa", data: txtStrefa3 },
        "torun": { name: "Toruń", data: txtStrefa3 },
        "bydgoszcz": { name: "Bydgoszcz", data: txtStrefa3 },
        "plock": { name: "Płock", data: txtStrefa3 },
        "przemysl": { name: "Przemyśl", data: txtStrefa3 },
        "krosno": { name: "Krosno", data: txtStrefa3 },
        "wloclawek": { name: "Włocławek", data: txtStrefa3 },
        "grudziadz": { name: "Grudziądz", data: txtStrefa3 },
        "inowroclaw": { name: "Inowrocław", data: txtStrefa3 },
        "tarnobrzeg": { name: "Tarnobrzeg", data: txtStrefa3 },
        "mielec": { name: "Mielec", data: txtStrefa3 },
        "stalowa wola": { name: "Stalowa Wola", data: txtStrefa3 },
        "jaroslaw": { name: "Jarosław", data: txtStrefa3 },
        "sanok": { name: "Sanok", data: txtStrefa3 },
        "jaslo": { name: "Jasło", data: txtStrefa3 },
        "bielsko-biala": { name: "Bielsko-Biała", data: txtStrefa3 },
        "gliwice": { name: "Gliwice", data: txtStrefa3 },
        "zabrze": { name: "Zabrze", data: txtStrefa3 },
        "bytom": { name: "Bytom", data: txtStrefa3 },
        "sosnowiec": { name: "Sosnowiec", data: txtStrefa3 },
        "tychy": { name: "Tychy", data: txtStrefa3 },
        "rybnik": { name: "Rybnik", data: txtStrefa3 },
        "dabrowa gornicza": { name: "Dąbrowa Górnicza", data: txtStrefa3 },
        "chorzow": { name: "Chorzów", data: txtStrefa3 },
        "jaworzno": { name: "Jaworzno", data: txtStrefa3 },
        "piotrkow trybunalski": { name: "Piotrków Trybunalski", data: txtStrefa3 },
        "skierniewice": { name: "Skierniewice", data: txtStrefa3 },
        "pulawy": { name: "Puławy", data: txtStrefa3 },
        "swidnik": { name: "Świdnik", data: txtStrefa3 },
        "krasnik": { name: "Kraśnik", data: txtStrefa3 },
        "dabrowa tarnowska": { name: "Dąbrowa Tarnowska", data: txtStrefa3 },
        "bochnia": { name: "Bochnia", data: txtStrefa3 },
        "brzesko": { name: "Brzesko", data: txtStrefa3 },
        "wadowice": { name: "Wadowice", data: txtStrefa3 },
        "oswiecim": { name: "Oświęcim", data: txtStrefa3 },
        "grodzisk mazowiecki": { name: "Grodzisk Mazowiecki", data: txtStrefa3 },
        "piaseczno": { name: "Piaseczno", data: txtStrefa3 },
        "pruszkow": { name: "Pruszków", data: txtStrefa3 },
        "legionowo": { name: "Legionowo", data: txtStrefa3 },

        // Strefa IV
        "bialystok": { name: "Białystok", data: txtStrefa4 },
        "olsztyn": { name: "Olsztyn", data: txtStrefa4 },
        "ostroleka": { name: "Ostrołęka", data: txtStrefa4 },
        "siedlce": { name: "Siedlce", data: txtStrefa4 },
        "zamosc": { name: "Zamość", data: txtStrefa4 },
        "lomza": { name: "Łomża", data: txtStrefa4 },
        "elblag": { name: "Elbląg", data: txtStrefa4 },
        "elk": { name: "Ełk", data: txtStrefa4 },
        "gizycko": { name: "Giżycko", data: txtStrefa4 },
        "ketrzyn": { name: "Kętrzyn", data: txtStrefa4 },
        "mragowo": { name: "Mrągowo", data: txtStrefa4 },
        "szczytno": { name: "Szczytno", data: txtStrefa4 },
        "bartoszyce": { name: "Bartoszyce", data: txtStrefa4 },
        "bielsk podlaski": { name: "Bielsk Podlaski", data: txtStrefa4 },
        "hajnowka": { name: "Hajnówka", data: txtStrefa4 },
        "sokolka": { name: "Sokółka", data: txtStrefa4 },
        "augustow": { name: "Augustów", data: txtStrefa4 },
        "biala podlaska": { name: "Biała Podlaska", data: txtStrefa4 },
        "chelm": { name: "Chełm", data: txtStrefa4 },
        "hrubieszow": { name: "Hrubieszów", data: txtStrefa4 },
        "tomaszow lubelski": { name: "Tomaszów Lubelski", data: txtStrefa4 },

        // Strefa V
        "suwalki": { name: "Suwałki", data: txtStrefa5 },
        "zakopane": { name: "Zakopane", data: txtStrefa5 },
        "nowy targ": { name: "Nowy Targ", data: txtStrefa5 },
        "zywiec": { name: "Żywiec", data: txtStrefa5 },
        "karpacz": { name: "Karpacz", data: txtStrefa5 },
        "krynica-zdroj": { name: "Krynica-Zdrój", data: txtStrefa5 },
        "szklarska poreba": { name: "Szklarska Poręba", data: txtStrefa5 },
        "wisla": { name: "Wisła", data: txtStrefa5 },
        "ustron": { name: "Ustroń", data: txtStrefa5 },
        "szczyrk": { name: "Szczyrk", data: txtStrefa5 },
        "rabka-zdroj": { name: "Rabka-Zdrój", data: txtStrefa5 },
        "limanowa": { name: "Limanowa", data: txtStrefa5 },
        "sucha beskidzka": { name: "Sucha Beskidzka", data: txtStrefa5 },
        "gorlice": { name: "Gorlice", data: txtStrefa5 },
        "nowy sacz": { name: "Nowy Sącz", data: txtStrefa5 },
        "sejny": { name: "Sejny", data: txtStrefa5 },
        "olecko": { name: "Olecko", data: txtStrefa5 },
        "goldap": { name: "Gołdap", data: txtStrefa5 }
    };

    // Silnik autouzupełniania (bez znaków logicznych typu AND/OR)
    searchInput.addEventListener('input', function() {
        var val = this.value.toLowerCase();
        suggestionsBox.innerHTML = '';
        
        if (val === '') {
            suggestionsBox.style.display = 'none';
        } else {
            var hasMatches = false;
            
            for (var key in cityData) {
                var cityName = cityData[key].name;
                var matchIndex = cityName.toLowerCase().indexOf(val);
                
                if (matchIndex > -1) {
                    hasMatches = true;
                    var div = document.createElement('div');
                    div.className = 'rk-loc-suggestion-item';
                    div.innerText = cityName;
                    
                    div.setAttribute('data-key', key);
                    
                    div.addEventListener('click', function() {
                        var clickedKey = this.getAttribute('data-key');
                        showDashboard(clickedKey);
                    });
                    
                    suggestionsBox.appendChild(div);
                }
            }
            
            if (hasMatches === true) {
                suggestionsBox.style.display = 'block';
            } else {
                suggestionsBox.style.display = 'none';
            }
        }
    });

    // Funkcja aktualizująca dashboard po wybraniu miasta
    function showDashboard(cityKey) {
        var city = cityData[cityKey];
        var data = city.data;
        
        if (city !== undefined) {
            searchInput.value = city.name;
            suggestionsBox.style.display = 'none';
            
            elCityName.innerText = "Twoja lokalizacja: " + city.name;
            elZoneTemp.innerText = data.zone + " (" + data.temp + ")";
            elOzc.innerText = data.ozc;
            elSpacing.innerText = data.spacing;
            elSpacingDesc.innerText = data.spacingDesc;
            elFlowTemp.innerText = data.flow;

            dashboard.classList.remove('active');
            void dashboard.offsetWidth; 
            dashboard.classList.add('active');
        }
    }

    document.addEventListener('click', function(e) {
        if (e.target !== searchInput) {
            suggestionsBox.style.display = 'none';
        }
    });
});
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-blue: #0284c7;
    --rk-faq-bg-light: #f8fafc;
    --rk-faq-border: #cbd5e1;
    --rk-faq-text: #334155;
    --rk-faq-accent: #e0f2fe;
}

.rk-faq-container {
    max-width: 900px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 10px 30px -10px rgba(2, 132, 199, 0.1);
    border: 1px solid var(--rk-faq-accent);
    overflow: hidden;
}

.rk-faq-header {
    background: linear-gradient(to right, var(--rk-faq-dark), #1e293b);
    padding: 40px 45px;
    text-align: left;
    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 0 10px 0;
    line-height: 1.3;
}

.rk-faq-header p {
    color: #94a3b8;
    font-size: 15px;
    margin: 0;
}

.rk-faq-wrapper {
    padding: 30px 45px 45px;
    background: var(--rk-faq-bg-light);
}

.rk-faq-item {
    margin-bottom: 15px;
    background: #ffffff;
    border: 1px solid var(--rk-faq-border);
    border-radius: 16px;
    overflow: hidden;
    transition: box-shadow 0.3s ease, border-color 0.3s ease;
}

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

.rk-faq-trigger {
    width: 100%;
    padding: 25px 30px;
    background: transparent;
    border: none;
    display: flex;
    align-items: center;
    justify-content: space-between;
    cursor: pointer;
    text-align: left;
    transition: background 0.3s ease;
}

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

.rk-faq-trigger h3 {
    font-size: 17px;
    font-weight: 700;
    color: var(--rk-faq-dark);
    margin: 0;
    padding-right: 20px;
    line-height: 1.4;
}

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

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

.rk-faq-content {
    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-content {
    grid-template-rows: 1fr;
}

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

.rk-faq-text {
    padding: 0 30px 25px 30px;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-faq-text);
}

.rk-faq-text a {
    color: var(--rk-faq-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-faq-blue);
    transition: color 0.2s, border-color 0.2s;
}

.rk-faq-text a:hover {
    color: var(--rk-faq-dark);
    border-color: var(--rk-faq-dark);
}

@media (max-width: 768px) {
    .rk-faq-header, .rk-faq-wrapper { padding: 25px 20px; }
    .rk-faq-trigger { padding: 20px; }
    .rk-faq-text { padding: 0 20px 20px 20px; }
    .rk-faq-trigger h3 { font-size: 15px; }
}
</style>

<!-- Zaawansowana Warstwa Danych (JSON-LD) - Article + FAQPage + Dataset + WebApplication -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/"
    },
    "headline": "Najczęściej zadawane pytania (FAQ) - Strefy Klimatyczne a Ogrzewanie Podłogowe",
    "description": "Zbiór najważniejszych technicznych pytań i odpowiedzi dotyczących stref klimatycznych w Polsce i ich wpływu na obliczenia OZC oraz parametry podłogówki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/", 
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-08-01",
    "dateModified": "2026-08-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Ile dokładnie stref klimatycznych wyróżnia się w Polsce w normach budowlanych?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "W Polsce wyróżnia się dokładnie 5 stref klimatycznych (od I do V), które definiują projektowe temperatury zewnętrzne od -16 st. C do -24 st. C."
        }
      },
      {
        "@type": "Question",
        "name": "Jaką temperaturę zewnętrzną przyjmuje się dla II strefy klimatycznej?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Dla II strefy klimatycznej projektowa temperatura zewnętrzna wynosi -18 st. C, co obejmuje m.in. niziny zachodnie i centralno-zachodnie, takie jak Poznań czy Wrocław."
        }
      },
      {
        "@type": "Question",
        "name": "Czy strefa klimatyczna wpływa na wybór mocy pompy ciepła?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, strefa klimatyczna bezpośrednio decyduje o obliczeniowym zapotrzebowaniu na ciepło OZC, co wymusza dobór pompy o odpowiedniej mocy szczytowej i punkcie bivalencji."
        }
      },
      {
        "@type": "Question",
        "name": "Gdzie zakwalifikowane jest Podkarpacie w podziale na strefy klimatyczne?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Podkarpacie w zależności od lokalizacji nizinnej najczęściej kwalifikuje się do III strefy klimatycznej z temperaturą -20 st. C, jednak tereny podwyższone wymagają zaostrzenia parametrów."
        }
      },
      {
        "@type": "Question",
        "name": "Czy ogrzewanie podłogowe w V strefie klimatycznej wymaga gęstszego układania rur?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, wyższe straty ciepła w strefie V (np. Suwałki, Zakopane) wymagają większej gęstości strumienia cieplnego, co wymusza zagęszczenie skoku rur do 10 cm lub mniej."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#dataset-faq",
    "name": "Zestawienie parametrów normatywnych i odpowiedzi dla stref klimatycznych",
    "description": "Baza wiedzy Q&A zawierająca interpretacje norm budowlanych w kontekście doboru parametrów hydraulicznych podłogówki.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "podział Polski na strefy klimatyczne",
      "jak dobrać moc pompy ciepła strefa",
      "temperatura obliczeniowa dla Poznania",
      "rozstaw rur podłogówki na Suwalszczyźnie",
      "normy klimatyczne a projekt ogrzewania"
    ],
    "measurementTechnique": "Ekstrakcja wytycznych z PN-EN 12831 w formie szybkich inżynierskich pytań i odpowiedzi.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Definicje temperatur dla 5 stref klimatycznych.",
        "Korelacja OZC z punktem bivalencji urządzeń grzewczych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#webapp-faq",
    "name": "Interaktywny Panel FAQ Stref Klimatycznych",
    "description": "Dynamiczny komponent przeglądarkowy usprawniający nawigację po najczęstszych problemach instalatorskich związanych z rejonizacją klimatyczną.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-faq-container" id="rkStrefyFaq">
    <div class="rk-faq-header">
        <h2>Szybkie Q&A Inwestora</h2>
        <p>Błyskawiczne odpowiedzi na najczęstsze wątpliwości dotyczące doboru parametrów budynku do warunków zewnętrznych.</p>
    </div>

    <div class="rk-faq-wrapper">
        
        <div class="rk-faq-item">
            <button class="rk-faq-trigger" type="button">
                <h3>Ile dokładnie stref klimatycznych wyróżnia się w Polsce w normach budowlanych?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-content">
                <div class="rk-faq-inner">
                    <div class="rk-faq-text">
                        W Polsce wyróżnia się dokładnie <strong>5 stref klimatycznych</strong> (od I do V), które definiują projektowe temperatury zewnętrzne od -16 st. C do -24 st. C. To fundament wszelkich późniejszych obliczeń zapotrzebowania cieplnego budynku.
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-trigger" type="button">
                <h3>Jaką temperaturę zewnętrzną przyjmuje się dla II strefy klimatycznej?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-content">
                <div class="rk-faq-inner">
                    <div class="rk-faq-text">
                        Dla II strefy klimatycznej projektowa temperatura zewnętrzna wynosi dokładnie <strong>-18 st. C</strong>. Obejmuje ona między innymi niziny zachodnie i centralno-zachodnie, takie jak rozległe obszary wokół Poznania czy Wrocławia.
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-trigger" type="button">
                <h3>Czy strefa klimatyczna wpływa na wybór mocy pompy ciepła?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-content">
                <div class="rk-faq-inner">
                    <div class="rk-faq-text">
                        Tak, strefa klimatyczna bezpośrednio decyduje o obliczeniowym zapotrzebowaniu na ciepło OZC, co wymusza na projektancie dobór <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a> o odpowiedniej mocy szczytowej i bezbłędne wyznaczenie punktu bivalencji.
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-trigger" type="button">
                <h3>Gdzie zakwalifikowane jest Podkarpacie w podziale na strefy klimatyczne?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-content">
                <div class="rk-faq-inner">
                    <div class="rk-faq-text">
                        Podkarpacie, w zależności od lokalizacji nizinnej, najczęściej kwalifikuje się do <strong>III strefy klimatycznej</strong> z temperaturą -20 st. C. Jednakże warto zaznaczyć, że tereny podwyższone i specyficzne wzniesienia zmuszają projektanta do zaostrzenia parametrów wejściowych.
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-trigger" type="button">
                <h3>Czy ogrzewanie podłogowe w V strefie klimatycznej wymaga gęstszego układania rur?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-content">
                <div class="rk-faq-inner">
                    <div class="rk-faq-text">
                        Tak, wyższe straty ciepła w skrajnej strefie V (np. Suwałki, Zakopane) wymagają dużo większej gęstości strumienia cieplnego. To wymusza bezpośrednio gęstszy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur w ogrzewaniu podłogowym</a>, najczęściej do 10 cm, a w strefach brzegowych nawet mniej.
                    </div>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var triggers = document.querySelectorAll('.rk-faq-trigger');
    
    for (var i = 0; i < triggers.length; i++) {
        triggers[i].addEventListener('click', function() {
            var parentItem = this.parentElement;
            var isCurrentlyActive = parentItem.classList.contains('active');
            var allItems = document.querySelectorAll('.rk-faq-item');
            
            // Zwijanie wszystkich otwartych kart - bezpieczny kod bez znaków zakazanych
            for (var j = 0; j < allItems.length; j++) {
                allItems[j].classList.remove('active');
            }
            
            // Otwieranie klikniętej karty, o ile nie była wcześniej otwarta
            if (isCurrentlyActive === false) {
                parentItem.classList.add('active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-blue: #0284c7;
    --rk-dl-sky: #e0f2fe;
    --rk-dl-cyan: #06b6d4;
    --rk-dl-gray: #64748b;
    --rk-dl-bg: #f8fafc;
    --rk-dl-border: #cbd5e1;
    --rk-dl-text: #334155;
}

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

/* Nagłówek sekcji */
.rk-dl-header {
    background: var(--rk-dl-dark);
    padding: 35px 45px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-dl-blue);
}

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

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

/* Układ główny */
.rk-dl-body {
    display: grid;
    grid-template-columns: 320px 1fr;
    background: var(--rk-dl-bg);
}

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

.rk-dl-thumbnail-wrapper {
    width: 100%;
    position: relative;
    border: 4px solid var(--rk-dl-sky);
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 4px 15px rgba(0,0,0,0.05);
    background: #f1f5f9;
}

.rk-dl-thumbnail {
    width: 100%;
    height: auto;
    display: block;
}

.rk-dl-thumbnail-overlay {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    background: rgba(15, 23, 42, 0.85);
    color: #ffffff;
    font-size: 12px;
    font-weight: 800;
    text-align: center;
    padding: 8px 0;
    text-transform: uppercase;
    letter-spacing: 1px;
}

/* Prawa strona - Akcje i opisy */
.rk-dl-actions-box {
    padding: 40px;
}

.rk-dl-actions-box h3 {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-dl-dark);
    margin: 0 0 25px 0;
    text-transform: uppercase;
}

.rk-dl-buttons-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 15px;
    margin-bottom: 35px;
}

/* Przyciski (bez animacji) */
.rk-dl-btn {
    display: flex;
    align-items: center;
    gap: 15px;
    width: 100%;
    padding: 20px 25px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 800;
    cursor: pointer;
    text-decoration: none;
    border: none;
}

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

.rk-dl-btn-primary:hover {
    background: var(--rk-dl-cyan);
    border-color: var(--rk-dl-cyan);
}

.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);
    background: var(--rk-dl-sky);
}

.rk-dl-icon-container {
    width: 40px;
    height: 40px;
    background: rgba(255, 255, 255, 0.2);
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.rk-dl-btn-secondary .rk-dl-icon-container {
    background: var(--rk-dl-sky);
    color: var(--rk-dl-blue);
}

.rk-dl-btn-text {
    text-align: left;
}

.rk-dl-btn-title {
    display: block;
    font-size: 16px;
    margin-bottom: 3px;
}

.rk-dl-btn-sub {
    display: block;
    font-size: 12px;
    font-weight: 600;
    opacity: 0.85;
}

.rk-dl-btn-secondary .rk-dl-btn-sub {
    color: var(--rk-dl-gray);
}

/* Stopka z prawami autorskimi */
.rk-dl-copyright {
    background: #f1f5f9;
    padding: 20px;
    border-left: 4px solid var(--rk-dl-gray);
    font-size: 13px;
    line-height: 1.6;
    color: var(--rk-dl-text);
    border-radius: 0 8px 8px 0;
}

.rk-dl-copyright strong {
    color: var(--rk-dl-dark);
}

/* Modal do podglądu obrazka (bez animacji) */
.rk-dl-modal {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(15, 23, 42, 0.95);
    z-index: 9999;
    justify-content: center;
    align-items: center;
    padding: 20px;
    box-sizing: border-box;
}

.rk-dl-modal.active {
    display: flex;
}

.rk-dl-modal-content {
    position: relative;
    max-width: 900px;
    width: 100%;
    max-height: 90vh;
    background: #ffffff;
    border-radius: 12px;
    padding: 10px;
    display: flex;
    flex-direction: column;
}

.rk-dl-modal-close {
    position: absolute;
    top: -40px;
    right: 0;
    background: transparent;
    border: none;
    color: #ffffff;
    font-size: 16px;
    font-weight: 800;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-dl-modal-img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    border-radius: 8px;
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-dl-body { grid-template-columns: 1fr; }
    .rk-dl-header { padding: 30px 20px; text-align: left; }
    .rk-dl-header h2 { font-size: 24px; }
    .rk-dl-preview-box { border-right: none; border-bottom: 1px solid var(--rk-dl-border); padding: 30px 20px; }
    .rk-dl-actions-box { padding: 30px 20px; }
    .rk-dl-btn { flex-direction: column; text-align: center; padding: 25px 20px; }
    .rk-dl-btn-text { text-align: center; }
    .rk-dl-thumbnail-wrapper { max-width: 320px; margin: 0 auto; }
}
</style>

<!-- Invisible Data JSON-LD -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#article-materialy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/"
    },
    "headline": "Pobierz darmowe materiały: Infografika stref klimatycznych i OZC",
    "description": "Zestawienie wizualne i techniczne wytycznych dotyczących wpływu stref klimatycznych na projekty ogrzewania podłogowego. Pobierz plik PDF lub przeglądaj infografikę online.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/08/Infografika-Strefy-klimatyczne-w-Polsce-a-ogrzewanie-podlogowe-i-OZC.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-08-01",
    "dateModified": "2026-08-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#dataset-materialy",
    "name": "Infografika normatywna: Strefy klimatyczne a instalacje grzewcze",
    "description": "Wizualne opracowanie danych inżynieryjnych łączących podział terytorialny kraju z wymogami projektowymi dla pomp ciepła i ogrzewania płaszczyznowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika strefy klimatyczne pdf",
      "mapa temperatur obliczeniowych do pobrania",
      "materiały dla instalatorów hvac",
      "ogrzewanie podłogowe zasady projektowania grafika",
      "ozc podsumowanie wizualne"
    ],
    "measurementTechnique": "Prezentacja wizualna norm PN-82/B-02403 oraz PN-EN 12831 w formie interaktywnego dokumentu PDF.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wizualizacja podziału Polski na 5 stref temperaturowych.",
        "Zestawienie najważniejszych różnic w stratach ciepła i doborze pomp obiegowych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#webapp-materialy",
    "name": "Panel Dystrybucji Materiałów Technicznych",
    "description": "Interaktywny moduł umożliwiający bezpośredni podgląd oraz bezpieczne pobranie zautoryzowanych plików graficznych i PDF z zachowaniem praw autorskich inżyniera.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-dl-container" id="rkDownloadCenter">
    
    <!-- Nagłówek -->
    <div class="rk-dl-header">
        <h2>Pobierz darmowe materiały: Infografika stref klimatycznych i OZC</h2>
        <p>Przygotowałem dla Ciebie czytelne podsumowanie najważniejszych norm w formie wizualnej. Pobierz, wydrukuj i miej zawsze pod ręką podczas planowania budowy.</p>
    </div>

    <div class="rk-dl-body">
        
        <!-- Podgląd Miniatury -->
        <div class="rk-dl-preview-box">
            <div class="rk-dl-thumbnail-wrapper">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/08/Infografika-Strefy-klimatyczne-w-Polsce-a-ogrzewanie-podlogowe-i-OZC.webp" alt="Podgląd Infografiki - Strefy Klimatyczne" class="rk-dl-thumbnail" loading="lazy">
                <div class="rk-dl-thumbnail-overlay">Podgląd dokumentu</div>
            </div>
        </div>

        <!-- Akcje i Przyciski -->
        <div class="rk-dl-actions-box">
            <h3>Wybierz format materiału</h3>
            
            <div class="rk-dl-buttons-grid">
                
                <!-- Przycisk PDF -->
                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/08/Infografika-Strefy-klimatyczne-w-Polsce-a-ogrzewanie-podlogowe-i-OZC.pdf" target="_blank" rel="noopener noreferrer" class="rk-dl-btn rk-dl-btn-primary">
                    <div class="rk-dl-icon-container">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="12" y1="18" x2="12" y2="12"></line><polyline points="9 15 12 18 15 15"></polyline></svg>
                    </div>
                    <div class="rk-dl-btn-text">
                        <span class="rk-dl-btn-title">Pobierz plik PDF</span>
                        <span class="rk-dl-btn-sub">Wysoka jakość do druku (Otwiera się w nowym oknie)</span>
                    </div>
                </a>

                <!-- Przycisk Podglądu Zdjęcia -->
                <button type="button" class="rk-dl-btn rk-dl-btn-secondary" id="rkBtnPreviewImg">
                    <div class="rk-dl-icon-container">
                        <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><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline></svg>
                    </div>
                    <div class="rk-dl-btn-text">
                        <span class="rk-dl-btn-title">Wyświetl na ekranie (WEBP)</span>
                        <span class="rk-dl-btn-sub">Szybki podgląd grafiki bezpośrednio na stronie</span>
                    </div>
                </button>

            </div>

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

        </div>

    </div>
</div>

<!-- Modal do wyświetlenia zdjęcia na pełnym ekranie (BEZ animacji) -->
<div class="rk-dl-modal" id="rkImageModal">
    <div class="rk-dl-modal-content">
        <button class="rk-dl-modal-close" id="rkBtnCloseModal">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" 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>
            ZAMKNIJ
        </button>
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/08/Infografika-Strefy-klimatyczne-w-Polsce-a-ogrzewanie-podlogowe-i-OZC.webp" alt="Pełnowymiarowa Infografika" class="rk-dl-modal-img" loading="lazy">
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btnOpen = document.getElementById('rkBtnPreviewImg');
    var btnClose = document.getElementById('rkBtnCloseModal');
    var modal = document.getElementById('rkImageModal');

    // Funkcja otwierająca modal (natychmiastowe pokazanie elementu)
    btnOpen.addEventListener('click', function(e) {
        e.preventDefault();
        modal.classList.add('active');
    });

    // Funkcja zamykająca modal kliknięciem w przycisk
    btnClose.addEventListener('click', function() {
        modal.classList.remove('active');
    });

    // Zamykanie modalu kliknięciem w ciemne tło (bezpieczny warunek bez uzycia &&)
    modal.addEventListener('click', function(e) {
        if (e.target === modal) {
            modal.classList.remove('active');
        }
    });
});
</script>



<style>
:root {
    --rk-klimat-dark: #1e293b;
    --rk-klimat-blue: #0369a1;
    --rk-klimat-light-blue: #f0f9ff;
    --rk-klimat-green: #059669;
    --rk-klimat-green-light: #ecfdf5;
    --rk-klimat-red: #dc2626;
    --rk-klimat-red-light: #fef2f2;
    --rk-klimat-gold: #d97706;
    --rk-klimat-gray: #64748b;
    --rk-klimat-border: #e2e8f0;
    --rk-klimat-bg: #ffffff;
}

.rk-klimat-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-klimat-bg);
    border-radius: 20px;
    box-shadow: 0 20px 40px -10px rgba(3, 105, 161, 0.1);
    border: 1px solid var(--rk-klimat-border);
    overflow: hidden;
}

/* Nagłówek Sekcji */
.rk-klimat-header {
    padding: 40px 45px 30px;
    background: var(--rk-klimat-light-blue);
    border-bottom: 2px solid var(--rk-klimat-border);
    text-align: center;
}

.rk-klimat-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #bae6fd;
    color: #0284c7;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
}

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

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

/* Interaktywny Moduł - Zero animacji, czysta funkcjonalność */
.rk-klimat-interactive {
    padding: 40px 45px;
    background: #f8fafc;
}

.rk-klimat-interactive h3 {
    text-align: center;
    font-size: 20px;
    color: var(--rk-klimat-dark);
    margin-top: 0;
    margin-bottom: 30px;
}

.rk-klimat-controls {
    display: flex;
    gap: 20px;
    margin-bottom: 30px;
}

.rk-klimat-btn {
    flex: 1;
    padding: 20px;
    border-radius: 12px;
    border: 2px solid var(--rk-klimat-border);
    background: #ffffff;
    cursor: pointer;
    text-align: left;
    display: flex;
    align-items: center;
    gap: 15px;
    transition: background 0.2s, border-color 0.2s;
}

.rk-klimat-btn:hover {
    background: #f1f5f9;
}

.rk-klimat-btn.active-pro {
    background: var(--rk-klimat-green-light);
    border-color: var(--rk-klimat-green);
}

.rk-klimat-btn.active-error {
    background: var(--rk-klimat-red-light);
    border-color: var(--rk-klimat-red);
}

.rk-klimat-icon {
    width: 40px;
    height: 40px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #e2e8f0;
    color: #475569;
}

.active-pro .rk-klimat-icon { background: var(--rk-klimat-green); color: #fff; }
.active-error .rk-klimat-icon { background: var(--rk-klimat-red); color: #fff; }

.rk-btn-text h4 { margin: 0 0 5px 0; font-size: 16px; font-weight: 800; color: var(--rk-klimat-dark); }
.rk-btn-text p { margin: 0; font-size: 13px; color: var(--rk-klimat-gray); }

/* Wyniki */
.rk-klimat-result-box {
    background: #ffffff;
    border: 1px solid var(--rk-klimat-border);
    border-radius: 16px;
    padding: 30px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
}

.rk-klimat-metric {
    padding-bottom: 15px;
    border-bottom: 1px solid #f1f5f9;
}

.rk-klimat-metric:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.rk-klimat-metric-label {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 700;
    color: var(--rk-klimat-gray);
    margin-bottom: 8px;
    display: block;
}

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

.rk-klimat-metric-desc {
    font-size: 14px;
    color: #64748b;
    margin-top: 5px;
}

.val-good { color: var(--rk-klimat-green); }
.val-bad { color: var(--rk-klimat-red); }

/* Tagi Długi Ogon */
.rk-klimat-tags-container {
    padding: 20px 45px;
    background: #ffffff;
    border-top: 1px solid var(--rk-klimat-border);
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: center;
}

.rk-mat-tag {
    display: inline-block;
    padding: 6px 14px;
    background: #f8fafc;
    border: 1px solid #cbd5e1;
    color: #475569;
    font-size: 12px;
    border-radius: 6px;
    font-weight: 600;
}

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

.rk-klimat-cta h3 {
    color: #ffffff;
    font-size: 22px;
    margin: 0 0 15px 0;
}

.rk-klimat-cta p {
    color: #94a3b8;
    margin: 0 auto 25px auto;
    font-size: 15px;
    max-width: 600px;
}

.rk-btn-massive {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-klimat-blue);
    color: #ffffff;
    font-size: 16px;
    font-weight: 800;
    padding: 18px 36px;
    border-radius: 12px;
    text-decoration: none;
    text-transform: uppercase;
}

@media (max-width: 768px) {
    .rk-klimat-header, .rk-klimat-interactive, .rk-klimat-cta, .rk-klimat-tags-container { padding: 30px 20px; }
    .rk-klimat-controls { flex-direction: column; gap: 15px; }
    .rk-klimat-result-box { grid-template-columns: 1fr; gap: 20px; }
    .rk-btn-massive { width: 100%; box-sizing: border-box; }
}
</style>

<!-- Niewidoczna Warstwa Danych (Invisible Data - JSON-LD) -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/"
    },
    "headline": "Podsumowanie: Błąd o jedną strefę klimatyczną to najdroższa pomyłka inwestora",
    "description": "Zestawienie parametrów technicznych i kosztów eksploatacji ogrzewania podłogowego w zależności od poprawnego przypisania budynku do strefy klimatycznej w Polsce wg normy PN-EN 12831.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/", 
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-08-01",
    "dateModified": "2026-08-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#dataset",
    "name": "Symulacja kosztów i parametrów: Strefa II vs Strefa V dla OZC",
    "description": "Zbiór danych inżynieryjnych porównujących wpływ stref klimatycznych na obliczeniowe zapotrzebowanie na ciepło (OZC), wydajność pompy ciepła oraz zużycie energii elektrycznej w sezonie grzewczym.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "strefy klimatyczne w Polsce mapa",
      "obliczenia OZC dla pompy ciepła",
      "jak obliczyć moc pompy ciepła strefy",
      "temperatura projektowa PN-EN 12831",
      "rozstaw rur a strefa klimatyczna"
    ],
    "measurementTechnique": "Kalkulacja strat ciepła wg PN-EN 12831 oraz symulacja poboru energii przez pompę ciepła w skrajnych warunkach temperaturowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przypadek Optymalny: Precyzyjne przypisanie budynku do V strefy klimatycznej, dobór źródła o mocy 9 kW, parametry pętli 10 cm.",
        "Przypadek Błędny: Zastosowanie projektu z II strefy dla budynku w V strefie, moc 6 kW, deficyt mocy, załączenie grzałek szczytowych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/#webapp",
    "name": "Kalkulator Skutków Błędnej Strefy Klimatycznej",
    "description": "Interaktywny widżet demonstracyjny pokazujący konsekwencje zastosowania uniwersalnego projektu (katalogowego) w trudniejszej strefie klimatycznej Polski.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-klimat-container" id="rkKlimatSummary">
    <div class="rk-klimat-header">
        <div class="rk-klimat-badge">WNIOSKI INŻYNIERSKIE</div>
        <h2>Podsumowanie: Błąd o jedną strefę klimatyczną to najdroższa pomyłka inwestora</h2>
        <p>Prawa fizyki nie wybaczają optymizmu. Wykorzystanie "uniwersalnego" gotowego projektu z łagodnej strefy klimatycznej w rejonie o surowych zimach zniszczy parametry Twojej pompy ciepła i zmusi ją do ciągłej pracy na najdroższych elektrycznych grzałkach wspomagających.</p>
    </div>

    <div class="rk-klimat-interactive">
        <h3>Symulator: Wpływ weryfikacji strefy klimatycznej na parametry domu</h3>
        
        <div class="rk-klimat-controls" id="klimatControls">
            <button class="rk-klimat-btn active-pro" data-klimat="pro">
                <div class="rk-klimat-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-btn-text">
                    <h4>Precyzyjny Projekt OZC</h4>
                    <p>Budynek dopasowany do V strefy klimatycznej (-24 st. C).</p>
                </div>
            </button>
            <button class="rk-klimat-btn" data-klimat="error">
                <div class="rk-klimat-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="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg>
                </div>
                <div class="rk-btn-text">
                    <h4>Gotowy Projekt "Katalogowy"</h4>
                    <p>Budynek w V strefie na bazie projektu z II strefy (-18 st. C).</p>
                </div>
            </button>
        </div>

        <div class="rk-klimat-result-box" id="klimatResultBox">
            <!-- Dynamiczna treść JS -->
            <div>
                <div class="rk-klimat-metric">
                    <span class="rk-klimat-metric-label">Zapotrzebowanie Mocy (OZC)</span>
                    <div class="rk-klimat-metric-val val-good">7.9 kW</div>
                    <div class="rk-klimat-metric-desc">Idealnie dobrana wielkość źródła ciepła dla skrajnych mrozów. Pompa pokrywa całe zapotrzebowanie.</div>
                </div>
                <div class="rk-klimat-metric" style="margin-top: 15px;">
                    <span class="rk-klimat-metric-label">Rozstaw rur w strefie dziennej</span>
                    <div class="rk-klimat-metric-val">co 10 cm</div>
                    <div class="rk-klimat-metric-desc">Zagęszczenie skoku kompensuje wyższe straty budynku przy zachowaniu chłodnej, zdrowej posadzki.</div>
                </div>
            </div>
            <div>
                <div class="rk-klimat-metric">
                    <span class="rk-klimat-metric-label">Rachunek za prąd (zima)</span>
                    <div class="rk-klimat-metric-val val-good">W normie / Niskie COP</div>
                    <div class="rk-klimat-metric-desc">Wysoki wskaźnik SCOP, sprężarka pracuje stabilnie i nie wymaga posiłkowania się potężnymi grzałkami.</div>
                </div>
                <div class="rk-klimat-metric" style="margin-top: 15px;">
                    <span class="rk-klimat-metric-label">Decyzja inżynierska</span>
                    <div class="rk-klimat-metric-desc">Sprawdź również <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/" style="color:var(--rk-klimat-blue); font-weight:700;">Kalkulator strat ciepła budynku</a> aby potwierdzić własne wyliczenia strefowe.</div>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-klimat-tags-container">
        <span class="rk-mat-tag"># strefy klimatyczne w Polsce mapa</span>
        <span class="rk-mat-tag"># obliczenia OZC dla pompy ciepła</span>
        <span class="rk-mat-tag"># temperatura projektowa PN-EN 12831</span>
        <span class="rk-mat-tag"># wpływ strefy klimatycznej na ogrzewanie</span>
        <span class="rk-mat-tag"># rozstaw rur a strefa klimatyczna</span>
        <span class="rk-mat-tag"># zapotrzebowanie energetyczne budynku strefa IV</span>
        <span class="rk-mat-tag"># dobór pompy ciepła a strefa klimatyczna</span>
        <span class="rk-mat-tag"># polski biegun zimna ogrzewanie podłogowe</span>
        <span class="rk-mat-tag"># straty cieplne normy budowlane</span>
        <span class="rk-mat-tag"># błędy w projekcie ogrzewania podłogowego</span>
    </div>

    <div class="rk-klimat-cta">
        <h3>Nie zgaduj. Licz zgodnie z normami.</h3>
        <p>Brak optymalizacji instalacji pod warunki klimatyczne to prosta droga do niedogrzanego domu i astronomicznych rachunków za prąd. Skorzystaj ze sprawdzonej wiedzy i darmowych poradników.</p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-massive">
            PRZEJDŹ DO BAZY WIEDZY I KALKULATORÓW
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var buttons = document.querySelectorAll('.rk-klimat-btn');
    var resultBox = document.getElementById('klimatResultBox');

    var data = {
        pro: `
            <div>
                <div class="rk-klimat-metric">
                    <span class="rk-klimat-metric-label">Zapotrzebowanie Mocy (OZC)</span>
                    <div class="rk-klimat-metric-val val-good">7.9 kW</div>
                    <div class="rk-klimat-metric-desc">Idealnie dobrana wielkość źródła ciepła dla skrajnych mrozów w V strefie. Pompa pokrywa całe zapotrzebowanie bez wysiłku.</div>
                </div>
                <div class="rk-klimat-metric" style="margin-top: 15px;">
                    <span class="rk-klimat-metric-label">Rozstaw rur w strefie dziennej</span>
                    <div class="rk-klimat-metric-val">co 10 cm</div>
                    <div class="rk-klimat-metric-desc">Zagęszczenie skoku do 10 cm kompensuje wyższe straty budynku przy zachowaniu chłodnej, zdrowej posadzki.</div>
                </div>
            </div>
            <div>
                <div class="rk-klimat-metric">
                    <span class="rk-klimat-metric-label">Rachunek za prąd (Zima)</span>
                    <div class="rk-klimat-metric-val val-good">Stabilny (Wysoki SCOP)</div>
                    <div class="rk-klimat-metric-desc">Temperatura zasilania utrzymana w ryzach. Sprężarka pracuje wydajnie, izolując Twój portfel od skoków cen prądu.</div>
                </div>
                <div class="rk-klimat-metric" style="margin-top: 15px;">
                    <span class="rk-klimat-metric-label">Decyzja inżynierska</span>
                    <div class="rk-klimat-metric-desc">Zanim wylejesz beton, zweryfikuj hydraulikę odwiedzając <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/" style="color:var(--rk-klimat-blue); font-weight:700;">Kalkulator doboru pompy obiegowej</a>.</div>
                </div>
            </div>
        `,
        error: `
            <div>
                <div class="rk-klimat-metric">
                    <span class="rk-klimat-metric-label">Zapotrzebowanie Mocy (OZC)</span>
                    <div class="rk-klimat-metric-val val-bad">6.1 kW (Błąd -18%)</div>
                    <div class="rk-klimat-metric-desc">Moc obliczona dla II strefy zamiast dla V. Brakuje niemal 2 kW mocy, gdy temperatura za oknem spadnie poniżej -15 st. C.</div>
                </div>
                <div class="rk-klimat-metric" style="margin-top: 15px;">
                    <span class="rk-klimat-metric-label">Rozstaw rur w strefie dziennej</span>
                    <div class="rk-klimat-metric-val val-bad">co 15 cm (Katalogowy)</div>
                    <div class="rk-klimat-metric-desc">Zbyt rzadkie ułożenie uniemożliwia oddanie odpowiedniej ilości ciepła bez drastycznego podniesienia temperatury wody.</div>
                </div>
            </div>
            <div>
                <div class="rk-klimat-metric">
                    <span class="rk-klimat-metric-label">Rachunek za prąd (Zima)</span>
                    <div class="rk-klimat-metric-val val-bad">+ 6000 PLN Rośnie!</div>
                    <div class="rk-klimat-metric-desc">Punkt bivalencji przesunięty. Do akcji wkraczają grzałki elektryczne 1:1, a niska temperatura posadzki wymusza pracę pompy na parametrze 45 stopni.</div>
                </div>
                <div class="rk-klimat-metric" style="margin-top: 15px;">
                    <span class="rk-klimat-metric-label">Ocena instalatora</span>
                    <div class="rk-klimat-metric-desc">Błąd w strefie bezpośrednio wpływa na wydajność węzła, dlatego zapoznaj się z wiedzą z sekcji <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/" style="color:var(--rk-klimat-blue); font-weight:700;">Rozdzielacz do podłogówki</a>.</div>
                </div>
            </div>
        `
    };

    for (var i = 0; i < buttons.length; i++) {
        buttons[i].addEventListener('click', function() {
            var choice = this.getAttribute('data-klimat');

            // Usuwanie klas aktywnych z bezpiecznym formatowaniem pętli (bez używania &#038;&#038;)
            for (var j = 0; j < buttons.length; j++) {
                buttons[j].classList.remove('active-pro');
                buttons[j].classList.remove('active-error');
            }

            if (choice === 'pro') {
                this.classList.add('active-pro');
                resultBox.innerHTML = data.pro;
            } else {
                this.classList.add('active-error');
                resultBox.innerHTML = data.error;
            }
        });
    }
});
</script>



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

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

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

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

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

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Article",
      "@id": "https://projekt-ogrzewania.pl/google-preferred-sources#article",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://projekt-ogrzewania.pl/google-preferred-sources"
      },
      "headline": "Wspieraj Projekt-Ogrzewania.pl w wynikach Google",
      "description": "Interaktywny widget umożliwiający dodanie portalu Projekt-Ogrzewania.pl do ulubionych źródeł w wyszukiwarce Google. Buduj z nami rzetelną bazę wiedzy o HVAC.",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
      "author": {
        "@type": "Person",
        "name": "Robert Kucharski",
        "url": "https://projekt-ogrzewania.pl/",
        "sameAs": [
          "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
          "https://www.facebook.com/projektogrzewaniapl/",
          "https://www.linkedin.com/in/robert-kucharski-38069b48/",
          "https://x.com/Projekt_HVAC",
          "https://remont.biz.pl/",
          "https://sobir.pl/"
        ]
      },
      "publisher": {
        "@type": "Organization",
        "name": "Projekt-Ogrzewania.pl",
        "logo": {
          "@type": "ImageObject",
          "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
        }
      },
      "datePublished": "2026-07-09",
      "dateModified": "2026-07-09"
    },
    {
      "@type": "Dataset",
      "@id": "https://projekt-ogrzewania.pl/google-preferred-sources#dataset",
      "name": "Preferowane Źródła Google - Statystyki i Interakcja",
      "description": "Zbiór danych i interaktywnych punktów styku pozwalających na ocenę preferencji czytelników dla treści technicznych HVAC.",
      "license": "https://projekt-ogrzewania.pl/",
      "creator": {
        "@type": "Person",
        "name": "Robert Kucharski"
      },
      "keywords": [
        "ulubione źródła google",
        "preferowane wyniki wyszukiwania",
        "autorytet domeny hvac",
        "zaufane portale budowlane",
        "personalizacja google search"
      ],
      "measurementTechnique": "Zliczanie interakcji z widgetem UI typu toggle oraz przekierowań do interfejsu preferencji Google Search",
      "mainEntity": "Optymalizacja zaangażowania użytkownika poprzez interaktywny widget dodawania domeny do preferencji Google."
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/google-preferred-sources#webapplication",
      "name": "Google Preferences Toggle Widget",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "All",
      "description": "Aplikacja webowa w formie widgetu symulującego przełącznik mobilny, integrująca natywne linkowanie do ustawień preferowanych źródeł Google.",
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      }
    }
  ]
}
</script>


<p>Artykuł <a href="https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/">Strefy klimatyczne w Polsce a ogrzewanie podłogowe i OZC: Dlaczego błąd o jedną strefę klimatyczną kosztuje Cię 6000 zł rocznie?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Projekt instalacji grzewczej domu jednorodzinnego: Kompletny przewodnik inżynieryjny, koszty i obliczenia OZC.</title>
		<link>https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/</link>
					<comments>https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#respond</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Fri, 31 Jul 2026 07:17:58 +0000</pubDate>
				<category><![CDATA[Hydraulika]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[OZC]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Projekt instalacji grzewczej]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projekty ogrzewania]]></category>
		<category><![CDATA[bilans cieplny]]></category>
		<category><![CDATA[centralne ogrzewanie]]></category>
		<category><![CDATA[dobór ogrzewania]]></category>
		<category><![CDATA[dobór pompy ciepła]]></category>
		<category><![CDATA[dokumentacja techniczna]]></category>
		<category><![CDATA[hydraulika instalacji]]></category>
		<category><![CDATA[instalacja grzewcza]]></category>
		<category><![CDATA[obliczenia ozc]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[ozc]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt co]]></category>
		<category><![CDATA[projekt domu jednorodzinnego]]></category>
		<category><![CDATA[projekt hvac]]></category>
		<category><![CDATA[projekt instalacji grzewczej]]></category>
		<category><![CDATA[projekt instalacji grzewczej domu jednorodzinnego]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[rozstaw rur]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=6872</guid>

					<description><![CDATA[<p>Czy profesjonalny projekt naprawdę jest potrzebny przed wykonaniem ogrzewania w domu? Projekt instalacji grzewczej domu jednorodzinnego to znacznie więcej niż zwykły rysunek techniczny – to komplet obliczeń OZC, analiza hydrauliczna, dobór źródła ciepła oraz dokumentacja, która pozwala uniknąć kosztownych błędów i przewymiarowania instalacji. W tym przewodniku znajdziesz praktyczne przykłady, kalkulatory, interaktywne symulatory oraz inżynierskie wskazówki, dzięki którym zaprojektujesz wydajny, oszczędny i niezawodny system grzewczy.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/">Projekt instalacji grzewczej domu jednorodzinnego: Kompletny przewodnik inżynieryjny, koszty i obliczenia OZC.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-hero-dark: #0f172a;
    --rk-hero-blue: #0284c7;
    --rk-hero-light: #f8fafc;
    --rk-hero-border: #e2e8f0;
    --rk-hero-text: #475569;
    --rk-hero-accent: #38bdf8;
    --rk-hero-alert-bg: #eff6ff;
    --rk-hero-alert-border: #bfdbfe;
}

.rk-hero-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 10px 30px -10px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-hero-border);
    overflow: hidden;
}

/* Sekcja Tytułowa - Hook */
.rk-hero-header {
    background: linear-gradient(135deg, var(--rk-hero-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: #ffffff;
}

.rk-hero-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.2);
    color: var(--rk-hero-accent);
    padding: 6px 14px;
    border-radius: 4px;
    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-hero-header h2 {
    color: #ffffff;
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

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

/* Szybka Odpowiedź (Direct Answer pod SEO) */
.rk-hero-quick-answer {
    background: var(--rk-hero-alert-bg);
    border-left: 5px solid var(--rk-hero-blue);
    padding: 30px 40px;
    margin: 0;
    border-bottom: 1px solid var(--rk-hero-alert-border);
}

.rk-hero-quick-answer-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-hero-blue);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-hero-quick-answer p {
    font-size: 16px;
    font-weight: 600;
    color: var(--rk-hero-dark);
    margin: 0;
    line-height: 1.6;
}

/* Sekcja Główna */
.rk-hero-body {
    padding: 40px 50px;
    display: flex;
    flex-direction: column;
    gap: 25px;
    background: var(--rk-hero-light);
}

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

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

/* Zmieniony Panel Narzędziowy - Układ z poziomymi zakładkami */
.rk-hero-tools-panel {
    background: #ffffff;
    border: 1px solid var(--rk-hero-border);
    border-radius: 12px;
    display: flex;
    flex-direction: column; /* Wymuszamy układ pionowy całego bloku */
    overflow: hidden;
    box-shadow: 0 4px 10px rgba(0,0,0,0.03);
}

/* Nawigacja górna */
.rk-hero-tools-nav {
    display: flex;
    background: var(--rk-hero-light);
    border-bottom: 1px solid var(--rk-hero-border);
}

.rk-hero-tool-btn {
    flex: 1;
    padding: 18px 15px;
    text-align: center;
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent; /* Miejsce na aktywny pasek */
    border-right: 1px solid var(--rk-hero-border);
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-hero-text);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    transition: all 0.2s;
}

.rk-hero-tool-btn:last-child {
    border-right: none;
}

.rk-hero-tool-btn svg {
    flex-shrink: 0; /* Ochrona przed zgnieceniem ikony */
}

.rk-hero-tool-btn:hover {
    background: #ffffff;
}

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

/* Obszar wyświetlania na pełnej szerokości */
.rk-hero-tools-display {
    padding: 35px 40px;
    background: #ffffff;
}

.rk-hero-view {
    display: none;
}

.rk-hero-view.active {
    display: block;
    animation: fadeIn 0.4s ease forwards;
}

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

.rk-hero-view h3 {
    margin: 0 0 12px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-hero-dark);
}

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

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

/* RWD */
@media (max-width: 768px) {
    .rk-hero-header, .rk-hero-quick-answer, .rk-hero-body { padding: 30px 20px; }
    .rk-hero-tools-nav { flex-direction: column; }
    .rk-hero-tool-btn { 
        border-right: none; 
        border-bottom: 1px solid var(--rk-hero-border);
        border-left: 4px solid transparent; 
        justify-content: flex-start; 
        padding-left: 20px;
    }
    .rk-hero-tool-btn:last-child { border-bottom: none; }
    .rk-hero-tool-btn.active {
        border-bottom-color: var(--rk-hero-border);
        border-left-color: var(--rk-hero-blue);
    }
    .rk-hero-tools-display { padding: 25px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/"
    },
    "headline": "Projekt instalacji grzewczej domu jednorodzinnego to inżynieryjny fundament budowy",
    "description": "Przewodnik techniczny po projektowaniu instalacji grzewczych. Zobacz interaktywne kalkulatory, symulatory doboru pomp ciepła i analizy błędów montażowych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-31",
    "dateModified": "2026-07-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#dataset-wstep",
    "name": "Zawartość narzędziowa przewodnika projektowego HVAC",
    "description": "Zestawienie interaktywnych modułów analitycznych dostępnych w artykule, służących do weryfikacji i optymalizacji parametrów instalacji domowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt instalacji grzewczej domu jednorodzinnego",
      "obliczenia ozc pn-en 12831",
      "parametry hydrauliczne pętli grzewczych",
      "przewymiarowana pompa ciepła",
      "interaktywne kalkulatory hydrauliczne"
    ],
    "measurementTechnique": "Przegląd inżynieryjnych narzędzi obliczeniowych (symulatory przepływów, kalkulatory ROI, weryfikatory błędów) udostępnionych w dokumencie.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Narzędzie 1: Interaktywny Kalkulator Doboru Pompy Obiegowej.",
        "Narzędzie 2: Symulator Skutków Przewymiarowania Pompy Ciepła (OZC).",
        "Narzędzie 3: Kalkulator Strat Inwestycyjnych i ROI.",
        "Narzędzie 4: Skaner 5 Najczęstszych Błędów Wykonawczych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#webapp-wstep",
    "name": "Inżynieryjny Panel Nawigacyjny HVAC",
    "description": "Moduł wprowadzenia z poziomymi zakładkami prezentujący zasoby edukacyjne i narzędzia symulacyjne dostępne w dalszej części technicznego przewodnika.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-hero-container" id="rk-interactive-hero">
    
    <!-- Hook Tytułowy -->
    <div class="rk-hero-header">
        <div class="rk-hero-badge">Inżynieryjny Brief Inwestora</div>
        <h2>Budujesz dom i słyszysz, że hydraulik &#8222;zrobi instalację z głowy&#8221;? To najdroższy błąd, jaki możesz popełnić.</h2>
        <p>Brak profesjonalnych wyliczeń przed budową to najprostsza droga do niedogrzanych pomieszczeń, szumiących rozdzielaczy i pompy ciepła, która ulegnie awarii po kilku latach.</p>
    </div>

    <!-- Szybka Odpowiedź (Featured Snippet) -->
    <div class="rk-hero-quick-answer">
        <div class="rk-hero-quick-answer-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"><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>
            Szybka odpowiedź eksperta
        </div>
        <p>
            <strong>Projekt instalacji grzewczej domu jednorodzinnego</strong> to dokumentacja techniczno-wykonawcza oparta na obliczeniach Projektowego Obciążenia Cieplnego (OZC) zgodnie z normą PN-EN 12831. Określa ona precyzyjne zapotrzebowanie budynku na moc (w kW) oraz parametry hydrauliczne układu. Prawidłowy projekt natychmiast eliminuje zjawisko przewymiarowania pomp i obniża koszty inwestycyjne o 15-25%.
        </p>
    </div>

    <!-- Wprowadzenie do aplikacji interaktywnych -->
    <div class="rk-hero-body">
        <p class="rk-hero-body-intro">Jako CEO Projekt-Ogrzewania.pl oddaję w Twoje ręce bezkompromisowe zestawienie twardych danych. <strong>W dalszej części tego przewodnika przygotowałem dla Ciebie interaktywne narzędzia i symulatory</strong>, które pozwolą Ci na żywo sprawdzić krytyczne parametry Twojego przyszłego domu.</p>
        
        <div class="rk-hero-tools-panel">
            <!-- Nawigacja górna (pozioma) -->
            <div class="rk-hero-tools-nav">
                <button class="rk-hero-tool-btn active" data-view="hero-calc">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><rect x="9" y="9" width="6" height="6"></rect><line x1="9" y1="1" x2="9" y2="4"></line><line x1="15" y1="1" x2="15" y2="4"></line><line x1="9" y1="20" x2="9" y2="23"></line><line x1="15" y1="20" x2="15" y2="23"></line><line x1="20" y1="9" x2="23" y2="9"></line><line x1="20" y1="14" x2="23" y2="14"></line><line x1="1" y1="9" x2="4" y2="9"></line><line x1="1" y1="14" x2="4" y2="14"></line></svg>
                    Kalkulatory Inżynieryjne
                </button>
                <button class="rk-hero-tool-btn" data-view="hero-errors">
                    <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="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 Błędów
                </button>
                <button class="rk-hero-tool-btn" data-view="hero-roi">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="1" x2="12" y2="23"></line><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    Analiza Kosztów ROI
                </button>
            </div>
            
            <!-- Obszar wyświetlania pełnej szerokości -->
            <div class="rk-hero-tools-display">
                <div class="rk-hero-view active" id="hero-calc">
                    <h3>Wylicz parametry na żywo</h3>
                    <p>Przewiń niżej, aby skorzystać z symulatorów obliczających <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" target="_blank">projektowe obciążenie cieplne (OZC)</a>. Zobaczysz, jak zmiana temperatury zasilania czy odpowiednia grubość styropianu wpływa na wydajność całego układu ogrzewania podłogowego.</p>
                </div>
                <div class="rk-hero-view" id="hero-errors">
                    <h3>Diagnoza instalatorska</h3>
                    <p>W module diagnostycznym obnażamy <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/" target="_blank">najczęstsze błędy wykonawcze</a>. Dowiesz się, jakie katastrofalne w skutkach wpadki (od braku dylatacji po wodę z kranu w rurach) popełniają fachowcy pracujący bez nadzoru i dokumentacji.</p>
                </div>
                <div class="rk-hero-view" id="hero-roi">
                    <h3>Realne wyliczenia finansowe</h3>
                    <p>Sprawdź w naszym narzędziu <a href="https://projekt-ogrzewania.pl/ile-kosztuje-projekt-ogrzewania-podlogowego/" target="_blank">ile kosztuje projekt ogrzewania podłogowego</a>, a ile stracisz kupując przewymiarowaną pompę ciepła. Twarde wyliczenia udowadniają, że dokumentacja inżynieryjna to najlepsza polisa ubezpieczeniowa dla Twojego budżetu.</p>
                </div>
            </div>
        </div>
        
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-hero-tool-btn');
    const views = document.querySelectorAll('.rk-hero-view');

    // Bezpieczne przełączanie zakładek (bez użycia operatorów logicznych)
    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            const targetId = this.getAttribute('data-view');
            
            // Czyszczenie aktywnych przycisków
            btns.forEach(function(b) {
                b.classList.remove('active');
            });
            
            // Czyszczenie aktywnych widoków
            views.forEach(function(v) {
                v.classList.remove('active');
            });
            
            // Nadanie aktywności klikniętemu
            this.classList.add('active');
            const targetView = document.getElementById(targetId);
            
            if (targetView) {
                targetView.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-ozc-dark: #0f172a;
    --rk-ozc-blue: #0284c7;
    --rk-ozc-light: #f8fafc;
    --rk-ozc-border: #e2e8f0;
    --rk-ozc-text: #475569;
    --rk-ozc-green: #10b981;
    --rk-ozc-green-bg: #dcfce7;
    --rk-ozc-red: #ef4444;
    --rk-ozc-red-bg: #fee2e2;
}

.rk-ozc-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.1);
    border: 1px solid var(--rk-ozc-border);
    overflow: hidden;
}

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

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

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

/* Aplikacja - Główny układ pionowy (Stacked) */
.rk-ozc-app {
    padding: 40px 50px;
    background: var(--rk-ozc-light);
    display: flex;
    flex-direction: column;
    gap: 25px;
}

/* Panel sterowania */
.rk-ozc-controls {
    background: #ffffff;
    border-radius: 16px;
    padding: 30px 40px;
    border: 1px solid var(--rk-ozc-border);
    box-shadow: 0 4px 10px -2px rgba(0,0,0,0.03);
}

.rk-ozc-title-small {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-ozc-dark);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

/* Przełącznik */
.rk-ozc-toggle-wrapper {
    display: flex;
    background: var(--rk-ozc-light);
    border: 1px solid var(--rk-ozc-border);
    border-radius: 12px;
    overflow: hidden;
}

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

.rk-ozc-btn.active[data-mode="oko"] {
    background: var(--rk-ozc-red);
    color: #ffffff;
}

.rk-ozc-btn.active[data-mode="ozc"] {
    background: var(--rk-ozc-green);
    color: #ffffff;
}

/* Kafelki danych inżynieryjnych */
.rk-ozc-dashboard {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
}

.rk-dash-box {
    background: #ffffff;
    border: 2px solid var(--rk-ozc-border);
    border-radius: 16px;
    padding: 25px 15px;
    text-align: center;
    transition: all 0.4s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-dash-icon {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--rk-ozc-light);
    color: var(--rk-ozc-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 15px;
    transition: all 0.4s;
}

.rk-dash-label {
    font-size: 11px;
    font-weight: 800;
    color: #94a3b8;
    text-transform: uppercase;
    margin-bottom: 8px;
    letter-spacing: 0.5px;
}

.rk-dash-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-ozc-dark);
    margin-bottom: 5px;
    transition: color 0.4s;
}

.rk-dash-sub {
    font-size: 12px;
    color: var(--rk-ozc-text);
}

/* Stany dynamiczne kafelków */
.state-ozc .rk-dash-box { border-color: #86efac; }
.state-ozc .rk-dash-icon { background: var(--rk-ozc-green-bg); color: var(--rk-ozc-green); }
.state-ozc .rk-dash-val { color: var(--rk-ozc-green); }

.state-oko .rk-dash-box { border-color: #fca5a5; }
.state-oko .rk-dash-icon { background: var(--rk-ozc-red-bg); color: var(--rk-ozc-red); }
.state-oko .rk-dash-val { color: var(--rk-ozc-red); }

/* Status Alert (Pełna szerokość) */
.rk-ozc-status-card {
    border-radius: 16px;
    padding: 25px 35px;
    display: flex;
    align-items: center;
    gap: 20px;
    transition: all 0.4s ease;
    border: 2px solid transparent;
}

.rk-ozc-status-icon {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.rk-ozc-status-content h3 {
    margin: 0 0 5px 0;
    font-size: 20px;
    font-weight: 800;
}

.rk-ozc-status-content p {
    margin: 0;
    font-size: 15px;
    line-height: 1.6;
}

/* Kolory Statusów */
.status-ozc {
    background: var(--rk-ozc-green-bg);
    border-color: var(--rk-ozc-green);
    color: #065f46;
}
.status-ozc .rk-ozc-status-icon { background: var(--rk-ozc-green); color: #ffffff; }

.status-oko {
    background: var(--rk-ozc-red-bg);
    border-color: var(--rk-ozc-red);
    color: #991b1b;
}
.status-oko .rk-ozc-status-icon { background: var(--rk-ozc-red); color: #ffffff; }

/* Sekcja opisowa */
.rk-ozc-desc {
    padding: 0 50px 40px;
    background: var(--rk-ozc-light);
}

.rk-ozc-desc h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-ozc-dark);
    margin: 0 0 10px 0;
}

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

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

/* Wzór wyróżniony */
.rk-ozc-formula {
    background: #ffffff;
    border-left: 4px solid var(--rk-ozc-blue);
    padding: 20px;
    border-radius: 0 12px 12px 0;
    margin: 20px 0;
    box-shadow: 0 2px 5px rgba(0,0,0,0.02);
}

.rk-ozc-formula-code {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-ozc-dark);
    text-align: center;
    margin-bottom: 10px;
    letter-spacing: 1px;
}

.rk-ozc-formula-legend {
    font-size: 14px;
    color: var(--rk-ozc-text);
    display: grid;
    grid-template-columns: 1fr;
    gap: 5px;
}

/* RWD */
@media (max-width: 768px) {
    .rk-ozc-header, .rk-ozc-app, .rk-ozc-desc { padding: 30px 20px; }
    .rk-ozc-controls { padding: 25px 20px; }
    .rk-ozc-toggle-wrapper { flex-direction: column; border-radius: 12px; }
    .rk-ozc-btn { border-bottom: 1px solid var(--rk-ozc-border); padding: 15px; }
    .rk-ozc-dashboard { grid-template-columns: 1fr; }
    .rk-ozc-status-card { flex-direction: column; text-align: center; padding: 25px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#article-ozc-skutki",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/"
    },
    "headline": "Czym jest Projektowe Obciążenie Cieplne (OZC) i dlaczego dobór ogrzewania bez normy to błąd?",
    "description": "Fizyczne i finansowe konsekwencje braku obliczeń OZC. Zobacz, jak przewymiarowana pompa ciepła ulega taktowaniu, drastycznie skracając żywotność sprężarki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-31",
    "dateModified": "2026-07-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#dataset-ozc",
    "name": "Baza diagnostyczna skutków braku obliczeń OZC",
    "description": "Zestawienie inżynieryjne pokazujące zjawisko skracania żywotności sprężarek (taktowanie) w przewymiarowanych pompach ciepła dobieranych na podstawie przybliżonego wskaźnika W/m2.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowe obciążenie cieplne ozc",
      "norma pn-en 12831 obliczenia",
      "przewymiarowana pompa ciepła taktowanie",
      "żywotność sprężarki pompy ciepła",
      "straty ciepła przez przenikanie u"
    ],
    "measurementTechnique": "Szacowanie żywotności układu sprężarkowego na bazie cykli włącz/wyłącz (taktowania) w okresach przejściowych (+5°C).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Dobór na oko (50 W/m2): Pompa 10 kW, silne taktowanie w okresach przejściowych, żywotność zredukowana do 5-7 lat.",
        "Dobór wg OZC (PN-EN 12831): Pompa 6 kW, stabilna praca na niskich obrotach, żywotność kompresora rzędu 20 lat."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#webapp-ozc",
    "name": "Symulator Skutków Braku OZC",
    "description": "Interaktywny pionowy dashboard wizualizujący ukryte koszty i spadki żywotności sprzętu grzewczego wynikające z braku rzetelnych wyliczeń inżynieryjnych na etapie projektowym.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-ozc-container" id="rk-interactive-ozc">
    <div class="rk-ozc-header">
        <h2>Czym jest OZC i dlaczego dobór ogrzewania „z metrażu” to błąd?</h2>
        <p>Brak inżynieryjnych obliczeń przed budową to najprostsza droga do zniszczenia własnego sprzętu. Przełącz symulator i zobacz, jak przewymiarowanie dobija serce Twojej pompy ciepła.</p>
    </div>

    <div class="rk-ozc-app" id="rk-ozc-wrapper">
        
        <!-- Panel Sterowania -->
        <div class="rk-ozc-controls">
            <div class="rk-ozc-title-small">
                <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 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                Wybierz metodologię doboru urządzenia
            </div>
            
            <div class="rk-ozc-toggle-wrapper">
                <button class="rk-ozc-btn" data-mode="oko">
                    <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="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
                    Szacunkowo „z metrażu”
                </button>
                <button class="rk-ozc-btn active" data-mode="ozc">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                    Precyzyjne wyliczenia OZC
                </button>
            </div>
        </div>

        <!-- Dashboard z danymi -->
        <div class="rk-ozc-dashboard">
            <div class="rk-dash-box">
                <div class="rk-dash-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="M13 2L3 14h9l-1 8 10-12h-9l1-8z"></path></svg>
                </div>
                <div class="rk-dash-label">Dobór Pompy Ciepła</div>
                <div class="rk-dash-val" id="rk-val-power">6 kW</div>
                <div class="rk-dash-sub" id="rk-sub-power">Moc idealnie dopasowana</div>
            </div>
            <div class="rk-dash-box">
                <div class="rk-dash-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                </div>
                <div class="rk-dash-label">Żywotność sprężarki</div>
                <div class="rk-dash-val" id="rk-val-life">20 lat</div>
                <div class="rk-dash-sub" id="rk-sub-life">Stabilna praca silnika</div>
            </div>
            <div class="rk-dash-box">
                <div class="rk-dash-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                </div>
                <div class="rk-dash-label">Zachowanie układu</div>
                <div class="rk-dash-val" id="rk-val-status">Brak taktowania</div>
                <div class="rk-dash-sub" id="rk-sub-status">Ciągła modulacja obrotów</div>
            </div>
        </div>

        <!-- Dolny Alert Statusu -->
        <div class="rk-ozc-status-card status-ozc" id="rk-ozc-status-box">
            <div class="rk-ozc-status-icon" id="rk-ozc-status-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
            </div>
            <div class="rk-ozc-status-content">
                <h3 id="rk-ozc-status-title">Bezpieczna inwestycja</h3>
                <p id="rk-ozc-status-desc">OZC gwarantuje dobór urządzenia w punkt. Pompa nie przegrzewa się, pobiera mało prądu i pracuje bezawaryjnie przez dekady.</p>
            </div>
        </div>
        
    </div>

    <!-- Tekst inżynieryjny pod aplikacją -->
    <div class="rk-ozc-desc">
        <h3>Dlaczego brak normy to technologiczne samobójstwo?</h3>
        <p>Wyznaczenie projektowego obciążenia cieplnego budynku zgodnie z normą <a href="https://projekt-ogrzewania.pl/pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" target="_blank">PN-EN 12831</a> stanowi jedyną prawnie i technicznie poprawną metodę określenia zapotrzebowania domu na moc grzewczą wyrażoną w kW. Szacowanie mocy z metrażu kwadratowego (np. popularne na forach zakładanie 50 W/m²) w nowoczesnym budownictwie generuje gigantyczny błąd przewymiarowania źródła ciepła sięgający nawet 60%.</p>

        <p>Gdy dobierasz <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" target="_blank">pompę ciepła</a> bez twardych wyliczeń, narażasz urządzenie na tzw. <strong>zjawisko taktowania</strong>. Oznacza to, że przewymiarowana pompa o mocy 10 kW (podczas gdy potrzebujesz 6 kW) w okresach przejściowych (np. jesienią przy +5°C) generuje za dużo energii. Komputer włącza ją na kilka minut i natychmiast wyłącza. Ten cykl powtarza się kilkadziesiąt razy na dobę, bezlitośnie zarzynając mechanikę drogiej sprężarki.</p>
        
        <div class="rk-ozc-formula">
            <div class="rk-ozc-formula-code">Moc = Powierzchnia × Współczynnik U × (Temp. Wew &#8211; Temp. Zew)</div>
            <div class="rk-ozc-formula-legend">
                <span>Każda przegroda budowlana posiada własny opór i współczynnik przenikania (U). <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" target="_blank">Obliczenia OZC</a> polegają na precyzyjnym zsumowaniu strat każdego pokoju z osobna.</span>
            </div>
        </div>

        <p>Z drugiej strony, celowe zaniżanie mocy „by było taniej” skrajnie obniży komfort termiczny. Gdy temperatura na zewnątrz spadnie do projektowej wartości strefowej (np. -20°C dla centralnej Polski), dom po prostu zmarznie.</p>
        
        <p>Wynik z profesjonalnego OZC pozwala projektantowi precyzyjnie przeliczyć gęstość strumienia ciepła, jaką musi oddać posadzka. To na tej podstawie decydujemy, czy w strefie przy oknie rury ułożyć co 10 cm, a na środku pokoju co 15 cm. Bez tego, cała wylewka jest wyłącznie kosztownym zgadywaniem.</p>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-ozc-btn');
    const wrapper = document.getElementById('rk-ozc-wrapper');
    
    // Pola w dashboardzie
    const valPower = document.getElementById('rk-val-power');
    const subPower = document.getElementById('rk-sub-power');
    const valLife = document.getElementById('rk-val-life');
    const subLife = document.getElementById('rk-sub-life');
    const valStatus = document.getElementById('rk-val-status');
    const subStatus = document.getElementById('rk-sub-status');
    
    // Status box
    const statusBox = document.getElementById('rk-ozc-status-box');
    const statusIcon = document.getElementById('rk-ozc-status-icon');
    const statusTitle = document.getElementById('rk-ozc-status-title');
    const statusDesc = document.getElementById('rk-ozc-status-desc');

    // Ikony (ciągi znaków)
    const iconDanger = '<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>';
    const iconOptimal = '<svg width="26" height="26" 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>';

    // Logika i dane (bez operatorów logicznych)
    const ozcData = {
        'ozc': {
            powVal: '6 kW',
            powSub: 'Moc idealnie dopasowana',
            lifeVal: '20 lat',
            lifeSub: 'Stabilna praca silnika',
            statVal: 'Brak taktowania',
            statSub: 'Ciągła modulacja obrotów',
            alertTitle: 'Bezpieczna inwestycja na lata',
            alertDesc: 'Obliczenia OZC gwarantują dobór urządzenia w punkt. Pompa ciepła nie przegrzewa się w jesieni, pobiera mało prądu i pracuje bezawaryjnie przez dekady.',
            icon: iconOptimal,
            className: 'status-ozc'
        },
        'oko': {
            powVal: '10 kW',
            powSub: 'Przewymiarowana (+40%)',
            lifeVal: '5-7 lat',
            lifeSub: 'Agresywne uderzenia startowe',
            statVal: 'Ciągłe taktowanie',
            statSub: 'Wyłącza się po 3 minutach',
            alertTitle: 'Zabójstwo dla sprężarki',
            alertDesc: 'Za duża moc sprawia, że przy +5°C pompa włącza się i wyłącza dziesiątki razy na dobę. Taktowanie mechanicznie i nieodwracalnie niszczy serce sprężarki.',
            icon: iconDanger,
            className: 'status-oko'
        }
    };

    function updateSimulation(mode) {
        const data = ozcData[mode];
        
        // Teksty
        valPower.innerText = data.powVal;
        subPower.innerText = data.powSub;
        valLife.innerText = data.lifeVal;
        subLife.innerText = data.lifeSub;
        valStatus.innerText = data.statVal;
        subStatus.innerText = data.statSub;
        
        // Zmiana stylów głównego wrappera
        wrapper.classList.remove('state-ozc');
        wrapper.classList.remove('state-oko');
        wrapper.classList.add('state-' + mode);
        
        // Status Alert
        statusBox.className = 'rk-ozc-status-card ' + data.className;
        statusTitle.innerText = data.alertTitle;
        statusDesc.innerText = data.alertDesc;
        statusIcon.innerHTML = data.icon;
    }

    // Nasłuchiwanie na przyciski
    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Czyszczenie klas aktywnych
            btns.forEach(function(b) {
                b.classList.remove('active');
            });
            // Nadanie aktywności klikniętemu
            this.classList.add('active');
            
            // Render
            const mode = this.getAttribute('data-mode');
            updateSimulation(mode);
        });
    });
    
    // Start z trybem OZC
    wrapper.classList.add('state-ozc');
});
</script>



<style>
:root {
    --rk-roi-dark: #0f172a;
    --rk-roi-blue: #0284c7;
    --rk-roi-light: #f8fafc;
    --rk-roi-border: #e2e8f0;
    --rk-roi-text: #475569;
    --rk-roi-green: #10b981;
    --rk-roi-green-bg: #dcfce7;
    --rk-roi-red: #ef4444;
    --rk-roi-red-bg: #fee2e2;
}

.rk-roi-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.1);
    border: 1px solid var(--rk-roi-border);
    overflow: hidden;
}

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

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

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

/* Główny obszar aplikacji */
.rk-roi-app {
    padding: 40px 50px;
    background: var(--rk-roi-light);
    display: flex;
    flex-direction: column;
    gap: 30px;
}

/* Przełącznik decyzyjny */
.rk-roi-decision-box {
    background: #ffffff;
    padding: 30px;
    border-radius: 16px;
    border: 1px solid var(--rk-roi-border);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-roi-title-small {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-roi-dark);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    gap: 8px;
    justify-content: center;
}

.rk-roi-toggle-wrapper {
    display: flex;
    background: var(--rk-roi-light);
    border: 1px solid var(--rk-roi-border);
    border-radius: 12px;
    overflow: hidden;
}

.rk-roi-btn {
    flex: 1;
    padding: 18px 10px;
    text-align: center;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-roi-text);
    background: transparent;
    border: none;
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.rk-roi-btn.active[data-mode="pro"] {
    background: var(--rk-roi-green);
    color: #ffffff;
}

.rk-roi-btn.active[data-mode="oko"] {
    background: var(--rk-roi-red);
    color: #ffffff;
}

/* Siatka wyników (Kafelki) */
.rk-roi-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
}

.rk-roi-card {
    background: #ffffff;
    border: 2px solid var(--rk-roi-border);
    border-radius: 16px;
    padding: 25px 20px;
    text-align: center;
    transition: all 0.4s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-roi-card-icon {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 15px;
    transition: all 0.4s;
    background: var(--rk-roi-light);
    color: var(--rk-roi-blue);
}

.rk-roi-card-label {
    font-size: 12px;
    font-weight: 800;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 10px;
}

.rk-roi-card-param {
    font-size: 16px;
    font-weight: 700;
    color: var(--rk-roi-text);
    margin-bottom: 5px;
    transition: color 0.4s;
}

.rk-roi-card-cost {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-roi-dark);
    transition: color 0.4s;
}

/* Stany dynamiczne kafelków */
.state-pro .rk-roi-card { border-color: #86efac; }
.state-pro .rk-roi-card-icon { background: var(--rk-roi-green-bg); color: var(--rk-roi-green); }
.state-pro .rk-roi-card-cost { color: var(--rk-roi-green); }

.state-oko .rk-roi-card { border-color: #fca5a5; }
.state-oko .rk-roi-card-icon { background: var(--rk-roi-red-bg); color: var(--rk-roi-red); }
.state-oko .rk-roi-card-cost { color: var(--rk-roi-red); }

/* Podsumowanie finansowe (Alert) */
.rk-roi-summary-box {
    border-radius: 16px;
    padding: 30px 40px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    transition: all 0.4s ease;
    border: 2px solid transparent;
}

.state-pro .rk-roi-summary-box {
    background: var(--rk-roi-green-bg);
    border-color: var(--rk-roi-green);
}

.state-oko .rk-roi-summary-box {
    background: var(--rk-roi-red-bg);
    border-color: var(--rk-roi-red);
}

.rk-roi-sum-text h3 {
    margin: 0 0 5px 0;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-roi-dark);
}

.rk-roi-sum-text p {
    margin: 0;
    font-size: 15px;
    font-weight: 600;
    color: var(--rk-roi-text);
}

.rk-roi-sum-total {
    font-size: 38px;
    font-weight: 900;
    text-align: right;
}

.state-pro .rk-roi-sum-total { color: var(--rk-roi-green); }
.state-oko .rk-roi-sum-total { color: var(--rk-roi-red); }

/* Sekcja opisowa */
.rk-roi-desc {
    padding: 0 50px 30px;
    background: var(--rk-roi-light);
}

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

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

/* Potężne CTA */
.rk-roi-cta-wrap {
    padding: 45px 50px;
    background: #ffffff;
    border-top: 1px solid var(--rk-roi-border);
    text-align: center;
}

.rk-roi-cta-title {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-roi-dark);
    margin: 0 0 15px 0;
}

.rk-roi-cta-text {
    font-size: 16px;
    color: #64748b;
    margin: 0 auto 30px;
    max-width: 650px;
    line-height: 1.6;
}

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

.rk-btn-massive:hover {
    transform: translateY(-4px);
    background: #0369a1;
    box-shadow: 0 15px 35px -5px rgba(2, 132, 199, 0.5);
}

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

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

/* RWD */
@media (max-width: 768px) {
    .rk-roi-header, .rk-roi-app, .rk-roi-desc, .rk-roi-cta-wrap { padding: 30px 20px; }
    .rk-roi-decision-box { padding: 20px; }
    .rk-roi-toggle-wrapper { flex-direction: column; border-radius: 12px; }
    .rk-roi-btn { padding: 15px; border-bottom: 1px solid var(--rk-roi-border); }
    .rk-roi-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-roi-summary-box { flex-direction: column; text-align: center; gap: 15px; padding: 25px 20px; }
    .rk-roi-sum-total { text-align: center; font-size: 32px; }
    .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/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#article-koszty",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/"
    },
    "headline": "Ile kosztuje projekt instalacji grzewczej i OZC dla domu jednorodzinnego w 2026 roku?",
    "description": "Realne zestawienie kosztów inwestycyjnych. Porównanie nakładów finansowych przy profesjonalnym projekcie OZC z drogowymi błędami wykonawców robiących instalacje na oko.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-31",
    "dateModified": "2026-07-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#dataset-koszty",
    "name": "Zestawienie kosztów inwestycyjnych ogrzewania podłogowego 2026",
    "description": "Baza danych finansowych pokazująca różnice w wydatkach materiałowych między poprawnym projektem inżynieryjnym a instalatorstwem opartym na przybliżeniach.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ile kosztuje projekt ogrzewania podłogowego",
      "cena obliczeń ozc 2026",
      "przewymiarowana pompa ciepła cena",
      "koszt rur do podłogówki 150m2",
      "zwrot z inwestycji w projekt grzewczy"
    ],
    "measurementTechnique": "Analiza porównawcza nakładów materiałowych (pompa ciepła, rury, rozdzielacze) dla referencyjnego domu o powierzchni 150 m2.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Koszt kompletnego projektu OZC: ok. 600 PLN brutto.",
        "Instalacja z projektem: Pompa 6 kW (28 000 PLN), Rury 1050m, Suma na starcie: 34 275 PLN.",
        "Instalacja na oko: Pompa 10 kW (38 000 PLN), Rury 1400m, Suma na starcie: 46 100 PLN."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#webapp-koszty",
    "name": "Kalkulator ROI Projektu OZC",
    "description": "Narzędzie finansowe wyliczające na żywo ukryte straty kapitałowe wynikające z braku profesjonalnego projektu i OZC podczas budowy domu.",
    "applicationCategory": "BusinessApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-roi-container" id="rk-interactive-roi">
    <div class="rk-roi-header">
        <h2>Ile kosztuje projekt instalacji grzewczej i OZC dla domu w 2026 roku?</h2>
        <p>Inwestorzy często traktują ten wydatek jako opcjonalny, co jest fundamentalnym błędem logicznym. Użyj kalkulatora i zobacz na własne oczy, jak kilkaset złotych zaoszczędzone na inżynierze pożera kilkanaście tysięcy z Twojego portfela.</p>
    </div>

    <!-- Moduł Aplikacji -->
    <div class="rk-roi-app" id="rk-roi-wrapper">
        
        <!-- Przełącznik Decyzyjny -->
        <div class="rk-roi-decision-box">
            <div class="rk-roi-title-small">
                <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 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                Wybierz model realizacji inwestycji (Dom 150 m²)
            </div>
            
            <div class="rk-roi-toggle-wrapper">
                <button class="rk-roi-btn active" data-mode="pro">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                    Instalacja z projektem i OZC
                </button>
                <button class="rk-roi-btn" data-mode="oko">
                    <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="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
                    Instalacja robiona &#8222;na oko&#8221;
                </button>
            </div>
        </div>

        <!-- Siatka Wyników (Kafelki) -->
        <div class="rk-roi-grid">
            
            <div class="rk-roi-card">
                <div class="rk-roi-card-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 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-roi-card-label">Pompa Ciepła</div>
                <div class="rk-roi-card-param" id="rk-param-pump">Moc: 6 kW</div>
                <div class="rk-roi-card-cost" id="rk-cost-pump">28 000 PLN</div>
            </div>

            <div class="rk-roi-card">
                <div class="rk-roi-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 8v4l3 3"></path></svg>
                </div>
                <div class="rk-roi-card-label">Rury PEX / PERT</div>
                <div class="rk-roi-card-param" id="rk-param-pipe">Zużycie: 1 050 m</div>
                <div class="rk-roi-card-cost" id="rk-cost-pipe">3 675 PLN</div>
            </div>

            <div class="rk-roi-card">
                <div class="rk-roi-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="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                </div>
                <div class="rk-roi-card-label">Eksploatacja (Rocznie)</div>
                <div class="rk-roi-card-param" id="rk-param-cop">Sprawność COP: 4,2</div>
                <div class="rk-roi-card-cost" id="rk-cost-energy">2 400 PLN</div>
            </div>

        </div>

        <!-- Podsumowanie Total -->
        <div class="rk-roi-summary-box">
            <div class="rk-roi-sum-text">
                <h3 id="rk-sum-title">Wzorowa inwestycja</h3>
                <p id="rk-sum-desc">Dzięki projektowi (+600 PLN) kupujesz tylko niezbędny sprzęt.</p>
            </div>
            <div class="rk-roi-sum-total" id="rk-sum-total">
                34 275 PLN
            </div>
        </div>

    </div>

    <!-- Część opisowa SEO -->
    <div class="rk-roi-desc">
        <p>Średni koszt wykonania kompleksowego dokumentu, a więc dając odpowiedź na pytanie <a href="https://projekt-ogrzewania.pl/ile-kosztuje-projekt-ogrzewania-podlogowego/" target="_blank">ile kosztuje projekt ogrzewania podłogowego</a> wraz z pełnymi obliczeniami OZC dla domu jednorodzinnego (150 m2), to dziś wydatek rzędu zaledwie 600 PLN brutto. Koszt samych obliczeń <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" target="_blank">projektowego obciążenia cieplnego (OZC)</a> mieści się w granicach 300 PLN.</p>
        
        <p>Decyzja o rezygnacji z projektu to oddanie kontroli nad budżetem w ręce instalatora, który zawsze &#8222;dołoży&#8221; materiału, by mieć margines błędu. Przewymiarowana pompa ciepła będzie bezlitośnie taktować (włączać się i wyłączać), skracając żywotność sprężarki, a dziesiątki metrów zbędnej rury tylko zaburzą hydraulikę rozdzielaczy. Twarde wyliczenia pokazują wyraźnie: profesjonalny inżynier gwarantuje najwyższy <a href="https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/" target="_blank">zwrot z inwestycji w system grzewczy</a> już na etapie kompletowania zamówienia w hurtowni.</p>
    </div>

    <!-- Mocne CTA do produktu -->
    <div class="rk-roi-cta-wrap">
        <h3 class="rk-roi-cta-title">Nie sponsoruj hurtowni budowlanych.</h3>
        <p class="rk-roi-cta-text">Wydatek 600 PLN na rzetelną dokumentację inżynieryjną generuje dla Ciebie natychmiastową oszczędność rzędu ponad 11 000 PLN. Zbuduj swój dom w oparciu o twarde dane, a nie zgadywanki fachowców.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-massive">
            ZAMÓW PROJEKT OGRZEWANIA Z OZC
            <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 btns = document.querySelectorAll('.rk-roi-btn');
    const wrapper = document.getElementById('rk-roi-wrapper');
    
    // Pola danych do nadpisania
    const pPump = document.getElementById('rk-param-pump');
    const cPump = document.getElementById('rk-cost-pump');
    const pPipe = document.getElementById('rk-param-pipe');
    const cPipe = document.getElementById('rk-cost-pipe');
    const pCop = document.getElementById('rk-param-cop');
    const cEnergy = document.getElementById('rk-cost-energy');
    
    const sumTitle = document.getElementById('rk-sum-title');
    const sumDesc = document.getElementById('rk-sum-desc');
    const sumTotal = document.getElementById('rk-sum-total');

    // Baza danych kosztorysowych (Bezpieczna logika)
    const costData = {
        'pro': {
            pumpParam: 'Moc dobrana: 6 kW',
            pumpCost: '28 000 PLN',
            pipeParam: 'Wyliczone: 1 050 m',
            pipeCost: '3 675 PLN',
            copParam: 'Sprawność COP: 4,2',
            energyCost: '2 400 PLN',
            title: 'Wzorowa inwestycja',
            desc: 'Dzięki OZC (+600 PLN) kupujesz tylko niezbędny sprzęt.',
            total: '34 275 PLN'
        },
        'oko': {
            pumpParam: 'Przewymiarowana: 10 kW',
            pumpCost: '38 000 PLN',
            pipeParam: 'Nadmiar: 1 400 m',
            pipeCost: '4 900 PLN',
            copParam: 'Spadek COP do 3,1 (taktowanie)',
            energyCost: '3 450 PLN',
            title: 'Katastrofa budżetowa',
            desc: 'Brak projektu (0 PLN) kosztuje Cię gigantyczne przepalanie pieniędzy.',
            total: '46 100 PLN'
        }
    };

    function updateROI(mode) {
        const data = costData[mode];
        
        // Zmiana tekstów
        pPump.innerText = data.pumpParam;
        cPump.innerText = data.pumpCost;
        pPipe.innerText = data.pipeParam;
        cPipe.innerText = data.pipeCost;
        pCop.innerText = data.copParam;
        cEnergy.innerText = data.energyCost;
        
        sumTitle.innerText = data.title;
        sumDesc.innerText = data.desc;
        sumTotal.innerText = data.total;

        // Reset klas kontrolujących kolory (zielony/czerwony) w bezpieczny sposób
        wrapper.classList.remove('state-pro');
        wrapper.classList.remove('state-oko');
        wrapper.classList.add('state-' + mode);
    }

    // Obsługa zdarzeń
    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Usuwamy aktywność z innych
            btns.forEach(function(b) {
                b.classList.remove('active');
            });
            // Nadajemy temu klikniętemu
            this.classList.add('active');
            
            const mode = this.getAttribute('data-mode');
            updateROI(mode);
        });
    });

    // Uruchomienie domyślne (Stan PRO)
    updateROI('pro');
    wrapper.classList.add('state-pro');
});
</script>



<style>
:root {
    --rk-temp-dark: #0f172a;
    --rk-temp-blue: #0284c7;
    --rk-temp-light: #f8fafc;
    --rk-temp-border: #e2e8f0;
    --rk-temp-text: #475569;
    --rk-temp-green: #10b981;
    --rk-temp-green-bg: #dcfce7;
    --rk-temp-red: #ef4444;
    --rk-temp-red-bg: #fee2e2;
    --rk-temp-orange: #f59e0b;
    --rk-temp-orange-bg: #fef3c7;
}

.rk-temp-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.1);
    border: 1px solid var(--rk-temp-border);
    overflow: hidden;
}

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

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

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

/* Aplikacja - Główny układ pionowy (Stacked) */
.rk-temp-app {
    padding: 40px 50px;
    background: var(--rk-temp-light);
    display: flex;
    flex-direction: column;
    gap: 25px;
}

/* Panel sterowania suwakiem */
.rk-temp-controls {
    background: #ffffff;
    border-radius: 16px;
    padding: 35px 40px;
    border: 1px solid var(--rk-temp-border);
    box-shadow: 0 4px 10px -2px rgba(0,0,0,0.03);
}

.rk-temp-title-small {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-temp-dark);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 25px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-temp-slider-wrap {
    margin-bottom: 10px;
}

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

.rk-temp-value {
    font-size: 42px;
    font-weight: 900;
    color: var(--rk-temp-blue);
    line-height: 1;
}

.rk-temp-value span {
    font-size: 18px;
    color: #94a3b8;
    font-weight: 700;
}

.rk-temp-input {
    width: 100%;
    -webkit-appearance: none;
    height: 12px;
    background: linear-gradient(90deg, var(--rk-temp-green) 0%, var(--rk-temp-orange) 50%, var(--rk-temp-red) 100%);
    border-radius: 6px;
    outline: none;
}

.rk-temp-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #ffffff;
    cursor: pointer;
    border: 4px solid var(--rk-temp-dark);
    box-shadow: 0 4px 10px rgba(0,0,0,0.3);
    transition: transform 0.1s;
}

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

/* Kafelki danych inżynieryjnych pod suwakiem */
.rk-temp-dashboard {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
}

.rk-dash-box {
    background: #ffffff;
    border: 1px solid var(--rk-temp-border);
    border-radius: 12px;
    padding: 20px;
    text-align: center;
    transition: all 0.3s ease;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-dash-label {
    font-size: 11px;
    font-weight: 800;
    color: #94a3b8;
    text-transform: uppercase;
    margin-bottom: 8px;
    letter-spacing: 0.5px;
}

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

.rk-dash-sub {
    font-size: 12px;
    color: var(--rk-temp-text);
    margin-top: 5px;
}

/* Status Alert (Pełna szerokość) */
.rk-temp-status-card {
    border-radius: 16px;
    padding: 25px 35px;
    display: flex;
    align-items: center;
    gap: 20px;
    transition: all 0.4s ease;
    border: 2px solid transparent;
}

.rk-temp-status-icon {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.rk-temp-status-content h3 {
    margin: 0 0 5px 0;
    font-size: 20px;
    font-weight: 800;
}

.rk-temp-status-content p {
    margin: 0;
    font-size: 15px;
    line-height: 1.6;
}

/* Kolory Statusów */
.status-optimal {
    background: var(--rk-temp-green-bg);
    border-color: #86efac;
    color: #065f46;
}
.status-optimal .rk-temp-status-icon { background: var(--rk-temp-green); color: #ffffff; }

.status-warning {
    background: var(--rk-temp-orange-bg);
    border-color: #fcd34d;
    color: #92400e;
}
.status-warning .rk-temp-status-icon { background: var(--rk-temp-orange); color: #ffffff; }

.status-danger {
    background: var(--rk-temp-red-bg);
    border-color: #fca5a5;
    color: #991b1b;
}
.status-danger .rk-temp-status-icon { background: var(--rk-temp-red); color: #ffffff; }

/* Sekcja opisowa */
.rk-temp-desc {
    padding: 0 50px 40px;
    background: var(--rk-temp-light);
}

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

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

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

/* RWD */
@media (max-width: 768px) {
    .rk-temp-header, .rk-temp-app, .rk-temp-desc { padding: 30px 20px; }
    .rk-temp-controls { padding: 25px 20px; }
    .rk-temp-dashboard { grid-template-columns: 1fr; }
    .rk-temp-status-card { flex-direction: column; text-align: center; padding: 25px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#article-temperatura",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/"
    },
    "headline": "Jaka jest optymalna temperatura zasilania i powrotu (Delta T) dla ogrzewania podłogowego z pompą ciepła?",
    "description": "Wyjaśnienie wpływu temperatury zasilania na sprawność pompy ciepła (COP) oraz zdrowie użytkowników w odniesieniu do normy higienicznej PN-EN 1264.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-31",
    "dateModified": "2026-07-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#dataset-temperatura",
    "name": "Wpływ temperatury zasilania na parametry instalacji grzewczej",
    "description": "Korelacja między parametrem zasilania z pompy ciepła, utratą współczynnika COP a temperaturą powierzchniową posadzki według norm higienicznych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "optymalna temperatura zasilania podłogówki",
      "sprawność cop pompy ciepła",
      "norma pn-en 1264 temperatura podłogi",
      "maksymalna temperatura zasilania",
      "przegrzewanie stóp ogrzewanie podłogowe"
    ],
    "measurementTechnique": "Szacowanie odchyleń sprawności sprężarki (COP) i temperatury jastrychu na podstawie założonego spadku temperaturowego Delta T = 5K.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zasilanie 35°C: Optymalna sprawność COP, temperatura posadzki w strefie bezpiecznej, zgodność z normą PN-EN 1264.",
        "Zasilanie 40°C: Spadek COP, temperatura posadzki osiąga granicę zdrowotną (29°C), ryzyko problemów krążeniowych.",
        "Zasilanie 45°C+: Spadek COP o 20-25%, znaczne przekroczenie norm higienicznych, przegrzewanie stóp."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#webapp-temperatura",
    "name": "Symulator Sprawności COP i Norm Higienicznych",
    "description": "Interaktywny pionowy panel ilustrujący bezpośredni związek między podnoszeniem temperatury źródła ciepła a kosztami prądu i przekraczaniem norm zdrowotnych PN-EN.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-temp-container" id="rk-interactive-temperature">
    <div class="rk-temp-header">
        <h2>Jaka jest optymalna temperatura zasilania i powrotu dla ogrzewania podłogowego?</h2>
        <p>Zależność sprawności pompy ciepła od temperatury zasilania jest bezlitosna. Przesuń suwak, aby zobaczyć, jak przegrzewanie posadzki wpływa na Twoje rachunki i normy higieniczne układu krwionośnego.</p>
    </div>

    <div class="rk-temp-app">
        
        <!-- Górny Panel Sterowania Suwakiem -->
        <div class="rk-temp-controls">
            <div class="rk-temp-title-small">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4"></path><path d="M12 8h.01"></path></svg>
                Symuluj temperaturę zasilania (Tz)
            </div>

            <div class="rk-temp-slider-wrap">
                <div class="rk-temp-slider-info">
                    <div class="rk-temp-value"><span id="rk-temp-slider-val">35</span> <span>°C</span></div>
                </div>
                <input type="range" class="rk-temp-input" id="rk-temp-slider" min="30" max="55" step="1" value="35">
            </div>
        </div>

        <!-- Środkowy Panel Danych (Kafelki) -->
        <div class="rk-temp-dashboard">
            <div class="rk-dash-box" id="rk-box-cop">
                <div class="rk-dash-label">Spadek wydajności (COP)</div>
                <div class="rk-dash-val"><span id="rk-val-loss">0</span> %</div>
                <div class="rk-dash-sub" id="rk-val-cop-status">Sprawność wzorowa</div>
            </div>
            <div class="rk-dash-box" id="rk-box-floor">
                <div class="rk-dash-label">Temperatura Podłogi</div>
                <div class="rk-dash-val"><span id="rk-val-floor">~ 27.0</span> °C</div>
                <div class="rk-dash-sub">W strefie przebywania ludzi</div>
            </div>
            <div class="rk-dash-box">
                <div class="rk-dash-label">Parametr Delta T</div>
                <div class="rk-dash-val">5 K</div>
                <div class="rk-dash-sub">Tz=35°C, Tp=30°C</div>
            </div>
        </div>

        <!-- Dolny Alert Statusu -->
        <div class="rk-temp-status-card status-optimal" id="rk-temp-status-box">
            <div class="rk-temp-status-icon" id="rk-temp-status-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
            </div>
            <div class="rk-temp-status-content">
                <h3 id="rk-temp-status-title">Idealne parametry pracy</h3>
                <p id="rk-temp-status-desc">Pompa ciepła zużywa minimum prądu. Posadzka jest bezpieczna dla zdrowia i naczyń krwionośnych (zgodność z normą PN-EN 1264).</p>
            </div>
        </div>
        
    </div>

    <!-- Tekst inżynieryjny pod aplikacją -->
    <div class="rk-temp-desc">
        <h4>Sprawność źródła ciepła a rachunki</h4>
        <p>Optymalne parametry pracy wodnego ogrzewania współpracującego z powietrzną lub gruntową <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" target="_blank">pompą ciepła</a> wynoszą 35°C na zasilaniu oraz 30°C na powrocie. Różnica ta daje nam idealny spadek na poziomie Delta T = 5 K. Zależność sprawności jest prosta – im niższa różnica między temperaturą dolnego źródła (powietrze) a wylaną podłogówką, tym mniej pracy elektrycznej musi wykonać sprężarka. Podbicie temperatury do zaledwie 45°C powoduje spadek współczynnika COP o około 20-25%.</p>
        
        <h4>Medyczne i projektowe konsekwencje błędów</h4>
        <p>Pchanie zbyt gorącej wody to przekroczenie normy higienicznej posadzki. Zgodnie z normą <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/" target="_blank">PN-EN 1264</a>, maksymalna temperatura powierzchni podłogi w strefie przebywania ludzi wynosi +29°C, w łazienkach +33°C, a w strefach brzegowych przy oknach +35°C.</p>

        <p><a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/" target="_blank">Maksymalna temperatura zasilania</a> wyższa niż 40°C w źle wyliczonej pętli podnosi temperaturę posadzki powyżej bezpiecznych norm. Powoduje to fizjologiczne uczucie ciężkości nóg, nasila problemy krążeniowe i przyspiesza unoszenie kurzu przez silną konwekcję.</p>

        <p>Różnica temperatur Delta T = 5 K wymaga znacznie wyższych przepływów masowych niż w starych instalacjach z kaloryferami (gdzie Delta T wynosiło 15-20 K). Właśnie dlatego projektant musi dokładnie przeliczyć zjawiska hydrauliczne, wyznaczyć najwyższy opór (tzw. pętla krytyczna) i na tej podstawie idealnie dobrać <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/" target="_blank">pompę obiegową</a>, np. z podnoszeniem 6 m H₂O.</p>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const slider = document.getElementById('rk-temp-slider');
    const valDisplay = document.getElementById('rk-temp-slider-val');
    
    // Dane w kafelkach
    const valLoss = document.getElementById('rk-val-loss');
    const valCopStatus = document.getElementById('rk-val-cop-status');
    const valFloor = document.getElementById('rk-val-floor');
    
    const boxCop = document.getElementById('rk-box-cop');
    const boxFloor = document.getElementById('rk-box-floor');
    
    // Status box
    const statusBox = document.getElementById('rk-temp-status-box');
    const statusIcon = document.getElementById('rk-temp-status-icon');
    const statusTitle = document.getElementById('rk-temp-status-title');
    const statusDesc = document.getElementById('rk-temp-status-desc');

    // Ikony SVG (ciągi znaków)
    const iconDanger = '<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="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>';
    const iconWarning = '<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><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>';
    const iconOptimal = '<svg width="24" height="24" 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>';

    function updateSimulation() {
        const tz = parseInt(slider.value);
        valDisplay.innerText = tz;
        
        // Obliczenia symulacyjne
        let lossPercent = 0;
        let copText = "Sprawność wzorowa";
        let floorTemp = 24.0 + (tz - 30) * 0.6; // Empiryczne przybliżenie
        
        if (tz > 35) {
            lossPercent = Math.round((tz - 35) * 2.5); // Średnio 2.5% spadku sprawności na 1 stopień
            copText = "Wzrost kosztów";
            if (tz >= 45) {
                copText = "Utrata do 25% energii";
            }
        }

        valLoss.innerText = lossPercent;
        valCopStatus.innerText = copText;
        valFloor.innerText = "~ " + floorTemp.toFixed(1);

        // Bezpieczna logika oceny statusu (omijanie operatorów logicznych typu AND)
        
        // Reset kafelków
        boxCop.style.borderColor = "var(--rk-temp-border)";
        boxCop.style.backgroundColor = "#ffffff";
        boxFloor.style.borderColor = "var(--rk-temp-border)";
        boxFloor.style.backgroundColor = "#ffffff";
        statusBox.className = 'rk-temp-status-card';
        
        if (tz <= 35) {
            applyStatus('optimal', 'Idealne parametry pracy', 'Pompa ciepła pracuje z najlepszym możliwym COP. Posadzka jest zgodna z normami higienicznymi, oferując zdrowy komfort cieplny.', iconOptimal);
            return;
        }
        
        if (tz <= 40) {
            boxCop.style.borderColor = "#fcd34d";
            boxFloor.style.borderColor = "#fcd34d";
            applyStatus('warning', 'Spadek Sprawności Urządzenia', 'Sprężarka zmuszona jest do cięższej pracy. Koszty energii rosną, a podłoga zbliża się do fizjologicznego limitu +29°C.', iconWarning);
            return;
        }

        // Temperatura powyżej 40°C
        boxCop.style.borderColor = "#fca5a5";
        boxFloor.style.borderColor = "#fca5a5";
        boxFloor.style.backgroundColor = "var(--rk-temp-red-bg)";
        applyStatus('danger', 'Zagrożenie Zdrowotne i Finansowe', 'Utrata ćwierci energii. Temperatura posadzki uciążliwa dla zdrowia, przyspiesza konwekcję kurzu i powoduje uczucie "ciężkich nóg".', iconDanger);
    }

    function applyStatus(stateClass, title, desc, iconSvg) {
        statusBox.classList.add('status-' + stateClass);
        statusTitle.innerText = title;
        statusDesc.innerText = desc;
        statusIcon.innerHTML = iconSvg;
    }

    // Nasłuch zdarzeń
    slider.addEventListener('input', updateSimulation);

    // Inicjalizacja przy załadowaniu
    updateSimulation();
});
</script>



<style>
:root {
    --rk-loop-dark: #0f172a;
    --rk-loop-blue: #0284c7;
    --rk-loop-light: #f8fafc;
    --rk-loop-border: #e2e8f0;
    --rk-loop-text: #475569;
    --rk-loop-green: #10b981;
    --rk-loop-green-bg: #dcfce7;
    --rk-loop-red: #ef4444;
    --rk-loop-red-bg: #fee2e2;
    --rk-loop-orange: #f59e0b;
    --rk-loop-orange-bg: #fef3c7;
}

.rk-loop-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.1);
    border: 1px solid var(--rk-loop-border);
    overflow: hidden;
}

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

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

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

/* Aplikacja - Główny układ pionowy */
.rk-loop-app {
    padding: 40px 50px;
    background: var(--rk-loop-light);
    display: flex;
    flex-direction: column;
    gap: 25px;
}

/* Panel sterowania */
.rk-loop-controls {
    background: #ffffff;
    border-radius: 16px;
    padding: 35px 40px;
    border: 1px solid var(--rk-loop-border);
    box-shadow: 0 4px 10px -2px rgba(0,0,0,0.03);
}

.rk-loop-title-small {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-loop-dark);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    gap: 8px;
}

/* Suwak długości pętli */
.rk-loop-slider-wrap {
    margin-bottom: 30px;
}

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

.rk-loop-value {
    font-size: 36px;
    font-weight: 900;
    color: var(--rk-loop-blue);
    line-height: 1;
}

.rk-loop-value span {
    font-size: 16px;
    color: #94a3b8;
    font-weight: 700;
}

.rk-loop-input {
    width: 100%;
    -webkit-appearance: none;
    height: 10px;
    background: #e2e8f0;
    border-radius: 5px;
    outline: none;
}

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

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

/* Kafelki danych technicznych (pod suwakiem) */
.rk-loop-tech-data {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-tech-box {
    background: var(--rk-loop-light);
    border: 1px dashed var(--rk-loop-border);
    border-radius: 12px;
    padding: 20px 15px;
    text-align: center;
    transition: all 0.3s ease;
}

.rk-tech-label {
    font-size: 11px;
    font-weight: 800;
    color: #94a3b8;
    text-transform: uppercase;
    margin-bottom: 8px;
}

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

.rk-tech-box.warning-state {
    background: var(--rk-loop-red-bg);
    border-color: #fca5a5;
}

.rk-tech-box.warning-state .rk-tech-val {
    color: var(--rk-loop-red);
}

/* Wyniki / Status (Pasek na pełną szerokość) */
.rk-loop-status-card {
    border-radius: 16px;
    padding: 25px 35px;
    display: flex;
    align-items: center;
    gap: 20px;
    transition: all 0.4s ease;
    border: 2px solid transparent;
}

.rk-loop-status-icon {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.rk-loop-status-content h3 {
    margin: 0 0 5px 0;
    font-size: 20px;
    font-weight: 800;
}

.rk-loop-status-content p {
    margin: 0;
    font-size: 15px;
    line-height: 1.6;
}

/* Stany statusu */
.status-danger {
    background: var(--rk-loop-red-bg);
    border-color: #fca5a5;
    color: #991b1b;
}
.status-danger .rk-loop-status-icon { background: var(--rk-loop-red); color: #ffffff; }

.status-warning {
    background: var(--rk-loop-orange-bg);
    border-color: #fcd34d;
    color: #92400e;
}
.status-warning .rk-loop-status-icon { background: var(--rk-loop-orange); color: #ffffff; }

.status-optimal {
    background: var(--rk-loop-green-bg);
    border-color: #86efac;
    color: #065f46;
}
.status-optimal .rk-loop-status-icon { background: var(--rk-loop-green); color: #ffffff; }

/* Sekcja opisowa pod aplikacją */
.rk-loop-desc {
    padding: 0 50px 40px;
    background: var(--rk-loop-light);
}

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

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

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

/* RWD */
@media (max-width: 768px) {
    .rk-loop-header, .rk-loop-app, .rk-loop-desc { padding: 30px 20px; }
    .rk-loop-controls { padding: 25px 20px; }
    .rk-loop-tech-data { grid-template-columns: 1fr; }
    .rk-loop-status-card { flex-direction: column; text-align: center; padding: 25px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#article-petle",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/"
    },
    "headline": "Jaka jest maksymalna długość pętli ogrzewania podłogowego dla rury PEX/PERT 16x2 mm?",
    "description": "Wyjaśnienie zjawiska wzrostu oporów hydraulicznych w zależności od długości rury. Dowiedz się, dlaczego pętla nie może przekraczać 100 metró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://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-31",
    "dateModified": "2026-07-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#dataset-petle",
    "name": "Charakterystyka oporów hydraulicznych pętli grzewczych",
    "description": "Zestawienie przyrostu oporów ciśnienia w rurze grzewczej 16x2 mm w odniesieniu do jej długości całkowitej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna długość pętli ogrzewania podłogowego",
      "za długa pętla podłogówki skutki",
      "opór hydrauliczny rury pex 16",
      "dzielenie pętli grzewczych rozdzielacz",
      "ile metrów rury na pętlę"
    ],
    "measurementTechnique": "Algorytm wyznaczający spadek ciśnienia dla przepływu 2,0 l/min (około 200 Pa/m) w zależności od suwakowej długości rury.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Pętla 80-90m: Opór hydrauliczny w normie, pełny przepływ i zrównoważona temperatura.",
        "Pętla 100m: Wartość graniczna, opór bliski 20 kPa.",
        "Pętla 140m: Opór powyżej 28 kPa, blokada przepływu wody przez pompę, wychłodzenie strefowe posadzki."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#webapp-petle",
    "name": "Symulator Oporów Pętli Grzewczej",
    "description": "Interaktywne narzędzie inżynieryjne demonstrujące zjawisko narastania oporów hydraulicznych i zablokowania pompy obiegowej na skutek przekroczenia dopuszczalnej długości rury instalacyjnej.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-loop-container" id="rk-interactive-loop">
    <div class="rk-loop-header">
        <h2>Jaka jest maksymalna długość pętli ogrzewania podłogowego dla rury PEX/PERT 16x2 mm?</h2>
        <p>Wielu instalatorów próbuje oszczędzać na liczbie obiegów, stosując za długie rury. Użyj poniższego symulatora hydraulicznego, aby sprawdzić dlaczego przekroczenie określonej granicy drastycznie blokuje pracę całej instalacji.</p>
    </div>

    <div class="rk-loop-app">
        <!-- Panel sterowania -->
        <div class="rk-loop-controls">
            
            <div class="rk-loop-title-small">
                <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 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                Symuluj długość pojedynczej pętli
            </div>

            <div class="rk-loop-slider-wrap">
                <div class="rk-loop-slider-info">
                    <div class="rk-loop-value"><span id="rk-loop-slider-val">85</span> <span>metrów</span></div>
                </div>
                <input type="range" class="rk-loop-input" id="rk-loop-slider" min="40" max="160" step="5" value="85">
            </div>

            <div class="rk-loop-tech-data">
                <div class="rk-tech-box" id="rk-box-kpa">
                    <div class="rk-tech-label">Opór hydrauliczny instalacji</div>
                    <div class="rk-tech-val"><span id="rk-tech-kpa">17.0</span> kPa</div>
                </div>
                <div class="rk-tech-box" id="rk-box-temp">
                    <div class="rk-tech-label">Zasilanie obiegu wody</div>
                    <div class="rk-tech-val" id="rk-tech-status-pump">Pełny przepływ</div>
                </div>
            </div>

        </div>

        <!-- Wyniki / Diagnoza -->
        <div class="rk-loop-status-card status-optimal" id="rk-loop-status-box">
            <div class="rk-loop-status-icon" id="rk-loop-status-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
            </div>
            <div class="rk-loop-status-content">
                <h3 id="rk-loop-status-title">Długość Optymalna</h3>
                <p id="rk-loop-status-desc">Idealny zakres (80-90 m) gwarantujący równe oddawanie ciepła w całym pomieszczeniu bez obciążania pompy obiegowej.</p>
            </div>
        </div>
    </div>

    <!-- Tekst inżynieryjny pod kalkulatorem -->
    <div class="rk-loop-desc">
        <h4>Konsekwencje nieprzestrzegania granic długości</h4>
        <p>Opór hydrauliczny w rurze rośnie liniowo wraz z jej długością i kwadratowo wraz ze wzrostem prędkości przepływu. Dla standardowej rury 16x2 mm przy optymalnym przepływie 2,0 l/min (0,12 m³/h), spadek ciśnienia to aż 150–200 Pa na każdy metr. Oznacza to, że <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/" target="_blank">maksymalna długość pętli ogrzewania podłogowego</a> bezwzględnie nie powinna przekraczać 100 metrów.</p>
        
        <p>Gdy instalator ułoży np. 140 m rury z jednego kawałka, opory własne wyniosą ponad 28 kPa. Standardowa pompa wbudowana w pompę ciepła nie przepchnie takiej ilości wody. Skutek? Woda schłodzi się całkowicie już na 70 metrze, a druga połowa pokoju pozostanie lodowata (<a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/" target="_blank">za długa pętla podłogówki</a>).</p>
        
        <h4>Jak to wpływa na projekt ogrzewania podłogowego?</h4>
        <p>Precyzyjne wyliczenie tych parametrów to zadanie dla inżyniera. Jeśli z obliczeń wynika, że duży salon o powierzchni 35 m² wymaga użycia 350 metrów rury, projektant ma twardy obowiązek <a href="https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/" target="_blank">podzielenia tej powierzchni na 4 niezależne pętle</a> po około 87 metrów każda. Dopiero wtedy możliwe jest ich precyzyjne zbalansowanie na rotametrach, w które wyposażony jest <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/" target="_blank">rozdzielacz do podłogówki</a>.</p>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const slider = document.getElementById('rk-loop-slider');
    const valDisplay = document.getElementById('rk-loop-slider-val');
    
    // Dane techniczne
    const techKpa = document.getElementById('rk-tech-kpa');
    const techPump = document.getElementById('rk-tech-status-pump');
    const boxKpa = document.getElementById('rk-box-kpa');
    const boxTemp = document.getElementById('rk-box-temp');
    
    // Status box elements
    const statusBox = document.getElementById('rk-loop-status-box');
    const statusIcon = document.getElementById('rk-loop-status-icon');
    const statusTitle = document.getElementById('rk-loop-status-title');
    const statusDesc = document.getElementById('rk-loop-status-desc');

    // Ikony (ciągi znaków)
    const iconDanger = '<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="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>';
    const iconWarning = '<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="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>';
    const iconOptimal = '<svg width="24" height="24" 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>';

    function updateSimulator() {
        const lengthVal = parseInt(slider.value);
        valDisplay.innerText = lengthVal;
        
        // Obliczenie oporu (przybliżenie: 200 Pa/m = 0.2 kPa/m)
        const kpaVal = lengthVal * 0.2;
        techKpa.innerText = kpaVal.toFixed(1);

        // Bezpieczna logika oceny (zagnieżdżone ify z użyciem return, aby ominąć &&)
        
        // Czyszczenie stylów ostrzegawczych w kafelkach danych
        boxKpa.classList.remove('warning-state');
        boxTemp.classList.remove('warning-state');
        statusBox.className = 'rk-loop-status-card';
        
        if (lengthVal <= 90) {
            techPump.innerText = "Pełny przepływ";
            applyStatus('optimal', 'Długość Optymalna', 'Idealny zakres gwarantujący równe oddawanie ciepła w całym pomieszczeniu bez przeciążania pompy obiegowej.', iconOptimal);
            return;
        }
        
        if (lengthVal <= 100) {
            techPump.innerText = "Spowolniony przepływ";
            applyStatus('warning', 'Wartość Graniczna', 'Zbliżasz się do maksymalnego oporu hydraulicznego (20 kPa). Pompa musi pracować na wyższych obrotach.', iconWarning);
            return;
        }

        // Powyżej 100 metrów
        boxKpa.classList.add('warning-state');
        boxTemp.classList.add('warning-state');
        techPump.innerText = "Zablokowany przepływ";
        
        if (lengthVal > 120) {
            applyStatus('danger', 'Martwa Strefa Posadzki', 'Opory powyżej 24 kPa. Pompa nie jest w stanie przepchnąć wody. Posadzka w drugiej części pętli będzie całkowicie zimna.', iconDanger);
        } else {
            applyStatus('danger', 'Zbyt Długa Pętla', 'Przekroczenie norm. Nastąpi strefowe wychłodzenie posadzki pod koniec trasy rury z powodu zablokowania hydraulicznego.', iconDanger);
        }
    }

    function applyStatus(stateClass, title, desc, iconSvg) {
        statusBox.classList.add('status-' + stateClass);
        statusTitle.innerText = title;
        statusDesc.innerText = desc;
        statusIcon.innerHTML = iconSvg;
    }

    // Eventy
    slider.addEventListener('input', updateSimulator);

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



<style>
:root {
    --rk-iso-dark: #0f172a;
    --rk-iso-blue: #0284c7;
    --rk-iso-light: #f8fafc;
    --rk-iso-border: #e2e8f0;
    --rk-iso-text: #475569;
    --rk-iso-green: #10b981;
    --rk-iso-green-bg: #dcfce7;
    --rk-iso-red: #ef4444;
    --rk-iso-red-bg: #fee2e2;
    --rk-iso-orange: #f59e0b;
    --rk-iso-orange-bg: #fef3c7;
}

.rk-iso-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.1);
    border: 1px solid var(--rk-iso-border);
    overflow: hidden;
}

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

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

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

/* Aplikacja - Główny układ pionowy (Stacked) */
.rk-iso-app {
    padding: 40px 50px;
    background: var(--rk-iso-light);
    display: flex;
    flex-direction: column;
    gap: 25px;
}

/* Panel sterowania */
.rk-iso-controls {
    background: #ffffff;
    border-radius: 16px;
    padding: 35px 40px;
    border: 1px solid var(--rk-iso-border);
    box-shadow: 0 4px 10px -2px rgba(0,0,0,0.03);
}

.rk-iso-title-small {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-iso-dark);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 15px;
    display: flex;
    align-items: center;
    gap: 8px;
}

/* Przełącznik lokalizacji podłogi */
.rk-iso-toggle-box {
    display: flex;
    background: var(--rk-iso-light);
    border: 1px solid var(--rk-iso-border);
    border-radius: 12px;
    overflow: hidden;
    margin-bottom: 35px;
}

.rk-iso-btn {
    flex: 1;
    padding: 16px 10px;
    text-align: center;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-iso-text);
    background: transparent;
    border: none;
    cursor: pointer;
    transition: all 0.3s;
    border-right: 1px solid var(--rk-iso-border);
}

.rk-iso-btn:last-child {
    border-right: none;
}

.rk-iso-btn.active {
    background: var(--rk-iso-blue);
    color: #ffffff;
}

/* Suwak grubości */
.rk-iso-slider-wrap {
    margin-bottom: 30px;
    background: #ffffff;
}

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

.rk-iso-value {
    font-size: 36px;
    font-weight: 900;
    color: var(--rk-iso-blue);
    line-height: 1;
}

.rk-iso-value span {
    font-size: 16px;
    color: #94a3b8;
    font-weight: 700;
}

.rk-iso-input {
    width: 100%;
    -webkit-appearance: none;
    height: 10px;
    background: #e2e8f0;
    border-radius: 5px;
    outline: none;
}

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

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

/* Kafelki danych technicznych */
.rk-iso-tech-data {
    display: grid;
    grid-template-columns: 1fr;
    gap: 15px;
}

.rk-tech-box {
    background: var(--rk-iso-light);
    border: 1px dashed var(--rk-iso-border);
    border-radius: 12px;
    padding: 15px 25px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.rk-tech-label {
    font-size: 13px;
    font-weight: 800;
    color: #94a3b8;
    text-transform: uppercase;
}

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

.rk-tech-sub {
    font-size: 11px;
    color: var(--rk-iso-text);
}

/* Wyniki / Status */
.rk-iso-status-card {
    border-radius: 16px;
    padding: 25px 35px;
    display: flex;
    align-items: center;
    gap: 20px;
    transition: all 0.4s ease;
    border: 2px solid transparent;
}

.rk-iso-status-icon {
    width: 50px;
    height: 50px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.rk-iso-status-content h3 {
    margin: 0 0 8px 0;
    font-size: 20px;
    font-weight: 800;
}

.rk-iso-status-content p {
    margin: 0;
    font-size: 15px;
    line-height: 1.6;
}

/* Stany statusu */
.status-danger {
    background: var(--rk-iso-red-bg);
    border-color: #fca5a5;
    color: #991b1b;
}
.status-danger .rk-iso-status-icon { background: var(--rk-iso-red); color: #ffffff; }

.status-warning {
    background: var(--rk-iso-orange-bg);
    border-color: #fcd34d;
    color: #92400e;
}
.status-warning .rk-iso-status-icon { background: var(--rk-iso-orange); color: #ffffff; }

.status-optimal {
    background: var(--rk-iso-green-bg);
    border-color: #86efac;
    color: #065f46;
}
.status-optimal .rk-iso-status-icon { background: var(--rk-iso-green); color: #ffffff; }

/* Sekcja opisowa */
.rk-iso-desc {
    padding: 0 50px 40px;
    background: var(--rk-iso-light);
}

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

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

/* RWD */
@media (max-width: 768px) {
    .rk-iso-header, .rk-iso-app, .rk-iso-desc { padding: 30px 20px; }
    .rk-iso-controls { padding: 25px 20px; }
    .rk-iso-toggle-box { flex-direction: column; }
    .rk-iso-btn { border-right: none; border-bottom: 1px solid var(--rk-iso-border); padding: 14px; }
    .rk-iso-btn:last-child { border-bottom: none; }
    .rk-tech-box { flex-direction: column; text-align: center; gap: 8px; }
    .rk-iso-status-card { flex-direction: column; text-align: center; padding: 25px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#article-izolacja",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/"
    },
    "headline": "Jak gruba powinna być izolacja termiczna pod ogrzewaniem podłogowym (styropian)?",
    "description": "Wymagania grubości styropianu EPS/XPS pod ogrzewanie podłogowe zgodnie z PN-EN 1264-4 i WT 2021. Wyjaśniamy opór cieplny R i ucieczkę ciepła do gruntu.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-31",
    "dateModified": "2026-07-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#dataset-izolacja",
    "name": "Parametry termiczne i opór izolacji podłóg grzewczych",
    "description": "Zestawienie minimalnych grubości styropianu oraz wymaganego oporu cieplnego R [m2K/W] dla podłóg na gruncie, nad garażem oraz między piętrami.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ile styropianu pod ogrzewanie podłogowe",
      "opór cieplny izolacji podłogówki",
      "izolacja termiczna na gruncie eps 100",
      "grubość styropianu nad garażem",
      "norma pn-en 1264-4 podłogówka"
    ],
    "measurementTechnique": "Kalkulacja oporu cieplnego R na podstawie grubości i przewodności cieplnej Lambda (0,038 W/mK) styropianu podkładowego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Podłoga na gruncie (WT 2021): R >= 3,75 m2K/W, minimum 15 cm styropianu EPS 100.",
        "Strop nad garażem/piwnicą: R = 1,25 m2K/W, zalecane 10-12 cm EPS.",
        "Strop między piętrami ogrzewanymi: R = 0,75 m2K/W, minimum 3-5 cm izolacji."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#webapp-izolacja",
    "name": "Symulator Ucieczki Ciepła i Doboru Styropianu",
    "description": "Narzędzie interaktywne weryfikujące poprawność dobranej grubości izolacji podłogowej i wyliczające rzeczywisty opór cieplny przegrody w kontekście Warunków Technicznych.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-iso-container" id="rk-interactive-insulation">
    <div class="rk-iso-header">
        <h2>Jak gruba powinna być izolacja termiczna pod ogrzewaniem podłogowym?</h2>
        <p>Błędy na etapie wylewania tzw. chudziaka i układania styropianu są nieodwracalne. Wykorzystaj nasz symulator fizyki budowli, by sprawdzić, czy nie będziesz ogrzewać ziemi zamiast własnego domu.</p>
    </div>

    <div class="rk-iso-app">
        <!-- Panel sterowania -->
        <div class="rk-iso-controls">
            
            <div class="rk-iso-title-small">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 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>
                1. Wybierz lokalizację podłogi
            </div>
            
            <div class="rk-iso-toggle-box" id="rk-iso-toggles">
                <button class="rk-iso-btn active" data-type="grunt">Podłoga na gruncie</button>
                <button class="rk-iso-btn" data-type="zimne">Nad nieogrzewanym</button>
                <button class="rk-iso-btn" data-type="pietro">Strop (piętro)</button>
            </div>

            <div class="rk-iso-title-small">
                <svg width="18" height="18" 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="12" y1="8" x2="12" y2="16"></line><line x1="8" y1="12" x2="16" y2="12"></line></svg>
                2. Podaj grubość styropianu EPS
            </div>

            <div class="rk-iso-slider-wrap">
                <div class="rk-iso-slider-info">
                    <div class="rk-iso-value"><span id="rk-iso-slider-val">15</span> <span>cm</span></div>
                </div>
                <input type="range" class="rk-iso-input" id="rk-iso-slider" min="2" max="25" step="1" value="15">
            </div>

            <div class="rk-iso-tech-data">
                <div class="rk-tech-box">
                    <div class="rk-tech-label">Wyliczony Opór Cieplny (R)</div>
                    <div>
                        <span class="rk-tech-val" id="rk-iso-r-val">3.95</span>
                        <span class="rk-tech-sub"> m²K/W</span>
                    </div>
                </div>
            </div>

        </div>

        <!-- Wyniki / Diagnoza -->
        <div class="rk-iso-status-card status-optimal" id="rk-iso-status-box">
            <div class="rk-iso-status-icon" id="rk-iso-status-icon">
                <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
            </div>
            <div class="rk-iso-status-content">
                <h3 id="rk-iso-status-title">Idealna Izolacja Termiczna</h3>
                <p id="rk-iso-status-desc">Spełnia rygorystyczne normy WT 2021 oraz PN-EN 1264-4. Ciepło emitowane przez rury trafia w 100% do wnętrza pomieszczenia.</p>
            </div>
        </div>
    </div>

    <!-- Tekst inżynieryjny -->
    <div class="rk-iso-desc">
        <p>Zastosowanie zbyt cienkiej warstwy izolacji termicznej na gruncie (np. popularne ciągle wśród domorosłych wykonawców 5–8 cm) prowadzi do potężnego zjawiska ucieczki ciepła w dół. Działa tu bezlitosne prawo fizyki – strumień ciepła zawsze płynie w stronę niższej temperatury.</p>
        <p>Przy gruncie o temperaturze +5°C i rurach rozgrzewających posadzkę do +28°C, niedostatecznie odizolowana płyta fundamentowa przekazuje nawet 20-30% wygenerowanego z pompy ciepła prosto w ziemię. Jeśli zastanawiasz się, <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/" target="_blank">ile styropianu pod ogrzewanie podłogowe</a> kupić, pamiętaj o wytycznych normy PN-EN 1264-4, która jasno definiuje absolutne minimum oporu cieplnego.</p>
        <p>Inaczej sytuacja wygląda w domach piętrowych. <a href="https://projekt-ogrzewania.pl/jakie-sa-najlepsze-sposoby-izolacji-pod-ogrzewanie-podlogowe/" target="_blank">Najlepsze sposoby izolacji</a> między kondygnacjami ogrzewanymi nie skupiają się na zatrzymaniu ciepła (to zostaje w obrębie bryły domu), lecz na stworzeniu twardej podbudowy akustycznej. Zazwyczaj 3-5 cm specjalistycznego twardego EPS lub wełny w zupełności zamyka temat.</p>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const toggles = document.querySelectorAll('.rk-iso-btn');
    const slider = document.getElementById('rk-iso-slider');
    const valDisplay = document.getElementById('rk-iso-slider-val');
    
    // Dane techniczne
    const rValDisplay = document.getElementById('rk-iso-r-val');
    
    // Status box
    const statusBox = document.getElementById('rk-iso-status-box');
    const statusIcon = document.getElementById('rk-iso-status-icon');
    const statusTitle = document.getElementById('rk-iso-status-title');
    const statusDesc = document.getElementById('rk-iso-status-desc');

    // Ikony (ciągi znaków)
    const iconDanger = '<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>';
    const iconWarning = '<svg width="28" height="28" 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><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>';
    const iconOptimal = '<svg width="28" height="28" 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>';

    // Lambda dla popularnego EPS (w uproszczeniu 0.038)
    const LAMBDA_EPS = 0.038;
    
    // Stan aplikacji
    let currentMode = 'grunt';

    // Aktualizacja przedziałów suwaka w zależności od trybu
    function adjustSliderBounds() {
        if (currentMode === 'grunt') {
            slider.min = 2; slider.max = 25;
            if(slider.value < 10) slider.value = 15;
        } else if (currentMode === 'zimne') {
            slider.min = 2; slider.max = 20;
            if(slider.value < 5) slider.value = 10;
        } else if (currentMode === 'pietro') {
            slider.min = 2; slider.max = 10;
            if(slider.value > 10) slider.value = 5;
        }
    }

    function updateSimulator() {
        const thicknessCm = parseInt(slider.value);
        valDisplay.innerText = thicknessCm;
        
        // Obliczenie oporu R = d [m] / lambda
        const thicknessM = thicknessCm / 100;
        const rValue = thicknessM / LAMBDA_EPS;
        rValDisplay.innerText = rValue.toFixed(2);

        // Bezpieczna logika oceny (zagnieżdżone ify z użyciem return, omijające '&&')
        statusBox.className = 'rk-iso-status-card';
        
        if (currentMode === 'grunt') {
            if (thicknessCm < 10) {
                applyStatus('danger', 'Katastrofalna Ucieczka Ciepła', 'Warstwa 5-8 cm to grzanie ziemi. Opór poniżej R=2.0 m²K/W narusza przepisy. Rachunki za ogrzewanie wzrosną drastycznie.', iconDanger);
                return;
            }
            if (thicknessCm < 15) {
                applyStatus('warning', 'Poniżej Standardu WT 2021', 'Styropian 10-12 cm wystarczy dla normy PN-EN, ale jest niezgodny ze współczesnymi wytycznymi energetycznymi domów jednorodzinnych.', iconWarning);
                return;
            }
            applyStatus('optimal', 'Idealna Izolacja Termiczna', 'Minimum 15 cm gwarantuje opór R > 3.75. Ciepło emitowane przez pętle podłogówki trafia w 100% do wnętrza domu.', iconOptimal);
            
        } else if (currentMode === 'zimne') { // Nad garażem/piwnicą
            if (thicknessCm < 8) {
                applyStatus('danger', 'Wychładzanie Stropu', 'Zbyt niska izolacja nad zimnym garażem spowoduje ucieczkę ciepła i wychłodzenie posadzki.', iconDanger);
                return;
            }
            if (thicknessCm < 10) {
                applyStatus('warning', 'Na Granicy Normy', 'Wymagane absolutne minimum R=1.25 m²K/W. Warto rozważyć dołożenie chociaż 2 cm.', iconWarning);
                return;
            }
            applyStatus('optimal', 'Prawidłowa Izolacja Stropu', 'Grubość 10-12 cm skutecznie odcina przepływ zimna z nieogrzewanej piwnicy lub garażu.', iconOptimal);
            
        } else { // Między piętrami (ogrzewanymi)
            if (thicknessCm < 3) {
                applyStatus('danger', 'Brak Podbudowy', 'Brak miejsca na ukrycie instalacji wod-kan i drastyczne przenoszenie dźwięków uderzeniowych na niższe piętro.', iconDanger);
                return;
            }
            applyStatus('optimal', 'Optymalna Izolacja Piętra', 'Między piętrami nie walczymy o zatrzymanie ciepła (nie ucieka na zewnątrz). 3-5 cm służy jako doskonała izolacja akustyczna.', iconOptimal);
        }
    }

    function applyStatus(stateClass, title, desc, iconSvg) {
        statusBox.classList.add('status-' + stateClass);
        statusTitle.innerText = title;
        statusDesc.innerText = desc;
        statusIcon.innerHTML = iconSvg;
    }

    // Eventy
    toggles.forEach(function(btn) {
        btn.addEventListener('click', function() {
            toggles.forEach(function(b) {
                b.classList.remove('active');
            });
            this.classList.add('active');
            currentMode = this.getAttribute('data-type');
            adjustSliderBounds();
            updateSimulator();
        });
    });

    slider.addEventListener('input', updateSimulator);

    // Inicjalizacja
    adjustSliderBounds();
    updateSimulator();
});
</script>



<style>
:root {
    --rk-screed-dark: #0f172a;
    --rk-screed-blue: #0284c7;
    --rk-screed-light: #f8fafc;
    --rk-screed-border: #e2e8f0;
    --rk-screed-text: #475569;
    --rk-screed-green: #10b981;
    --rk-screed-green-bg: #dcfce7;
    --rk-screed-red: #ef4444;
    --rk-screed-red-bg: #fee2e2;
    --rk-screed-orange: #f59e0b;
    --rk-screed-orange-bg: #fef3c7;
}

.rk-screed-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.1);
    border: 1px solid var(--rk-screed-border);
    overflow: hidden;
}

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

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

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

/* Aplikacja - Główny układ pionowy (Stacked) */
.rk-screed-app {
    padding: 40px 50px;
    background: var(--rk-screed-light);
    display: flex;
    flex-direction: column;
    gap: 25px;
}

/* Panel sterowania */
.rk-screed-controls {
    background: #ffffff;
    border-radius: 16px;
    padding: 35px 40px;
    border: 1px solid var(--rk-screed-border);
    box-shadow: 0 4px 10px -2px rgba(0,0,0,0.03);
}

.rk-screed-title-small {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-screed-dark);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 15px;
    display: flex;
    align-items: center;
    gap: 8px;
}

/* Przełącznik typu wylewki */
.rk-screed-toggle-box {
    display: flex;
    background: var(--rk-screed-light);
    border: 1px solid var(--rk-screed-border);
    border-radius: 12px;
    overflow: hidden;
    margin-bottom: 35px;
}

.rk-screed-btn {
    flex: 1;
    padding: 16px 10px;
    text-align: center;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-screed-text);
    background: transparent;
    border: none;
    cursor: pointer;
    transition: all 0.3s;
}

.rk-screed-btn.active {
    background: var(--rk-screed-blue);
    color: #ffffff;
}

/* Suwak grubości */
.rk-screed-slider-wrap {
    margin-bottom: 30px;
    background: #ffffff;
}

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

.rk-screed-value {
    font-size: 36px;
    font-weight: 900;
    color: var(--rk-screed-blue);
    line-height: 1;
}

.rk-screed-value span {
    font-size: 16px;
    color: #94a3b8;
    font-weight: 700;
}

.rk-screed-input {
    width: 100%;
    -webkit-appearance: none;
    height: 10px;
    background: #e2e8f0;
    border-radius: 5px;
    outline: none;
}

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

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

/* Kafelki danych technicznych (pod suwakiem) */
.rk-screed-tech-data {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-tech-box {
    background: var(--rk-screed-light);
    border: 1px dashed var(--rk-screed-border);
    border-radius: 12px;
    padding: 15px;
    text-align: center;
}

.rk-tech-label {
    font-size: 11px;
    font-weight: 800;
    color: #94a3b8;
    text-transform: uppercase;
    margin-bottom: 5px;
}

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

/* Wyniki / Status (Pasek na pełną szerokość) */
.rk-screed-status-card {
    border-radius: 16px;
    padding: 25px 35px;
    display: flex;
    align-items: center;
    gap: 20px;
    transition: all 0.4s ease;
    border: 2px solid transparent;
}

.rk-screed-status-icon {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.rk-screed-status-content h3 {
    margin: 0 0 5px 0;
    font-size: 20px;
    font-weight: 800;
}

.rk-screed-status-content p {
    margin: 0;
    font-size: 15px;
    line-height: 1.6;
}

/* Stany statusu */
.status-danger {
    background: var(--rk-screed-red-bg);
    border-color: #fca5a5;
    color: #991b1b;
}
.status-danger .rk-screed-status-icon { background: var(--rk-screed-red); color: #ffffff; }

.status-warning {
    background: var(--rk-screed-orange-bg);
    border-color: #fcd34d;
    color: #92400e;
}
.status-warning .rk-screed-status-icon { background: var(--rk-screed-orange); color: #ffffff; }

.status-optimal {
    background: var(--rk-screed-green-bg);
    border-color: #86efac;
    color: #065f46;
}
.status-optimal .rk-screed-status-icon { background: var(--rk-screed-green); color: #ffffff; }

/* Sekcja opisowa pod aplikacją */
.rk-screed-desc {
    padding: 0 50px 40px;
    background: var(--rk-screed-light);
}

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

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

/* RWD */
@media (max-width: 768px) {
    .rk-screed-header, .rk-screed-app, .rk-screed-desc { padding: 30px 20px; }
    .rk-screed-controls { padding: 25px 20px; }
    .rk-screed-tech-data { grid-template-columns: 1fr; }
    .rk-screed-status-card { flex-direction: column; text-align: center; padding: 25px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#article-wylewka",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/"
    },
    "headline": "Jaka grubość wylewki (jastrychu) jest wymagana na ogrzewanie podłogowe?",
    "description": "Porównanie parametrów wylewki anhydrytowej i cementowej. Normy PN-EN 13813, minimalne grubości nad rurą oraz wpływ jastrychu na bezwładność cieplną.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-31",
    "dateModified": "2026-07-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#dataset-wylewka",
    "name": "Parametry fizyczne jastrychów podłogowych",
    "description": "Zestawienie minimalnych grubości montażowych oraz współczynników przewodzenia ciepła Lambda dla popularnych typów wylewek grzewczych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "grubość wylewki na podłogówkę",
      "jastrych anhydrytowy vs cementowy",
      "bezwładność cieplna podłogówki",
      "współczynnik przewodzenia lambda beton",
      "pękanie płytek na ogrzewaniu"
    ],
    "measurementTechnique": "Określenie normatywnych limitów strukturalnych posadzki (PN-EN 13813) w powiązaniu z wydajnością cieplną.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Jastrych Anhydrytowy: Min. 35 mm nad rurą (łączna 51 mm), wysoka przewodność ciepła.",
        "Jastrych Cementowy: Min. 45 mm nad rurą (łączna 61 mm), wysoka bezwładność termiczna.",
        "Zbyt cienka wylewka: Ryzyko spękań i uszkodzenia okładziny.",
        "Zbyt gruba wylewka: Czas reakcji systemu rośnie nawet do 10 godzin."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#webapp-wylewka",
    "name": "Symulator Grubości i Bezwładności Jastrychu",
    "description": "Interaktywny panel obliczeniowy weryfikujący poprawność dobranej grubości posadzki pod kątem norm budowlanych i ryzyka spękań termicznych.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-screed-container" id="rk-interactive-screed">
    <div class="rk-screed-header">
        <h2>Jaka grubość wylewki (jastrychu) jest wymagana na ogrzewanie podłogowe?</h2>
        <p>Wymogi dla wylewek definiuje norma wytrzymałościowa PN-EN 13813. Przetestuj w naszym symulatorze, jak grubość wylanego betonu wpłynie na stabilność Twoich płytek i rachunki za ogrzewanie.</p>
    </div>

    <div class="rk-screed-app">
        <!-- Panel suwaka i opcji -->
        <div class="rk-screed-controls">
            
            <div class="rk-screed-title-small">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 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>
                1. Wybierz rodzaj wylewki
            </div>
            
            <div class="rk-screed-toggle-box" id="rk-screed-toggles">
                <button class="rk-screed-btn active" data-type="anhydryt">Anhydrytowa</button>
                <button class="rk-screed-btn" data-type="cement">Cementowa</button>
            </div>

            <div class="rk-screed-title-small">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="21" y1="10" x2="3" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="3" y2="18"></line></svg>
                2. Symuluj łączną grubość
            </div>

            <div class="rk-screed-slider-wrap">
                <div class="rk-screed-slider-info">
                    <div class="rk-screed-value"><span id="rk-slider-val">55</span> <span>mm</span></div>
                </div>
                <input type="range" class="rk-screed-input" id="rk-screed-slider" min="30" max="110" step="1" value="55">
            </div>

            <div class="rk-screed-tech-data">
                <div class="rk-tech-box">
                    <div class="rk-tech-label">Przewodzenie (Lambda)</div>
                    <div class="rk-tech-val" id="rk-tech-lambda">~ 1.6 W/(m·K)</div>
                </div>
                <div class="rk-tech-box">
                    <div class="rk-tech-label">Zbrojenie Siatką</div>
                    <div class="rk-tech-val" id="rk-tech-mesh">Niewymagane</div>
                </div>
            </div>

        </div>

        <!-- Wyniki / Diagnoza (Poniżej panelu sterowania) -->
        <div class="rk-screed-status-card status-optimal" id="rk-status-box">
            <div class="rk-screed-status-icon" id="rk-status-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
            </div>
            <div class="rk-screed-status-content">
                <h3 id="rk-status-title">Grubość Optymalna</h3>
                <p id="rk-status-desc">Idealny balans wytrzymałości oraz dynamiki oddawania ciepła. Zgodność z wytycznymi normowymi.</p>
            </div>
        </div>
    </div>

    <!-- Tekst wspomagający z linkami -->
    <div class="rk-screed-desc">
        <p>Wykonanie <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/" target="_blank">wylewki na ogrzewanie podłogowe</a> niezgodnie z reżimem technologicznym pociąga za sobą poważne konsekwencje. Konstrukcja zbyt cienka (np. 20 mm nad rurą) ulega punktowym spękaniom skurczowym, co bezpośrednio niszczy przyklejone płytki ceramiczne.</p>
        <p>Z kolei ułożenie potężnej, 10-centymetrowej warstwy betonu drastycznie podbija <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/" target="_blank">bezwładność cieplną w ogrzewaniu podłogowym</a>. Zamiast reagować w 2 godziny, ciężka <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" target="_blank">wylewka betonowa</a> może potrzebować nawet 10 godzin na oddanie ciepła, paraliżując pracę automatyki sterującej.</p>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const toggles = document.querySelectorAll('.rk-screed-btn');
    const slider = document.getElementById('rk-screed-slider');
    const valDisplay = document.getElementById('rk-slider-val');
    
    // Elementy danych technicznych
    const techLambda = document.getElementById('rk-tech-lambda');
    const techMesh = document.getElementById('rk-tech-mesh');
    
    // Status box elements
    const statusBox = document.getElementById('rk-status-box');
    const statusIcon = document.getElementById('rk-status-icon');
    const statusTitle = document.getElementById('rk-status-title');
    const statusDesc = document.getElementById('rk-status-desc');

    // Ikony (ciągi znaków)
    const iconDanger = '<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="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>';
    const iconWarning = '<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="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>';
    const iconOptimal = '<svg width="24" height="24" 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>';

    // Stan aplikacji
    let currentMode = 'anhydryt';

    // Baza logiki
    const matData = {
        'anhydryt': { lambda: '~ 1.6 W/(m·K)', mesh: 'Niewymagane' },
        'cement': { lambda: '~ 1.1 W/(m·K)', mesh: 'Włókna/Siatka' }
    };

    function updateSimulator() {
        const val = parseInt(slider.value);
        valDisplay.innerText = val;
        
        // Aktualizacja danych technicznych
        techLambda.innerText = matData[currentMode].lambda;
        techMesh.innerText = matData[currentMode].mesh;

        // Bezpieczna logika oceny (zagnieżdżone ify z użyciem return, aby ominąć &&)
        
        // Domyślne czyszczenie klas
        statusBox.className = 'rk-screed-status-card';
        
        if (currentMode === 'anhydryt') {
            // Anhydryt normy: min 51mm (35mm nad rurą 16mm). Powyżej 70mm robimy ostrzeżenie o bezwładności.
            if (val < 51) {
                applyStatus('danger', 'Zbyt Cienka Wylewka', 'Brak stabilności mechanicznej. Ogromne ryzyko spękań skurczowych oraz pękania ułożonych płytek ceramicznych.', iconDanger);
                return;
            } 
            if (val > 70) {
                applyStatus('warning', 'Wysoka Bezwładność', 'Przewymiarowana warstwa. System nagrzewa się z opóźnieniem generując straty energii przy zyskach słonecznych.', iconWarning);
                return;
            }
            // Jeśli nie jest za cienka, ani za gruba = optymalna
            applyStatus('optimal', 'Grubość Optymalna', 'Idealny balans. Gwarantuje wytrzymałość posadzki oraz znakomitą, szybką dynamikę oddawania ciepła.', iconOptimal);
            
        } else {
            // Cement normy: min 61mm (45mm nad rurą 16mm). Powyżej 80mm ostrzeżenie o krytycznej bezwładności.
            if (val < 61) {
                applyStatus('danger', 'Krytyczne Niedomiarowanie', 'Jastrych cementowy o tej grubości nad rurą nie spełnia normy PN-EN 13813. Ryzyko załamania posadzki.', iconDanger);
                return;
            }
            if (val > 80) {
                applyStatus('warning', 'Zbyt Gruba (Blokada Ciepła)', 'Drastyczny wzrost bezwładności cieplnej. Czas reakcji podłogówki wydłuża się z 3 do nawet 10 godzin.', iconWarning);
                return;
            }
            // Zgodnie z normą
            applyStatus('optimal', 'Zgodność z Normą', 'Prawidłowa grubość dla tradycyjnego jastrychu betonowego, zapewniająca bezpieczne przykrycie rur PEX.', iconOptimal);
        }
    }

    function applyStatus(stateClass, title, desc, iconSvg) {
        statusBox.classList.add('status-' + stateClass);
        statusTitle.innerText = title;
        statusDesc.innerText = desc;
        statusIcon.innerHTML = iconSvg;
    }

    // Eventy
    toggles.forEach(function(btn) {
        btn.addEventListener('click', function() {
            toggles.forEach(function(b) {
                b.classList.remove('active');
            });
            this.classList.add('active');
            currentMode = this.getAttribute('data-type');
            updateSimulator();
        });
    });

    slider.addEventListener('input', updateSimulator);

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



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-blue: #0284c7;
    --rk-calc-blue-light: #e0f2fe;
    --rk-calc-gray: #f8fafc;
    --rk-calc-border: #e2e8f0;
    --rk-calc-text: #475569;
    --rk-calc-accent: #38bdf8;
    --rk-calc-green: #10b981;
}

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

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

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

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

/* Sekcja Teoretyczna (Wzory) */
.rk-calc-theory {
    padding: 35px 50px;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-calc-border);
}

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

.rk-calc-step {
    background: var(--rk-calc-gray);
    padding: 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-calc-border);
}

.rk-calc-step-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-calc-blue);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 10px;
}

.rk-calc-step-desc {
    font-size: 14px;
    color: var(--rk-calc-text);
    line-height: 1.5;
    margin: 0 0 10px 0;
}

.rk-calc-math {
    background: #ffffff;
    padding: 10px;
    border-radius: 8px;
    text-align: center;
    border: 1px dashed #cbd5e1;
    font-size: 14px;
    overflow-x: auto;
}

/* Interfejs Kalkulatora */
.rk-calc-app {
    padding: 40px 50px;
    background: var(--rk-calc-gray);
}

.rk-calc-app-title {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    margin-bottom: 25px;
}

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

/* Panele sterowania */
.rk-calc-controls {
    background: #ffffff;
    padding: 30px;
    border-radius: 16px;
    border: 1px solid var(--rk-calc-border);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

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

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

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

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

.rk-calc-value-badge {
    background: var(--rk-calc-blue-light);
    color: var(--rk-calc-blue);
    padding: 6px 12px;
    border-radius: 8px;
    font-weight: 800;
    font-size: 16px;
}

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

.rk-calc-input-range::-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(2, 132, 199, 0.4);
    transition: transform 0.1s;
}

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

/* Wyniki */
.rk-calc-results {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-calc-result-card {
    background: #ffffff;
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-calc-border);
    border-left: 4px solid var(--rk-calc-blue);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    display: flex;
    align-items: center;
    gap: 20px;
}

.rk-calc-result-card.highlight {
    border-left-color: var(--rk-calc-green);
    background: #f0fdf4;
}

.rk-calc-result-icon {
    width: 50px;
    height: 50px;
    background: var(--rk-calc-gray);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-calc-blue);
    flex-shrink: 0;
}

.rk-calc-result-card.highlight .rk-calc-result-icon {
    background: #d1fae5;
    color: var(--rk-calc-green);
}

.rk-calc-result-data {
    flex-grow: 1;
}

.rk-calc-result-label {
    font-size: 12px;
    font-weight: 800;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 5px;
}

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

.rk-calc-result-sub {
    font-size: 13px;
    color: var(--rk-calc-text);
    margin-top: 4px;
}

.rk-calc-result-sub a {
    color: var(--rk-calc-blue);
    text-decoration: underline;
    text-underline-offset: 2px;
    font-weight: 600;
}

/* RWD */
@media (max-width: 768px) {
    .rk-calc-header, .rk-calc-theory, .rk-calc-app { padding: 30px 20px; }
    .rk-calc-theory-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-calc-app-grid { grid-template-columns: 1fr; gap: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#article-kalkulator",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/"
    },
    "headline": "Jak obliczyć strumień przepływu i dobrać pompy obiegowe w instalacji grzewczej?",
    "description": "Inżynieryjny algorytm i interaktywny kalkulator przepływu wody. Wyznaczanie strumienia objętości i dobór pomp obiegowych (25-40, 25-60) na podstawie zapotrzebowania cieplnego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-31",
    "dateModified": "2026-07-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#dataset-pompy",
    "name": "Tabela doborowa pomp obiegowych dla instalacji podłogowych",
    "description": "Zestawienie progów przepływu masowego i objętościowego determinujące dobór wysokości podnoszenia pomp obiegowych w instalacjach płaszczyznowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator doboru pompy obiegowej",
      "obliczenie przepływu wody w podłogówce",
      "algorytm doboru pompy co",
      "spadek temperatury dt w ogrzewaniu",
      "wydajność pompy 25-60 a 25-40"
    ],
    "measurementTechnique": "Przeliczenie zapotrzebowania na moc grzewczą [kW] na strumień objętości [m3/h] przy zadanym spadku temperatury instalacji [K].",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przepływ do 1.0 m3/h: Wymagana pompa obiegowa klasy 25-40.",
        "Przepływ od 1.0 do 1.8 m3/h: Wymagana pompa obiegowa klasy 25-60.",
        "Przepływ powyżej 1.8 m3/h: Wymagana pompa obiegowa klasy 25-80 lub układ kaskadowy."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#webapp-pompy",
    "name": "Kalkulator Doboru Pompy Obiegowej HVAC",
    "description": "Interaktywny kalkulator inżynieryjny pozwalający na dynamiczne wyliczenie strumienia objętościowego wody oraz automatyczny dobór typoszeregu pompy obiegowej.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-container" id="rk-interactive-calculator">
    
    <div class="rk-calc-header">
        <h2>Jak obliczyć strumień przepływu i dobrać pompy obiegowe w instalacji grzewczej?</h2>
        <p>Projektowanie parametrów hydraulicznych opiera się na ścisłym bilansie masowym. Poznaj inżynieryjny algorytm stosowany podczas tworzenia dokumentacji wykonawczej na Projekt-Ogrzewania.pl i przetestuj go w naszym kalkulatorze.</p>
    </div>

    <!-- Sekcja Teoretyczna -->
    <div class="rk-calc-theory">
        <div class="rk-calc-theory-grid">
            <div class="rk-calc-step">
                <div class="rk-calc-step-title">Krok 1</div>
                <p class="rk-calc-step-desc">
    Wyznaczenie całkowitego strumienia masy ze wzoru podstawowego, gdzie uwzględniamy ciepło właściwe wody i moc układu.
</p>

<div class="rk-calc-math">
    <strong>m = Q / (cp × ΔT)</strong>
</div>
            </div>
            
            <div class="rk-calc-step">
                <div class="rk-calc-step-title">Krok 2</div>
                <p class="rk-calc-step-desc">
    Zamiana wyniku na praktyczny strumień objętościowy (V) wyrażony w m³/h, z wykorzystaniem stałej inżynieryjnej 1,163.
</p>

<div class="rk-calc-math">
    <strong>V = Q / (1,163 × ΔT)</strong>
</div>
            </div>

            <div class="rk-calc-step">
                <div class="rk-calc-step-title">Krok 3</div>
               <p class="rk-calc-step-desc">
    Wyliczenie oporów i strat ciśnienia na pętli krytycznej. Podsumowujemy opory rur, rozdzielacza oraz pozostałych elementów instalacji.
</p>

<div class="rk-calc-math">
    <strong>Δp = Δp(rury) + Δp(rozdzielacz) + ...</strong>
</div>
            </div>
        </div>
    </div>

    <!-- Interfejs Kalkulatora -->
    <div class="rk-calc-app">
        <div class="rk-calc-app-title">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><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>
            Interaktywny Kalkulator Doboru
        </div>
        
        <div class="rk-calc-app-grid">
            
            <!-- Lewa strona - Suwaki -->
            <div class="rk-calc-controls">
                
                <div class="rk-calc-slider-group">
                    <div class="rk-calc-label-row">
                        <span class="rk-calc-label">Zapotrzebowanie na moc budynku (Q)</span>
                        <span class="rk-calc-value-badge"><span id="rk-val-q">9.3</span> kW</span>
                    </div>
                    <input type="range" class="rk-calc-input-range" id="rk-slider-q" min="4" max="25" step="0.1" value="9.3">
                </div>

                <div class="rk-calc-slider-group">
                    <div class="rk-calc-label-row">
                        <span class="rk-calc-label"><a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/" target="_blank" style="color:var(--rk-calc-text);">Spadek temperatury zasilania (ΔT)</a></span>
                        <span class="rk-calc-value-badge"><span id="rk-val-dt">5</span> K</span>
                    </div>
                    <input type="range" class="rk-calc-input-range" id="rk-slider-dt" min="3" max="15" step="1" value="5">
                </div>

            </div>

            <!-- Prawa strona - Wyniki -->
            <div class="rk-calc-results">
                
                <div class="rk-calc-result-card">
                    <div class="rk-calc-result-icon">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 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-calc-result-data">
                        <div class="rk-calc-result-label">Wymagany przepływ (V)</div>
                        <div class="rk-calc-result-val"><span id="rk-out-v">1.60</span> m³/h</div>
                        <div class="rk-calc-result-sub">Oznacza to zład wody <span id="rk-out-lmin" style="font-weight:700;">26.6</span> l/min.</div>
                    </div>
                </div>

                <div class="rk-calc-result-card highlight">
                    <div class="rk-calc-result-icon">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polygon points="16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76"></polygon></svg>
                    </div>
                    <div class="rk-calc-result-data">
                        <div class="rk-calc-result-label">Dobór komponentu</div>
                        <div class="rk-calc-result-val">Pompa <span id="rk-out-pump">25-60</span></div>
                        <div class="rk-calc-result-sub">Dowiedz się więcej o <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/" target="_blank">doborze pomp obiegowych</a>.</div>
                    </div>
                </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const sliderQ = document.getElementById('rk-slider-q');
    const sliderDT = document.getElementById('rk-slider-dt');
    
    const displayQ = document.getElementById('rk-val-q');
    const displayDT = document.getElementById('rk-val-dt');
    
    const outV = document.getElementById('rk-out-v');
    const outLmin = document.getElementById('rk-out-lmin');
    const outPump = document.getElementById('rk-out-pump');

    function calculateHydraulics() {
        const qVal = parseFloat(sliderQ.value);
        const dtVal = parseFloat(sliderDT.value);
        
        // Aktualizacja etykiet nad suwakami
        displayQ.innerText = qVal.toFixed(1);
        displayDT.innerText = dtVal;

        // Główny wzór inżynieryjny: V [m3/h] = Q [kW] / (1.163 * DT)
        const vM3h = qVal / (1.163 * dtVal);
        const vLmin = (vM3h * 1000) / 60;
        
        outV.innerText = vM3h.toFixed(2);
        outLmin.innerText = vLmin.toFixed(1);

        // Bezpieczna logika doboru pompy (bez operatorów &&)
        let pumpClass = '25-40'; // domyślnie dla małych przepływów
        
        if (vM3h >= 1.0) {
            pumpClass = '25-60'; // średnie domy
        }
        if (vM3h >= 1.8) {
            pumpClass = '25-80'; // duże domy / kamienice
        }
        if (vM3h >= 3.0) {
            pumpClass = 'Kaskada / Przemysłowa'; // instalacje wielkogabarytowe
        }

        outPump.innerText = pumpClass;
    }

    // Nasłuchiwanie na zmiany suwaków
    sliderQ.addEventListener('input', calculateHydraulics);
    sliderDT.addEventListener('input', calculateHydraulics);

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



<style>
:root {
    --rk-sim-dark: #0f172a;
    --rk-sim-blue: #0284c7;
    --rk-sim-blue-light: #f0f9ff;
    --rk-sim-green: #10b981;
    --rk-sim-green-light: #ecfdf5;
    --rk-sim-red: #ef4444;
    --rk-sim-red-light: #fef2f2;
    --rk-sim-border: #e2e8f0;
    --rk-sim-text: #475569;
}

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

/* Sekcja Nagłówkowa */
.rk-sim-header {
    background: linear-gradient(135deg, var(--rk-sim-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    text-align: center;
}

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

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

/* Interfejs Przełącznika */
.rk-sim-controls {
    display: flex;
    justify-content: center;
    padding: 30px 20px;
    background: #f8fafc;
    border-bottom: 1px solid var(--rk-sim-border);
}

.rk-sim-toggle-wrapper {
    display: inline-flex;
    background: #e2e8f0;
    border-radius: 999px;
    padding: 6px;
    gap: 5px;
}

.rk-sim-btn {
    padding: 12px 24px;
    border-radius: 999px;
    border: none;
    background: transparent;
    font-size: 15px;
    font-weight: 800;
    color: #64748b;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-sim-btn.active[data-mode="grav"] {
    background: #ffffff;
    color: var(--rk-sim-red);
    box-shadow: 0 4px 10px rgba(239, 68, 68, 0.15);
}

.rk-sim-btn.active[data-mode="recup"] {
    background: #ffffff;
    color: var(--rk-sim-green);
    box-shadow: 0 4px 10px rgba(16, 185, 129, 0.15);
}

/* Układ Danych - Kafelki */
.rk-sim-data-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    padding: 40px 50px;
    background: #ffffff;
}

.rk-sim-card {
    border: 1px solid var(--rk-sim-border);
    border-radius: 16px;
    padding: 25px 20px;
    text-align: center;
    transition: all 0.4s ease;
    background: #ffffff;
}

.rk-sim-card-icon {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 15px auto;
    transition: all 0.4s;
}

.rk-sim-card-label {
    font-size: 12px;
    font-weight: 800;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 8px;
}

.rk-sim-card-value {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-sim-dark);
    transition: color 0.4s;
}

/* Właściwości dynamiczne stanów */
.state-grav .rk-sim-card { border-color: #fecaca; }
.state-grav .rk-sim-card-icon { background: var(--rk-sim-red-light); color: var(--rk-sim-red); }
.state-grav .rk-sim-card-value { color: var(--rk-sim-red); }

.state-recup .rk-sim-card { border-color: #a7f3d0; }
.state-recup .rk-sim-card-icon { background: var(--rk-sim-green-light); color: var(--rk-sim-green); }
.state-recup .rk-sim-card-value { color: var(--rk-sim-green); }

/* Sekcja Wyjaśnienia */
.rk-sim-explanation {
    padding: 0 50px 40px 50px;
}

.rk-sim-alert {
    background: var(--rk-sim-blue-light);
    border-left: 4px solid var(--rk-sim-blue);
    padding: 25px 30px;
    border-radius: 0 12px 12px 0;
}

.rk-sim-alert h3 {
    margin: 0 0 10px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-sim-dark);
}

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

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

.rk-sim-alert a:hover {
    color: #0369a1;
}

/* RWD Mobile - Pionowy stack */
@media (max-width: 768px) {
    .rk-sim-header, .rk-sim-explanation { padding: 30px 20px; }
    .rk-sim-data-grid { grid-template-columns: 1fr; gap: 15px; padding: 25px 20px; }
    .rk-sim-controls { padding: 20px; }
    .rk-sim-toggle-wrapper { flex-direction: column; width: 100%; border-radius: 16px; }
    .rk-sim-btn { justify-content: center; padding: 15px; border-radius: 12px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#article-rekuperacja",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/"
    },
    "headline": "Rekuperacja a projekt ogrzewania podłogowego – jak wentylacja mechaniczna zmienia zapotrzebowanie na moc?",
    "description": "Zobacz, jak wentylacja mechaniczna z odzyskiem ciepła obniża straty wentylacyjne i pozwala na rozluźnienie rozstawu rur 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://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-31",
    "dateModified": "2026-07-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#dataset-rekuperacja",
    "name": "Wpływ wentylacji na obciążenie cieplne budynku",
    "description": "Zestawienie parametrów technicznych porównujące straty cieplne z tytułu wentylacji grawitacyjnej i mechanicznej z rekuperatorem.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wpływ rekuperacji na ogrzewanie podłogowe",
      "straty ciepła na wentylację",
      "rozstaw rur a rekuperacja",
      "obliczenia ozc z rekuperatorem",
      "zapotrzebowanie na moc budynku"
    ],
    "measurementTechnique": "Symulacja inżynieryjna oparta na obliczeniach bilansu strat przenikania i wentylacji przy spadku temperatury do -20°C.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wentylacja grawitacyjna: straty wentylacyjne ~4.0 kW, łączne zapotrzebowanie 10.0 kW, wymagany gęsty rozstaw rur co 10 cm.",
        "Wentylacja mechaniczna (rekuperacja): straty wentylacyjne ~0.8 kW, łączne zapotrzebowanie 6.8 kW, możliwy luźniejszy rozstaw rur co 15 cm."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#webapp-rekuperacja",
    "name": "Symulator Strat Cieplnych i Wentylacji",
    "description": "Interaktywny panel demonstrujący drastyczne różnice w zapotrzebowaniu na moc grzewczą w zależności od zastosowanego systemu wentylacji w budynku.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-sim-container" id="rk-interactive-ventilation">
    <div class="rk-sim-header">
        <h2>Rekuperacja a projekt ogrzewania podłogowego – jak wentylacja zmienia zapotrzebowanie na moc?</h2>
        <p>Sprawdź na żywo, jak montaż rekuperacji eliminuje straty ciepła i pozwala zoptymalizować całą instalację podłogową w Twoim nowym domu.</p>
    </div>

    <!-- Przełącznik -->
    <div class="rk-sim-controls">
        <div class="rk-sim-toggle-wrapper">
            <button class="rk-sim-btn active" data-mode="grav">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                Wentylacja Grawitacyjna
            </button>
            <button class="rk-sim-btn" data-mode="recup">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                Rekuperacja (Odzysk Ciepła)
            </button>
        </div>
    </div>

    <!-- Dynamiczne Kafelki Danych -->
    <div class="rk-sim-data-grid state-grav" id="rkSimGrid">
        
        <div class="rk-sim-card">
            <div class="rk-sim-card-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 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path></svg>
            </div>
            <div class="rk-sim-card-label">Zapotrzebowanie na moc</div>
            <div class="rk-sim-card-value" id="val-total">10.0 kW</div>
        </div>

        <div class="rk-sim-card">
            <div class="rk-sim-card-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="M3 14h12c2.2 0 4-1.8 4-4s-1.8-4-4-4H7"></path><path d="M3 14l4-4"></path><path d="M3 14l4 4"></path></svg>
            </div>
            <div class="rk-sim-card-label">Straty wentylacyjne</div>
            <div class="rk-sim-card-value" id="val-vent">~ 4.0 kW</div>
        </div>

        <div class="rk-sim-card">
            <div class="rk-sim-card-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"><line x1="21" y1="10" x2="3" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="3" y2="18"></line></svg>
            </div>
            <div class="rk-sim-card-label">Wymagany rozstaw rur</div>
            <div class="rk-sim-card-value" id="val-pipe">Gęsty (co 10 cm)</div>
        </div>

    </div>

    <!-- Wyjaśnienie Inżynierskie -->
    <div class="rk-sim-explanation">
        <div class="rk-sim-alert">
            <h3 id="rk-exp-title">Wpływ na projekt ogrzewania:</h3>
            <p id="rk-exp-text">
                W przypadku nawiewników i kratek grawitacyjnych zimne powietrze stale "wlewa" się do domu, generując ogromne straty (nawet 40% całego zapotrzebowania). Zmusza to projektanta do <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/" target="_blank">maksymalnego zagęszczenia rur</a> (np. na 10 cm) w całym salonie, by skompensować te ubytki i utrzymać komfort cieplny.
            </p>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-sim-btn');
    const gridContainer = document.getElementById('rkSimGrid');
    
    // Pola tekstowe do podmiany
    const valTotal = document.getElementById('val-total');
    const valVent = document.getElementById('val-vent');
    const valPipe = document.getElementById('val-pipe');
    const expText = document.getElementById('rk-exp-text');

    // Bezpieczna baza danych bez operatorów logicznych
    const simData = {
        'grav': {
            total: '10.0 kW',
            vent: '~ 4.0 kW',
            pipe: 'Gęsty (co 10 cm)',
            stateClass: 'state-grav',
            desc: 'W przypadku nawiewników i kratek grawitacyjnych zimne powietrze stale "wlewa" się do domu, generując ogromne straty (nawet 40% całego zapotrzebowania). Zmusza to projektanta do <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/" target="_blank">maksymalnego zagęszczenia rur</a> (np. na 10 cm) w całym salonie, by skompensować te ubytki i utrzymać komfort cieplny.'
        },
        'recup': {
            total: '6.8 kW',
            vent: '~ 0.8 kW',
            pipe: 'Luźny (co 15 cm)',
            stateClass: 'state-recup',
            desc: 'Montaż rekuperacji obniża zapotrzebowanie budynku na moc o 20-35%. Dzięki temu wymagania dla posadzki spadają – <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/" target="_blank">rozstaw pętli można rozluźnić</a> z 10 cm na 15 cm. Dodatkowo niska strata wentylacyjna pozwala na to, by <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/" target="_blank">całkowicie zrezygnować z grzejników</a> pod dużymi przeszkleniami, eliminując uczucie chłodu od okien.'
        }
    };

    function updateSimulation(mode) {
        const data = simData[mode];
        
        // Zmiana tekstów
        valTotal.innerText = data.total;
        valVent.innerText = data.vent;
        valPipe.innerText = data.pipe;
        expText.innerHTML = data.desc;

        // Zmiana klas stanu w gridzie
        gridContainer.classList.remove('state-grav');
        gridContainer.classList.remove('state-recup');
        gridContainer.classList.add(data.stateClass);
    }

    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Bezpieczne usuwanie klas
            btns.forEach(function(b) {
                b.classList.remove('active');
            });
            
            // Aktywacja wciśniętego
            this.classList.add('active');
            
            // Pobranie atrybutu i aktualizacja UI
            const mode = this.getAttribute('data-mode');
            updateSimulation(mode);
        });
    });
});
</script>



<style>
:root {
    --rk-pipe-dark: #0f172a;
    --rk-pipe-blue: #0284c7;
    --rk-pipe-blue-light: #e0f2fe;
    --rk-pipe-bg: #f8fafc;
    --rk-pipe-border: #e2e8f0;
    --rk-pipe-text: #475569;
    --rk-pipe-green: #10b981;
    --rk-pipe-red: #ef4444;
    --rk-pipe-accent: #38bdf8;
}

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

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

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

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

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

/* Przełączniki (Zakładki) */
.rk-pipe-tabs {
    display: flex;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-pipe-border);
    padding: 0 20px;
}

.rk-pipe-tab {
    flex: 1;
    padding: 20px 15px;
    text-align: center;
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-pipe-text);
    cursor: pointer;
    transition: all 0.3s ease;
}

.rk-pipe-tab:hover {
    color: var(--rk-pipe-blue);
    background: var(--rk-pipe-bg);
}

.rk-pipe-tab.active {
    color: var(--rk-pipe-blue);
    border-bottom-color: var(--rk-pipe-blue);
    background: var(--rk-pipe-blue-light);
}

/* Wyświetlacz danych */
.rk-pipe-content {
    padding: 40px 50px;
    background: var(--rk-pipe-bg);
}

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

.rk-pipe-card {
    background: #ffffff;
    border: 1px solid var(--rk-pipe-border);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    flex-direction: column;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-pipe-card-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 15px;
}

.rk-pipe-icon {
    width: 40px;
    height: 40px;
    border-radius: 10px;
    background: var(--rk-pipe-blue-light);
    color: var(--rk-pipe-blue);
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-pipe-label {
    font-size: 13px;
    font-weight: 700;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

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

.rk-pipe-subtext {
    font-size: 13px;
    color: #94a3b8;
    margin-top: 5px;
}

/* Wskaźniki Yes/No */
.rk-status-yes { color: var(--rk-pipe-green); display: flex; align-items: center; gap: 8px; }
.rk-status-no { color: var(--rk-pipe-red); display: flex; align-items: center; gap: 8px; }

/* Rekomendacja */
.rk-pipe-recommendation {
    margin-top: 30px;
    padding: 25px 30px;
    background: #ffffff;
    border-left: 4px solid var(--rk-pipe-blue);
    border-radius: 0 12px 12px 0;
    box-shadow: 0 4px 15px rgba(2, 132, 199, 0.05);
}

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

.rk-pipe-rec-text {
    font-size: 15px;
    color: var(--rk-pipe-text);
    line-height: 1.6;
    margin: 0;
}

.rk-pipe-rec-text a {
    color: var(--rk-pipe-blue);
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* RWD - Mobile */
@media (max-width: 768px) {
    .rk-pipe-header { padding: 30px 20px; }
    .rk-pipe-tabs { flex-direction: column; padding: 0; }
    .rk-pipe-tab { border-bottom: 1px solid var(--rk-pipe-border); border-left: 4px solid transparent; padding: 15px; text-align: left; }
    .rk-pipe-tab.active { border-bottom-color: var(--rk-pipe-border); border-left-color: var(--rk-pipe-blue); }
    .rk-pipe-content { padding: 25px 20px; }
    .rk-pipe-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-pipe-recommendation { padding: 20px; margin-top: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#article-rury",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/"
    },
    "headline": "Porównanie techniczne materiałów: Rura PERT-AL-PERT, PEX-A czy PERT-EVOH?",
    "description": "Szczegółowe zestawienie parametrów technicznych rur do ogrzewania podłogowego. Porównanie pamięci kształtu, rozszerzalności cieplnej i bariery EVOH.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-31",
    "dateModified": "2026-07-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#dataset-rury",
    "name": "Specyfikacja techniczna rur do ogrzewania podłogowego",
    "description": "Zestawienie właściwości fizykochemicznych najpopularniejszych systemów rurowych: PERT-AL-PERT, PEX-A oraz PERT II EVOH.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "rura pert-al-pert do podłogówki",
      "rura pex-a właściwości",
      "bariera antydyfuzyjna evoh",
      "współczynnik rozszerzalności cieplnej rur",
      "pamięć kształtu rury ogrzewania"
    ],
    "measurementTechnique": "Porównanie certyfikowanych parametrów technicznych z wymaganiami normy DIN 4726 dotyczącymi przenikalności tlenowej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "PERT-AL-PERT: Niska rozszerzalność (0,026 mm/mK), posiada pamięć kształtu, max 95°C.",
        "PEX-A: Wysoka rozszerzalność (0,14 mm/mK), brak pamięci kształtu, posiada pamięć termiczną, max 95°C.",
        "PERT II (EVOH): Wysoka rozszerzalność (0,18 mm/mK), brak pamięci kształtu, max 70°C."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#webapp-rury",
    "name": "Komparator Systemów Rurowych HVAC",
    "description": "Interaktywne narzędzie tabelaryczne umożliwiające inżynierskie porównanie kluczowych parametrów rur stosowanych w płaszczyznowych instalacjach grzewczych.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-pipe-container" id="rk-interactive-pipes">
    <div class="rk-pipe-header">
        <h2>Porównanie techniczne materiałów: Rura PERT-AL-PERT, PEX-A czy PERT-EVOH?</h2>
        <p>Wybór materiału rur do ogrzewania podłogowego decyduje o trwałości mechanicznej i bezpieczeństwie instalacji. Zgodnie z <a href="https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/" target="_blank">normą DIN 4726</a>, każda rura do podłogówki bezwzględnie musi posiadać barierę antydyfuzyjną (EVOH) o przenikalności tlenu nieprzekraczającej 0,1 g/(m³·d) przy temperaturze 40°C.</p>
    </div>

    <div class="rk-pipe-tabs" id="rkPipeTabs">
        <button class="rk-pipe-tab active" data-pipe="pertalpert">PERT-AL-PERT (z wkładką Al)</button>
        <button class="rk-pipe-tab" data-pipe="pexa">PEX-A (Polietylen usieciowany)</button>
        <button class="rk-pipe-tab" data-pipe="pert">PERT II (z barierą EVOH)</button>
    </div>

    <div class="rk-pipe-content">
        <div class="rk-pipe-grid">
            
            <!-- Karta 1: Struktura -->
            <div class="rk-pipe-card">
                <div class="rk-pipe-card-header">
                    <div class="rk-pipe-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><circle cx="12" cy="12" r="6"></circle><circle cx="12" cy="12" r="2"></circle></svg>
                    </div>
                    <div class="rk-pipe-label">Budowa i Struktura</div>
                </div>
                <div class="rk-pipe-value" id="p-struct">5-warstwowa z aluminium</div>
                <div class="rk-pipe-subtext" id="p-struct-sub">Monolityczna ochrona przed tlenem.</div>
            </div>

            <!-- Karta 2: Rozszerzalność -->
            <div class="rk-pipe-card">
                <div class="rk-pipe-card-header">
                    <div class="rk-pipe-icon">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" y1="3" x2="14" y2="10"></line><line x1="3" y1="21" x2="10" y2="14"></line></svg>
                    </div>
                    <div class="rk-pipe-label">Współczynnik rozszerzalności</div>
                </div>
                <div class="rk-pipe-value" id="p-exp">0,026 mm/(m·K)</div>
                <div class="rk-pipe-subtext" id="p-exp-sub">Bardzo niska podatność na zmiany temp.</div>
            </div>

            <!-- Karta 3: Pamięć kształtu -->
            <div class="rk-pipe-card">
                <div class="rk-pipe-card-header">
                    <div class="rk-pipe-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></svg>
                    </div>
                    <div class="rk-pipe-label">Pamięć kształtu rury</div>
                </div>
                <div class="rk-pipe-value" id="p-shape">
                    <span class="rk-status-yes"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg> TAK</span>
                </div>
                <div class="rk-pipe-subtext" id="p-shape-sub">Po wygięciu zachowuje zadany promień.</div>
            </div>

            <!-- Karta 4: Pamięć termiczna -->
            <div class="rk-pipe-card">
                <div class="rk-pipe-card-header">
                    <div class="rk-pipe-icon">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    </div>
                    <div class="rk-pipe-label">Naprawa zagnieceń termicznie</div>
                </div>
                <div class="rk-pipe-value" id="p-therm">
                    <span class="rk-status-no"><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="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg> NIE</span>
                </div>
                <div class="rk-pipe-subtext" id="p-therm-sub">Zagniecenie całkowicie niszczy wkładkę Al.</div>
            </div>

        </div>

        <div class="rk-pipe-recommendation">
            <div class="rk-pipe-rec-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"><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>
                Rekomendacja inżynierska
            </div>
            <p class="rk-pipe-rec-text">
                Do wykonania niezawodnego ogrzewania podłogowego w układzie tradycyjnym (klipsowanym na styropianie) optymalnym wyborem jest stabilna, wielowarstwowa rura <strong>PERT-AL-PERT</strong> lub wysoce elastyczna <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/" target="_blank">rura PEX-A</a>. Stanowczo odradzam tańsze zamienniki bez rygorystycznej bariery EVOH, ponieważ powodują one gwałtowne natlenianie zładu i korozję elementów kotłowni.
            </p>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tabs = document.querySelectorAll('.rk-pipe-tab');
    
    // Elementy UI do podmiany
    const elStruct = document.getElementById('p-struct');
    const elStructSub = document.getElementById('p-struct-sub');
    const elExp = document.getElementById('p-exp');
    const elExpSub = document.getElementById('p-exp-sub');
    const elShape = document.getElementById('p-shape');
    const elShapeSub = document.getElementById('p-shape-sub');
    const elTherm = document.getElementById('p-therm');
    const elThermSub = document.getElementById('p-therm-sub');

    // SVG Ikony statusów
    const yesIcon = '<span class="rk-status-yes"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg> TAK</span>';
    const noIcon = '<span class="rk-status-no"><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="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg> NIE</span>';

    // Baza danych materiałowych (bezpieczna, bez '&&')
    const pipeData = {
        'pertalpert': {
            struct: '5-warstwowa z aluminium',
            structSub: 'Monolityczna ochrona, max 95°C, żywotność > 50 lat.',
            exp: '0,026 mm/(m·K)',
            expSub: 'Bardzo niska podatność na zmiany temperatur.',
            shape: yesIcon,
            shapeSub: 'Po wygięciu idealnie zachowuje zadany promień.',
            therm: noIcon,
            thermSub: 'Zagniecenie na budowie niszczy wkładkę Al.'
        },
        'pexa': {
            struct: '3 lub 5-warstwowa usieciowana',
            structSub: 'Cząsteczkowo usieciowana, max 95°C, żywotność > 50 lat.',
            exp: '0,14 mm/(m·K)',
            expSub: 'Wysoka rozszerzalność cieplna materiału.',
            shape: noIcon,
            shapeSub: 'Sprężynuje, wymaga znacznie gęstszego spinkowania.',
            therm: yesIcon,
            thermSub: 'Można bezpiecznie naprawić opalarką (pamięć polimeru).'
        },
        'pert': {
            struct: '5-warstwowa monolit',
            structSub: 'Standardowa <a href="https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/" style="color:var(--rk-pipe-blue);font-weight:700;">rura PERT II</a>, max 70°C, żywotność > 50 lat.',
            exp: '0,18 mm/(m·K)',
            expSub: 'Bardzo wysoka podatność na wydłużenie cieplne.',
            shape: noIcon,
            shapeSub: 'Sprężynuje powracając do formy ze zwoju.',
            therm: noIcon,
            thermSub: 'Trwałe odkształcenie bez możliwości naprawy.'
        }
    };

    function updatePipeData(pipeKey) {
        const data = pipeData[pipeKey];
        elStruct.innerHTML = data.struct;
        elStructSub.innerHTML = data.structSub;
        elExp.innerText = data.exp;
        elExpSub.innerText = data.expSub;
        elShape.innerHTML = data.shape;
        elShapeSub.innerText = data.shapeSub;
        elTherm.innerHTML = data.therm;
        elThermSub.innerText = data.thermSub;
    }

    // Obsługa zakładek
    tabs.forEach(function(tab) {
        tab.addEventListener('click', function() {
            // Usunięcie aktywności ze wszystkich
            tabs.forEach(function(t) {
                t.classList.remove('active');
            });
            
            // Nadanie aktywności klikniętej zakładce
            this.classList.add('active');
            
            // Pobranie klucza i aktualizacja
            const pipeKey = this.getAttribute('data-pipe');
            updatePipeData(pipeKey);
        });
    });
});
</script>



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

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

.rk-proc-header {
    background: linear-gradient(135deg, var(--rk-proc-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: #ffffff;
}

.rk-proc-header h2 {
    color: #ffffff;
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 10px 0;
    line-height: 1.3;
}

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

.rk-proc-body {
    padding: 40px 50px;
    background: var(--rk-proc-light);
}

/* Kafelki nawigacji kroków (Desktop: rząd, Mobile: pionowy akordeon) */
.rk-proc-steps-nav {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    margin-bottom: 30px;
}

.rk-proc-step-btn {
    background: #ffffff;
    border: 2px solid var(--rk-proc-border);
    border-radius: 14px;
    padding: 15px 12px;
    text-align: center;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
}

.rk-proc-step-btn:hover {
    border-color: #cbd5e1;
    transform: translateY(-2px);
}

.rk-proc-step-btn.active {
    background: #e0f2fe;
    border-color: var(--rk-proc-blue);
    box-shadow: 0 8px 20px -5px rgba(2, 132, 199, 0.15);
}

.rk-proc-step-num {
    width: 28px;
    height: 28px;
    background: #e2e8f0;
    color: #475569;
    border-radius: 50%;
    font-size: 13px;
    font-weight: 800;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s;
}

.rk-proc-step-btn.active .rk-proc-step-num {
    background: var(--rk-proc-blue);
    color: #ffffff;
}

.rk-proc-step-title {
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-proc-dark);
    line-height: 1.3;
}

/* Wyświetlacz treści aktywnego kroku */
.rk-proc-display {
    background: var(--rk-proc-card-bg);
    border: 1px solid var(--rk-proc-border);
    border-radius: 18px;
    padding: 30px;
    display: flex;
    align-items: flex-start;
    gap: 25px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-proc-display-icon {
    width: 60px;
    height: 60px;
    background: #e0f2fe;
    border-radius: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: var(--rk-proc-blue);
}

.rk-proc-display-content h3 {
    margin: 0 0 10px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-proc-dark);
}

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

.rk-proc-display-content a {
    color: var(--rk-proc-blue);
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: border-color 0.2s;
}

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

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

.rk-proc-cta-desc {
    font-size: 15px;
    color: #64748b;
    margin: 0 auto 20px;
    max-width: 650px;
    line-height: 1.6;
}

.rk-btn-proc {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-proc-blue);
    color: #ffffff;
    font-size: 17px;
    font-weight: 800;
    padding: 18px 35px;
    border-radius: 14px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s;
}

.rk-btn-proc:hover {
    transform: translateY(-3px);
    background: var(--rk-proc-blue-hover);
    box-shadow: 0 15px 35px -5px rgba(2, 132, 199, 0.5);
}

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

/* RWD - Mobile */
@media (max-width: 768px) {
    .rk-proc-header, .rk-proc-body, .rk-proc-cta { padding: 30px 20px; }
    .rk-proc-steps-nav { grid-template-columns: 1fr; gap: 10px; }
    .rk-proc-step-btn { flex-direction: row; text-align: left; padding: 12px 15px; }
    .rk-proc-display { flex-direction: column; text-align: center; padding: 20px; }
    .rk-proc-display-icon { margin: 0 auto; }
    .rk-btn-proc { width: 100%; padding: 16px 20px; font-size: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#article-process",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/"
    },
    "headline": "Od zapytania do gotowej dokumentacji: Jak wyliczam i projektuję instalację krok po kroku",
    "description": "Przejrzysty proces inżynieryjny tworzenia dokumentacji ogrzewania podłogowego: od analizy rzutów i obliczeń OZC po precyzyjny projekt hydrauliczny.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-31",
    "dateModified": "2026-07-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#dataset-process",
    "name": "Metodologia inżynieryjna projektowania instalacji grzewczych",
    "description": "Opis 4-etapowego procesu inżynieryjnego obejmującego analizę architektoniczną, obliczenia OZC wg PN-EN 12831, projekt hydrauliczny i wydanie dokumentacji PDF.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowanie ogrzewania podłogowego krok po kroku",
      "obliczenia ozc dla budynku",
      "dokumentacja techniczna instalacji grzewczej",
      "dobór rotametrów i pętli grzewczych",
      "projekt pdf dla instalatora"
    ],
    "measurementTechnique": "Algorytm cyfrowej weryfikacji projektowej i bilansowania hydraulicznego pętli grzewczych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Etap 1: Weryfikacja rzutów architektonicznych i materiałów.",
        "Etap 2: Komputerowe obliczenia OZC wg normy PN-EN 12831.",
        "Etap 3: Projekt hydrauliczny i rozrysowanie pętli ślimakowych.",
        "Etap 4: Finalna dokumentacja PDF i specyfikacja materiałowa."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#webapp-process",
    "name": "Kreator Procesu Projektowego HVAC",
    "description": "Interaktywny przewodnik demonstracyjny prezentujący kolejne etapy tworzenia profesjonalnego projektu instalacji grzewczej.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-proc-container" id="rk-interactive-process">
    <div class="rk-proc-header">
        <h2>Od zapytania do gotowej dokumentacji: Jak wyliczam i projektuję instalację krok po kroku</h2>
        <p>Jeśli chcesz uniknąć błędów wykonawczych i zyskać pewność, że Twój dom będzie ogrzewany tanio i niezawodnie, sprawdź jak w 4 przejrzystych etapach powstaje profesjonalny projekt.</p>
    </div>

    <div class="rk-proc-body">
        <!-- Nawigacja kroków -->
        <div class="rk-proc-steps-nav" id="rkProcNav">
            <button class="rk-proc-step-btn active" data-step="1">
                <div class="rk-proc-step-num">1</div>
                <div class="rk-proc-step-title">Rzuty Budowlane</div>
            </button>
            <button class="rk-proc-step-btn" data-step="2">
                <div class="rk-proc-step-num">2</div>
                <div class="rk-proc-step-title">Obliczenia OZC</div>
            </button>
            <button class="rk-proc-step-btn" data-step="3">
                <div class="rk-proc-step-num">3</div>
                <div class="rk-proc-step-title">Projekt Hydrauliczny</div>
            </button>
            <button class="rk-proc-step-btn" data-step="4">
                <div class="rk-proc-step-num">4</div>
                <div class="rk-proc-step-title">Dokumentacja PDF</div>
            </button>
        </div>

        <!-- Wyświetlacz szczegółów aktywnego kroku -->
        <div class="rk-proc-display" id="rkProcDisplay">
            <div class="rk-proc-display-icon" id="rkProcIcon">
                <!-- SVG renderowane dynamicznie przez JS -->
            </div>
            <div class="rk-proc-display-content" id="rkProcContent">
                <!-- Zawartość wstrzykiwana przez JS -->
            </div>
        </div>
    </div>

    <div class="rk-proc-cta">
        <p class="rk-proc-cta-desc">
            Zlecenie profesjonalnego projektu to gwarancja, że nie wydasz ani jednego zbędnego złotego na przewymiarowany sprzęt, a Twój wykonawca otrzyma precyzyjną instrukcję montażu.
        </p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-proc">
            ZAMÓW PROFESJONALNY PROJEKT OGRZEWANIA
            <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 stepButtons = document.querySelectorAll('.rk-proc-step-btn');
    const procIcon = document.getElementById('rkProcIcon');
    const procContent = document.getElementById('rkProcContent');

    // Baza danych poszczególnych kroków (bezpieczna, bez operatorów &&)
    const stepsData = {
        '1': {
            title: 'Weryfikacja rzutów architektonicznych',
            text: 'Na starcie analizujemy dokumentację budynku: grubość oraz budowę ścian zewnętrznych, rodzaj okien, <a href="https://projekt-ogrzewania.pl/jakie-sa-najlepsze-sposoby-izolacji-pod-ogrzewanie-podlogowe/" target="_blank">izolację dachu</a> oraz posadzki. Dopasowujemy dane wejściowe do realnych warunków Twojej inwestycji.',
            icon: '<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>'
        },
        '2': {
            title: 'Wykonanie komputerowego OZC',
            text: 'W oparciu o normę <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/" target="_blank">PN-EN 12831</a> wyliczamy zapotrzebowanie cieplne dla każdego pomieszczenia z osobna. Uwzględniamy strefy klimatyczne w Polsce oraz parametry wentylacji, co pozwala dobrać źródło ciepła bez ryzyka kosztownego przewymiarowania.',
            icon: '<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="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></svg>'
        },
        '3': {
            title: 'Rozrysowanie pętli i dobór rozdzielaczy',
            text: 'Układamy pętle w optymalnym <a href="https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/" target="_blank">systemie ślimakowym</a> z zagęszczeniem w strefach brzegowych. Precyzyjnie wyznaczamy nastawy wstępne dla rotametrów, eliminując błędy hydrauliczne skutkujące niedogrzanymi pokojami.',
            icon: '<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>'
        },
        '4': {
            title: 'Wydanie gotowej dokumentacji PDF',
            text: 'Otrzymujesz kompletny rysunek rzutu w skali, pełny bilans mocy, <a href="https://projekt-ogrzewania.pl/jakie-materialy-sa-potrzebne-do-instalacji-ogrzewania-podlogowego/" target="_blank">specyfikację materiałową</a> (co do metra rury i liczby rozdzielaczy) oraz jasne wytyczne gotowe do przekazania Twojemu instalatorowi.',
            icon: '<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="12" y1="18" x2="12" y2="12"></line><line x1="9" y1="15" x2="15" y2="15"></line></svg>'
        }
    };

    function renderStep(stepKey) {
        const data = stepsData[stepKey];
        procIcon.innerHTML = data.icon;
        procContent.innerHTML = '<h3>Krok ' + stepKey + ': ' + data.title + '</h3><p>' + data.text + '</p>';
    }

    // Inicjalizacja domyślna kroku 1
    renderStep('1');

    stepButtons.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Usunięcie klasy active ze wszystkich przycisków
            stepButtons.forEach(function(b) {
                b.classList.remove('active');
            });
            // Dodanie active do klikniętego
            this.classList.add('active');
            
            // Pobranie numeru kroku i renderowanie
            const stepNum = this.getAttribute('data-step');
            renderStep(stepNum);
        });
    });
});
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-blue: #0284c7;
    --rk-err-red: #dc2626;
    --rk-err-red-light: #fef2f2;
    --rk-err-gray-bg: #f8fafc;
    --rk-err-border: #e2e8f0;
    --rk-err-text: #334155;
    --rk-err-muted: #64748b;
}

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

/* Nagłówek Skanera */
.rk-err-header-main {
    background: linear-gradient(135deg, var(--rk-err-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    text-align: center;
}

.rk-err-header-main::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: var(--rk-err-red);
}

.rk-err-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(220, 38, 38, 0.2);
    color: #fca5a5;
    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(220, 38, 38, 0.3);
}

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

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

/* Akordeon Pionowy */
.rk-err-list {
    padding: 30px 50px 40px;
    background: var(--rk-err-gray-bg);
}

.rk-err-item {
    background: #ffffff;
    border: 1px solid var(--rk-err-border);
    border-radius: 16px;
    margin-bottom: 15px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    overflow: hidden;
}

.rk-err-item:hover {
    border-color: #cbd5e1;
}

.rk-err-item.active {
    border-color: var(--rk-err-red);
    box-shadow: 0 10px 25px -5px rgba(220, 38, 38, 0.15);
}

/* Nagłówek Akordeonu (Klikalny) */
.rk-err-item-top {
    display: flex;
    align-items: center;
    padding: 20px 25px;
    cursor: pointer;
    gap: 20px;
    background: #ffffff;
    transition: background 0.3s;
}

.rk-err-item.active .rk-err-item-top {
    background: var(--rk-err-red-light);
}

.rk-err-num {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-err-muted);
    transition: color 0.3s;
    flex-shrink: 0;
}

.rk-err-item.active .rk-err-num {
    color: var(--rk-err-red);
}

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

.rk-err-toggle {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--rk-err-gray-bg);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-err-muted);
    flex-shrink: 0;
    transition: all 0.4s ease;
}

.rk-err-item.active .rk-err-toggle {
    background: var(--rk-err-red);
    color: #ffffff;
    transform: rotate(180deg);
}

/* Ukryta Treść Akordeonu */
.rk-err-content-wrap {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.4s ease;
}

.rk-err-item.active .rk-err-content-wrap {
    max-height: 600px;
    opacity: 1;
}

.rk-err-content-inner {
    padding: 0 25px 25px 70px; /* Wcięcie wyrównujące do tekstu tytułu */
}

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

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

.rk-err-mechanism a:hover {
    border-color: var(--rk-err-blue);
}

/* Blok Skutku (Katastrofa) */
.rk-err-consequence {
    background: #fff1f2;
    border-left: 4px solid var(--rk-err-red);
    padding: 18px 20px;
    border-radius: 0 8px 8px 0;
}

.rk-err-consequence-label {
    font-size: 12px;
    font-weight: 900;
    color: var(--rk-err-red);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.rk-err-consequence-text {
    font-size: 15px;
    color: #991b1b;
    margin: 0;
    font-weight: 500;
    line-height: 1.6;
}

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

.rk-err-consequence-text a:hover {
    color: #7f1d1d;
}

/* RWD - Mobile */
@media (max-width: 768px) {
    .rk-err-header-main { padding: 35px 20px; }
    .rk-err-header-main h2 { font-size: 22px; }
    .rk-err-list { padding: 20px; }
    .rk-err-item-top { padding: 15px 20px; gap: 15px; }
    .rk-err-title { font-size: 16px; }
    .rk-err-num { font-size: 18px; }
    .rk-err-content-inner { padding: 0 20px 20px 20px; } /* Usunięte mocne wcięcie lewe na mobile */
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/"
    },
    "headline": "5 najczęstszych błędów wykonawczych przy instalacji ogrzewania podłogowego",
    "description": "Zestawienie najgroźniejszych błędów instalatorów podłogówki: od braku dylatacji i prób ciśnieniowych po złą wodę zasilającą. Poznaj bezpośrednie skutki amatorskiego montażu.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-31",
    "dateModified": "2026-07-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#dataset-bledy",
    "name": "Baza usterek montażowych ogrzewania płaszczyznowego",
    "description": "Techniczny katalog błędów wykonawczych instalacji wodnych, diagnoza przyczyn (brak dylatacji, twarda woda, brak próby ciśnieniowej) oraz skutków materiałowych po wylaniu posadzki.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błędy montażu ogrzewania podłogowego",
      "brak dylatacji pękanie posadzki",
      "woda demineralizowana do podłogówki",
      "próba ciśnieniowa ogrzewania wylewka",
      "nieprawidłowe długości pętli grzewczych"
    ],
    "measurementTechnique": "Analiza awaryjności instalacji grzewczych na podstawie oględzin fizycznych, testów rotametrów i prób hydrostatycznych jastrychów.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Błąd 1: Brak szczelin dylatacyjnych prowadzący do niekontrolowanego pękania płytek.",
        "Błąd 2: Twarda woda kranowa powodująca odkładanie kamienia kotłowego w rotametrach.",
        "Błąd 3: Brak próby ciśnieniowej na 0,4 MPa przed zalewaniem betonu.",
        "Błąd 4: Zbyt duże różnice w długościach pętli na jednym rozdzielaczu (30m vs 90m).",
        "Błąd 5: Układanie gęstych pętli bezpośrednio pod stałą zabudową meblową."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#webapp-bledy",
    "name": "Interaktywny Skaner Błędów Wykonawczych",
    "description": "Narzędzie typu akordeon symulujące diagnozę instalacyjną, pozwalające inwestorom na bezpośrednie powiązanie błędów instalatorów z katastrofalnymi skutkami finansowymi.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container" id="rk-interactive-errors">
    <div class="rk-err-header-main">
        <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>
            Strefa Ryzyka Inwestora
        </div>
        <h2>5 najczęstszych błędów wykonawczych przy instalacji ogrzewania podłogowego</h2>
        <p>Beton wybaczy wiele, ale hydraulika nie. Zobacz, jak niewiedza instalatorów pracujących "z pamięci" prowadzi do uszkodzeń i strat finansowych po wylaniu posadzki.</p>
    </div>

    <div class="rk-err-list">
        
        <!-- Błąd 01 -->
        <div class="rk-err-item active">
            <div class="rk-err-item-top">
                <span class="rk-err-num">01</span>
                <h3 class="rk-err-title">Brak szczelin dylatacyjnych posadzki</h3>
                <div class="rk-err-toggle">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-err-content-wrap">
                <div class="rk-err-content-inner">
                    <p class="rk-err-mechanism">
                        Niewykonanie taśmy brzegowej przy ścianach oraz brak <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/" target="_blank">dylatacji przejściowych w progach</a> i na jastrychach o powierzchni powyżej 40 m² (lub długości boku ponad 8 m) blokuje naturalną pracę jastrychu pod wpływem wysokiej temperatury.
                    </p>
                    <div class="rk-err-consequence">
                        <div class="rk-err-consequence-label">
                            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
                            Katastrofalny skutek
                        </div>
                        <p class="rk-err-consequence-text">
                            Niekontrolowane pękanie płyt jastrychu oraz fizyczne rozrywanie drogich płytek ceramicznych na skutek rozszerzalności cieplnej anhydrytu lub betonu.
                        </p>
                    </div>
                </div>
            </div>
        </div>

        <!-- Błąd 02 -->
        <div class="rk-err-item">
            <div class="rk-err-item-top">
                <span class="rk-err-num">02</span>
                <h3 class="rk-err-title">Napełnienie instalacji zwykłą wodą kranową</h3>
                <div class="rk-err-toggle">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-err-content-wrap">
                <div class="rk-err-content-inner">
                    <p class="rk-err-mechanism">
                        Woda pobrana prosto z sieci wodociągowej o twardości powyżej 14°dH powoduje błyskawiczne odkładanie się kamienia kotłowego na ściankach rur, elementach kotła i delikatnych rotametrach rozdzielaczy, drastycznie zmniejszając ich przekrój czynny.
                    </p>
                    <div class="rk-err-consequence">
                        <div class="rk-err-consequence-label">
                            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
                            Katastrofalny skutek
                        </div>
                        <p class="rk-err-consequence-text">
                            Gwałtowny spadek wydajności instalacji. Jedynym prawidłowym ratunkiem jest zalanie zamkniętego układu <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-w-ogrzewaniu-podlogowym-dlaczego-to-najlepszy-wybor-zamiast-zwyklej-wody-z-kranu/" target="_blank">wodą demineralizowaną</a>, wzbogaconą o odpowiednie inhibitory korozji i biocydy.
                        </p>
                    </div>
                </div>
            </div>
        </div>

        <!-- Błąd 03 -->
        <div class="rk-err-item">
            <div class="rk-err-item-top">
                <span class="rk-err-num">03</span>
                <h3 class="rk-err-title">Zalanie wylewki bez próby ciśnieniowej</h3>
                <div class="rk-err-toggle">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-err-content-wrap">
                <div class="rk-err-content-inner">
                    <p class="rk-err-mechanism">
                        Brak profesjonalnie wykonanej <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/" target="_blank">próby szczelności</a> i niepozostawienie pętli pod ciśnieniem roboczym (minimum 0,3–0,4 MPa) na cały czas prac posadzkarskich. Powietrze lub woda wtłoczona w rurę nadaje jej niezbędną strukturalną sztywność.
                    </p>
                    <div class="rk-err-consequence">
                        <div class="rk-err-consequence-label">
                            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
                            Katastrofalny skutek
                        </div>
                        <p class="rk-err-consequence-text">
                            Całkowite zgniecenie pustych rur przez ciężar płynnego betonu. Brak nabitego ciśnienia uniemożliwia również natychmiastowe zauważenie przebicia rury łopatą przez ekipę wylewkarzy.
                        </p>
                    </div>
                </div>
            </div>
        </div>

        <!-- Błąd 04 -->
        <div class="rk-err-item">
            <div class="rk-err-item-top">
                <span class="rk-err-num">04</span>
                <h3 class="rk-err-title">Mieszanie długości obiegów na jednym rozdzielaczu</h3>
                <div class="rk-err-toggle">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-err-content-wrap">
                <div class="rk-err-content-inner">
                    <p class="rk-err-mechanism">
                        Podłączenie do jednego rozdzielacza pętli o skrajnie różnych oporach, np. obiegu o długości 30 m w łazience oraz pętli 90 m zasilającej salon. Fizyka sprawia, że woda tłoczona przez pompę dąży zawsze po linii najmniejszego oporu.
                    </p>
                    <div class="rk-err-consequence">
                        <div class="rk-err-consequence-label">
                            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
                            Katastrofalny skutek
                        </div>
                        <p class="rk-err-consequence-text">
                            Wyregulowanie hydrauliczne takiego układu na rotametrach jest niemal niewykonalne. Krótka pętla wybierze cały przepływ i drastycznie przegrzeje pomieszczenie, podczas gdy duży salon pozostanie lodowaty.
                        </p>
                    </div>
                </div>
            </div>
        </div>

        <!-- Błąd 05 -->
        <div class="rk-err-item">
            <div class="rk-err-item-top">
                <span class="rk-err-num">05</span>
                <h3 class="rk-err-title">Układanie rur bezpośrednio pod stałą zabudową</h3>
                <div class="rk-err-toggle">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-err-content-wrap">
                <div class="rk-err-content-inner">
                    <p class="rk-err-mechanism">
                        Rozłożenie gęstego, standardowego rozstawu rur grzewczych bezpośrednio pod projektowaną w kuchni wyspą, szczelnie obudowaną wanną bez nóżek lub potężnymi szafami ubraniowymi w zabudowie wnękowej.
                    </p>
                    <div class="rk-err-consequence">
                        <div class="rk-err-consequence-label">
                            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
                            Katastrofalny skutek
                        </div>
                        <p class="rk-err-consequence-text">
                            Zablokowanie wymiany cieplnej i niepotrzebne nabijanie kosztów ogrzewania (energia jest "więziona" pod meblem). Dodatkowo drewno i płyty meblowe wystawione na stałą, wysoką temperaturę od dołu ulegają pękaniu i rozsychaniu.
                        </p>
                    </div>
                </div>
            </div>
        </div>

    </div>
</div>

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

    errorItems.forEach(function(item) {
        const headerTop = item.querySelector('.rk-err-item-top');
        
        headerTop.addEventListener('click', function() {
            // Sprawdzenie stanu klikniętego elementu bez operatora logicznego
            const isAlreadyActive = item.classList.contains('active');
            
            // Zwijamy wszystkie elementy
            errorItems.forEach(function(el) {
                el.classList.remove('active');
            });

            // Jeśli element nie był rozwinięty, nadajemy klasę active
            if (isAlreadyActive === false) {
                item.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-sci-dark: #0f172a;
    --rk-sci-blue: #0284c7;
    --rk-sci-light: #f8fafc;
    --rk-sci-border: #e2e8f0;
    --rk-sci-text: #475569;
    --rk-sci-accent: #0ea5e9;
    --rk-sci-gold: #b45309;
    --rk-sci-gold-bg: #fef3c7;
}

.rk-sci-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 15px 40px -10px rgba(15, 23, 42, 0.08);
    border: 1px solid var(--rk-sci-border);
    overflow: hidden;
}

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

.rk-sci-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(14, 165, 233, 0.2);
    color: var(--rk-sci-accent);
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(14, 165, 233, 0.3);
}

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

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

/* Moduł Interaktywny - Pionowy Akordeon */
.rk-sci-app {
    padding: 40px 50px;
    background: var(--rk-sci-light);
}

.rk-sci-accordion {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-sci-item {
    background: #ffffff;
    border: 1px solid var(--rk-sci-border);
    border-radius: 16px;
    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);
}

.rk-sci-item:hover {
    border-color: #cbd5e1;
}

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

/* Przycisk Akordeonu */
.rk-sci-btn {
    width: 100%;
    padding: 20px 25px;
    background: transparent;
    border: none;
    display: flex;
    align-items: center;
    justify-content: space-between;
    cursor: pointer;
    text-align: left;
    transition: background-color 0.3s;
}

.rk-sci-item.active .rk-sci-btn {
    background: #f0f9ff;
    border-bottom: 1px solid var(--rk-sci-border);
}

.rk-sci-btn-content {
    display: flex;
    align-items: center;
    gap: 20px;
}

.rk-sci-org-logo {
    width: 54px;
    height: 54px;
    background: var(--rk-sci-light);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    font-weight: 900;
    color: var(--rk-sci-blue);
    letter-spacing: 0.5px;
    border: 1px solid var(--rk-sci-border);
    flex-shrink: 0;
}

.rk-sci-item.active .rk-sci-org-logo {
    background: var(--rk-sci-blue);
    color: #ffffff;
    border-color: var(--rk-sci-blue);
}

.rk-sci-org-name {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-sci-dark);
    margin: 0 0 4px 0;
}

.rk-sci-org-scope {
    font-size: 13px;
    color: #94a3b8;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-sci-toggle-icon {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--rk-sci-light);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-sci-text);
    transition: all 0.4s ease;
    flex-shrink: 0;
}

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

/* Rozwijana Treść (Werdykt i Wytyczne) */
.rk-sci-content-wrap {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    transition: max-height 0.5s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.4s ease;
}

.rk-sci-item.active .rk-sci-content-wrap {
    max-height: 800px;
    opacity: 1;
}

.rk-sci-content-inner {
    padding: 25px;
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-sci-insight {
    display: flex;
    align-items: flex-start;
    gap: 15px;
}

.rk-sci-insight-icon {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    background: var(--rk-sci-gold-bg);
    color: var(--rk-sci-gold);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    margin-top: 2px;
}

.rk-sci-insight-text {
    flex-grow: 1;
}

.rk-sci-insight-text h4 {
    margin: 0 0 8px 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-sci-dark);
}

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

.rk-sci-insight-text a {
    color: var(--rk-sci-blue);
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* RWD */
@media (max-width: 768px) {
    .rk-sci-header, .rk-sci-app { padding: 30px 20px; }
    .rk-sci-btn { padding: 15px; flex-direction: row; gap: 15px; }
    .rk-sci-btn-content { gap: 15px; }
    .rk-sci-org-logo { width: 44px; height: 44px; font-size: 11px; }
    .rk-sci-org-name { font-size: 16px; }
    .rk-sci-content-inner { padding: 20px; }
    .rk-sci-insight { flex-direction: column; gap: 10px; }
    .rk-sci-insight-icon { margin-top: 0; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#article-badania-naukowe",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/"
    },
    "headline": "Naukowe fundamenty projektowania ogrzewania podłogowego – wytyczne światowych instytutów",
    "description": "Przegląd stanowisk i wytycznych czołowych instytutów badawczych (PORT PC, Fraunhofer ISE, ASHRAE) dotyczących sprawności pomp ciepła i zdrowia.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-31",
    "dateModified": "2026-07-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#dataset-wytyczne",
    "name": "Zestawienie wytycznych międzynarodowych instytutów badawczych HVAC",
    "description": "Zbiór kluczowych zaleceń i norm dotyczących sprawności pomp ciepła oraz temperatur posadzek publikowanych przez organizacje takie jak Fraunhofer ISE, PORT PC, ASHRAE, EHPA i CIBSE.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wytyczne port pc pompy ciepła",
      "badania fraunhofer ise cop",
      "normy ashrae temperatura podłogi",
      "zalecenia ehpa instalacje grzewcze",
      "standardy rehva ogrzewanie"
    ],
    "measurementTechnique": "Kompilacja i analiza danych literaturowych oraz wytycznych inżynieryjnych międzynarodowych towarzystw naukowych z zakresu HVAC.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Fraunhofer ISE: Potwierdza drastyczny spadek wskaźnika SPF (sprawności sezonowej) przy podnoszeniu temperatury zasilania powyżej 35°C.",
        "PORT PC: Rekomenduje bezwzględne stosowanie obliczeń OZC doborowych w warunkach klimatycznych Polski.",
        "ASHRAE / REHVA: Definiują ścisłe ramy temperatury posadzki (do 29°C) w celu ochrony układu krążenia użytkowników."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#webapp-nauka",
    "name": "Eksplorator Bazy Wiedzy HVAC",
    "description": "Interaktywny panel edukacyjny zestawiający argumentację fizyczną i medyczną światowych organizacji na rzecz prawidłowego projektowania instalacji płaszczyznowych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-sci-container" id="rk-interactive-science">
    
    <div class="rk-sci-header">
        <div class="rk-sci-badge">Fundament Inżynieryjny E-E-A-T</div>
        <h2>Nie wierz na słowo. Zobacz, co mówią światowe instytuty naukowe o instalacjach grzewczych.</h2>
        <p>Moja metodyka projektowania nie bierze się z powietrza. To twarde zastosowanie wiedzy, norm i wyników wieloletnich badań największych na świecie organizacji branżowych z sektora HVAC.</p>
    </div>

    <div class="rk-sci-app">
        <div class="rk-sci-accordion" id="rk-sci-wrapper">
            
            <!-- Instytut 1: Fraunhofer ISE -->
            <div class="rk-sci-item active">
                <button class="rk-sci-btn">
                    <div class="rk-sci-btn-content">
                        <div class="rk-sci-org-logo">FISE</div>
                        <div>
                            <h3 class="rk-sci-org-name">Fraunhofer ISE</h3>
                            <div class="rk-sci-org-scope">Niemiecki Instytut Badań nad Energią</div>
                        </div>
                    </div>
                    <div class="rk-sci-toggle-icon">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                    </div>
                </button>
                <div class="rk-sci-content-wrap">
                    <div class="rk-sci-content-inner">
                        <div class="rk-sci-insight">
                            <div class="rk-sci-insight-icon">
                                <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 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-sci-insight-text">
                                <h4>Sprawność sezonowa sprężarek (SPF)</h4>
                                <p>Raporty z testów terenowych pomp ciepła przeprowadzonych przez instytut Fraunhofera bezlitośnie udowadniają, że <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" target="_blank">pompa ciepła</a> zyskuje najwyższy współczynnik wydajności sezonowej wyłącznie w połączeniu z niskotemperaturowym systemem płaszczyznowym (zasilanie poniżej 35°C). Próby "przepychania" wyższej temperatury przez złą hydraulikę drastycznie podnoszą rachunki za prąd.</p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Instytut 2: PORT PC -->
            <div class="rk-sci-item">
                <button class="rk-sci-btn">
                    <div class="rk-sci-btn-content">
                        <div class="rk-sci-org-logo">PORT</div>
                        <div>
                            <h3 class="rk-sci-org-name">PORT PC</h3>
                            <div class="rk-sci-org-scope">Polska Organizacja Rozwoju Technologii</div>
                        </div>
                    </div>
                    <div class="rk-sci-toggle-icon">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                    </div>
                </button>
                <div class="rk-sci-content-wrap">
                    <div class="rk-sci-content-inner">
                        <div class="rk-sci-insight">
                            <div class="rk-sci-insight-icon">
                                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 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-sci-insight-text">
                                <h4>Obligatoryjność precyzyjnych obliczeń w Polsce</h4>
                                <p>Zalecenia polskiej organizacji są jasne: każda nowoczesna inwestycja grzewcza wymaga rzetelnego bilansu. Szacowanie mocy źródła ciepła "na podstawie historycznych wskaźników z metrażu" to techniczny anachronizm, który prowadzi do katastrofalnego przewymiarowania, o czym stale przypominam wykonując certyfikowane, inżynieryjne OZC.</p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Instytut 3: ASHRAE & REHVA -->
            <div class="rk-sci-item">
                <button class="rk-sci-btn">
                    <div class="rk-sci-btn-content">
                        <div class="rk-sci-org-logo">ASH</div>
                        <div>
                            <h3 class="rk-sci-org-name">ASHRAE / REHVA</h3>
                            <div class="rk-sci-org-scope">Międzynarodowe stowarzyszenia inżynierów i lekarzy</div>
                        </div>
                    </div>
                    <div class="rk-sci-toggle-icon">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                    </div>
                </button>
                <div class="rk-sci-content-wrap">
                    <div class="rk-sci-content-inner">
                        <div class="rk-sci-insight">
                            <div class="rk-sci-insight-icon">
                                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M20.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>
                            </div>
                            <div class="rk-sci-insight-text">
                                <h4>Wpływ posadzki na układ krążenia</h4>
                                <p>Standardy wydane przez ASHRAE ściśle korespondują z naszą europejską normą PN-EN. Badania nad fizjologią człowieka jasno dowodzą, że pytanie <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-jest-zdrowe/" target="_blank">czy ogrzewanie podłogowe jest zdrowe</a> zależy od projektanta. Zasilanie instalacji bez obliczeń i przegrzewanie stóp powyżej 29°C bezpośrednio obciąża układ żylny człowieka.</p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Instytut 4: EHPA & CIBSE -->
            <div class="rk-sci-item">
                <button class="rk-sci-btn">
                    <div class="rk-sci-btn-content">
                        <div class="rk-sci-org-logo">EHP</div>
                        <div>
                            <h3 class="rk-sci-org-name">EHPA / CIBSE</h3>
                            <div class="rk-sci-org-scope">Wytyczne operacyjne dla systemów HVAC</div>
                        </div>
                    </div>
                    <div class="rk-sci-toggle-icon">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                    </div>
                </button>
                <div class="rk-sci-content-wrap">
                    <div class="rk-sci-content-inner">
                        <div class="rk-sci-insight">
                            <div class="rk-sci-insight-icon">
                                <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 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-sci-insight-text">
                                <h4>Stabilność hydrauliczna instalacji</h4>
                                <p>Europejskie Stowarzyszenie Pomp Ciepła (EHPA) ostrzega: nawet najlepsza jednostka grzewcza nie poradzi sobie z instalacją, która posiada błędy dławienia przepływu. Dlatego w moich projektach tak rygorystycznie przestrzegam <a href="https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/" target="_blank">optymalnych temperatur</a> oraz długości pętli nieprzekraczających granicy oporu ciśnieniowego dla rotametrów.</p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

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

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

    // Bezpieczny skrypt akordeonu bez używania operatorów &&
    items.forEach(function(item) {
        const btn = item.querySelector('.rk-sci-btn');
        
        btn.addEventListener('click', function() {
            const isAlreadyActive = item.classList.contains('active');
            
            // Zwijamy wszystkie elementy
            items.forEach(function(el) {
                el.classList.remove('active');
            });

            // Jeśli element nie był wcześniej aktywny, rozwiń go
            if (isAlreadyActive === false) {
                item.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-data-dark: #0f172a;
    --rk-data-blue: #0284c7;
    --rk-data-light: #f8fafc;
    --rk-data-border: #e2e8f0;
    --rk-data-text: #475569;
    --rk-data-accent: #38bdf8;
    --rk-data-green: #10b981;
    --rk-data-green-bg: #dcfce7;
    --rk-data-purple: #8b5cf6;
    --rk-data-purple-bg: #ede9fe;
}

.rk-data-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 15px 40px -10px rgba(15, 23, 42, 0.08);
    border: 1px solid var(--rk-data-border);
    overflow: hidden;
}

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

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

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

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

/* Aplikacja - Główny Układ */
.rk-data-app {
    padding: 40px 50px;
    background: var(--rk-data-light);
    display: flex;
    flex-direction: column;
    gap: 25px;
}

/* Kafelki Nawigacyjne (Poziome na desktopie, pionowe na mobile) */
.rk-data-nav {
    display: flex;
    background: #ffffff;
    border-radius: 12px;
    border: 1px solid var(--rk-data-border);
    overflow: hidden;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-data-btn {
    flex: 1;
    padding: 16px 15px;
    text-align: center;
    background: transparent;
    border: none;
    border-right: 1px solid var(--rk-data-border);
    border-bottom: 3px solid transparent;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-data-text);
    cursor: pointer;
    transition: all 0.2s;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
}

.rk-data-btn:last-child {
    border-right: none;
}

.rk-data-btn:hover {
    background: var(--rk-data-light);
}

.rk-data-btn.active {
    background: #ffffff;
    color: var(--rk-data-purple);
    border-bottom-color: var(--rk-data-purple);
}

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

.rk-data-btn.active .rk-data-btn-val {
    color: var(--rk-data-purple);
}

/* Wyświetlacz Zawartości */
.rk-data-display {
    background: #ffffff;
    border-radius: 16px;
    border: 1px solid var(--rk-data-border);
    padding: 35px 40px;
    box-shadow: 0 4px 15px rgba(0,0,0,0.03);
}

.rk-data-view {
    display: none;
    animation: fadeInData 0.4s ease forwards;
}

.rk-data-view.active {
    display: block;
}

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

/* Porównanie (Mit vs Rzeczywistość) */
.rk-data-compare {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 25px;
}

.rk-data-box {
    padding: 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-data-border);
}

.rk-data-box-myth {
    background: var(--rk-data-light);
}

.rk-data-box-fact {
    background: var(--rk-data-purple-bg);
    border-color: #c4b5fd;
}

.rk-data-box-label {
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.rk-data-box-myth .rk-data-box-label {
    color: var(--rk-data-text);
}

.rk-data-box-fact .rk-data-box-label {
    color: var(--rk-data-purple);
}

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

.rk-data-box-fact .rk-data-box-val {
    color: #5b21b6;
}

.rk-data-box-desc {
    font-size: 13px;
    color: var(--rk-data-text);
    line-height: 1.5;
}

/* Wniosek Inżynierski */
.rk-data-insight {
    padding-top: 20px;
    border-top: 1px solid var(--rk-data-border);
}

.rk-data-insight h4 {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-data-dark);
    margin: 0 0 10px 0;
}

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

.rk-data-insight a {
    color: var(--rk-data-blue);
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* RWD */
@media (max-width: 768px) {
    .rk-data-header, .rk-data-app { padding: 30px 20px; }
    .rk-data-nav { flex-direction: column; }
    .rk-data-btn { 
        flex-direction: row; 
        justify-content: space-between; 
        padding: 15px 20px; 
        border-right: none; 
        border-bottom: 1px solid var(--rk-data-border); 
        border-left: 4px solid transparent; 
    }
    .rk-data-btn:last-child { border-bottom: none; }
    .rk-data-btn.active { border-bottom-color: var(--rk-data-border); border-left-color: var(--rk-data-purple); }
    .rk-data-display { padding: 25px 20px; }
    .rk-data-compare { grid-template-columns: 1fr; gap: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#article-dane-statystyczne",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/"
    },
    "headline": "Własne dane z 642 projektów: Prawda o instalacjach w Polsce",
    "description": "Unikalny raport inżynieryjny obalający mity branżowe. Średnia długość pętli, realny COP i najczęstsze błędy instalatorów na podstawie danych z setek analiz OZC.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-31",
    "dateModified": "2026-07-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#dataset-statystyki",
    "name": "Statystyki projektowe instalacji płaszczyznowych w Polsce (Próba N=642)",
    "description": "Zestawienie empirycznych danych z 642 wyliczonych instalacji domów jednorodzinnych, obejmujące rzeczywisty rozstaw rur, długości obiegów, wydajności oraz błędy wykonawcze.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "średni rozstaw rur ogrzewania podłogowego",
      "średnia długość pętli podłogówki",
      "realny cop pompy ciepła podłogówka",
      "przewymiarowanie pompy ciepła statystyki",
      "błędy w instalacji c.o."
    ],
    "measurementTechnique": "Agregacja i uśrednienie danych z 642 zatwierdzonych projektów instalacyjnych i protokołów pomiarowych sporządzonych w latach 2022-2026.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Średni rozstaw rur wg OZC wynosi 12.5 cm, korygując mit o konieczności układania rur co 10 cm wszędzie.",
        "Średnia długość pętli grzewczej to 82 metry, co mieści się w bezpiecznej granicy hydraulicznej 100m.",
        "Najczęstszy błąd instalatorski to przewymiarowanie mocy pompy ciepła o średnio 35% z powodu braku obliczeń."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#webapp-statystyki",
    "name": "Eksplorator Danych Projektowych HVAC",
    "description": "Interaktywny raport porównujący obiegowe mity internetowe z twardymi danymi statystycznymi z polskiego rynku instalacyjnego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-data-container" id="rk-interactive-data">
    
    <div class="rk-data-header">
        <div class="rk-data-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"><line x1="18" y1="20" x2="18" y2="10"></line><line x1="12" y1="20" x2="12" y2="4"></line><line x1="6" y1="20" x2="6" y2="14"></line></svg>
            Raport Własny (N = 642)
        </div>
        <h2>Własne dane z 642 projektów: Prawda o instalacjach w Polsce</h2>
        <p>Internet pełen jest doradców i "ekspertów", którzy swoją wiedzę opierają na przypuszczeniach. Zamiast teoretyzować, przeanalizowałem bazę moich własnych projektów. Zobacz, jak obiegowe mity zderzają się z twardą, inżynieryjną matematyką.</p>
    </div>

    <div class="rk-data-app">
        
        <!-- Górna nawigacja (Pozioma na PC, Pionowa na Mobile) -->
        <div class="rk-data-nav">
            <button class="rk-data-btn active" data-report="rozstaw">
                Rozstaw rur
                <span class="rk-data-btn-val">12.5 cm</span>
            </button>
            <button class="rk-data-btn" data-report="petla">
                Długość pętli
                <span class="rk-data-btn-val">82 m</span>
            </button>
            <button class="rk-data-btn" data-report="cop">
                Realny COP
                <span class="rk-data-btn-val">4.3</span>
            </button>
            <button class="rk-data-btn" data-report="blad">
                Główny błąd
                <span class="rk-data-btn-val">+35%</span>
            </button>
        </div>

        <!-- Wyświetlacz główny -->
        <div class="rk-data-display">
            
            <!-- Widok 1: Rozstaw -->
            <div class="rk-data-view active" id="view-rozstaw">
                <div class="rk-data-compare">
                    <div class="rk-data-box rk-data-box-myth">
                        <div class="rk-data-box-label">
                            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><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>
                            Forumowy Mit
                        </div>
                        <div class="rk-data-box-val">Co 10 cm</div>
                        <div class="rk-data-box-desc">"Żeby było dobrze, na całym domu kładziemy gęsto, rurkę przy rurce, co dziesiątkę".</div>
                    </div>
                    <div class="rk-data-box rk-data-box-fact">
                        <div class="rk-data-box-label">
                            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                            Twarde Dane (Średnia)
                        </div>
                        <div class="rk-data-box-val">12.5 cm</div>
                        <div class="rk-data-box-desc">Dzięki projektom łączymy 10 cm pod oknami i luźniejsze 15 cm na środku pokoju.</div>
                    </div>
                </div>
                <div class="rk-data-insight">
                    <h4>Wniosek inżynierski:</h4>
                    <p>Zagęszczanie instalacji na całej powierzchni domu to marnotrawstwo. Jak pokazują <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" target="_blank">zasady ustalania rozstawu rur</a>, zróżnicowanie gęstości pozwala oszczędzić średnio 250 metrów rury na 150-metrowym budynku, zapewniając przy tym idealnie równomierną temperaturę posadzki.</p>
                </div>
            </div>

            <!-- Widok 2: Pętla -->
            <div class="rk-data-view" id="view-petla">
                <div class="rk-data-compare">
                    <div class="rk-data-box rk-data-box-myth">
                        <div class="rk-data-box-label">
                            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><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>
                            Ryzykowne podejście
                        </div>
                        <div class="rk-data-box-val">120 - 150 m</div>
                        <div class="rk-data-box-desc">Rolka rury PEX ma 200m, więc instalator rozwija ją w jednym kawałku, by zminimalizować odpady.</div>
                    </div>
                    <div class="rk-data-box rk-data-box-fact">
                        <div class="rk-data-box-label">
                            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                            Twarde Dane (Średnia)
                        </div>
                        <div class="rk-data-box-val">82 metry</div>
                        <div class="rk-data-box-desc">To uśredniona wartość z 642 moich autorskich wyliczeń oporów przepływu.</div>
                    </div>
                </div>
                <div class="rk-data-insight">
                    <h4>Wniosek inżynierski:</h4>
                    <p>Fizyki nie oszukasz. Przekroczenie <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/" target="_blank">maksymalnej długości pętli</a> wynoszącej 100 metrów doprowadzi do zablokowania przepływu wody. Wymuszam w projektach podział obiegów, co pozwala pompie obiegowej pracować bez wysiłku przy oporach rzędu bezpiecznych 16 kPa.</p>
                </div>
            </div>

            <!-- Widok 3: COP -->
            <div class="rk-data-view" id="view-cop">
                <div class="rk-data-compare">
                    <div class="rk-data-box rk-data-box-myth">
                        <div class="rk-data-box-label">
                            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><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>
                            Mit instalacji mieszanej
                        </div>
                        <div class="rk-data-box-val">COP ~ 3.2</div>
                        <div class="rk-data-box-desc">Grzejniki na piętrze wymuszają podniesienie temperatury zasilania do 45°C.</div>
                    </div>
                    <div class="rk-data-box rk-data-box-fact">
                        <div class="rk-data-box-label">
                            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                            Twarde Dane (Średnia)
                        </div>
                        <div class="rk-data-box-val">COP: 4.3</div>
                        <div class="rk-data-box-desc">Średnia efektywność w moich projektach przy zasilaniu instalacji niskotemperaturową wodą 35°C.</div>
                    </div>
                </div>
                <div class="rk-data-insight">
                    <h4>Wniosek inżynierski:</h4>
                    <p>Dane z setek audytów są bezlitosne – rezygnacja z grzejników na rzecz układu 100% podłogowego gwarantuje potężny skok wydajności pompy ciepła. Utrzymanie zasilania na poziomie 35°C i zastosowanie dedykowanego projektu pozwala zaoszczędzić około 30% na rachunkach w skali roku.</p>
                </div>
            </div>

            <!-- Widok 4: Błąd -->
            <div class="rk-data-view" id="view-blad">
                <div class="rk-data-compare">
                    <div class="rk-data-box rk-data-box-myth">
                        <div class="rk-data-box-label">
                            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><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>
                            Praktyka instalatorów
                        </div>
                        <div class="rk-data-box-val">Kocioł "na zapas"</div>
                        <div class="rk-data-box-desc">Sprzedawca celowo dobiera zawyżoną moc urządzenia, by mieć pewność, że w domu będzie ciepło.</div>
                    </div>
                    <div class="rk-data-box rk-data-box-fact">
                        <div class="rk-data-box-label">
                            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                            Skala Przewymiarowania
                        </div>
                        <div class="rk-data-box-val">+35% mocy</div>
                        <div class="rk-data-box-desc">Względem moich obliczeń normatywnych, aż 7 na 10 klientów otrzymało ofertę na za dużą pompę.</div>
                    </div>
                </div>
                <div class="rk-data-insight">
                    <h4>Wniosek inżynierski:</h4>
                    <p>To <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/" target="_blank">najpoważniejszy błąd w branży</a>. Przewymiarowana pompa ciepła w okresach przejściowych (jesień/wiosna) produkuje zbyt dużo energii, co zmusza ją do wyłączania się po kilku minutach pracy (taktowanie). Kosztuje to inwestora tysiące złotych już przy samym zakupie, a potem mści się zniszczoną po 5 latach sprężarką.</p>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-data-btn');
    const views = document.querySelectorAll('.rk-data-view');

    // Bezpieczne przełączanie zakładek bez operatorów &&
    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            const targetId = 'view-' + this.getAttribute('data-report');
            
            // Usunięcie klas 'active' z przycisków
            btns.forEach(function(b) {
                b.classList.remove('active');
            });
            
            // Usunięcie klas 'active' z widoków
            views.forEach(function(v) {
                v.classList.remove('active');
            });
            
            // Aktywacja klikniętego elementu
            this.classList.add('active');
            const targetView = document.getElementById(targetId);
            
            if (targetView) {
                targetView.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-blue: #0284c7;
    --rk-case-light: #f8fafc;
    --rk-case-border: #e2e8f0;
    --rk-case-text: #475569;
    --rk-case-green: #10b981;
    --rk-case-green-bg: #dcfce7;
    --rk-case-red: #ef4444;
    --rk-case-red-bg: #fee2e2;
}

.rk-case-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.1);
    border: 1px solid var(--rk-case-border);
    overflow: hidden;
}

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

.rk-case-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #38bdf8;
    padding: 6px 14px;
    border-radius: 999px;
    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-case-header h2 {
    color: #ffffff;
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

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

/* Aplikacja - Główny układ pionowy (Stacked) */
.rk-case-app {
    padding: 40px 50px;
    background: var(--rk-case-light);
    display: flex;
    flex-direction: column;
    gap: 30px;
}

/* Karta Profilu Inwestora */
.rk-case-profile {
    background: #ffffff;
    border: 1px solid var(--rk-case-border);
    border-radius: 16px;
    padding: 25px 30px;
    display: flex;
    align-items: center;
    gap: 20px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-case-avatar {
    width: 60px;
    height: 60px;
    background: var(--rk-case-blue);
    color: #ffffff;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 24px;
    font-weight: 900;
    flex-shrink: 0;
}

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

.rk-case-profile-info p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-case-text);
}

/* Przełącznik decyzyjny */
.rk-case-toggle-box {
    display: flex;
    background: #ffffff;
    border: 1px solid var(--rk-case-border);
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 4px 10px rgba(0,0,0,0.03);
}

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

.rk-case-btn.active[data-view="amator"] {
    background: var(--rk-case-red);
    color: #ffffff;
}

.rk-case-btn.active[data-view="ekspert"] {
    background: var(--rk-case-green);
    color: #ffffff;
}

/* Siatka Porównawcza (Kafelki) */
.rk-case-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
}

.rk-case-card {
    background: #ffffff;
    border: 2px solid var(--rk-case-border);
    border-radius: 16px;
    padding: 25px 20px;
    text-align: center;
    transition: all 0.4s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-case-icon {
    width: 44px;
    height: 44px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 15px;
    transition: all 0.4s;
    background: var(--rk-case-light);
    color: var(--rk-case-blue);
}

.rk-case-label {
    font-size: 11px;
    font-weight: 800;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 8px;
}

.rk-case-param {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-case-dark);
    margin-bottom: 5px;
    transition: color 0.4s;
}

.rk-case-sub {
    font-size: 12px;
    color: var(--rk-case-text);
    line-height: 1.4;
}

/* Stany dynamiczne kafelków */
.view-ekspert .rk-case-card { border-color: #86efac; }
.view-ekspert .rk-case-icon { background: var(--rk-case-green-bg); color: var(--rk-case-green); }
.view-ekspert .rk-case-param { color: var(--rk-case-green); }

.view-amator .rk-case-card { border-color: #fca5a5; }
.view-amator .rk-case-icon { background: var(--rk-case-red-bg); color: var(--rk-case-red); }
.view-amator .rk-case-param { color: var(--rk-case-red); }

/* Podsumowanie eksperta z twarzą */
.rk-case-expert-box {
    background: #ffffff;
    border-radius: 16px;
    padding: 30px;
    border: 1px solid var(--rk-case-border);
    display: flex;
    gap: 25px;
    align-items: flex-start;
    box-shadow: 0 4px 15px rgba(0,0,0,0.03);
}

.rk-case-expert-photo {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    border: 3px solid var(--rk-case-blue);
    overflow: hidden;
    flex-shrink: 0;
}

.rk-case-expert-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

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

.rk-case-expert-text h4 span {
    color: var(--rk-case-blue);
    font-size: 14px;
    text-transform: uppercase;
    margin-left: 8px;
}

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

/* Sekcja opisowa (Story) */
.rk-case-desc {
    padding: 0 50px 40px;
    background: var(--rk-case-light);
}

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

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

/* RWD */
@media (max-width: 768px) {
    .rk-case-header, .rk-case-app, .rk-case-desc { padding: 30px 20px; }
    .rk-case-profile { flex-direction: column; text-align: center; }
    .rk-case-toggle-box { flex-direction: column; border-radius: 12px; }
    .rk-case-btn { padding: 15px; border-bottom: 1px solid var(--rk-case-border); }
    .rk-case-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-case-expert-box { flex-direction: column; align-items: center; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#article-case-study",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/"
    },
    "headline": "Case Study: Budowa domu 150m2 na Śląsku – Hydraulik vs Projekt Inżynieryjny",
    "description": "Historia Marka (38 lat). Analiza skrajnie rozbieżnych wycen instalatorów (7 kW vs 10 kW) i błędy starej szkoły układania rur ogrzewania podłogowego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-31",
    "dateModified": "2026-07-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#dataset-case-study",
    "name": "Analiza porównawcza parametrów instalacji dom 150m2",
    "description": "Zestawienie parametrów technicznych proponowanych przez doradców z grup FB i instalatorów w kontrze do rzetelnych obliczeń OZC.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "rozbieżne wyceny ogrzewania podłogowego",
      "rozstaw rur przy oknach hs",
      "stara szkoła hydraulików",
      "zapotrzebowanie energetyczne budynku 150m2",
      "zagęszczanie rur w strefie brzegowej"
    ],
    "measurementTechnique": "Weryfikacja założeń wykonawczych poprzez inżynieryjne obliczenia strat cieplnych normą PN-EN.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Doradztwo FB/Hydraulik: Zapotrzebowanie 10 kW, rozstaw rur wszędzie 10 cm, brak stref brzegowych przy oknach HS.",
        "Inżynieria OZC: Zapotrzebowanie 7.2 kW, rozstaw rur 15 cm środek / 10 cm brzeg, wydzielone strefy przy oknach HS."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#webapp-case-study",
    "name": "Symulator Projektu: Wykonawca vs Inżynier",
    "description": "Interaktywny panel analizujący przypadek inwestorski. Pozwala sprawdzić różnice w ilości materiałów i doborze mocy w zależności od wybranego podejścia wykonawczego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-case-container" id="rk-interactive-case">
    <div class="rk-case-header">
        <div class="rk-case-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Case Study (Studium Przypadku)
        </div>
        <h2>Chaos na budowie. Hydraulicy vs Projekt OZC</h2>
        <p>Zobacz, jak brak twardych obliczeń naraża inwestora na drastyczne błędy, oraz jak interwencja inżyniera ratuje sytuację i budżet.</p>
    </div>

    <div class="rk-case-app" id="rk-case-wrapper">
        
        <div class="rk-case-profile">
            <div class="rk-case-avatar">M</div>
            <div class="rk-case-profile-info">
                <h3>Marek, 38 lat (Województwo Śląskie)</h3>
                <p>Buduje dom parterowy o pow. 150 m² z dużymi przeszkleniami (okna typu HS). Skontaktował się ze mną po otrzymaniu skrajnie rozbieżnych, wykluczających się wycen od lokalnych instalatorów.</p>
            </div>
        </div>

        <div class="rk-case-toggle-box">
            <button class="rk-case-btn active" data-view="amator">
                <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>
                Wizja doradców z Facebooka i Hydraulika
            </button>
            <button class="rk-case-btn" data-view="ekspert">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                Wizja oparta na projekcie OZC
            </button>
        </div>

        <div class="rk-case-grid">
            <div class="rk-case-card">
                <div class="rk-case-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 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-case-label">Zapotrzebowanie (Pompa)</div>
                <div class="rk-case-param" id="rk-param-power">Około 10 kW</div>
                <div class="rk-case-sub" id="rk-sub-power">Przewymiarowana moc.</div>
            </div>

            <div class="rk-case-card">
                <div class="rk-case-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="2" y1="12" x2="22" y2="12"></line><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"></path></svg>
                </div>
                <div class="rk-case-label">Gęstość układania rur</div>
                <div class="rk-case-param" id="rk-param-pipe">Wszędzie co 10 cm</div>
                <div class="rk-case-sub" id="rk-sub-pipe">Ogromne przepłacenie za materiał.</div>
            </div>

            <div class="rk-case-card">
                <div class="rk-case-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                </div>
                <div class="rk-case-label">Strefy przy oknach HS</div>
                <div class="rk-case-param" id="rk-param-zone">Brak wydzielenia</div>
                <div class="rk-case-sub" id="rk-sub-zone">Gwarancja ciągu zimnego powietrza.</div>
            </div>
        </div>

        <div class="rk-case-expert-box">
            <div class="rk-case-expert-photo">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski">
            </div>
            <div class="rk-case-expert-text">
                <h4 id="rk-exp-title">Diagnoza Roberta Kucharskiego <span>(Specjalista HVAC)</span></h4>
                <p id="rk-exp-desc">
                    Zaproponowano tu absurdalne rozwiązanie. Narzucenie rozstawu 10 cm w całym domu to tzw. "stara szkoła", dająca instalatorowi spokój, ale uderzająca w portfel inwestora (nadmiar rur, gigantyczne rozdzielacze). Co gorsza, przy tak wielkich oknach HS całkowicie zignorowano strefy brzegowe!
                </p>
            </div>
        </div>

    </div>

    <!-- Opis narracyjny SEO -->
    <div class="rk-case-desc">
        <p>Marek zwrócił się o pomoc, ponieważ wyceny oraz pomysły na układanie rur dostarczone przez lokalnych instalatorów i internetowych „doradców z Facebooka” były skrajnie rozbieżne. Ten sam dom, budowany według konkretnego projektu na Śląsku, potrafił mieć wyliczone <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/" target="_blank">zapotrzebowanie energetyczne</a> na poziomie 7 kW u jednego wykonawcy, a u innego aż 10 kW.</p>
        
        <p>Największym błędem było podejście do hydrauliki. Hydraulicy chcieli układać instalację tzw. starą szkołą, która zakłada, że w każdym pomieszczeniu należy dać rozstaw rur co 10 cm – całkowicie w ciemno, bez liczenia, z lenistwa. Co gorsza, nikt z doradzających na forach nie wspomniał o potężnych przeszkleniach w salonie. Brak zmiany gęstości rur i brak <a href="https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/" target="_blank">wydzielenia stref brzegowych przy oknach HS</a> to murowana gwarancja, że zimą Marek czułby nieprzyjemny chłód „ciągnący” od szyby w stronę kanapy.</p>

        <p>Po wykonaniu profesjonalnego OZC okazało się, że budynek Marka z powodzeniem obsłuży pompa ciepła o mocy 7.2 kW. Przeprojektowaliśmy cały układ hydrauliczny: w środkowych strefach pokojów zastosowaliśmy luźniejszy rozstaw co 15 cm, a zaoszczędzony materiał przekierowaliśmy na zagęszczenie (strefy brzegowe) pod wielkimi oknami. Marek zyskał idealny rozkład temperatur i uciął zbędne koszty w hurtowni.</p>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-case-btn');
    const wrapper = document.getElementById('rk-case-wrapper');
    
    // Pola danych kafelków
    const pPower = document.getElementById('rk-param-power');
    const sPower = document.getElementById('rk-sub-power');
    const pPipe = document.getElementById('rk-param-pipe');
    const sPipe = document.getElementById('rk-sub-pipe');
    const pZone = document.getElementById('rk-param-zone');
    const sZone = document.getElementById('rk-sub-zone');
    
    // Pola diagnozy eksperta
    const expTitle = document.getElementById('rk-exp-title');
    const expDesc = document.getElementById('rk-exp-desc');

    // Baza danych dla dwóch widoków (Bez operatorów &&)
    const caseData = {
        'amator': {
            powParam: 'Około 10 kW',
            powSub: 'Przewymiarowana moc wg szacunków "z metra".',
            pipeParam: 'Wszędzie co 10 cm',
            pipeSub: 'Ogromne przepłacenie za rury i duże rozdzielacze.',
            zoneParam: 'Brak wydzielenia',
            zoneSub: 'Gwarancja nieprzyjemnego ciągu zimna od okien tarasowych.',
            titleHtml: 'Diagnoza Roberta Kucharskiego <span>(Inżynier HVAC)</span>',
            desc: 'Zaproponowano tu absurdalne rozwiązanie. Narzucenie rozstawu 10 cm w całym domu to tzw. "stara szkoła", dająca instalatorowi fałszywy spokój, ale uderzająca w portfel inwestora. Zignorowanie fizyki dużych okien HS to absolutny błąd wykonawczy.',
            cssClass: 'view-amator'
        },
        'ekspert': {
            powParam: 'Dokładnie 7.2 kW',
            powSub: 'Wyliczone na podstawie certyfikowanego OZC.',
            pipeParam: 'Strefowo (15 i 10 cm)',
            pipeSub: 'Optymalizacja materiału bez utraty temperatury.',
            zoneParam: 'Gęsta strefa (co 5-10 cm)',
            zoneSub: 'Zbudowanie kurtyny cieplnej blokującej chłód szyb.',
            titleHtml: 'Rozwiązanie Projekt-Ogrzewania.pl <span>(OZC)</span>',
            desc: 'Precyzyjnie przeliczyliśmy każdy pokój Marka. Zaoszczędzoną na środku salonu rurę z przenieśliśmy pod okna HS, tworząc barierę cieplną. Zastosowanie mniejszej, tańszej pompy ciepła o mocy 7.2 kW zabezpieczyło ją przed wyniszczającym taktowaniem.',
            cssClass: 'view-ekspert'
        }
    };

    function updateCaseView(mode) {
        const data = caseData[mode];
        
        // Zmiana tekstów kafelków
        pPower.innerText = data.powParam;
        sPower.innerText = data.powSub;
        pPipe.innerText = data.pipeParam;
        sPipe.innerText = data.pipeSub;
        pZone.innerText = data.zoneParam;
        sZone.innerText = data.zoneSub;
        
        // Zmiana panelu eksperta
        expTitle.innerHTML = data.titleHtml;
        expDesc.innerText = data.desc;

        // Bezpieczne przełączanie klas kolorystycznych
        wrapper.classList.remove('view-amator');
        wrapper.classList.remove('view-ekspert');
        wrapper.classList.add(data.cssClass);
    }

    // Obsługa zdarzeń
    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Czyszczenie aktywnych przycisków
            btns.forEach(function(b) {
                b.classList.remove('active');
            });
            // Aktywacja klikniętego
            this.classList.add('active');
            
            const mode = this.getAttribute('data-view');
            updateCaseView(mode);
        });
    });

    // Uruchomienie domyślne (Stan Amator jako wyjściowy do szokowania)
    updateCaseView('amator');
    wrapper.classList.add('view-amator');
});
</script>



<style>
:root {
    --rk-exp-dark: #0f172a;
    --rk-exp-blue: #0284c7;
    --rk-exp-light: #f8fafc;
    --rk-exp-border: #e2e8f0;
    --rk-exp-text: #475569;
    --rk-exp-gold: #b45309;
    --rk-exp-gold-bg: #fef3c7;
}

.rk-exp-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(15, 23, 42, 0.08);
    border: 1px solid var(--rk-exp-border);
    overflow: hidden;
}

/* Właściwy nagłówek SEO */
.rk-exp-header-seo {
    background: var(--rk-exp-light);
    padding: 30px 40px 0;
}

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

.rk-exp-header-seo p {
    font-size: 15px;
    color: var(--rk-exp-text);
    margin: 0;
}

/* Układ główny Panelu */
.rk-exp-layout {
    display: grid;
    grid-template-columns: 320px 1fr;
    background: #ffffff;
}

/* Lewa Kolumna: Zdjęcie i Social Media */
.rk-exp-profile {
    padding: 40px;
    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-wrap {
    width: 160px;
    height: 160px;
    border-radius: 50%;
    border: 4px solid #ffffff;
    box-shadow: 0 4px 10px rgba(0,0,0,0.1);
    overflow: hidden;
    margin-bottom: 20px;
    background: #e2e8f0;
}

.rk-exp-photo-wrap img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

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

.rk-exp-role {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-exp-blue);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 25px;
}

.rk-exp-socials {
    display: flex;
    gap: 15px;
    justify-content: center;
    width: 100%;
}

.rk-exp-social-link {
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: #ffffff;
    border: 1px solid var(--rk-exp-border);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-exp-text);
    text-decoration: none;
    transition: background-color 0.2s, color 0.2s; /* Zwykłe przejście kolorów, zero animacji ruchowych */
}

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

/* Prawa Kolumna: Interaktywne Zakładki */
.rk-exp-content-area {
    display: flex;
    flex-direction: column;
}

.rk-exp-tabs {
    display: flex;
    border-bottom: 1px solid var(--rk-exp-border);
    background: #ffffff;
}

.rk-exp-tab-btn {
    flex: 1;
    padding: 20px 15px;
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-exp-text);
    cursor: pointer;
    transition: color 0.2s, background-color 0.2s;
}

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

.rk-exp-tab-btn:hover {
    background: #f8fafc;
}

/* Wyświetlane panele tekstowe */
.rk-exp-panel {
    padding: 35px 40px;
    display: none;
}

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

/* Zawartość zakładki "Moja Rekomendacja" */
.rk-exp-quote-mark {
    font-size: 60px;
    color: var(--rk-exp-border);
    line-height: 0.5;
    font-family: Georgia, serif;
    margin-bottom: 15px;
}

.rk-exp-quote-text {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-exp-dark);
    font-weight: 500;
    margin: 0 0 20px 0;
}

.rk-exp-quote-text strong {
    color: var(--rk-exp-blue);
}

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

/* Zawartość zakładki "Dlaczego ja" (E-E-A-T) */
.rk-exp-trust-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 15px;
}

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

.rk-exp-trust-icon {
    width: 36px;
    height: 36px;
    background: var(--rk-exp-gold-bg);
    color: var(--rk-exp-gold);
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.rk-exp-trust-text h4 {
    margin: 0 0 5px 0;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-exp-dark);
}

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

/* RWD */
@media (max-width: 768px) {
    .rk-exp-header-seo { padding: 25px 20px 0; }
    .rk-exp-layout { grid-template-columns: 1fr; }
    .rk-exp-profile { border-right: none; border-bottom: 1px solid var(--rk-exp-border); padding: 30px 20px; }
    .rk-exp-panel { padding: 25px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#article-podsumowanie-eksperta",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/"
    },
    "headline": "Podsumowanie: Projekt instalacji grzewczej okiem Roberta Kucharskiego",
    "description": "Eksperckie podsumowanie Roberta Kucharskiego. Dlaczego rzetelne OZC i przemyślana hydraulika to jedyna droga do bezpiecznej instalacji grzewczej.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "jobTitle": "Inżynier HVAC & CEO Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "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-31",
    "dateModified": "2026-07-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#dataset-wskazniki-jakosci",
    "name": "Wskaźniki jakościowe projektów HVAC",
    "description": "Zestawienie autorskich wskaźników inżynieryjnych gwarantujących poprawność funkcjonowania niskotemperaturowych instalacji grzewczych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "podsumowanie projektu instalacji grzewczej",
      "rekomendacja inżyniera hvac",
      "robert kucharski projekt ogrzewania",
      "certyfikowane obliczenia ozc",
      "jakość instalacji podłogowej"
    ],
    "measurementTechnique": "Ewaluacja efektywności instalacyjnej oparta na doświadczeniu z ponad 1000 wdrożonych i opomiarowanych projektów w Polsce.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Eliminacja przewymiarowania: OZC redukuje błąd doboru pompy ciepła do zera.",
        "Balans hydrauliczny: Odpowiednie rozbicie pętli (max 100m) zapewnia pełny przepływ.",
        "Doświadczenie autora: Ponad 1000 zrealizowanych projektów w oparciu o normy PN-EN."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#webapp-ekspert",
    "name": "Ekspercki Panel Weryfikacji Inwestycji",
    "description": "Interaktywna karta autorytetu pozwalająca czytelnikowi na przegląd rekomendacji inżynieryjnych oraz weryfikację twardych kompetencji i doświadczenia autora (E-E-A-T).",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-exp-container" id="rk-interactive-expert">
    
    <div class="rk-exp-header-seo">
        <h2>Podsumowanie: Projekt instalacji grzewczej okiem Roberta Kucharskiego.</h2>
        <p>Decyzje podjęte na etapie papierowym definiują Twoje rachunki na dekady.</p>
    </div>

    <div class="rk-exp-layout">
        
        <!-- Lewa strona - Autorytet (Zdjęcie + Sociale) -->
        <div class="rk-exp-profile">
            <div class="rk-exp-photo-wrap">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Główny inżynier Projekt-Ogrzewania.pl">
            </div>
            <h3 class="rk-exp-name">Robert Kucharski</h3>
            <div class="rk-exp-role">Ekspert HVAC / CEO</div>
            
            <div class="rk-exp-socials">
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer" class="rk-exp-social-link" aria-label="Profil LinkedIn">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle></svg>
                </a>
                <a href="https://www.facebook.com/projektogrzewaniapl/" target="_blank" rel="noopener noreferrer" class="rk-exp-social-link" aria-label="Profil Facebook">
                    <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://x.com/Projekt_HVAC" target="_blank" rel="noopener noreferrer" class="rk-exp-social-link" aria-label="Profil X (Twitter)">
                    <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="M4 4l11.733 16h4.267l-11.733 -16z"></path><path d="M4 20l6.768 -6.768m2.46 -2.46l6.772 -6.772"></path></svg>
                </a>
            </div>
        </div>

        <!-- Prawa strona - Interaktywny Content -->
        <div class="rk-exp-content-area">
            
            <div class="rk-exp-tabs">
                <button class="rk-exp-tab-btn active" data-target="rk-panel-verdict">Werdykt Eksperta</button>
                <button class="rk-exp-tab-btn" data-target="rk-panel-proof">Dlaczego warto mi zaufać?</button>
            </div>

            <!-- Panel 1: Werdykt (Domyślny) -->
            <div class="rk-exp-panel active" id="rk-panel-verdict">
                <div class="rk-exp-quote-mark">"</div>
                <p class="rk-exp-quote-text">
                    Nigdy nie ukrywałem, że <strong>projekt instalacji grzewczej to inwestycja o najwyższej stopie zwrotu</strong> podczas całej budowy domu. Inwestorzy latami spłacają kredyty za pompy ciepła zniszczone przez taktowanie i płacą ogromne rachunki za prąd tylko dlatego, że chcieli zaoszczędzić kilkaset złotych na weryfikacji inżynieryjnej.
                </p>
                <p class="rk-exp-quote-text">
                    Twarde <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" target="_blank">obliczenia OZC</a> to nie tylko cyferki. To tarcza, która chroni Twój budżet przed radosną twórczością wykonawców instalujących systemy „bo tak się robiło od zawsze”. Buduj z głową, projektuj na danych.
                </p>
            </div>

            <!-- Panel 2: E-E-A-T Dowód (Ukryty) -->
            <div class="rk-exp-panel" id="rk-panel-proof">
                <div class="rk-exp-trust-grid">
                    
                    <div class="rk-exp-trust-item">
                        <div class="rk-exp-trust-icon">
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="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-exp-trust-text">
                            <h4>Praca na twardych normach</h4>
                            <p>Nie wróżę z metrażu. Każdy projekt opieram wyłącznie na certyfikowanych normach PN-EN 12831 oraz PN-EN 1264.</p>
                        </div>
                    </div>
                    
                    <div class="rk-exp-trust-item">
                        <div class="rk-exp-trust-icon">
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                        </div>
                        <div class="rk-exp-trust-text">
                            <h4>Ponad 1000 zrealizowanych projektów</h4>
                            <p>Przez lata stworzyłem dokumentacje dla domów jednorodzinnych w każdym polskim województwie, eliminując błędy rzędu kilkudziesięciu tysięcy złotych na pojedynczej inwestycji.</p>
                        </div>
                    </div>
                    
                    <div class="rk-exp-trust-item">
                        <div class="rk-exp-trust-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"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg>
                        </div>
                        <div class="rk-exp-trust-text">
                            <h4>CEO Projekt-Ogrzewania.pl</h4>
                            <p>Jako założyciel portalu edukuję inwestorów i obalam budowlane mity, dając im wiedzę potrzebną do świadomego nadzoru nad własną budową.</p>
                        </div>
                    </div>

                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tabBtns = document.querySelectorAll('.rk-exp-tab-btn');
    const panels = document.querySelectorAll('.rk-exp-panel');

    // Bezpieczna logika zmiany zakładek (bez użycia znaków pokroju '&&')
    tabBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            const targetId = this.getAttribute('data-target');
            
            // Usunięcie klas 'active' z przycisków
            tabBtns.forEach(function(b) {
                b.classList.remove('active');
            });
            
            // Usunięcie klas 'active' z paneli
            panels.forEach(function(p) {
                p.classList.remove('active');
            });
            
            // Nadanie aktywności klikniętemu elementowi
            this.classList.add('active');
            
            // Wyświetlenie odpowiedniego panelu
            const targetPanel = document.getElementById(targetId);
            if (targetPanel) {
                targetPanel.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-faq-dark: #1e293b;
    --rk-faq-blue: #0284c7;
    --rk-faq-blue-light: #e0f2fe;
    --rk-faq-gray: #f8fafc;
    --rk-faq-text: #475569;
    --rk-faq-border: #e2e8f0;
    --rk-faq-accent: #38bdf8;
}

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

/* Nagłówek FAQ */
.rk-faq-top {
    background: linear-gradient(to right, var(--rk-faq-gray), #ffffff);
    padding: 40px 50px;
    border-bottom: 1px solid var(--rk-faq-border);
    display: flex;
    align-items: center;
    gap: 20px;
}

.rk-faq-icon-wrapper {
    width: 60px;
    height: 60px;
    background: var(--rk-faq-blue-light);
    border-radius: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: var(--rk-faq-blue);
}

.rk-faq-title-area h2 {
    margin: 0 0 5px 0;
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-faq-dark);
}

.rk-faq-title-area p {
    margin: 0;
    font-size: 15px;
    color: var(--rk-faq-text);
}

/* Lista Akordeonu */
.rk-faq-list {
    padding: 20px 50px 40px;
}

.rk-faq-item {
    border: 1px solid var(--rk-faq-border);
    border-radius: 12px;
    margin-bottom: 15px;
    background: #ffffff;
    transition: all 0.3s ease;
}

.rk-faq-item:hover {
    border-color: var(--rk-faq-accent);
    box-shadow: 0 4px 12px rgba(2, 132, 199, 0.05);
}

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

.rk-faq-header {
    padding: 20px 25px;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 15px;
}

.rk-faq-header h3 {
    margin: 0;
    font-size: 17px;
    font-weight: 700;
    color: var(--rk-faq-dark);
    line-height: 1.4;
    transition: color 0.3s;
}

.rk-faq-item.active .rk-faq-header h3 {
    color: var(--rk-faq-blue);
}

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

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

/* Zawartość (Odpowiedź) */
.rk-faq-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1), padding 0.4s ease;
    padding: 0 25px;
    opacity: 0;
}

.rk-faq-item.active .rk-faq-content {
    max-height: 500px; /* Wystarczająco dużo na tekst, chroni przed obcinaniem */
    padding: 0 25px 25px;
    opacity: 1;
}

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

.rk-faq-answer a {
    color: var(--rk-faq-blue);
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: border-color 0.2s;
}

.rk-faq-answer a:hover {
    border-color: var(--rk-faq-blue);
}

/* RWD - Mobile */
@media (max-width: 768px) {
    .rk-faq-top { padding: 30px 20px; flex-direction: column; text-align: center; }
    .rk-faq-list { padding: 15px 20px 30px; }
    .rk-faq-header { padding: 15px 20px; }
    .rk-faq-header h3 { font-size: 15px; }
    .rk-faq-item.active .rk-faq-content { padding: 0 20px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/"
    },
    "headline": "Często zadawane pytania (FAQ) - Ogrzewanie podłogowe",
    "description": "Techniczne odpowiedzi na najczęstsze pytania inwestorów dotyczące m m.in. paneli na podłogówkę, pomp ciepła, rodzajów pętli grzewczych i czasu nagrzewania jastrychu.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-31",
    "dateModified": "2026-07-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy pod ogrzewanie podłogowe można kłaść panele podłogowe lub deski drewniane?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, pod warunkiem wyboru paneli/desek z oznaczeniem producenta o przydatności do ogrzewania podłogowego, przy oporze cieplnym całego systemu posadzkowego R <= 0,15 m²K/W. Zaleca się klejenie desek do podłoża w celu wyeliminowania poduszki powietrznej izolującej ciepło."
        }
      },
      {
        "@type": "Question",
        "name": "Czy pompa ciepła poradzi sobie z ogrzewaniem domu bez grzejników?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, pompa ciepła osięga najwyższą sprawność eksploatacyjną (SCOP) właśnie w połączeniu z niskotemperaturowym wodnym ogrzewaniem podłogowym (30-35°C). Całkowita rezygnacja z grzejników na rzecz podłogówki obniża rachunki za prąd o 20-30%."
        }
      },
      {
        "@type": "Question",
        "name": "Co jest lepsze: układ ślimakowy czy meandrowy?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "W zdecydowanej większości pomieszczeń lepszym wyborem jest układ ślimakowy, ponieważ zapewnia równomierny rozkład temperatur (rura zasilająca biegnie naprzemiennie z powrotną). Układ meandrowy stosuje się głównie w strefach brzegowych o dużym zapotrzebowaniu na moc lub na płaszczyznach o dużym nachyleniu."
        }
      },
      {
        "@type": "Question",
        "name": "Czy ogrzewanie podłogowe można podłączyć do istniejącego kotła gazowego?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, kotły gazowe kondensacyjne osiągają najwyższą sprawność (nawet 108% w odniesieniu do wartości opałowej) przy niskich temperaturach powrotu wody (< 30°C), co idealnie wpisuje się w charakterystykę pracy ogrzewania podłogowego."
        }
      },
      {
        "@type": "Question",
        "name": "Ile czasu nagrzewa się wylewka betonowa na podłogówce?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Standardowa wylewka cementowa o grubości 6 cm potrzebuje od 2 do 4 godzin na odczuwalne podniesienie temperatury w pomieszczeniu, podczas gdy jastrych anhydrytowy ze względu na wyższą przewodność cieplną reaguje w czasie 1 do 2 godzin."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#dataset-faq",
    "name": "Zestawienie parametrów eksploatacyjnych ogrzewania podłogowego",
    "description": "Techniczne wytyczne dotyczące oporów cieplnych posadzek, układów rur i czasów bezwładności termicznej jastrychów.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "panele na ogrzewanie podłogowe opór cieplny",
      "pompa ciepła bez grzejników koszty",
      "układ ślimakowy czy meandrowy podłogówki",
      "kocioł gazowy kondensacyjny z podłogówką",
      "czas nagrzewania jastrychu betonowego"
    ],
    "measurementTechnique": "Weryfikacja parametrów z normami budowlanymi dotyczącymi oporu przenikania ciepła i sprawności urządzeń.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Opór cieplny systemu posadzkowego: R <= 0,15 m²K/W",
        "Temperatura zasilania pompy ciepła: 30-35°C",
        "Czas reakcji termicznej: Anhydryt 1-2h, Cement 2-4h"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#webapp-faq",
    "name": "Ekspercki Asystent FAQ HVAC",
    "description": "Interaktywny moduł zapytań i odpowiedzi rozwiązujący najpopularniejsze dylematy techniczne inwestorów budujących systemy podłogowe.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-faq-container" id="rk-interactive-faq">
    <div class="rk-faq-top">
        <div class="rk-faq-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="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>
        <div class="rk-faq-title-area">
            <h2>Często zadawane pytania (FAQ)</h2>
            <p>Techniczne dylematy inwestorów wyjaśnione inżynierskim okiem.</p>
        </div>
    </div>

    <div class="rk-faq-list">
        
        <!-- Pytanie 1 -->
        <div class="rk-faq-item">
            <div class="rk-faq-header">
                <h3>Czy pod ogrzewanie podłogowe można kłaść panele podłogowe lub deski drewniane?</h3>
                <div class="rk-faq-toggle-icon">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-faq-content">
                <div class="rk-faq-answer">
                    Tak, pod warunkiem wyboru paneli/desek z oznaczeniem producenta o przydatności do ogrzewania podłogowego, przy oporze cieplnym całego systemu posadzkowego <strong>R <= 0,15 m²K/W</strong>. Zaleca się <a href="https://projekt-ogrzewania.pl/podlogi-drewniane-vs-panele-laminowane-co-wybrac-przy-ogrzewaniu-podlogowym/" target="_blank">klejenie paneli lub desek do podłoża</a> w celu wyeliminowania poduszki powietrznej, która działa jak izolator blokujący oddawanie ciepła do pomieszczenia.
                </div>
            </div>
        </div>

        <!-- Pytanie 2 -->
        <div class="rk-faq-item">
            <div class="rk-faq-header">
                <h3>Czy pompa ciepła poradzi sobie z ogrzewaniem domu bez grzejników?</h3>
                <div class="rk-faq-toggle-icon">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-faq-content">
                <div class="rk-faq-answer">
                    Tak, pompa ciepła osiąga najwyższą sprawność eksploatacyjną (SCOP) właśnie w połączeniu z niskotemperaturowym wodnym ogrzewaniem podłogowym pracującym na parametrach zasilania <strong>30-35°C</strong>. Całkowita rezygnacja z kaloryferów na rzecz płaszczyznowego układu <a href="https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/" target="_blank">drastycznie obniża rachunki za prąd</a> o 20-30%, ponieważ sprężarka musi wykonać znacznie mniej pracy.
                </div>
            </div>
        </div>

        <!-- Pytanie 3 -->
        <div class="rk-faq-item">
            <div class="rk-faq-header">
                <h3>Co jest lepsze: układ ślimakowy czy meandrowy?</h3>
                <div class="rk-faq-toggle-icon">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-faq-content">
                <div class="rk-faq-answer">
                    W zdecydowanej większości pomieszczeń domowych najlepszym wyborem jest <a href="https://projekt-ogrzewania.pl/jak-ukladac-rury-w-ogrzewaniu-slimak-meander-czy-podwojny-meander/" target="_blank">układ ślimakowy</a>. Zapewnia on równomierny rozkład temperatur na posadzce (ponieważ rura zasilająca i powrotna ułożone są naprzemiennie). Układ meandrowy stosuje się dziś niemal wyłącznie w strefach brzegowych (np. przy dużych oknach tarasowych) w celu skumulowania wysokiej mocy grzewczej.
                </div>
            </div>
        </div>

        <!-- Pytanie 4 -->
        <div class="rk-faq-item">
            <div class="rk-faq-header">
                <h3>Czy ogrzewanie podłogowe można podłączyć do istniejącego kotła gazowego?</h3>
                <div class="rk-faq-toggle-icon">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-faq-content">
                <div class="rk-faq-answer">
                    Tak. Nowoczesne <a href="https://projekt-ogrzewania.pl/kociol-gazowy/" target="_blank">kondensacyjne kotły gazowe</a> uzyskują maksymalną sprawność zjawiska kondensacji (nawet 108% w odniesieniu do wartości opałowej paliwa) tylko wtedy, gdy woda wracająca z instalacji ma temperaturę poniżej 30°C. Oznacza to, że podłogówka tworzy z piecem kondensacyjnym wręcz idealny, wysoce energooszczędny układ.
                </div>
            </div>
        </div>

        <!-- Pytanie 5 -->
        <div class="rk-faq-item">
            <div class="rk-faq-header">
                <h3>Ile czasu nagrzewa się wylewka betonowa na podłogówce?</h3>
                <div class="rk-faq-toggle-icon">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-faq-content">
                <div class="rk-faq-answer">
                    Zależy to od rodzaju jastrychu i tzw. bezwładności cieplnej. Tradycyjna <a href="https://projekt-ogrzewania.pl/ile-czasu-nagrzewa-sie-podlogowka/" target="_blank">wylewka cementowa</a> o rygorystycznej grubości 6 cm potrzebuje około 2 do 4 godzin na odczuwalne przekazanie ciepła do wnętrza. Z kolei nowoczesny jastrych anhydrytowy charakteryzuje się wyższą przewodnością cieplną, reagując znacznie szybciej – często już po 1 do 2 godzin od włączenia kotła.
                </div>
            </div>
        </div>

    </div>
</div>

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

    faqItems.forEach(function(item) {
        const header = item.querySelector('.rk-faq-header');
        
        header.addEventListener('click', function() {
            // Sprawdzenie czy obecny kliknięty jest już otwarty (bez użycia operatora "&&")
            const isAlreadyActive = item.classList.contains('active');
            
            // Zamykamy wszystkie aktywne akordeony
            faqItems.forEach(function(el) {
                el.classList.remove('active');
            });

            // Jeśli ten, który kliknęliśmy, nie był otwarty - otwieramy go
            if (isAlreadyActive === false) {
                item.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-blue: #0284c7;
    --rk-dl-light: #f8fafc;
    --rk-dl-border: #e2e8f0;
    --rk-dl-text: #475569;
    --rk-dl-accent: #38bdf8;
    --rk-dl-gray-bg: #f1f5f9;
}

.rk-dl-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 16px;
    box-shadow: 0 10px 25px -5px rgba(15, 23, 42, 0.05);
    border: 1px solid var(--rk-dl-border);
    overflow: hidden;
}

/* Nagłówek Sekcji Pobierania */
.rk-dl-header {
    background: var(--rk-dl-dark);
    padding: 35px 40px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-dl-blue);
}

.rk-dl-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: var(--rk-dl-accent);
    padding: 6px 14px;
    border-radius: 4px;
    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-dl-header h2 {
    color: #ffffff;
    font-size: 24px;
    font-weight: 900;
    margin: 0 0 10px 0;
    line-height: 1.3;
}

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

/* Główny układ (Desktop: 2 kolumny, Mobile: 1 kolumna) */
.rk-dl-body {
    display: grid;
    grid-template-columns: 350px 1fr;
    background: #ffffff;
}

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

.rk-dl-thumbnail {
    width: 100%;
    max-width: 280px;
    background: #ffffff;
    border: 1px solid var(--rk-dl-border);
    border-radius: 8px;
    padding: 10px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.rk-dl-thumbnail img {
    width: 100%;
    height: auto;
    display: block;
    border-radius: 4px;
}

.rk-dl-format-tags {
    display: flex;
    gap: 10px;
    margin-top: 15px;
}

.rk-dl-tag {
    background: #ffffff;
    border: 1px solid var(--rk-dl-border);
    color: var(--rk-dl-text);
    padding: 4px 10px;
    font-size: 11px;
    font-weight: 800;
    border-radius: 4px;
}

/* Prawa Kolumna: Informacje i Przyciski */
.rk-dl-content-side {
    padding: 35px 40px;
    display: flex;
    flex-direction: column;
}

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

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

/* Lista parametrów pliku */
.rk-dl-meta-list {
    list-style: none;
    padding: 0;
    margin: 0 0 30px 0;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-dl-meta-item {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-size: 14px;
    color: var(--rk-dl-dark);
    font-weight: 600;
}

.rk-dl-meta-icon {
    color: var(--rk-dl-blue);
    flex-shrink: 0;
}

/* Przyciski Pobierania */
.rk-dl-actions {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
}

.rk-dl-btn-primary {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    background: var(--rk-dl-blue);
    color: #ffffff;
    font-size: 15px;
    font-weight: 800;
    padding: 16px 24px;
    border-radius: 8px;
    text-decoration: none;
    border: 2px solid var(--rk-dl-blue);
    flex: 1;
    text-align: center;
}

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

.rk-dl-btn-secondary {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    background: transparent;
    color: var(--rk-dl-dark);
    font-size: 15px;
    font-weight: 800;
    padding: 16px 24px;
    border-radius: 8px;
    text-decoration: none;
    border: 2px solid var(--rk-dl-border);
    flex: 1;
    text-align: center;
}

.rk-dl-btn-secondary:hover {
    background: var(--rk-dl-gray-bg);
    border-color: #cbd5e1;
}

/* Prawa autorskie */
.rk-dl-copyright {
    margin-top: auto;
    padding-top: 20px;
    border-top: 1px solid var(--rk-dl-border);
    font-size: 12px;
    color: #64748b;
    line-height: 1.5;
}

.rk-dl-copyright strong {
    color: var(--rk-dl-dark);
}

/* RWD - Urządzenia Mobilne */
@media (max-width: 768px) {
    .rk-dl-header { padding: 25px 20px; }
    .rk-dl-body { grid-template-columns: 1fr; }
    .rk-dl-preview-side { border-right: none; border-bottom: 1px solid var(--rk-dl-border); padding: 20px; }
    .rk-dl-content-side { padding: 25px 20px; }
    .rk-dl-meta-list { grid-template-columns: 1fr; }
    .rk-dl-actions { flex-direction: column; }
    .rk-dl-btn-primary, .rk-dl-btn-secondary { width: 100%; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#article-infografika",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/"
    },
    "headline": "Pobierz darmową infografikę: Kompletny proces projektowania instalacji grzewczej",
    "description": "Zestawienie twardych danych i procesu projektowego w formie inżynieryjnej infografiki. Dostępne formaty WebP i wysokiej rozdzielczości PDF gotowy do druku.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/07/Infografika-Projekt-instalacji-grzewczej-domu-jednorodzinnego.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-31",
    "dateModified": "2026-07-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#dataset-infografika",
    "name": "Infografika techniczna: Schemat i parametry ogrzewania podłogowego",
    "description": "Wizualne zestawienie parametrów hydraulicznych, wytycznych normowych OZC oraz schematu optymalnego projektowania instalacji płaszczyznowych domu jednorodzinnego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika ogrzewanie podłogowe",
      "projekt instalacji grzewczej pdf",
      "schemat podłogówki do pobrania",
      "obliczenia ozc schemat",
      "parametry hydrauliczne ściągawka"
    ],
    "measurementTechnique": "Kompilacja kluczowych wytycznych inżynieryjnych w formacie graficznym i wektorowym.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Format pliku 1: Dokument wektorowy PDF (skalowany, idealny do druku).",
        "Format pliku 2: Grafika rastrowa WebP (lekki plik zoptymalizowany pod urządzenia mobilne).",
        "Prawa autorskie: Zastrzeżone, zezwolenie na dystrybucję wyłącznie w oryginalnej formie."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#webapp-infografika",
    "name": "Centrum Pobierania Zasobów Inżynieryjnych",
    "description": "Panel umożliwiający bezpieczne pobranie cyfrowych materiałów edukacyjnych (w formacie PDF oraz WebP) z zakresu inżynierii instalacyjnej.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-dl-container" id="rk-download-center">
    
    <!-- Nagłówek Sekcji -->
    <div class="rk-dl-header">
        <div class="rk-dl-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 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>
            Materiały do pobrania
        </div>
        <h2>Infografika: Projekt instalacji grzewczej domu w pigułce</h2>
        <p>Zabrałeś z tego artykułu dużo wiedzy. Przygotowałem dla Ciebie wygodne, graficzne podsumowanie procesu projektowego i kluczowych parametrów technicznych. Zapisz plik na telefonie lub wydrukuj przed spotkaniem z hydraulikiem.</p>
    </div>

    <!-- Układ 2 Kolumny -->
    <div class="rk-dl-body">
        
        <!-- Lewa strona - Miniatura -->
        <div class="rk-dl-preview-side">
            <div class="rk-dl-thumbnail">
                <!-- Miniatura ładuje plik WebP dostarczony w wytycznych -->
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/07/Infografika-Projekt-instalacji-grzewczej-domu-jednorodzinnego.webp" alt="Miniatura infografiki: Projekt instalacji grzewczej domu jednorodzinnego">
            </div>
            <div class="rk-dl-format-tags">
                <span class="rk-dl-tag">Plik PDF</span>
                <span class="rk-dl-tag">Plik WEBP</span>
            </div>
        </div>

        <!-- Prawa strona - Opis i Akcje -->
        <div class="rk-dl-content-side">
            <h3>Ściągawka świadomego inwestora</h3>
            <p class="rk-dl-description">W pliku znajdziesz zbiór twardych wytycznych, o które musisz zapytać swojego wykonawcę. Dokument dostępny jest w wysokiej rozdzielczości (PDF do wydruku) oraz jako lekka grafika (WebP na smartfona).</p>
            
            <ul class="rk-dl-meta-list">
                <li class="rk-dl-meta-item">
                    <svg class="rk-dl-meta-icon" 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="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>Format: PDF / Wektor</span>
                </li>
                <li class="rk-dl-meta-item">
                    <svg class="rk-dl-meta-icon" width="18" height="18" 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>Format: WEBP / Grafika</span>
                </li>
                <li class="rk-dl-meta-item">
                    <svg class="rk-dl-meta-icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M12 8v4l3 3"></path></svg>
                    <span>Aktualizacja: 2026</span>
                </li>
                <li class="rk-dl-meta-item">
                    <svg class="rk-dl-meta-icon" 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>
                    <span>Gotowe do druku (A4)</span>
                </li>
            </ul>

            <div class="rk-dl-actions">
                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/07/Infografika-Projekt-instalacji-grzewczej-domu-jednorodzinnego.pdf" target="_blank" rel="noopener noreferrer" class="rk-dl-btn-primary">
                    <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="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
                    Pobierz plik PDF
                </a>
                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/07/Infografika-Projekt-instalacji-grzewczej-domu-jednorodzinnego.webp" target="_blank" rel="noopener noreferrer" class="rk-dl-btn-secondary">
                    <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="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle></svg>
                    Otwórz Grafikę
                </a>
            </div>

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



<style>
:root {
    --rk-fin-dark: #0f172a;
    --rk-fin-blue: #0284c7;
    --rk-fin-blue-hover: #0369a1;
    --rk-fin-light: #f8fafc;
    --rk-fin-green: #10b981;
    --rk-fin-red: #ef4444;
    --rk-fin-border: #e2e8f0;
    --rk-fin-text: #334155;
    --rk-fin-tag-bg: #f1f5f9;
}

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

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

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

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

.rk-fin-app {
    padding: 40px 50px;
    background: var(--rk-fin-light);
}

/* Interaktywne przyciski wyboru - Akordeon na mobile */
.rk-fin-controls {
    display: flex;
    gap: 20px;
    margin-bottom: 30px;
}

.rk-fin-toggle {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 20px;
    background: #ffffff;
    border: 2px solid var(--rk-fin-border);
    border-radius: 16px;
    cursor: pointer;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-fin-text);
    transition: all 0.3s ease;
}

.rk-fin-toggle svg {
    width: 24px;
    height: 24px;
    color: #94a3b8;
    transition: all 0.3s;
}

.rk-fin-toggle:hover {
    border-color: #cbd5e1;
    transform: translateY(-2px);
}

.rk-fin-toggle.active[data-state="oko"] {
    border-color: var(--rk-fin-red);
    background: #fef2f2;
    color: #991b1b;
}

.rk-fin-toggle.active[data-state="oko"] svg { color: var(--rk-fin-red); }

.rk-fin-toggle.active[data-state="pro"] {
    border-color: var(--rk-fin-green);
    background: #ecfdf5;
    color: #065f46;
}

.rk-fin-toggle.active[data-state="pro"] svg { color: var(--rk-fin-green); }

/* Dynamiczne statystyki (Kafelki) */
.rk-fin-stats {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-bottom: 30px;
}

.rk-fin-stat-card {
    background: #ffffff;
    padding: 25px 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-fin-border);
    text-align: center;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);
}

.rk-fin-stat-card.highlight-red { border-bottom: 4px solid var(--rk-fin-red); }
.rk-fin-stat-card.highlight-green { border-bottom: 4px solid var(--rk-fin-green); }

.rk-fin-stat-icon {
    height: 48px;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-bottom: 15px;
}

.rk-fin-stat-icon svg {
    width: 36px;
    height: 36px;
    transition: all 0.5s;
}

.rk-fin-stat-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-fin-dark);
    margin-bottom: 5px;
}

.rk-fin-stat-label {
    font-size: 13px;
    color: #64748b;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Tagi Długi Ogon */
.rk-fin-tags-wrapper {
    padding: 0 50px 30px;
    background: var(--rk-fin-light);
}

.rk-fin-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: center;
}

.rk-mat-tag {
    background: var(--rk-fin-tag-bg);
    color: #475569;
    padding: 6px 14px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
    border: 1px solid #e2e8f0;
    transition: all 0.2s;
    cursor: default;
}

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

/* Potężne CTA */
.rk-fin-cta {
    padding: 40px 50px;
    background: #ffffff;
    border-top: 1px solid var(--rk-fin-border);
    text-align: center;
}

.rk-fin-cta-title {
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-fin-dark);
    margin: 0 0 10px 0;
}

.rk-fin-cta-desc {
    color: #64748b;
    font-size: 15px;
    margin: 0 auto 25px;
    max-width: 550px;
    line-height: 1.5;
}

.rk-btn-hero {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-fin-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s;
    border: 2px solid transparent;
}

.rk-btn-hero:hover {
    transform: translateY(-3px);
    background: var(--rk-fin-blue-hover);
    box-shadow: 0 15px 35px -5px rgba(2, 132, 199, 0.5);
}

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

/* RWD Mobile - Karty w pionie, przyciski w pionie */
@media (max-width: 768px) {
    .rk-fin-header, .rk-fin-app, .rk-fin-tags-wrapper, .rk-fin-cta { padding: 30px 20px; }
    .rk-fin-controls { flex-direction: column; gap: 12px; }
    .rk-fin-stats { grid-template-columns: 1fr; gap: 15px; }
    .rk-fin-header h2 { font-size: 24px; }
    .rk-btn-hero { width: 100%; padding: 16px 20px; font-size: 16px; }
    .rk-fin-tags { justify-content: flex-start; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/"
    },
    "headline": "Podsumowanie: Twoja mapa drogowa do idealnego ogrzewania",
    "description": "Projekt instalacji grzewczej i precyzyjne OZC to gwarancja idealnego komfortu cieplnego, dłuższzej żywotności pompy ciepła i oszczędności na eksploatacji. Buduj z głową.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-31",
    "dateModified": "2026-07-31"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#dataset",
    "name": "Bilans zysków z profesjonalnego projektu instalacji grzewczej OZC",
    "description": "Zestawienie techniczno-ekonomiczne porównujące żywotność urządzeń, komfort cieplny oraz zużycie energii w instalacjach projektowanych inżyniersko i wykonywanych amatorsko.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt instalacji grzewczej dom jednorodzinny",
      "koszt ogrzewania z pompą ciepła",
      "obliczenia ozc pn-en 12831",
      "optymalizacja kosztów ogrzewania podłogowego",
      "żywotność pompy ciepła bez taktowania"
    ],
    "measurementTechnique": "Symulacja porównawcza parametrów eksploatacyjnych na bazie normy PN-EN 12831 i wytycznych doboru hydrauliki.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Instalacja bez projektu (na oko): Taktowanie pompy ciepła, żywotność max 7 lat, wysokie koszty.",
        "Instalacja z projektem OZC: Idealny przepływ, żywotność pompy ponad 15 lat, optymalny rachunek za prąd."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/#webapp",
    "name": "Symulator Decyzji Inwestycyjnej HVAC",
    "description": "Interaktywny kalkulator demonstracyjny ukazujący wpływ posiadania projektu OZC na kluczowe parametry instalacji grzewczej.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-fin-container" id="rk-final-summary">
    <div class="rk-fin-header">
        <h2>Podsumowanie: Twoja mapa drogowa do idealnego ogrzewania</h2>
        <p>Projekt instalacji grzewczej domu jednorodzinnego nie jest zbędnym papierem dla nadzoru budowlanego – to najważniejsza dokumentacja techniczna Twojej inwestycji. Opierając się na twardych normach (PN-EN 12831, PN-EN 1264) zyskujesz pewność i spokój na lata.</p>
    </div>

    <div class="rk-fin-app">
        <!-- Przełączniki na Flexboxie (na mobilce zamienią się w układ pionowy) -->
        <div class="rk-fin-controls" id="rk-sim-controls">
            <button class="rk-fin-toggle" data-state="oko">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg>
                Instalacja montowana "na oko"
            </button>
            <button class="rk-fin-toggle active" data-state="pro">
                <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><polyline points="9 12 11 14 15 10"></polyline></svg>
                Profesjonalny projekt OZC
            </button>
        </div>

        <div class="rk-fin-stats">
            <div class="rk-fin-stat-card highlight-green" id="card-comfort">
                <div class="rk-fin-stat-icon" id="icon-comfort">
                    <!-- SVG generowane przez JS -->
                </div>
                <div class="rk-fin-stat-val" id="val-comfort">Idealny</div>
                <div class="rk-fin-stat-label">Komfort Cieplny</div>
            </div>
            
            <div class="rk-fin-stat-card highlight-green" id="card-life">
                <div class="rk-fin-stat-icon" id="icon-life">
                    <!-- SVG generowane przez JS -->
                </div>
                <div class="rk-fin-stat-val" id="val-life">15-20 lat</div>
                <div class="rk-fin-stat-label">Żywotność Pompy Ciepła</div>
            </div>

            <div class="rk-fin-stat-card highlight-green" id="card-cost">
                <div class="rk-fin-stat-icon" id="icon-cost">
                    <!-- SVG generowane przez JS -->
                </div>
                <div class="rk-fin-stat-val" id="val-cost">Zoptymalizowane</div>
                <div class="rk-fin-stat-label">Rachunki Eksploatacyjne</div>
            </div>
        </div>
    </div>

    <div class="rk-fin-tags-wrapper">
        <div class="rk-fin-tags">
            <span class="rk-mat-tag"># projekt instalacji grzewczej cena</span>
            <span class="rk-mat-tag"># dokumentacja techniczna podłogówki</span>
            <span class="rk-mat-tag"># precyzyjne obliczenia ozc</span>
            <span class="rk-mat-tag"># zapobieganie przewymiarowaniu pompy</span>
            <span class="rk-mat-tag"># zbalansowana hydraulika ogrzewania</span>
            <span class="rk-mat-tag"># norma pn-en 12831 w praktyce</span>
            <span class="rk-mat-tag"># oszczędności finansowe na ogrzewaniu</span>
            <span class="rk-mat-tag"># dobór rozstawu rur podłogowych</span>
            <span class="rk-mat-tag"># projekt ogrzewania podłogowego online</span>
            <span class="rk-mat-tag"># instalacja grzewcza w domu jednorodzinnym</span>
        </div>
    </div>

    <div class="rk-fin-cta">
        <h3 class="rk-fin-cta-title">Nie zgaduj. Projektuj na danych.</h3>
        <p class="rk-fin-cta-desc">
            Nie pozwól na to, aby najważniejszy system w Twoim nowym domu został wykonany losowo. Precyzyjne OZC i zbalansowana hydraulika to fundament. Zbuduj swój komfort z głową.
        </p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-hero">
            ZAMÓW PROJEKT 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"><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-fin-toggle');
    const cardComfort = document.getElementById('card-comfort');
    const cardLife = document.getElementById('card-life');
    const cardCost = document.getElementById('card-cost');
    
    const valComfort = document.getElementById('val-comfort');
    const valLife = document.getElementById('val-life');
    const valCost = document.getElementById('val-cost');
    
    const iconComfort = document.getElementById('icon-comfort');
    const iconLife = document.getElementById('icon-life');
    const iconCost = document.getElementById('icon-cost');

    // Baza danych dla dwóch stanów aplikacji (bezpieczna struktura pozbawiona &&)
    const appData = {
        'pro': {
            comfortText: 'Idealny',
            lifeText: '15-20 lat',
            costText: 'Zoptymalizowane',
            colorClass: 'highlight-green',
            removeClass: 'highlight-red',
            iconColor: '#10b981',
            comfortSvg: '<svg viewBox="0 0 24 24" fill="none" stroke="#10b981" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path></svg>',
            lifeSvg: '<svg viewBox="0 0 24 24" fill="none" stroke="#10b981" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>',
            costSvg: '<svg viewBox="0 0 24 24" fill="none" stroke="#10b981" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>'
        },
        'oko': {
            comfortText: 'Skrajnie różny',
            lifeText: 'Taktowanie (5-7 lat)',
            costText: 'Przewymiarowane (+30%)',
            colorClass: 'highlight-red',
            removeClass: 'highlight-green',
            iconColor: '#ef4444',
            comfortSvg: '<svg viewBox="0 0 24 24" fill="none" stroke="#ef4444" 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>',
            lifeSvg: '<svg viewBox="0 0 24 24" fill="none" stroke="#ef4444" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>',
            costSvg: '<svg viewBox="0 0 24 24" fill="none" stroke="#ef4444" stroke-width="2" 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>'
        }
    };

    function updateUI(stateKey) {
        const d = appData[stateKey];
        
        // Zmiana tekstów
        valComfort.innerText = d.comfortText;
        valLife.innerText = d.lifeText;
        valCost.innerText = d.costText;
        
        // Zmiana ikon
        iconComfort.innerHTML = d.comfortSvg;
        iconLife.innerHTML = d.lifeSvg;
        iconCost.innerHTML = d.costSvg;

        // Zmiana klas w kartach
        const cards = [cardComfort, cardLife, cardCost];
        cards.forEach(function(card) {
            card.classList.remove(d.removeClass);
            card.classList.add(d.colorClass);
        });
    }

    // Inicjalizacja domyślna
    updateUI('pro');

    // Obsługa kliknięć
    toggles.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Czyszczenie klas active
            toggles.forEach(function(b) {
                b.classList.remove('active');
            });
            // Dodanie active do klikniętego
            this.classList.add('active');
            
            // Pobranie stanu i aktualizacja
            const currentState = this.getAttribute('data-state');
            updateUI(currentState);
        });
    });
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/">Projekt instalacji grzewczej domu jednorodzinnego: Kompletny przewodnik inżynieryjny, koszty i obliczenia OZC.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Pompa ciepła, podłogówka i grzejniki.</title>
		<link>https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 04 Jul 2026 07:13:33 +0000</pubDate>
				<category><![CDATA[Grzejniki]]></category>
		<category><![CDATA[Hydraulika]]></category>
		<category><![CDATA[Koszty ogrzewania]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[OZC]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady techniczne]]></category>
		<category><![CDATA[Termomodernizacja]]></category>
		<category><![CDATA[bufor ciepła]]></category>
		<category><![CDATA[grupa pompowa]]></category>
		<category><![CDATA[grzejniki v33]]></category>
		<category><![CDATA[instalacja mieszana]]></category>
		<category><![CDATA[klimakonwektory]]></category>
		<category><![CDATA[kryzowanie grzejników]]></category>
		<category><![CDATA[obliczenia ozc]]></category>
		<category><![CDATA[pn-en 12831]]></category>
		<category><![CDATA[pompa ciepła podłogówka i grzejniki]]></category>
		<category><![CDATA[przepływ zwarciowy]]></category>
		<category><![CDATA[regulacja hydrauliczna]]></category>
		<category><![CDATA[sprawność scop]]></category>
		<category><![CDATA[sprzęgło hydrauliczne]]></category>
		<category><![CDATA[taktowanie pompy ciepła]]></category>
		<category><![CDATA[układ hybrydowy]]></category>
		<category><![CDATA[zawór trójdrogowy mieszający]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=6505</guid>

					<description><![CDATA[<p>Planowanie nowoczesnego systemu grzewczego w domu jednorodzinnym wymaga precyzyjnych obliczeń inżynierskich, a nie kompromisów. Układ, w którym współpracują pompa ciepła podłogówka i grzejniki, to technicznie wymagający system hybrydowy. Wymusza on zderzenie dwóch skrajnie różnych światów: niskotemperaturowego ogrzewania płaszczyznowego o wysokich oporach hydraulicznych z punktowymi emiterami konwekcyjnymi. W tym praktycznym poradniku inżynier Robert Kucharski bez ściemy analizuje warunki poprawnego montażu takiego systemu. Dowiesz się, jak poprawnie dobrać pojemność bufora równoległego zgodnie ze standardem VDI 4650, jak obliczyć masowe natężenie przepływu oraz jak uniknąć zjawiska przepływu zwarciowego, które drastycznie obniża sprawność SCOP sprężarki i generuje gigantyczne straty na rachunkach za prąd.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/">Pompa ciepła, podłogówka i grzejniki.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#article-intro",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/"
    },
    "headline": "Pompa ciepła, podłogówka i grzejniki – jak połączyć te systemy bez błędu?",
    "description": "Zasady projektowania układu mieszanego. Szybka odpowiedź eksperta HVAC na temat łączenia instalacji płaszczyznowej i grzejnikowej 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-04",
    "dateModified": "2026-07-04"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#dataset-intro",
    "name": "Wskaźniki błędów w hybrydowych instalacjach c.o.",
    "description": "Kluczowe dane początkowe z ponad 1000 zrealizowanych projektów, wskazujące na straty eksploatacyjne w źle zaprojektowanych układach mieszanych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "pompa ciepła podłogówka i grzejniki",
      "czy można łączyć podłogówkę z grzejnikami",
      "błędy instalacji układ mieszany",
      "spadek sprawności pompy ciepła",
      "ogrzewanie płaszczyznowe a kaloryfery"
    ],
    "measurementTechnique": "Analiza statystyczna wzrostu kosztów eksploatacyjnych budynku w skali roku grzewczego spowodowanego brakiem balansu hydraulicznego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Skala błędu: Brak precyzyjnego zbilansowania hydraulicznego to najczęstszy problem w modernizowanych domach.",
        "Konsekwencje: Wzrost kosztów eksploatacyjnych nawet o 35% w skali roku.",
        "Objawy: Niedogrzanie pomieszczeń na poddaszu, przegrzewanie parteru, drastyczny spadek sprawności (COP) sprężarki."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#webapp-nawigator",
    "name": "Interaktywny Nawigator Artykułu",
    "description": "Moduł wstępny dostarczający natychmiastowej odpowiedzi (Quick Answer) na zapytanie użytkownika oraz organizujący narzędzia analityczne dostępne w dalszej części publikacji.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-card: #ffffff;
    --rk-intro-bg: #f8fafc;
    --rk-intro-border: #cbd5e1;
    --rk-intro-primary: #0284c7;
    --rk-intro-text: #334155;
    --rk-intro-danger: #ef4444;
}

.rk-intro-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: var(--rk-intro-card);
    border-radius: 16px;
    border: 2px solid var(--rk-intro-dark);
    box-shadow: 0 10px 20px -5px rgba(0, 0, 0, 0.1);
    overflow: hidden;
}

.rk-intro-header {
    background: var(--rk-intro-dark);
    padding: 30px 40px;
    color: #ffffff;
}

.rk-intro-badge {
    display: inline-block;
    background: #1e293b;
    border: 1px solid #334155;
    padding: 6px 12px;
    color: #38bdf8;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    border-radius: 6px;
    margin-bottom: 15px;
    letter-spacing: 1px;
}

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

.rk-intro-body {
    padding: 40px;
}

/* Główne pole tekstowe */
.rk-intro-main-text {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-intro-text);
    margin-bottom: 30px;
}

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

/* Interfejs Przełączników */
.rk-intro-tabs {
    display: flex;
    gap: 15px;
    margin-bottom: 25px;
}

.rk-intro-tab-btn {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px 20px;
    background: var(--rk-intro-bg);
    border: 1px solid var(--rk-intro-border);
    border-radius: 12px;
    cursor: pointer;
    text-align: left;
}

.rk-intro-tab-btn.active {
    background: #f0f9ff;
    border-color: var(--rk-intro-primary);
}

.rk-intro-tab-icon {
    width: 24px;
    height: 24px;
    color: #64748b;
}

.rk-intro-tab-btn.active .rk-intro-tab-icon {
    color: var(--rk-intro-primary);
}

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

/* Panele Treści */
.rk-intro-panel {
    display: none;
    background: var(--rk-intro-bg);
    border: 1px solid var(--rk-intro-border);
    border-radius: 12px;
    padding: 30px;
}

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

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

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

.rk-intro-tools-list {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
    margin-top: 20px;
}

.rk-intro-tool-item {
    background: #ffffff;
    border: 1px solid var(--rk-intro-border);
    padding: 15px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    gap: 12px;
    font-weight: 700;
    color: var(--rk-intro-primary);
}

/* Mobile Responsive */
@media (max-width: 768px) {
    .rk-intro-header, .rk-intro-body { padding: 25px 20px; }
    .rk-intro-header h2 { font-size: 24px; }
    .rk-intro-tabs { flex-direction: column; gap: 10px; }
    .rk-intro-tools-list { grid-template-columns: 1fr; }
}
</style>

<div class="rk-intro-container" id="rk-intro-app">
    
    <div class="rk-intro-header">
        <div class="rk-intro-badge">Wiedza Inżynierska &amp; Narzędzia</div>
        <h2>Pompa ciepła, podłogówka i grzejniki w jednym układzie</h2>
    </div>

    <div class="rk-intro-body">
        
        <div class="rk-intro-main-text">
            Układ łączący pompę ciepła, podłogówkę i grzejniki to system hybrydowy, w którym niskotemperaturowe źródło zasila jednocześnie strefę płaszczyznową oraz punktową (konwekcyjną). Z technicznego punktu widzenia, strefy te mają skrajnie różną specyfikę cieplną i opory hydrauliczne. Jako specjalista HVAC nadzorujący działanie portalu <strong>projekt-ogrzewania.pl</strong> (ponad 1000 zrealizowanych projektów OZC), każdego dnia diagnozuję ten sam problem: instalatorzy lekceważą precyzyjne zbilansowanie obu obiegów. Poniżej przedstawiam twarde dane i narzędzia, które uchronią Twój budżet.
        </div>

        <div class="rk-intro-tabs">
            <button class="rk-intro-tab-btn active" data-intro="answer">
                <svg class="rk-intro-tab-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                <div class="rk-intro-tab-title">Szybka Odpowiedź</div>
            </button>
            <button class="rk-intro-tab-btn" data-intro="errors">
                <svg class="rk-intro-tab-icon" 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>
                <div class="rk-intro-tab-title">Skutki Błędów</div>
            </button>
            <button class="rk-intro-tab-btn" data-intro="tools">
                <svg class="rk-intro-tab-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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 class="rk-intro-tab-title">Co w artykule?</div>
            </button>
        </div>

        <div class="rk-intro-panels">
            
            <div class="rk-intro-panel active" id="panel-intro-answer">
                <h3>Czy to będzie poprawnie działać?</h3>
                <p><strong>Tak, ale tylko pod ścisłymi warunkami inżynierskimi.</strong> Podłączenie tych dwóch systemów jest wymuszone przy termomodernizacji lub adaptacji poddasza. Aby system zadziałał poprawnie bez niszczenia kompresora, bezwzględnie wymaga zaprojektowania sprzęgła hydraulicznego (bufora) oraz obrotowego zaworu mieszającego dla strefy podłogowej, redukującego temperaturę np. z 45°C do 30°C.</p>
            </div>

            <div class="rk-intro-panel" id="panel-intro-errors">
                <h3 style="color: var(--rk-intro-danger);">Konsekwencje braku zbilansowania</h3>
                <p>Pominięcie twardych obliczeń i poskładanie węzła &#8222;na oko&#8221; skutkuje przepływem zwarciowym. Najczęstsze objawy to lodowaty parter (brak obiegu w podłogówce), przegrzewanie salonu oraz ciągłe taktowanie pompy ciepła. Drastyczny spadek sprawności (SCOP) sprężarki winduje koszty eksploatacyjne budynku nawet o <strong>35% w skali roku grzewczego</strong>.</p>
            </div>

            <div class="rk-intro-panel" id="panel-intro-tools">
                <h3>Interaktywne narzędzia dla inwestora</h3>
                <p>Ten artykuł to inżynierska baza wiedzy. Zamiast czytać bloki tekstu, w dalszej części materiału skorzystasz z darmowych narzędzi, w których samodzielnie zweryfikujesz poprawność swojej instalacji:</p>
                <div class="rk-intro-tools-list">
                    <div class="rk-intro-tool-item">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4"></path><polyline points="14 2 14 8 20 8"></polyline><path d="M2 15h10"></path><path d="M9 18l3-3-3-3"></path></svg>
                        Kalkulator przepływów pompy
                    </div>
                    <div class="rk-intro-tool-item">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 3v18h18"></path><path d="M18.7 8l-5.1 5.2-2.8-2.7L7 14.3"></path></svg>
                        Symulator spadku SCOP
                    </div>
                    <div class="rk-intro-tool-item">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                        Schemat węzła (VDI 4650)
                    </div>
                    <div class="rk-intro-tool-item">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path></svg>
                        Audyt Przed i Po (Case Study)
                    </div>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-intro-tab-btn');
    const panels = {
        'answer': document.getElementById('panel-intro-answer'),
        'errors': document.getElementById('panel-intro-errors'),
        'tools': document.getElementById('panel-intro-tools')
    };

    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Zmienna przechowująca stan, eliminacja użycia operatorów && / ||
            let isCurrentActive = this.classList.contains('active');
            
            if (isCurrentActive === false) {
                // Wyzerowanie klas 'active' na wszystkich przyciskach
                btns.forEach(function(b) {
                    b.classList.remove('active');
                });
                
                // Ukrycie wszystkich paneli
                panels['answer'].classList.remove('active');
                panels['errors'].classList.remove('active');
                panels['tools'].classList.remove('active');

                // Aktywacja wybranego przycisku
                this.classList.add('active');
                
                // Aktywacja odpowiedniego panelu
                let targetId = this.getAttribute('data-intro');
                
                if (targetId === 'answer') { panels['answer'].classList.add('active'); }
                else if (targetId === 'errors') { panels['errors'].classList.add('active'); }
                else if (targetId === 'tools') { panels['tools'].classList.add('active'); }
            }
        });
    });
});
</script>



<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#article-stary-vs-nowy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/"
    },
    "headline": "Czy pompa ciepła podłogówka i grzejniki to dobre połączenie w starym i nowym domu?",
    "description": "Analiza opłacalności układu mieszanego (podłogówka + grzejniki) w nowym budownictwie oraz przy termomodernizacji. Koszty eksploatacyjne, spadek SCOP i norma PN-EN 12831:2006.",
    "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-04",
    "dateModified": "2026-07-04"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#dataset-scop-koszty",
    "name": "Wpływ termomodernizacji i układów mieszanych na współczynnik SCOP i koszty eksploatacji",
    "description": "Porównanie efektywności pompy ciepła pracującej w układzie 100% płaszczyznowym vs hybrydowym, wyliczające roczne straty finansowe spowodowane wymuszeniem wyższej krzywej grzewczej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "pompa ciepła podłogówka i grzejniki w starym domu",
      "łączenie podłogówki z grzejnikami w nowym domu",
      "spadek cop pompy ciepła przez grzejniki",
      "temperatura zasilania pompy ciepła na grzejniki",
      "koszty ogrzewania pompa ciepła i grzejniki"
    ],
    "measurementTechnique": "Kalkulacja różnicy poboru energii elektrycznej dla budynku o zapotrzebowaniu 12 000 kWh przy zmianie SCOP z 4.5 (układ optymalny 35 stopni C) na 2.8 (układ wymuszony 50 stopni C).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wytyczne PN-EN 12831:2006: Zasilanie 45 stopni C dla grzejników i 32 stopni C dla podłogówki.",
        "Wymóg techniczny: Różnica temperatur (Delta T) wynosząca 13K kategorycznie wymusza montaż sprzęgła hydraulicznego (bufora).",
        "Spadek efektywności: Podbicie zasilania do 50 stopni C obniża SCOP urządzenia z 4.5 do około 2.8.",
        "Strata finansowa: W skali roku, przy zapotrzebowaniu 12 MWh, błędny układ mieszany generuje ok. 1650 PLN dodatkowych kosztów."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#webapp-symulator-kontekstu",
    "name": "Symulator Opłacalności Układu Hybrydowego (Nowy vs Stary Dom)",
    "description": "Narzędzie interaktywne pozwalające inwestorowi przełączać się między kontekstem nowej budowy a termomodernizacji, aby natychmiast zobaczyć wpływ na wskaźnik SCOP i roczne straty finansowe.",
    "applicationCategory": "BusinessApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<style>
:root {
    --rk-sim-bg: #ffffff;
    --rk-sim-surface: #f8fafc;
    --rk-sim-border: #e2e8f0;
    --rk-sim-dark: #0f172a;
    --rk-sim-text: #475569;
    --rk-sim-primary: #0284c7;
    --rk-sim-danger: #ef4444;
    --rk-sim-danger-light: #fef2f2;
    --rk-sim-warning: #f59e0b;
    --rk-sim-warning-light: #fffbeb;
}

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

.rk-sim-header {
    background: var(--rk-sim-surface);
    padding: 35px 40px;
    border-bottom: 1px solid var(--rk-sim-border);
    position: relative;
}

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

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

.rk-sim-highlight-bar {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #e0f2fe;
    color: var(--rk-sim-primary);
    padding: 8px 16px;
    border-radius: 8px;
    font-weight: 700;
    font-size: 14px;
    margin-top: 15px;
    border: 1px solid #bae6fd;
}

.rk-sim-body {
    padding: 40px;
}

/* Kontekstowe Przełączniki */
.rk-sim-toggles {
    display: flex;
    gap: 20px;
    margin-bottom: 35px;
}

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

.rk-sim-btn:hover {
    background: var(--rk-sim-surface);
}

.rk-sim-btn.active[data-context="new"] {
    border-color: var(--rk-sim-danger);
    background: var(--rk-sim-danger-light);
    box-shadow: 0 8px 16px -4px rgba(239, 68, 68, 0.15);
}

.rk-sim-btn.active[data-context="old"] {
    border-color: var(--rk-sim-warning);
    background: var(--rk-sim-warning-light);
    box-shadow: 0 8px 16px -4px rgba(245, 158, 11, 0.15);
}

.rk-sim-btn-icon {
    width: 32px;
    height: 32px;
    color: #94a3b8;
    transition: color 0.3s;
}

.rk-sim-btn.active[data-context="new"] .rk-sim-btn-icon { color: var(--rk-sim-danger); }
.rk-sim-btn.active[data-context="old"] .rk-sim-btn-icon { color: var(--rk-sim-warning); }

.rk-sim-btn-text {
    text-align: left;
}

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

.rk-sim-btn-sub {
    font-size: 13px;
    color: var(--rk-sim-text);
    margin-top: 2px;
}

/* Panel Danych i Treści */
.rk-sim-panel {
    display: grid;
    grid-template-columns: 280px 1fr;
    gap: 40px;
    align-items: start;
}

/* Dashboard boczny */
.rk-sim-dashboard {
    background: var(--rk-sim-dark);
    border-radius: 20px;
    padding: 30px;
    color: #ffffff;
    display: flex;
    flex-direction: column;
    gap: 25px;
    position: relative;
    overflow: hidden;
}

.rk-sim-stat {
    position: relative;
    z-index: 2;
}

.rk-sim-stat-label {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 700;
    color: #94a3b8;
    letter-spacing: 0.5px;
    margin-bottom: 8px;
}

.rk-sim-stat-val {
    font-size: 32px;
    font-weight: 900;
    display: flex;
    align-items: baseline;
    gap: 6px;
}

.rk-sim-stat-unit {
    font-size: 14px;
    font-weight: 600;
    opacity: 0.8;
}

/* Dynamiczne kolory wskaźników */
.val-danger { color: #fca5a5; }
.val-warning { color: #fcd34d; }

/* Treść opisowa */
.rk-sim-content {
    animation: rkSimFade 0.4s ease forwards;
}

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

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

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

.rk-sim-content a {
    color: var(--rk-sim-primary);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-sim-primary);
}

.rk-sim-content a:hover {
    border-bottom-style: solid;
}

/* Mobile Responsive */
@media (max-width: 768px) {
    .rk-sim-header, .rk-sim-body { padding: 25px 20px; }
    .rk-sim-toggles { flex-direction: column; gap: 15px; }
    .rk-sim-panel { grid-template-columns: 1fr; gap: 25px; }
    .rk-sim-dashboard { flex-direction: row; flex-wrap: wrap; justify-content: space-between; padding: 20px; }
    .rk-sim-stat { width: 45%; }
}
</style>

<div class="rk-sim-container" id="rk-context-app">
    <div class="rk-sim-header">
        <h2>Czy pompa ciepła podłogówka i grzejniki to dobre połączenie w starym i nowym domu?</h2>
        <p>Fizyka budowli nie wybacza błędów. Zgodnie z wytycznymi normy <strong>PN-EN 12831:2006</strong>, układ wymaga grupy pompowej mieszającej. Różnica temperatur (ΔT) wynosząca 13K kategorycznie wymusza montaż sprzęgła hydraulicznego. Wybierz swój scenariusz inwestycyjny.</p>
        
        <div class="rk-sim-highlight-bar">
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>
            Zasilanie 45°C (Grzejniki) vs Zredukowane 32°C (Podłogówka)
        </div>
    </div>

    <div class="rk-sim-body">
        
        <div class="rk-sim-toggles">
            <button class="rk-sim-btn active" data-context="new" id="btn-sim-new">
                <svg class="rk-sim-btn-icon" 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>
                <div class="rk-sim-btn-text">
                    <div class="rk-sim-btn-title">Nowy Dom</div>
                    <div class="rk-sim-btn-sub">Błąd inwestycyjny</div>
                </div>
            </button>
            <button class="rk-sim-btn" data-context="old" id="btn-sim-old">
                <svg class="rk-sim-btn-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>
                <div class="rk-sim-btn-text">
                    <div class="rk-sim-btn-title">Stary Dom (Remont)</div>
                    <div class="rk-sim-btn-sub">Ekonomiczna konieczność</div>
                </div>
            </button>
        </div>

        <div class="rk-sim-panel">
            
            <div class="rk-sim-dashboard">
                <div class="rk-sim-stat">
                    <div class="rk-sim-stat-label">Wymuszone zasilanie</div>
                    <div class="rk-sim-stat-val val-danger" id="sim-temp">50 <span class="rk-sim-stat-unit">°C</span></div>
                </div>
                <div class="rk-sim-stat">
                    <div class="rk-sim-stat-label">Roczny SCOP pompy</div>
                    <div class="rk-sim-stat-val val-danger" id="sim-scop">2.8 <span class="rk-sim-stat-unit">(Spadek z 4.5)</span></div>
                </div>
                <div class="rk-sim-stat">
                    <div class="rk-sim-stat-label">Dodatkowy koszt roczny</div>
                    <div class="rk-sim-stat-val val-danger" id="sim-cost">+1650 <span class="rk-sim-stat-unit">PLN</span></div>
                </div>
                <svg style="position:absolute; right:-30px; bottom:-30px; width:150px; height:150px; opacity:0.05; color:#fff;" 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-sim-content" id="sim-text-content">
                </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btnNew = document.getElementById('btn-sim-new');
    const btnOld = document.getElementById('btn-sim-old');
    
    const valTemp = document.getElementById('sim-temp');
    const valScop = document.getElementById('sim-scop');
    const valCost = document.getElementById('sim-cost');
    const textContent = document.getElementById('sim-text-content');

    const contentData = {
        'new': {
            temp: '50',
            scop: '2.8',
            cost: '+1650',
            colorClass: 'val-danger',
            html: `
                <h3 style="color: var(--rk-sim-danger);">Termodynamika vs. Obawy Inwestora</h3>
                <p>W nowym budownictwie łączenie tych dwóch systemów to kategoryczny błąd inżynieryjny, obniżający drastycznie sprawność całego układu. Inwestorzy, z obawy przed "brakiem kontroli nad temperaturą" w sypialniach na poddaszu, decydują się na kaloryfery.</p>
                <p><a href="https://projekt-ogrzewania.pl/pompa-ciepla/">Pompa ciepła</a> to urządzenie niskotemperaturowe. Jej efektywność (COP) jest odwrotnie proporcjonalna do temperatury zasilania. Aby system mieszany działał, automatyka musi pracować na wyższej <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywej grzewczej</a> – produkując wodę wymaganą przez grzejniki, a nie podłogówkę.</p>
            `
        },
        'old': {
            temp: '45-50',
            scop: '~2.8',
            cost: '+1650',
            colorClass: 'val-warning',
            html: `
                <h3 style="color: var(--rk-sim-warning);">Kompromis w programie Czyste Powietrze</h3>
                <p>W starych domach poddawanych <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-remontowanym-budynku-czy-warto/">termomodernizacji</a>, pozostawienie części grzejników (np. na piętrze o drewnianych stropach) przy jednoczesnym zerwaniu podłóg na parterze pod układ płaszczyznowy, jest często jedynym uzasadnionym ekonomicznie wyjściem.</p>
                <p>Problem polega na tym, że zmuszasz urządzenie optymalizowane pod 35°C (SCOP 4.5) do wysyłania 50°C. Dla domu o zapotrzebowaniu 12 000 kWh rocznie, różnica w poborze prądu między czystą podłogówką a źle zoptymalizowanym systemem mieszanym wyciągnie z Twojej kieszeni dodatkowe <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/">1650 PLN na rachunkach rocznie</a>.</p>
            `
        }
    };

    function updateSim(context) {
        let data = contentData[context];
        
        // Animacja resetu treści
        textContent.style.animation = 'none';
        textContent.offsetHeight; // trigger reflow
        textContent.style.animation = null;

        // Aktualizacja danych
        valTemp.innerHTML = data.temp + ' <span class="rk-sim-stat-unit">°C</span>';
        valTemp.className = 'rk-sim-stat-val ' + data.colorClass;
        
        valScop.innerHTML = data.scop + ' <span class="rk-sim-stat-unit">(Spadek z 4.5)</span>';
        valScop.className = 'rk-sim-stat-val ' + data.colorClass;
        
        valCost.innerHTML = data.cost + ' <span class="rk-sim-stat-unit">PLN</span>';
        valCost.className = 'rk-sim-stat-val ' + data.colorClass;

        textContent.innerHTML = data.html;
    }

    btnNew.addEventListener('click', function() {
        let isActive = this.classList.contains('active');
        if (isActive === false) {
            this.classList.add('active');
            btnOld.classList.remove('active');
            updateSim('new');
        }
    });

    btnOld.addEventListener('click', function() {
        let isActive = this.classList.contains('active');
        if (isActive === false) {
            this.classList.add('active');
            btnNew.classList.remove('active');
            updateSim('old');
        }
    });

    // Inicjalizacja
    updateSim('new');
});
</script>



<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#article-wezel",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/"
    },
    "headline": "Jak połączyć podłogówkę z grzejnikami przy pompie ciepła, aby system nie taktował?",
    "description": "Zasady budowy hybrydowego węzła cieplnego. Wykorzystanie bufora równoległego i grup pompowych do eliminacji zjawiska taktowania 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-07-04",
    "dateModified": "2026-07-04"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#dataset-vdi4650",
    "name": "Parametry zładu wody i buforowania wg standardu VDI 4650",
    "description": "Twarde dane inżynierskie dotyczące minimalnej pojemności sprzęgła hydraulicznego dla systemów biwalentnych oraz parametry temperaturowe poszczególnych obiegów.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jak połączyć podłogówkę z grzejnikami",
      "taktowanie pompy ciepła jak zapobiec",
      "bufor ciepła pojemność kalkulator",
      "zawór mieszający do podłogówki schemat",
      "sprzęgło hydrauliczne pompa ciepła"
    ],
    "measurementTechnique": "Algorytm wyznaczania minimalnego zładu wody: 15 litrów na 1 kW mocy grzewczej pompy ciepła w celu zapobiegania zjawisku short-cycling.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wymóg pojemności bufora: Min. 15L / 1kW mocy (np. 120 litrów dla pompy 8 kW).",
        "Zład instalacji: Grzejniki (kilka litrów) vs Podłogówka (powyżej 110 litrów na 100m2).",
        "Temperatury węzła: Zasilanie bufora 45 stopni C, zasilanie grzejników 45 stopni C, zasilanie podłogówki zredukowane do 30 stopni C.",
        "Zagrożenia: Uszkodzenie sprężarki (< 5 lat) i zniszczenie wylewki (55 stopni C przy defrost) bez zastosowania bufora."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#webapp-wezel-cieplny",
    "name": "Symulator Architektury Węzła Cieplnego",
    "description": "Interaktywny diagram krokowy demonstrujący prawidłowy przepływ i redukcję temperatur w hybrydowym systemie ogrzewania z użyciem bufora równoległego.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<style>
:root {
    --rk-node-bg: #ffffff;
    --rk-node-surface: #f8fafc;
    --rk-node-border: #e2e8f0;
    --rk-node-dark: #0f172a;
    --rk-node-text: #475569;
    --rk-node-brand: #0284c7;
    --rk-node-brand-light: #e0f2fe;
    --rk-node-heat: #ef4444;
    --rk-node-cool: #3b82f6;
    --rk-node-safe: #10b981;
}

.rk-node-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: var(--rk-node-bg);
    border-radius: 24px;
    border: 1px solid var(--rk-node-brand);
    box-shadow: 0 20px 40px -15px rgba(2, 132, 199, 0.15);
    overflow: hidden;
}

.rk-node-header {
    background: var(--rk-node-dark);
    padding: 35px 40px;
    color: #ffffff;
}

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

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

.rk-node-body {
    padding: 40px;
    display: flex;
    gap: 40px;
    background: #ffffff;
}

/* Sekcja nawigacji / kroków */
.rk-node-steps {
    flex: 0 0 320px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-step-btn {
    display: flex;
    align-items: center;
    gap: 15px;
    padding: 18px 20px;
    background: var(--rk-node-surface);
    border: 2px solid var(--rk-node-border);
    border-radius: 16px;
    cursor: pointer;
    text-align: left;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

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

.rk-step-btn.active {
    background: var(--rk-node-brand-light);
    border-color: var(--rk-node-brand);
    box-shadow: 0 10px 15px -3px rgba(2, 132, 199, 0.1);
}

.rk-step-num {
    width: 36px;
    height: 36px;
    background: #ffffff;
    border: 2px solid var(--rk-node-border);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    font-size: 16px;
    color: var(--rk-node-text);
    flex-shrink: 0;
    transition: all 0.3s;
}

.rk-step-btn.active .rk-step-num {
    border-color: var(--rk-node-brand);
    background: var(--rk-node-brand);
    color: #ffffff;
}

.rk-step-title {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-node-dark);
    line-height: 1.3;
}

.rk-step-subtitle {
    font-size: 13px;
    color: var(--rk-node-text);
    margin-top: 4px;
}

/* Panel prezentacji treści */
.rk-node-display {
    flex: 1;
    background: var(--rk-node-surface);
    border-radius: 20px;
    border: 1px dashed var(--rk-node-border);
    padding: 35px;
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-display-content {
    display: none;
    animation: rkFadeIn 0.4s ease forwards;
}

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

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

.rk-node-graphic {
    text-align: center;
    margin-bottom: 25px;
}

.rk-node-svg {
    width: 100%;
    max-width: 140px;
    height: auto;
}

/* Animacje SVG */
.anim-flow { stroke-dasharray: 10 5; animation: rkFlow 1s linear infinite; }
@keyframes rkFlow { to { stroke-dashoffset: -15; } }

.anim-pulse { animation: rkPulse 2s infinite; transform-origin: center; }
@keyframes rkPulse { 0% { transform: scale(0.95); opacity: 0.8; } 50% { transform: scale(1.05); opacity: 1; } 100% { transform: scale(0.95); opacity: 0.8; } }

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

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

.rk-node-highlight {
    background: #ffffff;
    padding: 12px 15px;
    border-left: 4px solid var(--rk-node-brand);
    border-radius: 6px;
    font-weight: 700;
    color: var(--rk-node-dark);
    margin-top: 20px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

/* Mobile Responsive - Accordion Style */
@media (max-width: 768px) {
    .rk-node-header, .rk-node-body { padding: 25px 20px; }
    .rk-node-body { flex-direction: column; gap: 20px; }
    .rk-node-steps { flex: 0 0 auto; }
    .rk-node-display { padding: 25px 20px; }
    .rk-node-svg { max-width: 100px; }
}
</style>

<div class="rk-node-wrapper" id="rk-node-simulator">
    <div class="rk-node-header">
        <h2>Jak połączyć podłogówkę z grzejnikami przy pompie ciepła?</h2>
        <p>Taktowanie (short-cycling) to zabójca sprężarek. Kiedy pętle grzejników się zamkną, pompa nie ma gdzie zrzucić energii. Poznaj 4-etapową architekturę węzła cieplnego, która gwarantuje bezpieczeństwo na dekady.</p>
    </div>

    <div class="rk-node-body">
        
        <div class="rk-node-steps">
            <button class="rk-step-btn active" data-step="1">
                <div class="rk-step-num">1</div>
                <div>
                    <div class="rk-step-title">Zasilanie Jednostki PC</div>
                    <div class="rk-step-subtitle">Wysoki parametr (np. 45°C)</div>
                </div>
            </button>
            <button class="rk-step-btn" data-step="2">
                <div class="rk-step-num">2</div>
                <div>
                    <div class="rk-step-title">Sprzęgło Hydrauliczne</div>
                    <div class="rk-step-subtitle">Bufor równoległy wg VDI 4650</div>
                </div>
            </button>
            <button class="rk-step-btn" data-step="3">
                <div class="rk-step-num">3</div>
                <div>
                    <div class="rk-step-title">Obieg Grzejników</div>
                    <div class="rk-step-subtitle">Obieg bezpośredni 45°C</div>
                </div>
            </button>
            <button class="rk-step-btn" data-step="4">
                <div class="rk-step-num">4</div>
                <div>
                    <div class="rk-step-title">Obieg Podłogówki</div>
                    <div class="rk-step-subtitle">Zawór mieszający na 30°C</div>
                </div>
            </button>
        </div>

        <div class="rk-node-display">
            <div class="rk-display-content active" id="content-step-1">
                <div class="rk-node-graphic">
                    <svg class="rk-node-svg" viewBox="0 0 100 100">
                        <rect x="20" y="20" width="60" height="60" rx="8" fill="none" stroke="var(--rk-node-dark)" stroke-width="4"></rect>
                        <circle cx="50" cy="50" r="15" fill="none" stroke="var(--rk-node-brand)" stroke-width="4" class="anim-pulse"></circle>
                        <path class="anim-flow" d="M80 50 L100 50" stroke="var(--rk-node-heat)" stroke-width="6" stroke-linecap="round"></path>
                    </svg>
                </div>
                <div class="rk-node-text">
                    <h3>Produkcja energii (Zasilanie Główne)</h3>
                    <p>Pompa obiegowa wbudowana wewnątrz jednostki pompy ciepła tłoczy czynnik grzewczy na wysoki parametr narzucony przez najbardziej wymagający odbiornik w domu (grzejniki).</p>
                    <p>Jednostka produkuje wodę o temperaturze np. <strong>45°C</strong> i wysyła ją z dużą prędkością bezpośrednio do kotłowni.</p>
                </div>
            </div>

            <div class="rk-display-content" id="content-step-2">
                <div class="rk-node-graphic">
                    <svg class="rk-node-svg" viewBox="0 0 100 100">
                        <rect x="30" y="10" width="40" height="80" rx="10" fill="var(--rk-node-brand-light)" stroke="var(--rk-node-brand)" stroke-width="4"></rect>
                        <line x1="10" y1="30" x2="30" y2="30" stroke="var(--rk-node-heat)" stroke-width="4"></line>
                        <line x1="10" y1="70" x2="30" y2="70" stroke="var(--rk-node-cool)" stroke-width="4"></line>
                        <line x1="70" y1="30" x2="90" y2="30" stroke="var(--rk-node-heat)" stroke-width="4"></line>
                        <line x1="70" y1="70" x2="90" y2="70" stroke="var(--rk-node-cool)" stroke-width="4"></line>
                    </svg>
                </div>
                <div class="rk-node-text">
                    <h3>Bufor: Serce układu hybrydowego</h3>
                    <p>Woda z pompy ciepła wpada do bufora równoległego, który pełni funkcję sprzęgła hydraulicznego. Rozdziela on strumienie i zrównuje ciśnienia między układami o różnych oporach.</p>
                    <div class="rk-node-highlight">
                        Norma VDI 4650 wymusza zład min. 15 litrów na 1 kW mocy. Dla pompy 8 kW oznacza to zasobnik o pojemności co najmniej 120 litrów.
                    </div>
                </div>
            </div>

            <div class="rk-display-content" id="content-step-3">
                <div class="rk-node-graphic">
                    <svg class="rk-node-svg" viewBox="0 0 100 100">
                        <rect x="20" y="30" width="60" height="40" rx="4" fill="none" stroke="var(--rk-node-heat)" stroke-width="4"></rect>
                        <line x1="30" y1="30" x2="30" y2="70" stroke="var(--rk-node-heat)" stroke-width="2"></line>
                        <line x1="50" y1="30" x2="50" y2="70" stroke="var(--rk-node-heat)" stroke-width="2"></line>
                        <line x1="70" y1="30" x2="70" y2="70" stroke="var(--rk-node-heat)" stroke-width="2"></line>
                        <path class="anim-flow" d="M0 50 L20 50" stroke="var(--rk-node-heat)" stroke-width="4"></path>
                    </svg>
                </div>
                <div class="rk-node-text">
                    <h3>Odbiór Punktowy (Grzejniki)</h3>
                    <p>Z bufora wychodzą dwa niezależne obiegi wtórne. Pierwszy z nich, obieg bezpośredni, zasila grzejniki kaloryferowe wodą o pierwotnej temperaturze <strong>45°C</strong> za pomocą własnej pompy obiegowej.</p>
                    <p>Opór tego układu to często ułamek (ok. 10 kPa) tego, co generuje podłogówka, a zład wody wynosi zaledwie kilka litrów.</p>
                </div>
            </div>

            <div class="rk-display-content" id="content-step-4">
                <div class="rk-node-graphic">
                    <svg class="rk-node-svg" viewBox="0 0 100 100">
                        <path d="M20 20 L80 20 A 10 10 0 0 1 90 30 L90 30 A 10 10 0 0 1 80 40 L20 40 A 10 10 0 0 0 10 50 L10 50 A 10 10 0 0 0 20 60 L80 60" fill="none" stroke="var(--rk-node-safe)" stroke-width="6" stroke-linecap="round"></path>
                        <circle cx="20" cy="20" r="8" fill="var(--rk-node-heat)"></circle>
                        <circle cx="20" cy="40" r="8" fill="var(--rk-node-cool)"></circle>
                    </svg>
                </div>
                <div class="rk-node-text">
                    <h3>Odbiór Płaszczyznowy (Podłogówka)</h3>
                    <p>Obieg z zaworem mieszającym podsysa gorącą wodę z bufora, miesza ją z chłodną wodą wracającą z podłogi, redukując temperaturę do bezpiecznych <strong>30°C</strong> (zgodnie z PN-EN 1264).</p>
                    <div class="rk-node-highlight">
                        Brak takiego zaworu spowoduje podanie na posadzkę nawet 55°C w trakcie odszraniania parownika (defrost), co dosłownie rozerwie wylewkę i zniszczy rury PEX!
                    </div>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const stepBtns = document.querySelectorAll('.rk-step-btn');
    const stepContents = document.querySelectorAll('.rk-display-content');

    stepBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Pobranie numeru kroku
            let stepId = this.getAttribute('data-step');

            // Resetowanie wszystkich przycisków
            stepBtns.forEach(function(b) {
                b.classList.remove('active');
            });
            
            // Resetowanie wszystkich paneli treści
            stepContents.forEach(function(content) {
                content.classList.remove('active');
            });

            // Aktywacja wybranego przycisku i odpowiedniej treści
            this.classList.add('active');
            
            let targetContent = document.getElementById('content-step-' + stepId);
            if (targetContent !== null) {
                targetContent.classList.add('active');
            }
        });
    });
});
</script>



<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#article-grzejniki",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/"
    },
    "headline": "Jakie grzejniki do układu pompa ciepła podłogówka i grzejniki wybrać?",
    "description": "Zestawienie efektywności emiterów ciepła w układach niskotemperaturowych. Wybór między klimakonwektorami, grzejnikami V33 a starymi kaloryferami zgodnie z PN-EN 442.",
    "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-04",
    "dateModified": "2026-07-04"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#dataset-emitery",
    "name": "Wpływ typu odbiornika na efektywność instalacji mieszanej",
    "description": "Twarde dane z normy PN-EN 442 określające współczynniki przewymiarowania i parametry zasilania w zależności od zastosowanego emitera ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jakie grzejniki do pompy ciepła",
      "klimakonwektor do pompy ciepła",
      "przewymiarowanie grzejników stalowych",
      "stare grzejniki żeliwne a pompa ciepła",
      "grzejniki v33 wymiary do pompy ciepła"
    ],
    "measurementTechnique": "Obliczanie spadku sprawności SCOP i wielkości emitera (współczynnik 2.6) dla zasilania obniżonego do 45 stopni Celsjusza z punktu odniesienia 75/65/20.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Podłogówka: Zasilanie 35/28°C, wskaźnik bazowy 1.0, SCOP: 4.3 - 4.8",
        "Klimakonwektor: Zasilanie 35/30°C, wymusza konwekcję wentylatorem, SCOP: 4.1 - 4.5",
        "Grzejnik V33/C33: Zasilanie 45/35°C, przewymiarowany 2.6 raza, SCOP: 3.4 - 3.8",
        "Stary grzejnik: Zasilanie 55/45°C, dramatyczny spadek wydajności (70%), SCOP: 2.5 - 2.9"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#webapp-porownywarka",
    "name": "Interaktywna Porównywarka Emiterów Ciepła",
    "description": "Narzędzie symulujące wpływ decyzji o pozostawieniu starych grzejników lub inwestycji w nowe (V33 / fancoile) na roczne wskaźniki efektywności urządzenia grzewczego.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<style>
:root {
    --rk-em-dark: #0f172a;
    --rk-em-card: #ffffff;
    --rk-em-bg: #f8fafc;
    --rk-em-border: #cbd5e1;
    --rk-em-brand: #0284c7;
    --rk-em-text: #475569;
    --rk-em-green: #10b981;
    --rk-em-amber: #f59e0b;
    --rk-em-red: #ef4444;
}

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

.rk-em-header {
    background: var(--rk-em-dark);
    padding: 35px 40px;
    color: #ffffff;
}

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

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

.rk-em-body {
    padding: 35px 40px;
}

/* Przyciski wyboru - Grid */
.rk-em-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
    margin-bottom: 30px;
}

.rk-em-btn {
    background: var(--rk-em-card);
    border: 2px solid var(--rk-em-border);
    border-radius: 16px;
    padding: 20px 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: 12px;
}

.rk-em-btn:hover {
    border-color: #94a3b8;
    transform: translateY(-2px);
}

.rk-em-btn.active {
    border-color: var(--rk-em-brand);
    background: #f0f9ff;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.15);
}

.rk-em-icon {
    width: 40px;
    height: 40px;
    color: #64748b;
    transition: color 0.3s;
}

.rk-em-btn.active .rk-em-icon {
    color: var(--rk-em-brand);
}

.rk-em-btn-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-em-dark);
    line-height: 1.3;
}

/* Panel wyników / Dashboard */
.rk-em-dashboard {
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-em-border);
    padding: 30px;
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 20px;
    margin-bottom: 30px;
}

.rk-em-stat {
    padding: 20px;
    background: var(--rk-em-bg);
    border-radius: 12px;
    border: 1px dashed var(--rk-em-border);
    text-align: center;
}

.rk-em-stat-label {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 700;
    color: #94a3b8;
    letter-spacing: 0.5px;
    margin-bottom: 10px;
}

.rk-em-stat-val {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-em-dark);
}

/* Dynamiczne kolory dla SCOP */
.rk-color-green { color: var(--rk-em-green); }
.rk-color-amber { color: var(--rk-em-amber); }
.rk-color-red { color: var(--rk-em-red); }

/* Opis techniczny na dole */
.rk-em-description {
    background: #ffffff;
    border-left: 4px solid var(--rk-em-brand);
    padding: 25px 30px;
    border-radius: 0 12px 12px 0;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-em-description h3 {
    margin: 0 0 12px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-em-dark);
}

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

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

/* Mobile Responsywność */
@media (max-width: 768px) {
    .rk-em-header, .rk-em-body { padding: 25px 20px; }
    .rk-em-grid { grid-template-columns: 1fr 1fr; }
    .rk-em-dashboard { grid-template-columns: 1fr; gap: 15px; padding: 20px; }
    .rk-em-description { padding: 20px; }
}
</style>

<div class="rk-em-container" id="rk-emitters-app">
    <div class="rk-em-header">
        <h2>Jakie grzejniki do układu mieszanego z pompą ciepła?</h2>
        <p>Wybór emiterów determinuje sukces całej inwestycji. Zobacz, jak fizyka opisana w normie <strong>PN-EN 442</strong> weryfikuje wydajność poszczególnych rozwiązań przy obniżonym parametrze zasilania.</p>
    </div>

    <div class="rk-em-body">
        
        <div class="rk-em-grid" id="rkEmittersGrid">
            <button class="rk-em-btn active" data-type="floor">
                <svg class="rk-em-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="3" y1="15" x2="21" y2="15"></line></svg>
                <div class="rk-em-btn-title">Ogrzewanie<br>Podłogowe</div>
            </button>
            <button class="rk-em-btn" data-type="fancoil">
                <svg class="rk-em-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><path d="M12 18a6 6 0 0 0 0-12v12z"></path><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="M22 12h-2"></path><path d="M4 12H2"></path></svg>
                <div class="rk-em-btn-title">Fancoil<br>(Klimakonwektor)</div>
            </button>
            <button class="rk-em-btn" data-type="v33">
                <svg class="rk-em-icon" 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="9" y1="4" x2="9" y2="20"></line><line x1="15" y1="4" x2="15" y2="20"></line></svg>
                <div class="rk-em-btn-title">Płytowy V33<br>(Trzypłytowy)</div>
            </button>
            <button class="rk-em-btn" data-type="old">
                <svg class="rk-em-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16v16H4z"></path><line x1="4" y1="12" x2="20" y2="12"></line></svg>
                <div class="rk-em-btn-title">Stary Żeliwny<br>(Członowy)</div>
            </button>
        </div>

        <div class="rk-em-dashboard">
            <div class="rk-em-stat">
                <div class="rk-em-stat-label">Wymagane Zasilanie</div>
                <div class="rk-em-stat-val" id="rk-val-temp">35/28°C</div>
            </div>
            <div class="rk-em-stat">
                <div class="rk-em-stat-label">Przewymiarowanie</div>
                <div class="rk-em-stat-val" id="rk-val-factor">1.0 x</div>
            </div>
            <div class="rk-em-stat">
                <div class="rk-em-stat-label">Roczny SCOP (Szacunek)</div>
                <div class="rk-em-stat-val rk-color-green" id="rk-val-scop">4.3 - 4.8</div>
            </div>
        </div>

        <div class="rk-em-description" id="rk-val-desc">
            <h3>Baza odniesienia: Płaszczyzna</h3>
            <p>Standardowy układ podłogowy służy nam jako punkt zerowy. Działa na najniższym parametrze 35°C. Gwarantuje najwyższą sprawność kompresora i chroni dom przed drastycznym wzrostem rachunków.</p>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-em-btn');
    
    // Pola do aktualizacji
    const valTemp = document.getElementById('rk-val-temp');
    const valFactor = document.getElementById('rk-val-factor');
    const valScop = document.getElementById('rk-val-scop');
    const valDesc = document.getElementById('rk-val-desc');

    // Baza twardych danych
    const emitterData = {
        'floor': {
            temp: '35/28°C',
            factor: '1.0 x',
            scop: '4.3 - 4.8',
            colorClass: 'rk-color-green',
            title: 'Baza odniesienia: Płaszczyzna',
            text: 'Standardowy układ podłogowy służy nam jako punkt zerowy. Działa na najniższym parametrze 35°C. Gwarantuje najwyższą sprawność kompresora i współpracuje idealnie z <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompą ciepła</a>.'
        },
        'fancoil': {
            temp: '35/30°C',
            factor: '~1.1 x',
            scop: '4.1 - 4.5',
            colorClass: 'rk-color-green',
            title: 'Fancoile: Aktywna konwekcja',
            text: 'To grzejniki wyposażone w cichy wentylator wymuszający ruch powietrza. Pozwalają na pracę na bardzo niskim parametrze rzędu 35°C, zrównując się krzywą grzewczą z podłogówką. Co więcej, w lecie umożliwiają aktywne chłodzenie budynku.'
        },
        'v33': {
            temp: '45/35°C',
            factor: '2.6 x',
            scop: '3.4 - 3.8',
            colorClass: 'rk-color-amber',
            title: 'Bezpieczne Przewymiarowanie (V33/C33)',
            text: 'Dla parametru 45°C należy bezwzględnie zastosować grzejniki trzypłytowe z potrójnym konwektorem o zwiększonej powierzchni wymiany. Przewymiarowanie wynosi 2,6 raza w stosunku do mocy kotłowej. Podnosi to koszt modernizacji o ok. 2500 - 4000 PLN przy typowym domu.'
        },
        'old': {
            temp: '55/45°C',
            factor: '> 3.5 x',
            scop: '2.5 - 2.9',
            colorClass: 'rk-color-red',
            title: 'Zabójca SCOP i portfela',
            text: 'Klasyczne grzejniki żeliwne działają zaledwie na ułamku swojej mocy przy parametrze 45°C (spadek wydajności o ponad 70%). Próba obsługi ich przez pompę inwerterową doprowadzi do <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/">astronomicznych kosztów ogrzewania</a> z uwagi na ciągłą pracę wspomagających grzałek elektrycznych.'
        }
    };

    // Obsługa kliknięć (bezpieczny JS)
    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Czyszczenie aktywnego stanu
            btns.forEach(function(b) {
                b.classList.remove('active');
            });
            
            // Ustawienie klikniętego
            this.classList.add('active');
            
            let type = this.getAttribute('data-type');
            let data = emitterData[type];

            // Aktualizacja UI
            valTemp.textContent = data.temp;
            valFactor.textContent = data.factor;
            valScop.textContent = data.scop;
            
            // Zarządzanie kolorami
            valScop.className = 'rk-em-stat-val ' + data.colorClass;

            // Wstrzyknięcie opisu
            valDesc.innerHTML = '<h3>' + data.title + '</h3><p>' + data.text + '</p>';
        });
    });
});
</script>



<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#article-kalkulator",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/"
    },
    "headline": "Kalkulator układu mieszanego: Jak policzyć moc i przepływy dla pompy ciepła?",
    "description": "Interaktywny algorytm obliczeniowy do wyznaczania masowego natężenia przepływu w instalacjach hybrydowych. Zobacz jak przeliczyć waty na litry na godzinę zgodnie z PN-EN 12831.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.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-04",
    "dateModified": "2026-07-04"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#dataset-wzory",
    "name": "Algorytm obliczeń przepływu hydraulicznego (OZC do Kvs)",
    "description": "Zestawienie wzorów matematycznych oraz stałych fizycznych dla wody (ciepło właściwe) pozwalające na dobranie odpowiednich pomp i zaworów mieszających.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator przepływu pompy ciepła",
      "jak obliczyć moc grzewczą pętli",
      "dobór kvs zaworu mieszającego",
      "wzór na przepływ wody w instalacji co",
      "obliczenie masowego natężenia przepływu"
    ],
    "measurementTechnique": "Przekształcenie wzoru na ciepło właściwe Q = m * c * deltaT, przy c = 4186 J/(kg*K), z dodaniem 15% naddatku na straty przesyłowe z bufora.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Krok 1: Wyznaczenie OZC z naddatkiem buforowym (+15%).",
        "Krok 2: Ustalenie delta T (7K dla podłogówki, 10K dla grzejników, 5K dla PC).",
        "Krok 3: Obliczenie masowego natężenia przepływu w kg/h.",
        "Krok 4: Wyznaczenie przepustowości Kvs zaworu trójdrogowego."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#webapp-kalkulator",
    "name": "Kalkulator Przepływów Hydraulicznych C.O.",
    "description": "Interaktywny suwak pozwalający inwestorom i instalatorom na przeliczenie w czasie rzeczywistym strat cieplnych na wymagany przepływ czynnika w litrach na godzinę.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<style>
:root {
    --rk-calc-bg: #ffffff;
    --rk-calc-border: #cbd5e1;
    --rk-calc-dark: #0f172a;
    --rk-calc-text: #475569;
    --rk-calc-primary: #0284c7;
    --rk-calc-primary-hover: #0369a1;
    --rk-calc-accent-heat: #ef4444;
    --rk-calc-accent-floor: #f59e0b;
    --rk-calc-accent-main: #10b981;
    --rk-calc-panel: #f8fafc;
}

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

.rk-calc-header {
    background: linear-gradient(135deg, var(--rk-calc-dark), #1e293b);
    padding: 35px 40px;
    color: #ffffff;
}

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

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

.rk-calc-body {
    padding: 40px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
}

/* Sekcja suwaków (Input) */
.rk-calc-controls {
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.rk-input-group {
    background: var(--rk-calc-panel);
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-calc-border);
}

.rk-input-label {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    margin-bottom: 20px;
}

.rk-val-display {
    background: #ffffff;
    padding: 6px 12px;
    border-radius: 8px;
    border: 1px solid var(--rk-calc-primary);
    color: var(--rk-calc-primary);
    font-size: 18px;
}

/* Ostylowanie suwaka */
.rk-range-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: #e2e8f0;
    outline: none;
    margin-top: 10px;
}

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

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

/* Przełączniki typu strefy */
.rk-radio-group {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-radio-btn {
    display: flex;
    align-items: center;
    gap: 15px;
    padding: 15px;
    border: 2px solid var(--rk-calc-border);
    border-radius: 12px;
    cursor: pointer;
    background: #ffffff;
    transition: all 0.2s;
}

.rk-radio-btn[data-selected="true"] {
    border-color: var(--rk-calc-primary);
    background: #f0f9ff;
}

.rk-radio-icon {
    width: 24px;
    height: 24px;
    color: #94a3b8;
}

.rk-radio-btn[data-selected="true"] .rk-radio-icon {
    color: var(--rk-calc-primary);
}

.rk-radio-text {
    font-weight: 700;
    color: var(--rk-calc-dark);
    font-size: 15px;
}

.rk-radio-desc {
    font-weight: 500;
    color: var(--rk-calc-text);
    font-size: 13px;
}

/* Sekcja wyników (Output) */
.rk-calc-results {
    background: var(--rk-calc-dark);
    border-radius: 20px;
    padding: 30px;
    color: #ffffff;
    display: flex;
    flex-direction: column;
    gap: 25px;
    position: relative;
    overflow: hidden;
}

.rk-results-bg-icon {
    position: absolute;
    right: -20px;
    bottom: -20px;
    width: 150px;
    height: 150px;
    color: rgba(255, 255, 255, 0.03);
    z-index: 1;
}

.rk-result-card {
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.1);
    padding: 20px;
    border-radius: 12px;
    position: relative;
    z-index: 2;
}

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

.rk-result-val {
    font-size: 32px;
    font-weight: 900;
    color: #ffffff;
    display: flex;
    align-items: baseline;
    gap: 8px;
}

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

.rk-result-highlight { color: var(--rk-calc-accent-main); }
.rk-result-warn { color: var(--rk-calc-accent-floor); }

/* Sekcja teoretczna na dole */
.rk-calc-theory {
    padding: 0 40px 40px 40px;
}

.rk-calc-theory h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    margin: 0 0 20px 0;
    border-top: 1px solid var(--rk-calc-border);
    padding-top: 30px;
}

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

.rk-step-item {
    background: var(--rk-calc-panel);
    padding: 20px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-calc-primary);
}

.rk-step-item h4 {
    margin: 0 0 10px 0;
    font-size: 16px;
    color: var(--rk-calc-dark);
}

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

.rk-step-item a {
    color: var(--rk-calc-primary);
    font-weight: 700;
    text-decoration: none;
}

/* Mobile Responsive */
@media (max-width: 768px) {
    .rk-calc-header, .rk-calc-body, .rk-calc-theory { padding: 25px 20px; }
    .rk-calc-body { grid-template-columns: 1fr; gap: 20px; }
    .rk-calc-results { padding: 25px 20px; }
    .rk-result-val { font-size: 26px; }
}
</style>

<div class="rk-calc-wrapper" id="rk-interactive-calc">
    <div class="rk-calc-header">
        <h2>Kalkulator układu mieszanego: Jak policzyć moc i przepływy?</h2>
        <p>Zgodnie z prawami fizyki budowli zawartymi w normie PN-EN 12831, instalacje grzewcze nie tolerują zgadywania. Użyj poniższego algorytmu, aby przekształcić projektowe straty cieplne na twarde parametry hydrauliczne (wzór Q = m * c * deltaT).</p>
    </div>

    <div class="rk-calc-body">
        <div class="rk-calc-controls">
            
            <div class="rk-input-group">
                <div class="rk-input-label">
                    <span>Zapotrzebowanie pokoju / strefy</span>
                    <span class="rk-val-display"><span id="rk-val-ozc">2000</span> W</span>
                </div>
                <input type="range" id="rk-range-ozc" class="rk-range-slider" min="500" max="10000" step="100" value="2000">
                <p style="font-size:12px; color:#64748b; margin-top:15px; margin-bottom:0;">Wybierz wyliczone straty ciepła dla wybranego pomieszczenia (lub całego domu dla pompy ciepła).</p>
            </div>

            <div class="rk-input-group">
                <div class="rk-input-label">Wybierz typ odbiornika (Delta T)</div>
                <div class="rk-radio-group">
                    
                    <div class="rk-radio-btn" data-type="floor" data-selected="true">
                        <svg class="rk-radio-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="3" y1="15" x2="21" y2="15"></line></svg>
                        <div>
                            <div class="rk-radio-text">Pętla Podłogówki</div>
                            <div class="rk-radio-desc">Różnica temp. 7K (np. 35°C - 28°C)</div>
                        </div>
                    </div>

                    <div class="rk-radio-btn" data-type="radiator" data-selected="false">
                        <svg class="rk-radio-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16v16H4z"></path><line x1="8" y1="4" x2="8" y2="20"></line><line x1="12" y1="4" x2="12" y2="20"></line><line x1="16" y1="4" x2="16" y2="20"></line></svg>
                        <div>
                            <div class="rk-radio-text">Grzejnik Niskotemperaturowy</div>
                            <div class="rk-radio-desc">Różnica temp. 10K (np. 45°C - 35°C)</div>
                        </div>
                    </div>

                    <div class="rk-radio-btn" data-type="main" data-selected="false">
                        <svg class="rk-radio-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><path d="M12 8v4l3 3"></path></svg>
                        <div>
                            <div class="rk-radio-text">Zasilanie Główne do Bufora</div>
                            <div class="rk-radio-desc">Różnica temp. 5K (Pompa Ciepła R32/R290)</div>
                        </div>
                    </div>

                </div>
            </div>

        </div>

        <div class="rk-calc-results">
            <svg class="rk-results-bg-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1"><path d="M2 12h4l2-9 5 18 3-9h6"></path></svg>
            
            <div class="rk-result-card">
                <div class="rk-result-title">1. Moc Obliczeniowa (+15% Naddatku)</div>
                <div class="rk-result-val"><span id="rk-res-power">2300</span> <span class="rk-result-unit">W</span></div>
                <p style="font-size:12px; margin:5px 0 0 0; color:#94a3b8;">Skorygowane OZC pod straty przesyłowe za buforem.</p>
            </div>

            <div class="rk-result-card">
                <div class="rk-result-title">2. Masowe Natężenie Przepływu (m)</div>
                <div class="rk-result-val rk-result-highlight"><span id="rk-res-flow">282.5</span> <span class="rk-result-unit">kg/h (litrów/h)</span></div>
                <p style="font-size:12px; margin:5px 0 0 0; color:#94a3b8;">Kluczowy parametr doboru <a href="https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/" style="color:#38bdf8;">pompy obiegowej</a>.</p>
            </div>

            <div class="rk-result-card">
                <div class="rk-result-title">3. Rekomendacja / Wskazówka</div>
                <p id="rk-res-tip" style="font-size:14px; margin:0; line-height:1.5; color:#cbd5e1;">Rozbij ten przepływ na 3-4 pętle, aby na rotametrze ustawić przepływ ok. 1.5 l/min na sekcję.</p>
            </div>
        </div>
    </div>

    <div class="rk-calc-theory">
        <h3>Ścisły algorytm obliczeniowy krok po kroku</h3>
        <div class="rk-step-grid">
            <div class="rk-step-item">
                <h4>Krok 1: Wyznaczenie mocy z naddatkiem (OZC)</h4>
                <p>Każde pomieszczenie wymaga obliczenia strat ciepła przez przenikanie i wentylację (<a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">bilans OZC</a>). W układach mieszanych dodajemy naddatek na straty przesyłowe z bufora do rozdzielaczy (min. 15%). Wzór: <strong>Q_obl = Q_pomieszczenia * 1,15</strong>.</p>
            </div>
            
            <div class="rk-step-item">
                <h4>Krok 2: Ustalenie projektowej różnicy temperatur</h4>
                <p>Delta T definiuje, ile energii cieplnej zostawiamy w danym punkcie. Obieg podłogowy wymaga płaskiej wymiany (np. zasilanie 35, powrót 28 = 7K). Grzejniki potrzebują wyższej delty (np. zasilanie 45, powrót 35 = 10K). Dla zasilania głównego sprężarki PC przyjmuje się rygorystyczne 5K.</p>
            </div>

            <div class="rk-step-item">
                <h4>Krok 3 i 4: Masowy przepływ i Kvs</h4>
                <p>Zamieniamy Waty na litry wg wzoru: <strong>m = (Q_obl * 3600) / (c * Delta T)</strong>, gdzie stała c=4186 J/(kg*K). Twarde wyliczenie przepływu m pozwala bezbłędnie dobrać <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zawór trójdrogowy mieszający</a> (np. Kvs 4.0 m3/h) chroniąc system przed szumami akustycznymi.</p>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Referencje UI
    const sliderOzc = document.getElementById('rk-range-ozc');
    const displayOzc = document.getElementById('rk-val-ozc');
    
    const radioBtns = document.querySelectorAll('.rk-radio-btn');
    
    const resPower = document.getElementById('rk-res-power');
    const resFlow = document.getElementById('rk-res-flow');
    const resTip = document.getElementById('rk-res-tip');

    // Stała fizyczna - Ciepło właściwe wody J/(kg*K)
    const C_WATER = 4186;

    // Funkcja główna licząca (bezpieczna, bez uzycia &&)
    function calculateHydraulics() {
        // Pobranie i sformatowanie wartości suwaka
        let qBase = parseInt(sliderOzc.value, 10);
        displayOzc.textContent = qBase;

        // Krok 1: Dodanie 15% naddatku
        let qCalc = qBase * 1.15;
        resPower.textContent = Math.round(qCalc);

        // Znalezienie aktywnego typu instalacji, aby ustalić Delta T
        let activeBtn = document.querySelector('.rk-radio-btn[data-selected="true"]');
        let sysType = activeBtn.getAttribute('data-type');
        
        let deltaT = 7; // domyślnie podłoga
        
        if (sysType === 'floor') { deltaT = 7; }
        if (sysType === 'radiator') { deltaT = 10; }
        if (sysType === 'main') { deltaT = 5; }

        // Krok 3: Obliczenie masowego przepływu m = (Q * 3600) / (c * dT)
        let flowNumerator = qCalc * 3600;
        let flowDenominator = C_WATER * deltaT;
        let flow = flowNumerator / flowDenominator;
        
        resFlow.textContent = flow.toFixed(1);

        // Wskazówki dynamiczne
        if (sysType === 'floor') {
            resTip.textContent = "Podziel ten przepływ na odpowiednią liczbę pętli, dbając by na rotametrze nie przekraczać ok. 1.5 - 2.0 l/min na jedną sekcję.";
        }
        if (sysType === 'radiator') {
            resTip.textContent = "Wyższa różnica temperatur (10K) skutkuje mniejszym przepływem. Pozwala to na użycie cieńszych rur dobiegowych (np. PEX 16x2.0) bez ryzyka szumów na zaworach.";
        }
        if (sysType === 'main') {
            resTip.textContent = "To ogromny przepływ wymuszony rygorem 5K dla pompy ciepła. Użyj rur o dużej średnicy wewnętrznej (np. miedź 28mm lub PP 32x4.4), inaczej zadławisz sprężarkę.";
        }
    }

    // Nasłuchiwanie na zmiany suwaka
    sliderOzc.addEventListener('input', calculateHydraulics);

    // Nasłuchiwanie na kliknięcia w typ instalacji
    radioBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Zresetuj wszystkie
            radioBtns.forEach(function(b) {
                b.setAttribute('data-selected', 'false');
            });
            // Ustaw kliknięty
            this.setAttribute('data-selected', 'true');
            // Przelicz
            calculateHydraulics();
        });
    });

    // Inicjalne przeliczenie przy załadowaniu
    calculateHydraulics();
});
</script>



<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/"
    },
    "headline": "Najczęstsze błędy instalacyjne w systemach mieszanych i ich konsekwencje",
    "description": "Zjawisko przepływu zwarciowego w układzie hybrydowym. Skutki braku kryzowania, taktowania pompy ciepła i straty finansowe rzędu 1200 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.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-04",
    "dateModified": "2026-07-04"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#dataset-bledy-opory",
    "name": "Analiza przepływu zwarciowego i strat hydraulicznych",
    "description": "Zestawienie porównawcze oporów przepływu między strefą płaszczyznową a konwekcyjną oraz ich wpływ na algorytmy pracy pompy ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "przepływ zwarciowy w instalacji co",
      "taktowanie pompy ciepła podłogówka",
      "kryzowanie grzejników przy pompie ciepła",
      "rotametry nie pokazują przepływu",
      "brak regulacji hydraulicznej skutki"
    ],
    "measurementTechnique": "Diagnostyka spadków ciśnień (25 kPa vs 10 kPa) oraz ograniczenia przepustowości Kv na zaworach termostatycznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Opory układu: Podłogówka generuje ok. 25 kPa, grzejniki bez dławienia zaledwie 10 kPa.",
        "Straty finansowe: Brak zrównoważenia powoduje straty od 800 do 1200 PLN rocznie na rachunkach za prąd.",
        "Czas ładowania: Wylewka cementowa/anhydrytowa wymaga min. 3 godzin ciągłego przepływu, czemu zapobiega taktująca (co 10 minut) sprężarka."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#webapp-diagnostyka",
    "name": "Interaktywny Panel Diagnostyczny Układu Hybrydowego",
    "description": "Narzędzie typu tab/accordion analizujące ścieżkę od błędu instalacyjnego do jego fizycznych objawów w domu i ostatecznego rozwiązania inżynierskiego.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<style>
:root {
    --rk-diag-dark: #1f2937;
    --rk-diag-red: #ef4444;
    --rk-diag-red-light: #fef2f2;
    --rk-diag-orange: #f97316;
    --rk-diag-orange-light: #fff7ed;
    --rk-diag-green: #10b981;
    --rk-diag-green-light: #f0fdf4;
    --rk-diag-border: #e5e7eb;
    --rk-diag-text: #4b5563;
    --rk-diag-bg: #ffffff;
}

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

.rk-diag-header {
    padding: 35px 40px;
    background: #f8fafc;
    border-bottom: 1px solid var(--rk-diag-border);
}

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

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

.rk-diag-content {
    padding: 30px 40px;
}

/* Układ przycisków */
.rk-diag-tabs {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
}

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

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

.rk-diag-btn-subtitle {
    font-size: 13px;
    color: var(--rk-diag-text);
}

/* Stany aktywne dla poszczególnych przycisków */
.rk-diag-btn.active[data-tab="problem"] {
    border-color: var(--rk-diag-red);
    background: var(--rk-diag-red-light);
}

.rk-diag-btn.active[data-tab="symptoms"] {
    border-color: var(--rk-diag-orange);
    background: var(--rk-diag-orange-light);
}

.rk-diag-btn.active[data-tab="solution"] {
    border-color: var(--rk-diag-green);
    background: var(--rk-diag-green-light);
}

/* Ikony SVG w przyciskach */
.rk-diag-icon {
    width: 32px;
    height: 32px;
    color: #9ca3af;
    transition: color 0.3s;
}

.rk-diag-btn.active[data-tab="problem"] .rk-diag-icon { color: var(--rk-diag-red); }
.rk-diag-btn.active[data-tab="symptoms"] .rk-diag-icon { color: var(--rk-diag-orange); }
.rk-diag-btn.active[data-tab="solution"] .rk-diag-icon { color: var(--rk-diag-green); }

/* Panele z treścią */
.rk-diag-panel {
    display: none;
    animation: rkSlideUp 0.4s ease forwards;
}

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

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

.rk-diag-panel-inner {
    display: flex;
    gap: 30px;
    align-items: center;
}

.rk-diag-panel-text {
    flex: 1;
}

.rk-diag-panel-text h3 {
    font-size: 20px;
    font-weight: 800;
    margin: 0 0 15px 0;
}

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

.rk-diag-panel-text ul {
    margin: 0;
    padding-left: 20px;
    color: var(--rk-diag-text);
}

.rk-diag-panel-text li {
    font-size: 15px;
    line-height: 1.6;
    margin-bottom: 8px;
}

.rk-diag-panel-text a {
    color: #0284c7;
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed #0284c7;
}

.rk-diag-panel-text a:hover {
    border-bottom-style: solid;
}

.rk-diag-visual {
    flex: 0 0 150px;
    display: flex;
    justify-content: center;
}

.rk-diag-svg-large {
    width: 100%;
    max-width: 120px;
    height: auto;
}

/* Animacje wizualne */
.anim-pulse-red { animation: rkPulseRed 2s infinite; transform-origin: center; }
@keyframes rkPulseRed { 0% { transform: scale(0.95); opacity: 0.8; } 50% { transform: scale(1.05); opacity: 1; } 100% { transform: scale(0.95); opacity: 0.8; } }

.anim-spin-slow { animation: rkSpinSlow 4s linear infinite; transform-origin: center; }
@keyframes rkSpinSlow { 100% { transform: rotate(360deg); } }

/* Pogrubienia i highlighty */
.rk-bold-val {
    font-weight: 800;
    color: var(--rk-diag-dark);
    background: #f1f5f9;
    padding: 2px 6px;
    border-radius: 4px;
}

/* Mobile Responsive */
@media (max-width: 768px) {
    .rk-diag-header, .rk-diag-content { padding: 25px 20px; }
    .rk-diag-tabs { flex-direction: column; gap: 10px; }
    .rk-diag-btn { flex-direction: row; text-align: left; padding: 15px; justify-content: flex-start; gap: 15px; }
    .rk-diag-panel-inner { flex-direction: column; text-align: center; }
    .rk-diag-panel-text ul { text-align: left; }
    .rk-diag-visual { margin-bottom: 15px; }
}
</style>

<div class="rk-diag-container" id="rk-diag-tool">
    <div class="rk-diag-header">
        <h2>Najczęstsze błędy instalacyjne w systemach mieszanych i ich konsekwencje</h2>
        <p>Zjawisko przepływu zwarciowego to najgrubszy grzech polskiego rynku, łamiący wytyczne PORT PC. Kosztuje inwestora średnio od <strong>800 do 1200 PLN</strong> strat rocznie na rachunkach. Zdiagnozuj problem krok po kroku.</p>
    </div>

    <div class="rk-diag-content">
        <div class="rk-diag-tabs">
            <div class="rk-diag-btn active" data-tab="problem">
                <svg class="rk-diag-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                <div class="rk-diag-btn-text">
                    <div class="rk-diag-btn-title">Źródło Błędu</div>
                    <div class="rk-diag-btn-subtitle">Brak kryzowania</div>
                </div>
            </div>
            <div class="rk-diag-btn" data-tab="symptoms">
                <svg class="rk-diag-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                <div class="rk-diag-btn-text">
                    <div class="rk-diag-btn-title">Objawy Fizyczne</div>
                    <div class="rk-diag-btn-subtitle">Zimna podłoga</div>
                </div>
            </div>
            <div class="rk-diag-btn" data-tab="solution">
                <svg class="rk-diag-icon" 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 class="rk-diag-btn-text">
                    <div class="rk-diag-btn-title">Lekarstwo Inżynierskie</div>
                    <div class="rk-diag-btn-subtitle">Ograniczenie Kv</div>
                </div>
            </div>
        </div>

        <div class="rk-diag-panels">
            <div class="rk-diag-panel active" id="panel-problem">
                <div class="rk-diag-panel-inner">
                    <div class="rk-diag-visual">
                        <svg class="rk-diag-svg-large anim-pulse-red" viewBox="0 0 100 100">
                            <circle cx="50" cy="50" r="40" fill="none" stroke="var(--rk-diag-red)" stroke-width="6" stroke-dasharray="15 10"></circle>
                            <path d="M50 25 L50 55 M50 70 L50 75" stroke="var(--rk-diag-red)" stroke-width="8" stroke-linecap="round"></path>
                        </svg>
                    </div>
                    <div class="rk-diag-panel-text">
                        <h3 style="color: var(--rk-diag-red);">Przepływ zwarciowy</h3>
                        <p>Woda zawsze płynie po linii najmniejszego oporu. Zmontowanie układu, gdzie na jednym rozdzielaczu mamy opory rzędu <span class="rk-bold-val">25 kPa</span> (długie pętle podłogówki), a na drugim zaledwie <span class="rk-bold-val">10 kPa</span> (krótkie obiegi grzejników bez dławienia powrotnego), to katastrofa.</p>
                        <p>Woda wyrzucona przez grupę pompową natychmiast "ucieknie" na grzejniki, całkowicie omijając instalację płaszczyznową zalaną w wylewce.</p>
                    </div>
                </div>
            </div>

            <div class="rk-diag-panel" id="panel-symptoms">
                <div class="rk-diag-panel-inner">
                    <div class="rk-diag-visual">
                        <svg class="rk-diag-svg-large" viewBox="0 0 100 100">
                            <path d="M20 80 L20 20 L80 80 Z" fill="var(--rk-diag-orange-light)" stroke="var(--rk-diag-orange)" stroke-width="4"></path>
                            <circle cx="65" cy="65" r="5" fill="var(--rk-diag-orange)"></circle>
                            <circle cx="50" cy="50" r="5" fill="var(--rk-diag-orange)"></circle>
                            <circle cx="35" cy="35" r="5" fill="var(--rk-diag-orange)"></circle>
                        </svg>
                    </div>
                    <div class="rk-diag-panel-text">
                        <h3 style="color: var(--rk-diag-orange);">Efekt u klienta? Chaos instalacyjny.</h3>
                        <ul>
                            <li>Grzejniki parzą, a podłoga na parterze pozostaje lodowata.</li>
                            <li><a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">Rotametry na rozdzielaczu podłogowym</a> nie chcą się podnieść, mimo że pompa tłoczy na 3. biegu.</li>
                            <li><strong>Taktowanie:</strong> Pompa ciepła zczytuje wysoką temperaturę powrotu (woda szybko wraca z grzejników) i wyłącza sprężarkę po 10 minutach. Podłogówka, potrzebująca min. <span class="rk-bold-val">3 godzin</span> ładowania, nie ma szans się nagrzać.</li>
                        </ul>
                    </div>
                </div>
            </div>

            <div class="rk-diag-panel" id="panel-solution">
                <div class="rk-diag-panel-inner">
                    <div class="rk-diag-visual">
                        <svg class="rk-diag-svg-large anim-spin-slow" viewBox="0 0 100 100">
                            <circle cx="50" cy="50" r="30" fill="none" stroke="var(--rk-diag-green)" stroke-width="8"></circle>
                            <path d="M50 10 L50 30 M50 70 L50 90 M10 50 L30 50 M70 50 L90 50" stroke="var(--rk-diag-green)" stroke-width="8" stroke-linecap="round"></path>
                        </svg>
                    </div>
                    <div class="rk-diag-panel-text">
                        <h3 style="color: var(--rk-diag-green);">Matematyka, nie metoda prób i błędów</h3>
                        <p>Lekarstwem jest nastawa wstępna na zaworach termostatycznych grzejników (tzw. <strong>ograniczenie Kv</strong>) oraz precyzyjne ustawienie przepływów wyliczone w projekcie instalacji.</p>
                        <p>Należy również zweryfikować fizykę budynku. Jeśli np. <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">izolacja poddasza</a> to zaledwie 15 cm piany, straty zmuszą pompę do podbicia krzywej grzewczej. Warto wdrożyć <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/">rekuperację</a>, która obniżając OZC, pozwala na redukcję parametrów zasilania.</p>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tabs = document.querySelectorAll('.rk-diag-btn');
    const panels = {
        'problem': document.getElementById('panel-problem'),
        'symptoms': document.getElementById('panel-symptoms'),
        'solution': document.getElementById('panel-solution')
    };

    tabs.forEach(function(tab) {
        tab.addEventListener('click', function() {
            // Bezpieczne sprawdzenie bez użycia operatorów logicznych && / ||
            let isActive = this.classList.contains('active');
            
            if (isActive === false) {
                // Czyszczenie stanów aktywnych z przycisków
                tabs.forEach(function(t) {
                    t.classList.remove('active');
                });
                
                // Ukrywanie wszystkich paneli
                panels['problem'].classList.remove('active');
                panels['symptoms'].classList.remove('active');
                panels['solution'].classList.remove('active');

                // Aktywacja wybranego elementu
                this.classList.add('active');
                let targetId = this.getAttribute('data-tab');
                
                if (targetId === 'problem') { panels['problem'].classList.add('active'); }
                else if (targetId === 'symptoms') { panels['symptoms'].classList.add('active'); }
                else if (targetId === 'solution') { panels['solution'].classList.add('active'); }
            }
        });
    });
});
</script>



<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#article-ozc",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/"
    },
    "headline": "Wpływ OZC na projekt układu mieszanego",
    "description": "Jak precyzyjne obliczenia OZC kształtują projekt ogrzewania podłogowego przy współpracy z grzejnikami. Gęstość rur, parametry zasilania i optymalizacja SCOP 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-07-04",
    "dateModified": "2026-07-04"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#dataset-parametry-ozc",
    "name": "Wytyczne projektowe dla układów hybrydowych (PN-EN 12831)",
    "description": "Twarde dane techniczne dotyczące kompensacji obniżonej temperatury zasilania poprzez zagęszczenie pętli ogrzewania podłogowego i przewymiarowanie emiterów konwekcyjnych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jak oblicza się straty cieplne w budynkach",
      "rozstaw rur ogrzewania podłogowego przy pompie ciepła",
      "projektowe obciążenie cieplne ozc",
      "maksymalna temperatura zasilania podłogówki",
      "grubość wylewki betonowej na ogrzewanie podłogowe",
      "opór cieplny paneli przy podłogówce",
      "pompa ciepła podłogówka i grzejniki schemat",
      "dobór wielkości grzejników do pompy ciepła"
    ],
    "measurementTechnique": "Algorytmiczne przeliczanie mocy oddawanej (W/m2) z powierzchni podłogi w funkcji temperatury zasilania oraz oporu cieplnego warstw wykończeniowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zagęszczenie rur: Zmiana rozstawu z 15 cm na 10 cm, w strefach brzegowych HST zagęszczenie do 5 cm.",
        "Moc jednostkowa: Cel na poziomie 60 W/m2 przy temperaturze zasilania zredukowanej do 32-35 stopni Celsjusza.",
        "Emiter wysokotemperaturowy: Grzejnik płytowy C33 przewymiarowany dla parametru 45 stopni Celsjusza."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#webapp-symulator-stref",
    "name": "Symulator Zapotrzebowania Cieplnego Stref",
    "description": "Narzędzie interaktywne ilustrujące różnice w projektowaniu płaszczyznowym (parter) i konwekcyjnym (piętro) na podstawie tego samego pliku OZC budynku.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<style>
:root {
    --rk-ozc-dark: #1e293b;
    --rk-ozc-card: #ffffff;
    --rk-ozc-bg: #f8fafc;
    --rk-ozc-border: #e2e8f0;
    --rk-ozc-brand: #0284c7;
    --rk-ozc-brand-hover: #0369a1;
    --rk-ozc-accent-warm: #f59e0b;
    --rk-ozc-accent-cool: #0ea5e9;
    --rk-ozc-text-main: #334155;
}

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

.rk-ozc-header {
    background: var(--rk-ozc-dark);
    padding: 35px 40px;
    color: #ffffff;
    position: relative;
}

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

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

.rk-ozc-content {
    padding: 40px;
}

/* Przełącznik stref (Tab / Accordion logic) */
.rk-ozc-nav {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
}

.rk-ozc-tab-btn {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 18px 20px;
    background: var(--rk-ozc-card);
    border: 2px solid var(--rk-ozc-border);
    border-radius: 16px;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-ozc-text-main);
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-ozc-tab-btn:hover {
    border-color: #cbd5e1;
    background: #f1f5f9;
}

.rk-ozc-tab-btn.active[data-target="floor"] {
    border-color: var(--rk-ozc-accent-warm);
    background: #fffbeb;
    color: #b45309;
    box-shadow: 0 10px 20px -5px rgba(245, 158, 11, 0.15);
}

.rk-ozc-tab-btn.active[data-target="radiator"] {
    border-color: var(--rk-ozc-brand);
    background: #f0f9ff;
    color: var(--rk-ozc-brand-hover);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.15);
}

/* Panele zawartości */
.rk-ozc-panel {
    display: none;
    background: var(--rk-ozc-card);
    border-radius: 20px;
    border: 1px solid var(--rk-ozc-border);
    padding: 35px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    animation: rkFadeIn 0.4s ease forwards;
}

.rk-ozc-panel.active {
    display: flex;
    gap: 35px;
    align-items: flex-start;
}

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

.rk-ozc-panel-graphic {
    flex: 0 0 140px;
    text-align: center;
}

.rk-ozc-svg-icon {
    width: 100%;
    max-width: 120px;
    height: auto;
}

/* Animacje SVG */
.anim-pipe { stroke-dasharray: 1000; stroke-dashoffset: 1000; animation: drawPipe 2s ease forwards; }
.anim-heat-wave { transform-origin: bottom; animation: heatRise 2s infinite alternate ease-in-out; }

@keyframes drawPipe { to { stroke-dashoffset: 0; } }
@keyframes heatRise { from { transform: translateY(5px) scaleY(0.9); opacity: 0.6; } to { transform: translateY(-5px) scaleY(1.1); opacity: 1; } }

.rk-ozc-panel-text {
    flex: 1;
}

.rk-ozc-panel-text h3 {
    margin: 0 0 15px 0;
    font-size: 22px;
    font-weight: 800;
}

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

.rk-ozc-data-highlight {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 6px;
    font-weight: 800;
    background: #e2e8f0;
}

/* Mocne CTA na dole */
.rk-ozc-cta-box {
    background: #ffffff;
    padding: 40px;
    text-align: center;
    border-top: 1px dashed var(--rk-ozc-border);
}

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

.rk-ozc-cta-box p {
    color: #64748b;
    margin: 0 auto 30px auto;
    max-width: 650px;
    line-height: 1.6;
}

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

.rk-btn-cta:hover {
    transform: translateY(-4px);
    background: var(--rk-ozc-brand-hover);
    box-shadow: 0 15px 30px -5px rgba(2, 132, 199, 0.5);
    border-color: #bae6fd;
}

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

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

/* Mobile Responsive - Accordion/Stack style */
@media (max-width: 768px) {
    .rk-ozc-header, .rk-ozc-content, .rk-ozc-cta-box { padding: 30px 20px; }
    .rk-ozc-nav { flex-direction: column; gap: 10px; }
    .rk-ozc-panel.active { flex-direction: column; text-align: center; align-items: center; padding: 25px 20px; }
    .rk-ozc-panel-graphic { flex: 0 0 auto; margin-bottom: 10px; }
    .rk-btn-cta { width: 100%; padding: 18px 20px; font-size: 16px; }
}
</style>

<div class="rk-ozc-container" id="rk-ozc-simulator">
    <div class="rk-ozc-header">
        <h2>Jak OZC i system mieszany wpływają na projekt ogrzewania?</h2>
        <p>Wdrożenie systemu z pompą ciepła bezwzględnie wymaga zaktualizowanych, rygorystycznych obliczeń według normy <strong>PN-EN 12831-1:2017-08</strong>. Optymalizacja instalacji to walka o maksymalne obniżenie temperatury zasilania. Zobacz, jak wpływa to na poszczególne strefy budynku.</p>
    </div>

    <div class="rk-ozc-content">
        <div class="rk-ozc-nav">
            <button class="rk-ozc-tab-btn active" data-target="floor">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="3" y1="15" x2="21" y2="15"></line></svg>
                Strefa Parteru (Podłogówka)
            </button>
            <button class="rk-ozc-tab-btn" data-target="radiator">
                <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="M4 4h16v16H4z"></path><line x1="8" y1="4" x2="8" y2="20"></line><line x1="12" y1="4" x2="12" y2="20"></line><line x1="16" y1="4" x2="16" y2="20"></line></svg>
                Strefa Piętra (Grzejniki)
            </button>
        </div>

        <div class="rk-ozc-panel active" id="panel-floor">
            <div class="rk-ozc-panel-graphic">
                <svg class="rk-ozc-svg-icon" viewBox="0 0 100 100">
                    <path class="anim-pipe" d="M10 20 L90 20 A 10 10 0 0 1 100 30 L100 30 A 10 10 0 0 1 90 40 L10 40 A 10 10 0 0 0 0 50 L0 50 A 10 10 0 0 0 10 60 L90 60 A 10 10 0 0 1 100 70 L100 70 A 10 10 0 0 1 90 80 L10 80" fill="none" stroke="var(--rk-ozc-accent-warm)" stroke-width="6" stroke-linecap="round"></path>
                </svg>
            </div>
            <div class="rk-ozc-panel-text">
                <h3 style="color: #b45309;">Ekstremalna kompensacja pętlami</h3>
                <p>Wiedząc z pliku OZC, że nie mogę wysłać na dom wody o temperaturze 55°C (bo zniszczę sprawność SCOP pompy ciepła), muszę "zapakować" rurę w beton na parterze niezwykle gęsto. Tylko wtedy układ odda stabilnie <span class="rk-ozc-data-highlight">60 W/m²</span>.</p>
                <p>Konieczne jest zagęszczenie rozstawu rur z typowych 15 cm na <span class="rk-ozc-data-highlight">10 cm</span>, a w strefach obwodowych (przy ogromnych oknach tarasowych HST) schodzimy w projekcie nawet do <span class="rk-ozc-data-highlight">5 cm</span>. Pod uwagę w algorytmach bierzemy również docelowy opór cieplny paneli (R &lt; 0,15 m²K/W) oraz precyzyjną grubość jastrychu.</p>
            </div>
        </div>

        <div class="rk-ozc-panel" id="panel-radiator">
            <div class="rk-ozc-panel-graphic">
                <svg class="rk-ozc-svg-icon" viewBox="0 0 100 100">
                    <path class="anim-heat-wave" d="M30 40 Q 40 20 30 0" fill="none" stroke="var(--rk-ozc-accent-cool)" stroke-width="4" stroke-linecap="round"></path>
                    <path class="anim-heat-wave" d="M50 40 Q 60 20 50 0" fill="none" stroke="var(--rk-ozc-accent-cool)" stroke-width="4" stroke-linecap="round" style="animation-delay: 0.5s;"></path>
                    <path class="anim-heat-wave" d="M70 40 Q 80 20 70 0" fill="none" stroke="var(--rk-ozc-accent-cool)" stroke-width="4" stroke-linecap="round" style="animation-delay: 1s;"></path>
                    <rect x="15" y="45" width="70" height="50" rx="4" fill="none" stroke="var(--rk-ozc-brand)" stroke-width="6"></rect>
                    <line x1="25" y1="45" x2="25" y2="95" stroke="var(--rk-ozc-brand)" stroke-width="4"></line>
                    <line x1="40" y1="45" x2="40" y2="95" stroke="var(--rk-ozc-brand)" stroke-width="4"></line>
                    <line x1="55" y1="45" x2="55" y2="95" stroke="var(--rk-ozc-brand)" stroke-width="4"></line>
                    <line x1="70" y1="45" x2="70" y2="95" stroke="var(--rk-ozc-brand)" stroke-width="4"></line>
                </svg>
            </div>
            <div class="rk-ozc-panel-text">
                <h3 style="color: var(--rk-ozc-brand-hover);">Przewymiarowanie emiterów ciepła</h3>
                <p>Z kolei na piętrze, opierając się na tym samym bilansie OZC, muszę dobrać wielkość fizyczną grzejnika płytowego do z góry założonego parametru zasilania <span class="rk-ozc-data-highlight">45°C</span> (a nie 75°C, jak przy starym kotle węglowym).</p>
                <p>Wymusza to na inwestorze zastosowanie wielkogabarytowych modeli trzypłytowych typu <span class="rk-ozc-data-highlight">C33</span> o długości nierzadko sięgającej 1600 mm. Tylko takie wytyczne z projektu chronią system przed niedogrzaniem poddasza i zapobiegają "wojnie" między termostatami, a pompą ładującą sprzęgło.</p>
            </div>
        </div>
    </div>

    <div class="rk-ozc-cta-box">
        <h3>Projekt instalacji dyktuje warunki gry na budowie</h3>
        <p>Brak profesjonalnej dokumentacji to gwarancja awarii i przepłacania za materiał. Zamów profesjonalny projekt wodnego ogrzewania podłogowego z obliczeniami OZC i analizą hydrauliczną. Zainwestuj w bezpieczeństwo, które zwraca się z każdym rachunkiem za prąd.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-cta">
            ZAMÓW PROJEKT PODŁOGÓWKI Z OZC
            <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 tabs = document.querySelectorAll('.rk-ozc-tab-btn');
    const panels = {
        'floor': document.getElementById('panel-floor'),
        'radiator': document.getElementById('panel-radiator')
    };

    tabs.forEach(function(tab) {
        tab.addEventListener('click', function() {
            // Czyszczenie klas aktywnych z przycisków
            tabs.forEach(function(t) {
                t.classList.remove('active');
            });
            
            // Nadanie klasy aktywnej klikniętemu przyciskowi
            this.classList.add('active');

            // Ukrycie wszystkich paneli
            panels['floor'].classList.remove('active');
            panels['radiator'].classList.remove('active');

            // Wyświetlenie odpowiedniego panelu na podstawie atrybutu (bez operatorów logicznych &&)
            const target = this.getAttribute('data-target');
            if (target === 'floor') {
                panels['floor'].classList.add('active');
            } else {
                panels['radiator'].classList.add('active');
            }
        });
    });
});
</script>



<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#article-case-study",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/"
    },
    "headline": "Studium Przypadku: Opanowanie chaosu w układzie mieszanym",
    "description": "Realny audyt instalacji hybrydowej. Diagnoza błędów wykonawczych, optymalizacja hydrauliczna i redukcja kosztów ogrzewania pompą ciepła z podłogówką i grzejnikami.",
    "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-04",
    "dateModified": "2026-07-04"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#dataset-audyt-dane",
    "name": "Parametry audytu energetycznego instalacji hybrydowej",
    "description": "Zestawienie parametrów pracy pompy ciepła przed i po interwencji inżynierskiej, wykazujące błędy braku sprzęgła hydraulicznego i złego doboru emiterów.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "pompa ciepła podłogówka i grzejniki schemat podłączenia",
      "dlaczego pompa ciepła taktuje przy podłogówce",
      "wymiana starych grzejników na v33",
      "jak obniżyć rachunki za pompę ciepła w starym domu",
      "opory przepływu ogrzewanie podłogowe a kaloryfery",
      "zawór trójdrogowy mieszający jak ustawić"
    ],
    "measurementTechnique": "Pomiary różnicy temperatur (Delta T) oraz cykli pracy sprężarki w czasie rzeczywistym przed modernizacją węzła cieplnego i po jego prawidłowym zbalansowaniu.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Stan Awaryjny: Taktowanie 40 razy na dobę, SCOP 2.4, zasilanie 55 stopni C, rachunek grudniowy 1850 PLN.",
        "Działania naprawcze: Montaż bufora 120L, grupy pompowej z mieszaczem, wymiana 3 grzejników V22 na C33.",
        "Stan Zoptymalizowany: Stabilna praca, krzywa zredukowana do 45 stopni C, SCOP 4.1, rachunek zredukowany o 45%."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#webapp-audyt-interaktywny",
    "name": "Przeglądarka Wyników Audytu Instalacji",
    "description": "Aplikacja typu przełącznik wizualizująca parametry techniczne instalatora amatora kontra standard inżynierski na konkretnym studium przypadku.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<style>
:root {
    --rk-cs-dark: #1e293b;
    --rk-cs-card: #ffffff;
    --rk-cs-bg: #f1f5f9;
    --rk-cs-border: #cbd5e1;
    --rk-cs-brand: #0284c7;
    --rk-cs-text: #334155;
    --rk-cs-danger: #ef4444;
    --rk-cs-success: #10b981;
    --rk-cs-warning: #f59e0b;
}

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

.rk-cs-header {
    background: linear-gradient(to right, var(--rk-cs-dark), #0f172a);
    padding: 35px 40px;
    color: #ffffff;
    position: relative;
}

.rk-cs-header-badge {
    position: absolute;
    top: 35px;
    right: 40px;
    background: rgba(255,255,255,0.1);
    border: 1px solid rgba(255,255,255,0.2);
    padding: 6px 12px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.rk-cs-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
    max-width: 80%;
}

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

.rk-cs-body {
    padding: 40px;
}

/* Storyteller / Opis sytuacji */
.rk-cs-story {
    background: var(--rk-cs-card);
    padding: 25px 30px;
    border-radius: 16px;
    border: 1px solid var(--rk-cs-border);
    margin-bottom: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-cs-story h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-cs-dark);
    margin: 0 0 10px 0;
}

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

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

/* Interaktywny Toggle (Before / After) */
.rk-cs-toggles {
    display: flex;
    gap: 0;
    background: #e2e8f0;
    border-radius: 12px;
    padding: 6px;
    margin-bottom: 30px;
}

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

.rk-cs-btn.active[data-state="before"] {
    background: var(--rk-cs-card);
    color: var(--rk-cs-danger);
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.rk-cs-btn.active[data-state="after"] {
    background: var(--rk-cs-card);
    color: var(--rk-cs-success);
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

/* Panel Danych */
.rk-cs-panel {
    display: none;
    animation: rkFadeIn 0.4s ease forwards;
}

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

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

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

.rk-cs-metric {
    background: var(--rk-cs-card);
    padding: 25px 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-cs-border);
    text-align: center;
    position: relative;
    overflow: hidden;
}

.rk-cs-metric::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; height: 4px;
}

.rk-cs-metric.danger::before { background: var(--rk-cs-danger); }
.rk-cs-metric.success::before { background: var(--rk-cs-success); }
.rk-cs-metric.warning::before { background: var(--rk-cs-warning); }

.rk-cs-metric-label {
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    color: #64748b;
    margin-bottom: 10px;
    letter-spacing: 0.5px;
}

.rk-cs-metric-val {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-cs-dark);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.rk-cs-metric-sub {
    font-size: 13px;
    color: var(--rk-cs-text);
    margin-top: 5px;
}

.rk-svg-indicator {
    width: 24px;
    height: 24px;
}

.anim-bounce { animation: rkBounce 2s infinite; }
@keyframes rkBounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-5px); } }

/* Diagnoza / Wnioski */
.rk-cs-insight {
    background: #ffffff;
    padding: 25px 30px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-cs-brand);
}

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

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

/* Mobile Responsive */
@media (max-width: 768px) {
    .rk-cs-header, .rk-cs-body { padding: 25px 20px; }
    .rk-cs-header h2 { max-width: 100%; font-size: 22px; }
    .rk-cs-header-badge { position: relative; top: 0; right: 0; display: inline-block; margin-bottom: 15px; }
    .rk-cs-toggles { flex-direction: column; }
    .rk-cs-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-cs-metric { padding: 20px; }
}
</style>

<div class="rk-cs-wrapper" id="rk-case-study">
    
    <div class="rk-cs-header">
        <div class="rk-cs-header-badge">Audyt Inżynierski</div>
        <h2>Studium przypadku: Opanowanie chaosu w układzie mieszanym</h2>
        <p>Gdy opory hydrauliczne spotykają się z brakiem dokumentacji, portfel inwestora zawsze przegrywa. Zobacz twarde dane z audytu przed i po interwencji naprawczej.</p>
    </div>

    <div class="rk-cs-body">
        
        <div class="rk-cs-story">
            <h3>Kontekst Inwestycji</h3>
            <p>Dom o powierzchni 150 m², zlokalizowany w górzystym terenie Podkarpacia, przechodził głęboką termomodernizację zimą 2025/2026 roku. Na piętrze pozostawiono stare grzejniki płytowe, na parterze wylano nową posadzkę z ogrzewaniem podłogowym. Instalator zamontował jednostkę o mocy 8 kW bez <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgła hydraulicznego</a>, wpinając obie strefy "na trójnikach" do wbudowanej pompy obiegowej.</p>
        </div>

        <div class="rk-cs-toggles">
            <button class="rk-cs-btn active" data-state="before">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                Stan Przed (Grudzień)
            </button>
            <button class="rk-cs-btn" data-state="after">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                Po Optymalizacji (Styczeń)
            </button>
        </div>

        <div class="rk-cs-panel active" id="panel-before">
            <div class="rk-cs-grid">
                <div class="rk-cs-metric danger">
                    <div class="rk-cs-metric-label">Cykle Sprężarki</div>
                    <div class="rk-cs-metric-val">
                        ~40 <svg class="rk-svg-indicator anim-bounce" style="color:var(--rk-cs-danger);" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="22 7 13.5 15.5 8.5 10.5 2 17"></polyline><polyline points="16 7 22 7 22 13"></polyline></svg>
                    </div>
                    <div class="rk-cs-metric-sub">Startów na dobę (Taktowanie)</div>
                </div>
                <div class="rk-cs-metric warning">
                    <div class="rk-cs-metric-label">Krzywa Grzewcza</div>
                    <div class="rk-cs-metric-val">55 °C</div>
                    <div class="rk-cs-metric-sub">Wymuszona starymi grzejnikami</div>
                </div>
                <div class="rk-cs-metric danger">
                    <div class="rk-cs-metric-label">Sprawność SCOP</div>
                    <div class="rk-cs-metric-val">2.4</div>
                    <div class="rk-cs-metric-sub">Dramatyczny spadek wydajności</div>
                </div>
            </div>
            
            <div class="rk-cs-insight" style="border-color: var(--rk-cs-danger);">
                <h4>Diagnoza błędów wykonawczych</h4>
                <p>Klasyczny przepływ zwarciowy. Woda z pompy natychmiast uciekała przez grzejniki (opór ok. 10 kPa), całkowicie ignorując długie pętle podłogówki (opór &gt;25 kPa). Jednostka odczytywała gorący powrót z kaloryferów, uznawała dom za dogrzany i wyłączała się po kilkunastu minutach pracy. Koszt miesięczny zimą dobił do 1850 PLN.</p>
            </div>
        </div>

        <div class="rk-cs-panel" id="panel-after">
            <div class="rk-cs-grid">
                <div class="rk-cs-metric success">
                    <div class="rk-cs-metric-label">Cykle Sprężarki</div>
                    <div class="rk-cs-metric-val">
                        ~6 <svg class="rk-svg-indicator anim-bounce" style="color:var(--rk-cs-success);" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="22 17 13.5 8.5 8.5 13.5 2 7"></polyline><polyline points="16 17 22 17 22 11"></polyline></svg>
                    </div>
                    <div class="rk-cs-metric-sub">Stabilne, długie takty</div>
                </div>
                <div class="rk-cs-metric success">
                    <div class="rk-cs-metric-label">Krzywa Grzewcza</div>
                    <div class="rk-cs-metric-val">45 °C</div>
                    <div class="rk-cs-metric-sub">Po wymianie emiterów</div>
                </div>
                <div class="rk-cs-metric success">
                    <div class="rk-cs-metric-label">Sprawność SCOP</div>
                    <div class="rk-cs-metric-val">4.1</div>
                    <div class="rk-cs-metric-sub">Wzrost efektywności o ponad 70%</div>
                </div>
            </div>
            
            <div class="rk-cs-insight" style="border-color: var(--rk-cs-success);">
                <h4>Wdrożenie standardu inżynierskiego</h4>
                <p>Na podstawie twardych obliczeń OZC wdrożono bufor o pojemności 120L pełniący rolę sprzęgła. Obwód podłogowy zabezpieczono <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zaworem mieszającym z siłownikiem</a>, gwarantującym stały zład 32°C na posadzkę. Z kolei trzy kluczowe grzejniki V22 wymieniono na przewymiarowane C33, co pozwoliło obniżyć maksymalną krzywą zasilania do 45°C (zamiast 55°C). Efekt? Stabilna praca układu i cięcie rachunków o połowę.</p>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-cs-btn');
    const panelBefore = document.getElementById('panel-before');
    const panelAfter = document.getElementById('panel-after');

    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Unikamy operatorów &&, używamy zmiennej logicznej
            let isActive = this.classList.contains('active');
            
            if (isActive === false) {
                // Wyczyszczenie aktywnych przycisków
                btns.forEach(function(b) {
                    b.classList.remove('active');
                });
                
                // Ukrycie wszystkich paneli
                panelBefore.classList.remove('active');
                panelAfter.classList.remove('active');

                // Aktywacja klikniętego elementu
                this.classList.add('active');
                let targetState = this.getAttribute('data-state');

                if (targetState === 'before') {
                    panelBefore.classList.add('active');
                } else if (targetState === 'after') {
                    panelAfter.classList.add('active');
                }
            }
        });
    });
});
</script>



<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#article-ekspert",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/"
    },
    "headline": "Zdaniem Roberta Kucharskiego: Ostateczny werdykt dla instalacji hybrydowych",
    "description": "Autorskie podsumowanie inżynierskie Roberta Kucharskiego dotyczące opłacalności i bezpieczeństwa łączenia ogrzewania podłogowego z grzejnikami przy pompie 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/",
      "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-04",
    "dateModified": "2026-07-04"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#dataset-ekspert-wnioski",
    "name": "Baza wiedzy eksperckiej - Wnioski instalacyjne",
    "description": "Zestawienie twardych wytycznych i rekomendacji inżynierskich dla inwestorów planujących układ hybrydowy.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "robert kucharski projekt ogrzewania",
      "ekspert ogrzewanie podłogowe opinie",
      "czy warto łączyć grzejniki z podłogówką",
      "autorytet hvac pompy ciepła",
      "projekt instalacji co wytyczne"
    ],
    "measurementTechnique": "Weryfikacja założeń projektowych na podstawie setek audytów OZC i zrealizowanych inwestycji na terenie całej Polski.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wniosek 1: W nowym domu instalacja mieszana to błąd. Wybieraj w 100% układ płaszczyznowy.",
        "Wniosek 2: Przy termomodernizacji sprzęgło hydrauliczne (bufor) i zawór mieszający to warunek sine qua non.",
        "Wniosek 3: Dokumentacja OZC jest jedynym zabezpieczeniem przed drastycznym przewymiarowaniem systemu i kosztami rzędu kilkunastu tysięcy złotych strat."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#webapp-panel-eksperta",
    "name": "Interaktywny Panel Ekspercki: Werdykt",
    "description": "Zakładkowy moduł podsumowujący treść artykułu z podziałem na diagnozę, zagrożenia i ostateczną rekomendację inżynierską dla inwestorów.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<style>
:root {
    --rk-exp-dark: #111827;
    --rk-exp-card: #ffffff;
    --rk-exp-bg: #f8fafc;
    --rk-exp-border: #e5e7eb;
    --rk-exp-brand: #0284c7;
    --rk-exp-text: #4b5563;
    --rk-exp-social: #1e293b;
}

.rk-exp-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: var(--rk-exp-card);
    border-radius: 20px;
    border: 1px solid var(--rk-exp-border);
    box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);
    overflow: hidden;
}

.rk-exp-header-bar {
    background: var(--rk-exp-dark);
    padding: 30px 40px;
}

.rk-exp-header-bar h2 {
    color: #ffffff;
    font-size: 24px;
    font-weight: 900;
    margin: 0;
    line-height: 1.3;
}

.rk-exp-grid {
    display: grid;
    grid-template-columns: 280px 1fr;
    background: var(--rk-exp-card);
}

/* Sekcja Profilu Eksperta */
.rk-exp-profile {
    background: var(--rk-exp-bg);
    padding: 40px 30px;
    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 6px 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-role {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 700;
    color: var(--rk-exp-brand);
    letter-spacing: 1px;
    margin: 0 0 20px 0;
}

.rk-exp-socials {
    display: flex;
    gap: 15px;
    width: 100%;
    justify-content: center;
}

.rk-exp-social-link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 10px;
    background: #ffffff;
    border: 1px solid var(--rk-exp-border);
    color: var(--rk-exp-social);
    text-decoration: none;
}

.rk-exp-social-link:hover {
    border-color: var(--rk-exp-brand);
    color: var(--rk-exp-brand);
    background: #f0f9ff;
}

/* Interaktywny Panel Treści (Brak animacji) */
.rk-exp-content {
    padding: 40px;
}

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

.rk-exp-tab-btn {
    background: transparent;
    border: none;
    padding: 10px 20px;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-exp-text);
    cursor: pointer;
    border-radius: 8px;
}

.rk-exp-tab-btn:hover {
    background: var(--rk-exp-bg);
}

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

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

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

.rk-exp-panel h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-exp-dark);
    margin: 0 0 15px 0;
}

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

.rk-exp-quote-box {
    padding: 20px 25px;
    background: #f0f9ff;
    border-left: 4px solid var(--rk-exp-brand);
    border-radius: 0 12px 12px 0;
    margin-top: 25px;
}

.rk-exp-quote-box p {
    margin: 0;
    font-weight: 600;
    color: var(--rk-exp-dark);
    font-style: italic;
}

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

<div class="rk-exp-container" id="rk-expert-summary">
    
    <div class="rk-exp-header-bar">
        <h2>Zdaniem Roberta Kucharskiego</h2>
    </div>

    <div class="rk-exp-grid">
        <div class="rk-exp-profile">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Projekt-Ogrzewania.pl" class="rk-exp-photo">
            <div class="rk-exp-name">Robert Kucharski</div>
            <div class="rk-exp-role">Specjalista HVAC / CEO</div>
            
            <div class="rk-exp-socials">
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" class="rk-exp-social-link" aria-label="LinkedIn Roberta Kucharskiego">
                    <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>
                <a href="https://www.facebook.com/projektogrzewaniapl/" target="_blank" class="rk-exp-social-link" aria-label="Oficjalny profil 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>
            </div>
        </div>

        <div class="rk-exp-content">
            <div class="rk-exp-tabs">
                <button class="rk-exp-tab-btn active" data-view="diagnoza">Główny Wniosek</button>
                <button class="rk-exp-tab-btn" data-view="zagrozenia">Fizyka Budowli</button>
                <button class="rk-exp-tab-btn" data-view="rekomendacja">Rekomendacja</button>
            </div>

            <div class="rk-exp-panels">
                
                <div class="rk-exp-panel active" id="panel-diagnoza">
                    <h3>Hybryda to ostateczność, nie standard</h3>
                    <p>Jako specjalista projektujący systemy płaszczyznowe stanowczo odradzam łączenie podłogówki z grzejnikami w nowym budownictwie. Każdy argument inwestora o "szybkim nagrzewaniu sypialni" upada w starciu z twardymi prawami termodynamiki i wskaźnikami rocznego SCOP pompy ciepła.</p>
                    <p>Układ mieszany ma sens ekonomiczny wyłącznie w przypadku skomplikowanych termomodernizacji starych domów, gdzie fizyczne usunięcie grzejników z piętra jest niemożliwe.</p>
                </div>

                <div class="rk-exp-panel" id="panel-zagrozenia">
                    <h3>Opory hydrauliczne nie wybaczają</h3>
                    <p>Największym błędem branży jest ignorowanie różnic w przepływach. Wpięcie strefy grzejnikowej (opór ~10 kPa) i podłogowej (opór &gt;25 kPa) bez zastosowania bufora równoległego gwarantuje zjawisko przepływu zwarciowego.</p>
                    <p>Zmuszając urządzenie niskotemperaturowe do pracy na krzywej rzędu 50°C, świadomie godzisz się na wzrost rachunków za prąd o kilkadziesiąt procent w skali roku i ryzykujesz błyskawiczne zatarcie sprężarki na skutek taktowania (short-cycling).</p>
                </div>

                <div class="rk-exp-panel" id="panel-rekomendacja">
                    <h3>Matematyka zamiast zgadywania</h3>
                    <p>Jeśli musisz wykonać instalację mieszaną, powierz ją profesjonalistom i nie opieraj się na "doświadczeniu montera". Węzeł cieplny musi posiadać sprzęgło (minimum 15 litrów zładu na 1 kW mocy pompy) oraz obrotowy zawór trójdrogowy redukujący temperaturę podłogi.</p>
                    <div class="rk-exp-quote-box">
                        <p>„Fundamentem sukcesu nie są drogie materiały, ale zaktualizowane obliczenia OZC zgodne z normą PN-EN 12831. To projekt dyktuje warunki gry na budowie, chroniąc Twój budżet.”</p>
                    </div>
                </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-exp-tab-btn');
    const panels = {
        'diagnoza': document.getElementById('panel-diagnoza'),
        'zagrozenia': document.getElementById('panel-zagrozenia'),
        'rekomendacja': document.getElementById('panel-rekomendacja')
    };

    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Bezpieczny przełącznik bez animacji i bez operatorów logicznych && / ||
            let isCurrentActive = this.classList.contains('active');
            
            if (isCurrentActive === false) {
                // Reset przycisków
                btns.forEach(function(b) {
                    b.classList.remove('active');
                });
                
                // Reset paneli
                panels['diagnoza'].classList.remove('active');
                panels['zagrozenia'].classList.remove('active');
                panels['rekomendacja'].classList.remove('active');

                // Aktywacja wybranych elementów
                this.classList.add('active');
                let targetId = this.getAttribute('data-view');
                
                if (targetId === 'diagnoza') { panels['diagnoza'].classList.add('active'); }
                else if (targetId === 'zagrozenia') { panels['zagrozenia'].classList.add('active'); }
                else if (targetId === 'rekomendacja') { panels['rekomendacja'].classList.add('active'); }
            }
        });
    });
});
</script>



<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/"
    },
    "headline": "FAQ - Pompa ciepła podłogówka i grzejniki",
    "description": "Najczęściej zadawane pytania techniczne dotyczące łączenia ogrzewania podłogowego z grzejnikami w systemach z pompą ciepła. Parametry, koszty i rozwiązania hydrauliczne.",
    "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-04",
    "dateModified": "2026-07-04"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy do pompy ciepła można podłączyć stare grzejniki bez ich wymiany?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, jest to technicznie wykonalne, ale bezwzględnie wymaga wykonania bilansu cieplnego OZC budynku, by sprawdzić, czy stare emiter oddadzą wystarczającą moc przy obniżonym parametrze (np. 45/35 stopni C). W ponad 70% starych domów w Polsce konieczna jest przynajmniej częściowa wymiana instalacji na konwektory trójpłytowe (V33) w celu niedopuszczenia do niedogrzania zimą."
        }
      },
      {
        "@type": "Question",
        "name": "Czy potrzebny jest bufor ciepła przy podłogówce i grzejnikach?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, w systemach mieszanych sprzęgło hydrauliczne lub bufor pełniący jego funkcję są elementami krytycznymi, chroniącymi przed awarią. Zrównoważenie diametralnie różnych oporów przepływu i temperatur między pętlami z wylewki a szybkimi kaloryferami bez bufora i osobnej grupy mieszającej doprowadzi do natychmiastowego taktowania i uszkodzenia kompresora."
        }
      },
      {
        "@type": "Question",
        "name": "Jakie są koszty eksploatacji systemu mieszanego w porównaniu do czystej podłogówki?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Ze względu na konieczność produkcji gorętszej wody (wyższa krzywa grzewcza rzędu 45-50 stopni C narzucona przez grzejniki), rachunki za energię elektryczną przy pompie ciepła rosną. Roczne koszty eksploatacyjne układu hybrydowego mogą być wyższe o 15% do nawet 30% w porównaniu do 100% instalacji płaszczyznowych, które osiągają wyższy współczynnik efektywności SCOP."
        }
      },
      {
        "@type": "Question",
        "name": "Jaka temperatura zasilania jest bezpieczna dla układu mieszanego?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Inteligentna automatyka powinna kierować z jednostki zewnętrznej wodę o temperaturze ok. 45 stopni C prosto na rozdzielacz strefy grzejnikowej oraz do bufora. Z poziomu kotłowni, za pomocą obrotowego zaworu z siłownikiem mieszającym (grupa pompowa), woda ta musi zostać podbramkowo zredukowana do bezpiecznych 30-35 stopni C przed wtłoczeniem jej w rury zatopione w jastrychu na parterze."
        }
      },
      {
        "@type": "Question",
        "name": "Jak dobrać pompę obiegową dla podłogówki w układzie, gdzie są też kaloryfery?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Dobór osobnej pompy za buforem musi opierać się wyłącznie na oporach najdłuższej pętli (często powyżej 20 kPa) i wyliczonym sumarycznym przepływie masowym dla strefy parteru. Pompa obiegowa w jednostce głównej odpowiada wtedy wyłącznie za wtłoczenie energii przez krótki, niskoporowy odcinek wprost do zładu w buforze, co rozwiązuje konflikty hydrauliczne."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#dataset-faq-parametry",
    "name": "Baza wiedzy rozwiązywania problemów hybrydowych (FAQ)",
    "description": "Zestawienie parametrów krytycznych (temperatury, opory, dobór elementów) dla instalacji mieszanej ogrzewania.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "czy można podłączyć stare grzejniki do pompy ciepła",
      "jakie grzejniki do pompy ciepła w starym domu",
      "pojemność bufora do pompy ciepła z grzejnikami",
      "różnica w kosztach ogrzewania podłogówka a grzejniki",
      "maksymalna temperatura na ogrzewanie podłogowe",
      "taktowanie pompy ciepła przyczyny",
      "jak dobrać pompę obiegową do podłogówki",
      "wymiana grzejników przy pompie ciepła"
    ],
    "measurementTechnique": "Rozwiązywanie problemów instalacyjnych w oparciu o analizę bilansu OZC, oporów hydraulicznych i zaleceń producentów pomp ciepła.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Temperatury graniczne: 45°C dla grzejników typu V33, max 35°C dla jastrychu podłogowego.",
        "Komponenty krytyczne: Sprzęgło hydrauliczne (bufor) chroniące kompresor, obrotowy zawór mieszający z siłownikiem.",
        "Wpływ na koszty: Układ mieszany generuje 15-30% wyższe koszty operacyjne względem systemu czysto płaszczyznowego."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#webapp-faq-interaktywne",
    "name": "Baza Wiedzy Inwestora: Interaktywne FAQ",
    "description": "Dynamiczny widget akordeonowy pozwalający inwestorom na przeglądanie krytycznych różnic technologicznych w instalacjach mieszanych bez zbędnego obciążenia poznawczego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-card: #ffffff;
    --rk-faq-border: #e2e8f0;
    --rk-faq-blue: #0284c7;
    --rk-faq-blue-light: #f0f9ff;
    --rk-faq-text: #475569;
    --rk-faq-title: #1e293b;
    --rk-faq-hover: #f8fafc;
}

.rk-faq-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: transparent;
}

.rk-faq-header {
    display: flex;
    align-items: center;
    gap: 20px;
    margin-bottom: 30px;
    padding-bottom: 20px;
    border-bottom: 2px solid var(--rk-faq-blue);
}

.rk-faq-header-icon {
    width: 60px;
    height: 60px;
    background: var(--rk-faq-blue-light);
    border-radius: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-faq-blue);
    flex-shrink: 0;
}

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

.rk-faq-header-content p {
    margin: 5px 0 0 0;
    font-size: 15px;
    color: var(--rk-faq-text);
}

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

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

.rk-faq-item:hover {
    border-color: #cbd5e1;
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}

.rk-faq-btn {
    width: 100%;
    text-align: left;
    padding: 24px 30px;
    background: transparent;
    border: none;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
    transition: background 0.3s ease;
}

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

.rk-faq-btn h3 {
    margin: 0;
    font-size: 18px;
    font-weight: 700;
    color: var(--rk-faq-title);
    line-height: 1.4;
}

.rk-faq-icon-svg {
    flex-shrink: 0;
    width: 24px;
    height: 24px;
    color: var(--rk-faq-blue);
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq-btn.active .rk-faq-icon-svg {
    transform: rotate(135deg);
    color: #ef4444; /* Czerwony kolor przy zamykaniu dla kontrastu */
}

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

.rk-faq-panel-content {
    padding: 0 30px 30px 30px;
    border-top: 1px dashed var(--rk-faq-border);
    margin-top: -10px;
    padding-top: 25px;
}

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

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

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

/* Dostosowanie dla urządzeń mobilnych (Vertical Stack) */
@media (max-width: 768px) {
    .rk-faq-container { margin: 20px auto; }
    .rk-faq-header { flex-direction: column; text-align: center; gap: 15px; }
    .rk-faq-btn { padding: 20px; }
    .rk-faq-btn h3 { font-size: 16px; }
    .rk-faq-panel-content { padding: 0 20px 25px 20px; }
}
</style>

<div class="rk-faq-container" id="rk-interactive-faq">
    <div class="rk-faq-header">
        <div class="rk-faq-header-icon">
            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                <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>
        <div class="rk-faq-header-content">
            <h2>FAQ - Pompa ciepła, podłogówka i grzejniki</h2>
            <p>Baza wiedzy inwestora. Kliknij wybrane pytanie, aby rozwinąć odpowiedź techniczną.</p>
        </div>
    </div>

    <div class="rk-faq-wrapper">
        <div class="rk-faq-item">
            <button class="rk-faq-btn">
                <h3>Czy do pompy ciepła można podłączyć stare grzejniki bez ich wymiany?</h3>
                <svg class="rk-faq-icon-svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" 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>
            </button>
            <div class="rk-faq-panel">
                <div class="rk-faq-panel-content">
                    <p>Tak, jest to technicznie wykonalne, ale bezwzględnie wymaga wykonania bilansu cieplnego <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">OZC budynku</a>, by sprawdzić, czy stare emiter oddadzą wystarczającą moc przy obniżonym parametrze (np. 45/35°C). W ponad 70% starych domów w Polsce konieczna jest przynajmniej częściowa wymiana instalacji na konwektory trójpłytowe (V33) w celu niedopuszczenia do niedogrzania zimą.</p>
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-btn">
                <h3>Czy potrzebny jest bufor ciepła przy podłogówce i grzejnikach?</h3>
                <svg class="rk-faq-icon-svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" 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>
            </button>
            <div class="rk-faq-panel">
                <div class="rk-faq-panel-content">
                    <p>Tak, w systemach mieszanych <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgło hydrauliczne</a> lub bufor pełniący jego funkcję są elementami krytycznymi, chroniącymi przed awarią. Zrównoważenie diametralnie różnych oporów przepływu i temperatur między pętlami z wylewki a szybkimi kaloryferami bez bufora i osobnej grupy mieszającej doprowadzi do natychmiastowego taktowania i uszkodzenia kompresora.</p>
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-btn">
                <h3>Jakie są koszty eksploatacji systemu mieszanego w porównaniu do czystej podłogówki?</h3>
                <svg class="rk-faq-icon-svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" 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>
            </button>
            <div class="rk-faq-panel">
                <div class="rk-faq-panel-content">
                    <p>Ze względu na konieczność produkcji gorętszej wody (wyższa krzywa grzewcza rzędu 45-50°C narzucona przez grzejniki), <a href="https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m%c2%b2/">rachunki za energię elektryczną</a> przy pompie ciepła rosną. Roczne koszty eksploatacyjne układu hybrydowego mogą być wyższe o 15% do nawet 30% w porównaniu do 100% instalacji płaszczyznowych, które osiągają wyższy współczynnik efektywności SCOP.</p>
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-btn">
                <h3>Jaka temperatura zasilania jest bezpieczna dla układu mieszanego?</h3>
                <svg class="rk-faq-icon-svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" 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>
            </button>
            <div class="rk-faq-panel">
                <div class="rk-faq-panel-content">
                    <p>Inteligentna automatyka powinna kierować z jednostki zewnętrznej wodę o temperaturze ok. 45°C prosto na rozdzielacz strefy grzejnikowej oraz do bufora. Z poziomu kotłowni, za pomocą obrotowego zaworu z siłownikiem mieszającym (grupa pompowa), woda ta musi zostać podbramkowo zredukowana do bezpiecznej <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalnej temperatury zasilania podłogówki</a> (ok. 30-35°C) przed wtłoczeniem jej w rury zatopione w jastrychu na parterze.</p>
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-btn">
                <h3>Jak dobrać pompę obiegową dla podłogówki w układzie, gdzie są też kaloryfery?</h3>
                <svg class="rk-faq-icon-svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" 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>
            </button>
            <div class="rk-faq-panel">
                <div class="rk-faq-panel-content">
                    <p>Dobór <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">osobnej pompy obiegowej</a> za buforem musi opierać się wyłącznie na oporach najdłuższej pętli (często powyżej 20 kPa) i wyliczonym sumarycznym przepływie masowym dla strefy parteru. Pompa obiegowa w jednostce głównej odpowiada wtedy wyłącznie za wtłoczenie energii przez krótki, niskoporowy odcinek wprost do zładu w buforze, co rozwiązuje konflikty hydrauliczne.</p>
                </div>
            </div>
        </div>
    </div>
</div>

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

    faqButtons.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Sprawdzenie stanu aktualnie klikniętego elementu (bez użycia operatorów &&)
            let isAlreadyActive = this.classList.contains('active');

            // Zamykanie wszystkich otwartych paneli
            faqButtons.forEach(function(otherBtn) {
                otherBtn.classList.remove('active');
                let otherPanel = otherBtn.nextElementSibling;
                otherPanel.style.maxHeight = null;
            });

            // Jeśli element nie był aktywny wcześniej, otwieramy go
            if (!isAlreadyActive) {
                this.classList.add('active');
                let panel = this.nextElementSibling;
                panel.style.maxHeight = panel.scrollHeight + "px";
            }
        });
    });
});
</script>



<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/"
    },
    "headline": "Podsumowanie: Hybrydowy system grzewczy – jak uniknąć katastrofy",
    "description": "Interaktywne podsumowanie zasad łączenia ogrzewania podłogowego z grzejnikami przy użyciu pompy ciepła. Zobacz kluczowe różnice między układem profesjonalnym a amatorskim.",
    "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-04",
    "dateModified": "2026-07-04"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#dataset-uklad-mieszany",
    "name": "Parametry hydrauliczne i termiczne układu mieszanego z pompą ciepła",
    "description": "Zestawienie twardych danych porównujących instalację hybrydową zlokalizowaną bezpośrednio na jednej pompie obiegowej do instalacji buforowanej przez sprzęgło hydrauliczne.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "podłogówka i grzejniki jedna pompa",
      "bufor ciepła w układzie mieszanym",
      "temperatura zasilania podłogówki",
      "taktowanie pompy ciepła",
      "zawór trójdrogowy mieszający z siłownikiem"
    ],
    "measurementTechnique": "Analiza spadków ciśnień i efektywności SCOP pompy ciepła na podstawie normy PN-EN 12831 i wytycznych PORT PC dla systemów biwalentnych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Układ Bezpośredni: SCOP poniżej 2.8, wysokie ryzyko taktowania (short-cycling), przepływ zwarciowy przez mniejsze opory grzejników.",
        "Układ z Buforem i Podmieszaniem: SCOP stabilny na poziomie 3.5 - 4.5, zład wody zbalansowany, temperatura bezpieczna dla jastrychu (max 35 stopni Celsjusza)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#webapp-symulator-hydrauliczny",
    "name": "Wizualizator Przepływów: System Hybrydowy",
    "description": "Interaktywne narzędzie przełącznikowe pokazujące ścieżkę krytyczną czynnika grzewczego w instalacjach hybrydowych (grzejniki + płaszczyzna) dla domów jednorodzinnych.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<style>
:root {
    --rk-base-dark: #111827;
    --rk-base-light: #f9fafb;
    --rk-accent-blue: #0ea5e9;
    --rk-accent-blue-hover: #0284c7;
    --rk-accent-green: #059669;
    --rk-accent-red: #dc2626;
    --rk-border: #e5e7eb;
    --rk-text-main: #374151;
    --rk-text-muted: #6b7280;
}

.rk-summary-block {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 20px 40px -15px rgba(14, 165, 233, 0.1);
    border: 1px solid var(--rk-accent-blue);
    overflow: hidden;
}

.rk-summary-header {
    background: var(--rk-base-dark);
    padding: 40px 30px;
    color: #ffffff;
    text-align: center;
    border-bottom: 4px solid var(--rk-accent-blue);
}

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

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

/* Interfejs Przełącznika */
.rk-interactive-zone {
    padding: 40px 30px;
    background: var(--rk-base-light);
}

.rk-toggle-controls {
    display: flex;
    justify-content: center;
    gap: 15px;
    margin-bottom: 30px;
    background: #ffffff;
    padding: 10px;
    border-radius: 100px;
    border: 1px solid var(--rk-border);
    max-width: 600px;
    margin-left: auto;
    margin-right: auto;
}

.rk-toggle-btn {
    flex: 1;
    padding: 14px 20px;
    border: none;
    background: transparent;
    border-radius: 100px;
    font-weight: 700;
    font-size: 15px;
    color: var(--rk-text-muted);
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.rk-toggle-btn.active[data-type="error"] {
    background: #fee2e2;
    color: var(--rk-accent-red);
    box-shadow: 0 4px 10px rgba(220, 38, 38, 0.15);
}

.rk-toggle-btn.active[data-type="pro"] {
    background: #d1fae5;
    color: var(--rk-accent-green);
    box-shadow: 0 4px 10px rgba(5, 150, 105, 0.15);
}

/* Widok dynamiczny */
.rk-view-container {
    background: #ffffff;
    border: 1px solid var(--rk-border);
    border-radius: 16px;
    padding: 30px;
    display: flex;
    gap: 30px;
    align-items: center;
    min-height: 250px;
}

.rk-view-graphic {
    flex: 0 0 120px;
    display: flex;
    justify-content: center;
}

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

.rk-view-content h3 {
    margin: 0 0 15px 0;
    font-size: 22px;
    font-weight: 800;
}

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

.rk-data-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.rk-data-list li {
    position: relative;
    padding-left: 25px;
    margin-bottom: 10px;
    font-size: 14px;
    font-weight: 600;
    color: var(--rk-base-dark);
}

.rk-data-list li::before {
    content: "→";
    position: absolute;
    left: 0;
    color: var(--rk-accent-blue);
    font-weight: bold;
}

/* Tagi SEO */
.rk-tags-section {
    padding: 20px 30px;
    background: #ffffff;
    border-top: 1px dashed var(--rk-border);
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: center;
}

.rk-mat-tag {
    background: var(--rk-base-light);
    border: 1px solid var(--rk-border);
    color: var(--rk-accent-blue);
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.5px;
    transition: background 0.2s;
}

.rk-mat-tag:hover {
    background: #e0f2fe;
}

/* Animacje SVG */
.rk-svg-icon {
    width: 100%;
    height: auto;
    max-width: 100px;
}

.anim-gear { transform-origin: center; animation: spinGear 4s linear infinite; }
.anim-alert { transform-origin: center; animation: pulseAlert 1.5s ease-in-out infinite; }

@keyframes spinGear { 100% { transform: rotate(360deg); } }
@keyframes pulseAlert { 0% { transform: scale(1); opacity: 0.8; } 50% { transform: scale(1.1); opacity: 1; } 100% { transform: scale(1); opacity: 0.8; } }

/* Mobile CSS - układ pionowy (akordeonowy przepływ) */
@media (max-width: 768px) {
    .rk-summary-header { padding: 30px 20px; }
    .rk-summary-header h2 { font-size: 22px; }
    .rk-interactive-zone { padding: 20px; }
    .rk-toggle-controls { flex-direction: column; border-radius: 16px; gap: 5px; background: transparent; border: none; }
    .rk-toggle-btn { border-radius: 12px; border: 1px solid var(--rk-border); background: #ffffff; }
    .rk-view-container { flex-direction: column; text-align: center; padding: 20px; gap: 20px; }
    .rk-data-list li { text-align: left; }
}
</style>

<div class="rk-summary-block" id="rk-hybrid-summary">
    <div class="rk-summary-header">
        <h2>Podsumowanie: Pompa ciepła, podłogówka i grzejniki w jednym układzie</h2>
        <p>Instalacja mieszana to bezlitosny sprawdzian dla instalatora. Zignorowanie praw hydrauliki i fizyki budowli skutkuje natychmiastowym taktowaniem sprężarki i drastycznym wzrostem rachunków za prąd.</p>
    </div>

    <div class="rk-interactive-zone">
        <div class="rk-toggle-controls" id="rkToggleBox">
            <button class="rk-toggle-btn active" data-type="error">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg>
                Układ Bezpośredni (Amatorski)
            </button>
            <button class="rk-toggle-btn" data-type="pro">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                Układ z Buforem (Inżynierski)
            </button>
        </div>

        <div class="rk-view-container" id="rkViewContent">
            </div>
    </div>

    <div class="rk-tags-section">
        <span class="rk-mat-tag"># pompa ciepła podłogówka i grzejniki schemat</span>
        <span class="rk-mat-tag"># jaka temperatura na grzejniki z pompy ciepła</span>
        <span class="rk-mat-tag"># sprzęgło hydrauliczne a bufor ciepła</span>
        <span class="rk-mat-tag"># taktowanie pompy ciepła przyczyny</span>
        <span class="rk-mat-tag"># zawór trójdrogowy mieszający zasada działania</span>
        <span class="rk-mat-tag"># sprawność SCOP układu mieszanego</span>
        <span class="rk-mat-tag"># dobór pompy obiegowej za buforem</span>
        <span class="rk-mat-tag"># krzywa grzewcza dla grzejników i podłogówki</span>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const toggleBtns = document.querySelectorAll('.rk-toggle-btn');
    const viewContainer = document.getElementById('rkViewContent');

    const contentData = {
        error: `
            <div class="rk-view-graphic">
                <svg class="rk-svg-icon" viewBox="0 0 100 100">
                    <circle cx="50" cy="50" r="45" fill="none" stroke="var(--rk-accent-red)" stroke-width="5" stroke-dasharray="10 5" class="anim-alert"/>
                    <path d="M50 25 L50 60 M50 75 L50 80" stroke="var(--rk-accent-red)" stroke-width="6" stroke-linecap="round"/>
                </svg>
            </div>
            <div class="rk-view-content">
                <h3 style="color: var(--rk-accent-red);">Błąd Krytyczny: Brak zrównoważenia oporów</h3>
                <p>Wpięcie strefy grzejnikowej i podłogowej na jednej pompie zasilającej to wyrok dla kompresora. Ciecz płynie po linii najmniejszego oporu (przez mały zład grzejników), całkowicie ignorując długie pętle zatopione w jastrychu.</p>
                <ul class="rk-data-list">
                    <li>Zjawisko "short-cyclingu" (taktowanie) – pompa włącza się i wyłącza co 10 minut.</li>
                    <li>Niedogrzany parter mimo maksymalnego poboru prądu.</li>
                    <li>Ryzyko podania zbyt wysokiej temperatury na wylewkę anhydrytową.</li>
                </ul>
            </div>
        `,
        pro: `
            <div class="rk-view-graphic">
                <svg class="rk-svg-icon" viewBox="0 0 100 100">
                    <circle cx="50" cy="50" r="40" fill="none" stroke="var(--rk-accent-green)" stroke-width="5" />
                    <path d="M50 20 L50 40 M50 60 L50 80 M20 50 L40 50 M60 50 L80 50" stroke="var(--rk-accent-green)" stroke-width="4" class="anim-gear" stroke-linecap="round"/>
                    <circle cx="50" cy="50" r="10" fill="var(--rk-accent-green)" />
                </svg>
            </div>
            <div class="rk-view-content">
                <h3 style="color: var(--rk-accent-green);">Standard Inżynierski: Rozdział przez Bufor</h3>
                <p>Kluczem do niezawodności jest <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" style="color: var(--rk-accent-blue); font-weight:700;">zastosowanie bufora ciepła</a> jako sprzęgła hydraulicznego. Pompa ładuje zład wodny, a niezależne <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/" style="color: var(--rk-accent-blue); font-weight:700;">pompy obiegowe</a> dystrybuują odpowiednie wartości do swoich stref.</p>
                <ul class="rk-data-list">
                    <li><a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/" style="color: inherit;">Zawór mieszający z siłownikiem</a> precyzyjnie redukuje zasilanie na podłogę.</li>
                    <li><a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/" style="color: inherit;">Krzywa grzewcza</a> ustawiona stabilnie dla najwyższego parametru (grzejniki).</li>
                    <li>Pełny przepływ i stały odbiór ciepła podczas odszraniania (defrost).</li>
                </ul>
            </div>
        `
    };

    // Inicjalizacja domyślnego widoku
    viewContainer.innerHTML = contentData.error;

    // Obsługa kliknięć (bezpieczny JS, brak zagrażających znaków logicznych)
    toggleBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Reset klas
            toggleBtns.forEach(function(b) {
                b.classList.remove('active');
            });
            
            // Aktywacja wciśniętego
            this.classList.add('active');
            
            // Wstrzyknięcie odpowiedniej treści z użyciem bezpiecznych warunków if/else
            const type = this.getAttribute('data-type');
            if (type === 'pro') {
                viewContainer.innerHTML = contentData.pro;
            } else {
                viewContainer.innerHTML = contentData.error;
            }
        });
    });
});
</script>



<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/#article-infografika",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/"
    },
    "headline": "Kompendium Wiedzy: Infografika i Schemat Węzła Cieplnego",
    "description": "Pobierz darmową infografikę z parametrami projektowymi i schematem łączenia ogrzewania podłogowego z grzejnikami przy pompie ciepła. Plik PDF wysokiej rozdzielczości.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/07/Infografika-Pompa-ciepla-podlogowka-i-grzejniki.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-07-04",
    "dateModified": "2026-07-04"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/#dataset-schemat-pdf",
    "name": "Wizualny schemat hybrydowego węzła cieplnego",
    "description": "Zestawienie twardych danych projektowych, oporów hydraulicznych i zaleceń VDI 4650 skompresowane do formy graficznej infografiki.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "schemat podłączenia pompy ciepła do bufora",
      "pompa ciepła podłogówka i grzejniki schemat",
      "bufor ciepła w instalacji mieszanej pdf",
      "infografika ogrzewanie podłogowe parametry",
      "robert kucharski materiały do pobrania"
    ],
    "measurementTechnique": "Agregacja parametrów technicznych (ΔT, SCOP, zład wody) w postaci wizualnych tabel decyzyjnych oraz schematu blokowego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Sekcja 1: Uzasadnienie stosowania układu mieszanego i obiegów wtórnych.",
        "Sekcja 2: Tabela porównawcza emiterów ciepła i ich wpływu na współczynnik SCOP pompy ciepła.",
        "Sekcja 3: Techniczny schemat hydrauliczny (Pompa -> Bufor -> Grupa Mieszająca / Obieg Bezpośredni)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/#webapp-repozytorium",
    "name": "Moduł Repozytorium Plików Technicznych",
    "description": "Statyczny interfejs pozwalający na bezpieczne wywołanie podglądu schematu w wysokiej rozdzielczości oraz pobranie pliku PDF na urządzenie użytkownika.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<style>
:root {
    --rk-dl-dark: #111827;
    --rk-dl-surface: #f8fafc;
    --rk-dl-card: #ffffff;
    --rk-dl-border: #cbd5e1;
    --rk-dl-brand: #0284c7;
    --rk-dl-text: #475569;
    --rk-dl-accent: #facc15;
}

.rk-dl-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: var(--rk-dl-card);
    border: 2px solid var(--rk-dl-dark);
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
}

.rk-dl-header {
    background: var(--rk-dl-dark);
    padding: 25px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-dl-brand);
}

.rk-dl-header h2 {
    font-size: 24px;
    font-weight: 900;
    margin: 0 0 10px 0;
    color: #ffffff;
    line-height: 1.3;
}

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

.rk-dl-body {
    display: grid;
    grid-template-columns: 350px 1fr;
    background: var(--rk-dl-card);
}

/* Sekcja Miniatury (Lewa strona) */
.rk-dl-preview-box {
    padding: 35px;
    background: var(--rk-dl-surface);
    border-right: 1px solid var(--rk-dl-border);
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-dl-thumbnail-wrapper {
    width: 100%;
    position: relative;
    border: 1px solid var(--rk-dl-border);
    border-radius: 8px;
    overflow: hidden;
    background: #ffffff;
    cursor: pointer;
}

.rk-dl-img {
    width: 100%;
    height: auto;
    display: block;
}

.rk-dl-zoom-overlay {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(15, 23, 42, 0.6);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity 0.2s;
}

.rk-dl-thumbnail-wrapper:hover .rk-dl-zoom-overlay {
    opacity: 1;
}

.rk-dl-zoom-icon {
    color: #ffffff;
    width: 40px;
    height: 40px;
}

.rk-dl-preview-hint {
    margin-top: 15px;
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-dl-text);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Sekcja Akcji (Prawa strona) */
.rk-dl-actions-box {
    padding: 35px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-dl-desc {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-dl-text);
    margin: 0 0 30px 0;
}

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

.rk-dl-btn {
    display: flex;
    align-items: center;
    gap: 15px;
    padding: 18px 25px;
    border-radius: 12px;
    text-decoration: none;
    font-weight: 800;
    font-size: 16px;
    transition: background 0.2s, border-color 0.2s;
}

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

.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-dark);
}

.rk-dl-btn-secondary:hover {
    background: var(--rk-dl-surface);
}

.rk-dl-btn-icon {
    width: 24px;
    height: 24px;
    flex-shrink: 0;
}

.rk-dl-file-info {
    display: flex;
    flex-direction: column;
}

.rk-dl-file-size {
    font-size: 12px;
    font-weight: 500;
    opacity: 0.8;
    margin-top: 2px;
}

/* Prawa autorskie */
.rk-dl-copyright {
    margin-top: auto;
    padding: 20px;
    background: #fffbeb;
    border-left: 4px solid var(--rk-dl-accent);
    border-radius: 0 8px 8px 0;
    font-size: 13px;
    line-height: 1.6;
    color: var(--rk-dl-dark);
    font-weight: 500;
}

.rk-dl-copyright strong {
    font-weight: 800;
}

/* Lightbox Modal (Statyczny podgląd) */
.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;
    align-items: center;
    justify-content: center;
    padding: 20px;
}

.rk-dl-modal-content {
    position: relative;
    max-width: 1000px;
    width: 100%;
    max-height: 90vh;
}

.rk-dl-modal-img {
    width: 100%;
    height: auto;
    max-height: 90vh;
    object-fit: contain;
    border: 4px solid #ffffff;
    border-radius: 8px;
}

.rk-dl-modal-close {
    position: absolute;
    top: -40px;
    right: 0;
    background: transparent;
    border: none;
    color: #ffffff;
    font-size: 16px;
    font-weight: 800;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 8px;
}

/* Mobile Responsive */
@media (max-width: 768px) {
    .rk-dl-header { padding: 25px 20px; }
    .rk-dl-body { grid-template-columns: 1fr; }
    .rk-dl-preview-box { border-right: none; border-bottom: 1px solid var(--rk-dl-border); padding: 25px 20px; }
    .rk-dl-actions-box { padding: 25px 20px; }
    .rk-dl-btn { flex-direction: column; text-align: center; gap: 10px; padding: 15px; }
}
</style>

<div class="rk-dl-container" id="rk-download-hub">
    
    <div class="rk-dl-header">
        <h2>Kompendium Wiedzy: Schemat Węzła i Parametry</h2>
        <p>Materiały techniczne przygotowane na podstawie normy PN-EN 12831 oraz standardów VDI 4650.</p>
    </div>

    <div class="rk-dl-body">
        
        <div class="rk-dl-preview-box">
            <div class="rk-dl-thumbnail-wrapper" id="rk-btn-preview">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/07/Infografika-Pompa-ciepla-podlogowka-i-grzejniki.webp" alt="Infografika: Pompa ciepła, podłogówka i grzejniki - Projekt Ogrzewania" class="rk-dl-img">
                <div class="rk-dl-zoom-overlay">
                    <svg class="rk-dl-zoom-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="11" y1="8" x2="11" y2="14"></line><line x1="8" y1="11" x2="14" y2="11"></line></svg>
                </div>
            </div>
            <div class="rk-dl-preview-hint">Kliknij, aby powiększyć</div>
        </div>

        <div class="rk-dl-actions-box">
            <p class="rk-dl-desc">
                Zebrałem wszystkie najważniejsze parametry instalacji hybrydowej w jednym miejscu. Infografika zawiera czytelny schemat podłączenia bufora, porównanie emiterów ciepła oraz listę krytycznych błędów instalacyjnych, których musisz unikać.
            </p>

            <div class="rk-dl-buttons">
                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/07/Infografika-Pompa-ciepla-podlogowka-i-grzejniki.pdf" target="_blank" class="rk-dl-btn rk-dl-btn-primary">
                    <svg class="rk-dl-btn-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="12" y1="18" x2="12" y2="12"></line><line x1="9" y1="15" x2="12" y2="18"></line><line x1="15" y1="15" x2="12" y2="18"></line></svg>
                    <div class="rk-dl-file-info">
                        <span>Pobierz dokument PDF</span>
                        <span class="rk-dl-file-size">Wysoka rozdzielczość do druku</span>
                    </div>
                </a>

                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/07/Infografika-Pompa-ciepla-podlogowka-i-grzejniki.webp" target="_blank" download class="rk-dl-btn rk-dl-btn-secondary">
                    <svg class="rk-dl-btn-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline></svg>
                    <div class="rk-dl-file-info">
                        <span>Zapisz obraz na dysk</span>
                        <span class="rk-dl-file-size">Format WebP (Szybkie ładowanie)</span>
                    </div>
                </a>
            </div>

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

    </div>
</div>

<div class="rk-dl-modal" id="rk-modal-overlay">
    <div class="rk-dl-modal-content">
        <button class="rk-dl-modal-close" id="rk-btn-close">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
            Zamknij podgląd
        </button>
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/07/Infografika-Pompa-ciepla-podlogowka-i-grzejniki.webp" alt="Powiększenie - Infografika" class="rk-dl-modal-img">
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btnPreview = document.getElementById('rk-btn-preview');
    const btnClose = document.getElementById('rk-btn-close');
    const modal = document.getElementById('rk-modal-overlay');

    // Bezpieczna logika otwierania (bez operatorów logicznych)
    btnPreview.addEventListener('click', function() {
        modal.style.display = 'flex';
        document.body.style.overflow = 'hidden'; // Blokada przewijania strony
    });

    // Bezpieczna logika zamykania na przycisk
    btnClose.addEventListener('click', function() {
        modal.style.display = 'none';
        document.body.style.overflow = '';
    });

    // Zamknięcie po kliknięciu w tło (overlay)
    modal.addEventListener('click', function(e) {
        let isOverlayClicked = (e.target === modal);
        if (isOverlayClicked === true) {
            modal.style.display = 'none';
            document.body.style.overflow = '';
        }
    });
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/">Pompa ciepła, podłogówka i grzejniki.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Projektowe Obciążenie Cieplne (OZC).</title>
		<link>https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 15 Feb 2026 12:02:50 +0000</pubDate>
				<category><![CDATA[Efektywność cieplna]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Efektywność ogrzewania]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[OZC]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[efektywność pompy ciepła]]></category>
		<category><![CDATA[instalacja co projekt]]></category>
		<category><![CDATA[normy pn en 12831]]></category>
		<category><![CDATA[obliczenia ozc]]></category>
		<category><![CDATA[ogrzewanie podłogowe parametry]]></category>
		<category><![CDATA[ogrzewanie podłogowe projekt]]></category>
		<category><![CDATA[ozc]]></category>
		<category><![CDATA[pompa ciepła projekt]]></category>
		<category><![CDATA[projekt instalacji grzewczej]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[projektowe obciążenie cieplne]]></category>
		<category><![CDATA[rozstaw rur podłogówki]]></category>
		<category><![CDATA[straty ciepła]]></category>
		<category><![CDATA[strumień ciepła podłogówka]]></category>
		<category><![CDATA[zapotrzebowanie na ciepło]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3460</guid>

					<description><![CDATA[<p>Wiele instalacji grzewczych powstaje na podstawie przybliżeń, a nie rzeczywistych danych, co prowadzi do wysokich rachunków i problemów z komfortem cieplnym. Tymczasem Projektowe Obciążenie Cieplne (OZC) to kluczowy element, który pozwala precyzyjnie określić, ile energii potrzebuje Twój dom, aby utrzymać komfort nawet podczas największych mrozów. Od tej wartości zależy dobór rozstawu rur, temperatura zasilania oraz efektywność pompy ciepła. W tym artykule pokazujemy krok po kroku, jak OZC wpływa na projekt ogrzewania podłogowego i dlaczego jego prawidłowe obliczenie decyduje o trwałości, oszczędności i niezawodności całego systemu.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">Projektowe Obciążenie Cieplne (OZC).</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-blue: #0284c7;
    --rk-intro-blue-light: #e0f2fe;
    --rk-intro-green: #059669;
    --rk-intro-green-bg: #ecfdf5;
    --rk-intro-red: #dc2626;
    --rk-intro-red-bg: #fef2f2;
    --rk-intro-gold: #d97706;
    --rk-intro-gold-bg: #fffbeb;
    --rk-intro-gray: #64748b;
    --rk-intro-border: #cbd5e1;
    --rk-intro-bg: #ffffff;
}

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

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

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

.rk-intro-title {
    font-size: 32px;
    font-weight: 900;
    line-height: 1.25;
    margin: 0 0 20px 0;
    color: #ffffff;
}

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

/* Typografia Wstępu */
.rk-intro-lead {
    font-size: 17px;
    line-height: 1.8;
    color: #e2e8f0;
    margin: 0;
    font-weight: 400;
}

.rk-intro-lead strong {
    color: #ffffff;
    font-weight: 800;
    background: rgba(2, 132, 199, 0.4);
    padding: 2px 6px;
    border-radius: 4px;
}

.rk-intro-link {
    color: #7dd3fc;
    text-decoration: none;
    border-bottom: 1px dashed #7dd3fc;
    transition: all 0.3s;
}

.rk-intro-link:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

/* Symulator Interaktywny */
.rk-intro-interactive {
    padding: 45px 50px;
    background: #f8fafc;
}

.rk-intro-section-title {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-intro-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

/* Przełącznik */
.rk-switcher-box {
    display: flex;
    justify-content: center;
    margin-bottom: 40px;
}

.rk-app-toggle {
    background: #e2e8f0;
    border-radius: 99px;
    padding: 6px;
    display: inline-flex;
    position: relative;
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.06);
    width: 100%;
    max-width: 550px;
}

.rk-toggle-btn {
    flex: 1;
    position: relative;
    z-index: 2;
    padding: 14px 20px;
    font-size: 15px;
    font-weight: 800;
    border: none;
    background: transparent;
    color: #64748b;
    cursor: pointer;
    border-radius: 99px;
    transition: color 0.3s ease;
    text-align: center;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

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

.rk-toggle-glider {
    position: absolute;
    top: 6px;
    left: 6px;
    height: calc(100% - 12px);
    width: calc(50% - 6px);
    background: var(--rk-intro-red);
    border-radius: 99px;
    transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), background-color 0.4s ease;
    box-shadow: 0 4px 10px -2px rgba(0,0,0,0.15);
    z-index: 1;
}

.rk-app-toggle[data-mode="pro"] .rk-toggle-glider {
    transform: translateX(100%);
    background: var(--rk-intro-green);
}

/* Dashboard Wyników */
.rk-dashboard {
    background: #ffffff;
    border-radius: 20px;
    border: 2px solid var(--rk-intro-border);
    padding: 35px;
    display: grid;
    grid-template-columns: 180px 1fr;
    gap: 40px;
    align-items: center;
    transition: all 0.4s ease;
}

.rk-dashboard.mode-amateur {
    border-color: var(--rk-intro-red-bg);
    box-shadow: 0 15px 35px -10px rgba(220, 38, 38, 0.12);
}

.rk-dashboard.mode-pro {
    border-color: var(--rk-intro-green-bg);
    box-shadow: 0 15px 35px -10px rgba(5, 150, 105, 0.12);
}

/* SVG Animacje */
.rk-svg-stage {
    width: 100%;
    max-width: 180px;
    margin: 0 auto;
    background: var(--rk-intro-dark);
    border-radius: 16px;
    padding: 20px;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
    position: relative;
    overflow: hidden;
}

.rk-svg-stage svg {
    width: 100%;
    height: auto;
    display: block;
}

/* Animacje wspólne i specyficzne */
.anim-house { transition: fill 0.5s; }
.anim-thermometer-fill { transform-origin: bottom; transition: transform 1s cubic-bezier(0.4, 0, 0.2, 1), fill 0.5s; }
.anim-coin { opacity: 0; transition: opacity 0.3s, transform 0.5s; }

.mode-amateur .anim-house { fill: #334155; }
.mode-amateur .anim-thermometer-fill { transform: scaleY(0.3); fill: var(--rk-intro-blue); }
.mode-amateur .anim-coin { animation: coinDrop 1.5s infinite linear; }
.mode-amateur .anim-coin:nth-child(2) { animation-delay: 0.5s; }
.mode-amateur .anim-coin:nth-child(3) { animation-delay: 1s; }

.mode-pro .anim-house { fill: #1e293b; stroke: var(--rk-intro-green); stroke-width: 2; animation: shieldPulse 2s infinite alternate; }
.mode-pro .anim-thermometer-fill { transform: scaleY(0.85); fill: var(--rk-intro-green); }
.mode-pro .anim-coin { opacity: 1; transform: translateY(0); fill: var(--rk-intro-gold); }

@keyframes coinDrop {
    0% { opacity: 0; transform: translateY(-20px); fill: #ef4444; }
    20% { opacity: 1; }
    80% { opacity: 1; }
    100% { opacity: 0; transform: translateY(30px); fill: #ef4444; }
}

@keyframes shieldPulse {
    0% { filter: drop-shadow(0 0 0 rgba(5, 150, 105, 0)); }
    100% { filter: drop-shadow(0 0 10px rgba(5, 150, 105, 0.4)); }
}

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

.rk-tile {
    background: #f1f5f9;
    padding: 20px;
    border-radius: 16px;
    border-left: 4px solid transparent;
    transition: all 0.3s ease;
}

.mode-amateur .rk-tile { border-left-color: var(--rk-intro-red); background: var(--rk-intro-red-bg); }
.mode-pro .rk-tile { border-left-color: var(--rk-intro-green); background: var(--rk-intro-green-bg); }

.rk-tile-label {
    display: block;
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: #64748b;
    margin-bottom: 6px;
}

.rk-tile-value {
    display: block;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-intro-dark);
}

.rk-tile-sub {
    display: block;
    font-size: 13px;
    color: #94a3b8;
    margin-top: 4px;
    font-weight: 500;
}

@media (max-width: 768px) {
    .rk-intro-header, .rk-intro-interactive { padding: 35px 25px; }
    .rk-intro-title { font-size: 26px; }
    .rk-dashboard { grid-template-columns: 1fr; text-align: center; padding: 25px; gap: 25px; }
    .rk-svg-stage { max-width: 140px; margin-bottom: 10px; }
    .rk-data-grid { grid-template-columns: 1fr; gap: 12px; }
    .rk-toggle-btn { padding: 12px 10px; font-size: 13px; flex-direction: column; gap: 4px; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Projektowe Obciążenie Cieplne (OZC) – Fundament Inwestycji",
    "description": "Czym jest Projektowe Obciążenie Cieplne (OZC) wg normy PN-EN 12831? Zobacz, dlaczego ten parametr decyduje o kosztach pompy ciepła i bezawaryjności podłogówki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-wstep",
    "name": "Porównanie metod doboru mocy grzewczej budynku",
    "description": "Zestawienie ryzyk i kosztów związanych z doborem instalacji grzewczej szacunkowo ('na oko') w kontraście do rzetelnych inżynierskich obliczeń normatywnych OZC.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowe obciążenie cieplne ozc",
      "norma PN-EN 12831",
      "moc pompy ciepła",
      "rozstaw rur podłogówki",
      "koszty eksploatacji budynku"
    ],
    "measurementTechnique": "Analiza wpływu precyzyjnych obliczeń strat ciepła na redukcję przewymiarowania źródła ciepła oraz optymalizację kosztów operacyjnych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Dobór na oko (szacunkowy): Zwiększa koszty inwestycyjne przez zakup zbyt dużej pompy ciepła oraz podnosi rachunki za prąd z powodu taktowania.",
        "Obliczenia OZC (PN-EN 12831): Optymalizują moc urządzenia, gwarantując najniższe koszty i komfort nawet podczas skrajnych mrozów."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-wstep",
    "name": "Symulator Wpływu OZC na Inwestycję",
    "description": "Interaktywny widżet demonstracyjny obrazujący konsekwencje finansowe i techniczne pominięcia obliczeń Projektowego Obciążenia Cieplnego (OZC) podczas budowy.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA
=========================================== -->
<div class="rk-intro-container" id="rk-ozc-intro-app">
    <!-- Wstęp Merytoryczny -->
    <div class="rk-intro-header">
        <div class="rk-intro-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg>
            Fundament Instalacji
        </div>
        <h2 class="rk-intro-title">Projektowe Obciążenie Cieplne <span>(OZC)</span></h2>
        <p class="rk-intro-lead">
            To kluczowy parametr inżynieryjny definiowany przez <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" class="rk-intro-link">normę PN-EN 12831</a>, określający maksymalną ilość energii cieplnej, jaką należy dostarczyć do budynku w ciągu sekundy (wyrażaną w watach lub kilowatach), aby utrzymać zadaną temperaturę wewnętrzną podczas skrajnie niskich temperatur zewnętrznych.
            <br><br>
            Prawidłowo obliczone <strong>OZC stanowi absolutny fundament projektowania</strong> systemów grzewczych. To ono decyduje o mocy <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-intro-link">pompy ciepła</a>, dokładnym <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-intro-link">rozstawie rur ogrzewania podłogowego</a> oraz rzeczywistych kosztach eksploatacji budynku przez dziesięciolecia.
        </p>
    </div>

    <!-- Symulator Interaktywny -->
    <div class="rk-intro-interactive">
        <h3 class="rk-intro-section-title">Dlaczego ignorowanie OZC to najdroższy błąd inwestora?</h3>
        
        <div class="rk-switcher-box">
            <div class="rk-app-toggle" id="introSwitchContainer" data-mode="amateur">
                <div class="rk-toggle-glider" id="introGlider"></div>
                <button class="rk-toggle-btn active" data-target="amateur">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                    Dobór &#8222;Na oko&#8221;
                </button>
                <button class="rk-toggle-btn" data-target="pro">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    Projekt OZC (PN-EN)
                </button>
            </div>
        </div>

        <div class="rk-dashboard mode-amateur" id="introDashboard">
            <div class="rk-svg-stage">
                <!-- SVG: Dom + Termometr + Pieniądze -->
                <svg viewBox="0 0 100 100">
                    <!-- Dom -->
                    <path class="anim-house" d="M 10 50 L 50 15 L 90 50 L 90 90 L 10 90 Z" fill="#334155" />
                    <rect x="40" y="60" width="20" height="30" fill="#0f172a" />
                    <!-- Termometr -->
                    <rect x="20" y="30" width="8" height="40" rx="4" fill="#1e293b" />
                    <circle cx="24" cy="70" r="8" fill="#1e293b" />
                    <rect class="anim-thermometer-fill" x="22" y="32" width="4" height="38" rx="2" />
                    <circle cx="24" cy="70" r="5" class="anim-thermometer-fill" />
                    <!-- Pieniądze / Utrata -->
                    <circle class="anim-coin" cx="75" cy="40" r="4" />
                    <circle class="anim-coin" cx="80" cy="55" r="4" />
                    <circle class="anim-coin" cx="70" cy="70" r="4" />
                </svg>
            </div>
            
            <div class="rk-data-grid">
                <div class="rk-tile">
                    <span class="rk-tile-label" id="dynLbl1">Koszty inwestycyjne</span>
                    <span class="rk-tile-value" id="dynVal1">Drastycznie zawyżone</span>
                    <span class="rk-tile-sub" id="dynSub1">Przewymiarowana pompa ciepła</span>
                </div>
                <div class="rk-tile">
                    <span class="rk-tile-label" id="dynLbl2">Ryzyko w czasie mrozów</span>
                    <span class="rk-tile-value" id="dynVal2">Niedogrzanie budynku</span>
                    <span class="rk-tile-sub" id="dynSub2">Zbyt rzadki rozstaw rur</span>
                </div>
                <div class="rk-tile">
                    <span class="rk-tile-label" id="dynLbl3">Zużycie prądu</span>
                    <span class="rk-tile-value" id="dynVal3">Wysokie (Taktowanie)</span>
                    <span class="rk-tile-sub" id="dynSub3">Sprężarka pracuje skokowo</span>
                </div>
                <div class="rk-tile">
                    <span class="rk-tile-label" id="dynLbl4">Bezpieczeństwo</span>
                    <span class="rk-tile-value" id="dynVal4">Loteria wykonawcza</span>
                    <span class="rk-tile-sub" id="dynSub4">Brak twardych danych</span>
                </div>
            </div>
        </div>
    </div>
</div>

<!-- ==========================================
     LOGIKA JS I ZABEZPIECZENIE (DOMAIN LOCK)
=========================================== -->
<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez H2/H3 w strukturze błędu)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-ozc-intro-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 36px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Naruszenie Praw Autorskich</div>
                    <div style="font-size: 14px; color: #cbd5e1; max-width: 500px; margin: 0 auto; line-height: 1.6;">
                        Kontener edukacyjny oraz struktura JSON-LD są własnością serwisu Projekt-Ogrzewania.pl. Wykryto próbę kradzieży kodu na nieautoryzowanej domenie.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora (Przełącznik)
    const switchContainer = document.getElementById('introSwitchContainer');
    const btns = switchContainer.querySelectorAll('.rk-toggle-btn');
    const dashboard = document.getElementById('introDashboard');
    
    // Elementy DOM do podmiany tekstu
    const v1 = document.getElementById('dynVal1'); const s1 = document.getElementById('dynSub1');
    const v2 = document.getElementById('dynVal2'); const s2 = document.getElementById('dynSub2');
    const v3 = document.getElementById('dynVal3'); const s3 = document.getElementById('dynSub3');
    const v4 = document.getElementById('dynVal4'); const s4 = document.getElementById('dynSub4');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Animacja przełącznika
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const targetMode = this.getAttribute('data-target');
            switchContainer.setAttribute('data-mode', targetMode);

            // Aktualizacja treści i klas kontenera SVG/Dashboardu
            if (targetMode === 'pro') {
                dashboard.className = 'rk-dashboard mode-pro';
                
                v1.textContent = "Zoptymalizowane"; v1.style.color = "var(--rk-intro-green)";
                s1.textContent = "Idealnie dobrana moc PC";
                
                v2.textContent = "Pełny komfort cieplny"; v2.style.color = "var(--rk-intro-green)";
                s2.textContent = "Rozstaw obliczony matematycznie";
                
                v3.textContent = "Minimalne (Wysokie COP)"; v3.style.color = "var(--rk-intro-green)";
                s3.textContent = "Stabilna praca inwertera";
                
                v4.textContent = "100% Gwarancji"; v4.style.color = "var(--rk-intro-green)";
                s4.textContent = "Instalacja oparta na fizyce";

            } else {
                dashboard.className = 'rk-dashboard mode-amateur';
                
                v1.textContent = "Drastycznie zawyżone"; v1.style.color = "var(--rk-intro-dark)";
                s1.textContent = "Przewymiarowana pompa ciepła";
                
                v2.textContent = "Niedogrzanie budynku"; v2.style.color = "var(--rk-intro-dark)";
                s2.textContent = "Zbyt rzadki rozstaw rur";
                
                v3.textContent = "Wysokie (Taktowanie)"; v3.style.color = "var(--rk-intro-dark)";
                s3.textContent = "Sprężarka pracuje skokowo";
                
                v4.textContent = "Loteria wykonawcza"; v4.style.color = "var(--rk-intro-dark)";
                s4.textContent = "Brak twardych danych";
            }
        });
    });
});
</script>



<style>
:root {
    --rk-tsim-dark: #0f172a;
    --rk-tsim-panel: #1e293b;
    --rk-tsim-blue: #0284c7;
    --rk-tsim-blue-light: #38bdf8;
    --rk-tsim-frost: #bae6fd;
    --rk-tsim-red: #ef4444;
    --rk-tsim-orange: #f97316;
    --rk-tsim-green: #10b981;
    --rk-tsim-bg: #ffffff;
    --rk-tsim-border: #e2e8f0;
}

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

/* Sekcja Nagłówkowa */
.rk-tsim-header {
    background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
    padding: 45px 50px 35px;
    color: #f8fafc;
    position: relative;
    border-bottom: 4px solid var(--rk-tsim-blue);
}

.rk-tsim-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(56, 189, 248, 0.15);
    color: var(--rk-tsim-blue-light);
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(56, 189, 248, 0.3);
}

.rk-tsim-header h2 {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-tsim-header h2 span { color: var(--rk-tsim-red); }

.rk-tsim-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
}

.rk-tsim-lead strong {
    color: #ffffff;
    background: rgba(2, 132, 199, 0.4);
    padding: 2px 6px;
    border-radius: 4px;
}

/* Interaktywny Obszar z Suwakiem */
.rk-tsim-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

/* Wybór systemu (Radio Tabs) */
.rk-tsim-tabs {
    display: flex;
    background: #e2e8f0;
    border-radius: 12px;
    padding: 6px;
    margin-bottom: 30px;
    position: relative;
}

.rk-tsim-tab {
    flex: 1;
    text-align: center;
    padding: 14px 10px;
    font-size: 14px;
    font-weight: 800;
    color: #64748b;
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.3s;
    z-index: 2;
}

.rk-tsim-tab.active {
    color: #ffffff;
}

.rk-tsim-tab-glider {
    position: absolute;
    top: 6px;
    bottom: 6px;
    width: calc(50% - 6px);
    background: var(--rk-tsim-red);
    border-radius: 8px;
    transition: transform 0.4s cubic-bezier(0.25, 1, 0.5, 1), background 0.4s;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);
    z-index: 1;
}

.rk-tsim-tabs[data-active="pro"] .rk-tsim-tab-glider {
    transform: translateX(100%);
    background: var(--rk-tsim-green);
}

/* Panel Kontrolny - Suwak Mrozu */
.rk-tsim-control-box {
    background: #ffffff;
    border: 1px solid var(--rk-tsim-border);
    border-radius: 20px;
    padding: 30px;
    margin-bottom: 30px;
    box-shadow: 0 10px 20px -5px rgba(0,0,0,0.03);
    text-align: center;
}

.rk-tsim-temp-display {
    font-size: 42px;
    font-weight: 900;
    color: var(--rk-tsim-dark);
    font-variant-numeric: tabular-nums;
    margin-bottom: 15px;
    transition: color 0.3s;
}

.rk-tsim-slider-wrapper {
    position: relative;
    padding: 20px 0;
}

input[type=range].rk-tsim-slider {
    -webkit-appearance: none;
    width: 100%;
    background: transparent;
    cursor: pointer;
}

input[type=range].rk-tsim-slider:focus { outline: none; }

/* Track */
input[type=range].rk-tsim-slider::-webkit-slider-runnable-track {
    width: 100%;
    height: 12px;
    background: linear-gradient(to right, #0284c7 0%, #38bdf8 30%, #e2e8f0 50%, #f97316 100%);
    border-radius: 99px;
    border: 1px solid #cbd5e1;
}

/* Thumb */
input[type=range].rk-tsim-slider::-webkit-slider-thumb {
    height: 32px;
    width: 32px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--rk-tsim-dark);
    -webkit-appearance: none;
    margin-top: -11px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}
input[type=range].rk-tsim-slider::-webkit-slider-thumb:active { transform: scale(1.1); }

/* Dashboard z wynikami */
.rk-tsim-dashboard {
    display: grid;
    grid-template-columns: 200px 1fr;
    gap: 30px;
    align-items: stretch;
}

.rk-tsim-svg-panel {
    background: var(--rk-tsim-panel);
    border-radius: 16px;
    padding: 25px;
    position: relative;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.rk-tsim-svg { width: 100%; max-width: 150px; height: auto; }

/* Animacje SVG zależne od suwaka i trybu */
.anim-floor { transition: fill 0.5s; }
.anim-snow { opacity: 0; transition: opacity 0.5s; }
.anim-pump { transition: transform 0.3s, fill 0.3s; }
.anim-error { opacity: 0; transform: scale(0); transition: all 0.3s; }

/* Dynamika nadawana przez JS klasami */
.env-cold .anim-snow { opacity: 1; animation: fallSnow 2s linear infinite; }
@keyframes fallSnow { 0% { transform: translateY(-10px); } 100% { transform: translateY(20px); opacity: 0; } }

.sys-fail .anim-floor { fill: #64748b !important; }
.sys-fail .anim-pump { fill: var(--rk-tsim-red); animation: shakePump 0.15s infinite; }
.sys-fail .anim-error { opacity: 1; transform: scale(1); }

.sys-ok .anim-floor { fill: var(--rk-tsim-orange); }
.sys-ok .anim-pump { fill: var(--rk-tsim-green); animation: pulsePump 2s infinite alternate; }

@keyframes shakePump { 0% { transform: translateX(-2px); } 100% { transform: translateX(2px); } }
@keyframes pulsePump { 0% { filter: drop-shadow(0 0 2px #10b981); } 100% { filter: drop-shadow(0 0 10px #10b981); } }

/* Parametry textowe */
.rk-tsim-stats {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-tsim-stat-box {
    background: #ffffff;
    border: 1px solid var(--rk-tsim-border);
    padding: 20px;
    border-radius: 14px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    transition: all 0.3s;
}

.rk-stat-label {
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    color: #64748b;
    margin-bottom: 8px;
}

.rk-stat-value {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-tsim-dark);
}

.val-danger { color: var(--rk-tsim-red) !important; }
.val-success { color: var(--rk-tsim-green) !important; }
.val-cold { color: var(--rk-tsim-blue) !important; }

@media (max-width: 768px) {
    .rk-tsim-header, .rk-tsim-interactive { padding: 30px 20px; }
    .rk-tsim-title { font-size: 24px; }
    .rk-tsim-dashboard { grid-template-columns: 1fr; gap: 20px; }
    .rk-tsim-stats { grid-template-columns: 1fr; }
    .rk-tsim-svg-panel { padding: 40px 20px; }
    .rk-tsim-temp-display { font-size: 36px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Koszty metody \"na oko\" w nowoczesnym budownictwie",
    "description": "Budowa domu jednorodzinnego lub modernizacja starego obiektu to proces pełen kosztownych pułapek. Zobacz, jak brak OZC niszczy pompę ciepła i domowy budżet.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-mrozy",
    "name": "Parametry Pracy Pomp Ciepła podczas Ekstremalnych Mrozów",
    "description": "Zestawienie spadku temperatury wewnętrznej i ryzyka taktowania sprężarki w funkcji temperatury zewnętrznej dla układów przewymiarowanych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "taktowanie pompy ciepła awaria",
      "przewymiarowana pompa ciepła mrozy",
      "niedogrzane pomieszczenia ogrzewanie podłogowe",
      "ucieczka watów straty ciepła",
      "przelicznik 50 W/m2 błędy"
    ],
    "measurementTechnique": "Symulacja wydajności instalacji przy spadku temperatury zewnętrznej od +10°C do -22°C.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Metoda 'na oko': Przy -15°C i poniżej ujawniają się mostki termiczne, podłoga nie przekazuje ciepła, temperatura wewnątrz spada do 16°C.",
        "Projekt OZC: Precyzyjny dobór pętli kompensuje miejscowe straty ciepła, utrzymując stałe 20°C bez nadwyrężania kompresora."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-mrozy",
    "name": "Symulator Ekstremalnych Mrozów",
    "description": "Narzędzie interaktywne pozwalające użytkownikowi symulować spadek temperatury zewnętrznej i obserwować zjawisko taktowania pompy ciepła.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 Range Input and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-tsim-container" id="rk-tsim-app">
    
    <div class="rk-tsim-header">
        <div class="rk-tsim-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Krytyczny Błąd Inwestycyjny
        </div>
        <h2>Koszty metody &#8222;na oko&#8221; <span>a zima stulecia</span></h2>
        <p class="rk-tsim-lead">
            Budowa domu jednorodzinnego lub modernizacja starego obiektu to proces pełen kosztownych pułapek, w którym intuicja i potoczne metody „na oko” (np. przelicznik <strong>50 W/m²</strong>) nieuchronnie prowadzą do katastrofy finansowej i technologicznej.
            <br><br>
            Inwestorzy masowo zmagają się z problemem niedogrzanych pomieszczeń w okresie strefowych mrozów sięgających <strong>-22°C</strong>, bądź stają przed faktem drastycznego przewymiarowania pomp ciepła. Urządzenia te, wchodząc w tzw. taktowanie (zbyt częste cykle pracy sprężarki), ulegają awarii po zaledwie 3–4 latach eksploatacji, generując przy tym gigantyczne rachunki za energię elektryczną. Brak precyzyjnej wiedzy o tym, ile watów energii ucieka przez konkretną ścianę, strop, okno czy system wentylacji, paraliżuje jakikolwiek proces decyzyjny i skazuje instalację płaszczyznową na losową i nieefektywną pracę.
        </p>
    </div>

    <div class="rk-tsim-interactive">
        
        <div class="rk-tsim-tabs" id="tsimTabs" data-active="amateur">
            <div class="rk-tsim-tab-glider" id="tsimGlider"></div>
            <div class="rk-tsim-tab active" data-type="amateur">Przelicznik &#8222;Na oko&#8221;</div>
            <div class="rk-tsim-tab" data-type="pro">Precyzyjne OZC</div>
        </div>

        <div class="rk-tsim-control-box">
            <h3 style="margin:0 0 10px 0; font-size:14px; color:#64748b; text-transform:uppercase; letter-spacing:1px;">Temperatura Zewnętrzna</h3>
            <div class="rk-tsim-temp-display" id="tsimTempDisplay">0°C</div>
            <div class="rk-tsim-slider-wrapper">
                <input type="range" min="-22" max="10" value="0" class="rk-tsim-slider" id="tsimSlider">
            </div>
            <p style="margin:10px 0 0 0; font-size:13px; color:#94a3b8;">Przesuń suwak w lewo, aby symulować mróz.</p>
        </div>

        <div class="rk-tsim-dashboard">
            
            <div class="rk-tsim-svg-panel" id="tsimSvgPanel">
                <svg class="rk-tsim-svg" viewBox="0 0 100 100">
                    <circle class="anim-snow" cx="20" cy="10" r="1.5" fill="#ffffff" />
                    <circle class="anim-snow" cx="50" cy="5" r="2" fill="#ffffff" style="animation-delay: 0.5s;" />
                    <circle class="anim-snow" cx="80" cy="15" r="1.5" fill="#ffffff" style="animation-delay: 1s;" />
                    
                    <path d="M 10 50 L 50 15 L 90 50 L 90 90 L 10 90 Z" fill="#334155" stroke="#475569" stroke-width="2"/>
                    <path class="anim-floor" d="M 15 80 L 85 80 L 85 85 L 15 85 Z" fill="#f97316" />
                    
                    <rect class="anim-pump" x="65" y="65" width="25" height="25" rx="3" fill="#10b981" />
                    <circle cx="77.5" cy="77.5" r="7" fill="#1e293b" opacity="0.5"/>
                    
                    <path class="anim-error" d="M 65 55 L 75 40 L 85 55 Z" fill="#ef4444" />
                    <text class="anim-error" x="73" y="52" fill="#ffffff" font-size="10" font-weight="bold">!</text>
                </svg>
            </div>

            <div class="rk-tsim-stats">
                <div class="rk-tsim-stat-box">
                    <span class="rk-stat-label">Temperatura wewnątrz</span>
                    <span class="rk-stat-value" id="valInsideTemp">20°C (Komfort)</span>
                </div>
                <div class="rk-tsim-stat-box">
                    <span class="rk-stat-label">Stan Sprężarki (Pompa)</span>
                    <span class="rk-stat-value" id="valCompressor">Stabilna praca</span>
                </div>
                <div class="rk-tsim-stat-box">
                    <span class="rk-stat-label">Koszty energii</span>
                    <span class="rk-stat-value" id="valEnergy">W normie</span>
                </div>
                <div class="rk-tsim-stat-box">
                    <span class="rk-stat-label">Wydajność ogrzewania</span>
                    <span class="rk-stat-value" id="valStatus">Poprawna</span>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez H2/H3 w strukturze błędu)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-tsim-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // 2. Elementy DOM
    const slider = document.getElementById('tsimSlider');
    const tempDisplay = document.getElementById('tsimTempDisplay');
    const tabs = document.querySelectorAll('.rk-tsim-tab');
    const tabsContainer = document.getElementById('tsimTabs');
    const svgPanel = document.getElementById('tsimSvgPanel');
    
    // Pola tekstowe
    const valInsideTemp = document.getElementById('valInsideTemp');
    const valCompressor = document.getElementById('valCompressor');
    const valEnergy = document.getElementById('valEnergy');
    const valStatus = document.getElementById('valStatus');

    let currentMode = 'amateur';

    // 3. Obsługa zakładek (Tryb Systemu)
    tabs.forEach(tab => {
        tab.addEventListener('click', () => {
            tabs.forEach(t => t.classList.remove('active'));
            tab.classList.add('active');
            currentMode = tab.getAttribute('data-type');
            tabsContainer.setAttribute('data-active', currentMode);
            updateSimulation();
        });
    });

    // 4. Obsługa Suwaka
    slider.addEventListener('input', updateSimulation);

    // 5. Silnik Symulacji
    function updateSimulation() {
        const outTemp = parseInt(slider.value);
        
        // Zmiana sposobu budowania stringów, aby uniknąć błędów parsera z backtickami w niektórych edytorach
        tempDisplay.textContent = outTemp > 0 ? "+" + outTemp + "°C" : outTemp + "°C";
        
        if (outTemp <= -10) {
            tempDisplay.style.color = 'var(--rk-tsim-blue)';
            svgPanel.classList.add('env-cold');
        } else {
            tempDisplay.style.color = 'var(--rk-tsim-dark)';
            svgPanel.classList.remove('env-cold');
        }

        // Reset klas SVG
        svgPanel.classList.remove('sys-ok', 'sys-fail');

        if (currentMode === 'pro') {
            // TRYB: Projekt OZC
            svgPanel.classList.add('sys-ok');
            
            valInsideTemp.textContent = '20°C (Stała)';
            valInsideTemp.className = 'rk-stat-value val-success';
            
            valCompressor.textContent = 'Ciągła, inwerterowa';
            valCompressor.className = 'rk-stat-value val-success';
            
            valEnergy.textContent = 'Zoptymalizowane';
            valEnergy.className = 'rk-stat-value';

            if (outTemp <= -15) {
                valStatus.textContent = 'Kompensacja strat idealna';
            } else {
                valStatus.textContent = 'Wysokie COP pompy';
            }
            valStatus.className = 'rk-stat-value val-success';

        } else {
            // TRYB: Amator "Na Oko"
            if (outTemp > 0) {
                // Ciepło - urządzenie przewymiarowane taktuje, ale grzeje
                svgPanel.classList.add('sys-fail');
                valInsideTemp.textContent = '22°C (Przegrzewanie)';
                valInsideTemp.className = 'rk-stat-value val-danger';
                
                valCompressor.textContent = 'Częste taktowanie!';
                valCompressor.className = 'rk-stat-value val-danger';
                
                valEnergy.textContent = '+30% (Rozruchy)';
                valEnergy.className = 'rk-stat-value val-danger';
                
                valStatus.textContent = 'Bezwładność układu';
                valStatus.className = 'rk-stat-value';
                
            } else if (outTemp > -10) {
                // Lekki mróz - zaczynają się problemy
                svgPanel.classList.add('sys-fail');
                valInsideTemp.textContent = '19°C (Niestabilna)';
                valInsideTemp.className = 'rk-stat-value';
                
                valCompressor.textContent = 'Agresywne taktowanie';
                valCompressor.className = 'rk-stat-value val-danger';
                
                valEnergy.textContent = '+40% (Wysoki prąd)';
                valEnergy.className = 'rk-stat-value val-danger';
                
                valStatus.textContent = 'Zaburzone przepływy';
                valStatus.className = 'rk-stat-value val-danger';

            } else {
                // Silny mróz - katastrofa, podłoga nie daje rady, pompa wchodzi w tryb awaryjny lub grzałki
                svgPanel.classList.add('sys-fail');
                const dropTemp = 19 + Math.floor(outTemp / 5); // Spadek temp
                
                // Zwykła konkatenacja unikająca backticków
                valInsideTemp.textContent = dropTemp + "°C (Niedogrzanie)";
                valInsideTemp.className = 'rk-stat-value val-cold';
                
                valCompressor.textContent = 'Ryzyko uszkodzenia!';
                valCompressor.className = 'rk-stat-value val-danger';
                
                valEnergy.textContent = 'Ogromne (Praca grzałek)';
                valEnergy.className = 'rk-stat-value val-danger';
                
                valStatus.textContent = 'Brak mocy przekazu';
                valStatus.className = 'rk-stat-value val-danger';
            }
        }
    }

    // Inicjalizacja startowa
    updateSimulation();
});
</script>



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



<style>
:root {
    --rk-core-dark: #0f172a;
    --rk-core-brand: #0284c7;
    --rk-core-accent: #0ea5e9;
    --rk-core-bg: #ffffff;
    --rk-core-panel: #f8fafc;
    --rk-core-border: #cbd5e1;
    --rk-core-text: #334155;
    --rk-core-green: #059669;
    --rk-core-green-bg: #ecfdf5;
    --rk-core-amber: #d97706;
    --rk-core-amber-bg: #fffbeb;
}

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

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

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

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

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

.rk-core-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
}

.rk-core-lead strong {
    color: #ffffff;
    font-weight: 800;
}

.rk-core-lead a {
    color: #7dd3fc;
    text-decoration: none;
    border-bottom: 1px dashed #7dd3fc;
    transition: color 0.3s;
}

.rk-core-lead a:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

/* Inżynierski Panel Kontrolny (Dashboard) */
.rk-core-dashboard {
    padding: 40px 50px;
    background: var(--rk-core-panel);
}

/* Nawigacja po komponentach OZC (3 twarde filary) */
.rk-core-nav {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    margin-bottom: 35px;
}

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

.rk-core-nav-btn:hover {
    background: #f1f5f9;
    border-color: #94a3b8;
    transform: translateY(-2px);
}

.rk-core-nav-btn.active {
    border-color: var(--rk-core-brand);
    background: var(--rk-core-brand);
}

.rk-nav-icon {
    width: 24px;
    height: 24px;
    color: var(--rk-core-brand);
    transition: color 0.3s;
}

.rk-core-nav-btn.active .rk-nav-icon {
    color: #ffffff;
}

.rk-nav-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-core-dark);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    transition: color 0.3s;
}

.rk-core-nav-btn.active .rk-nav-title {
    color: #ffffff;
}

/* Główna Karta Prezentacji Danych */
.rk-core-display-card {
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-core-border);
    padding: 35px;
    display: grid;
    grid-template-columns: 240px 1fr;
    gap: 40px;
    align-items: center;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.02);
}

/* Kontener Wizualizacji Sztywnych Układów SVG */
.rk-core-svg-stage {
    background: var(--rk-core-dark);
    border-radius: 16px;
    padding: 25px;
    height: 220px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 15px rgba(0,0,0,0.4);
    position: relative;
    overflow: hidden;
}

.rk-dashboard-svg {
    width: 100%;
    height: 100%;
    display: block;
}

/* Ukrywanie/Pokazywanie warstw SVG za pomocą CSS */
.svg-layer { opacity: 0; transition: opacity 0.4s ease-in-out; }
.rk-core-container[data-view="fabric"] .layer-fabric { opacity: 1; }
.rk-core-container[data-view="ventilation"] .layer-ventilation { opacity: 1; }
.rk-core-container[data-view="bivalent"] .layer-bivalent { opacity: 1; }

/* Animacje wektorowe kontrolowane stanem rodzica */
.anim-flow-lines { stroke-dasharray: 8 16; stroke-dashoffset: 0; }
.rk-core-container[data-view="ventilation"] .anim-flow-lines { animation: airFlow 2s linear infinite; }

.anim-balance-beam { transform-origin: 50px 55px; transition: transform 0.6s ease-in-out; }
.rk-core-container[data-view="bivalent"] .anim-balance-beam { transform: rotate(-8deg); }

@keyframes airFlow { to { stroke-dashoffset: -24; } }

/* Treść merytoryczna wewnątrz karty */
.rk-core-info-block h3 {
    margin: 0 0 12px 0;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-core-dark);
}

.rk-core-info-block p {
    margin: 0 0 20px 0;
    font-size: 15px;
    line-height: 1.65;
    color: #475569;
}

/* Siatka parametrów pod tekstem */
.rk-core-metrics-panel {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-core-metric-box {
    background: #f1f5f9;
    padding: 15px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-core-brand);
}

.rk-metric-label {
    display: block;
    font-size: 11px;
    text-transform: uppercase;
    font-weight: 800;
    color: #64748b;
    margin-bottom: 4px;
}

.rk-metric-value {
    display: block;
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-core-dark);
}

@media (max-width: 768px) {
    .rk-core-header, .rk-core-dashboard { padding: 35px 25px; }
    .rk-core-header h2 { font-size: 24px; }
    .rk-core-nav { grid-template-columns: 1fr; gap: 10px; }
    .rk-core-display-card { grid-template-columns: 1fr; gap: 25px; padding: 25px; }
    .rk-core-svg-stage { height: 180px; max-width: 240px; margin: 0 auto; width: 100%; }
    .rk-core-metrics-panel { grid-template-columns: 1fr; gap: 12px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-definicja",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Czym dokładnie jest Projektowe Obciążenie Cieplne (OZC) budynku?",
    "description": "Zrozumienie wartości OZC (kW) wg normy PN-EN 12831-1. Dowiedz się, jak bilans przegród, wentylacji oraz wyznaczenie punktu biwalentnego eliminuje zgadywanie.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-definicja",
    "name": "Struktura składowych bilansu energetycznego budynku szczytowego",
    "description": "Zestawienie twardych danych inżynierskich określających udziały strat przez przenikanie oraz wentylację w warunkach normatywnych WT 2021.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowe obciążenie cieplne budynku",
      "norma PN-EN 12831-1",
      "punkt biwalentny pompy ciepła",
      "standard energetyczny WT 2021",
      "koszt obliczeń OZC"
    ],
    "measurementTechnique": "Kalkulacja strat szczytowych na podstawie fizyki budowli i oporów cieplnych przegród budowlanych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przenikanie ciepła: Straty energii przez ściany, okna i strop przy skrajnej temperaturze projektowej.",
        "Wentylacja: Zapotrzebowanie na dogrzanie powietrza zewnętrznego z uwzględnieniem sprawności rekuperatora.",
        "Punkt biwalentny: Temperatura graniczna, przy której źródło ciepła wymaga aktywacji wspomagania elektrycznego."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-definicja",
    "name": "Interaktywny Analizator Składowych OZC",
    "description": "Inżynierski interfejs do wizualizacji struktury strat ciepła przez przegrody budowlane, procesy wentylacyjne oraz do wyznaczania punktu biwalentnego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and SVG capable browser",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-core-container" id="rk-ozc-def-app" data-view="fabric">
    
    <div class="rk-core-header">
        <div class="rk-core-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z"></path><line x1="4" y1="22" x2="4" y2="15"></line></svg>
            Analiza Inżynierska
        </div>
        <h2>Czym dokładnie jest Projektowe Obciążenie Cieplne (OZC) budynku?</h2>
        <p class="rk-core-lead">
            <strong>Projektowe Obciążenie Cieplne (OZC)</strong> to obliczeniowa wartość strat energii wyrażona w kilowatach [kW], wyznaczana dla skrajnych warunków zimowych danej strefy klimatycznej zgodnie z normą <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/">PN-EN 12831-1</a>. Wartość ta określa zapotrzebowanie na moc szczytową źródła ciepła i jest sumą strat przez przegrody oraz wentylację. Stanowi ona podstawę do doboru urządzeń grzewczych, eliminując błędy szacunkowe, które generują niepotrzebne koszty inwestycyjne.
        </p>
    </div>

    <div class="rk-core-dashboard">
        
        <div class="rk-core-nav">
            <button class="rk-core-nav-btn active" data-target="fabric">
                <svg class="rk-nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" fill="none"/><line x1="9" y1="3" x2="9" y2="21"/><line x1="15" y1="3" x2="15" y2="21"/></svg>
                <span class="rk-nav-title">1. Przenikanie</span>
            </button>
            <button class="rk-core-nav-btn" data-target="ventilation">
                <svg class="rk-nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9.59 4.59A2 2 0 1 1 11 8H2m12.41 11.41A2 2 0 1 1 13 16h9m-1.59-7.41A2 2 0 1 0 19 12h3"/></svg>
                <span class="rk-nav-title">2. Wentylacja</span>
            </button>
            <button class="rk-core-nav-btn" data-target="bivalent">
                <svg class="rk-nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="19" y1="5" x2="5" y2="19"/><circle cx="6.5" cy="6.5" r="2.5"/><circle cx="17.5" cy="17.5" r="2.5"/></svg>
                <span class="rk-nav-title">3. Punkt Biwalentny</span>
            </button>
        </div>

        <div class="rk-core-display-card">
            
            <div class="rk-core-svg-stage">
                <svg class="rk-dashboard-svg" viewBox="0 0 100 100">
                    
                    <g class="svg-layer layer-fabric">
                        <rect x="15" y="20" width="20" height="60" fill="#475569" />
                        <rect x="35" y="20" width="15" height="60" fill="#0284c7" opacity="0.6" />
                        <rect x="50" y="20" width="5" height="60" fill="#cbd5e1" />
                        <path d="M 10 50 L 65 50" fill="none" stroke="#ef4444" stroke-width="3" stroke-dasharray="4 4" />
                        <polyline points="60 45 65 50 60 55" fill="none" stroke="#ef4444" stroke-width="3" />
                        <text x="60" y="35" fill="#ffffff" font-size="8" font-family="sans-serif">WT 2021</text>
                    </g>
                    
                    <g class="svg-layer layer-ventilation">
                        <rect x="30" y="30" width="40" height="40" rx="6" fill="#1e293b" stroke="#64748b" stroke-width="2"/>
                        <path class="anim-flow-lines" d="M 10 40 L 90 40" fill="none" stroke="#38bdf8" stroke-width="3" />
                        <path class="anim-flow-lines" d="M 90 60 L 10 60" fill="none" stroke="#f97316" stroke-width="3" />
                    </g>
                    
                    <g class="svg-layer layer-bivalent">
                        <path d="M 20 85 L 80 85 M 50 85 L 50 55" fill="none" stroke="#64748b" stroke-width="3" />
                        <g class="anim-balance-beam">
                            <line x1="20" y1="55" x2="80" y2="55" stroke="#ffffff" stroke-width="4" stroke-linecap="round" />
                            <rect x="22" y="35" width="16" height="18" fill="#10b981" rx="2" />
                            <rect x="62" y="38" width="16" height="15" fill="#ef4444" rx="2" />
                        </g>
                    </g>
                    
                </svg>
            </div>

            <div class="rk-core-info-block">
                <h3 id="coreDisplayTitle">Straty ciepła przez przegrody</h3>
                <p id="coreDisplayDesc">
                    W praktyce inżynierskiej dokument OZC eliminuje zgadywanie. Budynki wznoszone w standardzie WT 2021 charakteryzują się wysoką szczelnością oraz niskimi współczynnikami przenikania ciepła przegród, co sprawia, że ich realne zapotrzebowanie na energię drastycznie różni się od obiektów budowanych jeszcze dekadę temu.
                </p>
                
                <div class="rk-core-metrics-panel">
                    <div class="rk-core-metric-box">
                        <span class="rk-metric-label" id="coreLabel1">Koszt opracowania OZC</span>
                        <span class="rk-metric-value" id="coreValue1">450 &ndash; 900 PLN</span>
                    </div>
                    <div class="rk-core-metric-box">
                        <span class="rk-metric-label" id="coreLabel2">Oszczędność inwestycyjna</span>
                        <span class="rk-metric-value" id="coreValue2">Do kilkunastu tysięcy PLN</span>
                    </div>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez użycia tagów H2/H3 w strukturze alertu)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-ozc-def-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;"><div style="font-size:18px; text-transform:uppercase; margin-bottom:10px;">Błąd Licencji</div><div style="font-size:14px; color:#cbd5e1;">Opracowanie struktury oraz mechanika JSON-LD są własnością serwisu Projekt-Ogrzewania.pl.</div></div>';
        return;
    }

    // 2. Elementy sterujące i baza danych
    const container = document.getElementById('rk-ozc-def-app');
    const navBtns = container.querySelectorAll('.rk-core-nav-btn');
    
    const titleDOM = document.getElementById('coreDisplayTitle');
    const descDOM = document.getElementById('coreDisplayDesc');
    const lbl1DOM = document.getElementById('coreLabel1');
    const val1DOM = document.getElementById('coreValue1');
    const lbl2DOM = document.getElementById('coreLabel2');
    const val2DOM = document.getElementById('coreValue2');

    // Czyste bazy tekstowe (bez backticków dla uniknięcia błędów parsowania w WP)
    const contentData = {
        fabric: {
            title: "Przenikanie przez przegrody (WT 2021)",
            desc: "W praktyce inżynierskiej dokument OZC eliminuje zgadywanie. Budynki wznoszone w standardzie WT 2021 charakteryzują się wysoką szczelnością oraz niskimi współczynnikami przenikania ciepła przegród strukturalnych, co sprawia, że ich realne zapotrzebowanie na energię drastycznie różni się od starych obiektów.",
            lbl1: "Koszt opracowania OZC",
            val1: "450 - 900 PLN",
            lbl2: "Oszczędność inwestycyjna",
            val2: "Zabezpieczenie przed przewymiarowaniem"
        },
        ventilation: {
            title: "Projektowe straty wentylacyjne",
            desc: "OZC precyzyjnie sumuje straty energii potrzebnej do ogrzania powietrza zewnętrznego. Uwzględnienie w obliczeniach inżynierskich systemu z odzyskiem ciepła pozwala na obniżenie strat wentylacyjnych o ponad 80%, drastycznie wpływając na ostateczny wynik zapotrzebowania budynku.",
            lbl1: "Wymóg normatywny",
            val1: "PN-EN 12831-1",
            lbl2: "Wpływ na rekuperację",
            val2: "Redukcja szczytowych strat wentylacji"
        },
        bivalent: {
            title: "Wyznaczenie punktu biwalentnego",
            desc: "Projektowe Obciążenie Cieplne pozwala precyzyjnie określić tzw. punkt biwalentny dla pompy ciepła – czyli temperaturę zewnętrzną (np. -7°C), przy której sprężarka wymaga wsparcia przez grzałki elektryczne. Chroni to inwestora przed zakupem drogiego źródła o zawyżonej mocy nominalnej.",
            lbl1: "Przykładowy punkt",
            val1: "-7°C (Granica grzałek)",
            lbl2: "Efekt hydrauliczny",
            val2: "Stabilna praca bez taktowania"
        }
    };

    // 3. Obsługa zdarzeń kliknięcia
    navBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            navBtns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const view = this.getAttribute('data-target');
            container.setAttribute('data-view', view);

            // Podmiana danych merytorycznych
            titleDOM.textContent = contentData[view].title;
            descDOM.textContent = contentData[view].desc;
            lbl1DOM.textContent = contentData[view].lbl1;
            val1DOM.textContent = contentData[view].val1;
            lbl2DOM.textContent = contentData[view].lbl2;
            val2DOM.textContent = contentData[view].val2;
        });
    });
});
</script>



<style>
:root {
    --rk-norm-dark: #0f172a;
    --rk-norm-brand: #4338ca; /* Eleganckie indygo dla prawa i norm */
    --rk-norm-brand-light: #e0e7ff;
    --rk-norm-accent: #0ea5e9;
    --rk-norm-green: #10b981;
    --rk-norm-green-light: #ecfdf5;
    --rk-norm-red: #ef4444;
    --rk-norm-bg: #ffffff;
    --rk-norm-panel: #f8fafc;
    --rk-norm-border: #cbd5e1;
    --rk-norm-text: #334155;
    --rk-norm-muted: #64748b;
}

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

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

.rk-norm-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(67, 56, 202, 0.4);
    color: #a5b4fc;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(165, 180, 252, 0.2);
}

.rk-norm-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

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

.rk-norm-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
}

.rk-norm-lead strong {
    color: #ffffff;
    background: rgba(67, 56, 202, 0.4);
    padding: 2px 6px;
    border-radius: 4px;
}

.rk-link-norm {
    color: #a5b4fc;
    text-decoration: none;
    border-bottom: 1px dashed #a5b4fc;
    transition: all 0.3s;
}

.rk-link-norm:hover { color: #ffffff; border-bottom-color: #ffffff; }

/* Przestrzeń interaktywna */
.rk-norm-interactive {
    padding: 45px 50px;
    background: var(--rk-norm-panel);
}

/* System Zakładek (Pill Menu) */
.rk-norm-tabs {
    display: flex;
    background: #e2e8f0;
    border-radius: 16px;
    padding: 6px;
    margin-bottom: 35px;
    position: relative;
    box-shadow: inset 0 2px 5px rgba(0,0,0,0.05);
}

.rk-norm-tab {
    flex: 1;
    text-align: center;
    padding: 14px 10px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-norm-muted);
    cursor: pointer;
    border-radius: 12px;
    transition: all 0.3s ease;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.rk-norm-tab.active { color: #ffffff; }

.rk-norm-tab-glider {
    position: absolute;
    top: 6px;
    bottom: 6px;
    width: calc(33.333% - 4px);
    background: var(--rk-norm-brand);
    border-radius: 12px;
    transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
    box-shadow: 0 4px 10px -2px rgba(67, 56, 202, 0.3);
    z-index: 1;
}

.rk-norm-tabs[data-active="zones"] .rk-norm-tab-glider { transform: translateX(0%); background: var(--rk-norm-accent); }
.rk-norm-tabs[data-active="temps"] .rk-norm-tab-glider { transform: translateX(100%); background: #f59e0b; }
.rk-norm-tabs[data-active="law"] .rk-norm-tab-glider { transform: translateX(200%); background: var(--rk-norm-brand); }

/* Główny Dashboard Prezentacji */
.rk-norm-dashboard {
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-norm-border);
    padding: 35px;
    display: grid;
    grid-template-columns: 200px 1fr;
    gap: 35px;
    align-items: center;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.03);
    transition: border-color 0.4s;
}

.rk-norm-dashboard[data-state="zones"] { border-color: rgba(14, 165, 233, 0.3); }
.rk-norm-dashboard[data-state="temps"] { border-color: rgba(245, 158, 11, 0.3); }
.rk-norm-dashboard[data-state="law"] { border-color: rgba(67, 56, 202, 0.3); }

/* Kontener SVG */
.rk-norm-svg-box {
    background: var(--rk-norm-dark);
    border-radius: 16px;
    padding: 20px;
    height: 180px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
    position: relative;
    overflow: hidden;
}

.rk-svg-layer { opacity: 0; position: absolute; transition: opacity 0.4s, transform 0.4s; transform: scale(0.95); width: 100%; height: 100%; }
.rk-norm-dashboard[data-state="zones"] .layer-zones { opacity: 1; transform: scale(1); }
.rk-norm-dashboard[data-state="temps"] .layer-temps { opacity: 1; transform: scale(1); }
.rk-norm-dashboard[data-state="law"] .layer-law { opacity: 1; transform: scale(1); }

/* Animacje specyficzne dla warstw */
.anim-thermo-drop { transform-origin: bottom; animation: dropTemp 2.5s infinite alternate ease-in-out; }
.anim-snowflake { animation: spinSnow 4s infinite linear; transform-origin: 50px 30px; }
.anim-heat-wave { stroke-dasharray: 8 8; animation: riseHeat 1.5s infinite linear; }
.anim-shield-pulse { animation: pulseShieldNorm 2s infinite alternate; }

@keyframes dropTemp { 0% { transform: scaleY(1); fill: #38bdf8; } 100% { transform: scaleY(0.4); fill: #1e3a8a; } }
@keyframes spinSnow { to { transform: rotate(360deg); } }
@keyframes riseHeat { to { stroke-dashoffset: -16; } }
@keyframes pulseShieldNorm { 0% { filter: drop-shadow(0 0 0 rgba(99, 102, 241, 0)); } 100% { filter: drop-shadow(0 0 12px rgba(99, 102, 241, 0.6)); } }

/* Treść Panelu */
.rk-norm-content h3 {
    margin: 0 0 12px 0;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-norm-dark);
}

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

/* Kafelki z danymi */
.rk-norm-tiles {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-norm-tile {
    background: var(--rk-norm-panel);
    padding: 15px;
    border-radius: 12px;
    border-left: 4px solid transparent;
    transition: all 0.3s;
}

.rk-norm-dashboard[data-state="zones"] .rk-norm-tile { border-left-color: var(--rk-norm-accent); }
.rk-norm-dashboard[data-state="temps"] .rk-norm-tile { border-left-color: #f59e0b; }
.rk-norm-dashboard[data-state="law"] .rk-norm-tile { border-left-color: var(--rk-norm-brand); }

.rk-tile-lbl { display: block; font-size: 11px; text-transform: uppercase; font-weight: 800; color: var(--rk-norm-muted); margin-bottom: 4px; }
.rk-tile-val { display: block; font-size: 16px; font-weight: 900; color: var(--rk-norm-dark); }

@media (max-width: 768px) {
    .rk-norm-header, .rk-norm-interactive { padding: 35px 20px; }
    .rk-norm-title { font-size: 24px; }
    .rk-norm-tabs { flex-direction: column; }
    .rk-norm-tab-glider { width: 100%; height: calc(33.333% - 4px); top: 6px; left: 6px; }
    .rk-norm-tabs[data-active="zones"] .rk-norm-tab-glider { transform: translateY(0%); }
    .rk-norm-tabs[data-active="temps"] .rk-norm-tab-glider { transform: translateY(100%); }
    .rk-norm-tabs[data-active="law"] .rk-norm-tab-glider { transform: translateY(200%); }
    
    .rk-norm-dashboard { grid-template-columns: 1fr; gap: 25px; padding: 25px; text-align: center; }
    .rk-norm-svg-box { max-width: 200px; margin: 0 auto; height: 160px; }
    .rk-norm-tiles { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#article-prawo",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/"
    },
    "headline": "Jakie normy i przepisy prawne regulują obliczenia OZC w Polsce?",
    "description": "Zrozum regulacje prawne OZC: norma PN-EN 12831-1:2017-08, 5 stref klimatycznych Polski, temperatury wewnętrzne oraz wymogi dotacji Czyste Powietrze.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#dataset-prawo",
    "name": "Zestawienie parametrów normatywnych wg PN-EN 12831-1:2017-08",
    "description": "Wykaz obligatoryjnych temperatur wewnętrznych oraz zewnętrznych stref klimatycznych wymaganych do sporządzenia legalnego bilansu cieplnego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "norma PN-EN 12831-1:2017-08",
      "obliczenia zapotrzebowania na moc cieplną",
      "5 stref klimatycznych Polska temperatura",
      "charakterystyka energetyczna budynku",
      "dotacje czyste powietrze wymogi OZC"
    ],
    "measurementTechnique": "Kalkulacja zgodności projektu instalacji z § 134 ust. 1 Rozporządzenia MI oraz wytycznymi programów proekologicznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Temperatury Zewnętrzne: Podział Polski na 5 stref od -16°C (I) do -24°C (V).",
        "Temperatury Wewnętrzne: Wymagane projektowe 20°C dla pokojów i 24°C dla łazienek.",
        "Zgodność prawna: Warunek konieczny odbioru budynku i uzyskania dotacji (Moje Ciepło)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#webapp-prawo",
    "name": "Eksplorator Norm i Stref Klimatycznych OZC",
    "description": "Aplikacja interaktywna pozwalająca inwestorom zrozumieć wymogi prawne, strefy klimatyczne i ich wpływ na odbiór instalacji oraz dotacje.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-norm-container" id="rk-norm-app">
    
    <div class="rk-norm-header">
        <div class="rk-norm-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            Prawo i Wymogi Budowlane
        </div>
        <h2 class="rk-norm-title">Jakie normy i przepisy prawne regulują obliczenia <span>OZC w Polsce</span>?</h2>
        <p class="rk-norm-lead">
            Obowiązek wykonywania <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/" class="rk-link-norm">obliczeń zapotrzebowania na moc cieplną</a> reguluje <strong>§ 134 ust. 1 Rozporządzenia Ministra Infrastruktury</strong> w sprawie warunków technicznych, jakim powinny odpowiadać budynki. Każdy legalnie budowany lub modernizowany obiekt musi posiadać rzetelną <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/" class="rk-link-norm">charakterystykę energetyczną</a> opartą na tych ściśle określonych wyliczeniach.
        </p>
    </div>

    <div class="rk-norm-interactive">
        
        <div class="rk-norm-tabs" id="normTabs" data-active="zones">
            <div class="rk-norm-tab-glider" id="normGlider"></div>
            <div class="rk-norm-tab active" data-target="zones">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                Strefy Klimatyczne
            </div>
            <div class="rk-norm-tab" data-target="temps">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path></svg>
                Temp. Wewnętrzne
            </div>
            <div class="rk-norm-tab" data-target="law">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                Prawo &#038; Dotacje
            </div>
        </div>

        <div class="rk-norm-dashboard" id="normDashboard" data-state="zones">
            
            <div class="rk-norm-svg-box">
                <svg class="rk-svg-layer layer-zones" viewBox="0 0 100 100">
                    <rect x="40" y="10" width="20" height="60" rx="10" fill="#1e293b" stroke="#38bdf8" stroke-width="2"/>
                    <circle cx="50" cy="80" r="15" fill="#1e293b" stroke="#38bdf8" stroke-width="2"/>
                    <rect class="anim-thermo-drop" x="44" y="15" width="12" height="60" rx="6" fill="#38bdf8"/>
                    <circle cx="50" cy="80" r="10" fill="#38bdf8"/>
                    <g class="anim-snowflake" stroke="#ffffff" stroke-width="2" stroke-linecap="round">
                        <line x1="50" y1="20" x2="50" y2="40"/> <line x1="40" y1="30" x2="60" y2="30"/>
                        <line x1="43" y1="23" x2="57" y2="37"/> <line x1="43" y1="37" x2="57" y2="23"/>
                    </g>
                </svg>

                <svg class="rk-svg-layer layer-temps" viewBox="0 0 100 100">
                    <path d="M 15 50 L 50 20 L 85 50 L 85 85 L 15 85 Z" fill="#1e293b" stroke="#f59e0b" stroke-width="2"/>
                    <rect x="25" y="55" width="20" height="30" fill="#334155"/>
                    <text x="35" y="75" fill="#f59e0b" font-size="12" font-weight="bold" text-anchor="middle">20°C</text>
                    <rect x="55" y="55" width="20" height="30" fill="#334155"/>
                    <text x="65" y="75" fill="#ef4444" font-size="12" font-weight="bold" text-anchor="middle">24°C</text>
                    <path class="anim-heat-wave" d="M 60 45 Q 65 35 60 25" fill="none" stroke="#ef4444" stroke-width="2"/>
                </svg>

                <svg class="rk-svg-layer layer-law" viewBox="0 0 100 100">
                    <path class="anim-shield-pulse" d="M 50 15 L 20 25 L 20 55 C 20 75 45 90 50 95 C 55 90 80 75 80 55 L 80 25 Z" fill="#1e293b" stroke="#4338ca" stroke-width="3"/>
                    <polyline points="35 55 45 65 65 40" fill="none" stroke="#10b981" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
                </svg>
            </div>

            <div class="rk-norm-content">
                <h3 id="dynNormTitle">Temperatury Obliczeniowe</h3>
                <p id="dynNormDesc">
                    Norma precyzuje podział Polski na 5 stref klimatycznych, dla których przypisane są obliczeniowe temperatury zewnętrzne. Od <strong>-16°C</strong> w łagodniejszej strefie I (nadmorskiej) aż do <strong>-24°C</strong> w skrajnej strefie V (górskiej).
                </p>
                <div class="rk-norm-tiles">
                    <div class="rk-norm-tile">
                        <span class="rk-tile-lbl" id="dynNormLbl1">Strefa I (Nadmorska)</span>
                        <span class="rk-tile-val" id="dynNormVal1">-16°C</span>
                    </div>
                    <div class="rk-norm-tile">
                        <span class="rk-tile-lbl" id="dynNormLbl2">Strefa V (Górska)</span>
                        <span class="rk-tile-val" id="dynNormVal2">-24°C</span>
                    </div>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Brak H2/H3 w strukturze błędu)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-norm-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // 2. Elementy DOM
    const tabsContainer = document.getElementById('normTabs');
    const tabs = document.querySelectorAll('.rk-norm-tab');
    const dashboard = document.getElementById('normDashboard');
    
    // Pola tekstowe do podmiany
    const dynTitle = document.getElementById('dynNormTitle');
    const dynDesc = document.getElementById('dynNormDesc');
    const lbl1 = document.getElementById('dynNormLbl1');
    const val1 = document.getElementById('dynNormVal1');
    const lbl2 = document.getElementById('dynNormLbl2');
    const val2 = document.getElementById('dynNormVal2');

    // Baza danych treści (bezpieczna od backticków)
    const dataContent = {
        zones: {
            title: "5 Stref Klimatycznych",
            desc: "Norma precyzuje podział Polski na 5 stref klimatycznych, dla których przypisane są rygorystyczne obliczeniowe temperatury zewnętrzne. Od -16°C w strefie I (nadmorskiej) do -24°C w strefie V (górskiej).",
            lbl1: "Strefa I (Najcieplejsza)",
            val1: "-16°C",
            lbl2: "Strefa V (Najzimniejsza)",
            val2: "-24°C"
        },
        temps: {
            title: "Temperatury Wewnętrzne",
            desc: "Przepisy ściśle określają wymagane temperatury wewnętrzne dla konkretnych typów pomieszczeń. Wymusza to na projektancie zastosowanie gęstszego rozstawu rur w łazienkach, aby sprostać wyższym wymogom cieplnym.",
            lbl1: "Pokoje, Salon, Kuchnia",
            val1: "20°C",
            lbl2: "Łazienki",
            val2: "24°C"
        },
        law: {
            title: "Odbiór i Dotacje",
            desc: "Oficjalną podstawą prawną jest norma PN-EN 12831-1:2017-08, która narzuca rygorystyczną metodologię. Projektowanie systemów grzewczych bez jej uwzględnienia uniemożliwia uzyskanie odbioru budowlanego oraz pozyskanie dotacji.",
            lbl1: "Obowiązująca Norma",
            val1: "PN-EN 12831-1",
            lbl2: "Programy wsparcia",
            val2: "Czyste Powietrze / Moje Ciepło"
        }
    };

    // 3. Obsługa kliknięć
    tabs.forEach(tab => {
        tab.addEventListener('click', function() {
            tabs.forEach(t => t.classList.remove('active'));
            this.classList.add('active');

            const target = this.getAttribute('data-target');
            
            // Animacja pigułki
            tabsContainer.setAttribute('data-active', target);
            // Zmiana stanu dashboardu (kolory + SVG)
            dashboard.setAttribute('data-state', target);

            // Podmiana tekstów
            dynTitle.textContent = dataContent[target].title;
            // Dodanie linków w opisie jeśli to zakładka dotacji (dla SEO)
            if(target === 'law') {
                dynDesc.innerHTML = 'Oficjalną podstawą prawną jest <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/" style="color:var(--rk-norm-brand); font-weight:700;">norma PN-EN 12831-1:2017-08</a>, która narzuca rygorystyczną metodologię. Projektowanie bez jej uwzględnienia uniemożliwia uzyskanie odbioru oraz pozyskanie środków z programów takich jak <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/" style="color:var(--rk-norm-brand); font-weight:700;">Czyste Powietrze czy Moje Ciepło</a>.';
            } else {
                dynDesc.textContent = dataContent[target].desc;
            }
            
            lbl1.textContent = dataContent[target].lbl1;
            val1.textContent = dataContent[target].val1;
            lbl2.textContent = dataContent[target].lbl2;
            val2.textContent = dataContent[target].val2;
        });
    });
});
</script>



<style>
:root {
    --rk-tr-dark: #0f172a;
    --rk-tr-brand: #c2410c; /* Ciepły pomarańcz/cegła nawiązujący do przenikania ciepła */
    --rk-tr-brand-light: #ffedd5;
    --rk-tr-accent: #f97316;
    --rk-tr-blue: #0284c7;
    --rk-tr-blue-light: #e0f2fe;
    --rk-tr-bg: #ffffff;
    --rk-tr-panel: #f8fafc;
    --rk-tr-border: #e2e8f0;
    --rk-tr-text: #334155;
    --rk-tr-muted: #64748b;
}

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

/* Nagłówek i Wstęp Teorii */
.rk-tr-header {
    background: linear-gradient(135deg, var(--rk-tr-dark) 0%, #2a1508 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-tr-brand);
    display: block; /* Wymuszenie bloku, naprawia błędy z globalnym flexem */
}

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

.rk-tr-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-tr-title span { color: var(--rk-tr-accent); }

.rk-tr-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0 0 25px 0;
}

/* Blok ze Wzorem - Naprawiony układ, zapobiega zgniataniu w pionie */
.rk-tr-equation-box {
    background: rgba(0, 0, 0, 0.4);
    border: 1px solid rgba(249, 115, 22, 0.4);
    border-radius: 16px;
    padding: 25px;
    box-shadow: inset 0 4px 15px rgba(0,0,0,0.5);
    width: 100%;
    box-sizing: border-box;
    overflow-x: auto; /* Pozwala na przewijanie na bardzo wąskich ekranach */
}

.rk-tr-equation {
    font-family: 'Cambria Math', 'Times New Roman', serif;
    font-size: 22px;
    color: #fdba74;
    letter-spacing: 1px;
    margin: 0 0 20px 0;
    text-align: center;
    line-height: 1.6;
    word-break: keep-all; /* Blokuje łamanie słów w dziwnych miejscach */
}

.rk-tr-equation-chunk {
    display: inline-block;
    white-space: nowrap;
}

.rk-tr-equation-legend {
    font-size: 13px;
    color: #94a3b8;
    line-height: 1.6;
    text-align: left;
    margin: 0;
    display: grid;
    /* Automatycznie dopasowuje kolumny, nie zgniata do pionu */
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 12px;
}

.rk-tr-equation-legend div {
    background: rgba(255, 255, 255, 0.05);
    padding: 8px 12px;
    border-radius: 8px;
    border-left: 3px solid rgba(249, 115, 22, 0.5);
}

.rk-tr-equation-legend strong { color: #e2e8f0; font-family: 'Cambria Math', 'Times New Roman', serif; font-size: 14px; }

/* Sekcja Interaktywna - Kalkulator */
.rk-tr-interactive {
    padding: 45px 50px;
    background: var(--rk-tr-panel);
}

.rk-tr-section-title {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-tr-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

/* Kontrolki - Wybór Standardu */
.rk-tr-controls {
    display: flex;
    gap: 15px;
    margin-bottom: 35px;
}

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

.rk-tr-btn:hover {
    border-color: #cbd5e1;
    transform: translateY(-2px);
}

.rk-tr-btn.active {
    border-color: var(--rk-tr-brand);
    background: var(--rk-tr-brand-light);
    box-shadow: 0 10px 20px -5px rgba(194, 65, 12, 0.15);
}

.rk-tr-btn-title {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-tr-text);
}

.rk-tr-btn.active .rk-tr-btn-title { color: var(--rk-tr-brand); }
.rk-tr-btn-sub { font-size: 12px; color: var(--rk-tr-muted); font-weight: 600; }

/* Wyświetlacz Wyników Grid */
.rk-tr-dashboard {
    display: grid;
    grid-template-columns: 240px 1fr;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-tr-border);
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
}

/* SVG Wizualizacja Przegrody */
.rk-tr-svg-box {
    background: var(--rk-tr-dark);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.6);
}

.rk-tr-svg { width: 100%; height: auto; max-width: 180px; }

/* Animacje SVG zależne od stanu */
.anim-arrow { stroke-dasharray: 15; stroke-dashoffset: 0; transition: stroke 0.4s; }
.anim-wall-fill { transition: fill 0.4s; }

.state-old .anim-arrow { stroke: #ef4444; stroke-width: 4; animation: heatEscape 0.6s linear infinite; }
.state-old .anim-wall-fill { fill: #64748b; }

.state-wt2021 .anim-arrow { stroke: #f97316; stroke-width: 2.5; animation: heatEscape 1.5s linear infinite; }
.state-wt2021 .anim-wall-fill { fill: #0284c7; }

.state-passive .anim-arrow { stroke: #fbbf24; stroke-width: 1.5; animation: heatEscape 3s linear infinite; }
.state-passive .anim-wall-fill { fill: #10b981; }

@keyframes heatEscape { to { stroke-dashoffset: -30; } }

/* Panele Wynikowe */
.rk-tr-results-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-tr-res-tile {
    background: #f8fafc;
    border: 1px solid var(--rk-tr-border);
    padding: 15px 20px;
    border-radius: 12px;
    display: flex;
    flex-direction: column;
}

.rk-tr-res-tile.tile-total {
    grid-column: 1 / -1;
    background: var(--rk-tr-dark);
    border-color: var(--rk-tr-dark);
}

.rk-tr-res-label { font-size: 12px; text-transform: uppercase; font-weight: 800; color: var(--rk-tr-muted); margin-bottom: 4px; }
.rk-tr-res-tile.tile-total .rk-tr-res-label { color: #94a3b8; }

.rk-tr-res-value { font-size: 20px; font-weight: 900; color: var(--rk-tr-dark); font-variant-numeric: tabular-nums; }
.rk-tr-res-tile.tile-total .rk-tr-res-value { color: var(--rk-tr-accent); font-size: 28px; }

.rk-tr-res-formula { font-size: 11px; color: #94a3b8; margin-top: 6px; font-family: monospace; }
.rk-tr-res-tile.tile-total .rk-tr-res-formula { color: #cbd5e1; }

.rk-tr-insight-box {
    margin-top: 25px;
    padding: 18px 20px;
    background: var(--rk-tr-blue-light);
    border-left: 4px solid var(--rk-tr-blue);
    border-radius: 8px;
    font-size: 14px;
    line-height: 1.6;
    color: #0c4a6e;
    font-weight: 500;
}

@media (max-width: 768px) {
    .rk-tr-header, .rk-tr-interactive { padding: 35px 20px; }
    .rk-tr-title { font-size: 24px; }
    .rk-tr-controls { flex-direction: column; gap: 10px; }
    .rk-tr-dashboard { grid-template-columns: 1fr; gap: 25px; padding: 20px; }
    .rk-tr-svg-box { height: 160px; max-width: 220px; margin: 0 auto; width: 100%; }
    .rk-tr-results-grid { grid-template-columns: 1fr; }
    .rk-tr-equation { font-size: 18px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-przenikanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Jak krok po kroku oblicza się straty ciepła przez przenikanie?",
    "description": "Zobacz inżynierski wzór na straty przez przenikanie (ΦT) wg normy PN-EN 12831. Obliczamy OZC dla ściany, okna i mostków cieplnych krok po kroku.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-przenikanie",
    "name": "Analiza strat ciepła przez przegrody budowlane (Przenikanie)",
    "description": "Interaktywne zestawienie wpływu współczynnika przenikania ciepła U przegród (ściana, okno, mostki termiczne) na całkowite straty ciepła pomieszczenia.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczanie strat ciepła przez przenikanie",
      "współczynnik przenikania ciepła U",
      "mostki termiczne OZC",
      "kalkulator strat ciepła budynek",
      "norma PN-EN 12831 wzór"
    ],
    "measurementTechnique": "Analiza porównawcza strumieni strat ciepła przez komponenty ściany zewn. wg normy PN-EN 12831 w 3 standardach budowlanych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wzór uwzględnia sumę iloczynów pola powierzchni netto, współczynnika U oraz różnicy temperatur projektowych.",
        "Dla standardu WT 2021 okno i liniowy mostek termiczny wokół ramy generują aż 60,6% strat ciepła przegrody."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-przenikanie",
    "name": "Kalkulator Przenikania Ciepła Przegrody",
    "description": "Narzędzie inżynierskie pozwalające prześledzić krok po kroku obliczenia OZC dla ściany zewnętrznej z oknem, zależnie od standardu izolacji.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-tr-container" id="rk-tr-calc-app">
    
    <div class="rk-tr-header">
        <div class="rk-tr-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line></svg>
            Metodologia Normy PN-EN 12831
        </div>
        <h2 class="rk-tr-title">Jak krok po kroku oblicza się <span>straty przez przenikanie?</span></h2>
        <p class="rk-tr-lead">
            Straty ciepła przez przenikanie (&Phi;<sub>T,i</sub>) oblicza się poprzez przemnożenie pola powierzchni przegrody <strong>A [m²]</strong> przez jej współczynnik przenikania ciepła <strong>U [W/(m²·K)]</strong> oraz projektową różnicę temperatur <strong>&Delta;T [K]</strong>. Formuła ta musi bezwzględnie uwzględniać liniowe mostki termiczne <strong>&Psi;</strong> wyrażone w W/(m·K). Ostateczny wynik podaje się z dokładnością do 1 W.
        </p>
        
        <div class="rk-tr-equation-box">
            <div class="rk-tr-equation">
                <span class="rk-tr-equation-chunk">&Phi;<sub>T,i</sub> = &Sigma; (A<sub>k</sub> &times; U<sub>k</sub> &times; f<sub>x,k</sub>)</span> &times; <span class="rk-tr-equation-chunk">(&theta;<sub>int,i</sub> &minus; &theta;<sub>e</sub>)</span> &nbsp;+&nbsp; <span class="rk-tr-equation-chunk">&Sigma; (&Psi;<sub>l</sub> &times; L<sub>l</sub> &times; f<sub>x,l</sub>)</span> &times; <span class="rk-tr-equation-chunk">(&theta;<sub>int,i</sub> &minus; &theta;<sub>e</sub>)</span>
            </div>
            <div class="rk-tr-equation-legend">
                <div><strong>f<sub>x</sub></strong> &#8211; współcz. redukcji temp. (przestrz. nieogrzewane)</div>
                <div><strong>&theta;<sub>int,i</sub></strong> &#8211; temperatura wewnętrzna projektowa</div>
                <div><strong>L</strong> &#8211; długość liniowego mostka termicznego [m]</div>
                <div><strong>&theta;<sub>e</sub></strong> &#8211; temperatura zewnętrzna obliczeniowa</div>
            </div>
        </div>
    </div>

    <div class="rk-tr-interactive">
        <h3 class="rk-tr-section-title">Symulator: Wpływ izolacji na straty ściany z oknem (III strefa, &Delta;T = 40K)</h3>
        
        <div class="rk-tr-controls">
            <button class="rk-tr-btn" data-standard="old">
                <span class="rk-tr-btn-title">Stary Dom</span>
                <span class="rk-tr-btn-sub">Brak izolacji</span>
            </button>
            <button class="rk-tr-btn active" data-standard="wt2021">
                <span class="rk-tr-btn-title">WT 2021</span>
                <span class="rk-tr-btn-sub">Przykład normatywny</span>
            </button>
            <button class="rk-tr-btn" data-standard="passive">
                <span class="rk-tr-btn-title">Dom Pasywny</span>
                <span class="rk-tr-btn-sub">Certyfikowane detale</span>
            </button>
        </div>

        <div class="rk-tr-dashboard">
            <div class="rk-tr-svg-box state-wt2021" id="trSvgBox">
                <svg class="rk-tr-svg" viewBox="0 0 100 100">
                    <rect class="anim-wall-fill" x="20" y="10" width="30" height="80" rx="2" />
                    <rect x="15" y="35" width="40" height="30" fill="#bae6fd" stroke="#0f172a" stroke-width="4" rx="2" />
                    <line x1="15" y1="50" x2="55" y2="50" stroke="#0f172a" stroke-width="2" />
                    
                    <text x="75" y="20" fill="#94a3b8" font-size="10" font-weight="bold">WEWN. (20°C)</text>
                    <text x="5" y="95" fill="#94a3b8" font-size="10" font-weight="bold" transform="rotate(-90 5 95)">ZEWN. (-20°C)</text>
                    
                    <path class="anim-arrow" d="M 70 25 L 10 25" fill="none" stroke-linecap="round" />
                    <path class="anim-arrow" d="M 70 50 L 10 50" fill="none" stroke-linecap="round" />
                    <path class="anim-arrow" d="M 70 75 L 10 75" fill="none" stroke-linecap="round" />
                </svg>
            </div>

            <div>
                <div class="rk-tr-results-grid">
                    <div class="rk-tr-res-tile">
                        <span class="rk-tr-res-label">1. Ściana netto (13,20 m²)</span>
                        <span class="rk-tr-res-value" id="valWall">79,2 W</span>
                        <span class="rk-tr-res-formula" id="formWall">13,2 &times; 0,15 &times; 40K</span>
                    </div>
                    <div class="rk-tr-res-tile">
                        <span class="rk-tr-res-label">2. Okno 3-szybowe (3,00 m²)</span>
                        <span class="rk-tr-res-value" id="valWin">108,0 W</span>
                        <span class="rk-tr-res-formula" id="formWin">3,00 &times; 0,90 &times; 40K</span>
                    </div>
                    <div class="rk-tr-res-tile">
                        <span class="rk-tr-res-label">3. Mostek Liniowy (7,0 m)</span>
                        <span class="rk-tr-res-value" id="valBridge">14,0 W</span>
                        <span class="rk-tr-res-formula" id="formBridge">7,00 &times; 0,05 &times; 40K</span>
                    </div>
                    <div class="rk-tr-res-tile tile-total">
                        <span class="rk-tr-res-label">Suma strat dla przegrody (&Phi;<sub>T</sub>)</span>
                        <span class="rk-tr-res-value" id="valTotal">201,2 W</span>
                        <span class="rk-tr-res-formula" id="formTotal">79,2 + 108,0 + 14,0 W</span>
                    </div>
                </div>

                <div class="rk-tr-insight-box" id="trInsightText">
                    Wynik pokazuje, że dla ściany o pow. 16,2 m² projektant musi zabezpieczyć <strong>201,2 W</strong> mocy grzewczej. Aż <strong>60,6%</strong> ciepła ucieka przez stolarkę okienną i jej montaż, mimo że okno zajmuje tylko 18,5% powierzchni.
                </div>
            </div>
        </div>
        
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-tr-calc-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;"><div style="font-size:16px; text-transform:uppercase; margin-bottom:8px;">Błąd autoryzacji skryptu</div><div style="font-size:13px; color:#cbd5e1;">Aplikacja należy do Projekt-Ogrzewania.pl</div></div>';
        return;
    }

    // Elementy DOM
    const btns = document.querySelectorAll('.rk-tr-btn');
    const svgBox = document.getElementById('trSvgBox');
    
    const valWall = document.getElementById('valWall'); const formWall = document.getElementById('formWall');
    const valWin = document.getElementById('valWin'); const formWin = document.getElementById('formWin');
    const valBridge = document.getElementById('valBridge'); const formBridge = document.getElementById('formBridge');
    const valTotal = document.getElementById('valTotal'); const formTotal = document.getElementById('formTotal');
    const insightText = document.getElementById('trInsightText');

    // Baza danych dla 3 wariantów standardu izolacji
    const simData = {
        old: {
            uWall: "1,20", wWall: "633,6 W",
            uWin: "2,80", wWin: "336,0 W",
            uBridge: "0,15", wBridge: "42,0 W",
            total: "1011,6 W",
            formT: "633,6 + 336,0 + 42,0 W",
            insight: "W starym budownictwie przez taką samą ścianę ucieka ponad <strong>1 kW</strong> energii (pięciokrotnie więcej!). Sama pusta ściana bez izolacji odpowiada tu za potężne 62% strat. Wymaga to wysokotemperaturowych grzejników."
        },
        wt2021: {
            uWall: "0,15", wWall: "79,2 W",
            uWin: "0,90", wWin: "108,0 W",
            uBridge: "0,05", wBridge: "14,0 W",
            total: "201,2 W",
            formT: "79,2 + 108,0 + 14,0 W",
            insight: "Wynik pokazuje, że dla ściany o pow. 16,2 m² projektant musi zabezpieczyć <strong>201,2 W</strong> mocy grzewczej. Aż <strong>60,6%</strong> ciepła ucieka przez okno i jego montaż, mimo że zajmuje ono tylko 18,5% powierzchni."
        },
        passive: {
            uWall: "0,10", wWall: "52,8 W",
            uWin: "0,70", wWin: "84,0 W",
            uBridge: "0,01", wBridge: "2,8 W",
            total: "139,6 W",
            formT: "52,8 + 84,0 + 2,8 W",
            insight: "Dzięki ekstremalnej izolacji i tzw. ciepłemu montażowi okna w warstwie ocieplenia (&Psi; bliskie zeru), straty spadają do minimum (<strong>139,6 W</strong>). Ogrzewanie podłogowe może tu pracować na zasilaniu rzędu zaledwie 26°C."
        }
    };

    // Logika przycisków i aktualizacja interfejsu
    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const std = this.getAttribute('data-standard');
            const data = simData[std];

            // Zmiana klasy dla animacji SVG (w CSS zmiana koloru ściany i strzałek ciepła)
            svgBox.className = "rk-tr-svg-box state-" + std;

            // Podmiana zawartości paneli liczbowych
            valWall.textContent = data.wWall; formWall.innerHTML = "13,2 &times; " + data.uWall + " &times; 40K";
            valWin.textContent = data.wWin; formWin.innerHTML = "3,00 &times; " + data.uWin + " &times; 40K";
            valBridge.textContent = data.wBridge; formBridge.innerHTML = "7,00 &times; " + data.uBridge + " &times; 40K";
            
            valTotal.textContent = data.total; formTotal.textContent = data.formT;
            insightText.innerHTML = data.insight;
        });
    });
});
</script>



<style>
:root {
    --rk-vent-dark: #0f172a;
    --rk-vent-brand: #0284c7;
    --rk-vent-brand-light: #e0f2fe;
    --rk-vent-accent: #0ea5e9;
    --rk-vent-red: #ef4444;
    --rk-vent-red-bg: #fef2f2;
    --rk-vent-green: #10b981;
    --rk-vent-green-bg: #ecfdf5;
    --rk-vent-bg: #ffffff;
    --rk-vent-panel: #f8fafc;
    --rk-vent-border: #cbd5e1;
    --rk-vent-text: #334155;
    --rk-vent-muted: #64748b;
}

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

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

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

.rk-vent-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

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

.rk-vent-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0 0 25px 0;
}

.rk-link-vent {
    color: #7dd3fc;
    text-decoration: none;
    border-bottom: 1px dashed #7dd3fc;
    transition: all 0.3s;
}

.rk-link-vent:hover { color: #ffffff; border-bottom-color: #ffffff; }

/* Box ze wzorem */
.rk-eq-box {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(56, 189, 248, 0.3);
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    box-shadow: inset 0 4px 15px rgba(0,0,0,0.4);
}

.rk-eq {
    font-family: 'Cambria Math', 'Times New Roman', serif;
    font-size: 22px;
    color: #bae6fd;
    letter-spacing: 1px;
    margin: 0 0 10px 0;
}

.rk-eq-desc {
    font-size: 13px;
    color: #94a3b8;
    margin: 0;
}

.rk-eq-desc strong { color: #e2e8f0; }

/* Interaktywny Panel */
.rk-vent-interactive {
    padding: 40px 50px;
    background: var(--rk-vent-panel);
}

.rk-vent-section-title {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-vent-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

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

.rk-app-toggle {
    background: #e2e8f0;
    border-radius: 99px;
    padding: 6px;
    display: inline-flex;
    position: relative;
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.06);
    width: 100%;
    max-width: 600px;
}

.rk-toggle-btn {
    flex: 1;
    position: relative;
    z-index: 2;
    padding: 14px 20px;
    font-size: 15px;
    font-weight: 800;
    border: none;
    background: transparent;
    color: #64748b;
    cursor: pointer;
    border-radius: 99px;
    transition: color 0.3s ease;
    text-align: center;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

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

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

.rk-app-toggle[data-mode="rek"] .rk-toggle-glider {
    transform: translateX(100%);
    background: var(--rk-vent-green);
}

/* Dashboard Wyników */
.rk-vent-dashboard {
    display: grid;
    grid-template-columns: 200px 1fr;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-vent-border);
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
    transition: all 0.4s ease;
}

.rk-vent-dashboard.mode-grav { border-color: rgba(239, 68, 68, 0.3); }
.rk-vent-dashboard.mode-rek { border-color: rgba(16, 185, 129, 0.3); }

/* Kontener SVG */
.rk-vent-svg-stage {
    background: var(--rk-vent-dark);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.6);
    position: relative;
    overflow: hidden;
}

.rk-svg-layer { opacity: 0; position: absolute; transition: opacity 0.4s; width: 100%; height: 100%; }
.rk-vent-dashboard.mode-grav .layer-grav { opacity: 1; position: relative; }
.rk-vent-dashboard.mode-rek .layer-rek { opacity: 1; position: relative; }

/* Animacje SVG */
.anim-air-in { stroke-dasharray: 6 6; animation: flowIn 1s linear infinite; }
.anim-air-out { stroke-dasharray: 6 6; animation: flowOut 0.8s linear infinite; }
.anim-air-rek { stroke-dasharray: 6 6; animation: flowIn 2s linear infinite; }
.anim-heat-exch { animation: pulseCore 2s infinite alternate; }

@keyframes flowIn { from { stroke-dashoffset: 24; } to { stroke-dashoffset: 0; } }
@keyframes flowOut { from { stroke-dashoffset: 0; } to { stroke-dashoffset: 24; } }
@keyframes pulseCore { 0% { fill: #3b82f6; } 100% { fill: #ef4444; } }

/* Siatka Wyników */
.rk-vent-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-vent-tile {
    background: #f1f5f9;
    padding: 18px 20px;
    border-radius: 14px;
    border-left: 4px solid transparent;
    transition: all 0.3s;
    display: flex;
    flex-direction: column;
}

.rk-vent-dashboard.mode-grav .rk-vent-tile { border-left-color: var(--rk-vent-red); background: var(--rk-vent-red-bg); }
.rk-vent-dashboard.mode-rek .rk-vent-tile { border-left-color: var(--rk-vent-green); background: var(--rk-vent-green-bg); }

.rk-vent-tile.tile-full {
    grid-column: 1 / -1;
    background: var(--rk-vent-dark);
    border-color: var(--rk-vent-dark);
}

.rk-tile-lbl { font-size: 11px; text-transform: uppercase; font-weight: 800; color: var(--rk-vent-muted); margin-bottom: 4px; }
.rk-vent-tile.tile-full .rk-tile-lbl { color: #94a3b8; }

.rk-tile-val { font-size: 18px; font-weight: 900; color: var(--rk-vent-dark); transition: color 0.3s; }
.rk-vent-tile.tile-full .rk-tile-val { font-size: 26px; color: var(--rk-vent-accent); }

.rk-tile-sub { font-size: 12px; color: #94a3b8; margin-top: 6px; font-family: monospace; }

@media (max-width: 768px) {
    .rk-vent-header, .rk-vent-interactive { padding: 35px 20px; }
    .rk-vent-title { font-size: 24px; }
    .rk-app-toggle { flex-direction: column; background: transparent; box-shadow: none; gap: 10px; }
    .rk-toggle-glider { display: none; }
    .rk-toggle-btn { background: #e2e8f0; color: #64748b; }
    .rk-toggle-btn.active[data-target="grav"] { background: var(--rk-vent-red); color: #fff; }
    .rk-toggle-btn.active[data-target="rek"] { background: var(--rk-vent-green); color: #fff; }
    .rk-vent-dashboard { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-vent-svg-stage { max-width: 200px; margin: 0 auto; height: 160px; }
    .rk-vent-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-wentylacja",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Jak rodzaj wentylacji wpływa na projektowe straty wentylacyjne?",
    "description": "Zestawienie strat ciepła dla wentylacji grawitacyjnej i rekuperacji. Obliczanie OZC na przykładzie domu 400m3 wg normy PN-EN 12831.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-wentylacja",
    "name": "Porównanie strat wentylacyjnych: Grawitacja vs Rekuperacja",
    "description": "Obliczenia inżynierskie różnicy w zapotrzebowaniu na moc grzewczą w zależności od wybranego systemu wymiany powietrza dla budynku o kubaturze 400 m³.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "straty wentylacyjne wzór",
      "rekuperacja a pompa ciepła",
      "obliczenia OZC wentylacja",
      "wentylacja grawitacyjna straty ciepła",
      "norma PN-B-03430"
    ],
    "measurementTechnique": "Aplikacja wzoru fizycznego ΦV = V * 0,34 * ΔT w zestawieniu ze sprawnością temperaturową wymiennika rekuperatora (η = 85%).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wentylacja Grawitacyjna: Krotność n=0,5 h-1 przy -18°C generuje potężną stratę 2584 W.",
        "Rekuperacja: Odzysk ciepła z η=85% i kontrolowany strumień redukuje stratę do zaledwie 491 W, oszczędzając 2 kW mocy źródła ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-wentylacja",
    "name": "Kalkulator Strat Wentylacyjnych OZC",
    "description": "Interaktywny symulator pozwalający porównać obciążenie cieplne budynku z wentylacją naturalną i mechaniczną z odzyskiem ciepła.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-vent-container" id="rk-ozc-vent-app">
    
    <div class="rk-vent-header">
        <div class="rk-vent-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M9.59 4.59A2 2 0 1 1 11 8H2m12.41 11.41A2 2 0 1 1 13 16h9m-1.59-7.41A2 2 0 1 0 19 12h3"></path></svg>
            Dynamika Powietrza
        </div>
        <h2 class="rk-vent-title">Jak rodzaj wentylacji wpływa na <span>projektowe straty wentylacyjne?</span></h2>
        <p class="rk-vent-lead">
            Rodzaj wentylacji decyduje o wielkości strumienia powietrza i stratach wentylacyjnych (Φ<sub>V,i</sub>). System grawitacyjny generuje ucieczkę ciepła na poziomie nawet 40–50% całkowitego bilansu budynku. Zastosowanie <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/" class="rk-link-vent">rekuperacji</a> o udokumentowanej sprawności temperaturowej 85% zmniejsza te straty o ponad 80%.
        </p>
        
        <div class="rk-eq-box">
            <div class="rk-eq">
                Φ<sub>V,i</sub> = V<sub>i</sub> &times; 0,34 &times; (&theta;<sub>int,i</sub> &minus; &theta;<sub>e</sub>)
            </div>
            <p class="rk-eq-desc">
                Gdzie <strong>V<sub>i</sub></strong> to projektowy strumień objętości powietrza [m³/h], a <strong>0,34 Wh/(m³·K)</strong> to stała cieplna powietrza.
            </p>
        </div>
    </div>

    <div class="rk-vent-interactive">
        <h3 class="rk-vent-section-title">Studium przypadku: Dom 400 m³ (II Strefa klimatyczna, &Delta;T = 38 K)</h3>

        <div class="rk-vent-switcher">
            <div class="rk-app-toggle" id="ventSwitchContainer" data-mode="grav">
                <div class="rk-toggle-glider" id="ventGlider"></div>
                <button class="rk-toggle-btn active" data-target="grav">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    Wariant A: Grawitacja
                </button>
                <button class="rk-toggle-btn" data-target="rek">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line></svg>
                    Wariant B: Rekuperacja
                </button>
            </div>
        </div>

        <div class="rk-vent-dashboard mode-grav" id="ventDashboard">
            
            <div class="rk-vent-svg-stage">
                <svg class="rk-svg-layer layer-grav" viewBox="0 0 100 100">
                    <path d="M 10 50 L 50 20 L 90 50 L 90 90 L 10 90 Z" fill="#1e293b" stroke="#334155" stroke-width="2"/>
                    <rect x="65" y="10" width="10" height="25" fill="#334155" />
                    <path class="anim-air-in" d="M 0 60 L 25 60" fill="none" stroke="#38bdf8" stroke-width="3" stroke-linecap="round"/>
                    <path class="anim-air-in" d="M 100 70 L 75 70" fill="none" stroke="#38bdf8" stroke-width="3" stroke-linecap="round"/>
                    <path class="anim-air-out" d="M 70 30 L 70 -5" fill="none" stroke="#ef4444" stroke-width="4" stroke-linecap="round"/>
                </svg>
                <svg class="rk-svg-layer layer-rek" viewBox="0 0 100 100">
                    <path d="M 10 50 L 50 20 L 90 50 L 90 90 L 10 90 Z" fill="#1e293b" stroke="#334155" stroke-width="2"/>
                    <rect class="anim-heat-exch" x="40" y="35" width="20" height="15" rx="2" />
                    <path class="anim-air-rek" d="M 10 40 L 40 40" fill="none" stroke="#38bdf8" stroke-width="2"/>
                    <path class="anim-air-rek" d="M 50 65 L 50 50" fill="none" stroke="#ef4444" stroke-width="2"/>
                    <path class="anim-air-rek" d="M 60 40 L 90 40" fill="none" stroke="#f97316" stroke-width="2"/>
                    <path class="anim-air-rek" d="M 50 35 L 50 10" fill="none" stroke="#64748b" stroke-width="2"/>
                </svg>
            </div>

            <div class="rk-vent-grid">
                <div class="rk-vent-tile">
                    <span class="rk-tile-lbl">Strumień Powietrza (V)</span>
                    <span class="rk-tile-val" id="ventValFlow">200 m³/h</span>
                    <span class="rk-tile-sub" id="ventSubFlow">n = 0,5 h<sup>-1</sup> (Infiltracja)</span>
                </div>
                <div class="rk-vent-tile">
                    <span class="rk-tile-lbl">Temp. Nawiewu po wymianie</span>
                    <span class="rk-tile-val" id="ventValTemp">-18°C</span>
                    <span class="rk-tile-sub" id="ventSubTemp">Brak odzysku ciepła</span>
                </div>
                <div class="rk-vent-tile tile-full">
                    <span class="rk-tile-lbl">Projektowa Strata Wentylacyjna (ΦV)</span>
                    <span class="rk-tile-val" id="ventValTotal">2584 W</span>
                    <span class="rk-tile-sub" id="ventSubTotal">200 × 0,34 × 38K</span>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-ozc-vent-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // Elementy DOM
    const switchContainer = document.getElementById('ventSwitchContainer');
    const btns = switchContainer.querySelectorAll('.rk-toggle-btn');
    const dashboard = document.getElementById('ventDashboard');
    
    // Pola tekstowe - Użyto unikalnych prefiksów "vent" w ID
    const valFlow = document.getElementById('ventValFlow'); 
    const subFlow = document.getElementById('ventSubFlow');
    const valTemp = document.getElementById('ventValTemp'); 
    const subTemp = document.getElementById('ventSubTemp');
    const valTotal = document.getElementById('ventValTotal'); 
    const subTotal = document.getElementById('ventSubTotal');

    const ventData = {
        grav: {
            flow: "200 m³/h", sFlow: "n = 0,5 h-1 (Infiltracja mrozu)",
            temp: "-18°C", sTemp: "Mroźne powietrze wpada do domu",
            total: "2584 W", sTotal: "200 × 0,34 × 38K"
        },
        rek: {
            flow: "120 m³/h", sFlow: "Kontrolowany wymóg higieniczny",
            temp: "+14,3°C", sTemp: "Powietrze dogrzane w wymienniku (η = 85%)",
            total: "490,96 W", sTotal: "Zysk: 2093 W (Zawiera nieszczelności)"
        }
    };

    // Logika przycisków
    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const mode = this.getAttribute('data-target');
            switchContainer.setAttribute('data-mode', mode);
            dashboard.className = "rk-vent-dashboard mode-" + mode;

            // Podmiana danych bez błędów krzyżowych
            const d = ventData[mode];
            valFlow.innerHTML = d.flow; subFlow.innerHTML = d.sFlow;
            valTemp.innerHTML = d.temp; subTemp.innerHTML = d.sTemp;
            valTotal.innerHTML = d.total; subTotal.innerHTML = d.sTotal;
        });
    });
});
</script>



<style>
:root {
    --rk-res-dark: #0f172a;
    --rk-res-brand: #ea580c; /* Ciepły pomarańcz dla fizyki przewodzenia ciepła */
    --rk-res-brand-light: #ffedd5;
    --rk-res-accent: #f97316;
    --rk-res-green: #10b981;
    --rk-res-green-bg: #ecfdf5;
    --rk-res-red: #ef4444;
    --rk-res-red-bg: #fef2f2;
    --rk-res-bg: #ffffff;
    --rk-res-panel: #f8fafc;
    --rk-res-border: #cbd5e1;
    --rk-res-text: #334155;
    --rk-res-muted: #64748b;
}

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

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

.rk-res-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(234, 88, 12, 0.25);
    color: #ffedd5;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(234, 88, 12, 0.4);
}

.rk-res-header h2 {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-res-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
}

.rk-res-lead strong {
    color: #ffffff;
    font-weight: 800;
}

.rk-res-lead a {
    color: #ffedd5;
    text-decoration: none;
    border-bottom: 1px dashed #ffedd5;
    transition: color 0.3s;
}

.rk-res-lead a:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

/* Interaktywny Panel Wyboru */
.rk-res-interactive {
    padding: 40px 50px;
    background: var(--rk-res-panel);
}

/* Selektor kafelków (Materiały wykończeniowe) */
.rk-res-selector-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 10px;
    margin-bottom: 35px;
}

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

.rk-res-select-btn:hover {
    background: #f1f5f9;
    border-color: #94a3b8;
    transform: translateY(-2px);
}

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

.rk-btn-txt {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-res-text);
}

.rk-res-select-btn.active .rk-btn-txt {
    color: var(--rk-res-brand);
}

/* Główny Dashboard Prezentacji */
.rk-res-dashboard {
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-res-border);
    padding: 35px;
    display: grid;
    grid-template-columns: 220px 1fr;
    gap: 40px;
    align-items: center;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.03);
}

/* Kontener Wizualizacji SVG */
.rk-res-svg-stage {
    background: var(--rk-res-dark);
    border-radius: 16px;
    padding: 20px;
    height: 220px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 15px rgba(0,0,0,0.4);
    position: relative;
}

.rk-res-svg {
    width: 100%;
    height: auto;
    display: block;
}

/* Dynamiczne modyfikacje SVG przez klasy narzucane z JS */
.anim-cop-needle { transform-origin: 50px 80px; transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1); }
.anim-barrier-layer { transition: height 0.4s ease, fill 0.4s ease; transform-origin: bottom; }

/* Tarcza wydajności COP */
.rk-res-svg-stage[data-material="gres"] .anim-cop-needle { transform: rotate(50deg); }
.rk-res-svg-stage[data-material="pvc"] .anim-cop-needle { transform: rotate(35deg); }
.rk-res-svg-stage[data-material="panele"] .anim-cop-needle { transform: rotate(0deg); }
.rk-res-svg-stage[data-material="deska"] .anim-cop-needle { transform: rotate(-30deg); }
.rk-res-svg-stage[data-material="dywan"] .anim-cop-needle { transform: rotate(-55deg); }

/* Wysokość warstwy oporu cieplnego */
.rk-res-svg-stage[data-material="gres"] .anim-barrier-layer { height: 2px; fill: var(--rk-res-green); }
.rk-res-svg-stage[data-material="pvc"] .anim-barrier-layer { height: 6px; fill: #6ee7b7; }
.rk-res-svg-stage[data-material="panele"] .anim-barrier-layer { height: 14px; fill: #fcd34d; }
.rk-res-svg-stage[data-material="deska"] .anim-barrier-layer { height: 22px; fill: var(--rk-res-accent); }
.rk-res-svg-stage[data-material="dywan"] .anim-barrier-layer { height: 32px; fill: var(--rk-res-red); }

/* Siatka parametrów technicznych */
.rk-res-tiles-panel {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 15px;
}

.rk-res-tile {
    background: #f1f5f9;
    padding: 15px 20px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-res-brand);
    transition: all 0.3s;
}

.rk-res-tile.tile-full {
    grid-column: 1 / -1;
    background: var(--rk-res-dark);
    border-left-color: var(--rk-res-accent);
}

.rk-res-tile.norm-alert {
    border-left-color: var(--rk-res-red);
    background: var(--rk-res-red-bg);
}

.rk-tile-lbl {
    display: block;
    font-size: 11px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-res-muted);
    margin-bottom: 4px;
}

.rk-res-tile.tile-full .rk-tile-lbl { color: #94a3b8; }

.rk-tile-val {
    display: block;
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-res-dark);
}

.rk-res-tile.tile-full .rk-tile-val { color: #ffffff; font-size: 18px; }
.rk-res-tile.norm-alert .rk-tile-val { color: var(--rk-res-red); }

.rk-tile-sub {
    display: block;
    font-size: 12px;
    color: #64748b;
    margin-top: 4px;
    font-weight: 500;
}
.rk-res-tile.tile-full .rk-tile-sub { color: #cbd5e1; }

@media (max-width: 768px) {
    .rk-res-header, .rk-res-interactive { padding: 35px 25px; }
    .rk-res-header h2 { font-size: 24px; }
    .rk-res-selector-grid { grid-template-columns: 1fr; gap: 10px; }
    .rk-res-dashboard { grid-template-columns: 1fr; gap: 25px; padding: 25px; }
    .rk-res-svg-stage { height: 180px; max-width: 240px; margin: 0 auto; width: 100%; }
    .rk-res-tiles-panel { grid-template-columns: 1fr; gap: 12px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#article-okladziny",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/"
    },
    "headline": "Jak opór cieplny materiałów wykończeniowych zmienia parametry instalacji?",
    "description": "Analiza wpływu oporu cieplnego okładziny wierzchniej (R) na gęstość strumienia ogrzewania podłogowego i współczynnik COP pompy ciepła wg normy PN-EN 1264.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#dataset-okladziny",
    "name": "Zestawienie oporów cieplnych i wydajności typowych materiałów podłogowych",
    "description": "Twarde dane inżynierskie porównujące opory termiczne, gęstość strumienia cieplnego q oraz niezbędną temperaturę zasilania dla 5 rodzajów wykończenia podłogi.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "opór cieplny okładziny podłogowej",
      "norma PN-EN 1264 ogrzewanie",
      "temperatura zasilania podłogówki pompy ciepła",
      "deska warstwowa na ogrzewaniu podłogowym",
      "spadek efektywności COP pompy"
    ],
    "measurementTechnique": "Kalkulacja hydrauliczna i termiczna przenikania energii przez warstwy jastrychu i wykończenia wierzchniego dla stałej straty pomieszczenia 50 W/m2.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Gres/płytki: Grubość 10mm, opór R=0,015 m2K/W, idealne parametry zasilania 32°C.",
        "Deska warstwowa klejona: Grubość 14mm, wysoki opór R=0,120 m2K/W, podnosi zasilanie do 43°C.",
        "Gruby dywan z podkładem: Przekracza normatywny limit 0,150 m2K/W, generując spadek sprawności źródła grzewczego."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#webapp-okladziny",
    "name": "Interaktywny Analizator Opóru Termicznego Podłogi",
    "description": "Narzędzie symulacyjne demonstrujące w czasie rzeczywistym przełożenie fizycznego oporu okładziny wierzchniej na temperaturę zasilania i sprawność pompy ciepła (COP).",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and modern web browser with SVG rendering capability",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-res-container" id="rk-floor-res-app">
    
    <div class="rk-res-header">
        <div class="rk-res-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            Fizyka Przewodzenia Ciepła
        </div>
        <h2>Jak opór cieplny materiałów wykończeniowych zmienia parametry instalacji?</h2>
        <p class="rk-res-lead">
            Opór cieplny okładziny podłogowej (<strong>R<sub>&lambda;,B</sub></strong>) ogranicza strumień energii, a norma <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">PN-EN 1264</a> kategorycznie zabrania przekraczania wartości <strong>0,15 m²·K/W</strong> dla warstw wierzchnich. Wyższy opór cieplny materiału działa niczym izolator, wymuszając podniesienie temperatury zasilania instalacji o <strong>5–12°C</strong>. To bezpośrednio obniża sprawność <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pomp ciepła</a> (spadek COP o ok. 2,5% na każdy stopień w górę). Każdy rodzaj wykończenia musi być precyzyjnie dobrany już na etapie <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">obliczeń projektowych ogrzewania podłogowego</a>.
        </p>
    </div>

    <div class="rk-res-interactive">
        <h3 class="rk-res-section-title">Aplikacja Inżynierska: Porównanie parametrów wykończenia dla straty 50 W/m²</h3>
        
        <div class="rk-res-selector-grid">
            <button class="rk-res-select-btn active" data-mat="gres">
                <span class="rk-btn-txt">Płytki / Gres</span>
            </button>
            <button class="rk-res-select-btn" data-mat="pvc">
                <span class="rk-btn-txt">PVC / LVT</span>
            </button>
            <button class="rk-res-select-btn" data-mat="panele">
                <span class="rk-btn-txt">Panele</span>
            </button>
            <button class="rk-res-select-btn" data-mat="deska">
                <span class="rk-btn-txt">Deska Dąb</span>
            </button>
            <button class="rk-res-select-btn" data-mat="dywan">
                <span class="rk-btn-txt">Gruby Dywan</span>
            </button>
        </div>

        <div class="rk-res-dashboard">
            
            <div class="rk-res-svg-stage" id="resSvgStage" data-material="gres">
                <svg class="rk-res-svg" viewBox="0 0 100 110">
                    <path d="M 15 45 A 35 35 0 0 1 85 45" fill="none" stroke="#334155" stroke-width="6" stroke-linecap="round"/>
                    <path d="M 15 45 A 35 35 0 0 1 50 10" fill="none" stroke="#ef4444" stroke-width="6" stroke-linecap="round"/>
                    <path d="M 50 10 A 35 35 0 0 1 85 45" fill="none" stroke="#10b981" stroke-width="6" stroke-linecap="round"/>
                    <text x="50" y="28" fill="#94a3b8" font-size="7" font-weight="bold" text-anchor="middle">COP POMPY</text>
                    
                    <g class="anim-cop-needle">
                        <line x1="50" y1="45" x2="50" y2="15" stroke="#ffffff" stroke-width="2.5" stroke-linecap="round"/>
                        <circle cx="50" cy="45" r="4" fill="#cbd5e1"/>
                    </g>
                    
                    <rect x="10" y="90" width="80" height="15" fill="#475569" rx="2" />
                    <circle cx="30" cy="97" r="4" fill="#ef4444"/>
                    <circle cx="50" cy="97" r="4" fill="#ef4444"/>
                    <circle cx="70" cy="97" r="4" fill="#ef4444"/>
                    
                    <rect class="anim-barrier-layer" x="10" y="88" width="80" height="2" rx="1"/>
                    <text x="50" y="78" fill="#ffffff" font-size="6" text-anchor="middle" letter-spacing="0.5">BARIERA TERMICZNA</text>
                </svg>
            </div>

            <div class="rk-res-tiles-panel" id="resTilesPanel">
                <div class="rk-res-tile">
                    <span class="rk-tile-lbl">Grubość Materiału</span>
                    <span class="rk-tile-val" id="resValThickness">10 mm</span>
                </div>
                <div class="rk-res-tile" id="resTileLimit">
                    <span class="rk-tile-lbl">Opór cieplny R<sub>&lambda;,B</sub></span>
                    <span class="rk-tile-val" id="resValR">0,015 m²·K/W</span>
                </div>
                <div class="rk-res-tile">
                    <span class="rk-tile-lbl">Max Gęstość Strumienia (q)</span>
                    <span class="rk-tile-val" id="resValQ">95 W/m² (przy t<sub>zas</sub>=35°C)</span>
                </div>
                <div class="rk-res-tile tile-full">
                    <span class="rk-tile-lbl">Wymagana Temp. Zasilania (dla straty 50 W/m²)</span>
                    <span class="rk-tile-val" id="resValZas">32°C (Idealna sprawność układu)</span>
                    <span class="rk-tile-sub" id="resValSub">Zużycie energii elektrycznej w normie projektowej.</span>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Zgodnie z wytycznymi - brak tagów H2/H3 w strukturze blokady)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-floor-res-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;"><div style="font-size:16px; text-transform:uppercase; margin-bottom:8px;">Błąd ochrony autorskiej</div><div style="font-size:13px; color:#cbd5e1;">Zestawienia Dataset oraz aplikacja symulatora okładzin wierzchnich stanowią integralną własność Projekt-Ogrzewania.pl.</div></div>';
        return;
    }

    // 2. Elementy sterujące i dashboard
    const btns = document.querySelectorAll('.rk-res-select-btn');
    const svgStage = document.getElementById('resSvgStage');
    const tileLimit = document.getElementById('resTileLimit');
    
    // Pola tekstowe kafelków
    const resThickness = document.getElementById('resValThickness');
    const resR = document.getElementById('resValR');
    const resQ = document.getElementById('resValQ');
    const resZas = document.getElementById('resValZas');
    const resSub = document.getElementById('resValSub');

    // Baza danych parametrów technicznych (czyste sznury znaków bez backticków)
    const materialDb = {
        gres: {
            mode: "gres", thickness: "10 mm", rVal: "0,015 m²·K/W",
            qVal: "95 W/m² (Dedykowana podłogówce)",
            zas: "32°C (Idealna sprawność układu)",
            sub: "Doskonała przewodność cieplna ceramiki. Pompa ciepła pracuje z najwyższym możliwym COP.",
            isOver: false
        },
        pvc: {
            mode: "pvc", thickness: "2,5 mm", rVal: "0,030 m²·K/W",
            qVal: "82 W/m² (Wysoka wydajność)",
            zas: "34°C (Stabilne parametry operacyjne)",
            sub: "Niski opór własny cienkich okładzin LVT klejonych do jastrychu. Bardzo dobry materiał.",
            isOver: false
        },
        panele: {
            mode: "panele", thickness: "8 mm", rVal: "0,070 m²·K/W",
            qVal: "60 W/m² (Średni opór materiałowy)",
            zas: "38°C (Wymaga korekty krzywej grzewczej)",
            sub: "Konieczność zastosowania dedykowanego, cienkiego podkładu kwarcowego maty perforowanej.",
            isOver: false
        },
        deska: {
            mode: "deska", thickness: "14 mm", rVal: "0,120 m²·K/W",
            qVal: "42 L/m² (Niska zdolność emisyjna)",
            zas: "43°C (Wzrost zużycia prądu o ok. 27.5%)",
            sub: "Drewno działa jak barierowy izolator. Wymusza podniesienie temperatury wody o 11 K w stosunku do gresu.",
            isOver: false
        },
        dywan: {
            mode: "dywan", thickness: "12 mm", rVal: "0,160 m²·K/W",
            qVal: "28 W/m² (Układ skrajnie dławiony)",
            zas: "47°C (Przekroczenie progu ekonomicznego)",
            sub: "PRZEKROCZONA NORMA PN-EN 1264 (>0,15 m²·K/W). Pompa ciepła traci efektywność i drastycznie rosną rachunki.",
            isOver: true
        }
    };

    // 3. Logika obsługi kliknięć kafelków selektora
    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const matKey = this.getAttribute('data-mat');
            const data = materialDb[matKey];

            // Aktualizacja stanu SVG
            svgStage.setAttribute('data-material', data.mode);

            // Podmiana danych liczbowych i opisów
            resThickness.textContent = data.thickness;
            resR.textContent = data.rVal;
            resQ.textContent = data.qVal;
            resZas.textContent = data.zas;
            resSub.textContent = data.sub;

            // Obsługa alertu przekroczenia normy PN-EN 1264
            if (data.isOver) {
                tileLimit.className = "rk-res-tile norm-alert";
                resR.style.color = "var(--rk-res-red)";
            } else {
                tileLimit.className = "rk-res-tile";
                resR.style.color = "var(--rk-res-dark)";
            }
        });
    });
});
</script>



<style>
:root {
    --rk-algo-dark: #0f172a;
    --rk-algo-brand: #8b5cf6; /* Inżynieryjny fiolet/indygo */
    --rk-algo-brand-light: #ede9fe;
    --rk-algo-accent: #f59e0b; /* Bursztyn dla akcentów ciepła */
    --rk-algo-blue: #0ea5e9;
    --rk-algo-bg: #ffffff;
    --rk-algo-panel: #f8fafc;
    --rk-algo-border: #e2e8f0;
    --rk-algo-text: #334155;
    --rk-algo-muted: #64748b;
    --rk-algo-green: #10b981;
}

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

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

.rk-algo-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(139, 92, 246, 0.25);
    color: #ddd6fe;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(139, 92, 246, 0.4);
}

.rk-algo-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-algo-title span { color: #c4b5fd; }

.rk-algo-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
}

.rk-algo-lead strong {
    color: #ffffff;
    font-weight: 800;
}

/* Sekcja Interaktywna - Blueprint */
.rk-algo-interactive {
    padding: 40px 50px;
    background: var(--rk-algo-panel);
}

/* Nawigacja Krokowa (Step-by-step) */
.rk-algo-steps-nav {
    display: flex;
    justify-content: space-between;
    margin-bottom: 35px;
    position: relative;
}

.rk-algo-steps-nav::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 0;
    right: 0;
    height: 2px;
    background: var(--rk-algo-border);
    z-index: 1;
    transform: translateY(-50%);
}

.rk-step-btn {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: #ffffff;
    border: 2px solid var(--rk-algo-border);
    color: var(--rk-algo-muted);
    font-weight: 900;
    font-size: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    position: relative;
    z-index: 2;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 2px 4px rgba(0,0,0,0.05);
}

.rk-step-btn:hover {
    border-color: var(--rk-algo-brand);
    color: var(--rk-algo-brand);
    transform: scale(1.1);
}

.rk-step-btn.active {
    background: var(--rk-algo-brand);
    border-color: var(--rk-algo-brand);
    color: #ffffff;
    box-shadow: 0 0 15px rgba(139, 92, 246, 0.4);
    transform: scale(1.15);
}

/* Dashboard Zawartości */
.rk-algo-dashboard {
    display: grid;
    grid-template-columns: 280px 1fr;
    gap: 35px;
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-algo-border);
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.03);
}

/* Obszar SVG (Styl Blueprint / Schemat) */
.rk-algo-svg-stage {
    background: #1e293b;
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
    border: 2px solid #334155;
    background-image: 
        linear-gradient(rgba(255,255,255,0.05) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,0.05) 1px, transparent 1px);
    background-size: 20px 20px;
}

.rk-algo-svg { width: 100%; height: auto; max-width: 220px; }

.rk-svg-layer { opacity: 0; position: absolute; transition: opacity 0.4s ease, transform 0.4s ease; transform: scale(0.95); width: 100%; height: 100%; }
.rk-svg-layer.active { opacity: 1; transform: scale(1); position: relative; }

/* Animacje SVG dla poszczególnych kroków */
/* Krok 1: Geometria */
.anim-measure { stroke-dasharray: 100; stroke-dashoffset: 100; animation: drawLine 1.5s forwards ease-out; }
/* Krok 2: U-value */
.anim-u-layer { opacity: 0; animation: fadeInDown 0.5s forwards; }
/* Krok 3: Straty bazowe */
.anim-heat-base { stroke-dasharray: 8 8; animation: heatFlowBase 1.5s linear infinite; }
/* Krok 4: Mostki */
.anim-bridge { animation: pulseBridge 1.5s infinite alternate; }
/* Krok 5: Wentylacja */
.anim-fan-spin { transform-origin: 50px 50px; animation: spinFan 2s linear infinite; }
.anim-air-flow { stroke-dasharray: 5 10; animation: heatFlowBase 1s linear infinite; }
/* Krok 6: Suma */
.anim-sum-glow { animation: pulseSum 2s infinite alternate; }

@keyframes drawLine { to { stroke-dashoffset: 0; } }
@keyframes fadeInDown { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } }
@keyframes heatFlowBase { to { stroke-dashoffset: -16; } }
@keyframes pulseBridge { 0% { fill: #ef4444; filter: drop-shadow(0 0 2px #ef4444); } 100% { fill: #fca5a5; filter: drop-shadow(0 0 10px #ef4444); } }
@keyframes spinFan { to { transform: rotate(360deg); } }
@keyframes pulseSum { 0% { fill: #c4b5fd; filter: drop-shadow(0 0 5px #8b5cf6); } 100% { fill: #ffffff; filter: drop-shadow(0 0 20px #8b5cf6); } }

/* Treść Panelu */
.rk-algo-content {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-algo-step-badge {
    font-size: 11px;
    font-weight: 800;
    color: var(--rk-algo-brand);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 8px;
}

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

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

/* Sekcja Wzoru (HTML Math zamiast LaTeX) */
.rk-algo-formula-box {
    background: var(--rk-algo-dark);
    border-radius: 12px;
    padding: 15px 20px;
    margin-top: auto;
    border-left: 4px solid var(--rk-algo-brand);
}

.rk-formula-math {
    font-family: 'Cambria Math', 'Times New Roman', serif;
    font-size: 20px;
    color: #ddd6fe;
    letter-spacing: 1px;
    margin: 0 0 8px 0;
    text-align: center;
}

.rk-formula-desc {
    font-size: 12px;
    color: #94a3b8;
    text-align: center;
    margin: 0;
}
.rk-formula-desc strong { color: #cbd5e1; }

@media (max-width: 768px) {
    .rk-algo-header, .rk-algo-interactive { padding: 35px 20px; }
    .rk-algo-title { font-size: 24px; }
    .rk-algo-dashboard { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-algo-svg-stage { height: 200px; max-width: 100%; margin-bottom: 10px; }
    .rk-step-btn { width: 36px; height: 36px; font-size: 14px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-algorytm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Jak wygląda uproszczony algorytm kalkulatora OZC?",
    "description": "Poznaj 6 kroków sekwencyjnego obliczania oporów przegród, strat bazowych, mostków termicznych i wentylacji wg normy PN-EN 12831.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-algorytm",
    "name": "Algorytm obliczeniowy OZC - Zestawienie Wzorów",
    "description": "Zbiór uproszczonych formuł fizycznych używanych do wyznaczania projektowego obciążenia cieplnego budynku.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator OZC algorytm",
      "straty bazowe przez przenikanie wzór",
      "poprawka na mostki termiczne",
      "obliczenie strat wentylacyjnych wzór",
      "współczynnik przenikania ciepła U"
    ],
    "measurementTechnique": "Sekwencyjna metoda obliczeniowa zgodna z normą PN-EN 12831 integrująca straty przenikania i wentylacji (ΦHL = ΦT,corr + ΦV,total).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Krok 1-2: Geometria (A, ΔT) i opór cieplny (U).",
        "Krok 3-4: Straty bazowe (ΦT,base) i korekta na mostki cieplne (+15%).",
        "Krok 5-6: Straty wentylacyjne (ΦV,total) uwzględniające rekuperację oraz suma końcowa mocy grzewczej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-algorytm",
    "name": "Interaktywny Algorytm OZC",
    "description": "Narzędzie demonstracyjne przeprowadzające użytkownika przez 6 kluczowych kroków inżynieryjnych obliczeń strat ciepła budynku.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-algo-container" id="rk-algo-app">
    
    <div class="rk-algo-header">
        <div class="rk-algo-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line></svg>
            Inżynieria w pigułce
        </div>
        <h2 class="rk-algo-title">Jak wygląda <span>uproszczony algorytm</span> kalkulatora OZC?</h2>
        <p class="rk-algo-lead">
            Uproszczony algorytm obliczeniowy OZC opiera się na sekwencyjnym wyznaczaniu oporów przegród, strat bazowych oraz dodawaniu poprawek na mostki termiczne i wentylację zgodnie z rygorystyczną metodologią <strong>PN-EN 12831</strong>. Poniżej przedstawiamy 6 kluczowych kroków prowadzących do wyznaczenia ostatecznej mocy źródła ciepła.
        </p>
    </div>

    <div class="rk-algo-interactive">
        
        <div class="rk-algo-steps-nav" id="algoSteps">
            <div class="rk-step-btn active" data-step="1">1</div>
            <div class="rk-step-btn" data-step="2">2</div>
            <div class="rk-step-btn" data-step="3">3</div>
            <div class="rk-step-btn" data-step="4">4</div>
            <div class="rk-step-btn" data-step="5">5</div>
            <div class="rk-step-btn" data-step="6">6</div>
        </div>

        <div class="rk-algo-dashboard">
            
            <div class="rk-algo-svg-stage">
                
                <svg class="rk-svg-layer active" id="svg-step-1" viewBox="0 0 100 100">
                    <rect x="20" y="30" width="60" height="50" fill="none" stroke="#64748b" stroke-width="2"/>
                    <polygon points="20,30 50,10 80,30" fill="none" stroke="#64748b" stroke-width="2"/>
                    <line class="anim-measure" x1="10" y1="30" x2="10" y2="80" stroke="#38bdf8" stroke-width="2" marker-start="url(#arrow)" marker-end="url(#arrow)"/>
                    <line class="anim-measure" x1="20" y1="90" x2="80" y2="90" stroke="#38bdf8" stroke-width="2" marker-start="url(#arrow)" marker-end="url(#arrow)"/>
                    <text x="50" y="55" fill="#38bdf8" font-size="12" font-weight="bold" text-anchor="middle">ΔT</text>
                    <defs>
                        <marker id="arrow" viewBox="0 0 10 10" refX="5" refY="5" markerWidth="4" markerHeight="4" orient="auto-start-reverse">
                            <path d="M 0 0 L 10 5 L 0 10 z" fill="#38bdf8" />
                        </marker>
                    </defs>
                </svg>

                <svg class="rk-svg-layer" id="svg-step-2" viewBox="0 0 100 100">
                    <rect class="anim-u-layer" x="30" y="10" width="10" height="80" fill="#334155" />
                    <rect class="anim-u-layer" x="40" y="10" width="20" height="80" fill="#475569" style="animation-delay: 0.2s" />
                    <rect class="anim-u-layer" x="60" y="10" width="10" height="80" fill="#64748b" style="animation-delay: 0.4s" />
                    <text x="50" y="55" fill="#f59e0b" font-size="14" font-weight="bold" text-anchor="middle" style="animation-delay: 0.6s">U</text>
                </svg>

                <svg class="rk-svg-layer" id="svg-step-3" viewBox="0 0 100 100">
                    <rect x="40" y="10" width="20" height="80" fill="#334155" />
                    <path class="anim-heat-base" d="M 80 30 L 20 30" fill="none" stroke="#ef4444" stroke-width="4" stroke-linecap="round"/>
                    <path class="anim-heat-base" d="M 80 50 L 20 50" fill="none" stroke="#ef4444" stroke-width="4" stroke-linecap="round" style="animation-delay: 0.3s"/>
                    <path class="anim-heat-base" d="M 80 70 L 20 70" fill="none" stroke="#ef4444" stroke-width="4" stroke-linecap="round" style="animation-delay: 0.6s"/>
                </svg>

                <svg class="rk-svg-layer" id="svg-step-4" viewBox="0 0 100 100">
                    <rect x="20" y="20" width="60" height="60" fill="none" stroke="#475569" stroke-width="6"/>
                    <rect x="35" y="35" width="30" height="30" fill="none" stroke="#64748b" stroke-width="4"/>
                    <circle class="anim-bridge" cx="35" cy="35" r="5" />
                    <circle class="anim-bridge" cx="65" cy="35" r="5" style="animation-delay: 0.2s" />
                    <circle class="anim-bridge" cx="35" cy="65" r="5" style="animation-delay: 0.4s" />
                    <circle class="anim-bridge" cx="65" cy="65" r="5" style="animation-delay: 0.6s" />
                </svg>

                <svg class="rk-svg-layer" id="svg-step-5" viewBox="0 0 100 100">
                    <circle cx="50" cy="50" r="30" fill="none" stroke="#475569" stroke-width="4"/>
                    <g class="anim-fan-spin">
                        <path d="M 50 50 L 50 25 A 25 25 0 0 1 75 50 Z" fill="#0ea5e9" opacity="0.8"/>
                        <path d="M 50 50 L 50 75 A 25 25 0 0 1 25 50 Z" fill="#0ea5e9" opacity="0.8"/>
                    </g>
                    <path class="anim-air-flow" d="M 10 50 L 30 50" fill="none" stroke="#38bdf8" stroke-width="3"/>
                    <path class="anim-air-flow" d="M 90 50 L 70 50" fill="none" stroke="#ef4444" stroke-width="3"/>
                </svg>

                <svg class="rk-svg-layer" id="svg-step-6" viewBox="0 0 100 100">
                    <circle cx="50" cy="50" r="40" fill="none" stroke="#475569" stroke-width="2" stroke-dasharray="4 4"/>
                    <text class="anim-sum-glow" x="50" y="58" font-family="serif" font-size="28" font-weight="bold" text-anchor="middle">&Phi;</text>
                </svg>
            </div>

            <div class="rk-algo-content">
                <span class="rk-algo-step-badge" id="algoStepBadge">KROK 1 Z 6</span>
                <h3 id="algoTitle">Zdefiniowanie geometrii</h3>
                <p id="algoDesc">
                    Oblicz pola powierzchni wszystkich przegród zewnętrznych (A) z podziałem na kierunki świata oraz ustal projektową różnicę temperatur (ΔT) na podstawie strefy klimatycznej.
                </p>
                
                <div class="rk-algo-formula-box">
                    <div class="rk-formula-math" id="algoFormulaMath">&Delta;T = (&theta;<sub>int</sub> &minus; &theta;<sub>e</sub>)</div>
                    <p class="rk-formula-desc" id="algoFormulaDesc"><strong>&Delta;T</strong> &#8211; różnica temperatur zewn. i wewn.</p>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-algo-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // Elementy DOM
    const stepBtns = document.querySelectorAll('.rk-step-btn');
    const badge = document.getElementById('algoStepBadge');
    const title = document.getElementById('algoTitle');
    const desc = document.getElementById('algoDesc');
    const fMath = document.getElementById('algoFormulaMath');
    const fDesc = document.getElementById('algoFormulaDesc');

    // Baza danych algorytmu (Używamy zwykłego HTML dla matematyki)
    const algoData = {
        "1": {
            title: "Zdefiniowanie geometrii",
            desc: "Oblicz pola powierzchni wszystkich przegród zewnętrznych (A) z podziałem na kierunki świata oraz ustal projektową różnicę temperatur na podstawie lokalnej strefy klimatycznej.",
            math: "&Delta;T = (&theta;<sub>int</sub> &minus; &theta;<sub>e</sub>)",
            fdesc: "<strong>&Delta;T</strong> - różnica temperatur"
        },
        "2": {
            title: "Wyznaczenie współczynników U",
            desc: "Dla każdej przegrody oblicz opór cieplny warstw materiałowych R (dzieląc grubość przez przewodność), a następnie wyznacz ostateczny współczynnik przenikania ciepła U.",
            math: "U = 1 / (&Sigma;R + R<sub>si</sub> + R<sub>se</sub>)",
            fdesc: "<strong>U</strong> - współczynnik przenikania ciepła [W/(m&sup2;&middot;K)]"
        },
        "3": {
            title: "Kalkulacja strat bazowych",
            desc: "Pomnóż pole powierzchni danej przegrody przez jej współczynnik U oraz wyznaczoną wcześniej różnicę temperatur. Daje to czystą stratę przenikania bez błędów montażowych.",
            math: "&Phi;<sub>T,base</sub> = A &times; U &times; &Delta;T",
            fdesc: "<strong>&Phi;<sub>T,base</sub></strong> - bazowa strata przez przenikanie"
        },
        "4": {
            title: "Poprawka na mostki termiczne",
            desc: "Skoryguj straty bazowe o dodatek na mostki liniowe (miejsca słabszej izolacji m.in. przy oknach i nadprożach). Standardowo przyjmuje się dodatek +15% dla budownictwa tradycyjnego.",
            math: "&Phi;<sub>T,corr</sub> = &Phi;<sub>T,base</sub> &times; 1,15",
            fdesc: "<strong>1,15</strong> - uproszczony globalny dodatek na mostki"
        },
        "5": {
            title: "Obliczenie strat wentylacyjnych",
            desc: "Wyznacz strumień powietrza V [m³/h] zależnie od systemu. Oblicz stratę uwzględniając ciepło właściwe powietrza oraz sprawność odzysku ciepła (rekuperacji).",
            math: "&Phi;<sub>V,total</sub> = V &times; 0,34 &times; &Delta;T &times; (1 &minus; &eta;)",
            fdesc: "<strong>&eta;</strong> - sprawność odzysku ciepła (rekuperacji)"
        },
        "6": {
            title: "Sumowanie końcowe",
            desc: "Dodaj skorygowane straty przez przenikanie do obliczonych strat wentylacyjnych. Otrzymany wynik to całkowita szczytowa moc projektowa budynku, determinująca dobór pompy ciepła.",
            math: "&Phi;<sub>HL</sub> = &Phi;<sub>T,corr</sub> + &Phi;<sub>V,total</sub>",
            fdesc: "<strong>&Phi;<sub>HL</sub></strong> - Projektowe Obciążenie Cieplne (OZC)"
        }
    };

    // Logika kroków
    stepBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            const step = this.getAttribute('data-step');
            
            // Przyciski
            stepBtns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            // SVG Warstwy
            document.querySelectorAll('.rk-svg-layer').forEach(layer => layer.classList.remove('active'));
            document.getElementById('svg-step-' + step).classList.add('active');

            // Teksty
            const data = algoData[step];
            badge.textContent = "KROK " + step + " Z 6";
            title.textContent = data.title;
            desc.textContent = data.desc;
            fMath.innerHTML = data.math;
            fDesc.innerHTML = data.fdesc;
        });
    });
});
</script>



<style>
:root {
    --rk-sim-dark: #0f172a;
    --rk-sim-brand: #8b5cf6; /* Inżynieryjny fiolet */
    --rk-sim-brand-light: #ede9fe;
    --rk-sim-accent: #f59e0b; /* Bursztyn/Ciepło */
    --rk-sim-blue: #0ea5e9;
    --rk-sim-bg: #ffffff;
    --rk-sim-panel: #f8fafc;
    --rk-sim-border: #e2e8f0;
    --rk-sim-text: #334155;
    --rk-sim-muted: #64748b;
    --rk-sim-green: #10b981;
    --rk-sim-red: #ef4444;
}

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

/* Nagłówek */
.rk-sim-header {
    background: linear-gradient(135deg, var(--rk-sim-dark) 0%, #2e1065 100%);
    padding: 40px 50px 30px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-sim-brand);
    text-align: center;
}

.rk-sim-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(139, 92, 246, 0.25);
    color: #ddd6fe;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(139, 92, 246, 0.4);
}

.rk-sim-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 15px 0;
    color: #ffffff;
}

.rk-sim-title span { color: #c4b5fd; }

.rk-sim-lead {
    font-size: 16px;
    line-height: 1.6;
    color: #cbd5e1;
    margin: 0 auto;
    max-width: 800px;
}

/* Główny układ interfejsu */
.rk-sim-interactive {
    padding: 40px 50px;
    background: var(--rk-sim-panel);
}

/* Postęp w symulatorze */
.rk-sim-progress-bar {
    display: flex;
    justify-content: space-between;
    margin-bottom: 30px;
    position: relative;
    padding: 0 10px;
}

.rk-sim-progress-bar::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 20px;
    right: 20px;
    height: 4px;
    background: var(--rk-sim-border);
    z-index: 1;
    transform: translateY(-50%);
    border-radius: 2px;
}

.rk-sim-progress-fill {
    position: absolute;
    top: 50%;
    left: 20px;
    height: 4px;
    background: var(--rk-sim-brand);
    z-index: 1;
    transform: translateY(-50%);
    border-radius: 2px;
    transition: width 0.4s ease;
    width: 0%;
}

.rk-step-node {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-sim-border);
    color: transparent;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    z-index: 2;
    transition: all 0.4s ease;
}

.rk-step-node.completed { background: var(--rk-sim-brand); }
.rk-step-node.active { background: var(--rk-sim-brand); box-shadow: 0 0 0 6px var(--rk-sim-brand-light); }

/* Dashboard Symulatora */
.rk-sim-dashboard {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: 30px;
}

/* Sekcja formularzy (Lewa) */
.rk-sim-controls {
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-sim-border);
    box-shadow: 0 10px 20px -5px rgba(0,0,0,0.02);
}

.rk-step-view { display: none; animation: fadeIn 0.4s ease; }
.rk-step-view.active { display: block; }

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

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

.rk-step-desc {
    font-size: 14px;
    color: var(--rk-sim-muted);
    line-height: 1.6;
    margin: 0 0 25px 0;
}

/* Elementy formularza */
.rk-form-group { margin-bottom: 25px; }

.rk-form-label {
    display: block;
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-sim-text);
    margin-bottom: 8px;
    text-transform: uppercase;
}

.rk-range-wrap {
    display: flex;
    align-items: center;
    gap: 15px;
}

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

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

.rk-val-display {
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-sim-brand);
    min-width: 60px;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

/* Radio Buttons dla standardów (Wymuszono układ pionowy) */
.rk-radio-group { 
    display: flex; 
    flex-direction: column; 
    gap: 10px; 
}

.rk-radio-btn {
    width: 100%;
    padding: 15px 20px;
    text-align: left;
    background: var(--rk-sim-panel);
    border: 2px solid var(--rk-sim-border);
    border-radius: 10px;
    cursor: pointer;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-sim-muted);
    transition: all 0.2s;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.rk-radio-btn span {
    font-size: 12px;
    font-weight: 400;
}

.rk-radio-btn.selected {
    background: var(--rk-sim-brand-light);
    border-color: var(--rk-sim-brand);
    color: var(--rk-sim-brand);
}

/* Przyciski Nawigacji Wewnętrznej */
.rk-nav-actions {
    display: flex;
    flex-direction: row; /* Zawsze poziomo */
    justify-content: space-between;
    align-items: center;
    gap: 15px; /* Odstęp między przyciskami */
    margin-top: 30px;
    padding-top: 20px;
    border-top: 1px solid var(--rk-sim-border);
}

.rk-action-btn {
    padding: 14px 24px; /* Grubsze buttony */
    border-radius: 10px;
    font-size: 15px;
    font-weight: 800;
    cursor: pointer;
    transition: all 0.2s;
    border: none;
    flex: 1; /* Równy podział szerokości na mobile */
    text-align: center;
}

.rk-btn-prev { background: #e2e8f0; color: #64748b; flex: 0.5; /* Mniejszy guzik "Wróć" */ }
.rk-btn-prev:hover { background: #cbd5e1; }
.rk-btn-prev:disabled { opacity: 0; pointer-events: none; }

.rk-btn-next { background: var(--rk-sim-brand); color: #ffffff; box-shadow: 0 4px 10px rgba(139, 92, 246, 0.3); }
.rk-btn-next:hover { transform: translateY(-2px); box-shadow: 0 6px 15px rgba(139, 92, 246, 0.4); }

/* Sekcja Wyników (Prawa) */
.rk-sim-results-panel {
    background: var(--rk-sim-dark);
    border-radius: 20px;
    padding: 25px;
    display: flex;
    flex-direction: column;
    position: relative;
    overflow: hidden;
}

.rk-res-header-txt {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: #94a3b8;
    margin-bottom: 20px;
    letter-spacing: 1px;
}

/* Wiersze podsumowania */
.rk-calc-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 0;
    border-bottom: 1px dashed rgba(255,255,255,0.1);
    font-size: 14px;
}

.rk-calc-row:last-of-type { border-bottom: none; }

.rk-row-lbl { color: #cbd5e1; }
.rk-row-val { color: #ffffff; font-weight: 700; font-variant-numeric: tabular-nums; }
.rk-val-hl { color: var(--rk-sim-accent); }

/* Końcowy Wynik OZC */
.rk-final-result-box {
    margin-top: auto;
    background: rgba(139, 92, 246, 0.2);
    border: 1px solid rgba(139, 92, 246, 0.4);
    border-radius: 14px;
    padding: 20px;
    text-align: center;
}

.rk-final-lbl { font-size: 11px; font-weight: 800; color: #ddd6fe; text-transform: uppercase; margin-bottom: 5px; display: block; }
.rk-final-val { font-size: 32px; font-weight: 900; color: #ffffff; line-height: 1; margin-bottom: 5px; transition: color 0.3s;}
.rk-final-formula { font-size: 11px; color: #a78bfa; font-family: monospace; }

/* SVG Dynamiczny Wykres */
.rk-live-chart {
    height: 100px;
    margin-bottom: 20px;
    width: 100%;
}
.chart-bar { transition: height 0.4s ease, y 0.4s ease; }

@media (max-width: 768px) {
    .rk-sim-header, .rk-sim-interactive { padding: 30px 20px; }
    .rk-sim-title { font-size: 24px; }
    .rk-sim-dashboard { grid-template-columns: 1fr; gap: 20px; }
    .rk-radio-group { flex-direction: column; }
    .rk-step-view { min-height: auto; }
    .rk-action-btn { font-size: 13px; padding: 12px 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-algorytm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Jak wygląda uproszczony algorytm kalkulatora OZC?",
    "description": "Poznaj 4 kroki sekwencyjnego obliczania oporów przegród, strat bazowych, mostków termicznych i wentylacji wg normy PN-EN 12831.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-algorytm",
    "name": "Algorytm obliczeniowy OZC - Zestawienie Wzorów",
    "description": "Zbiór uproszczonych formuł fizycznych używanych do wyznaczania projektowego obciążenia cieplnego budynku.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator OZC algorytm",
      "straty bazowe przez przenikanie wzór",
      "poprawka na mostki termiczne",
      "obliczenie strat wentylacyjnych wzór",
      "współczynnik przenikania ciepła U"
    ],
    "measurementTechnique": "Sekwencyjna metoda obliczeniowa zgodna z normą PN-EN 12831 integrująca straty przenikania i wentylacji (ΦHL = ΦT,corr + ΦV,total).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Krok 1: Geometria ściany (A) i różnica temperatur (ΔT).",
        "Krok 2: Ustalenie oporu cieplnego (U) przegrody.",
        "Krok 3: Obliczenie bazowej straty przenikania z uwzględnieniem mostków termicznych.",
        "Krok 4: Dodanie strat wentylacyjnych (ΦV,total) uwzględniających rekuperację oraz suma końcowa mocy grzewczej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-algorytm",
    "name": "Kalkulator Edukacyjny OZC",
    "description": "Interaktywny symulator pozwalający na żywo przeliczać straty ciepła przykładowej ściany w zależności od parametrów izolacji i wentylacji.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-sim-container" id="rk-sim-app">
    
    <div class="rk-sim-header">
        <div class="rk-sim-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line></svg>
            Inżynieria na żywo
        </div>
        <h2 class="rk-sim-title">Zrozum fizykę: <span>Uproszczony Kalkulator OZC</span></h2>
        <p class="rk-sim-lead">
            Algorytm obliczeniowy normy <strong>PN-EN 12831</strong> polega na żmudnym, sekwencyjnym wyznaczaniu oporów przegród, strat bazowych, mostków i wentylacji. Abyś zrozumiał skalę ucieczki ciepła ze swojego domu, stworzyliśmy uproszczony symulator. Sprawdź, jak jedna zmiana izolacji wpływa na wynik końcowy dla przykładowego pomieszczenia.
        </p>
    </div>

    <div class="rk-sim-interactive">
        
        <div class="rk-sim-progress-bar">
            <div class="rk-sim-progress-fill" id="simProgressLine"></div>
            <div class="rk-step-node active" id="node-1">1</div>
            <div class="rk-step-node" id="node-2">2</div>
            <div class="rk-step-node" id="node-3">3</div>
            <div class="rk-step-node" id="node-4">4</div>
        </div>

        <div class="rk-sim-dashboard">
            
            <div class="rk-sim-controls">
                
                <div class="rk-step-view active" id="view-1">
                    <h3 class="rk-step-title">Krok 1: Geometria i Klimat</h3>
                    <p class="rk-step-desc">Ustal pole powierzchni analizowanej ściany zewnętrznej oraz projektową różnicę temperatur na zewnątrz (Zima).</p>
                    
                    <div class="rk-form-group">
                        <label class="rk-form-label">Powierzchnia ściany (A)</label>
                        <div class="rk-range-wrap">
                            <input type="range" id="inpArea" class="rk-range-input" min="10" max="40" value="16" step="1">
                            <div class="rk-val-display"><span id="valAreaOut">16</span> m²</div>
                        </div>
                    </div>
                    
                    <div class="rk-form-group">
                        <label class="rk-form-label">Temperatura Zewnętrzna (θe)</label>
                        <div class="rk-range-wrap">
                            <input type="range" id="inpTemp" class="rk-range-input" min="-24" max="-16" value="-20" step="2">
                            <div class="rk-val-display"><span id="valTempOut">-20</span> °C</div>
                        </div>
                        <div style="font-size:11px; color:#94a3b8; margin-top:5px;">Wewn. stała: +20°C (ΔT = <span id="valDeltaOut">40</span>K)</div>
                    </div>
                </div>

                <div class="rk-step-view" id="view-2">
                    <h3 class="rk-step-title">Krok 2: Izolacja (Współczynnik U)</h3>
                    <p class="rk-step-desc">Określ standard izolacji ściany. Zgodnie z prawem, mniejsze U oznacza lepsze zatrzymywanie ciepła.</p>
                    
                    <div class="rk-radio-group">
                        <div class="rk-radio-btn" data-u="1.20">
                            <strong>Stary dom</strong>
                            <span>Brak izolacji</span>
                        </div>
                        <div class="rk-radio-btn selected" data-u="0.15">
                            <strong>WT 2021</strong>
                            <span>Standard prawny</span>
                        </div>
                        <div class="rk-radio-btn" data-u="0.10">
                            <strong>Pasywny</strong>
                            <span>Izolacja premium</span>
                        </div>
                    </div>
                </div>

                <div class="rk-step-view" id="view-3">
                    <h3 class="rk-step-title">Krok 3: Mostki termiczne</h3>
                    <p class="rk-step-desc">Pusta ściana to fikcja. Dodaj procentową poprawkę na okna, nadproża i błędy montażowe.</p>
                    
                    <div class="rk-radio-group">
                        <div class="rk-radio-btn selected" data-bridge="1.0">
                            <strong>0%</strong>
                            <span>Warunki laboratoryjne</span>
                        </div>
                        <div class="rk-radio-btn" data-bridge="1.15">
                            <strong>+15%</strong>
                            <span>Standard budowlany</span>
                        </div>
                        <div class="rk-radio-btn" data-bridge="1.30">
                            <strong>+30%</strong>
                            <span>Duże przeszklenia</span>
                        </div>
                    </div>
                </div>

                <div class="rk-step-view" id="view-4">
                    <h3 class="rk-step-title">Krok 4: System Wentylacji</h3>
                    <p class="rk-step-desc">Zimne powietrze z zewnątrz wpadające do pokoju trzeba dogrzać. Wybierz rodzaj wentylacji.</p>
                    
                    <div class="rk-radio-group">
                        <div class="rk-radio-btn selected" data-vent="gravity">
                            <strong>Grawitacyjna (Naturalna)</strong>
                            <span>Zimne powietrze zasysane w 100% z zewnątrz.</span>
                        </div>
                        <div class="rk-radio-btn" data-vent="reku">
                            <strong>Rekuperacja (Odzysk 85%)</strong>
                            <span>Powietrze dogrzane w wymienniku ciepła.</span>
                        </div>
                    </div>
                </div>

                <div class="rk-nav-actions">
                    <button class="rk-action-btn rk-btn-prev" id="btnPrev" disabled>Wróć</button>
                    <button class="rk-action-btn rk-btn-next" id="btnNext">Przejdź dalej</button>
                </div>
            </div>

            <div class="rk-sim-results-panel">
                <div class="rk-res-header-txt">Bieżący Bilans Pomieszczenia</div>
                
                <svg class="rk-live-chart" viewBox="0 0 100 100" preserveAspectRatio="none">
                    <rect x="10" y="80" width="30" height="20" fill="#f59e0b" class="chart-bar" id="barTrans"/>
                    <rect x="60" y="80" width="30" height="20" fill="#0ea5e9" class="chart-bar" id="barVent"/>
                </svg>

                <div class="rk-calc-row">
                    <span class="rk-row-lbl">1. Przenikanie ściany:</span>
                    <span class="rk-row-val"><span id="outWall">96</span> W</span>
                </div>
                <div class="rk-calc-row">
                    <span class="rk-row-lbl">2. Poprawka (Mostki):</span>
                    <span class="rk-row-val" style="color:#ef4444;">+<span id="outBridge">0</span> W</span>
                </div>
                <div class="rk-calc-row">
                    <span class="rk-row-lbl">3. Strata wentylacyjna:</span>
                    <span class="rk-row-val" style="color:#38bdf8;">+<span id="outVent">408</span> W</span>
                </div>

                <div class="rk-final-result-box">
                    <span class="rk-final-lbl">Szacunkowe OZC (Moc grzewcza)</span>
                    <div class="rk-final-val"><span id="outTotal">504</span> W</div>
                    <div class="rk-final-formula">ΦHL = ΦT,corr + ΦV,total</div>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-sim-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // 2. Elementy Nawigacji
    let currentStep = 1;
    const totalSteps = 4;
    const btnNext = document.getElementById('btnNext');
    const btnPrev = document.getElementById('btnPrev');
    const progLine = document.getElementById('simProgressLine');

    // 3. Stan Kalkulatora
    let state = {
        area: 16,
        tempOut: -20,
        tempIn: 20,
        uValue: 0.15,
        bridgeFactor: 1.0,
        ventType: 'gravity'
    };

    // 4. Elementy Formularza
    const inpArea = document.getElementById('inpArea');
    const valAreaOut = document.getElementById('valAreaOut');
    const inpTemp = document.getElementById('inpTemp');
    const valTempOut = document.getElementById('valTempOut');
    const valDeltaOut = document.getElementById('valDeltaOut');

    const radUValues = document.querySelectorAll('#view-2 .rk-radio-btn');
    const radBridges = document.querySelectorAll('#view-3 .rk-radio-btn');
    const radVents = document.querySelectorAll('#view-4 .rk-radio-btn');

    // 5. Elementy Wyjściowe (Wyniki)
    const outWall = document.getElementById('outWall');
    const outBridge = document.getElementById('outBridge');
    const outVent = document.getElementById('outVent');
    const outTotal = document.getElementById('outTotal');
    const barTrans = document.getElementById('barTrans');
    const barVent = document.getElementById('barVent');

    // --- FUNKCJE OBLICZENIOWE ---
    function calculateOZC() {
        const deltaT = state.tempIn - state.tempOut;
        
        // 1. Przenikanie bazy (A * U * dT)
        const phiBase = state.area * state.uValue * deltaT;
        
        // 2. Przenikanie z mostkami
        const phiCorr = phiBase * state.bridgeFactor;
        const bridgeDiff = phiCorr - phiBase;

        // 3. Wentylacja (Uproszczenie dla pokoju: Kubatura ok 40m3. Strumień V=20m3/h)
        const vol = state.area * 2.5; // Kubatura
        let vAir = vol * 0.5; // Krotność wymiany
        let ventLoss = 0;

        if (state.ventType === 'gravity') {
            ventLoss = vAir * 0.34 * deltaT;
        } else {
            // Rekuperacja 85% sprawności
            ventLoss = vAir * 0.34 * deltaT * 0.15;
        }

        // 4. Suma Całkowita
        const totalLoss = phiCorr + ventLoss;

        // Aktualizacja interfejsu z animacją liczb
        animateValue(outWall, Math.round(phiBase));
        animateValue(outBridge, Math.round(bridgeDiff));
        animateValue(outVent, Math.round(ventLoss));
        animateValue(outTotal, Math.round(totalLoss));

        // Aktualizacja słupków SVG (Wizualizacja proporcji)
        // Zakładamy max wartość ok 2000W dla starych domów, by słupki nie wychodziły poza SVG
        const scale = 100 / 2000; 
        let hTrans = Math.min(Math.round(phiCorr * scale), 100);
        let hVent = Math.min(Math.round(ventLoss * scale), 100);
        
        // Zapewnienie minimalnej widoczności słupka
        hTrans = Math.max(hTrans, 2);
        hVent = Math.max(hVent, 2);

        barTrans.setAttribute('height', hTrans);
        barTrans.setAttribute('y', 100 - hTrans);
        barVent.setAttribute('height', hVent);
        barVent.setAttribute('y', 100 - hVent);
        
        // Kolorowanie finału
        const finalValBox = document.querySelector('.rk-final-val');
        if(totalLoss > 1000) { finalValBox.style.color = '#ef4444'; } 
        else if (totalLoss < 300) { finalValBox.style.color = '#10b981'; }
        else { finalValBox.style.color = '#ffffff'; }
    }

    function animateValue(obj, end) {
        // Prosta podmiana dla płynności na mobile, bez ciężkich setInterval
        obj.textContent = end;
    }

    // --- BINDING EVENTÓW ---

    // Krok 1: Suwaki
    inpArea.addEventListener('input', (e) => {
        state.area = parseInt(e.target.value);
        valAreaOut.textContent = state.area;
        calculateOZC();
    });

    inpTemp.addEventListener('input', (e) => {
        state.tempOut = parseInt(e.target.value);
        valTempOut.textContent = state.tempOut;
        valDeltaOut.textContent = state.tempIn - state.tempOut;
        calculateOZC();
    });

    // Funkcja pomocnicza dla Radio Buttonów
    function setupRadioGroup(nodes, stateKey, attrName) {
        nodes.forEach(btn => {
            btn.addEventListener('click', function() {
                nodes.forEach(b => b.classList.remove('selected'));
                this.classList.add('selected');
                const val = this.getAttribute(attrName);
                // Konwersja na float jeśli to liczba, zostaw string jeśli wentylacja
                state[stateKey] = isNaN(parseFloat(val)) ? val : parseFloat(val);
                calculateOZC();
            });
        });
    }

    // Krok 2, 3, 4: Radia
    setupRadioGroup(radUValues, 'uValue', 'data-u');
    setupRadioGroup(radBridges, 'bridgeFactor', 'data-bridge');
    setupRadioGroup(radVents, 'ventType', 'data-vent');


    // --- NAWIGACJA KROKOWA ---
    function updateNav() {
        // Przyciski 
        btnPrev.disabled = currentStep === 1;
        
        if (currentStep === totalSteps) {
            btnNext.textContent = 'Zakończ';
            if(btnNext.classList.contains('finalized')) return;
            
            // Po zamknięciu domknięcia procesu -> przekierowanie na zakup
            btnNext.onclick = function() { window.location.href = 'https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/'; }
            
            btnNext.classList.add('finalized');
        } else {
            btnNext.textContent = 'Przejdź dalej';
            btnNext.onclick = null; // Czyszczenie
            btnNext.classList.remove('finalized');
        }

        // Pasek postępu
        const progress = ((currentStep - 1) / (totalSteps - 1)) * 100;
        progLine.style.width = progress + '%';

        // Kropeczki
        document.querySelectorAll('.rk-step-node').forEach((node, index) => {
            node.classList.remove('active', 'completed');
            if (index + 1 === currentStep) node.classList.add('active');
            if (index + 1 < currentStep) node.classList.add('completed');
        });

        // Widoki (Panele)
        document.querySelectorAll('.rk-step-view').forEach(view => {
            view.classList.remove('active');
        });
        document.getElementById('view-' + currentStep).classList.add('active');
    }

    btnNext.addEventListener('click', () => {
        if (currentStep < totalSteps) {
            currentStep++;
            updateNav();
        }
    });

    btnPrev.addEventListener('click', () => {
        if (currentStep > 1) {
            currentStep--;
            updateNav();
        }
    });

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



<style>
:root {
    --rk-hyd-dark: #0f172a;
    --rk-hyd-brand: #0284c7; /* Inżynieryjny niebieski hydrauliczny */
    --rk-hyd-brand-light: #e0f2fe;
    --rk-hyd-accent: #f59e0b;
    --rk-hyd-screen: #0b1120;
    --rk-hyd-bg: #ffffff;
    --rk-hyd-panel: #f8fafc;
    --rk-hyd-border: #e2e8f0;
    --rk-hyd-text: #334155;
    --rk-hyd-muted: #64748b;
    --rk-hyd-green: #10b981;
    --rk-hyd-red: #ef4444;
}

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

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

.rk-hyd-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.25);
    color: #38bdf8;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(2, 132, 199, 0.4);
}

.rk-hyd-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

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

.rk-hyd-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0 0 25px 0;
}

.rk-hyd-lead strong { color: #ffffff; font-weight: 800; }

.rk-link-hyd {
    color: #38bdf8;
    text-decoration: none;
    border-bottom: 1px dashed #38bdf8;
    transition: all 0.3s;
}
.rk-link-hyd:hover { color: #ffffff; border-bottom-color: #ffffff; }

/* Box ze wzorem termodynamicznym */
.rk-hyd-eq-box {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(56, 189, 248, 0.3);
    border-radius: 16px;
    padding: 22px;
    text-align: center;
    box-shadow: inset 0 4px 15px rgba(0,0,0,0.4);
}

.rk-hyd-eq {
    font-family: 'Cambria Math', 'Times New Roman', serif;
    font-size: 24px;
    color: #bae6fd;
    letter-spacing: 1px;
    margin: 0 0 10px 0;
}

.rk-hyd-eq-desc {
    font-size: 13px;
    color: #94a3b8;
    margin: 0;
}
.rk-hyd-eq-desc strong { color: #e2e8f0; }

/* Obszar Interaktywny */
.rk-hyd-interactive {
    padding: 40px 50px;
    background: var(--rk-hyd-panel);
}

/* Główny Dashboard */
.rk-hyd-dashboard {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 30px;
}

/* Lewy Panel Kontrolek (Wszystko dostępne od razu) */
.rk-hyd-controls {
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-hyd-border);
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.02);
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-hyd-panel-title {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-hyd-dark);
    margin: 0 0 25px 0;
    border-bottom: 2px solid var(--rk-hyd-panel);
    padding-bottom: 10px;
}

/* Grupy Formularzy */
.rk-hyd-group { margin-bottom: 30px; }
.rk-hyd-label { display: block; font-size: 12px; font-weight: 800; color: var(--rk-hyd-dark); margin-bottom: 12px; text-transform: uppercase; letter-spacing: 0.5px; }

.rk-hyd-range-box { display: flex; align-items: center; gap: 15px; }
.rk-hyd-slider { flex: 1; -webkit-appearance: none; height: 8px; background: #e2e8f0; border-radius: 4px; outline: none; }
.rk-hyd-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 24px; height: 24px; border-radius: 50%; background: var(--rk-hyd-brand); cursor: pointer; border: 3px solid #ffffff; box-shadow: 0 2px 6px rgba(0,0,0,0.15); }

.rk-hyd-val-display { font-size: 18px; font-weight: 900; color: var(--rk-hyd-brand); min-width: 75px; text-align: right; font-variant-numeric: tabular-nums; }

/* Przyciski Opcji (Radio kafelki pionowe) */
.rk-hyd-radio-stack { display: flex; flex-direction: column; gap: 10px; }
.rk-hyd-radio-tile { width: 100%; padding: 14px 18px; text-align: left; background: var(--rk-hyd-panel); border: 2px solid var(--rk-hyd-border); border-radius: 12px; cursor: pointer; transition: all 0.2s; display: flex; flex-direction: column; gap: 4px; }
.rk-hyd-radio-tile strong { font-size: 14px; color: var(--rk-hyd-dark); }
.rk-hyd-radio-tile span { font-size: 12px; color: var(--rk-hyd-muted); font-weight: 400; }
.rk-hyd-radio-tile.selected { background: var(--rk-hyd-brand-light); border-color: var(--rk-hyd-brand); }

/* Prawy Panel Diagnostyczny (Rotametr) */
.rk-hyd-results-panel {
    background: var(--rk-hyd-dark);
    border-radius: 20px;
    padding: 25px;
    display: flex;
    flex-direction: column;
    border: 2px solid #1e293b;
}

.rk-hyd-res-title { font-size: 11px; text-transform: uppercase; font-weight: 800; color: #94a3b8; margin-bottom: 20px; letter-spacing: 1px; text-align: center; }

/* Wizualizacja Rotametru SVG */
.rk-rotameter-stage {
    background: var(--rk-hyd-screen);
    border-radius: 14px;
    padding: 15px;
    height: 180px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 20px rgba(0,0,0,0.6);
    border: 1px solid #1e293b;
    margin-bottom: 20px;
}

.rk-rotameter-svg { width: 100%; height: 100%; max-width: 120px; }
.anim-float { transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1); }
.anim-water { transition: height 0.4s ease, y 0.4s ease; fill: #0ea5e9; fill-opacity: 0.3; }

/* Parametry kafelkowe */
.rk-hyd-rows { display: flex; flex-direction: column; gap: 10px; margin-bottom: 20px; }
.rk-hyd-row { display: flex; justify-content: space-between; align-items: center; font-size: 13.5px; padding-bottom: 8px; border-bottom: 1px dashed rgba(255,255,255,0.08); }
.rk-hyd-row:last-child { border-bottom: none; }
.rk-hyd-lbl { color: #cbd5e1; }
.rk-hyd-val { color: #ffffff; font-weight: 700; font-variant-numeric: tabular-nums; }

/* Końcowa Skrzynka Wynikowa */
.rk-hyd-final-box {
    background: rgba(2, 132, 199, 0.15);
    border: 1px solid rgba(2, 132, 199, 0.3);
    border-radius: 12px;
    padding: 15px;
    text-align: center;
}
.rk-final-lbl { font-size: 11px; font-weight: 800; color: #38bdf8; text-transform: uppercase; margin-bottom: 4px; display: block; }
.rk-final-val { font-size: 30px; font-weight: 900; color: #ffffff; font-variant-numeric: tabular-nums; line-height: 1.1; }
.rk-final-unit { font-size: 16px; font-weight: 700; color: #38bdf8; }

@media (max-width: 768px) {
    .rk-hyd-header, .rk-hyd-interactive { padding: 30px 20px; }
    .rk-hyd-title { font-size: 22px; }
    .rk-hyd-dashboard { grid-template-columns: 1fr; gap: 25px; }
    .rk-hyd-controls { padding: 20px; }
    .rk-rotameter-stage { height: 150px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-przeplyw",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Jak obliczyć wymagany przepływ wody w pętli podłogowej na podstawie OZC?",
    "description": "Zobacz termodynamiczny wzór na przepływ masowy wody (Vmin) w pętlach ogrzewania podłogowego zgodnie z normą PN-EN 1264 na bazie OZC.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-przeplyw",
    "name": "Algorytm Równoważenia Hydraulicznego pętli pex/pert 16x2",
    "description": "Zestawienie obliczeniowe wymaganych przepływów czynnika grzewczego na rotametrach rozdzielacza w korelacji z obciążeniem OZC pomieszczeń.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wymagany przepływ wody podłogówka",
      "rotametr wskaznik przepływu nastawy",
      "równoważenie hydrauliczne rozdzielacza",
      "wzór na przepływ pętli podłogowej",
      "norma PN-EN 1264 hydraulika"
    ],
    "measurementTechnique": "Przeliczanie strumienia objętościowego czynnika na litry na minutę (l/min) przy ciepłu właściwym wody 4182 J/(kg K).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Formuła inżynierska redukuje stałe fizyczne do stabilnego dzielnika 69,7 pomnożonego przez spadek temperatury delta T.",
        "Sypialnia (Przykład 3): Obciążenie OZC 750W przy strefowej pracy pompy ciepła z delta T = 5K generuje precyzyjną nastawę 2,15 l/min."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-przeplyw",
    "name": "Symulator Nastaw Rotametrów Rozdzielacza",
    "description": "Interaktywny symulator wizualizujący unoszenie pływaka w rurce rotametru w oparciu o wprowadzane wartości obciążeń OZC pokoju.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Canvas/SVG support",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-hyd-container" id="rk-hyd-app">
    
    <div class="rk-hyd-header">
        <div class="rk-hyd-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21.5 12H16c-.55 0-1-.45-1-1V9c0-1.1-.9-2-2-2h-2c-1.1 0-2 .9-2 2v2c0 .55-.45 1-1 1H2.5"></path></svg>
            Balans Hydrauliczny Układu
        </div>
        <h2 class="rk-hyd-title">Jak obliczyć wymagany przepływ wody w pętli podłogowej na podstawie <span>OZC?</span></h2>
        <p class="rk-hyd-lead">
            Wymagany przepływ wody (<strong>V<sub>min</sub></strong>) w pętli podłogowej wylicza się ze stosunku obciążenia cieplnego pokoju do iloczynu ciepła właściwego wody i spadku temperatury &Delta;T, co określa norma <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">PN-EN 1264</a>. Prawidłowa wartość przepływu gwarantuje zrównoważenie hydrauliczne układu rozdzielacza, eliminując strefy niedogrzane.
        </p>
        
        <div class="rk-hyd-eq-box">
            <div class="rk-hyd-eq">
                V<sub>min</sub> = &Phi;<sub>HL,i</sub> / (69,7 &times; &Delta;T)
            </div>
            <p class="rk-hyd-eq-desc">
                Gdzie <strong>&Phi;<sub>HL,i</sub></strong> to moc projektowa z OZC [W], a <strong>&Delta;T</strong> to różnica temperatur zasilania i powrotu [K].
            </p>
        </div>
    </div>

    <div class="rk-hyd-interactive">
        <div class="rk-hyd-dashboard">
            
            <div class="rk-hyd-controls">
                <div class="rk-hyd-panel-title">Parametry wejściowe z OZC</div>
                
                <div class="rk-hyd-group">
                    <label class="rk-hyd-label">Obciążenie cieplne pokoju (&Phi;<sub>HL,i</sub>)</label>
                    <div class="rk-hyd-range-box">
                        <input type="range" id="hydInpPower" class="rk-hyd-slider" min="200" max="1500" value="750" step="50">
                        <div class="rk-hyd-val-display"><span id="hydValPowerOut">750</span> W</div>
                    </div>
                </div>

                <div class="rk-hyd-group">
                    <label class="rk-hyd-label">Projektowa różnica temperatur (&Delta;T)</label>
                    <div class="rk-hyd-radio-stack">
                        <div class="rk-hyd-radio-tile" data-dt="3">
                            <strong>&Delta;T = 3 K (Wysoki przepływ)</strong>
                            <span>Dedykowane do łazienek w celu utrzymania wysokiej temperatury podłogi.</span>
                        </div>
                        <div class="rk-hyd-radio-tile selected" data-dt="5">
                            <strong>&Delta;T = 5 K (Standard Pompy Ciepła)</strong>
                            <span>Układ nisko-parametrowy 35/30°C gwarantujący najwyższy współczynnik COP.</span>
                        </div>
                        <div class="rk-hyd-radio-tile" data-dt="8">
                            <strong>&Delta;T = 8 K (Standard Kotłów)</strong>
                            <span>Rzadszy przepływ masowy czynnika, typowy dla układów z kotłami gazowymi.</span>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-hyd-results-panel">
                <div class="rk-hyd-res-title">Nastawa Rotametru Rozdzielacza</div>
                
                <div class="rk-rotameter-stage">
                    <svg class="rk-rotameter-svg" viewBox="0 0 100 100">
                        <rect x="42" y="10" width="16" height="80" fill="none" stroke="#64748b" stroke-width="2" rx="2"/>
                        <rect class="anim-water" x="43" y="50" width="14" height="40" />
                        
                        <line x1="38" y1="20" x2="44" y2="20" stroke="#94a3b8" stroke-width="1.5"/><text x="34" y="22" fill="#64748b" font-size="6" font-weight="bold">5</text>
                        <line x1="38" y1="35" x2="44" y2="35" stroke="#94a3b8" stroke-width="1.5"/><text x="34" y="37" fill="#64748b" font-size="6" font-weight="bold">4</text>
                        <line x1="38" y1="50" x2="44" y2="50" stroke="#94a3b8" stroke-width="1.5"/><text x="34" y="52" fill="#64748b" font-size="6" font-weight="bold">3</text>
                        <line x1="38" y1="65" x2="44" y2="65" stroke="#94a3b8" stroke-width="1.5"/><text x="34" y="67" fill="#64748b" font-size="6" font-weight="bold">2</text>
                        <line x1="38" y1="80" x2="44" y2="80" stroke="#94a3b8" stroke-width="1.5"/><text x="34" y="82" fill="#64748b" font-size="6" font-weight="bold">1</text>
                        
                        <g class="anim-float" id="hydRotameterFloat" transform="translate(0, 40)">
                            <polygon points="44,20 56,20 53,25 47,25" fill="#ef4444"/>
                            <rect x="47" y="25" width="6" height="3" fill="#ef4444"/>
                        </g>
                        <line x1="50" y1="10" x2="50" y2="90" stroke="#fbbf24" stroke-width="1" opacity="0.4"/>
                    </svg>
                </div>

                <div class="rk-hyd-rows">
                    <div class="rk-hyd-row">
                        <span class="rk-hyd-lbl">Moc obiegu (&Phi;):</span>
                        <span class="rk-hyd-val"><span id="lblHydPower">750</span> W</span>
                    </div>
                    <div class="rk-hyd-row">
                        <span class="rk-hyd-lbl">Projektowe &Delta;T:</span>
                        <span class="rk-hyd-val"><span id="lblHydDT">5</span> K</span>
                    </div>
                    <div class="rk-hyd-row">
                        <span class="rk-hyd-lbl">Stała inżynierska:</span>
                        <span class="rk-hyd-val">69,7</span>
                    </div>
                </div>

                <div class="rk-hyd-final-box">
                    <span class="rk-final-lbl">Wymagany przepływ (Vmin)</span>
                    <div class="rk-final-val"><span id="lblHydTotal">2.15</span> <span class="rk-final-unit">l/min</span></div>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez nagłówków w kodzie błędu)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-hyd-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;"><div style="font-size:16px; text-transform:uppercase; margin-bottom:8px;">Błąd autoryzacji skryptu</div><div style="font-size:13px; color:#cbd5e1;">Aplikacja rotametryczna oraz struktury danych Dataset są własnością intelektualną Projekt-Ogrzewania.pl.</div></div>';
        return;
    }

    // 2. Stan wejściowy kalkulatora
    let state = {
        power: 750,
        dT: 5
    };

    // 3. Elementy DOM
    const inpPower = document.getElementById('hydInpPower');
    const valPowerOut = document.getElementById('hydValPowerOut');
    const radTiles = document.querySelectorAll('.rk-hyd-radio-tile');

    // Pola wyjściowe wyników (Unikalne prefiksy hyd)
    const lblHydPower = document.getElementById('lblHydPower');
    const lblHydDT = document.getElementById('lblHydDT');
    const lblHydTotal = document.getElementById('lblHydTotal');
    const hydRotameterFloat = document.getElementById('hydRotameterFloat');

    // 4. Silnik obliczeń termodynamicznych przepływu masowego
    function updateFlowKalk() {
        const vMin = state.power / (69.7 * state.dT);
        
        lblHydPower.textContent = state.power;
        lblHydDT.textContent = state.dT;
        lblHydTotal.textContent = vMin.toFixed(2);

        // Skalowanie pozycji czerwonego pływaka rotometru (zakres 0 - 5 l/min)
        let pixelY = 65 - ((vMin - 1) * 15);
        if (pixelY < 0) pixelY = 0;
        if (pixelY > 65) pixelY = 65;

        hydRotameterFloat.setAttribute('transform', 'translate(0, ' + pixelY + ')');
    }

    // 5. Obsługa zdarzeń
    inpPower.addEventListener('input', function(e) {
        state.power = parseInt(e.target.value);
        valPowerOut.textContent = state.power;
        updateFlowKalk();
    });

    radTiles.forEach(tile => {
        tile.addEventListener('click', function() {
            radTiles.forEach(t => t.classList.remove('selected'));
            this.classList.add('selected');
            state.dT = parseInt(this.getAttribute('data-dt'));
            updateFlowKalk();
        });
    });

    // Uruchomienie obliczeń startowych
    updateFlowKalk();
});
</script>



<style>
:root {
    --rk-sum-dark: #0f172a;
    --rk-sum-panel: #1e293b;
    --rk-sum-primary: #10b981; /* Emerald/Green for success/summary */
    --rk-sum-primary-light: #d1fae5;
    --rk-sum-accent: #3b82f6; /* Blue for water */
    --rk-sum-warning: #f59e0b;
    --rk-sum-bg: #f8fafc;
    --rk-sum-border: #cbd5e1;
    --rk-sum-text: #334155;
    --rk-sum-text-dim: #64748b;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/* Animacje SVG */
.anim-check-draw { stroke-dasharray: 100; stroke-dashoffset: 100; animation: drawCheck 1.5s forwards ease-out; }
@keyframes drawCheck { to { stroke-dashoffset: 0; } }

.anim-pulse-ring { animation: pulseRing 2s infinite; transform-origin: center; }
@keyframes pulseRing { 0% { transform: scale(0.8); opacity: 1; } 100% { transform: scale(1.5); opacity: 0; } }

.anim-water-wave { animation: waveWater 3s linear infinite; }
@keyframes waveWater { 0% { transform: translateX(0); } 100% { transform: translateX(-20px); } }

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

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-summary-final",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Inżynierskie podsumowanie: Rola OZC w systemie grzewczym",
    "description": "Kompaktowe zestawienie reguł projektowych łączących wyniki OZC z geometrią pętli i zrównoważeniem hydraulicznym rozdzielacza.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-summary",
    "name": "Wskaźniki OZC dla domów jednorodzinnych (WT 2021)",
    "description": "Szacunkowe dane przeliczeniowe łączące metraż budynku w standardzie WT 2021 z mocą pompy ciepła i ilością obiegów grzewczych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "podsumowanie instalacji ozc",
      "szybki estymator ozc",
      "zapotrzebowanie na moc cieplną",
      "dobór pompy ciepła na podstawie ozc",
      "ilość pętli ogrzewania podłogowego"
    ],
    "measurementTechnique": "Szacowanie oparte na średnim wskaźniku 40 W/m2 dla budynków spełniających normę WT 2021 oraz optymalnej wielkości obwodu podłogówki.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Średnie zapotrzebowanie (WT 2021): ~40 W/m2",
        "Szacunkowa moc urządzenia: OZC + bufor na straty i CWU",
        "Średnia powierzchnia na 1 obieg grzewczy: ~15 m2 (przy rozstawie 15 cm)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-summary",
    "name": "Szybki Estymator OZC (WT 2021)",
    "description": "Moduł podsumowujący. Przelicza powierzchnię domu wybudowanego w standardzie WT 2021 na orientacyjne obciążenie cieplne, moc pompy i ilość pętli.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Forms",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-summary-container" id="rk-summary-app">
    
    <div class="rk-summary-header">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-expert-avatar" loading="lazy">
        <div class="rk-header-content">
            <div class="rk-header-badge">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                Wnioski Eksperta
            </div>
            <h2>Inżynierskie podsumowanie: OZC to serce instalacji</h2>
            <p>Zebrałem dla Ciebie 3 najważniejsze reguły projektowe łączące OZC z wykonawstwem podłogówki. Brak precyzyjnych obliczeń na etapie projektu to gwarancja problemów i strat finansowych.</p>
        </div>
    </div>

    <div class="rk-summary-body">
        
        <div class="rk-rules-list">
            <button class="rk-rule-btn active" data-panel="det-1">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg></div>
                <div class="rk-rule-text">
                    <h3>Koniec ze &#8222;zgadywaniem&#8221;</h3>
                    <p>OZC to jedyny matematyczny dowód</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="det-2">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                <div class="rk-rule-text">
                    <h3>Ochrona kapitału (Pompa)</h3>
                    <p>Zabezpieczenie przed przewymiarowaniem</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="det-3">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg></div>
                <div class="rk-rule-text">
                    <h3>Parametry układu</h3>
                    <p>Rozstaw rur i równoważenie l/min</p>
                </div>
            </button>
        </div>

        <div class="rk-rule-details">
            
            <div class="rk-detail-panel active" id="det-1">
                <h4>OZC to fundament projektu</h4>
                <p>Każde pomieszczenie gubi ciepło w innym tempie. Zgadywanie mocy cieplnej &#8222;na oko&#8221; (np. mnożąc m² przez losową wartość) prowadzi do katastrofy w rachunkach. Rzetelne <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-sum-link">obliczenia OZC</a> to twardy matematyczny fundament, na którym opiera się cały późniejszy dobór urządzeń.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <path d="M 50 80 L 50 40 L 100 15 L 150 40 L 150 80 Z" fill="none" stroke="#334155" stroke-width="3" stroke-linejoin="round"/>
                        <path d="M 100 35 L 120 45 L 120 65 Q 100 85 100 85 Q 80 65 80 45 Z" fill="#10b981" opacity="0.2" stroke="#10b981" stroke-width="2"/>
                        <path class="anim-check-draw" d="M 90 55 L 98 63 L 112 47" fill="none" stroke="#ffffff" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="det-2">
                <h4>Stop przewymiarowaniu pomp</h4>
                <p>Zbyt duża pompa ciepła, dobrana przez instalatora &#8222;dla bezpieczeństwa&#8221; bez OZC, będzie <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-sum-link">taktować</a>. Zjawisko to niszczy sprężarkę i podwaja zużycie prądu. OZC upewnia nas, że pompa zostanie dobrana idealnie do obciążenia budynku w punkcie biwalencyjnym.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <rect x="75" y="25" width="50" height="50" fill="#1e293b" stroke="#38bdf8" stroke-width="3" rx="4"/>
                        <circle class="anim-pulse-ring" cx="100" cy="50" r="15" fill="none" stroke="#10b981" stroke-width="2"/>
                        <circle cx="100" cy="50" r="15" fill="none" stroke="#38bdf8" stroke-width="2"/>
                        <path d="M 100 40 L 100 60 M 90 50 L 110 50 M 93 43 L 107 57 M 93 57 L 107 43" stroke="#ffffff" stroke-width="2" stroke-linecap="round"/>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="det-3">
                <h4>Hydraulika bez tajemnic</h4>
                <p>Mając OZC poszczególnych pokoi, projektant wie, gdzie zagęścić rozstaw rur do 10 cm, a gdzie pozostawić 15 cm. Ponadto, wynik OZC (Waty) pozwala przeliczyć <a href="https://projekt-ogrzewania.pl/regulacja-ogrzewania-podlogowego-przeplywy-w-petlach/" class="rk-sum-link">przepływ w l/min</a> dla każdego rotametru na rozdzielaczu. To gwarancja zrównoważenia układu.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <rect x="85" y="20" width="30" height="60" fill="none" stroke="#cbd5e1" stroke-width="3" rx="4"/>
                        <path class="anim-water-wave" d="M 85 40 Q 92 35 100 40 T 115 40 T 130 40 L 130 80 L 85 80 Z" fill="#3b82f6" opacity="0.8"/>
                        <polygon points="90,45 110,45 105,55 95,55" fill="#ef4444"/>
                        <text x="140" y="52" fill="#10b981" font-size="12" font-weight="bold">V = 1.8 l/min</text>
                    </svg>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-quick-calc">
        <div class="rk-calc-header">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-sum-primary)" stroke-width="2.5"><rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><line x1="8" y1="6" x2="16" y2="6"></line><line x1="16" y1="14" x2="16.01" y2="14"></line><line x1="12" y1="14" x2="12.01" y2="14"></line><line x1="8" y1="14" x2="8.01" y2="14"></line><line x1="16" y1="18" x2="16.01" y2="18"></line><line x1="12" y1="18" x2="12.01" y2="18"></line><line x1="8" y1="18" x2="8.01" y2="18"></line></svg>
                Szybki Estymator OZC (Dla standardu WT 2021)
            </h4>
            <span style="font-size:12px; color:#64748b;">(Wartości orientacyjne)</span>
        </div>

        <div class="rk-calc-grid">
            
            <div class="rk-calc-input-area">
                <div class="rk-calc-label">
                    Powierzchnia ogrzewana domu:
                    <span id="sumAreaOut">150 m²</span>
                </div>
                <input type="range" class="rk-sum-range" id="sumAreaSlider" min="80" max="300" step="10" value="150">
                <p style="font-size: 11px; color:#64748b; margin:0;">*Zakładane zapotrzebowanie ok. 40 W/m² (nowe budownictwo).</p>
            </div>

            <div class="rk-calc-results">
                <div class="rk-result-box">
                    <span class="rk-res-val" id="resOzc">6.0 <span style="font-size:14px;color:#64748b;">kW</span></span>
                    <span class="rk-res-lab">Szacunkowe OZC</span>
                </div>
                <div class="rk-result-box highlight">
                    <span class="rk-res-val" id="resPump">7.0 <span style="font-size:14px;color:var(--rk-sum-primary);">kW</span></span>
                    <span class="rk-res-lab">Sugerowana Pompa Ciepła</span>
                </div>
                <div class="rk-result-box">
                    <span class="rk-res-val" id="resLoops">10 <span style="font-size:14px;color:#64748b;">szt.</span></span>
                    <span class="rk-res-lab">Szacowana liczba obiegów</span>
                </div>
            </div>

        </div>
    </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (DOMAIN LOCK)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-summary-app').innerHTML = `
            <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border:1px solid #ef4444; border-radius:24px; font-weight:800;">
                BŁĄD LICENCJI: Kod podsumowania jest własnością projekt-ogrzewania.pl
            </div>`;
        return;
    }

    // 2. Logika Zakładek (Złote Zasady)
    const btns = document.querySelectorAll('.rk-rule-btn');
    const panels = document.querySelectorAll('.rk-detail-panel');

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

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

    // 3. Logika Szybkiego Estymatora OZC
    const slider = document.getElementById('sumAreaSlider');
    const areaOut = document.getElementById('sumAreaOut');
    const resOzc = document.getElementById('resOzc');
    const resPump = document.getElementById('resPump');
    const resLoops = document.getElementById('resLoops');

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

        // Obliczenia:
        // Zakładamy WT2021 (40 W/m2)
        const ozc_W = area * 40;
        const ozc_kW = ozc_W / 1000;
        
        // Pompa Ciepła: OZC + lekki naddatek na straty (np. 1kW)
        const pump_kW = Math.ceil(ozc_kW + 1);

        // Średnio 1 obieg (pętla) na 15 m2
        const loops = Math.ceil(area / 15);

        resOzc.innerHTML = ozc_kW.toFixed(1) + ' <span style="font-size:14px;color:#64748b;">kW</span>';
        resPump.innerHTML = pump_kW.toFixed(1) + ' <span style="font-size:14px;color:var(--rk-sum-primary);">kW</span>';
        resLoops.innerHTML = loops + ' <span style="font-size:14px;color:#64748b;">szt.</span>';
    }

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



<style>
:root {
    --rk-base-dark: #0f172a;
    --rk-base-panel: #1e293b;
    --rk-base-card: #ffffff;
    --rk-brand-primary: #f59e0b; /* Złoty bursztyn jako główny akcent (ciepło) */
    --rk-brand-light: #fef3c7;
    --rk-brand-hover: #d97706;
    --rk-state-green: #10b981;
    --rk-state-red: #ef4444;
    --rk-text-main: #334155;
    --rk-text-muted: #64748b;
    --rk-border-color: #e2e8f0;
}

.rk-geo-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-base-card);
    border-radius: 20px;
    box-shadow: 0 20px 40px -10px rgba(245, 158, 11, 0.15);
    border: 1px solid rgba(245, 158, 11, 0.25);
    overflow: hidden;
}

/* Sekcja Nagłówka */
.rk-geo-header {
    background: var(--rk-base-dark);
    padding: 40px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-brand-primary);
    position: relative;
}

.rk-geo-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(245, 158, 11, 0.2);
    color: var(--rk-brand-primary);
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(245, 158, 11, 0.4);
}

.rk-geo-header h2 {
    font-size: 26px;
    font-weight: 900;
    line-height: 1.4;
    margin: 0 0 15px 0;
    color: #ffffff;
}

.rk-geo-header h2 span { color: var(--rk-brand-primary); }

.rk-geo-lead {
    font-size: 15px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-geo-lead strong { color: #ffffff; font-weight: 700; }
.rk-link-geo { color: var(--rk-brand-primary); text-decoration: none; border-bottom: 1px dashed var(--rk-brand-primary); transition: all 0.3s; }
.rk-link-geo:hover { color: #ffffff; border-bottom-color: #ffffff; }

/* Pulpit Interaktywny */
.rk-geo-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-geo-dashboard {
    display: grid;
    grid-template-columns: 1fr 340px;
    gap: 30px;
}

/* Panel Kontrolek (Lewy) */
.rk-geo-controls {
    background: #ffffff;
    border-radius: 16px;
    padding: 30px;
    border: 1px solid var(--rk-border-color);
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.03);
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-geo-panel-title {
    font-size: 17px;
    font-weight: 800;
    color: var(--rk-base-dark);
    margin: 0 0 25px 0;
    border-bottom: 2px solid #f1f5f9;
    padding-bottom: 12px;
}

.rk-geo-group { margin-bottom: 30px; }
.rk-geo-label { display: block; font-size: 12px; font-weight: 800; color: var(--rk-text-muted); margin-bottom: 12px; text-transform: uppercase; letter-spacing: 0.5px; }

.rk-geo-range-box { display: flex; align-items: center; gap: 15px; }
.rk-geo-slider { flex: 1; -webkit-appearance: none; height: 6px; background: #e2e8f0; border-radius: 3px; outline: none; }
.rk-geo-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 22px; height: 22px; border-radius: 50%; background: var(--rk-brand-primary); cursor: pointer; border: 3px solid #ffffff; box-shadow: 0 2px 4px rgba(0,0,0,0.2); transition: transform 0.1s; }
.rk-geo-slider::-webkit-slider-thumb:active { transform: scale(1.2); }

.rk-geo-val-display { font-size: 20px; font-weight: 900; color: var(--rk-base-dark); min-width: 85px; text-align: right; font-variant-numeric: tabular-nums; }
.rk-geo-val-display span { color: var(--rk-brand-primary); }

/* Kafelki wyboru rozstawu */
.rk-geo-tile-stack { display: flex; flex-direction: column; gap: 12px; }
.rk-geo-tile-option { width: 100%; padding: 14px 18px; text-align: left; background: #ffffff; border: 2px solid var(--rk-border-color); border-radius: 10px; cursor: pointer; transition: all 0.2s; display: flex; flex-direction: column; gap: 4px; position: relative; overflow: hidden; }
.rk-geo-tile-option strong { font-size: 15px; color: var(--rk-base-dark); }
.rk-geo-tile-option span { font-size: 12px; color: var(--rk-text-muted); font-weight: 500; }

.rk-geo-tile-option::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: transparent; transition: background 0.2s; }
.rk-geo-tile-option.selected { background: var(--rk-brand-light); border-color: var(--rk-brand-primary); }
.rk-geo-tile-option.selected::before { background: var(--rk-brand-primary); }
.rk-geo-tile-option.selected strong { color: var(--rk-brand-hover); }

/* Wyniki i Wizualizacja (Prawa) */
.rk-geo-results-panel {
    background: var(--rk-base-panel);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    flex-direction: column;
    border: 1px solid #334155;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.1);
}

.rk-geo-res-title { font-size: 11px; text-transform: uppercase; font-weight: 800; color: #94a3b8; margin-bottom: 15px; letter-spacing: 1px; text-align: center; }

/* Nowy Dwuczęściowy Schemat SVG (Przekrój + Wskaźnik Oporu) */
.rk-geo-svg-stage {
    background: var(--rk-base-dark);
    border-radius: 12px;
    padding: 10px;
    height: 160px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 15px rgba(0,0,0,0.5);
    margin-bottom: 20px;
    position: relative;
    border: 1px solid #334155;
}

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

/* Klasy kontrolujące widoczność warstw termowizji */
.therm-layer { opacity: 0; transition: opacity 0.5s ease; }
.rk-geo-svg-stage[data-spacing="20"] .therm-20 { opacity: 1; }
.rk-geo-svg-stage[data-spacing="15"] .therm-15 { opacity: 1; }
.rk-geo-svg-stage[data-spacing="10"] .therm-10 { opacity: 1; }

/* Animacje statycznego wskaźnika oporu pompy */
.pump-indicator { transition: stroke-dashoffset 0.6s cubic-bezier(0.4, 0, 0.2, 1), stroke 0.6s; stroke-linecap: round; }
.pump-status-icon { transition: fill 0.6s; }

/* Stany pompy obiegowej */
.rk-geo-svg-stage[data-pump="normal"] .pump-indicator { stroke: var(--rk-state-green); stroke-dashoffset: 130; }
.rk-geo-svg-stage[data-pump="normal"] .pump-status-icon { fill: var(--rk-state-green); }

.rk-geo-svg-stage[data-pump="warning"] .pump-indicator { stroke: var(--rk-brand-primary); stroke-dashoffset: 60; }
.rk-geo-svg-stage[data-pump="warning"] .pump-status-icon { fill: var(--rk-brand-primary); }

.rk-geo-svg-stage[data-pump="critical"] .pump-indicator { stroke: var(--rk-state-red); stroke-dashoffset: 10; animation: pulseCritical 0.5s infinite alternate; }
.rk-geo-svg-stage[data-pump="critical"] .pump-status-icon { fill: var(--rk-state-red); animation: pulseCritical 0.5s infinite alternate; }

@keyframes pulseCritical {
    from { opacity: 0.6; filter: drop-shadow(0 0 2px var(--rk-state-red)); }
    to { opacity: 1; filter: drop-shadow(0 0 8px var(--rk-state-red)); }
}

/* Parametry liczbowe */
.rk-geo-rows { display: flex; flex-direction: column; gap: 10px; margin-bottom: 25px; }
.rk-geo-row { display: flex; justify-content: space-between; align-items: center; font-size: 13px; padding-bottom: 8px; border-bottom: 1px dashed rgba(255,255,255,0.05); }
.rk-geo-row:last-child { border-bottom: none; }
.rk-geo-lbl { color: #cbd5e1; }
.rk-geo-val { color: #ffffff; font-weight: 700; font-variant-numeric: tabular-nums; }

.rk-geo-status-box {
    background: rgba(16, 185, 129, 0.1);
    border: 1px solid rgba(16, 185, 129, 0.2);
    border-radius: 10px;
    padding: 15px;
    text-align: center;
    transition: all 0.3s;
    margin-top: auto;
}
.rk-status-lbl { font-size: 10px; font-weight: 800; color: var(--rk-state-green); text-transform: uppercase; margin-bottom: 6px; display: block; letter-spacing: 0.5px; }
.rk-status-val { font-size: 13px; font-weight: 600; color: #ffffff; line-height: 1.4; }

/* Sekcja Mocnego CTA */
.rk-geo-cta-block {
    background: var(--rk-base-panel);
    padding: 30px 50px;
    border-top: 2px solid var(--rk-brand-primary);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
}

.rk-geo-cta-text h4 { font-size: 17px; font-weight: 800; color: #ffffff; margin: 0 0 6px 0; }
.rk-geo-cta-text p { font-size: 13px; color: #94a3b8; margin: 0; line-height: 1.5; }
.rk-geo-cta-btn {
    background: var(--rk-brand-primary);
    color: #ffffff;
    padding: 15px 30px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 800;
    text-decoration: none;
    box-shadow: 0 4px 15px rgba(245, 158, 11, 0.3);
    transition: all 0.2s;
    white-space: nowrap;
    border: none;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.rk-geo-cta-btn:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(245, 158, 11, 0.4); background: var(--rk-brand-hover); }

@media (max-width: 768px) {
    .rk-geo-header, .rk-geo-interactive, .rk-geo-cta-block { padding: 30px 20px; }
    .rk-geo-header h2 { font-size: 22px; }
    .rk-geo-dashboard { grid-template-columns: 1fr; gap: 20px; }
    .rk-geo-controls { padding: 20px; }
    .rk-geo-svg-stage { height: 140px; }
    .rk-geo-cta-block { flex-direction: column; text-align: center; gap: 15px; }
    .rk-geo-cta-btn { width: 100%; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-geometria",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Jak OZC wpływa na projekt ogrzewania podłogowego?",
    "description": "Zobacz, jak wyniki projektowego obciążenia cieplnego (OZC) determinują geometrię pętli, rozstaw rur grzewczych oraz zrównoważenie hydrauliczne rozdzielacza.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-geometria",
    "name": "Parametry geometryczno-hydrauliczne pętli podłogówki na bazie OZC",
    "description": "Zależność rozstawu rur grzewczych, oporów ciśnienia oraz długości obiegów grzewczych w funkcji gęstości zapotrzebowania na moc szczytową pomieszczeń.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowanie ogrzewania podłogowego rozstaw",
      "maksymalna długość pętli podłogówki 16mm",
      "strefy brzegowe pod dużymi przeszkleniami",
      "zbalansowanie hydrauliczne rozdzielacza",
      "obciążenie cieplne a opory ciśnienia"
    ],
    "measurementTechnique": "Symulacja gęstości układania rur pex oraz wyznaczanie strat ciśnienia w pętli grzewczej zgodnie z wytycznymi normy PN-EN 1264.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zależność geometryczna: Wyższe obciążenie szczytowe wymusza gęstszy rozstaw rur (co 10 cm) w celu uniknięcia przewymiarowania temperatury zasilania.",
        "Ograniczenie hydrauliczne: Maksymalna długość obwodu dla średnicy 16mm wynosi 100-120m, chroniąc układ przed oporami paraliżującymi pompy obiegowe."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-geometria",
    "name": "Symulator Geometrii i Oporów Hydraulicznych Pętli",
    "description": "Interaktywny analizator pozwalający inwestorom sprawdzić, jak zapotrzebowanie na moc i rozstaw rur wpływają na długość obwodu i ciśnienie instalacji.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires modern browser with SVG and JavaScript enabled",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-geo-container" id="rk-geo-app">
    
    <div class="rk-geo-header">
        <div class="rk-geo-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg>
            Wpływ OZC na wykonawstwo
        </div>
        <h2>Jak to wpływa na projekt ogrzewania podłogowego?</h2>
        <p class="rk-geo-lead">
            Projektowe Obciążenie Cieplne bezpośrednio determinuje geometrię i parametry hydrauliczne instalacji płaszczyznowej. Na podstawie uzyskanych wyników szczytowych dla każdego pokoju, projektant dobiera optymalny rozstaw rur grzewczych, zapobiegając nadmiernym oporom ciśnienia. 
            <br><br>
            OZC pozwala także na dokładne zlokalizowanie stref brzegowych pod dużymi przeszkleniami oraz precyzyjny dobór pomp ciepła. Bez tych danych <a href="https://projekt-ogrzewania.pl/regulacja-ogrzewania-podlogowego-przeplywy-w-petlach/" class="rk-link-geo">zbalansowanie hydrauliczne rozdzielacza</a> jest niewykonalne, co skazuje inwestora na losowe, nieefektywne działanie systemu.
        </p>
    </div>

    <div class="rk-geo-interactive">
        <div class="rk-geo-dashboard">
            
            <div class="rk-geo-controls">
                <div class="rk-geo-panel-title">Analizator Pętli Grzewczej (Pokój 20 m²)</div>
                
                <div class="rk-geo-group">
                    <label class="rk-geo-label">Obciążenie cieplne pokoju (OZC)</label>
                    <div class="rk-geo-range-box">
                        <input type="range" id="geoInpPower" class="rk-geo-slider" min="300" max="1400" value="800" step="50">
                        <div class="rk-geo-val-display"><span id="geoValPowerOut">800</span> W</div>
                    </div>
                </div>

                <div class="rk-geo-group" style="margin-bottom:0;">
                    <label class="rk-geo-label">Planowany rozstaw rur grzewczych</label>
                    <div class="rk-geo-tile-stack">
                        <div class="rk-geo-tile-option" data-spacing="10">
                            <strong>co 10 cm</strong>
                            <span>Gęsty (Łazienki / Strefy brzegowe)</span>
                        </div>
                        <div class="rk-geo-tile-option selected" data-spacing="15">
                            <strong>co 15 cm</strong>
                            <span>Standard budowlany (WT 2021)</span>
                        </div>
                        <div class="rk-geo-tile-option" data-spacing="20">
                            <strong>co 20 cm</strong>
                            <span>Rzadki / Ekonomiczny (WT 2014)</span>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-geo-results-panel">
                <div class="rk-geo-res-title">Opory i Zagęszczenie Rur (Pętla 16mm)</div>
                
                <div class="rk-geo-svg-stage" id="geoSvgStage" data-spacing="15" data-pump="normal">
                    <svg class="rk-geo-svg" viewBox="0 0 250 110">
                        <defs>
                            <filter id="heatGlow" x="-20%" y="-20%" width="140%" height="140%">
                                <feGaussianBlur stdDeviation="3" result="blur" />
                                <feComposite in="SourceGraphic" in2="blur" operator="over" />
                            </filter>
                        </defs>

                        <text x="75" y="15" fill="#64748b" font-size="7" font-weight="bold" text-anchor="middle" letter-spacing="0.5">ROZKŁAD TEMPERATUR (TERMOWIZJA)</text>
                        <rect x="10" y="25" width="130" height="75" fill="#1e3a8a" rx="4" stroke="#334155" stroke-width="2"/>
                        
                        <g class="therm-layer therm-20">
                            <path d="M 15 35 L 135 35 M 15 55 L 135 55 M 15 75 L 135 75 M 15 90 L 135 90" stroke="#f59e0b" stroke-width="10" filter="url(#heatGlow)"/>
                        </g>
                        <g class="therm-layer therm-15">
                            <path d="M 15 32 L 135 32 M 15 45 L 135 45 M 15 58 L 135 58 M 15 71 L 135 71 M 15 84 L 135 84 M 15 95 L 135 95" stroke="#ef4444" stroke-width="11" filter="url(#heatGlow)"/>
                        </g>
                        <g class="therm-layer therm-10">
                            <path d="M 15 30 L 135 30 M 15 38 L 135 38 M 15 46 L 135 46 M 15 54 L 135 54 M 15 62 L 135 62 M 15 70 L 135 70 M 15 78 L 135 78 M 15 86 L 135 86 M 15 94 L 135 94" stroke="#ef4444" stroke-width="12" filter="url(#heatGlow)"/>
                        </g>

                        <text x="200" y="15" fill="#64748b" font-size="7" font-weight="bold" text-anchor="middle" letter-spacing="0.5">OPÓR POMPY OBIEGOWEJ</text>
                        
                        <path d="M 170 65 A 30 30 0 0 1 230 65" fill="none" stroke="#1e293b" stroke-width="8" stroke-linecap="round"/>
                        <path class="pump-indicator" d="M 170 65 A 30 30 0 0 1 230 65" fill="none" stroke-width="8" stroke-dasharray="94"/>
                        
                        <circle cx="200" cy="60" r="8" class="pump-status-icon"/>
                        <path d="M 197 57 L 204 60 L 197 63 Z" fill="#0b1120"/>

                        <text x="200" y="90" fill="#ffffff" font-size="7" font-weight="bold" text-anchor="middle" id="geoPumpText">STABILNIE</text>
                    </svg>
                </div>

                <div class="rk-geo-rows">
                    <div class="rk-geo-row">
                        <span class="rk-geo-lbl">Szacowana długość rury:</span>
                        <span class="rk-geo-val"><span id="geoOutLength">148</span> m</span>
                    </div>
                    <div class="rk-geo-row">
                        <span class="rk-geo-lbl">Rozkład temperatury:</span>
                        <span class="rk-geo-val" id="geoOutEdge">Równomierny</span>
                    </div>
                </div>

                <div class="rk-geo-status-box" id="geoStatusBox">
                    <span class="rk-status-lbl" id="geoStatusLbl">Status układu</span>
                    <div class="rk-status-val" id="geoStatusVal">Pętla zbyt długa! Wykonawca musi podzielić obieg.</div>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-geo-cta-block">
        <div class="rk-geo-cta-text">
            <h4>Nie ryzykuj układania podłogówki „na intuicję” instalatora</h4>
            <p>Zamów profesjonalny, kompletny projekt hydrauliczny oparty o rzetelne obliczenia OZC.</p>
        </div>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-geo-cta-btn">Zamów profesjonalny projekt</a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-geo-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;"><div style="font-size:16px; text-transform:uppercase; margin-bottom:8px;">Błąd integralności danych</div><div style="font-size:13px; color:#cbd5e1;">Aplikacja symulacji matrycy hydraulicznej stanowi zastrzeżoną część portalu Projekt-Ogrzewania.pl.</div></div>';
        return;
    }

    // 2. Stan kalkulatora
    let geoState = {
        power: 800,
        spacing: 15
    };

    // 3. Elementy DOM
    const inpPower = document.getElementById('geoInpPower');
    const valPowerOut = document.getElementById('geoValPowerOut');
    const tileOptions = document.querySelectorAll('.rk-geo-tile-option');
    
    // SVG Elements
    const svgStage = document.getElementById('geoSvgStage');
    const pumpText = document.getElementById('geoPumpText');

    // Elementy wyjściowe
    const outLength = document.getElementById('geoOutLength');
    const outEdge = document.getElementById('geoOutEdge');
    const statusBox = document.getElementById('geoStatusBox');
    const statusLbl = document.getElementById('geoStatusLbl');
    const statusVal = document.getElementById('geoStatusVal');

    // 4. Silnik obliczeń inżynierskich dla pokoju 20m2
    function updateHydraulics() {
        // Obliczenie zapotrzebowania na rurę: Powierzchnia(20) / rozstaw + podejścia(15)
        let calculatedLength = Math.round((20 / (geoState.spacing / 100)) + 15);
        outLength.textContent = calculatedLength;

        // Aktualizacja widoczności warstw termowizji w SVG (data-spacing)
        svgStage.setAttribute('data-spacing', geoState.spacing.toString());

        // Analiza "Zebry termicznej"
        if (geoState.spacing === 20) {
            outEdge.textContent = "Ryzyko niedogrzanych stref";
            outEdge.style.color = "var(--rk-brand-primary)";
        } else if (geoState.spacing === 15) {
            outEdge.textContent = "Normatywny (Dobra dystrybucja)";
            outEdge.style.color = "var(--rk-state-green)";
        } else {
            outEdge.textContent = "Zagęszczony (Idealny rozkład)";
            outEdge.style.color = "var(--rk-state-green)";
        }

        // Klasyfikacja hydrauliczna pompy na podstawie długości (limit 120m)
        if (calculatedLength > 120) {
            svgStage.setAttribute('data-pump', 'critical');
            pumpText.textContent = "KRYTYCZNE (>35 kPa)";
            pumpText.setAttribute("fill", "#ef4444");

            statusBox.style.backgroundColor = "rgba(239, 68, 68, 0.1)";
            statusBox.style.borderColor = "rgba(239, 68, 68, 0.2)";
            statusLbl.style.color = "var(--rk-state-red)";
            statusVal.textContent = "Pętla zbyt długa! Wysokie opory zdławią pompę. Wykonawca musi podzielić obwód.";
        } else if (calculatedLength >= 100 && calculatedLength <= 120) {
            svgStage.setAttribute('data-pump', 'warning');
            pumpText.textContent = "PODWYŻSZONE OPORY";
            pumpText.setAttribute("fill", "#f59e0b");

            statusBox.style.backgroundColor = "rgba(245, 158, 11, 0.1)";
            statusBox.style.borderColor = "rgba(245, 158, 11, 0.2)";
            statusLbl.style.color = "var(--rk-brand-primary)";
            statusVal.textContent = "Granica normy (ok. 100m). Wymaga precyzyjnego równoważenia na rozdzielaczu.";
        } else {
            svgStage.setAttribute('data-pump', 'normal');
            pumpText.textContent = "OPTYMALNE (<15 kPa)";
            pumpText.setAttribute("fill", "#10b981");

            statusBox.style.backgroundColor = "rgba(16, 185, 129, 0.1)";
            statusBox.style.borderColor = "rgba(16, 185, 129, 0.2)";
            statusLbl.style.color = "var(--rk-state-green)";
            statusVal.textContent = "Bezpieczne parametry pętli. Pompa pracuje na maksymalnym współczynniku wydajności.";
        }
    }

    // 5. Zdarzenia wejściowe
    inpPower.addEventListener('input', function(e) {
        geoState.power = parseInt(e.target.value);
        valPowerOut.innerHTML = `<span>${geoState.power}</span> W`;
        updateHydraulics();
    });

    tileOptions.forEach(tile => {
        tile.addEventListener('click', function() {
            tileOptions.forEach(t => t.classList.remove('selected'));
            this.classList.add('selected');
            geoState.spacing = parseInt(this.getAttribute('data-spacing'));
            updateHydraulics();
        });
    });

    // Inicjalizacja formatowania tekstu suwaka
    valPowerOut.innerHTML = `<span>${geoState.power}</span> W`;

    // Uruchomienie kalkulatora
    updateHydraulics();
});
</script>



<style>
:root {
    --rk-cs-dark: #0f172a;
    --rk-cs-brand: #2563eb; /* Inżynieryjny niebieski */
    --rk-cs-brand-light: #eff6ff;
    --rk-cs-accent: #10b981; /* Zielony dla oszczędności / OZC */
    --rk-cs-alert: #ef4444; /* Czerwony dla błędów instalatora */
    --rk-cs-bg: #ffffff;
    --rk-cs-panel: #f8fafc;
    --rk-cs-border: #e2e8f0;
    --rk-cs-text: #475569;
    --rk-cs-muted: #94a3b8;
}

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

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

.rk-cs-header::after {
    content: '';
    position: absolute;
    top: -50px;
    right: -50px;
    width: 250px;
    height: 250px;
    background: radial-gradient(circle, rgba(37, 99, 235, 0.4) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
    pointer-events: none;
}

.rk-cs-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.1);
    color: #bfdbfe;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    position: relative;
    z-index: 2;
}

.rk-cs-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 25px 0;
    color: #ffffff;
    position: relative;
    z-index: 2;
}

.rk-cs-title span { color: #60a5fa; }

/* Grid Statystyk w Nagłówku */
.rk-cs-stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
    position: relative;
    z-index: 2;
}

.rk-cs-stat-box {
    background: rgba(0, 0, 0, 0.25);
    border: 1px solid rgba(255, 255, 255, 0.1);
    padding: 15px;
    border-radius: 12px;
    backdrop-filter: blur(4px);
}

.rk-cs-stat-lbl { display: block; font-size: 11px; color: #94a3b8; text-transform: uppercase; font-weight: 800; margin-bottom: 6px; letter-spacing: 0.5px; }
.rk-cs-stat-val { display: block; font-size: 16px; font-weight: 900; color: #ffffff; }
.rk-cs-stat-val.highlight { color: #10b981; }

/* Główny Panel Interaktywny */
.rk-cs-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-cs-dashboard {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-cs-border);
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.02);
    overflow: hidden;
}

/* Lewa Kolumna - Kontrola i Zestawienie */
.rk-cs-comparison {
    padding: 30px;
    display: flex;
    flex-direction: column;
}

.rk-cs-comp-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-cs-dark);
    margin: 0 0 20px 0;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Toggle Switch (Przełącznik) */
.rk-cs-toggle-wrapper {
    display: flex;
    background: var(--rk-cs-panel);
    border: 2px solid var(--rk-cs-border);
    border-radius: 12px;
    padding: 4px;
    margin-bottom: 30px;
    position: relative;
}

.rk-cs-toggle-btn {
    flex: 1;
    text-align: center;
    padding: 12px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-cs-muted);
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    z-index: 2;
}

.rk-cs-toggle-btn.active.mode-bad { color: #ffffff; }
.rk-cs-toggle-btn.active.mode-good { color: #ffffff; }

.rk-cs-toggle-bg {
    position: absolute;
    top: 4px;
    bottom: 4px;
    width: calc(50% - 4px);
    border-radius: 8px;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1;
}

.rk-cs-dashboard[data-mode="bad"] .rk-cs-toggle-bg { left: 4px; background: var(--rk-cs-alert); box-shadow: 0 4px 10px rgba(239, 68, 68, 0.3); }
.rk-cs-dashboard[data-mode="good"] .rk-cs-toggle-bg { left: calc(50%); background: var(--rk-cs-accent); box-shadow: 0 4px 10px rgba(16, 185, 129, 0.3); }

/* Wiersze Danych */
.rk-cs-data-rows { display: flex; flex-direction: column; gap: 15px; }
.rk-cs-data-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-bottom: 12px;
    border-bottom: 1px dashed var(--rk-cs-border);
}
.rk-cs-data-row:last-child { border-bottom: none; }
.rk-cs-data-lbl { font-size: 13px; color: var(--rk-cs-text); font-weight: 600; }
.rk-cs-data-val { font-size: 15px; font-weight: 900; transition: color 0.3s; font-variant-numeric: tabular-nums; }

.rk-cs-dashboard[data-mode="bad"] .rk-cs-data-val { color: var(--rk-cs-alert); }
.rk-cs-dashboard[data-mode="good"] .rk-cs-data-val { color: var(--rk-cs-accent); }

/* Prawa Kolumna - Wizualizacja SVG */
.rk-cs-visual {
    background: var(--rk-cs-dark);
    padding: 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
}

.rk-cs-svg-stage { width: 100%; height: 200px; }

/* SVG Animacje */
.anim-hp-box { transition: all 0.5s cubic-bezier(0.34, 1.56, 0.64, 1); transform-origin: center bottom; }
.anim-fan { transform-origin: 150px 100px; }
.anim-pipe { transition: all 0.5s ease; stroke-dasharray: 4 4; }

.rk-cs-dashboard[data-mode="bad"] .anim-hp-box { transform: scale(1.1); fill: #450a0a; stroke: #ef4444; }
.rk-cs-dashboard[data-mode="bad"] .anim-fan { animation: fanSpin 0.5s linear infinite; fill: #ef4444; }
.rk-cs-dashboard[data-mode="bad"] .anim-pipe { stroke: #ef4444; stroke-width: 4; stroke-dasharray: 20 10; }

.rk-cs-dashboard[data-mode="good"] .anim-hp-box { transform: scale(0.85); fill: #064e3b; stroke: #10b981; }
.rk-cs-dashboard[data-mode="good"] .anim-fan { animation: fanSpin 2s linear infinite; fill: #10b981; }
.rk-cs-dashboard[data-mode="good"] .anim-pipe { stroke: #10b981; stroke-width: 2; stroke-dasharray: none; }

@keyframes fanSpin { 100% { transform: rotate(360deg); } }

/* Odznaka Oszczędności (Wyskakująca) */
.rk-cs-savings-badge {
    position: absolute;
    top: 20px;
    right: 20px;
    background: var(--rk-cs-accent);
    color: #ffffff;
    padding: 10px 15px;
    border-radius: 12px;
    font-weight: 900;
    font-size: 16px;
    box-shadow: 0 10px 20px rgba(16, 185, 129, 0.4);
    opacity: 0;
    transform: translateY(-10px) scale(0.9);
    transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.rk-cs-dashboard[data-mode="good"] .rk-cs-savings-badge { opacity: 1; transform: translateY(0) scale(1); }

/* Autor i Opis */
.rk-cs-author-section {
    padding: 0 50px 30px 50px;
    background: #f8fafc;
}

.rk-cs-author-box {
    background: #ffffff;
    border-left: 4px solid var(--rk-cs-brand);
    padding: 20px;
    border-radius: 0 12px 12px 0;
    display: flex;
    align-items: center;
    gap: 20px;
    box-shadow: 0 4px 15px rgba(0,0,0,0.03);
    border: 1px solid var(--rk-cs-border);
    border-left: 4px solid var(--rk-cs-brand);
}

.rk-cs-author-photo {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid var(--rk-cs-brand-light);
    box-shadow: 0 4px 10px rgba(37, 99, 235, 0.2);
    flex-shrink: 0;
}

.rk-cs-author-text p { margin: 0; font-size: 14px; color: var(--rk-cs-text); line-height: 1.6; }
.rk-cs-author-text strong { color: var(--rk-cs-dark); font-weight: 800; }

/* Sekcja Mocnego CTA */
.rk-cs-cta-block {
    background: linear-gradient(135deg, #1e1b4b 0%, var(--rk-cs-dark) 100%);
    padding: 35px 50px;
    border-top: 1px solid rgba(37, 99, 235, 0.2);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
}

.rk-cs-cta-text h4 { font-size: 18px; font-weight: 800; color: #ffffff; margin: 0 0 8px 0; }
.rk-cs-cta-text p { font-size: 14px; color: #94a3b8; margin: 0; line-height: 1.5; }
.rk-cs-cta-btn {
    background: var(--rk-cs-brand);
    color: #ffffff;
    padding: 16px 32px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 800;
    text-decoration: none;
    box-shadow: 0 10px 20px -5px rgba(37, 99, 235, 0.5);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    white-space: nowrap;
    border: none;
    text-transform: uppercase;
}
.rk-cs-cta-btn:hover { transform: translateY(-3px); box-shadow: 0 15px 25px -5px rgba(37, 99, 235, 0.6); background: #3b82f6; }

@media (max-width: 768px) {
    .rk-cs-header, .rk-cs-interactive, .rk-cs-author-section, .rk-cs-cta-block { padding: 30px 20px; }
    .rk-cs-title { font-size: 24px; }
    .rk-cs-stats-grid { grid-template-columns: 1fr 1fr; }
    .rk-cs-dashboard { grid-template-columns: 1fr; }
    .rk-cs-svg-stage { height: 160px; }
    .rk-cs-author-box { flex-direction: column; text-align: center; }
    .rk-cs-cta-block { flex-direction: column; text-align: center; gap: 20px; }
    .rk-cs-cta-btn { width: 100%; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Case Study: OZC dla domu w Nowym Targu (174 m²)",
    "description": "Zakończyliśmy pełne opracowanie OZC dla domu 174m2 w V strefie klimatycznej (-24 st C). Zmiana pompy ciepła z 10 kW na 5 kW dała 6500 PLN oszczędności.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-04-14",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-casestudy",
    "name": "Wyniki optymalizacji OZC - Nowy Targ",
    "description": "Porównanie doboru pompy ciepła na podstawie intuicji instalatora vs precyzyjne wyliczenia OZC.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "pompa ciepła 5kW vs 10kW",
      "OZC Nowy Targ V strefa klimatyczna",
      "rozstaw rur 15cm i 10cm",
      "przepływ zasilania 1.8 l/min",
      "oszczędność na pompie 6500 PLN"
    ],
    "measurementTechnique": "Analiza cieplna budynku OZC i projektowanie hydrauliczne wg PN-EN 12831.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Lokalizacja: Nowy Targ (V strefa, -24°C), Dom tradycyjny ceramika + 22cm EPS, Wentylacja mechaniczna.",
        "Obciążenie całkowite: 4,85 kW, pozwalające na redukcję pompy z 10 kW na 5 kW.",
        "Zysk: 6500 PLN, rozstaw salon 15 cm / łazienki 10 cm, przepływy: 1.8 l/min."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-casestudy",
    "name": "Kalkulator Oszczędności OZC",
    "description": "Interaktywny panel prezentujący realne oszczędności (6500 PLN) wynikające z przeliczenia instalatora vs inżyniera w Nowym Targu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires modern browser with SVG and JavaScript enabled",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-cs-container" id="rk-cs-app">
    
    <div class="rk-cs-header">
        <div class="rk-cs-badge">Case Study: Kwiecień 2025</div>
        <h2 class="rk-cs-title">Instalator vs Inżynier: <span>Oszczędność 6 500 PLN</span></h2>
        
        <div class="rk-cs-stats-grid">
            <div class="rk-cs-stat-box">
                <span class="rk-cs-stat-lbl">Inwestor</span>
                <span class="rk-cs-stat-val">Pan Mariusz</span>
            </div>
            <div class="rk-cs-stat-box">
                <span class="rk-cs-stat-lbl">Lokalizacja</span>
                <span class="rk-cs-stat-val">Nowy Targ (-24°C)</span>
            </div>
            <div class="rk-cs-stat-box">
                <span class="rk-cs-stat-lbl">Powierzchnia</span>
                <span class="rk-cs-stat-val">174 m²</span>
            </div>
            <div class="rk-cs-stat-box">
                <span class="rk-cs-stat-lbl">Obciążenie (OZC)</span>
                <span class="rk-cs-stat-val highlight">4,85 kW</span>
            </div>
        </div>
    </div>

    <div class="rk-cs-interactive">
        
        <div class="rk-cs-dashboard" id="csDashboard" data-mode="bad">
            
            <div class="rk-cs-comparison">
                <h3 class="rk-cs-comp-title">Wybierz scenariusz doboru:</h3>
                
                <div class="rk-cs-toggle-wrapper">
                    <div class="rk-cs-toggle-bg"></div>
                    <div class="rk-cs-toggle-btn active mode-bad" id="btnModeBad" data-target="bad">Intuicja Instalatora</div>
                    <div class="rk-cs-toggle-btn mode-good" id="btnModeGood" data-target="good">Twarde OZC (Inżynieria)</div>
                </div>

                <div class="rk-cs-data-rows">
                    <div class="rk-cs-data-row">
                        <span class="rk-cs-data-lbl">Moc Pompy Ciepła:</span>
                        <span class="rk-cs-data-val" id="valPump">10 kW (Przewymiarowana)</span>
                    </div>
                    <div class="rk-cs-data-row">
                        <span class="rk-cs-data-lbl">Rozstaw rur (Salon):</span>
                        <span class="rk-cs-data-val" id="valSpace">&#8222;Jak wyjdzie&#8221;</span>
                    </div>
                    <div class="rk-cs-data-row">
                        <span class="rk-cs-data-lbl">Nastawy rotametrów:</span>
                        <span class="rk-cs-data-val" id="valFlow">Wszystko na 100%</span>
                    </div>
                    <div class="rk-cs-data-row">
                        <span class="rk-cs-data-lbl">Koszt inwestycji:</span>
                        <span class="rk-cs-data-val" id="valCost">Drogo i nieefektywnie</span>
                    </div>
                </div>
            </div>

            <div class="rk-cs-visual">
                <div class="rk-cs-savings-badge">+ 6 500 PLN w kieszeni!</div>
                
                <div class="rk-cs-svg-stage">
                    <svg viewBox="0 0 300 200" width="100%" height="100%">
                        <path class="anim-pipe" d="M 50 180 L 250 180 M 50 170 L 250 170 M 50 160 L 250 160" stroke-linecap="round"/>
                        
                        <path d="M 150 20 L 50 80 L 50 150 L 250 150 L 250 80 Z" fill="none" stroke="#334155" stroke-width="4" stroke-linejoin="round"/>
                        
                        <g class="anim-hp-box" transform="translate(0, 0)">
                            <rect x="110" y="70" width="80" height="80" rx="8" stroke-width="4"/>
                            <g class="anim-fan">
                                <circle cx="150" cy="110" r="25" fill="#0f172a" opacity="0.5"/>
                                <path d="M 150 85 L 165 110 L 135 110 Z"/>
                                <path d="M 150 135 L 135 110 L 165 110 Z"/>
                                <circle cx="150" cy="110" r="5" fill="#ffffff"/>
                            </g>
                        </g>
                    </svg>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-cs-author-section">
        <div class="rk-cs-author-box">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-cs-author-photo" loading="lazy">
            <div class="rk-cs-author-text">
                <p>14 kwietnia 2025 r. zakończyliśmy dokumentację dla budynku w Nowym Targu (ceramika + 22cm EPS, rekuperacja). Projektowe obciążenie wyniosło zaledwie <strong>4,85 kW</strong> przy strefie V (-24°C). Pozwoliło to odrzucić propozycję wykonawcy (10 kW), dobrać pompę 5 kW i wyznaczyć precyzyjny rozstaw rur co 15 cm i 10 cm, z przepływami rzędu 1,8 l/min. <strong>Wynik? Zbalansowany układ i fizyczna oszczędność 6500 zł dla Inwestora.</strong></p>
            </div>
        </div>
    </div>

    <div class="rk-cs-cta-block">
        <div class="rk-cs-cta-text">
            <h4>Przestań przepłacać za przewymiarowane urządzenia</h4>
            <p>Zamów projekt OZC + Ogrzewanie Podłogowe i odzyskaj kontrolę nad budżetem budowy.</p>
        </div>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-cs-cta-btn">Zamów Pakiet Projektowy</a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-cs-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;"><div style="font-size:16px; text-transform:uppercase; margin-bottom:8px;">Błąd autoryzacji modułu</div><div style="font-size:13px; color:#cbd5e1;">Aplikacja Case Study należy do portalu Projekt-Ogrzewania.pl.</div></div>';
        return;
    }

    // 2. Elementy DOM
    const dashboard = document.getElementById('csDashboard');
    const btnBad = document.getElementById('btnModeBad');
    const btnGood = document.getElementById('btnModeGood');
    
    // Pola Danych
    const valPump = document.getElementById('valPump');
    const valSpace = document.getElementById('valSpace');
    const valFlow = document.getElementById('valFlow');
    const valCost = document.getElementById('valCost');

    // 3. Baza Danych Scenariuszy
    const dataScenarios = {
        bad: {
            pump: "10 kW (Przewymiarowana)",
            space: "Intuicyjnie / Losowo",
            flow: "Maksymalne na pompie",
            cost: "Ogromne rachunki i zjawisko taktowania"
        },
        good: {
            pump: "5 kW (Idealnie dobrana OZC)",
            space: "15 cm (Salon) / 10 cm (Łazienka)",
            flow: "Precyzyjne 1,8 l/min",
            cost: "Zoptymalizowane + zysk na starcie"
        }
    };

    // 4. Silnik Przełączania
    function setMode(mode) {
        // Zmiana atrybutu głównego (napędza CSS i SVG)
        dashboard.setAttribute('data-mode', mode);
        
        // Klasy przycisków
        if (mode === 'bad') {
            btnBad.classList.add('active');
            btnGood.classList.remove('active');
        } else {
            btnGood.classList.add('active');
            btnBad.classList.remove('active');
        }

        // Aktualizacja tekstów
        const data = dataScenarios[mode];
        valPump.textContent = data.pump;
        valSpace.textContent = data.space;
        valFlow.textContent = data.flow;
        valCost.textContent = data.cost;
    }

    // Zdarzenia kliknięcia
    btnBad.addEventListener('click', () => setMode('bad'));
    btnGood.addEventListener('click', () => setMode('good'));

});
</script>



<style>
:root {
    --rk-ozcfaq-dark: #0f172a;
    --rk-ozcfaq-brand: #0284c7; /* Ekspercki niebieski OZC */
    --rk-ozcfaq-brand-light: #e0f2fe;
    --rk-ozcfaq-accent: #0ea5e9;
    --rk-ozcfaq-bg: #f8fafc;
    --rk-ozcfaq-border: #cbd5e1;
    --rk-ozcfaq-text: #334155;
    --rk-ozcfaq-hover: #f1f5f9;
}

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

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

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

.rk-ozcfaq-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0;
    color: #ffffff;
}

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

/* Akordeon */
.rk-ozcfaq-interactive {
    padding: 40px 45px;
    background: var(--rk-ozcfaq-bg);
}

.rk-ozcfaq-list {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

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

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

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

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

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

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

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

/* Odpowiedź z Gridem i Animacją SVG */
.rk-ozcfaq-answer-wrapper {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

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

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

.rk-ozcfaq-content {
    padding: 25px;
    border-top: 1px solid var(--rk-ozcfaq-border);
    display: grid;
    grid-template-columns: 1fr 180px;
    gap: 30px;
    align-items: center;
}

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

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

.rk-link {
    color: var(--rk-ozcfaq-brand);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(2, 132, 199, 0.2);
    transition: all 0.3s;
}

.rk-link:hover {
    border-bottom-color: var(--rk-ozcfaq-brand);
}

/* Wizualizacje SVG */
.rk-ozcfaq-visual {
    background: var(--rk-ozcfaq-dark);
    border-radius: 12px;
    padding: 15px;
    height: 130px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 10px rgba(0,0,0,0.3);
    position: relative;
    overflow: hidden;
}

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

/* Animacje specyficzne dla każdego SVG zależne od .active w rodzicu */

/* FAQ 1: Pokoje OZC */
.anim-room-1, .anim-room-2, .anim-room-3 { opacity: 0.3; transition: opacity 0.5s; }
.rk-ozcfaq-item.active .anim-room-1 { animation: pulseRed 2s infinite; }
.rk-ozcfaq-item.active .anim-room-2 { animation: pulseOrange 2s 0.6s infinite; }
.rk-ozcfaq-item.active .anim-room-3 { animation: pulseYellow 2s 1.2s infinite; }
@keyframes pulseRed { 50% { fill: #ef4444; opacity: 0.9; } }
@keyframes pulseOrange { 50% { fill: #f97316; opacity: 0.9; } }
@keyframes pulseYellow { 50% { fill: #eab308; opacity: 0.9; } }

/* FAQ 2: Rekuperacja/Aktualizacja */
.anim-fan { transform-origin: center; transition: transform 0.5s; }
.rk-ozcfaq-item.active .anim-fan { animation: spinFan 2s linear infinite; }
@keyframes spinFan { to { transform: rotate(360deg); } }
.anim-insulation { stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 1s 0.3s; }
.rk-ozcfaq-item.active .anim-insulation { stroke-dashoffset: 0; }

/* FAQ 3: EUco vs OZC */
.anim-bar-euco { transform: scaleX(0); transform-origin: left; transition: transform 1s 0.2s cubic-bezier(0.2, 0.8, 0.2, 1); }
.rk-ozcfaq-item.active .anim-bar-euco { transform: scaleX(1); }
.anim-bar-ozc { transform: scaleX(0); transform-origin: left; transition: transform 1s 0.5s cubic-bezier(0.2, 0.8, 0.2, 1); }
.rk-ozcfaq-item.active .anim-bar-ozc { transform: scaleX(1); }

/* FAQ 4: Zyski (Noc) */
.anim-sun { transition: transform 1s, opacity 1s; }
.anim-moon { opacity: 0; transform: translateY(-20px); transition: transform 1s, opacity 1s; }
.rk-ozcfaq-item.active .anim-sun { transform: translateY(30px); opacity: 0; }
.rk-ozcfaq-item.active .anim-moon { opacity: 1; transform: translateY(0); }
.anim-snow { opacity: 0; }
.rk-ozcfaq-item.active .anim-snow { animation: fallSnow 2s infinite linear; }
@keyframes fallSnow { 0% { opacity: 0; transform: translateY(-10px); } 50% { opacity: 1; } 100% { opacity: 0; transform: translateY(20px); } }

/* FAQ 5: Stary Dom */
.anim-scan { transform: translateY(-10px); opacity: 0; }
.rk-ozcfaq-item.active .anim-scan { animation: scanWall 2.5s infinite; }
@keyframes scanWall { 0% { transform: translateY(-10px); opacity: 0; } 10% { opacity: 1; } 90% { opacity: 1; } 100% { transform: translateY(60px); opacity: 0; } }

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

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania o OZC",
    "description": "Eksperckie odpowiedzi na pytania dotyczące Projektowego Obciążenia Cieplnego (OZC), różnic z EUco, modernizacji starych domów i aktualizacji projektu.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy obliczenia OZC wykonuje się dla całego budynku, czy dla każdego pomieszczenia osobno?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Obliczenia OZC muszą być bezwzględnie wykonane dla każdego pomieszczenia z osobna, ponieważ każde wnętrze posiada inną strukturę przegród zewnętrznych oraz odmienne straty wentylacyjne. Zbiorczy wynik dla całego budynku jest jedynie sumą składowych służącą do doboru mocy źródła ciepła."
        }
      },
      {
        "@type": "Question",
        "name": "Jak często należy aktualizować obliczenia OZC w trakcie trwania budowy domu?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Aktualizację obliczeń OZC należy przeprowadzić zawsze wtedy, gdy w trakcie realizacji inwestycji dojdzie do istotnych zmian w materiałach izolacyjnych lub stolarki otworowej w stosunku do pierwotnego projektu. Zmiana grubości styropianu czy rezygnacja z rekuperacji całkowicie zmienia bilans cieplny budynku."
        }
      },
      {
        "@type": "Question",
        "name": "Czy wskaźnik EUco z charakterystyki energetycznej projektu to samo co Projektowe Obciążenie Cieplne?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, wskaźnik EUco określa sezonowe zapotrzebowanie na energię użytkową w ciągu całego roku wyrażane w kWh/(m2 rok), natomiast OZC to chwilowa, maksymalna moc cieplna wyrażana w kilowatach [kW], potrzebna do pokrycia strat w warunkach skrajnego mrozu. OZC decyduje o fizycznej wielkości urządzeń, a EUco o rocznych kosztach paliwa."
        }
      },
      {
        "@type": "Question",
        "name": "Jaki wpływ na wartość OZC mają zyski ciepła od nasłonecznienia oraz urządzeń wewnętrznych?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Zgodnie z procedurą normy PN-EN 12831, przy obliczaniu Projektowego Obciążenia Cieplnego mającego na celu dobór mocy urządzeń grzewczych, zyski ciepła od nasłonecznienia oraz zyski wewnętrzne są całkowicie pomijane. Założenie to wynika z faktu, że maksymalne, krytyczne obciążenie cieplne może wystąpić w środku nocy, kiedy zyski te nie występują."
        }
      },
      {
        "@type": "Question",
        "name": "Czy stary dom z lat 80. bez dokumentacji projektowej można poprawnie przeliczyć pod kątem OZC?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, dla starych budynków wykonuje się inwentaryzację termomodernizacyjną, odtwarzając strukturę przegród na podstawie odkrywek oraz oceniając stan techniczny stolarki okiennej. Wprowadzając te dane do programu, inżynier jest w stanie z wysoką dokładnością wyznaczyć realne OZC obiektu przed doborem pompy ciepła."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-faq",
    "name": "Baza Wiedzy Inwestorskiej: Parametry Normy PN-EN 12831",
    "description": "Zbiór danych i definicji rozróżniających wartości OZC od charakterystyki energetycznej (EUco) oraz uwzględniających zyski pasywne.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": { "@type": "Person", "name": "Robert Kucharski" },
    "keywords": [
      "obliczenia OZC dla pomieszczeń",
      "aktualizacja bilansu cieplnego",
      "EUco a obciążenie cieplne",
      "pasywne zyski ciepła OZC",
      "termomodernizacja starego domu"
    ],
    "measurementTechnique": "Interpretacja wymagań normy PN-EN 12831 w kontekście fizyki budowli i warunków zimowych bez zysków solarnych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "OZC określa szczytowe zapotrzebowanie (kW) w mroźną noc bez słońca.",
        "EUco to roczne zużycie energii wyrażane w kWh/(m2 rok)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-faq",
    "name": "Interaktywny Przewodnik: Mechanika Obliczeń OZC",
    "description": "Interaktywny moduł edukacyjny typu akordeon, wykorzystujący animacje SVG do demonstracji procesów wymiany ciepła, inwentaryzacji oraz bilansu cieplnego budynku.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": { "@type": "Person", "name": "Robert Kucharski" }
  }
]
</script>

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

    <div class="rk-ozcfaq-interactive">
        <div class="rk-ozcfaq-list">
            
            <!-- Pytanie 1 -->
            <div class="rk-ozcfaq-item">
                <button class="rk-ozcfaq-question">
                    <span>1. Czy obliczenia OZC wykonuje się dla całego budynku, czy dla każdego pomieszczenia osobno?</span>
                    <div class="rk-ozcfaq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-ozcfaq-answer-wrapper">
                    <div class="rk-ozcfaq-answer-inner">
                        <div class="rk-ozcfaq-content">
                            <div class="rk-ozcfaq-text">
                                Obliczenia OZC muszą być <strong>bezwzględnie wykonane dla każdego pomieszczenia z osobna</strong>. Każde wnętrze posiada inną strukturę przegród zewnętrznych oraz odmienne <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-link">straty wentylacyjne</a>. Zbiorczy wynik dla całego budynku jest jedynie sumą matematyczną tych składowych, która służy wyłącznie do określenia całkowitej mocy źródła ciepła (np. pompy ciepła).
                            </div>
                            <div class="rk-ozcfaq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <path d="M 10 35 L 50 5 L 90 35" fill="none" stroke="#64748b" stroke-width="3" stroke-linejoin="round"/>
                                    <rect x="20" y="35" width="60" height="30" fill="none" stroke="#64748b" stroke-width="2"/>
                                    <line x1="50" y1="35" x2="50" y2="65" stroke="#64748b" stroke-width="2"/>
                                    <line x1="20" y1="50" x2="80" y2="50" stroke="#64748b" stroke-width="2"/>
                                    <rect class="anim-room-1" x="22" y="37" width="26" height="11" fill="#475569"/>
                                    <rect class="anim-room-2" x="52" y="37" width="26" height="11" fill="#475569"/>
                                    <rect class="anim-room-3" x="22" y="52" width="56" height="11" fill="#475569"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 2 -->
            <div class="rk-ozcfaq-item">
                <button class="rk-ozcfaq-question">
                    <span>2. Jak często należy aktualizować obliczenia OZC w trakcie trwania budowy domu?</span>
                    <div class="rk-ozcfaq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-ozcfaq-answer-wrapper">
                    <div class="rk-ozcfaq-answer-inner">
                        <div class="rk-ozcfaq-content">
                            <div class="rk-ozcfaq-text">
                                Aktualizację obliczeń OZC należy przeprowadzić <strong>zawsze wtedy, gdy dochodzi do istotnych zmian</strong> w strukturze przegród względem pierwotnego projektu architektonicznego. Zmiana grubości styropianu na elewacji, wstawienie gorszych parametrów stolarki okiennej czy rezygnacja z <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/" class="rk-link">wentylacji mechanicznej (rekuperacji)</a> na rzecz grawitacyjnej całkowicie zmienia bilans cieplny budynku.
                            </div>
                            <div class="rk-ozcfaq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="20" y="20" width="60" height="30" fill="none" stroke="#64748b" stroke-width="3" rx="4"/>
                                    <line class="anim-insulation" x1="20" y1="15" x2="80" y2="15" stroke="#0ea5e9" stroke-width="4" stroke-linecap="round"/>
                                    <g transform="translate(50, 35)">
                                        <circle cx="0" cy="0" r="10" fill="none" stroke="#94a3b8" stroke-width="2"/>
                                        <path class="anim-fan" d="M 0 -8 L 2 -2 L 8 0 L 2 2 L 0 8 L -2 2 L -8 0 L -2 -2 Z" fill="#cbd5e1"/>
                                    </g>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 3 -->
            <div class="rk-ozcfaq-item">
                <button class="rk-ozcfaq-question">
                    <span>3. Czy wskaźnik EUco z charakterystyki energetycznej to samo co OZC?</span>
                    <div class="rk-ozcfaq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-ozcfaq-answer-wrapper">
                    <div class="rk-ozcfaq-answer-inner">
                        <div class="rk-ozcfaq-content">
                            <div class="rk-ozcfaq-text">
                                <strong>Nie, to dwa zupełnie różne parametry.</strong> Wskaźnik EUco określa sezonowe zapotrzebowanie na energię użytkową w ciągu całego roku (wyrażane w kWh/m2 na rok), czyli informuje o rocznych kosztach paliwa. Natomiast OZC to chwilowa, maksymalna moc cieplna wyrażana w kilowatach [kW], potrzebna do pokrycia strat w warunkach skrajnego mrozu. OZC decyduje o <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/" class="rk-link">fizycznej wielkości i mocy urządzeń</a>.
                            </div>
                            <div class="rk-ozcfaq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <text x="10" y="30" fill="#94a3b8" font-size="10" font-family="sans-serif">EUco</text>
                                    <rect x="35" y="22" width="55" height="8" fill="#1e293b" rx="2"/>
                                    <rect class="anim-bar-euco" x="35" y="22" width="45" height="8" fill="#0ea5e9" rx="2"/>
                                    
                                    <text x="10" y="55" fill="#94a3b8" font-size="10" font-family="sans-serif">OZC</text>
                                    <rect x="35" y="47" width="55" height="8" fill="#1e293b" rx="2"/>
                                    <rect class="anim-bar-ozc" x="35" y="47" width="25" height="8" fill="#ef4444" rx="2"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 4 -->
            <div class="rk-ozcfaq-item">
                <button class="rk-ozcfaq-question">
                    <span>4. Jaki wpływ na wartość OZC mają zyski ciepła od słońca i urządzeń?</span>
                    <div class="rk-ozcfaq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-ozcfaq-answer-wrapper">
                    <div class="rk-ozcfaq-answer-inner">
                        <div class="rk-ozcfaq-content">
                            <div class="rk-ozcfaq-text">
                                Zgodnie z procedurą normy PN-EN 12831, przy obliczaniu Projektowego Obciążenia Cieplnego mającego na celu dobór mocy urządzeń grzewczych, <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-a-pasywne-zyski-ciepla/" class="rk-link">pasywne zyski ciepła</a> od nasłonecznienia oraz wewnętrzne zyski bytowe są <strong>całkowicie pomijane</strong>. Założenie to jest logiczne – maksymalne, krytyczne obciążenie cieplne budynku zawsze występuje w środku mroźnej nocy, kiedy tych zysków po prostu nie ma.
                            </div>
                            <div class="rk-ozcfaq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <g class="anim-sun">
                                        <circle cx="50" cy="35" r="12" fill="#eab308"/>
                                        <path d="M 50 15 L 50 18 M 50 52 L 50 55 M 30 35 L 33 35 M 67 35 L 70 35" stroke="#eab308" stroke-width="2" stroke-linecap="round"/>
                                    </g>
                                    <g class="anim-moon">
                                        <path d="M 50 20 A 12 12 0 1 0 60 40 A 15 15 0 0 1 50 20 Z" fill="#e2e8f0"/>
                                        <circle class="anim-snow" cx="35" cy="25" r="1.5" fill="#ffffff"/>
                                        <circle class="anim-snow" cx="65" cy="45" r="1.5" fill="#ffffff" style="animation-delay: 0.5s"/>
                                        <circle class="anim-snow" cx="45" cy="50" r="1.5" fill="#ffffff" style="animation-delay: 1s"/>
                                    </g>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 5 -->
            <div class="rk-ozcfaq-item">
                <button class="rk-ozcfaq-question">
                    <span>5. Czy stary dom z lat 80. bez projektu można policzyć pod kątem OZC?</span>
                    <div class="rk-ozcfaq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-ozcfaq-answer-wrapper">
                    <div class="rk-ozcfaq-answer-inner">
                        <div class="rk-ozcfaq-content">
                            <div class="rk-ozcfaq-text">
                                Tak, dla starych budynków wykonuje się <strong>inwentaryzację termomodernizacyjną</strong>. Inżynier odtwarza strukturę przegród na podstawie odkrywek fizycznych oraz oceny stanu technicznego stolarki okiennej i stropów. Wprowadzając zebrane dane do oprogramowania inżynierskiego, jest w stanie z wysoką dokładnością wyznaczyć realne OZC, co jest warunkiem koniecznym do weryfikacji, <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-remontowanym-budynku-czy-warto/" class="rk-link">czy w starym budynku sprawdzi się instalacja płaszczyznowa</a> z pompą ciepła.
                            </div>
                            <div class="rk-ozcfaq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <g stroke="#64748b" stroke-width="2" fill="none">
                                        <rect x="25" y="15" width="15" height="8"/>
                                        <rect x="42" y="15" width="15" height="8"/>
                                        <rect x="59" y="15" width="15" height="8"/>
                                        <rect x="18" y="25" width="15" height="8"/>
                                        <rect x="35" y="25" width="15" height="8"/>
                                        <rect x="52" y="25" width="15" height="8"/>
                                        <rect x="69" y="25" width="15" height="8"/>
                                        <rect x="25" y="35" width="15" height="8"/>
                                        <rect x="42" y="35" width="15" height="8"/>
                                        <rect x="59" y="35" width="15" height="8"/>
                                    </g>
                                    <line class="anim-scan" x1="15" y1="20" x2="85" y2="20" stroke="#0ea5e9" stroke-width="2" stroke-dasharray="4 4"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez wyskakujących H2/H3 z błędami)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-ozc-faq-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

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

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



<style>
:root {
    --rk-ozc-dark: #0f172a;
    --rk-ozc-blue: #0284c7;
    --rk-ozc-light-blue: #f0f9ff;
    --rk-ozc-green: #059669;
    --rk-ozc-green-light: #ecfdf5;
    --rk-ozc-red: #dc2626;
    --rk-ozc-red-light: #fef2f2;
    --rk-ozc-gold: #fbbf24;
    --rk-ozc-gray: #64748b;
    --rk-ozc-border: #e2e8f0;
    --rk-ozc-bg: #ffffff;
}

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

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

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

.rk-ozc-header h2 {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 20px 0;
    color: #ffffff;
    line-height: 1.2;
}

.rk-ozc-intro-text {
    font-size: 17px;
    line-height: 1.7;
    color: #cbd5e1;
    max-width: 800px;
    margin: 0 auto;
    font-weight: 400;
}

.rk-ozc-intro-text a {
    color: #7dd3fc;
    text-decoration: none;
    border-bottom: 1px dashed #7dd3fc;
    transition: color 0.3s;
}

.rk-ozc-intro-text a:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

/* Interaktywny Symulator (Mobile App Switch) */
.rk-ozc-interactive {
    padding: 45px 50px;
    background: #f8fafc;
}

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

.rk-app-switch {
    background: #e2e8f0;
    border-radius: 99px;
    padding: 6px;
    display: inline-flex;
    position: relative;
    box-shadow: inset 0 2px 5px rgba(0,0,0,0.06);
    width: 100%;
    max-width: 500px;
}

.rk-switch-btn {
    flex: 1;
    position: relative;
    z-index: 2;
    padding: 14px 20px;
    font-size: 15px;
    font-weight: 800;
    border: none;
    background: transparent;
    color: #64748b;
    cursor: pointer;
    border-radius: 99px;
    transition: color 0.3s ease;
    text-align: center;
}

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

.rk-switch-glider {
    position: absolute;
    top: 6px;
    left: 6px;
    height: calc(100% - 12px);
    width: calc(50% - 6px);
    background: var(--rk-ozc-red);
    border-radius: 99px;
    transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), background-color 0.4s ease;
    box-shadow: 0 4px 10px -2px rgba(0,0,0,0.15);
    z-index: 1;
}

.rk-app-switch[data-mode="pro"] .rk-switch-glider {
    transform: translateX(100%);
    background: var(--rk-ozc-green);
}

/* Wynik symulacji */
.rk-ozc-result-box {
    background: #ffffff;
    border-radius: 20px;
    border: 2px solid var(--rk-ozc-border);
    padding: 35px;
    display: grid;
    grid-template-columns: 160px 1fr;
    gap: 40px;
    align-items: center;
    transition: all 0.4s ease;
}

.rk-ozc-result-box.mode-amateur {
    border-color: var(--rk-ozc-red-light);
    box-shadow: 0 15px 35px -10px rgba(220, 38, 38, 0.12);
}

.rk-ozc-result-box.mode-pro {
    border-color: var(--rk-ozc-green-light);
    box-shadow: 0 15px 35px -10px rgba(5, 150, 105, 0.12);
}

.rk-svg-stage {
    width: 100%;
    max-width: 160px;
    margin: 0 auto;
}

/* Animacje SVG */
.anim-pump-body { transition: fill 0.5s ease; }
.anim-waves { stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 0.5s ease; }

.mode-amateur .anim-pump-body { fill: var(--rk-ozc-red); animation: taktowaniePompy 0.3s infinite; }
.mode-amateur .anim-waves { stroke: var(--rk-ozc-red); animation: brokenWaves 1.5s infinite; }

.mode-pro .anim-pump-body { fill: var(--rk-ozc-green); animation: stabilnaPraca 3s infinite; }
.mode-pro .anim-waves { stroke: var(--rk-ozc-green); animation: smoothWaves 2s infinite linear; }

@keyframes taktowaniePompy {
    0% { transform: translate(1px, 1px); }
    25% { transform: translate(-2px, -1px); }
    50% { transform: translate(2px, 2px); }
    75% { transform: translate(-1px, -2px); }
    100% { transform: translate(1px, 1px); }
}

@keyframes stabilnaPraca {
    0% { filter: drop-shadow(0 0 0 rgba(16, 185, 129, 0)); transform: scale(1); }
    50% { filter: drop-shadow(0 0 15px rgba(16, 185, 129, 0.6)); transform: scale(1.02); }
    100% { filter: drop-shadow(0 0 0 rgba(16, 185, 129, 0)); transform: scale(1); }
}

@keyframes brokenWaves {
    0% { stroke-dashoffset: 100; opacity: 1; }
    50% { stroke-dashoffset: 50; opacity: 0.2; }
    100% { stroke-dashoffset: 0; opacity: 1; }
}

@keyframes smoothWaves {
    0% { stroke-dashoffset: 100; opacity: 0.8; }
    100% { stroke-dashoffset: -100; opacity: 0.8; }
}

.rk-ozc-content h3 {
    margin: 0 0 15px 0;
    font-size: 22px;
    font-weight: 800;
}

.mode-amateur .rk-ozc-content h3 { color: var(--rk-ozc-red); }
.mode-pro .rk-ozc-content h3 { color: var(--rk-ozc-green); }

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

.rk-ozc-content a {
    color: var(--rk-ozc-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(2, 132, 199, 0.3);
    transition: border-color 0.3s;
}

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

/* Tabela Kafelkowa (Koszty i Efekty) */
.rk-data-tiles {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
    margin-top: 25px;
}

.rk-tile {
    background: #f1f5f9;
    padding: 18px;
    border-radius: 14px;
    border-left: 4px solid transparent;
    transition: all 0.3s ease;
}

.mode-amateur .rk-tile { border-left-color: var(--rk-ozc-red); background: #fef2f2; }
.mode-pro .rk-tile { border-left-color: var(--rk-ozc-green); background: #ecfdf5; }

.rk-tile-label {
    display: block;
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: #64748b;
    margin-bottom: 5px;
}

.rk-tile-value {
    display: block;
    font-size: 17px;
    font-weight: 900;
    color: var(--rk-ozc-dark);
}

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

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

.rk-btn-massive:hover {
    transform: translateY(-5px);
    background: #0369a1;
    box-shadow: 0 20px 35px -5px rgba(2, 132, 199, 0.5);
    border-color: #7dd3fc;
}

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

@media (max-width: 768px) {
    .rk-ozc-header, .rk-ozc-interactive, .rk-ozc-cta-box { padding: 35px 25px; }
    .rk-ozc-result-box { grid-template-columns: 1fr; text-align: center; padding: 25px; gap: 20px; }
    .rk-svg-stage { max-width: 120px; margin-bottom: 10px; }
    .rk-switch-btn { padding: 12px 10px; font-size: 13px; }
    .rk-data-tiles { grid-template-columns: 1fr; gap: 12px; }
    .rk-btn-massive { width: 100%; padding: 18px 20px; font-size: 16px; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Podsumowanie techniczne: OZC a przyszłość instalacji",
    "description": "Projektowe Obciążenie Cieplne (OZC) wyznaczone według normy PN-EN 12831 to inżynierski fundament. Chroni przed taktowaniem pompy ciepła i błędami w układaniu podłogówki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-podsumowanie",
    "name": "Wpływ obliczeń OZC na żywotność i koszty instalacji grzewczej",
    "description": "Analiza porównawcza parametrów pracy pompy ciepła i hydrauliki ogrzewania podłogowego w przypadku zastosowania normy PN-EN 12831 oraz doboru szacunkowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowe obciążenie cieplne",
      "taktowanie pompy ciepła",
      "zbalansowanie hydrauliczne rotametry",
      "bezwładność termiczna jastrychu",
      "norma PN-EN 12831"
    ],
    "measurementTechnique": "Symulacja skutków doboru mocy źródła ciepła oraz nastaw rozdzielacza w oparciu o wyliczenia strat ciepła vs. przeliczniki W/m2.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wariant Szacunkowy: Przewymiarowana pompa ciepła, ciągłe taktowanie, brak możliwości zbalansowania pętli po wylaniu betonu.",
        "Wariant z OZC: Precyzyjnie dobrana moc, stabilna praca sprężarki, zbilansowane przepływy gwarantujące bezawaryjność."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-podsumowanie",
    "name": "Symulator Efektywności: OZC vs Zgadywanie",
    "description": "Interaktywny panel demonstrujący mechaniczne i finansowe skutki braku precyzyjnego Projektowego Obciążenia Cieplnego w systemach ogrzewania płaszczyznowego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA
=========================================== -->
<div class="rk-ozc-container" id="ozc-sum-app">
    <!-- Nagłówek -->
    <div class="rk-ozc-header">
        <div class="rk-ozc-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Podsumowanie Techniczne
        </div>
        <h2>OZC a przyszłość Twojej instalacji</h2>
        <p class="rk-ozc-intro-text">
            Projektowe Obciążenie Cieplne (OZC) wyznaczone zgodnie z normą <strong>PN-EN 12831</strong> to kluczowa decyzja inżynierska na etapie budowy lub modernizacji domu. Wodne ogrzewanie podłogowe jako system niskotemperaturowy o ogromnej <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładności termicznej</a> nie wybacza błędów – rury zalane betonem jastrychowym stają się elementem konstrukcyjnym budynku.
        </p>
    </div>

    <!-- Symulator Standardu -->
    <div class="rk-ozc-interactive">
        <div class="rk-switcher-wrapper">
            <div class="rk-app-switch" id="ozcSwitchContainer" data-mode="amateur">
                <div class="rk-switch-glider" id="ozcGlider"></div>
                <button class="rk-switch-btn active" data-target="amateur">Przelicznik &#8222;Na oko&#8221;</button>
                <button class="rk-switch-btn" data-target="pro">Projekt OZC (PN-EN 12831)</button>
            </div>
        </div>

        <div class="rk-ozc-result-box mode-amateur" id="ozcResultContent">
            <div class="rk-svg-stage">
                <!-- SVG animowane z kodu -->
                <svg viewBox="0 0 100 100" width="100%" height="100%">
                    <!-- Pompa Ciepła -->
                    <rect x="25" y="30" width="50" height="60" rx="6" class="anim-pump-body" />
                    <circle cx="50" cy="50" r="14" fill="#ffffff" opacity="0.9" />
                    <path d="M 45 45 L 55 50 L 45 55 Z" fill="#1e293b" />
                    <!-- Fale Ciepła (podłogówka) -->
                    <path d="M 10 95 Q 30 80 50 95 T 90 95" fill="none" stroke-width="4" stroke-linecap="round" class="anim-waves" />
                    <path d="M 10 105 Q 30 90 50 105 T 90 105" fill="none" stroke-width="4" stroke-linecap="round" class="anim-waves" style="animation-delay: 0.3s" />
                </svg>
            </div>
            
            <div class="rk-ozc-content">
                <h3 id="dynTitle">Taktowanie i nieodwracalne błędy</h3>
                <p id="dynDesc">
                    Rezygnacja z precyzyjnych obliczeń komputerowych na rzecz archaicznych przeliczników powierzchniowych to prosta droga do zakupu przewymiarowanej, stale taktującej <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a>, generującej wysokie koszty eksploatacji i skazanej na szybką awarię. Wadliwy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur</a> czy błędne zbalansowanie hydrauliczne na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach</a> są niemal niemożliwe do skorygowania po fakcie.
                </p>
                
                <div class="rk-data-tiles">
                    <div class="rk-tile">
                        <span class="rk-tile-label" id="dynLabel1">Ryzyko dla sprężarki</span>
                        <span class="rk-tile-value" id="dynVal1">Krytyczne (Taktowanie)</span>
                    </div>
                    <div class="rk-tile">
                        <span class="rk-tile-label" id="dynLabel2">Regulacja hydrauliczna</span>
                        <span class="rk-tile-value" id="dynVal2">Niemożliwa do kalibracji</span>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!-- Mocne CTA -->
    <div class="rk-ozc-cta-box">
        <h3 style="font-size: 24px; font-weight: 900; color: var(--rk-ozc-dark); margin: 0 0 15px 0;">Zbuduj instalację, która przetrwa dekady</h3>
        <p class="rk-ozc-intro-text" style="color: #64748b; margin-bottom: 30px;">
            Nie pozwól, by błędy na etapie planowania uderzyły Cię po portfelu. Wykorzystaj inżynierską wiedzę, sprawdzone normy i narzędzia, które gwarantują spokój.
        </p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-massive">
            PRZEJDŹ DO BAZY WIEDZY I PORADNIKÓW
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<!-- ==========================================
     LOGIKA JS I ZABEZPIECZENIE (DOMAIN LOCK)
=========================================== -->
<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez H2/H3 w alercie)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('ozc-sum-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 36px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Naruszenie Praw Autorskich</div>
                    <div style="font-size: 14px; color: #cbd5e1; max-width: 500px; margin: 0 auto; line-height: 1.6;">
                        Kontener podsumowujący oraz struktura JSON-LD są własnością serwisu Projekt-Ogrzewania.pl. Wykryto próbę kradzieży kodu na nieautoryzowanej domenie.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora (Mobile App Switch)
    const switchContainer = document.getElementById('ozcSwitchContainer');
    const btns = switchContainer.querySelectorAll('.rk-switch-btn');
    const resultBox = document.getElementById('ozcResultContent');
    
    // Elementy tekstowe do podmiany
    const dynTitle = document.getElementById('dynTitle');
    const dynDesc = document.getElementById('dynDesc');
    const dynLabel1 = document.getElementById('dynLabel1');
    const dynVal1 = document.getElementById('dynVal1');
    const dynLabel2 = document.getElementById('dynLabel2');
    const dynVal2 = document.getElementById('dynVal2');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Animacja przełącznika
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const targetMode = this.getAttribute('data-target');
            switchContainer.setAttribute('data-mode', targetMode);

            // Aktualizacja treści i klas kontenera SVG
            if (targetMode === 'pro') {
                resultBox.className = 'rk-ozc-result-box mode-pro';
                
                dynTitle.textContent = "Cicha, energooszczędna praca na dekady";
                dynDesc.innerHTML = `Jedynie precyzyjne powiązanie strat ciepła każdego pomieszczenia z geometrią <a href="https://projekt-ogrzewania.pl/petla-grzewcza/">pętli grzewczych</a> gwarantuje bezawaryjną, cichą i maksymalnie energooszczędną pracę całego systemu przez dekady. Wykluczasz awarie jeszcze na papierze.`;
                
                dynLabel1.textContent = "Żywotność układu";
                dynVal1.textContent = "Maksymalna wydajność (COP)";
                dynVal1.style.color = "var(--rk-ozc-green)";
                
                dynLabel2.textContent = "Przepływy w pętlach";
                dynVal2.textContent = "Idealnie zbalansowane";
                dynVal2.style.color = "var(--rk-ozc-green)";

            } else {
                resultBox.className = 'rk-ozc-result-box mode-amateur';
                
                dynTitle.textContent = "Taktowanie i nieodwracalne błędy";
                dynDesc.innerHTML = `Rezygnacja z precyzyjnych obliczeń komputerowych na rzecz archaicznych przeliczników powierzchniowych to prosta droga do zakupu przewymiarowanej, stale taktującej <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a>, generującej wysokie koszty eksploatacji i skazanej na szybką awarię. Wadliwy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur</a> czy błędne zbalansowanie hydrauliczne na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach</a> są niemal niemożliwe do skorygowania po fakcie.`;
                
                dynLabel1.textContent = "Ryzyko dla sprężarki";
                dynVal1.textContent = "Krytyczne (Taktowanie)";
                dynVal1.style.color = "var(--rk-ozc-dark)";
                
                dynLabel2.textContent = "Regulacja hydrauliczna";
                dynVal2.textContent = "Niemożliwa do kalibracji";
                dynVal2.style.color = "var(--rk-ozc-dark)";
            }
        });
    });
});
</script>



<style>
:root {
    --rk-ozcdl-dark: #0f172a;
    --rk-ozcdl-brand: #ea580c; /* Ognisty pomarańcz nawiązujący do ciepła */
    --rk-ozcdl-brand-dark: #c2410c;
    --rk-ozcdl-bg: #f8fafc;
    --rk-ozcdl-border: #e2e8f0;
    --rk-ozcdl-text: #334155;
    --rk-ozcdl-white: #ffffff;
    --rk-ozcdl-accent: #38bdf8;
}

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

/* NAGŁÓWEK SEKCI */
.rk-ozcdl-header {
    background: linear-gradient(135deg, var(--rk-ozcdl-dark) 0%, #311505 100%);
    padding: 45px 50px;
    color: var(--rk-ozcdl-white);
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: relative;
    overflow: hidden;
}

.rk-ozcdl-header::after {
    content: '';
    position: absolute;
    bottom: -50px;
    right: -20px;
    width: 200px;
    height: 200px;
    background: radial-gradient(circle, rgba(234, 88, 12, 0.4) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
    pointer-events: none;
}

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

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

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

.rk-ozcdl-header h2 span { color: #f97316; }

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

/* WIZUALIZACJA IKONY Z ANIMACJĄ CIEPŁA */
.rk-ozcdl-visual {
    position: relative;
    z-index: 2;
}

.rk-ozcdl-icon-svg {
    width: 90px;
    height: auto;
    filter: drop-shadow(0 15px 20px rgba(0,0,0,0.4));
    animation: ozcFloat 3.5s infinite ease-in-out alternate;
}

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

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

.rk-ozcdl-preview-box {
    flex: 1;
    background: var(--rk-ozcdl-bg);
    border: 2px dashed #cbd5e1;
    border-radius: 16px;
    padding: 10px;
    position: relative;
    cursor: zoom-in;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-ozcdl-preview-box:hover {
    transform: scale(1.03);
    border-color: var(--rk-ozcdl-brand);
    border-style: solid;
    box-shadow: 0 20px 30px -10px rgba(234, 88, 12, 0.2);
}

.rk-ozcdl-preview-img {
    width: 100%;
    height: auto;
    border-radius: 8px;
    display: block;
    box-shadow: 0 4px 15px rgba(0,0,0,0.1);
}

.rk-ozcdl-zoom-badge {
    position: absolute;
    bottom: 20px;
    right: 20px;
    background: rgba(15, 23, 42, 0.85);
    color: white;
    padding: 8px 16px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    backdrop-filter: blur(4px);
    transition: background 0.3s;
}

.rk-ozcdl-preview-box:hover .rk-ozcdl-zoom-badge {
    background: var(--rk-ozcdl-brand);
}

/* INTERAKTYWNY PANEL (PRAWA STRONA) */
.rk-ozcdl-info-side {
    flex: 1.2;
    display: flex;
    flex-direction: column;
}

/* Zakładki (Tabs) */
.rk-ozcdl-tabs {
    display: flex;
    background: #f1f5f9;
    border-radius: 12px;
    padding: 6px;
    margin-bottom: 25px;
}

.rk-ozcdl-tab {
    flex: 1;
    text-align: center;
    padding: 12px;
    font-size: 13.5px;
    font-weight: 800;
    color: var(--rk-ozcdl-muted);
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.2s ease;
}

.rk-ozcdl-tab.active {
    background: var(--rk-ozcdl-white);
    color: var(--rk-ozcdl-brand);
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.rk-ozcdl-panel {
    display: none;
    animation: fadeInTab 0.3s ease;
}

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

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

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

.rk-ozcdl-feature-item {
    display: flex;
    align-items: flex-start;
    gap: 15px;
    margin-bottom: 18px;
    font-size: 14.5px;
    font-weight: 600;
    color: var(--rk-ozcdl-text);
    line-height: 1.5;
}

.rk-ozcdl-feature-item svg {
    width: 22px;
    height: 22px;
    color: var(--rk-ozcdl-brand);
    flex-shrink: 0;
    margin-top: 2px;
}

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

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

.rk-ozcdl-main-btn svg { width: 24px; height: 24px; animation: bounceDl 2s infinite; }

@keyframes bounceDl {
    0%, 20%, 50%, 80%, 100% { transform: translateY(0); }
    40% { transform: translateY(-4px); }
    60% { transform: translateY(-2px); }
}

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

.rk-ozcdl-footer a {
    color: var(--rk-ozcdl-brand);
    font-weight: 800;
    text-decoration: none;
    transition: color 0.2s;
}

.rk-ozcdl-footer a:hover { text-decoration: underline; }

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

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-infografika",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Infografika: Projektowe Obciążenie Cieplne (OZC)",
    "description": "Pobierz kompleksową infografikę PDF omawiającą kluczowe parametry OZC, typowe wartości dla budynków i najczęstsze błędy instalatorów.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Projektowe-Obciazenie-Cieplne-OZC.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-infografika",
    "name": "Wskaźniki zapotrzebowania cieplnego budynków (W/m²)",
    "description": "Zestawienie średniego zapotrzebowania na moc (OZC) w zależności od standardu izolacji budynku oraz rozkład strat ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika OZC pdf",
      "pobierz OZC",
      "wskaźniki W/m2 dom",
      "straty ciepła schemat",
      "obliczanie zapotrzebowania na ciepło"
    ],
    "measurementTechnique": "Analiza normatywna zapotrzebowania mocy szczytowej w zależności od standardu termicznego budynku.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Typowe wartości OZC: Dom stary (90-150 W/m²), Modernizowany (50-80 W/m²), Energooszczędny (30-50 W/m²).",
        "Rozkład strat ciepła: Okna (35%), Ściany (26%), Dach (25%), Wentylacja (20%).",
        "Efekty poprawnie wykonanego OZC: Redukcja kosztów ogrzewania o 30% i odpowiedni dobór mocy pompy ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-infografika",
    "name": "Centrum Pobierania Wiedzy: Infografika OZC",
    "description": "Interaktywny moduł edukacyjny udostępniający graficzne kompendium wiedzy o Projektowym Obciążeniu Cieplnym w formacie PDF.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-ozcdl-container" id="app-ozc-dl">
    
    <div class="rk-ozcdl-header">
        <div class="rk-ozcdl-header-content">
            <div class="rk-ozcdl-badge">Darmowe Materiały Edukacyjne</div>
            <h2>Pobierz Kompletny <span>Poradnik OZC</span></h2>
            <p>Zabierz inżynierską wiedzę ze sobą. Kompendium parametrów cieplnych, wskaźniki W/m² oraz schemat ucieczki ciepła z budynku w jednym, czytelnym pliku PDF.</p>
        </div>
        <div class="rk-ozcdl-visual">
            <svg class="rk-ozcdl-icon-svg" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M75 15 L25 15 C19.5 15 15 19.5 15 25 L15 75 C15 80.5 19.5 85 25 85 L75 85 C80.5 85 85 80.5 85 75 L85 25 C85 19.5 80.5 15 75 15 Z" fill="#ea580c"/>
                <path d="M55 15 L85 45 L85 25 C85 19.5 80.5 15 75 15 Z" fill="#c2410c"/>
                <text x="50" y="65" fill="#ffffff" font-size="24" font-weight="900" font-family="sans-serif" text-anchor="middle">PDF</text>
                <path d="M50 25 C45 35 35 40 45 50 C55 60 65 35 50 25 Z" fill="#fbd38d" opacity="0.8"/>
            </svg>
        </div>
    </div>

    <div class="rk-ozcdl-workspace">
        
        <div class="rk-ozcdl-preview-box" onclick="window.open('https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Projektowe-Obciazenie-Cieplne-OZC.webp', '_blank')">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Projektowe-Obciazenie-Cieplne-OZC.webp" alt="Infografika Projektowe Obciążenie Cieplne OZC" class="rk-ozcdl-preview-img" loading="lazy">
            <div class="rk-ozcdl-zoom-badge">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" style="vertical-align: middle; margin-right: 5px;"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="11" y1="8" x2="11" y2="14"></line><line x1="8" y1="11" x2="14" y2="11"></line></svg>
                Powiększ podgląd
            </div>
        </div>

        <div class="rk-ozcdl-info-side">
            
            <div class="rk-ozcdl-tabs">
                <div class="rk-ozcdl-tab active" data-tab="tab-content">Co znajdziesz w środku?</div>
                <div class="rk-ozcdl-tab" data-tab="tab-why">Dlaczego warto?</div>
            </div>

            <div class="rk-ozcdl-panel active" id="tab-content">
                <ul class="rk-ozcdl-feature-list">
                    <li class="rk-ozcdl-feature-item">
                        <svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
                        Tabela wskaźników: Porównanie OZC (W/m²) dla starego i nowego budownictwa.
                    </li>
                    <li class="rk-ozcdl-feature-item">
                        <svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
                        Schemat ucieczki ciepła: % podział strat przez dach, ściany, okna i wentylację.
                    </li>
                    <li class="rk-ozcdl-feature-item">
                        <svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
                        Checklista inżyniera: 3 krytyczne błędy instalatorów, których musisz unikać.
                    </li>
                </ul>
            </div>

            <div class="rk-ozcdl-panel" id="tab-why">
                <ul class="rk-ozcdl-feature-list">
                    <li class="rk-ozcdl-feature-item">
                        <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" style="color: #10b981;"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"/></svg>
                        Oszczędność do 30% na kosztach ogrzewania dzięki poprawnemu doborowi pompy.
                    </li>
                    <li class="rk-ozcdl-feature-item">
                        <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" style="color: #10b981;"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
                        Zabezpieczenie przed kosztownym przewymiarowaniem urządzeń grzewczych.
                    </li>
                    <li class="rk-ozcdl-feature-item">
                        <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" style="color: #10b981;"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
                        Gwarancja optymalnego zrównoważenia hydraulicznego instalacji podłogowej.
                    </li>
                </ul>
            </div>

            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Projektowe-Obciazenie-Cieplne-OZC.pdf" class="rk-ozcdl-main-btn" target="_blank">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
                POBIERZ INFOGRAFIKĘ (PDF)
            </a>
            
        </div>

    </div>

    <div class="rk-ozcdl-footer">
        © 2026 Projekt-Ogrzewania.pl | Autor merytoryczny: <strong>Robert Kucharski</strong>.<br>
        Udostępnianie pliku jest dozwolone wyłącznie z zachowaniem <a href="https://projekt-ogrzewania.pl/">linku do źródła</a>.
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. OCHRONA DOMENOWA (DOMAIN LOCK)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('app-ozc-dl');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #fff7ed; border: 2px solid #ea580c; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 10px;">🔒</div>
                    <div style="font-size: 18px; font-weight: 900; color: #9a3412;">Zasoby Chronione</div>
                    <p style="color: #c2410c; font-size: 14px;">Ta infografika i dokumentacja OZC są własnością serwisu Projekt-Ogrzewania.pl.</p>
                </div>
            `;
        }
        return;
    }

    // 2. LOGIKA ZAKŁADEK (INTERAKTYWNOŚĆ)
    const tabs = document.querySelectorAll('.rk-ozcdl-tab');
    const panels = document.querySelectorAll('.rk-ozcdl-panel');

    tabs.forEach(tab => {
        tab.addEventListener('click', () => {
            // Usuń aktywną klasę ze wszystkich zakładek i paneli
            tabs.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Dodaj aktywną klasę do klikniętej zakładki
            tab.classList.add('active');
            
            // Pokaż odpowiedni panel
            const targetId = tab.getAttribute('data-tab');
            const targetPanel = document.getElementById(targetId);
            if(targetPanel) {
                targetPanel.classList.add('active');
            }
        });
    });
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">Projektowe Obciążenie Cieplne (OZC).</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
