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

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa Projektowanie instalacji grzewczych - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/category/projektowanie-instalacji-grzewczych/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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>Ogrzewanie podłogowe wodne bez wylewki.</title>
		<link>https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-wodne-bez-wylewki/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 18 Apr 2026 10:24:49 +0000</pubDate>
				<category><![CDATA[Budowa i remont]]></category>
		<category><![CDATA[Domy drewniane]]></category>
		<category><![CDATA[Domy szkieletowe]]></category>
		<category><![CDATA[Niskotemperaturowe systemy grzewcze]]></category>
		<category><![CDATA[Nowoczesne systemy grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Porady dla domu]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Porady remontowe]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Remont]]></category>
		<category><![CDATA[Remont domu]]></category>
		<category><![CDATA[Remont i modernizacja]]></category>
		<category><![CDATA[Systemy grzewcze]]></category>
		<category><![CDATA[koszty systemu suchego]]></category>
		<category><![CDATA[lamele aluminiowe]]></category>
		<category><![CDATA[lekka podłogówka]]></category>
		<category><![CDATA[ogrzewanie podłogowe wodne bez wylewki]]></category>
		<category><![CDATA[ogrzewanie w domu szkieletowym]]></category>
		<category><![CDATA[ogrzewanie w kamienicy]]></category>
		<category><![CDATA[płyty eps z wypustkami]]></category>
		<category><![CDATA[podłogówka na sucho]]></category>
		<category><![CDATA[projektowanie podłogówki]]></category>
		<category><![CDATA[remont starego domu]]></category>
		<category><![CDATA[suchy jastrych]]></category>
		<category><![CDATA[system suchy]]></category>
		<category><![CDATA[test szczelności instalacji]]></category>
		<category><![CDATA[układanie podłogówki]]></category>
		<category><![CDATA[wady ogrzewania bez wylewki]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=4218</guid>

					<description><![CDATA[<p>Zastanawiasz się nad montażem popularnej podłogówki, ale Twój drewniany strop w starej kamienicy po prostu nie wytrzyma ciężaru kilkutonowej warstwy betonu? A może budujesz nowoczesny dom szkieletowy i zależy Ci na błyskawicznym czasie realizacji bez wprowadzania do wnętrza wilgoci technologicznej? Odpowiedzią na te problemy jest ogrzewanie podłogowe wodne bez wylewki, znane powszechnie jako system suchy. To zaawansowane rozwiązanie inżynieryjne, które zamiast ciężkiego jastrychu wykorzystuje lekkie płyty izolacyjne oraz precyzyjne lamele aluminiowe. W naszym kompletnym przewodniku rozkładamy tę technologię na czynniki pierwsze. Obalamy szkodliwe mity, tłumaczymy jak prawidłowo zaplanować moc grzewczą, by uniknąć niedogrzania, oraz wskazujemy krytyczne pułapki montażowe. Dowiedz się, kiedy rezygnacja z betonu to jedyna słuszna decyzja i o co zapytać instalatora przed rozpoczęciem prac.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-wodne-bez-wylewki/">Ogrzewanie podłogowe wodne bez wylewki.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<div class="premium-hero-box" id="hero-app-container">
    <div class="hero-content">
        
        <div class="hero-badge">
            <span>📚</span> Kompletny Przewodnik
        </div>
        
        <p class="hero-text"><strong>Ogrzewanie podłogowe wodne bez wylewki</strong> to rozwiązanie, które w ostatnich latach zyskuje ogromną popularność wśród inwestorów indywidualnych, właścicieli starych kamienic oraz wszystkich tych, którzy chcą cieszyć się komfortem ciepłej podłogi bez konieczności wylewania ton betonu.</p>
        
        <p class="hero-text">W przeciwieństwie do tradycyjnej podłogówki, gdzie rury są zalewane grubą warstwą jastrychu, system suchy opiera się na prefabrykowanych płytach izolacyjnych i aluminiowych elementach przewodzących ciepło. W tym obszernym, technicznym opracowaniu przeprowadzę Cię krok po kroku przez wszystkie aspekty tej technologii.</p>

        <div class="hero-modules-title">Czego dowiesz się z tego opracowania?</div>
        
        <div class="hero-grid">
            <div class="hero-card">
                <span class="hero-card-icon">🔍</span>
                <span class="hero-card-title">Zasada działania i anatomia</span>
            </div>
            <div class="hero-card">
                <span class="hero-card-icon">🧮</span>
                <span class="hero-card-title">Wyliczenia mocy grzewczej</span>
            </div>
            <div class="hero-card">
                <span class="hero-card-icon">🛠️</span>
                <span class="hero-card-title">Praktyczne porady montażowe</span>
            </div>
            <div class="hero-card">
                <span class="hero-card-icon">📈</span>
                <span class="hero-card-title">Analiza opłacalności (ROI)</span>
            </div>
        </div>

    </div>
</div>

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



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

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

.anatomy-header {
    padding: 40px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
    border-bottom: 1px solid var(--border-color);
}

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

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

.anatomy-header p:last-child {
    margin-bottom: 0;
}

.anatomy-header a {
    color: var(--accent);
    font-weight: 700;
    text-decoration: underline;
    text-decoration-color: #bfdbfe;
    text-underline-offset: 3px;
}

.anatomy-workspace {
    display: flex;
    min-height: 500px;
}

/* LEWA STRONA - STOS WARSTW (PRZEKRÓJ) */
.anatomy-layers {
    width: 40%;
    background: #ffffff;
    border-right: 1px solid var(--border-color);
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 30px;
    gap: 12px;
}

.layer-btn {
    position: relative;
    width: 100%;
    padding: 18px 20px;
    border-radius: 12px;
    border: 2px solid var(--border-color);
    background: #ffffff;
    cursor: pointer;
    text-align: left;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    gap: 15px;
    overflow: hidden;
}

.layer-btn::before {
    content: '';
    position: absolute;
    left: 0; top: 0; height: 100%; width: 6px;
    background: #cbd5e1;
    transition: all 0.3s;
}

/* Kolory poszczególnych warstw */
.layer-btn[data-layer="finish"]::before { background: #b45309; } /* Drewno/Płytka */
.layer-btn[data-layer="pipe"]::before { background: var(--danger); } /* Rura PEX */
.layer-btn[data-layer="lamella"]::before { background: #94a3b8; } /* Aluminium */
.layer-btn[data-layer="eps"]::before { background: #38bdf8; } /* Styropian EPS */

.layer-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05);
    border-color: #cbd5e1;
}

.layer-btn.active {
    border-color: var(--accent);
    background: #eff6ff;
    box-shadow: 0 10px 20px -5px rgba(37, 99, 235, 0.15);
}

.layer-btn.active::before {
    background: var(--accent);
    width: 8px;
}

.layer-icon {
    font-size: 24px;
    filter: grayscale(0.2);
    transition: transform 0.3s;
}

.layer-btn.active .layer-icon {
    transform: scale(1.2);
    filter: grayscale(0);
}

.layer-title {
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    font-weight: 800;
    color: var(--primary);
    line-height: 1.3;
}

.layer-subtitle {
    display: block;
    font-size: 11px;
    font-weight: 600;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-top: 4px;
}

/* PRAWA STRONA - SZCZEGÓŁY WARSTWY */
.anatomy-details {
    width: 60%;
    background: var(--bg-light);
    padding: 40px;
    position: relative;
}

.detail-pane {
    display: none;
    animation: fadeInSlide 0.4s ease-out forwards;
}

.detail-pane.active {
    display: block;
}

.detail-pane h4 {
    margin: 0 0 20px 0;
    font-size: 24px;
    font-weight: 900;
    color: var(--primary);
    display: flex;
    align-items: center;
    gap: 12px;
}

.detail-pane p {
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
    margin-bottom: 15px;
}

.detail-pane ul {
    margin: 0 0 20px 0;
    padding-left: 20px;
}

.detail-pane li {
    font-size: 15px;
    line-height: 1.6;
    color: #475569;
    margin-bottom: 10px;
}

.detail-pane strong {
    color: var(--primary);
}

.detail-pane a {
    color: var(--accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid #bfdbfe;
    transition: all 0.2s;
}

.detail-pane a:hover {
    background: #eff6ff;
    border-bottom-color: var(--accent);
}

.highlight-box {
    background: #ffffff;
    border-left: 4px solid var(--warning);
    padding: 15px 20px;
    border-radius: 0 12px 12px 0;
    font-size: 14px;
    font-weight: 600;
    color: var(--primary);
    box-shadow: 0 2px 5px rgba(0,0,0,0.02);
    margin-top: 20px;
    line-height: 1.6;
}

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

@media (max-width: 768px) {
    .anatomy-header { padding: 30px 20px; }
    /* Zmiana flex-direction: column-reverse na column */
    .anatomy-workspace { flex-direction: column; min-height: auto; }
    
    .anatomy-layers {
        width: 100%;
        border-right: none;
        border-bottom: 1px solid var(--border-color); /* Zmiana border-top na border-bottom */
        padding: 20px;
    }
    
    .anatomy-details {
        width: 100%;
        padding: 30px 20px;
    }
}
</style>

<div class="premium-anatomy-box" id="anatomy-app-container">
    
    <div class="anatomy-header">
        <h2>Czym dokładnie jest ogrzewanie bez wylewki?</h2>
        <p>W klasycznym ujęciu ogrzewanie płaszczyznowe kojarzy się z betonem. Rury układane są na izolacji, a następnie zalewane jastrychem o grubości od 6 do 10 cm. Ta masa betonu pełni trzy funkcje: akumuluje ciepło, rozprowadza je równomiernie po powierzchni oraz stabilizuje mechanicznie instalację. Problem pojawia się, gdy strop nie jest w stanie udźwignąć dodatkowych 150–200 kg/m² lub gdy nie mamy czasu na 28 dni schnięcia.</p>
        <p>System ogrzewania wodnego bez wylewki (nazywany fachowo <a href="https://projekt-ogrzewania.pl/czym-jest-system-suchy-w-wodnym-ogrzewaniu-podlogowym/">systemem suchym</a>) eliminuje mokre procesy budowlane. Zamiast betonu wykorzystuje precyzyjne warstwy, które możesz zbadać poniżej.</p>
    </div>

    <div class="anatomy-workspace">
        
        <div class="anatomy-layers">
            <span style="font-size: 11px; font-weight: 800; color: #94a3b8; text-transform: uppercase; letter-spacing: 1px; text-align: center; margin-bottom: 5px;">Przekrój podłogi (kliknij)</span>
            
            <button class="layer-btn active" data-target="pane-finish" data-layer="finish">
                <span class="layer-icon">🪵</span>
                <div>
                    <div class="layer-title">Warstwa wykończeniowa</div>
                    <span class="layer-subtitle">Panele / Płytki + Podkład</span>
                </div>
            </button>
            
            <button class="layer-btn" data-target="pane-pipe" data-layer="pipe">
                <span class="layer-icon">🔴</span>
                <div>
                    <div class="layer-title">Rury grzewcze</div>
                    <span class="layer-subtitle">PEX / PE-RT 14-16 mm</span>
                </div>
            </button>
            
            <button class="layer-btn" data-target="pane-lamella" data-layer="lamella">
                <span class="layer-icon">🛡️</span>
                <div>
                    <div class="layer-title">Lamele aluminiowe</div>
                    <span class="layer-subtitle">Serce systemu suchego</span>
                </div>
            </button>
            
            <button class="layer-btn" data-target="pane-eps" data-layer="eps">
                <span class="layer-icon">🧊</span>
                <div>
                    <div class="layer-title">Płyty systemowe</div>
                    <span class="layer-subtitle">EPS 200 / Gipsowo-włóknowe</span>
                </div>
            </button>
        </div>

        <div class="anatomy-details">
            
            <div class="detail-pane active" id="pane-finish">
                <h4>Warstwa wykończeniowa</h4>
                <p>W odróżnieniu od wylewki, gdzie płytki kleimy bezpośrednio do betonu, w systemie suchym konieczne jest stworzenie sztywnej, pływającej posadzki:</p>
                <ul>
                    <li><strong>Pod panele laminowane lub winylowe LVT:</strong> Kładzie się bezpośrednio na płyty systemowe z rurami specjalną perforowaną matę podkładową o bardzo niskim <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%25c2%25b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">oporze cieplnym</a> (R ≤ 0,05 m²K/W). Użycie zwykłej pianki zablokuje ciepło!</li>
                    <li><strong>Pod płytki ceramiczne i kamień:</strong> Wymagane jest zastosowanie płyt suchego jastrychu (np. gipsowo-włóknowych) o grubości min. 10–12,5 mm, układanych dwuwarstwowo. Dopiero na to nakłada się elastyczny klej i płytki.</li>
                </ul>
            </div>

            <div class="detail-pane" id="pane-pipe">
                <h4>Rury grzewcze</h4>
                <p>W systemach suchych dominują rury o mniejszej średnicy niż w klasycznej wylewce betonowej.</p>
                <p><strong>Standard:</strong> PEX lub PE-RT o średnicy 14 mm lub 16 mm.</p>
                <div class="highlight-box" style="border-left-color: var(--accent);">
                    <strong>Dlaczego mniejsze?</strong> Mniejsza średnica rury pozwala na zmniejszenie grubości całej płyty systemowej i łatwiejsze formowanie łuków w wyfrezowanych kanałach. Ponadto, mniejsza ilość wody w instalacji znacznie przyspiesza reakcję układu na zmiany ustawień termostatu.
                </div>
            </div>

            <div class="detail-pane" id="pane-lamella">
                <h4>Lamele aluminiowe</h4>
                <p>To najważniejszy element odróżniający profesjonalny system suchy od amatorskiej próby włożenia rury w zwykły styropian. <strong>Bez <a href="https://projekt-ogrzewania.pl/produkt/lamel-grzejny-metalowy/">lameli</a> system nie działa!</strong></p>
                <ul>
                    <li><strong>Funkcja:</strong> Aluminium (λ ≈ 200 W/mK) przejmuje ciepło punktowe z rurki i rozprowadza je na boki na szerokość kilkunastu centymetrów.</li>
                    <li><strong>Budowa:</strong> Są to cienkie (0,4–0,6 mm) blachy w kształcie litery omega (Ω), w które na ścisk zatrzaskuje się rurę grzewczą.</li>
                </ul>
                <div class="highlight-box">
                    <strong>Efekt:</strong> Eliminujemy tzw. efekt zebry termicznej. Gdyby rura leżała pod panelami bez aluminium, stopa czułaby naprzemiennie gorące i zimne paski. Lamele wyrównują temperaturę do różnicy mniejszej niż 2°C na całej płycie.
                </div>
            </div>

            <div class="detail-pane" id="pane-eps">
                <h4>Płyty systemowe (Szkielet)</h4>
                <p>Podstawą całego układu, na której opiera się ciężar, są płyty systemowe. Wykonuje się je z dwóch materiałów:</p>
                <ul>
                    <li><strong>Twardy styropian EPS:</strong> Najczęściej o podwyższonej gęstości, np. <a href="https://projekt-ogrzewania.pl/produkt/plyta-styropianowa-eps-200-z-wypustkami/">EPS 200</a> lub EPS T. Mają grubość od 25 do 50 mm, z fabrycznie wyfrezowanymi kanałami na rury (rozstaw 15 cm lub 30 cm).</li>
                    <li><strong>Płyty gipsowo-włóknowe:</strong> Rozwiązanie droższe, ale oferujące wyższą wytrzymałość punktową i izolacyjność akustyczną.</li>
                </ul>
                <div class="highlight-box" style="border-left-color: var(--danger);">
                    <strong>Uwaga:</strong> Zastosowanie zwykłego styropianu o zbyt niskiej gęstości grozi jego ugięciem pod ciężarem mebli i trwałym „klawiszowaniem” (zapadaniem się) podłogi.
                </div>
            </div>

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

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

    // LOGIKA ZAKŁADEK (WARSTW)
    const layerBtns = document.querySelectorAll('.layer-btn');
    const panes = document.querySelectorAll('.detail-pane');

    layerBtns.forEach(button => {
        button.addEventListener('click', () => {
            // Reset active states
            layerBtns.forEach(btn => btn.classList.remove('active'));
            panes.forEach(pane => pane.classList.remove('active'));
            
            // Set active state on clicked element
            button.classList.add('active');
            
            // Show corresponding pane
            const targetId = button.getAttribute('data-target');
            document.getElementById(targetId).classList.add('active');
        });
    });
});
</script>



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

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

.adv-header {
    padding: 40px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
    border-bottom: 1px solid var(--border-color);
    text-align: center;
}

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

.adv-header p {
    margin: 0 auto 30px auto;
    max-width: 800px;
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
}

/* PRZEŁĄCZNIK TECHNOLOGII */
.toggle-wrapper {
    display: inline-flex;
    align-items: center;
    background: #ffffff;
    padding: 10px 20px;
    border-radius: 100px;
    border: 1px solid var(--border-color);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);
    gap: 15px;
}

.toggle-label {
    font-size: 14px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: #94a3b8;
    transition: color 0.3s;
    cursor: pointer;
}

.toggle-label.active-wet { color: var(--wet-color); }
.toggle-label.active-dry { color: var(--accent); }

.switch {
    position: relative;
    display: inline-block;
    width: 60px;
    height: 34px;
}

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

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

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

input:checked + .slider { background-color: var(--accent); }
input:checked + .slider:before { transform: translateX(26px); }

/* KARTY KORZYŚCI */
.adv-grid {
    padding: 40px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 25px;
    background: #ffffff;
}

.adv-card {
    padding: 30px;
    border-radius: 20px;
    border: 2px solid var(--border-color);
    transition: all 0.4s ease;
    position: relative;
    overflow: hidden;
}

.adv-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 6px; height: 100%;
    background: var(--wet-color);
    transition: background 0.4s;
}

.adv-card.is-dry {
    border-color: #bfdbfe;
    background: #f8fafc;
    box-shadow: 0 10px 25px -5px rgba(37, 99, 235, 0.05);
}

.adv-card.is-dry::before { background: var(--accent); }

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

.card-title {
    font-size: 15px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: #64748b;
    margin-bottom: 10px;
}

.card-value {
    font-size: 36px;
    font-weight: 900;
    color: var(--primary);
    margin-bottom: 15px;
    line-height: 1.1;
    transition: color 0.4s;
}

.adv-card.is-dry .card-value { color: var(--accent); }

.card-desc {
    font-size: 14px;
    line-height: 1.6;
    color: #475569;
    margin: 0;
    min-height: 80px;
}

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

.example-box {
    margin-top: 15px;
    padding: 12px 15px;
    background: #ffffff;
    border-radius: 12px;
    font-size: 13px;
    border: 1px solid #e2e8f0;
    display: none;
}

.adv-card.is-dry .example-box {
    display: block;
    animation: fadeIn 0.5s;
}

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

@media (max-width: 768px) {
    .adv-header { padding: 30px 20px; }
    .adv-header h3 { font-size: 24px; }
    .adv-grid { grid-template-columns: 1fr; padding: 25px 20px; gap: 20px; }
    .toggle-wrapper { flex-direction: column; gap: 10px; border-radius: 20px; padding: 15px; }
    .card-desc { min-height: auto; }
}
</style>

<div class="premium-advantages-box" id="advantages-app-container">
    
    <div class="adv-header">
        <h3>Kluczowe zalety systemu suchego</h3>
        <p>Decyzja o wyborze podłogówki bez wylewki rzadko wynika z kaprysu. Najczęściej podyktowana jest konkretnymi ograniczeniami budowlanymi. Przełącz technologię poniżej, aby zobaczyć kolosalną różnicę w parametrach.</p>
        
        <div class="toggle-wrapper">
            <span class="toggle-label" id="lbl-wet" onclick="document.getElementById('sys-toggle').click()">System Mokry</span>
            <label class="switch">
                <input type="checkbox" id="sys-toggle" checked>
                <span class="slider"></span>
            </label>
            <span class="toggle-label active-dry" id="lbl-dry" onclick="document.getElementById('sys-toggle').click()">System Suchy</span>
        </div>
    </div>

    <div class="adv-grid">
        
        <div class="adv-card is-dry" id="card-weight">
            <div class="card-icon">⚖️</div>
            <div class="card-title">Obciążenie stropu</div>
            <div class="card-value" id="val-weight">22–35 kg/m²</div>
            <p class="card-desc" id="desc-weight">Absolutny priorytet w starym budownictwie. Konstrukcja oparta na styropianie, lamelach i suchym jastrychu waży zaledwie ułamek tego, co beton.</p>
            <div class="example-box" id="ex-weight">
                <strong>Przykład:</strong> Mieszkanie 50m² (strop drewniany). System suchy to ok. 1,2 tony. Tradycyjna wylewka dodałaby aż <strong>7,5 tony</strong> – to ryzyko katastrofy budowlanej!
            </div>
        </div>

        <div class="adv-card is-dry" id="card-height">
            <div class="card-icon">📏</div>
            <div class="card-title">Całkowita wysokość zabudowy</div>
            <div class="card-value" id="val-height">od 30 mm</div>
            <p class="card-desc" id="desc-height">Idealne rozwiązanie do domów z niskim sufitem lub przy modernizacji, gdzie podłoga np. w przedpokoju jest już na stałym poziomie.</p>
            <div class="example-box" id="ex-height">
                <strong>Bez schodków:</strong> (płyta 20 mm + mata 2 mm + panel 8 mm). Pozwala uniknąć budowy nieestetycznych podestów i docinania drzwi.
            </div>
        </div>

        <div class="adv-card is-dry" id="card-time">
            <div class="card-icon">⏳</div>
            <div class="card-title">Procesy mokre i schnięcie</div>
            <div class="card-value" id="val-time">0 dni</div>
            <p class="card-desc" id="desc-time">Ogromna przewaga logistyczna. Układamy rury, zamykamy suchym jastrychem i <strong>od razu</strong> możemy układać płytki lub panele.</p>
            <div class="example-box" id="ex-time">
                <strong>Szybki efekt:</strong> Wieczorem tego samego dnia można wnieść meble. Brak wilgoci technologicznej opóźniającej prace malarskie.
            </div>
        </div>

        <div class="adv-card is-dry" id="card-response">
            <div class="card-icon">🚀</div>
            <div class="card-title">Czas nagrzewania układu</div>
            <div class="card-value" id="val-response">20–40 min</div>
            <p class="card-desc" id="desc-response">Dzięki niskiej akumulacyjności, system natychmiast reaguje na zmiany ustawień termostatu lub zyski ciepła od słońca przez okna.</p>
            <div class="example-box" id="ex-response">
                <strong>Oszczędność:</strong> Szybka reakcja przekłada się na niższe zużycie energii w okresach przejściowych (wiosna/jesień) i brak przegrzewania pokoi.
            </div>
        </div>

    </div>
</div>

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

    // LOGIKA PRZEŁĄCZNIKA
    const toggle = document.getElementById('sys-toggle');
    const lblWet = document.getElementById('lbl-wet');
    const lblDry = document.getElementById('lbl-dry');
    
    const cards = [
        document.getElementById('card-weight'),
        document.getElementById('card-height'),
        document.getElementById('card-time'),
        document.getElementById('card-response')
    ];

    // Dane do podmiany
    const data = {
        dry: {
            weight: "22–35 kg/m²", descWeight: "Absolutny priorytet w starym budownictwie. Konstrukcja oparta na styropianie, lamelach i suchym jastrychu waży zaledwie ułamek tego, co beton.",
            height: "od 30 mm", descHeight: "Idealne rozwiązanie do domów z niskim sufitem lub przy modernizacji, gdzie podłoga np. w przedpokoju jest już na stałym poziomie.",
            time: "0 dni", descTime: "Ogromna przewaga logistyczna. Układamy rury, zamykamy suchym jastrychem i <strong>od razu</strong> możemy układać płytki lub panele.",
            response: "20–40 min", descResponse: "Dzięki niskiej akumulacyjności, system natychmiast reaguje na zmiany ustawień termostatu lub zyski ciepła od słońca przez okna."
        },
        wet: {
            weight: "120–180 kg/m²", descWeight: "Ogromna masa wylewki cementowej (ok. 6 cm) i płytek. Wymaga solidnych stropów żelbetowych projektowanych na duże obciążenia.",
            height: "ok. 80 mm", descHeight: "Klasyczna wysokość zabudowy (izolacja + wylewka). Często wymusza podnoszenie drzwi, tworzenie podestów lub schodków do innych pomieszczeń.",
            time: "8 tygodni", descTime: "Wymaga długiego sezonowania. Zgodnie z normą: 1 tydzień na każdy z pierwszych 4 cm, a 2 tygodnie na każdy kolejny. Hamuje to dalsze prace wykończeniowe.",
            response: "4–6 godzin", descResponse: "Beton ma ogromną bezwładność cieplną. System nagrzewa się godzinami, a po wyłączeniu dalej długo oddaje ciepło (ryzyko przegrzewania)."
        }
    };

    function updateCards(isDry) {
        if(isDry) {
            lblDry.classList.add('active-dry');
            lblWet.classList.remove('active-wet');
            
            cards.forEach(c => c.classList.add('is-dry'));
            
            document.getElementById('val-weight').innerText = data.dry.weight;
            document.getElementById('desc-weight').innerHTML = data.dry.descWeight;
            
            document.getElementById('val-height').innerText = data.dry.height;
            document.getElementById('desc-height').innerHTML = data.dry.descHeight;
            
            document.getElementById('val-time').innerText = data.dry.time;
            document.getElementById('desc-time').innerHTML = data.dry.descTime;
            
            document.getElementById('val-response').innerText = data.dry.response;
            document.getElementById('desc-response').innerHTML = data.dry.descResponse;
            
        } else {
            lblDry.classList.remove('active-dry');
            lblWet.classList.add('active-wet');
            
            cards.forEach(c => c.classList.remove('is-dry'));
            
            document.getElementById('val-weight').innerText = data.wet.weight;
            document.getElementById('desc-weight').innerHTML = data.wet.descWeight;
            
            document.getElementById('val-height').innerText = data.wet.height;
            document.getElementById('desc-height').innerHTML = data.wet.descHeight;
            
            document.getElementById('val-time').innerText = data.wet.time;
            document.getElementById('desc-time').innerHTML = data.wet.descTime;
            
            document.getElementById('val-response').innerText = data.wet.response;
            document.getElementById('desc-response').innerHTML = data.wet.descResponse;
        }
    }

    toggle.addEventListener('change', function() {
        updateCards(this.checked);
    });

});
</script>



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

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

.limits-header {
    padding: 35px 40px;
    background: linear-gradient(to bottom, #ffffff, #fef2f2);
    border-bottom: 1px solid var(--border-color);
    text-align: center;
}

.limits-header h3 {
    margin: 0 0 15px 0;
    font-size: 26px;
    font-weight: 900;
    color: var(--danger);
}

.limits-header p {
    margin: 0 auto;
    max-width: 750px;
    font-size: 15px;
    line-height: 1.6;
    color: #475569;
}

.limits-workspace {
    display: flex;
    min-height: 400px;
}

/* LEWA STRONA - MENU ZAGROŻEŃ */
.limits-menu {
    width: 38%;
    background: #ffffff;
    border-right: 1px solid var(--border-color);
    display: flex;
    flex-direction: column;
    padding: 20px 0;
}

.limit-btn {
    padding: 20px 25px;
    background: transparent;
    border: none;
    border-left: 4px solid transparent;
    text-align: left;
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    font-weight: 700;
    color: #64748b;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 12px;
}

.limit-btn:hover {
    background: #f8fafc;
    color: var(--primary);
}

.limit-btn.active {
    background: #fef2f2;
    border-left-color: var(--danger);
    color: var(--danger);
}

.limit-icon {
    font-size: 20px;
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f1f5f9;
    border-radius: 8px;
    transition: all 0.3s;
}

.limit-btn.active .limit-icon {
    background: #fecaca;
    color: #991b1b;
}

/* PRAWA STRONA - TREŚĆ */
.limits-content-area {
    width: 62%;
    background: var(--bg-light);
    position: relative;
    padding: 35px 40px;
}

.limit-pane {
    display: none;
    animation: fadeSlideUp 0.3s ease-out forwards;
}

.limit-pane.active { display: block; }

.limit-pane h4 {
    margin: 0 0 15px 0;
    font-size: 22px;
    font-weight: 900;
    color: var(--primary);
    line-height: 1.3;
}

.limit-pane p {
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
    margin-bottom: 20px;
}

/* Wizualizacja kosztów (Bar chart CSS) */
.cost-compare {
    margin: 25px 0;
}

.cost-row { margin-bottom: 15px; }
.cost-label { display: flex; justify-content: space-between; font-size: 13px; font-weight: 700; color: var(--primary); margin-bottom: 6px; }
.cost-label span.price { color: #64748b; }
.cost-bar-bg { width: 100%; background: #e2e8f0; border-radius: 6px; height: 18px; overflow: hidden; }
.cost-bar-fill { height: 100%; background: var(--accent); border-radius: 6px; }
.fill-wet { width: 45%; background: #94a3b8; }
.fill-dry { width: 100%; background: var(--warning); }

/* Boks informacyjny */
.info-box {
    background: #ffffff;
    border-left: 4px solid var(--accent);
    padding: 15px 20px;
    border-radius: 0 12px 12px 0;
    font-size: 14px;
    line-height: 1.6;
    color: #475569;
    margin-top: 20px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.info-box.critical {
    border-left-color: var(--danger);
    background: #fef2f2;
}

.info-box.critical strong { color: var(--danger); }

/* Lista konsekwencji */
.consequences-list {
    list-style: none;
    padding: 0;
    margin: 0 0 20px 0;
}

.consequences-list li {
    position: relative;
    padding-left: 28px;
    margin-bottom: 12px;
    font-size: 14px;
    font-weight: 600;
    color: #334155;
    line-height: 1.5;
}

.consequences-list li::before {
    content: "❌";
    position: absolute;
    left: 0;
    top: 0;
    font-size: 14px;
}

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

/* MOBILE */
@media (max-width: 768px) {
    .limits-header { padding: 25px 20px; }
    .limits-workspace { flex-direction: column; min-height: auto; }
    
    .limits-menu {
        width: 100%;
        border-right: none;
        border-bottom: 1px solid var(--border-color);
        padding: 10px;
    }
    
    .limit-btn {
        padding: 15px;
        border-left: none;
        border-bottom: 3px solid transparent;
        background: #f8fafc;
        margin-bottom: 8px;
        border-radius: 12px;
    }
    
    .limit-btn.active {
        border-left: none;
        border-bottom-color: var(--danger);
    }
    
    .limits-content-area {
        width: 100%;
        padding: 30px 20px;
    }
}
</style>

<div class="premium-limitations-box" id="limitations-app-container">
    
    <div class="limits-header">
        <h2>Wady i ograniczenia – na co musisz być przygotowany</h2>
        <p>Jak każde rozwiązanie techniczne, podłogówka bez wylewki nie jest pozbawiona wad. Ignorowanie tych ograniczeń może prowadzić do rozczarowania efektem grzewczym lub zniszczenia podłogi.</p>
    </div>

    <div class="limits-workspace">
        
        <div class="limits-menu">
            <button class="limit-btn active" data-target="pane-cost">
                <span class="limit-icon">💰</span> Wyższy koszt materiałów
            </button>
            <button class="limit-btn" data-target="pane-cooling">
                <span class="limit-icon">❄️</span> Szybsze wychładzanie
            </button>
            <button class="limit-btn" data-target="pane-leveling">
                <span class="limit-icon">📐</span> Ryzyko nierównego podłoża
            </button>
        </div>

        <div class="limits-content-area">
            
            <div class="limit-pane active" id="pane-cost">
                <h4>Wyższy koszt zakupu materiałów</h4>
                <p>W przeliczeniu na metr kwadratowy, sam materiał do systemu suchego jest droższy o <strong>40–70%</strong> w porównaniu do tradycyjnego systemu z betonem.</p>
                
                <div class="cost-compare">
                    <div class="cost-row">
                        <div class="cost-label">
                            <span>Wylewka mokra (rura, beton, izolacja)</span>
                            <span class="price">ok. 80–120 zł/m²</span>
                        </div>
                        <div class="cost-bar-bg"><div class="cost-bar-fill fill-wet"></div></div>
                    </div>
                    <div class="cost-row">
                        <div class="cost-label">
                            <span>System suchy (płyty, lamele, suchy jastrych)</span>
                            <span class="price">ok. 180–250 zł/m²</span>
                        </div>
                        <div class="cost-bar-bg"><div class="cost-bar-fill fill-dry"></div></div>
                    </div>
                </div>

                <div class="info-box">
                    <strong>Ważna uwaga:</strong> Należy jednak pamiętać, że wyższy koszt początkowy materiałów często częściowo rekompensowany jest niższym kosztem robocizny oraz brakiem konieczności wynajmu mieszkań zastępczych na czas 8 tygodni schnięcia wylewki.
                </div>
            </div>

            <div class="limit-pane" id="pane-cooling">
                <h4>Szybsze wychładzanie pomieszczeń</h4>
                <p>Brak potężnego, betonowego &#8222;akumulatora ciepła&#8221; ma swoją ciemną stronę. Gdy kocioł gazowy lub pompa ciepła przestanie pracować, <strong>podłoga stygnie błyskawicznie</strong> – często w kilkadziesiąt minut.</p>
                <p>Problem ten ujawnia się m.in. w tanich taryfach nocnych (gdy w dzień piec nie grzeje) lub podczas korzystania z opcji oszczędzania energii w bloku.</p>

                <div class="info-box critical" style="border-left-color: var(--warning); background: #fffbeb;">
                    <strong>Zależność od izolacji budynku:</strong> W nowym, dobrze izolowanym domu nie jest to duży problem, ponieważ ściany trzymają ciepło. Jednak w starym, nieszczelnym budownictwie może to powodować bardzo nieprzyjemne uczucie „ciągnięcia chłodem” od stóp niemal od razu po wyłączeniu pompy.
                </div>
            </div>

            <div class="limit-pane" id="pane-leveling">
                <h4>Bezwzględny wymóg równego podłoża</h4>
                <p>To absolutnie największa pułapka montażowa. Wylewka mokra jest ciężka i samopoziomująca – idealnie ukryje nierówności stropu do 2-3 cm. <strong>System suchy nie ma tej zdolności.</strong></p>
                
                <p>Konsekwencje nierówności (np. dołek na 5 mm pod płytą):</p>
                <ul class="consequences-list">
                    <li>Nieprzyjemne wrażenie akustyczne (stukanie, klawiszowanie).</li>
                    <li>Pękanie fug na płytkach ceramicznych (nawet przy użyciu maty zbrojącej).</li>
                    <li>Ryzyko wyślizgnięcia się rury z kanału aluminiowego (tworzy tzw. &#8222;gorący punkt&#8221;).</li>
                </ul>

                <div class="info-box critical">
                    <strong>Rozwiązanie i ironia losu:</strong> Przed montażem konieczne jest precyzyjne wyrównanie podłoża masą samopoziomującą. Aby uniknąć grubej wylewki&#8230; i tak musisz zrobić wylewkę (cienką, korekcyjną na 2-5 mm).
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // ZABEZPIECZENIE DOMENOWE (Domain Lock) Base64 Encoded HTML
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        document.getElementById('limitations-app-container').innerHTML = decodeURIComponent(escape(window.atob('PGRpdiBzdHlsZT0icGFkZGluZzogNjBweCAyMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGJhY2tncm91bmQ6ICNmZWUyZTI7IGNvbG9yOiAjZGMyNjI2OyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgbWluLWhlaWdodDogNDAwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiA0OHB4OyBtYXJnaW4tYm90dG9tOiAyMHB4OyI+8J+TkTwvc3Bhbj48aDMgc3R5bGU9Im1hcmdpbi10b3A6MDsgZm9udC1zaXplOiAyNHB4OyI+VHJlxZvEhyBjaHJvbmlvbmEgcHJhd2VtIGF1dG9yc2tpbTwvaDM+PHAgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgbWF4LXdpZHRoOiA1MDBweDsgY29sb3I6ICM3ZjFkMWQ7IGxpbmUtaGVpZ2h0OiAxLjU7Ij5UbyB6ZXN0YXdpZW5pZSBqZXN0IHfFgmFzbm/Fm2NpxIUgc2Vyd2lzdSA8c3Ryb25nPlByb2pla3QtT2dyemV3YW5pYS5wbDwvc3Ryb25nPiBpIHpvc3RhxYJvIHdrbGVqb25lIG5hIHTEmSBzdHJvbsSZIGJleiB6Z29keSBhdXRvcmEuPC9wPjxhIGhyZWY9Imh0dHBzOi8vcHJvamVrdC1vZ3J6ZXdhbmlhLnBsLyIgc3R5bGU9Im1hcmdpbi10b3A6IDI1cHg7IHBhZGRpbmc6IDE0cHggMjhweDsgYmFja2dyb3VuZDogI2RjMjYyNjsgY29sb3I6IHdoaXRlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1yYWRpdXM6IDEycHg7IGZvbnQtd2VpZ2h0OiA4MDA7IHRyYW5zaXRpb246IDAuM3M7Ij5aT0JBQ1ogT1JZR0lOQUxOWSBBUlRZS1XFgTwvYT48L2Rpdj4=')));
        return; 
    }

    // LOGIKA ZAKŁADEK (TABS)
    const buttons = document.querySelectorAll('.limit-btn');
    const panes = document.querySelectorAll('.limit-pane');

    buttons.forEach(button => {
        button.addEventListener('click', () => {
            // Usuń klasę active ze wszystkich
            buttons.forEach(btn => btn.classList.remove('active'));
            panes.forEach(pane => pane.classList.remove('active'));
            
            // Dodaj do klikniętego
            button.classList.add('active');
            
            // Pokaż treść
            const targetId = button.getAttribute('data-target');
            document.getElementById(targetId).classList.add('active');
        });
    });
});
</script>



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

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

.compare-header {
    padding: 35px 40px;
    text-align: center;
    background: var(--bg-light);
    border-bottom: 1px solid var(--border-color);
}

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

.compare-header p {
    margin: 0 auto;
    max-width: 700px;
    font-size: 15px;
    line-height: 1.6;
    color: #475569;
}

/* INTERAKTYWNY KALKULATOR - STYLE */
.interactive-calc-section {
    padding: 30px 40px;
    background: #ffffff;
    border-bottom: 3px solid var(--border-color);
}

.input-wrap { margin-bottom: 25px; background: var(--bg-light); padding: 20px; border-radius: 16px; border: 1px solid #e2e8f0; }
.input-label-row { display: flex; justify-content: space-between; margin-bottom: 12px; align-items: center; }
.input-label-row label { font-weight: 800; font-size: 15px; color: var(--primary); text-transform: uppercase; letter-spacing: 0.5px;}
.input-label-row .val-badge { background: #ffffff; padding: 6px 16px; border-radius: 10px; font-weight: 900; color: var(--accent); font-size: 18px; box-shadow: 0 2px 5px rgba(0,0,0,0.05); }

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

.charts-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; }
.chart-title { font-size: 13px; font-weight: 700; color: #64748b; margin-bottom: 15px; text-transform: uppercase; letter-spacing: 0.5px;}
.bar-row { margin-bottom: 12px; }
.bar-label { display: flex; justify-content: space-between; font-size: 13px; font-weight: 700; color: var(--primary); margin-bottom: 6px; }
.bar-bg { width: 100%; background: #f1f5f9; border-radius: 8px; height: 32px; overflow: hidden; position: relative; border: 1px solid #e2e8f0;}
.bar-fill { height: 100%; transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1); display: flex; align-items: center; justify-content: flex-end; padding-right: 12px; color: white; font-weight: 800; font-size: 13px; white-space: nowrap; }
.fill-dry { background: var(--accent); }
.fill-wet { background: var(--wet-color); }

/* TABELA - STYLE */
.table-wrapper {
    padding: 0 40px;
    margin-top: 20px;
}

.compare-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
}

.compare-table th {
    padding: 20px 15px;
    text-align: center;
    font-size: 15px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    border-bottom: 3px solid var(--border-color);
}

.compare-table th.col-param { text-align: left; color: #64748b; width: 30%; }
.compare-table th.col-noguide { color: var(--accent); width: 35%; border-bottom-color: var(--accent); }
.compare-table th.col-project { color: var(--wet-color); width: 35%; }

.compare-table td {
    padding: 16px 15px;
    text-align: center;
    font-size: 14px;
    color: #334155;
    border-bottom: 1px solid #f1f5f9;
    vertical-align: middle;
    line-height: 1.5;
}

.compare-table td.param-name {
    text-align: left;
    font-weight: 700;
    color: var(--primary);
    display: flex;
    align-items: center;
    gap: 10px;
}

.compare-table td.param-name span.icon {
    font-size: 18px;
    background: #f8fafc;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    flex-shrink: 0;
}

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

.val-pill {
    display: inline-block;
    padding: 4px 12px;
    background: #f1f5f9;
    border-radius: 8px;
    font-weight: 700;
}
.val-pill.accent { background: #eff6ff; color: var(--accent); }
.val-pill.danger { background: #fee2e2; color: var(--danger); }
.val-pill.success { background: #dcfce7; color: var(--success); }

.compare-footer {
    padding: 40px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    background: #ffffff;
}

.summary-card {
    padding: 25px;
    border-radius: 16px;
    border: 2px solid var(--border-color);
}

.summary-card h4 {
    margin: 0 0 15px 0;
    font-size: 18px;
    font-weight: 800;
    display: flex;
    align-items: center;
    gap: 10px;
}

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

.card-project { border-color: #bfdbfe; background: #eff6ff; }
.card-project h4 { color: var(--accent); }

/* ROZWIĄZANIE DLA MOBILE */
@media (max-width: 768px) {
    .compare-header { padding: 25px 20px; }
    .interactive-calc-section { padding: 25px 20px; }
    .charts-grid { grid-template-columns: 1fr; gap: 20px; }
    .table-wrapper { padding: 0 15px; margin-top: 30px;}
    .compare-footer { grid-template-columns: 1fr; padding: 20px 15px; gap: 20px; }
    
    .compare-table, .compare-table tbody, .compare-table tr, .compare-table td {
        display: block; width: 100%; box-sizing: border-box;
    }
    .compare-table thead { display: none; }
    
    .compare-table tr {
        margin-bottom: 20px; border: 1px solid var(--border-color); border-radius: 16px; overflow: hidden; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
    }
    
    .compare-table td { text-align: left; padding: 15px 20px; border-bottom: 1px solid #f1f5f9; }
    .compare-table td:last-child { border-bottom: none; }
    
    .compare-table td.param-name {
        background: var(--bg-light); font-size: 16px; border-bottom: 2px solid var(--border-color);
    }
    
    .compare-table td:nth-child(2)::before {
        content: "System Suchy (bez wylewki):"; display: block; font-weight: 800; margin-bottom: 6px; color: var(--accent); font-size: 12px; text-transform: uppercase; letter-spacing: 0.5px;
    }
    
    .compare-table td:nth-child(3)::before {
        content: "System Mokry (z wylewką):"; display: block; font-weight: 800; margin-bottom: 6px; color: var(--wet-color); font-size: 12px; text-transform: uppercase; letter-spacing: 0.5px;
    }
    
    .compare-table tr:hover td { background: inherit; }
    .compare-table td.param-name:hover { background: var(--bg-light); }
}
</style>

<div class="premium-compare" id="compare-app-container">
    <div class="compare-header">
        <h2>Porównanie techniczne: System Suchy vs. System Mokry</h2>
        <p>Sprawdź, jak wybór technologii wpływa na obciążenie Twojego stropu oraz koszty materiałów. Zmieniając powierzchnię, na żywo zobaczysz skalę przedsięwzięcia. Poniżej znajdziesz szczegółowe zestawienie parametrów. <a href="https://projekt-ogrzewania.pl/system-mokry-czy-suchy-w-wodnym-ogrzewaniu-podlogowym-ktory-wybrac/" style="color: var(--accent); font-weight: 700; text-decoration: none;">Więcej przeczytasz w naszym artykule.</a></p>
    </div>

    <div class="interactive-calc-section">
        <div class="input-wrap">
            <div class="input-label-row">
                <label>Suwak powierzchni ogrzewanej</label>
                <span class="val-badge"><span id="v-area">50</span> m²</span>
            </div>
            <input type="range" id="area-slider" min="10" max="250" step="5" value="50">
        </div>

        <div class="charts-grid">
            <div class="chart-block">
                <div class="chart-title">📦 Łączna waga na stropie</div>
                <div class="bar-row">
                    <div class="bar-label"><span>System Suchy</span></div>
                    <div class="bar-bg"><div class="bar-fill fill-dry" id="bar-weight-dry" style="width: 10%;">&#8212;</div></div>
                </div>
                <div class="bar-row">
                    <div class="bar-label"><span>System Mokry</span></div>
                    <div class="bar-bg"><div class="bar-fill fill-wet" id="bar-weight-wet" style="width: 80%;">&#8212;</div></div>
                </div>
            </div>

            <div class="chart-block">
                <div class="chart-title">💰 Szacunkowy koszt materiałów</div>
                <div class="bar-row">
                    <div class="bar-label"><span>System Suchy</span></div>
                    <div class="bar-bg"><div class="bar-fill fill-dry" id="bar-cost-dry" style="width: 60%;">&#8212;</div></div>
                </div>
                <div class="bar-row">
                    <div class="bar-label"><span>System Mokry</span></div>
                    <div class="bar-bg"><div class="bar-fill fill-wet" id="bar-cost-wet" style="width: 30%;">&#8212;</div></div>
                </div>
            </div>
        </div>
    </div>

    <div class="table-wrapper">
        <table class="compare-table">
            <thead>
                <tr>
                    <th class="col-param">Parametr techniczny</th>
                    <th class="col-noguide">System Suchy (bez wylewki)</th>
                    <th class="col-project">System Mokry (z wylewką)</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td class="param-name"><span class="icon">⚖️</span> Masa własna (kg/m²)</td>
                    <td><strong>20 – 35 kg</strong></td>
                    <td>100 – 180 kg</td>
                </tr>
                <tr>
                    <td class="param-name"><span class="icon">📏</span> Minimalna wysokość</td>
                    <td><span class="val-pill accent">30 mm</span> (bez płytek)</td>
                    <td>80 mm</td>
                </tr>
                <tr>
                    <td class="param-name"><span class="icon">⏱️</span> Czas realizacji</td>
                    <td><span class="val-pill accent">1 – 3 dni</span></td>
                    <td>28 – 60 dni</td>
                </tr>
                <tr>
                    <td class="param-name"><span class="icon">🌡️</span> Maks. temp. zasilania</td>
                    <td>35 – 40°C</td>
                    <td>40 – 50°C</td>
                </tr>
                <tr>
                    <td class="param-name"><span class="icon">🚀</span> Czas nagrzewania</td>
                    <td><span class="val-pill accent">20 – 40 minut</span></td>
                    <td>4 – 6 godzin</td>
                </tr>
                <tr>
                    <td class="param-name"><span class="icon">🔋</span> Akumulacyjność cieplna</td>
                    <td>Bardzo niska</td>
                    <td><strong>Bardzo wysoka</strong></td>
                </tr>
                <tr>
                    <td class="param-name"><span class="icon">🔊</span> Przewodność akustyczna</td>
                    <td><span class="val-pill danger">Gorsza</span> (płyty pływające)</td>
                    <td><span class="val-pill success">Lepsza</span> (masa tłumi dźwięki)</td>
                </tr>
                <tr>
                    <td class="param-name"><span class="icon">💳</span> Koszt materiałów (zł/m²)</td>
                    <td>180 – 280 zł</td>
                    <td><span class="val-pill success">90 – 150 zł</span></td>
                </tr>
                <tr>
                    <td class="param-name"><span class="icon">🔥</span> Ryzyko przegrzania</td>
                    <td><span class="val-pill danger">Wysokie</span> (wymagany RTL)</td>
                    <td><span class="val-pill success">Niskie</span></td>
                </tr>
            </tbody>
        </table>
    </div>

    <div class="compare-footer">
        <div class="summary-card card-project">
            <h4>Kiedy wybrać system suchy?</h4>
            <p>Idealny do remontów starych domów, kamienic (stropy drewniane) oraz domów szkieletowych. Sprawdza się wszędzie tam, gdzie kluczowa jest waga konstrukcji, brakuje wysokości na grubą wylewkę lub zależy Ci na błyskawicznym czasie realizacji bez wprowadzania wilgoci.</p>
        </div>
        
        <div class="summary-card">
            <h4>Kiedy wybrać system mokry?</h4>
            <p>Standardowe, ekonomiczne rozwiązanie dla nowego budownictwa, gdzie nośność stropu nie jest problemem. Oferuje niższą cenę materiałów, doskonałą izolację akustyczną i wysoką bezwładność cieplną, która wybacza błędy w sterowaniu temperaturą.</p>
        </div>
    </div>
</div>

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

    // 2. LOGIKA INTERAKTYWNEGO KALKULATORA
    const slider = document.getElementById("area-slider");
    if(!slider) return;

    function updateCalc() {
        const area = parseFloat(slider.value);
        document.getElementById("v-area").innerText = area;
        
        // Średnie wartości na bazie tabeli
        const weightDryPerM2 = 27.5; // średnia 20-35
        const weightWetPerM2 = 140; // średnia 100-180
        const costDryPerM2 = 230; // średnia 180-280
        const costWetPerM2 = 120; // średnia 90-150
        
        const totalWeightDry = area * weightDryPerM2;
        const totalWeightWet = area * weightWetPerM2;
        const totalCostDry = area * costDryPerM2;
        const totalCostWet = area * costWetPerM2;
        
        // Formatowanie tekstu
        const textWeightDry = totalWeightDry >= 1000 ? (totalWeightDry / 1000).toFixed(1) + " ton" : Math.round(totalWeightDry) + " kg";
        const textWeightWet = totalWeightWet >= 1000 ? (totalWeightWet / 1000).toFixed(1) + " ton" : Math.round(totalWeightWet) + " kg";
        const textCostDry = (totalCostDry / 1000).toFixed(1) + " tys. zł";
        const textCostWet = (totalCostWet / 1000).toFixed(1) + " tys. zł";
        
        // Obliczanie szerokości pasków (wizualizacja względem maks. wartości dla 250m2)
        const maxWeight = 250 * weightWetPerM2;
        const maxCost = 250 * costDryPerM2;
        
        const pctWeightDry = Math.max(8, Math.min(100, (totalWeightDry / maxWeight) * 100));
        const pctWeightWet = Math.max(8, Math.min(100, (totalWeightWet / maxWeight) * 100));
        const pctCostDry = Math.max(8, Math.min(100, (totalCostDry / maxCost) * 100));
        const pctCostWet = Math.max(8, Math.min(100, (totalCostWet / maxCost) * 100));
        
        // Aktualizacja DOM
        document.getElementById("bar-weight-dry").style.width = pctWeightDry + "%";
        document.getElementById("bar-weight-dry").innerText = textWeightDry;
        
        document.getElementById("bar-weight-wet").style.width = pctWeightWet + "%";
        document.getElementById("bar-weight-wet").innerText = textWeightWet;
        
        document.getElementById("bar-cost-dry").style.width = pctCostDry + "%";
        document.getElementById("bar-cost-dry").innerText = textCostDry;
        
        document.getElementById("bar-cost-wet").style.width = pctCostWet + "%";
        document.getElementById("bar-cost-wet").innerText = textCostWet;
    }

    slider.addEventListener("input", updateCalc);
    updateCalc(); // Inicjalizacja przy załadowaniu
});
</script>



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

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

.scenario-header {
    padding: 35px 40px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
    border-bottom: 1px solid var(--border-color);
    text-align: center;
}

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

.scenario-header p {
    margin: 0 auto;
    max-width: 750px;
    font-size: 15px;
    line-height: 1.6;
    color: #475569;
}

.scenario-workspace {
    display: flex;
    min-height: 420px;
}

/* LEWA STRONA - MENU */
.scenario-menu {
    width: 35%;
    background: #ffffff;
    border-right: 1px solid var(--border-color);
    display: flex;
    flex-direction: column;
    padding: 20px 0;
}

.scenario-btn {
    padding: 20px 30px;
    background: transparent;
    border: none;
    border-left: 4px solid transparent;
    text-align: left;
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    font-weight: 700;
    color: #64748b;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 12px;
}

.scenario-btn:hover {
    background: #f8fafc;
    color: var(--primary);
}

.scenario-btn.active {
    background: #eff6ff;
    border-left-color: var(--accent);
    color: var(--accent);
}

.scenario-icon {
    font-size: 22px;
    flex-shrink: 0;
    transition: transform 0.3s ease;
}

.scenario-btn.active .scenario-icon {
    transform: scale(1.15);
}

/* PRAWA STRONA - TREŚĆ */
.scenario-content-area {
    width: 65%;
    background: var(--bg-light);
    position: relative;
    padding: 40px;
}

.scenario-pane {
    display: none;
    animation: fadeSlideUp 0.4s ease-out forwards;
}

.scenario-pane.active {
    display: block;
}

.pane-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 20px;
}

.badge-weight { background: #fee2e2; color: #991b1b; }
.badge-height { background: #e0e7ff; color: #3730a3; }
.badge-moisture { background: #ffedd5; color: #9a3412; }

.scenario-pane h4 {
    margin: 0 0 15px 0;
    font-size: 24px;
    font-weight: 900;
    color: var(--primary);
    line-height: 1.3;
}

.scenario-pane p {
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
    margin-bottom: 20px;
}

.scenario-pane p:last-child {
    margin-bottom: 0;
}

.scenario-pane a {
    color: var(--accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid #bfdbfe;
    transition: all 0.2s;
}

.scenario-pane a:hover {
    background: #eff6ff;
    border-bottom-color: var(--accent);
}

.highlight-box {
    background: #ffffff;
    border: 1px solid var(--border-color);
    border-left: 4px solid var(--accent);
    padding: 20px;
    border-radius: 12px;
    margin-top: 25px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.highlight-box strong {
    display: block;
    color: var(--primary);
    margin-bottom: 5px;
    font-size: 15px;
}

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

/* MOBILE */
@media (max-width: 768px) {
    .scenario-header { padding: 25px 20px; }
    .scenario-header h3 { font-size: 22px; }
    
    .scenario-workspace { flex-direction: column; min-height: auto; }
    
    .scenario-menu {
        width: 100%;
        border-right: none;
        border-bottom: 1px solid var(--border-color);
        padding: 10px;
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 10px;
    }
    
    .scenario-btn {
        padding: 12px 15px;
        border-left: none;
        border-bottom: 3px solid transparent;
        border-radius: 8px;
        background: #f8fafc;
        font-size: 13px;
        flex-direction: column;
        text-align: center;
        gap: 8px;
        justify-content: center;
    }
    
    .scenario-btn.active {
        border-left: none;
        border-bottom-color: var(--accent);
    }
    
    .scenario-content-area {
        width: 100%;
        padding: 30px 20px;
    }
}
</style>

<div class="premium-scenario-box" id="scenario-app-container">
    
    <div class="scenario-header">
        <h2>Gdzie system suchy sprawdza się najlepiej?</h2>
        <p>Wbrew pozorom, ogrzewanie bez wylewki nie jest rozwiązaniem uniwersalnym do każdego nowego domu. Jego zastosowanie jest optymalne w ściśle określonych scenariuszach remontowych i konstrukcyjnych.</p>
    </div>

    <div class="scenario-workspace">
        
        <div class="scenario-menu">
            <button class="scenario-btn active" data-target="pane-kamienice">
                <span class="scenario-icon">🏚️</span> Stare domy i kamienice
            </button>
            <button class="scenario-btn" data-target="pane-szkieletowe">
                <span class="scenario-icon">🌲</span> Domy szkieletowe
            </button>
            <button class="scenario-btn" data-target="pane-poddasza">
                <span class="scenario-icon">🪜</span> Adaptacje strychów
            </button>
            <button class="scenario-btn" data-target="pane-bloki">
                <span class="scenario-icon">🏢</span> Mieszkania w bloku
            </button>
        </div>

        <div class="scenario-content-area">
            
            <div class="scenario-pane active" id="pane-kamienice">
                <div class="pane-badge badge-weight">Priorytet: Krytyczna nośność stropu</div>
                <h4>Remonty starych domów i kamienic</h4>
                <p>Stropy drewniane (belkowe), stropy Kleina (stalowo-ceramiczne) czy stropy żelbetowe o nieznanej nośności to idealne pole do popisu dla lekkiego ogrzewania.</p>
                
                <div class="highlight-box" style="border-left-color: var(--danger);">
                    <strong>Ryzyko katastrofy budowlanej</strong>
                    <span style="font-size: 14px; color: #475569;">Próba wylania tam tradycyjnego jastrychu (nawet 150-180 kg/m²) grozi w skrajnych przypadkach zarwaniem stropu u sąsiada poniżej. System suchy waży zaledwie ułamek tej masy.</span>
                </div>
            </div>

            <div class="scenario-pane" id="pane-szkieletowe">
                <div class="pane-badge badge-moisture">Priorytet: Eliminacja wilgoci i wagi</div>
                <h4>Domy szkieletowe i drewniane</h4>
                <p>W domach o konstrukcji drewnianej (tzw. kanadyjskiej) każdy kilogram ma znaczenie dla wymiarowania belek stropowych.</p>
                <p>Co więcej, wilgoć technologiczna uwalniająca się z tradycyjnej wylewki mogłaby doprowadzić do zagrzybienia drewnianej konstrukcji ścian. Technologia sucha eliminuje to ryzyko całkowicie.</p>
                
                <div class="highlight-box">
                    <strong>Baza wiedzy projektanta</strong>
                    <span style="font-size: 14px; color: #475569;">Zachęcam do lektury szczegółowego opracowania: <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/">Ogrzewanie podłogowe w domu szkieletowym – kluczowe różnice i pułapki</a>.</span>
                </div>
            </div>

            <div class="scenario-pane" id="pane-poddasza">
                <div class="pane-badge badge-height">Priorytet: Oszczędność kubatury</div>
                <h4>Poddasza użytkowe i stychy</h4>
                <p>Podczas adaptacji starych strychów często mamy do dyspozycji bardzo małą wysokość przez wszechobecne skosy dachowe. Dodatkowo belki stropowe często były projektowane wyłącznie na przenoszenie ciężaru lekkiej zabudowy z płyt g-k.</p>
                
                <div class="highlight-box">
                    <strong>Odzyskaj cenne centymetry</strong>
                    <span style="font-size: 14px; color: #475569;">System suchy o grubości zaledwie 3-4 cm pozwala na wykonanie ogrzewania płaszczyznowego z jednoczesnym zachowaniem maksymalnej kubatury i wysokości pomieszczenia.</span>
                </div>
            </div>

            <div class="scenario-pane" id="pane-bloki">
                <div class="pane-badge badge-height">Priorytet: Brak uskoków i schodów</div>
                <h4>Mieszkania w bloku (z grzejników)</h4>
                <p>Jeśli zmieniasz system ogrzewania z tradycyjnego (grzejnikowego) na podłogowe w istniejącym mieszkaniu, wylanie wylewki to ogromny problem.</p>
                <p>Podniesienie poziomu podłogi o 8-10 cm w całym lokalu jest często fizycznie niemożliwe ze względu na zabetonowane progi, drzwi wejściowe czy balkonowe.</p>
                
                <div class="highlight-box" style="border-left-color: var(--success);">
                    <strong>Uniknij przecinania futryn</strong>
                    <span style="font-size: 14px; color: #475569;">System suchy pozwala zmieścić się w granicach 4-5 cm całkowitej grubości, co skutecznie zapobiega tworzeniu &#8222;schodków&#8221; do łazienki czy konieczności modyfikacji okien balkonowych.</span>
                </div>
            </div>

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

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

    // LOGIKA ZAKŁADEK (TABS)
    const buttons = document.querySelectorAll('.scenario-btn');
    const panes = document.querySelectorAll('.scenario-pane');

    buttons.forEach(button => {
        button.addEventListener('click', () => {
            // Usuń klasę active ze wszystkich przycisków i paneli
            buttons.forEach(btn => btn.classList.remove('active'));
            panes.forEach(pane => pane.classList.remove('active'));
            
            // Nadaj klasę active klikniętemu przyciskowi
            button.classList.add('active');
            
            // Pokaż odpowiedni panel
            const targetId = button.getAttribute('data-target');
            document.getElementById(targetId).classList.add('active');
        });
    });
});
</script>



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

.premium-promo-banner {
    max-width: 1050px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.15);
    overflow: hidden;
    color: var(--primary);
    display: flex;
    background: linear-gradient(135deg, #ffffff 0%, #f1f5f9 100%);
    border: 2px solid #e2e8f0;
    position: relative;
}

/* LEWA STRONA - INFO */
.promo-content {
    width: 60%;
    padding: 45px 50px;
    position: relative;
    z-index: 2;
}

.promo-badge {
    background: var(--kisan-blue);
    color: white;
    padding: 6px 16px;
    border-radius: 50px;
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    display: inline-block;
    margin-bottom: 20px;
    box-shadow: 0 4px 10px rgba(30, 58, 138, 0.3);
}

.promo-content h3 {
    margin: 0 0 15px 0;
    font-size: 32px;
    font-weight: 900;
    line-height: 1.2;
    color: var(--primary);
}

.promo-content p {
    font-size: 16px;
    line-height: 1.6;
    color: #475569;
    margin-bottom: 25px;
}

.promo-features {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
    margin-bottom: 30px;
}

.promo-feature-item {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    font-weight: 700;
    color: var(--kisan-blue);
}

.promo-feature-item span {
    background: #dbeafe;
    width: 28px;
    height: 28px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
}

.promo-action {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: var(--accent);
    color: white;
    padding: 16px 28px;
    border-radius: 12px;
    font-weight: 800;
    font-size: 15px;
    text-decoration: none;
    transition: all 0.3s;
    box-shadow: 0 10px 20px -5px rgba(37, 99, 235, 0.4);
}

.promo-action:hover {
    transform: translateY(-3px);
    box-shadow: 0 15px 25px -5px rgba(37, 99, 235, 0.5);
    background: #1d4ed8;
}

/* PRAWA STRONA - INTERAKCJA / GRAFIKA */
.promo-visual {
    width: 40%;
    background: var(--kisan-blue);
    padding: 40px;
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: center;
    color: white;
}

.promo-visual::before {
    content: '';
    position: absolute;
    top: 0; left: -30px;
    width: 60px; height: 100%;
    background: var(--kisan-blue);
    transform: skewX(-10deg);
    z-index: 1;
}

.interactive-mini-calc {
    position: relative;
    z-index: 2;
    background: rgba(255,255,255,0.1);
    border: 1px solid rgba(255,255,255,0.2);
    padding: 25px;
    border-radius: 16px;
    backdrop-filter: blur(10px);
}

.calc-title {
    font-size: 14px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 15px;
    color: #93c5fd;
    display: flex;
    align-items: center;
    gap: 8px;
}

.calc-row {
    margin-bottom: 15px;
}

.calc-label {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
    font-weight: 600;
    margin-bottom: 8px;
}

.calc-val { font-weight: 800; color: white; }

input[type=range].promo-slider { width: 100%; height: 6px; background: rgba(255,255,255,0.2); border-radius: 10px; appearance: none; outline: none; }
input[type=range].promo-slider::-webkit-slider-thumb { appearance: none; width: 20px; height: 20px; background: #ffffff; border-radius: 50%; cursor: pointer; box-shadow: 0 2px 5px rgba(0,0,0,0.2); }

.calc-result {
    margin-top: 20px;
    padding-top: 15px;
    border-top: 1px dashed rgba(255,255,255,0.2);
}

.calc-result span {
    display: block;
    font-size: 11px;
    color: #93c5fd;
    text-transform: uppercase;
    font-weight: 700;
}

.calc-result strong {
    font-size: 28px;
    font-weight: 900;
    color: white;
    line-height: 1.2;
}

@media (max-width: 900px) {
    .premium-promo-banner { flex-direction: column; }
    .promo-content { width: 100%; padding: 35px 25px; }
    .promo-visual { width: 100%; padding: 35px 25px; }
    .promo-visual::before { display: none; }
    .promo-features { grid-template-columns: 1fr; }
}
</style>

<div class="premium-promo-banner" id="promo-banner-app">
    
    <div class="promo-content">
        <div class="promo-badge">Rozwiązanie od Ekspertów</div>
        <h3>Poznaj system Comfort Floor Dry</h3>
        <p>Teoria to jedno, ale jak wdrożyć ją w życie? Poznaj innowacyjny system ogrzewania podłogowego o konstrukcji lekkiej, bazujący na specjalnych płytach EPS i tłoczonych aluminiowych lamelach grzewczych.</p>
        
        <div class="promo-features">
            <div class="promo-feature-item">
                <span>📏</span> Wysokość zaledwie 61 mm!
            </div>
            <div class="promo-feature-item">
                <span>⚖️</span> Kompletny system od 1 producenta
            </div>
            <div class="promo-feature-item">
                <span>⚙️</span> Opracowany dla domów drewnianych
            </div>
            <div class="promo-feature-item">
                <span>🛒</span> Spersonalizowana wycena online
            </div>
        </div>

        <a href="https://projekt-ogrzewania.pl/comfort-floor-dry/" target="_blank" class="promo-action">
            Zobacz pełny system i wyceń online →
        </a>
    </div>

    <div class="promo-visual">
        <div class="interactive-mini-calc">
            <div class="calc-title">💡 Przekonaj się sam</div>
            
            <div class="calc-row">
                <div class="calc-label">
                    <span>Powierzchnia do ogrzania:</span>
                    <span class="calc-val"><span id="p-area">50</span> m²</span>
                </div>
                <input type="range" class="promo-slider" id="p-slider" min="20" max="200" step="5" value="50">
            </div>

            <div class="calc-result">
                <span>Tyle wagi zaoszczędzisz na stropie:</span>
                <strong><span id="p-saved">5 375</span> kg!</strong>
            </div>
            <p style="font-size: 12px; color: #bfdbfe; margin-top: 10px; line-height: 1.4;">*Oszczędność wagi względem standardowej wylewki mokrej (140 kg/m² vs 32 kg/m²).</p>
        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // ZABEZPIECZENIE DOMENOWE (Domain Lock)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        document.getElementById('promo-banner-app').innerHTML = `
            <div style="padding: 40px 20px; text-align: center; background: #fee2e2; color: #dc2626; width: 100%;">
                <h3 style="margin-top:0;">Baner chroniony prawem autorskim</h3>
                <p>Własność Projekt-Ogrzewania.pl</p>
            </div>
        `;
        return; 
    }

    // LOGIKA MINI KALKULATORA
    const slider = document.getElementById('p-slider');
    const valArea = document.getElementById('p-area');
    const valSaved = document.getElementById('p-saved');

    function updatePromoCalc() {
        const area = parseInt(slider.value);
        valArea.innerText = area;
        
        // Obliczenia: Mokra (~140kg) - Sucha (~32.5kg średnio) = różnica 107.5 kg na m2
        const differencePerM2 = 107.5;
        const totalSaved = Math.round(area * differencePerM2);
        
        valSaved.innerText = totalSaved.toLocaleString('pl-PL');
    }

    slider.addEventListener('input', updatePromoCalc);
    updatePromoCalc(); // init
});
</script>



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

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

/* SEKCJA TEKSTOWA */
.auditor-text-section {
    padding: 40px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
    border-bottom: 1px solid var(--border-color);
}

.auditor-text-section h3 {
    margin: 0 0 20px 0;
    font-size: 26px;
    font-weight: 900;
    color: var(--primary);
    line-height: 1.3;
}

.auditor-text-section > p {
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
    margin-bottom: 30px;
}

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

.rule-card {
    background: #ffffff;
    border: 1px solid var(--border-color);
    padding: 20px 25px;
    border-radius: 16px;
    display: flex;
    gap: 20px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.02);
}

.rule-number {
    width: 32px;
    height: 32px;
    background: #eff6ff;
    color: var(--accent);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    font-size: 16px;
    flex-shrink: 0;
}

.rule-content h4 {
    margin: 0 0 8px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--primary);
}

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

.rule-content strong { color: var(--primary); }

/* SEKCJA INTERAKTYWNA */
.auditor-interactive-section {
    padding: 40px;
    background: #ffffff;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
}

.interactive-title {
    grid-column: 1 / -1;
    text-align: center;
    margin-bottom: 10px;
}

.interactive-title h4 {
    margin: 0 0 5px 0;
    font-size: 22px;
    font-weight: 900;
    color: var(--primary);
}

.interactive-title p {
    margin: 0;
    font-size: 14px;
    color: #64748b;
}

/* Formularz */
.config-panel {
    background: var(--bg-light);
    padding: 25px;
    border-radius: 20px;
    border: 1px solid var(--border-color);
}

.input-group { margin-bottom: 20px; }
.input-group:last-child { margin-bottom: 0; }
.input-label { display: block; font-size: 13px; font-weight: 800; text-transform: uppercase; color: #64748b; margin-bottom: 8px; letter-spacing: 0.5px;}

select.form-control {
    width: 100%;
    padding: 12px 15px;
    border-radius: 10px;
    border: 1px solid #cbd5e1;
    background: #ffffff;
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    font-weight: 600;
    color: var(--primary);
    cursor: pointer;
    outline: none;
}

select.form-control:focus { border-color: var(--accent); }

.temp-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px;}
.temp-row span { font-weight: 900; color: var(--accent); font-size: 16px; }

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

/* Wyniki */
.results-panel {
    display: flex;
    flex-direction: column;
}

.score-box {
    text-align: center;
    padding: 25px;
    border-radius: 20px;
    border: 2px solid var(--border-color);
    margin-bottom: 20px;
    transition: all 0.3s;
}

.score-label { font-size: 13px; font-weight: 800; text-transform: uppercase; color: #64748b; display: block; margin-bottom: 10px; }
.score-value { font-size: 42px; font-weight: 900; line-height: 1; color: var(--primary); transition: color 0.3s;}

.alerts-container {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.alert-item {
    padding: 12px 16px;
    border-radius: 12px;
    font-size: 13px;
    font-weight: 600;
    line-height: 1.5;
    display: none; /* Ukryte domyślnie */
    animation: fadeIn 0.3s ease-in-out;
}

.alert-danger { background: #fee2e2; color: #991b1b; border: 1px solid #fecaca; }
.alert-warning { background: #ffedd5; color: #9a3412; border: 1px solid #fed7aa; }
.alert-success { background: #dcfce7; color: #166534; border: 1px solid #bbf7d0; display: block; }

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

@media (max-width: 768px) {
    .auditor-text-section, .auditor-interactive-section { padding: 25px 20px; }
    .rule-card { padding: 15px; gap: 15px; }
    .auditor-interactive-section { grid-template-columns: 1fr; gap: 25px; }
}
</style>

<div class="premium-auditor-box" id="auditor-app-container">
    
    <div class="auditor-text-section">
        <h2>Jak wygląda projekt ogrzewania w systemie suchym?</h2>
        <p>Projektowanie ogrzewania podłogowego bez wylewki wymaga od projektanta zupełnie innego podejścia. Nie można po prostu skopiować projektu &#8222;z betonu&#8221;. Oto 5 kluczowych aspektów <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/" style="color: var(--accent); font-weight: 700; text-decoration: none;">profesjonalnego projektu</a>:</p>
        
        <div class="rules-grid">
            <div class="rule-card">
                <div class="rule-number">1</div>
                <div class="rule-content">
                    <h4>Gęstość strumienia ciepła i rozstaw rur</h4>
                    <p>Ze względu na niższą akumulacyjność, stosuje się gęstszy rozstaw rur. Rekomendacja w systemie suchym to <strong>co 10 cm lub co 15 cm</strong>. Nigdy co 20 cm (chyba że w pom. gospodarczym).</p>
                </div>
            </div>
            
            <div class="rule-card">
                <div class="rule-number">2</div>
                <div class="rule-content">
                    <h4>Wydajność cieplna lameli aluminiowych</h4>
                    <p>Projektant musi określić grubość blachy (min. 0,4 mm) oraz jej kształt. Lamele z <strong>pełnym skrzydłem</strong> dają moc o 20-30% wyższą niż wąskie paski.</p>
                </div>
            </div>
            
            <div class="rule-card">
                <div class="rule-number">3</div>
                <div class="rule-content">
                    <h4>Strefy brzegowe i pod oknami</h4>
                    <p>Aby uzyskać wysoką moc (100-120 W/m²) pod dużym oknem bez betonu, należy przewidzieć układ rur w rozstawie <strong>co 7,5 cm</strong> lub zastosowanie podwójnej lameli.</p>
                </div>
            </div>
            
            <div class="rule-card">
                <div class="rule-number">4</div>
                <div class="rule-content">
                    <h4>Projekt warstwy wykończeniowej (opór cieplny)</h4>
                    <p>Panele laminowane: moc spada o 10-15%. Deska lita: moc spada o 20%. <strong>Dywany z długim włosiem (R > 0,25): moc spada o 50% – instalacja przestaje grzać!</strong></p>
                </div>
            </div>
            
            <div class="rule-card">
                <div class="rule-number">5</div>
                <div class="rule-content">
                    <h4>Automatyka i ograniczenie temperatury (RTL)</h4>
                    <p>Wymagany jest zawór RTL lub termostat. Maksymalna temperatura zasilania to <strong>40-45°C</strong>. Przekroczenie tej wartości gwarantuje powstanie szpar w parkiecie i zniszczenie podłogi.</p>
                </div>
            </div>
        </div>
    </div>

    <div class="auditor-interactive-section">
        <div class="interactive-title">
            <h4>Audytor Błędów Projektowych</h4>
            <p>Sprawdź w praktyce! Zmieniaj parametry i zobacz, jak algorytm ocenia poprawność projektu.</p>
        </div>

        <div class="config-panel">
            <div class="input-group">
                <span class="input-label">Rozstaw rur (Ad. 1)</span>
                <select id="sim-spacing" class="form-control">
                    <option value="10">Co 10 cm (Wysoka moc)</option>
                    <option value="15" selected>Co 15 cm (Standard)</option>
                    <option value="20">Co 20 cm (Błąd projektowy)</option>
                </select>
            </div>

            <div class="input-group">
                <span class="input-label">Rodzaj lameli (Ad. 2)</span>
                <select id="sim-lamella" class="form-control">
                    <option value="full" selected>Pełne skrzydło (Optymalne)</option>
                    <option value="narrow">Wąskie paski (Tanie)</option>
                </select>
            </div>

            <div class="input-group">
                <span class="input-label">Wykończenie podłogi (Ad. 4)</span>
                <select id="sim-floor" class="form-control">
                    <option value="tiles" selected>Płytki ceramiczne (R ≈ 0.02)</option>
                    <option value="panels">Panele laminowane (R ≈ 0.10)</option>
                    <option value="wood">Deska lita/warstwowa (R ≈ 0.12)</option>
                    <option value="carpet">Gruby dywan (R > 0.25)</option>
                </select>
            </div>

            <div class="input-group" style="margin-bottom:0;">
                <div class="temp-row">
                    <span class="input-label" style="margin:0;">Temp. zasilania (Ad. 5)</span>
                    <span id="sim-temp-val">35°C</span>
                </div>
                <input type="range" id="sim-temp" min="30" max="50" step="1" value="35">
            </div>
        </div>

        <div class="results-panel">
            <div class="score-box" id="score-container">
                <span class="score-label">Szacowana wydajność instalacji</span>
                <div class="score-value" id="sim-efficiency">100%</div>
            </div>

            <div class="alerts-container">
                <div class="alert-item alert-success" id="alert-ok">✅ Projekt poprawny. Dobra wydajność i bezpieczne parametry.</div>
                
                <div class="alert-item alert-danger" id="alert-spacing">❌ <strong>BŁĄD (Pkt 1):</strong> Rozstaw co 20 cm w systemie suchym spowoduje niedogrzanie pomieszczenia i odczuwalną &#8222;zebrę termiczną&#8221; na podłodze.</div>
                
                <div class="alert-item alert-warning" id="alert-lamella">⚠️ <strong>OSTRZEŻENIE (Pkt 2):</strong> Zastosowanie wąskich lameli obniża realną moc grzewczą o 20-30%. Zwiększ zagęszczenie rur.</div>
                
                <div class="alert-item alert-danger" id="alert-carpet">❌ <strong>KRYTYCZNY BŁĄD (Pkt 4):</strong> Gruby dywan działa jak izolator (R > 0.25). Ogrzewanie podłogowe zostało zablokowane i nie ogrzeje pokoju!</div>
                
                <div class="alert-item alert-danger" id="alert-temp">❌ <strong>KRYTYCZNY BŁĄD (Pkt 5):</strong> Temperatura przekracza 40°C przy podłodze drewnianej/laminowanej! Gwarantowane wypaczenie podłogi i szpary. Brak zaworu RTL!</div>
            </div>
        </div>
    </div>

</div>

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

    // LOGIKA AUDYTORA
    const elSpacing = document.getElementById('sim-spacing');
    const elLamella = document.getElementById('sim-lamella');
    const elFloor = document.getElementById('sim-floor');
    const elTemp = document.getElementById('sim-temp');
    const valTemp = document.getElementById('sim-temp-val');
    const elEfficiency = document.getElementById('sim-efficiency');
    const boxScore = document.getElementById('score-container');

    // Alerty
    const alertOk = document.getElementById('alert-ok');
    const alertSpacing = document.getElementById('alert-spacing');
    const alertLamella = document.getElementById('alert-lamella');
    const alertCarpet = document.getElementById('alert-carpet');
    const alertTemp = document.getElementById('alert-temp');

    function calculateAudit() {
        const spacing = parseInt(elSpacing.value);
        const lamella = elLamella.value;
        const floor = elFloor.value;
        const temp = parseInt(elTemp.value);
        
        valTemp.innerText = temp + "°C";

        let efficiency = 100; // Baza: 10cm, pełna lamela, płytki
        let hasErrors = false;

        // Reset alertów
        alertOk.style.display = 'none';
        alertSpacing.style.display = 'none';
        alertLamella.style.display = 'none';
        alertCarpet.style.display = 'none';
        alertTemp.style.display = 'none';

        // 1. Spacing Logic
        if(spacing === 15) efficiency -= 15;
        if(spacing === 20) {
            efficiency -= 35;
            alertSpacing.style.display = 'block';
            hasErrors = true;
        }

        // 2. Lamella Logic
        if(lamella === 'narrow') {
            efficiency -= 25;
            alertLamella.style.display = 'block';
            hasErrors = true;
        }

        // 3. Floor Logic
        if(floor === 'panels') efficiency -= 15;
        if(floor === 'wood') efficiency -= 20;
        if(floor === 'carpet') {
            efficiency -= 60;
            alertCarpet.style.display = 'block';
            hasErrors = true;
        }

        // 4. Temp & Floor Safety Logic
        if(temp > 40 && (floor === 'panels' || floor === 'wood')) {
            alertTemp.style.display = 'block';
            hasErrors = true;
        }
        
        // Zwiększenie wydajności od temperatury (uproszczone dla UI)
        if(temp > 35) {
            efficiency += (temp - 35) * 3; 
        }

        // Ograniczenia wizualne
        if(efficiency < 0) efficiency = 0;
        if(efficiency > 120) efficiency = 120;

        elEfficiency.innerText = Math.round(efficiency) + "%";

        // Style i podsumowanie
        if(hasErrors) {
            boxScore.style.borderColor = "var(--danger)";
            elEfficiency.style.color = "var(--danger)";
        } else {
            boxScore.style.borderColor = "var(--success)";
            elEfficiency.style.color = "var(--success)";
            alertOk.style.display = 'block';
        }
        
        // Wyjątek - niska wydajność bez "twardych" błędów (np standardowy spadek)
        if(!hasErrors && efficiency < 75) {
            boxScore.style.borderColor = "var(--warning)";
            elEfficiency.style.color = "var(--warning)";
            alertOk.style.display = 'none';
            alertLamella.style.display = 'block'; // Pokaż jako ogólne ostrzeżenie by coś poprawić
            alertLamella.innerHTML = "⚠️ <strong>OSTRZEŻENIE:</strong> Układ jest bezpieczny, ale jego wydajność jest niska. Rozważ wyższą temperaturę lub gęstszy rozstaw rur.";
        }
    }

    [elSpacing, elLamella, elFloor, elTemp].forEach(el => {
        el.addEventListener('input', calculateAudit);
    });

    calculateAudit(); // init
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --bg-light: #f8fafc;
}

.premium-intro-block {
    max-width: 900px;
    margin: 40px auto;
    padding: 35px 45px;
    background: linear-gradient(145deg, #ffffff, var(--bg-light));
    border-radius: 20px;
    border-left: 6px solid var(--accent);
    box-shadow: 0 10px 30px -10px rgba(0, 0, 0, 0.08);
    font-family: 'Inter', -apple-system, sans-serif;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border-top: 1px solid #f1f5f9;
    border-right: 1px solid #f1f5f9;
    border-bottom: 1px solid #f1f5f9;
}

.premium-intro-block:hover {
    transform: translateY(-4px);
    box-shadow: 0 20px 40px -10px rgba(37, 99, 235, 0.15);
}

.intro-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #eff6ff;
    color: var(--accent);
    padding: 6px 14px;
    border-radius: 10px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 16px;
}

.premium-intro-block h2 {
    color: var(--primary);
    font-size: 26px;
    font-weight: 900;
    margin-top: 0;
    margin-bottom: 16px;
    line-height: 1.3;
}

.premium-intro-block p {
    color: #475569;
    font-size: 16px;
    line-height: 1.7;
    margin: 0;
    font-weight: 400;
}

@media (max-width: 600px) {
    .premium-intro-block {
        padding: 25px 20px;
        margin: 20px 15px;
    }
    .premium-intro-block h2 {
        font-size: 22px;
    }
}
</style>

<div class="premium-intro-block">
    <div class="intro-badge">
        <span>⚙️</span> Analiza Inżynierska
    </div>
    <h2>Dobór mocy i wydajności – obliczenia, kalkulator i praktyczne przykłady.</h2>
    <p>Przejdźmy do twardych danych. Aby system grzał efektywnie, musimy dostarczyć odpowiednią ilość energii. Poniżej przedstawiam sposób obliczeń i konkretne liczby dla systemu suchego.</p>
</div>



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

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

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

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

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

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

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

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

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

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

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

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

<div class="premium-chart-box" id="chart-app-container">
    <div class="chart-header">
        <h3>Wykres zależności mocy od temperatury zasilania i pokrycia podłogi</h3>
        <p>System suchy: rura PEX 14mm, rozstaw 15cm, lamele aluminiowe pełne <br><a href="https://projekt-ogrzewania.pl/" style="color: var(--accent); font-weight: 700; text-decoration: none;">Analiza przygotowana przez Projekt-Ogrzewania.pl</a></p>
    </div>
    
    <div class="chart-canvas-wrapper">
        <canvas id="powerFloorChart"></canvas>
    </div>
    
    <div class="chart-footer">
        <div class="chart-icon">💡</div>
        <p class="chart-conclusion">
            <strong>Wniosek z wykresu:</strong> Przy zasilaniu 35°C (idealnym dla pomp ciepła) moc jest wystarczająca dla <strong>nowych, ciepłych domów</strong> (~40-50 W/m²). Dla budynków po termomodernizacji (zapotrzebowanie ~70-80 W/m²) konieczne jest podniesienie temperatury zasilania lub wybór płytek ceramicznych, aby uniknąć niedogrzania.
        </p>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // ZABEZPIECZENIE DOMENOWE (Domain Lock)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        document.getElementById('chart-app-container').innerHTML = `
            <div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 400px;">
                <span style="font-size: 48px; margin-bottom: 20px;">🔒</span>
                <h3 style="margin-top:0; font-size: 24px;">Wykres chroniony prawem autorskim</h3>
                <p style="font-size: 16px; max-width: 500px; color: #7f1d1d; line-height: 1.5;">Ten interaktywny wykres jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i został skopiowany na tę stronę nielegalnie.</p>
                <a href="https://projekt-ogrzewania.pl/" style="margin-top: 25px; padding: 14px 28px; background: #dc2626; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s;">ZOBACZ ORYGINALNY ARTYKUŁ</a>
            </div>
        `;
        return; // Blokuje ładowanie reszty kodu, wykres się nie narysuje
    }

    // JEŚLI DOMENA SIĘ ZGADZA - RYSUJEMY WYKRES
    const canvasEl = document.getElementById('powerFloorChart');
    if(!canvasEl) return;
    
    const ctx = canvasEl.getContext('2d');
    
    const labels = ['35°C', '40°C', '45°C', '50°C (ryzyko)'];
    const dataTiles = [62, 82, 102, 122];
    const dataPanels = [52, 68, 85, 102];
    const dataWood = [45, 59, 73, 88];

    new Chart(ctx, {
        type: 'line',
        data: {
            labels: labels,
            datasets: [
                {
                    label: 'Płytki Ceramiczne',
                    data: dataTiles,
                    borderColor: '#ea580c', 
                    backgroundColor: '#ea580c',
                    borderWidth: 3,
                    tension: 0.3,
                    pointBackgroundColor: '#ffffff',
                    pointBorderColor: '#ea580c',
                    pointBorderWidth: 3,
                    pointRadius: 6,
                    pointHoverRadius: 9
                },
                {
                    label: 'Panele Laminowane',
                    data: dataPanels,
                    borderColor: '#2563eb', 
                    backgroundColor: '#2563eb',
                    borderWidth: 3,
                    tension: 0.3,
                    pointBackgroundColor: '#ffffff',
                    pointBorderColor: '#2563eb',
                    pointBorderWidth: 3,
                    pointRadius: 6,
                    pointHoverRadius: 9
                },
                {
                    label: 'Deska Dębowa',
                    data: dataWood,
                    borderColor: '#16a34a', 
                    backgroundColor: '#16a34a',
                    borderWidth: 3,
                    tension: 0.3,
                    pointBackgroundColor: '#ffffff',
                    pointBorderColor: '#16a34a',
                    pointBorderWidth: 3,
                    pointRadius: 6,
                    pointHoverRadius: 9
                }
            ]
        },
        options: {
            responsive: true,
            maintainAspectRatio: false,
            plugins: {
                legend: {
                    display: true,
                    position: 'top',
                    labels: {
                        font: { family: 'Inter', size: 13, weight: '600' },
                        color: '#475569',
                        usePointStyle: true,
                        padding: 20
                    }
                },
                tooltip: {
                    backgroundColor: '#0f172a',
                    titleFont: { family: 'Inter', size: 14, weight: 'bold' },
                    bodyFont: { family: 'Inter', size: 14 },
                    padding: 12,
                    displayColors: true,
                    callbacks: {
                        label: function(context) {
                            return context.dataset.label + ': ' + context.parsed.y + ' W/m²';
                        }
                    }
                }
            },
            scales: {
                x: {
                    grid: {
                        display: false
                    },
                    ticks: {
                        font: { family: 'Inter', size: 13, weight: '600' },
                        color: '#64748b'
                    },
                    title: {
                        display: true,
                        text: 'Temperatura zasilania',
                        font: { family: 'Inter', size: 14, weight: 'bold' },
                        color: '#0f172a',
                        padding: {top: 10}
                    }
                },
                y: {
                    beginAtZero: true,
                    suggestedMax: 130,
                    grid: {
                        color: '#f1f5f9',
                        drawBorder: false
                    },
                    ticks: {
                        stepSize: 20,
                        font: { family: 'Inter', size: 13 },
                        color: '#64748b',
                        callback: function(value) {
                            return value + ' W';
                        }
                    },
                    title: {
                        display: true,
                        text: 'Moc grzewcza (W/m²)',
                        font: { family: 'Inter', size: 14, weight: 'bold' },
                        color: '#0f172a',
                        padding: {bottom: 10}
                    }
                }
            }
        }
    });
});
</script>



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

.calc-intro { max-width: 1150px; margin: 40px auto 10px auto; text-align: center; padding: 0 20px; }
.calc-intro h2 { font-size: 28px; font-weight: 900; color: var(--primary); margin-bottom: 15px; }
.calc-intro p { font-size: 16px; color: #475569; line-height: 1.6; max-width: 800px; margin: 0 auto; }

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

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

.type-selector { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; margin-bottom: 30px; }
.type-btn { padding: 14px 8px; border: 2px solid #cbd5e1; border-radius: 12px; cursor: pointer; text-align: center; font-weight: 700; font-size: 12px; color: #475569; background: #fff; transition: all 0.2s; display: flex; flex-direction: column; justify-content: center; align-items: center; }
.type-btn span { margin-top: 4px; }
.type-btn.active { border-color: var(--accent); background: #eff6ff; color: var(--accent); box-shadow: 0 4px 12px rgba(37, 99, 235, 0.1); }

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

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

.result-side { padding: 40px; background: var(--bg-light); border-left: 1px solid #f1f5f9; display: flex; flex-direction: column; justify-content: center; }
.main-score-box { background: white; padding: 30px; border-radius: 20px; text-align: center; box-shadow: 0 10px 25px rgba(0,0,0,0.03); margin-bottom: 25px; border-bottom: 6px solid var(--danger); transition: 0.3s; }
.score-num { font-size: 42px; font-weight: 900; line-height: 1; display: block; margin: 10px 0; color: var(--danger); }
.score-label { font-size: 12px; color: #64748b; font-weight: 700; text-transform: uppercase; }

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

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

.footer-cta { margin: 0 40px 40px 40px; padding: 30px; background: #eff6ff; border-radius: 20px; border-left: 6px solid var(--accent); display: flex; justify-content: space-between; align-items: center; gap: 30px; }
.cta-text-side { max-width: 550px; }
.cta-buttons-stack { display: flex; flex-direction: column; gap: 12px; min-width: 280px; }
.cta-btn { display: block; background: var(--accent); color: white; text-decoration: none; padding: 16px 20px; border-radius: 12px; font-weight: 800; transition: 0.3s; font-size: 13px; text-align: center; border: none; cursor: pointer; }
.cta-btn:hover { transform: translateY(-2px); box-shadow: 0 5px 15px rgba(37, 99, 235, 0.2); }

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

<div class="calc-intro">
    <h2>Kalkulator Mocy Systemu Suchego</h2>
    <p>Sprawdź, czy podłogówka bez wylewki ogrzeje Twój dom! Autorskie narzędzie stworzone przez inżynierów <a href="https://projekt-ogrzewania.pl/" style="color: var(--accent); font-weight: 700; text-decoration: none;">Projekt-Ogrzewania.pl</a>. Wybierz standard izolacji budynku, planowane wykończenie podłogi oraz temperaturę, a algorytm wyliczy realną moc grzewczą i wskaże ewentualne ryzyko niedogrzania.</p>
</div>

<div class="screed-calc" id="screed-calc-app">
    <div class="calc-grid">
        <div class="config-side">
            <span class="section-title">1. Standard izolacji budynku</span>
            <div class="type-selector">
                <div class="type-btn active" id="btn-new">NOWY DOM<span style="font-size:10px; font-weight:400">Zapotrzebowanie ok. 50 W/m²</span></div>
                <div class="type-btn" id="btn-old">STARY DOM<span style="font-size:10px; font-weight:400">Zapotrzebowanie ok. 80 W/m²</span></div>
            </div>

            <span class="section-title">2. Planowane wykończenie podłogi</span>
            <div class="type-selector">
                <div class="type-btn active" id="btn-tiles">PŁYTKI CERAMICZNE<span style="font-size:10px; font-weight:400">Najlepsze przewodnictwo (k=1.0)</span></div>
                <div class="type-btn" id="btn-panels">PANELE LAMINOWANE<span style="font-size:10px; font-weight:400">Opór cieplny izolatora (k=0.9)</span></div>
            </div>

            <span class="section-title">3. Parametry pracy układu</span>
            <div class="input-wrap" style="margin-bottom: 0;">
                <div class="input-label-row"><label>Temperatura zasilania (T_zas)</label><span class="val-badge"><span id="v-temp">35</span> °C</span></div>
                <input type="range" id="tempZas" min="30" max="45" step="1" value="35">
            </div>
        </div>

        <div class="result-side">
            <div id="mainBox" class="main-score-box">
                <span class="score-label">Realna moc grzewcza systemu</span>
                <span class="score-num"><span id="resPower">&#8212;</span> W/m²</span>
                <div id="risk-msg">System ogrzeje dom bez problemu!</div>
            </div>

            <div class="tech-grid">
                <div class="tech-item"><span>Wymagane zapotrzebowanie budynku:</span><strong id="resDemand">&#8212;</strong></div>
                <div class="tech-item"><span>Szacowany czas nagrzewania:</span><strong>20 &#8211; 40 minut</strong></div>
                <div class="tech-item"><span>Ryzyko niedogrzania w mrozy:</span><strong id="resOpLoss" style="color:#f87171">&#8212;</strong></div>
                <div class="tech-item"><span>Bezpieczeństwo pokrycia podłogi:</span><strong id="resFloorSafety" style="color:#16a34a">Optymalne</strong></div>
            </div>
        </div>
    </div>

    <div class="footer-cta">
        <div class="cta-text-side">
            <h3 style="margin:0 0 10px 0; color:#1e3a8a">Nie zgaduj parametrów podłogówki</h3>
            <p style="margin:0; font-size:14px; color:#475569" id="footer-desc">System suchy nie wybacza błędów. Źle dobrany rozstaw rur lub zbyt grube panele sprawią, że zapłacisz krocie za instalację, która nie ogrzeje domu. Zleć nam precyzyjne obliczenia projektowe.</p>
        </div>
        <div class="cta-buttons-stack">
            <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="cta-btn">
                ZAMÓW PROJEKT OGRZEWANIA →
            </a>
        </div>
    </div>
</div>

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

    // STAN APLIKACJI
    let houseType = "new";
    let floorType = "tiles";

    // ELEMENTY DOM
    const btnNew = document.getElementById("btn-new");
    const btnOld = document.getElementById("btn-old");
    const btnTiles = document.getElementById("btn-tiles");
    const btnPanels = document.getElementById("btn-panels");
    
    const tempZas = document.getElementById("tempZas");
    const vTemp = document.getElementById("v-temp");

    const resPower = document.getElementById("resPower");
    const resDemand = document.getElementById("resDemand");
    const resOpLoss = document.getElementById("resOpLoss");
    const resFloorSafety = document.getElementById("resFloorSafety");
    
    const mainBox = document.getElementById("mainBox");
    const riskMsg = document.getElementById("risk-msg");

    // GŁÓWNA FUNKCJA OBLICZENIOWA
    function calculate() {
        let t = parseFloat(tempZas.value);
        vTemp.innerText = t;

        let targetPower = (houseType === "new") ? 50 : 80;
        let k = (floorType === "tiles") ? 1.0 : 0.9;

        // Wzór na moc: (T_zas - 2.5 - 20) * 4.5 * k
        let power = (t - 2.5 - 20) * 4.5 * k;
        if (power < 0) power = 0;

        resPower.innerText = Math.round(power);
        resDemand.innerText = targetPower + " W/m²";

        // Logika Niedogrzania
        if (power >= targetPower) {
            mainBox.style.borderBottomColor = "var(--success)";
            resPower.style.color = "var(--success)";
            
            riskMsg.style.backgroundColor = "#dcfce7";
            riskMsg.style.color = "var(--success)";
            riskMsg.style.borderColor = "#bbf7d0";
            riskMsg.innerText = "System ogrzeje dom bez problemu!";
            
            resOpLoss.innerText = "Brak (Pełen komfort)";
            resOpLoss.style.color = "var(--success)";
        } else {
            mainBox.style.borderBottomColor = "var(--danger)";
            resPower.style.color = "var(--danger)";
            
            riskMsg.style.backgroundColor = "#fee2e2";
            riskMsg.style.color = "var(--danger)";
            riskMsg.style.borderColor = "#fecaca";
            
            let missing = Math.round(targetPower - power);
            riskMsg.innerText = "Ryzyko niedogrzania! Brakuje ok. " + missing + " W/m².";
            
            resOpLoss.innerText = "Tak (niedogrzanie)";
            resOpLoss.style.color = "var(--danger)";
        }

        // Logika Przegrzania Paneli
        if (floorType === "panels" && t > 40) {
            resFloorSafety.innerText = "OSTRZEŻENIE (T>40°C)";
            resFloorSafety.style.color = "var(--danger)";
            riskMsg.innerText += " Uwaga: Ryzyko wypaczenia paneli!";
        } else {
            resFloorSafety.innerText = "Optymalne";
            resFloorSafety.style.color = "var(--success)";
        }
    }

    // EVENT LISTENERY
    if(btnNew && btnOld) {
        btnNew.addEventListener("click", function() {
            houseType = "new";
            btnOld.classList.remove("active");
            btnNew.classList.add("active");
            calculate();
        });
        btnOld.addEventListener("click", function() {
            houseType = "old";
            btnNew.classList.remove("active");
            btnOld.classList.add("active");
            calculate();
        });
    }

    if(btnTiles && btnPanels) {
        btnTiles.addEventListener("click", function() {
            floorType = "tiles";
            btnPanels.classList.remove("active");
            btnTiles.classList.add("active");
            calculate();
        });
        btnPanels.addEventListener("click", function() {
            floorType = "panels";
            btnTiles.classList.remove("active");
            btnPanels.classList.add("active");
            calculate();
        });
    }

    if(tempZas) {
        tempZas.addEventListener("input", calculate);
    }

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



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

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

.steps-header {
    padding: 35px 40px;
    text-align: center;
    background: var(--bg-light);
    border-bottom: 1px solid var(--border-color);
}

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

.steps-header p {
    margin: 0 auto;
    max-width: 700px;
    font-size: 15px;
    line-height: 1.6;
    color: #475569;
}

.steps-container {
    padding: 20px 40px 40px 40px;
}

.step-item {
    border: 2px solid transparent;
    border-radius: 16px;
    margin-bottom: 12px;
    background: #ffffff;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.03);
    border: 1px solid #f1f5f9;
    transition: all 0.3s ease;
}

.step-item.active {
    border-color: #bfdbfe;
    background: #eff6ff;
    box-shadow: 0 10px 25px -5px rgba(37, 99, 235, 0.1);
}

.step-header {
    padding: 20px 25px;
    display: flex;
    align-items: center;
    cursor: pointer;
    gap: 20px;
}

.step-number {
    width: 40px;
    height: 40px;
    background: #f1f5f9;
    color: #64748b;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    font-weight: 900;
    flex-shrink: 0;
    transition: all 0.3s ease;
}

.step-item.active .step-number {
    background: var(--accent);
    color: white;
    box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3);
}

.step-title {
    font-size: 17px;
    font-weight: 800;
    color: var(--primary);
    flex-grow: 1;
}

.step-item.active .step-title {
    color: var(--accent);
}

.step-toggle {
    font-size: 24px;
    color: #94a3b8;
    transition: transform 0.3s ease;
}

.step-item.active .step-toggle {
    transform: rotate(180deg);
    color: var(--accent);
}

.step-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    padding: 0 25px;
}

.step-content-inner {
    padding-bottom: 25px;
    padding-left: 60px; /* Aligns with text */
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
}

.step-content-inner p { margin-top: 0; margin-bottom: 15px; }
.step-content-inner p:last-child { margin-bottom: 0; }

.step-content-inner a {
    color: var(--accent);
    font-weight: 700;
    text-decoration: underline;
    text-decoration-color: #bfdbfe;
    text-underline-offset: 3px;
}

.highlight-box {
    background: #ffffff;
    border-left: 4px solid var(--warning);
    padding: 12px 16px;
    border-radius: 0 8px 8px 0;
    margin: 15px 0;
    font-size: 14px;
    font-weight: 600;
    color: var(--primary);
    box-shadow: 0 2px 5px rgba(0,0,0,0.02);
}

.split-options {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
    margin-top: 15px;
}

.option-card {
    background: white;
    padding: 15px;
    border-radius: 12px;
    border: 1px solid #e2e8f0;
}

.option-card h5 {
    margin: 0 0 8px 0;
    color: var(--primary);
    font-size: 14px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.option-card p {
    margin: 0;
    font-size: 13px;
    line-height: 1.5;
}

@media (max-width: 600px) {
    .steps-header { padding: 25px 20px; }
    .steps-container { padding: 20px; }
    .step-header { padding: 15px; gap: 15px; }
    .step-title { font-size: 15px; }
    .step-content-inner { padding-left: 0; padding-bottom: 20px; font-size: 14px; }
    .split-options { grid-template-columns: 1fr; }
}
</style>

<div class="premium-steps-widget" id="steps-app-container">
    <div class="steps-header">
        <h3>Montaż krok po kroku – na co zwrócić uwagę?</h3>
        <p>System suchy wybacza znacznie mniej błędów niż tradycyjna wylewka. Poniżej znajdziesz 6 kluczowych etapów, których rygorystyczne przestrzeganie gwarantuje sukces i bezpieczeństwo instalacji.</p>
    </div>

    <div class="steps-container">
        
        <div class="step-item active">
            <div class="step-header" onclick="toggleStep(this)">
                <div class="step-number">1</div>
                <div class="step-title">Przygotowanie podłoża</div>
                <div class="step-toggle">▼</div>
            </div>
            <div class="step-content" style="max-height: 500px;">
                <div class="step-content-inner">
                    <p>Jak wspomniano, to warunek <strong>sine qua non</strong> (niezbędny). Użyj wylewki samopoziomującej o minimalnej grubości, aby uzyskać idealną płaszczyznę.</p>
                    <div class="highlight-box">
                        ⚠️ Odchylenie od poziomu nie może przekraczać <strong>2 mm na 2 metrach długości</strong> (jest to rygorystyczna norma dla płyt systemowych).
                    </div>
                </div>
            </div>
        </div>

        <div class="step-item">
            <div class="step-header" onclick="toggleStep(this)">
                <div class="step-number">2</div>
                <div class="step-title">Izolacja przeciwwilgociowa i brzegowa</div>
                <div class="step-toggle">▼</div>
            </div>
            <div class="step-content">
                <div class="step-content-inner">
                    <p>Mimo że technologia jest &#8222;sucha&#8221; i nie ma tu wody zarobowej, ochrona przed wilgocią z zewnątrz jest obowiązkowa.</p>
                    <ul>
                        <li><strong>Folia PE 0,2 mm:</strong> Konieczna jako ochrona przed wilgocią podciąganą ze stropu.</li>
                        <li><strong>Taśma dylatacyjna brzegowa:</strong> Musi być przyklejona do wszystkich ścian i słupów. Suchy jastrych „pracuje” pod wpływem temperatury i musi mieć miejsce na rozszerzenie.</li>
                    </ul>
                </div>
            </div>
        </div>

        <div class="step-item">
            <div class="step-header" onclick="toggleStep(this)">
                <div class="step-number">3</div>
                <div class="step-title">Układanie płyt systemowych i lameli</div>
                <div class="step-toggle">▼</div>
            </div>
            <div class="step-content">
                <div class="step-content-inner">
                    <p>Zawsze zaczynaj od rogu pomieszczenia. Wciskaj rurę grzewczą <strong>z wyczuciem</strong>. Zbyt mocne dobijanie młotkiem w lamele aluminiowe może spowodować ich pęknięcie lub trwałe odkształcenie kanału.</p>
                    <p>Unikaj cięcia <a href="https://projekt-ogrzewania.pl/produkt/lamel-grzejny-metalowy/">blachy aluminiowej</a> szlifierką kątową – powstające podczas cięcia iskry natychmiast wypalają dziury w styropianie bazowym.</p>
                </div>
            </div>
        </div>

        <div class="step-item">
            <div class="step-header" onclick="toggleStep(this)">
                <div class="step-number">4</div>
                <div class="step-title">Test szczelności – obowiązkowy!</div>
                <div class="step-toggle">▼</div>
            </div>
            <div class="step-content">
                <div class="step-content-inner">
                    <p>Przed przykryciem rur suchym jastrychem <strong>musisz</strong> przeprowadzić <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/">próbę ciśnieniową</a> instalacji.</p>
                    <div class="highlight-box" style="border-left-color: var(--danger);">
                        💧 Wykonaj test wodą pod ciśnieniem <strong>4-6 barów</strong> przez minimum <strong>24 godziny</strong>. Manometr musi być dobrze widoczny! Najgorszą rzeczą, jaka może się przydarzyć, jest przeciek pod gotową, kosztowną podłogą dębową.
                    </div>
                </div>
            </div>
        </div>

        <div class="step-item">
            <div class="step-header" onclick="toggleStep(this)">
                <div class="step-number">5</div>
                <div class="step-title">Warstwa rozdzielcza – kluczowy moment</div>
                <div class="step-toggle">▼</div>
            </div>
            <div class="step-content">
                <div class="step-content-inner">
                    <p>Sposób wykonania tej warstwy zależy w pełni od tego, jaki materiał położysz na wierzchu:</p>
                    <div class="split-options">
                        <div class="option-card">
                            <h5>🪵 Jeśli kładziesz panele:</h5>
                            <p>Użyj specjalnej maty pod ogrzewanie podłogowe (np. z włókna poliestrowego o symbolu TC lub certyfikowanej folii perforowanej). <strong>Nigdy</strong> nie używaj standardowej pianki PE!</p>
                        </div>
                        <div class="option-card">
                            <h5>🧱 Jeśli kładziesz płytki:</h5>
                            <p>Ułóż dwie warstwy płyt gipsowo-włóknowych (np. 2x 12,5 mm) na kleju systemowym. Skręć je wkrętami uważając, by nie przebić rur! Wymaga to znajomości planu pętli.</p>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class="step-item">
            <div class="step-header" onclick="toggleStep(this)">
                <div class="step-number">6</div>
                <div class="step-title">Wygrzewanie wstępne</div>
                <div class="step-toggle">▼</div>
            </div>
            <div class="step-content">
                <div class="step-content-inner">
                    <p>Przed położeniem ostatecznych płytek lub paneli z drewna, koniecznie należy przeprowadzić protokolarne wygrzanie wstępne wylewki suchej.</p>
                    <div class="highlight-box" style="border-left-color: var(--success);">
                        📈 Proces zaczynamy od zasilania o temperaturze <strong>25°C</strong> i podnosimy ją o <strong>5°C dziennie</strong>, aż do osiągnięcia maksymalnej temperatury projektowej.
                    </div>
                    <p>Stabilizuje to naprężenia w suchym jastrychu i pozwala na bezpieczne wyschnięcie kleju montażowego.</p>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
// 1. ZABEZPIECZENIE DOMENOWE (Domain Lock)
!function(){document.addEventListener("DOMContentLoaded",function(){var e=window.location.hostname,t=["projekt-ogrzewania.pl","www.projekt-ogrzewania.pl","localhost","127.0.0.1",""];if(-1===t.indexOf(e)){var n=document.getElementById("steps-app-container");return n&&(n.innerHTML=`<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 400px;"><span style="font-size: 48px; margin-bottom: 20px;">🔒</span><h3 style="margin-top:0; font-size: 24px;">Przewodnik chroniony prawem autorskim</h3><p style="font-size: 16px; max-width: 500px; color: #7f1d1d; line-height: 1.5;">Ten interaktywny element jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i został skopiowany nielegalnie.</p><a href="https://projekt-ogrzewania.pl/" style="margin-top: 25px; padding: 14px 28px; background: #dc2626; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s;">ZOBACZ ORYGINALNY ARTYKUŁ</a></div>`),void 0}})}();

// 2. LOGIKA AKORDEONU
function toggleStep(element) {
    // Znajdź główny kontener klikniętego kroku
    const parent = element.parentElement;
    const content = parent.querySelector('.step-content');
    
    // Jeśli kliknięto w już otwarty - zamknij go
    if (parent.classList.contains('active')) {
        parent.classList.remove('active');
        content.style.maxHeight = null;
    } else {
        // Opcjonalne: Zamknij wszystkie inne (odkomentuj, jeśli chcesz by był otwarty tylko 1 na raz)
        /*
        const allItems = document.querySelectorAll('.step-item');
        allItems.forEach(item => {
            item.classList.remove('active');
            item.querySelector('.step-content').style.maxHeight = null;
        });
        */
        
        // Otwórz kliknięty
        parent.classList.add('active');
        content.style.maxHeight = content.scrollHeight + "px";
    }
}
</script>



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

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

.concept-text-area {
    padding: 35px 40px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
    border-bottom: 1px solid var(--border-color);
}

.concept-text-area h3 {
    margin: 0 0 15px 0;
    font-size: 24px;
    font-weight: 900;
    color: var(--primary);
}

.concept-text-area p {
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
    margin-bottom: 15px;
}

.concept-text-area p:last-child {
    margin-bottom: 0;
}

.highlight-text {
    background: #eff6ff;
    padding: 12px 20px;
    border-left: 4px solid var(--accent);
    border-radius: 0 12px 12px 0;
    font-weight: 600;
    color: var(--primary);
    margin: 20px 0;
}

/* INTERAKTYWNA SYMULACJA */
.simulation-area {
    padding: 35px 40px;
    background: #ffffff;
}

.sim-title {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    color: #94a3b8;
    letter-spacing: 1px;
    margin-bottom: 25px;
    display: block;
    text-align: center;
}

.time-control {
    background: var(--bg-light);
    padding: 20px 30px;
    border-radius: 16px;
    margin-bottom: 30px;
    border: 1px solid var(--border-color);
}

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

.time-label {
    font-weight: 800;
    font-size: 16px;
    color: var(--primary);
}

.sun-status {
    font-size: 14px;
    font-weight: 700;
    padding: 6px 12px;
    border-radius: 8px;
    background: #fff;
    box-shadow: 0 2px 4px rgba(0,0,0,0.05);
    transition: all 0.3s;
}

input[type=range] { width: 100%; height: 8px; background: #cbd5e1; border-radius: 10px; appearance: none; outline: none; }
input[type=range]::-webkit-slider-thumb { appearance: none; width: 26px; height: 26px; background: var(--accent); border-radius: 50%; border: 4px solid white; box-shadow: 0 2px 8px rgba(0,0,0,0.2); cursor: pointer; }

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

.thermo-card {
    border: 2px solid var(--border-color);
    border-radius: 16px;
    padding: 25px 20px;
    text-align: center;
    transition: all 0.3s;
    position: relative;
    overflow: hidden;
}

.thermo-card.dry { border-color: #bfdbfe; background: #f8fafc; }
.thermo-card.wet { border-color: #e2e8f0; }

.thermo-title {
    font-size: 15px;
    font-weight: 800;
    margin-bottom: 15px;
    color: var(--primary);
}

.temp-display {
    font-size: 42px;
    font-weight: 900;
    line-height: 1;
    margin-bottom: 10px;
    transition: color 0.3s;
}

.temp-status {
    font-size: 13px;
    font-weight: 600;
    color: #64748b;
    min-height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.math-conclusion {
    padding: 25px 40px;
    background: #f8fafc;
    border-top: 1px solid var(--border-color);
    font-size: 14px;
    color: #475569;
    line-height: 1.6;
}

.math-conclusion strong { color: var(--primary); }

@media (max-width: 768px) {
    .concept-text-area, .simulation-area, .math-conclusion { padding: 25px 20px; }
    .thermo-grid { grid-template-columns: 1fr; gap: 15px; }
    .time-control { padding: 20px; }
}
</style>

<div class="premium-concept-box" id="concept-app-container">
    
    <div class="concept-text-area">
        <h3>Opłacalność eksploatacji – czy sucha podłogówka jest droższa w użytkowaniu?</h3>
        <p>Istnieje mit, że system suchy zużywa więcej energii niż beton. <strong>To nieprawda.</strong> Roczne zużycie energii na ogrzewanie zależy od strat ciepła budynku, a nie od rodzaju jastrychu.</p>
        
        <div class="highlight-text">
            <strong>Przewaga systemu suchego:</strong> W okresach przejściowych (kwiecień, październik), gdy słońce dogrzewa dom, tradycyjna wylewka betonowa dalej grzeje (bo jest nagrzana do 26°C). Musimy otwierać okna, marnując ciepło.
        </div>
        
        <p>System suchy wychładza się w 30 minut po wyłączeniu pompy, co pozwala na lepsze wykorzystanie zysków bytowych i słonecznych. Szacuje się, że w domach z dużymi przeszkleniami południowymi system suchy może dać <strong>5-8% oszczędności energii</strong> w skali roku w porównaniu do ciężkiej wylewki.</p>
    </div>

    <div class="simulation-area">
        <span class="sim-title">Wizualizacja: Wiosenny dzień (okna na południe)</span>
        
        <div class="time-control">
            <div class="time-header">
                <div class="time-label">Godzina: <span id="time-val" style="color: var(--accent); font-size: 20px;">08:00</span></div>
                <div class="sun-status" id="sun-badge">☁️ Poranek (Chłodno)</div>
            </div>
            <input type="range" id="time-slider" min="8" max="18" step="1" value="8">
        </div>

        <div class="thermo-grid">
            <div class="thermo-card dry">
                <div class="thermo-title">System Suchy (Lekki)</div>
                <div class="temp-display" id="temp-dry" style="color: var(--success);">21°C</div>
                <div class="temp-status" id="status-dry">Ogrzewanie działa. Idealna temperatura.</div>
            </div>
            
            <div class="thermo-card wet">
                <div class="thermo-title">System Mokry (Beton)</div>
                <div class="temp-display" id="temp-wet" style="color: var(--success);">21°C</div>
                <div class="temp-status" id="status-wet">Ogrzewanie działa. Idealna temperatura.</div>
            </div>
        </div>
    </div>

    <div class="math-conclusion">
        <strong>Przykład wyliczenia:</strong> Dom 150 m², zapotrzebowanie 50 kWh/m²/rok. Koszt ogrzewania pompą ciepła to ok. 2500 zł rocznie. Oszczędność (8%) wynosi <strong>200 zł rocznie</strong>.<br><br>
        <strong>Czy warto?</strong> Różnica w cenie instalacji dla 150 m² wynosi ok. 15 000 zł na starcie. Zwrot z samych oszczędności energetycznych trwałby 75 lat. Oznacza to, że system suchy wybiera się <strong>NIE dla oszczędności na rachunkach</strong>, ale dla rozwiązania problemu konstrukcyjnego (waga, wysokość) lub czasu realizacji.
    </div>

</div>

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

    // LOGIKA SYMULACJI CZASU I TEMPERATURY
    const slider = document.getElementById("time-slider");
    const timeVal = document.getElementById("time-val");
    const sunBadge = document.getElementById("sun-badge");
    
    const tempDry = document.getElementById("temp-dry");
    const statusDry = document.getElementById("status-dry");
    
    const tempWet = document.getElementById("temp-wet");
    const statusWet = document.getElementById("status-wet");

    function updateSimulation() {
        const hour = parseInt(slider.value);
        timeVal.innerText = (hour < 10 ? "0" + hour : hour) + ":00";
        
        // Logika dla systemu suchego (idealnie trzyma zadaną temp ok 21-22C)
        // Logika dla wylewki (przegrzewa się, gdy wyjdzie słońce)
        
        if (hour >= 8 && hour <= 10) {
            sunBadge.innerHTML = "☁️ Poranek (Chłodno)";
            sunBadge.style.color = "#64748b";
            sunBadge.style.background = "#f1f5f9";
            
            tempDry.innerText = "21°C";
            tempDry.style.color = "var(--success)";
            statusDry.innerText = "Ogrzewanie włączone. Podłoga grzeje.";
            
            tempWet.innerText = "21°C";
            tempWet.style.color = "var(--success)";
            statusWet.innerText = "Ogrzewanie włączone. Wylewka się ładuje.";
        } 
        else if (hour >= 11 && hour <= 15) {
            sunBadge.innerHTML = "☀️ Silne słońce przez okna";
            sunBadge.style.color = "#b45309";
            sunBadge.style.background = "#fef3c7";
            
            tempDry.innerText = "22°C";
            tempDry.style.color = "var(--success)";
            statusDry.innerHTML = "Termostat wyłącza pompę. <strong>Podłoga natychmiast stygnie</strong>. Brak przegrzewania.";
            
            // Wylewka przegrzewa pokój
            let wetT = 21 + (hour - 10) * 1.5; 
            if(wetT > 25) wetT = 25; // max 25C
            
            tempWet.innerText = wetT + "°C";
            tempWet.style.color = "var(--danger)";
            statusWet.innerHTML = "Pompa wyłączona, ale <strong>nagrzany beton wciąż oddaje ciepło</strong>. Otwierasz okna by przewietrzyć!";
        }
        else if (hour > 15) {
            sunBadge.innerHTML = "🌙 Wieczór (Słońce zaszło)";
            sunBadge.style.color = "#4338ca";
            sunBadge.style.background = "#e0e7ff";
            
            tempDry.innerText = "21°C";
            tempDry.style.color = "var(--success)";
            statusDry.innerText = "Szybki start ogrzewania. Komfort zachowany.";
            
            tempWet.innerText = "22°C";
            tempWet.style.color = "var(--warning)";
            statusWet.innerText = "Temperatura powoli spada. Powolny rozruch wylewki.";
        }
    }

    slider.addEventListener("input", updateSimulation);
    updateSimulation(); // init
});
</script>



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

.premium-summary-box {
    max-width: 900px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--border-color);
    overflow: hidden;
    color: var(--primary);
}

.summary-header {
    padding: 40px 40px 20px 40px;
    text-align: center;
}

.summary-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #1e293b;
    color: #ffffff;
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
}

.summary-header h3 {
    margin: 0 0 20px 0;
    font-size: 28px;
    font-weight: 900;
    color: var(--primary);
    line-height: 1.3;
}

.summary-header p {
    font-size: 16px;
    line-height: 1.7;
    color: #475569;
    max-width: 750px;
    margin: 0 auto;
}

.summary-header p strong {
    color: var(--primary);
}

/* INTERAKTYWNE KARTY - 3 FILARY */
.pillars-container {
    padding: 10px 40px 30px 40px;
}

.pillars-title {
    text-align: center;
    font-size: 14px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--accent);
    letter-spacing: 1px;
    margin-bottom: 25px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.pillars-title::before, .pillars-title::after {
    content: "";
    height: 2px;
    width: 40px;
    background: #bfdbfe;
    border-radius: 2px;
}

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

.pillar-card {
    background: #ffffff;
    border: 2px solid var(--border-color);
    border-radius: 16px;
    padding: 30px 20px;
    text-align: center;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    cursor: default;
    z-index: 1;
}

.pillar-card:hover {
    transform: translateY(-10px);
    border-color: var(--accent);
    box-shadow: 0 20px 25px -5px rgba(37, 99, 235, 0.1), 0 10px 10px -5px rgba(37, 99, 235, 0.04);
    z-index: 2;
}

.pillar-icon {
    font-size: 32px;
    margin-bottom: 15px;
    display: inline-block;
    transition: transform 0.4s;
}

.pillar-card:hover .pillar-icon {
    transform: scale(1.15) rotate(5deg);
}

.pillar-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--primary);
    margin-bottom: 10px;
}

.pillar-desc {
    font-size: 13px;
    color: #64748b;
    line-height: 1.5;
    margin: 0;
}

.pillar-card:hover .pillar-title {
    color: var(--accent);
}

.summary-footer {
    background: #ffffff;
    padding: 35px 40px;
    border-top: 1px solid var(--border-color);
    text-align: center;
}

.summary-footer p {
    font-size: 15px;
    line-height: 1.7;
    color: #334155;
    margin: 0;
    font-weight: 500;
}

.summary-footer p strong {
    color: var(--accent);
    font-weight: 800;
}

@media (max-width: 768px) {
    .summary-header { padding: 30px 20px 15px 20px; }
    .summary-header h3 { font-size: 24px; }
    .pillars-container { padding: 10px 20px 30px 20px; }
    .pillars-grid { grid-template-columns: 1fr; gap: 15px; }
    .pillar-card { padding: 25px 20px; }
    .pillar-card:hover { transform: translateY(-5px); }
    .summary-footer { padding: 25px 20px; }
}
</style>

<div class="premium-summary-box" id="summary-app-container">
    
    <div class="summary-header">
        <div class="summary-badge">Podsumowanie</div>
        <h2>Rozwiązanie do zadań specjalnych</h2>
        <p>Ogrzewanie podłogowe wodne bez wylewki to wyrafinowane narzędzie w rękach świadomego inwestora i projektanta. Nie jest to technologia dla każdego nowego domu – tam króluje ekonomiczny beton. Jest to jednak <strong>jedyna słuszna droga, gdy strop woła o litość, a czas goni.</strong></p>
    </div>

    <div class="pillars-container">
        <div class="pillars-title">Trzy Filary Sukcesu</div>
        
        <div class="pillars-grid">
            <div class="pillar-card">
                <div class="pillar-icon">🛡️</div>
                <div class="pillar-title">Aluminium</div>
                <p class="pillar-desc">Metalowe lamele to serce układu. Bez nich nie ma mowy o równomiernym rozprowadzaniu ciepła pod podłogą.</p>
            </div>
            
            <div class="pillar-card">
                <div class="pillar-icon">🌡️</div>
                <div class="pillar-title">Niska temperatura</div>
                <p class="pillar-desc">Zasilanie na poziomie <strong>40°C</strong> to ściana, której bezwzględnie nie wolno przekraczać ze względów bezpieczeństwa.</p>
            </div>
            
            <div class="pillar-card">
                <div class="pillar-icon">📏</div>
                <div class="pillar-title">Równe podłoże</div>
                <p class="pillar-desc">Wylewka musi być idealnie płaska. W technologii suchej tolerancja na nierówności jest <strong>absolutnie zerowa</strong>.</p>
            </div>
        </div>
    </div>

    <div class="summary-footer">
        <p>Jeśli te rygorystyczne warunki zostaną spełnione, otrzymasz komfortową podłogę, która nagrzewa się w kilkanaście minut i waży tyle, co grubszy dywan. To technologia, która w starym budownictwie i nowoczesnym drewnianym szkielecie sprawdza się <strong>bezkonkurencyjnie</strong>.</p>
    </div>

</div>

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



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

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

.myth-header {
    padding: 35px 40px;
    text-align: center;
    background: var(--bg-light);
    border-bottom: 1px solid var(--border-color);
}

.myth-header h3 {
    margin: 0 0 15px 0;
    font-size: 26px;
    font-weight: 900;
}

.myth-header p {
    margin: 0 auto;
    max-width: 800px;
    font-size: 15px;
    line-height: 1.6;
    color: #475569;
}

.myth-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 25px;
    padding: 40px;
    background: #ffffff;
}

/* FLIP CARD STYLES */
.flip-card {
    background-color: transparent;
    width: 100%;
    min-height: 340px;
    perspective: 1000px;
    cursor: pointer;
}

.flip-card-inner {
    position: relative;
    width: 100%;
    height: 100%;
    text-align: center;
    transition: transform 0.6s cubic-bezier(0.4, 0.2, 0.2, 1);
    transform-style: preserve-3d;
}

.flip-card.is-flipped .flip-card-inner {
    transform: rotateY(180deg);
}

.flip-card-front, .flip-card-back {
    position: absolute;
    width: 100%;
    height: 100%;
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
    border-radius: 20px;
    padding: 30px 20px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);
    border: 2px solid transparent;
}

.flip-card-front {
    background-color: #fef2f2;
    border-color: #fecaca;
    color: var(--danger);
}

.flip-card-back {
    background-color: #f0fdf4;
    border-color: #bbf7d0;
    color: var(--success);
    transform: rotateY(180deg);
}

.card-icon {
    font-size: 42px;
    margin-bottom: 15px;
    line-height: 1;
}

.card-title {
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 10px;
    opacity: 0.8;
}

.card-text {
    font-size: 16px;
    font-weight: 700;
    line-height: 1.5;
    margin: 0;
}

.flip-card-back .card-title {
    color: var(--success);
}

.flip-card-back .card-text {
    font-size: 14px;
    font-weight: 500;
    color: #166534;
    line-height: 1.6;
}

.flip-hint {
    margin-top: 20px;
    font-size: 12px;
    font-weight: 700;
    background: rgba(255,255,255,0.8);
    padding: 6px 16px;
    border-radius: 20px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.05);
}

.myth-summary {
    margin: 0 40px 40px 40px;
    padding: 30px;
    background: #eff6ff;
    border-radius: 20px;
    border-left: 6px solid var(--accent);
}

.myth-summary h4 {
    margin: 0 0 10px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--primary);
}

.myth-summary p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: #334155;
}

@media (max-width: 900px) {
    .myth-grid { grid-template-columns: 1fr; gap: 20px; padding: 25px 20px; }
    .flip-card { min-height: 280px; }
    .myth-summary { margin: 0 20px 25px 20px; padding: 25px 20px; }
    .myth-header { padding: 25px 20px; }
}
</style>

<div class="premium-myth-box" id="dry-system-myths-app">
    <div class="myth-header">
        <h3>Fakty i Mity: Ogrzewanie Bez Wylewki</h3>
        <p>System suchy obrósł wieloma mitami, które powielają nawet instalatorzy starej daty. Zanim zrezygnujesz z tej technologii na rzecz betonu, sprawdź jak jest naprawdę. <strong>Kliknij kartę, aby poznać prawdę.</strong></p>
    </div>

    <div class="myth-grid">
        <div class="flip-card" onclick="this.classList.toggle('is-flipped')">
            <div class="flip-card-inner">
                <div class="flip-card-front">
                    <div class="card-icon">🏗️</div>
                    <div class="card-title">MIT #1</div>
                    <p class="card-text">&#8222;Wylewka betonowa jest dużo lepsza. Przecież można ją wylać nawet na stary, drewniany strop w kamienicy.&#8221;</p>
                    <div class="flip-hint" style="color: var(--danger)"><span>Odwróć kartę</span> ⤵</div>
                </div>
                <div class="flip-card-back">
                    <div class="card-icon">⚖️</div>
                    <div class="card-title">FAKT</div>
                    <p class="card-text"><strong>To ryzyko katastrofy budowlanej.</strong> Mokra wylewka to obciążenie rzędu 150-180 kg/m². W 50-metrowym mieszkaniu daje to 7,5 tony! System suchy waży zaledwie 22-35 kg/m², co czyni go jedynym ratunkiem dla drewnianych stropów.</p>
                </div>
            </div>
        </div>

        <div class="flip-card" onclick="this.classList.toggle('is-flipped')">
            <div class="flip-card-inner">
                <div class="flip-card-front">
                    <div class="card-icon">💸</div>
                    <div class="card-title">MIT #2</div>
                    <p class="card-text">&#8222;System bez betonu natychmiast stygnie, więc piec musi ciągle pracować, co zużywa znacznie więcej energii!&#8221;</p>
                    <div class="flip-hint" style="color: var(--danger)"><span>Odwróć kartę</span> ⤵</div>
                </div>
                <div class="flip-card-back">
                    <div class="card-icon">📉</div>
                    <div class="card-title">FAKT</div>
                    <p class="card-text"><strong>To bzdura.</strong> Zużycie energii zależy od strat ciepła budynku. Co więcej, dzięki błyskawicznej reakcji, system suchy nie przegrzewa pomieszczeń wiosną, gdy słońce dogrzewa przez okna. Daje to nawet 5-8% oszczędności na rachunkach!</p>
                </div>
            </div>
        </div>

        <div class="flip-card" onclick="this.classList.toggle('is-flipped')">
            <div class="flip-card-inner">
                <div class="flip-card-front">
                    <div class="card-icon">📐</div>
                    <div class="card-title">MIT #3</div>
                    <p class="card-text">&#8222;Podłogówkę suchą kładzie się błyskawicznie. Układam styropian z rurkami na starym stropie i gotowe.&#8221;</p>
                    <div class="flip-hint" style="color: var(--danger)"><span>Odwróć kartę</span> ⤵</div>
                </div>
                <div class="flip-card-back">
                    <div class="card-icon">📏</div>
                    <div class="card-title">FAKT</div>
                    <p class="card-text"><strong>Tolerancja wynosi zero!</strong> Podłoże musi być absolutnie równe (max. 2mm na 2m). Jeśli położysz system na krzywym stropie, podłoga będzie &#8222;klawiszować&#8221;, stukać, a rury mogą wypaść z lameli. Cienka wylewka samopoziomująca jest niemal zawsze niezbędna.</p>
                </div>
            </div>
        </div>
    </div>

    <div class="myth-summary">
        <h4>Podsumowując – czy warto rezygnować z betonu?</h4>
        <p>Ogrzewanie bez wylewki to precyzyjna inżynieria. Wymaga starannego przygotowania podłoża oraz bezwzględnego ograniczenia temperatury zasilania (maksymalnie 40-45°C). W zamian odwdzięcza się <strong>błyskawicznym nagrzewaniem (20-40 min)</strong>, brakiem 8-tygodniowych przestojów na schnięcie i, co najważniejsze, gwarantuje bezpieczeństwo starym, drewnianym konstrukcjom.</p>
    </div>
</div>

<script>
/* DOMAIN PROTECTION MODULE */
!function(){var _0x1f2a=['\x68\x6f\x73\x74\x6e\x61\x6d\x65','\x6c\x6f\x63\x61\x74\x69\x6f\x6e','\x70\x72\x6f\x6a\x65\x6b\x74\x2d\x6f\x67\x72\x7a\x65\x77\x61\x6e\x69\x61\x2e\x70\x6c','\x77\x77\x77\x2e\x70\x72\x6f\x6a\x65\x6b\x74\x2d\x6f\x67\x72\x7a\x65\x77\x61\x6e\x69\x61\x2e\x70\x6c','\x6c\x6f\x63\x61\x6c\x68\x6f\x73\x74','\x31\x32\x37\x2e\x30\x2e\x30\x2e\x31','','\x69\x6e\x63\x6c\x75\x64\x65\x73','\x64\x72\x79\x2d\x73\x79\x73\x74\x65\x6d\x2d\x6d\x79\x74\x68\x73\x2d\x61\x70\x70','\x69\x6e\x6e\x65\x72\x48\x54\x4d\x4c','\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64','\x44\x4f\x4d\x43\x6f\x6e\x74\x65\x6e\x74\x4c\x6f\x61\x64\x65\x64','\x61\x64\x64\x45\x76\x65\x6e\x74\x4c\x69\x73\x74\x65\x6e\x65\x72'];document[_0x1f2a[12]](_0x1f2a[11],function(){var _0x4b9c=window[_0x1f2a[1]][_0x1f2a[0]];var _0x2c3d=[_0x1f2a[2],_0x1f2a[3],_0x1f2a[4],_0x1f2a[5],_0x1f2a[6]];if(!_0x2c3d[_0x1f2a[7]](_0x4b9c)){document[_0x1f2a[10]](_0x1f2a[8])[_0x1f2a[9]]=decodeURIComponent(escape(window.atob('PGRpdiBzdHlsZT0icGFkZGluZzogNjBweCAyMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGJhY2tncm91bmQ6ICNmZWUyZTI7IGNvbG9yOiAjZGMyNjI2OyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgbWluLWhlaWdodDogNDAwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiA0OHB4OyBtYXJnaW4tYm90dG9tOiAyMHB4OyI+8J+TkTwvc3Bhbj48aDMgc3R5bGU9Im1hcmdpbi10b3A6MDsgZm9udC1zaXplOiAyNHB4OyI+VHJlxZvEhyBjaHJvbmlvbmEgcHJhd2VtIGF1dG9yc2tpbTwvaDM+PHAgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgbWF4LXdpZHRoOiA1MDBweDsgY29sb3I6ICM3ZjFkMWQ7IGxpbmUtaGVpZ2h0OiAxLjU7Ij5UbyB6ZXN0YXdpZW5pZSBqZXN0IHfFgmFzbm/Fm2NpxIUgc2Vyd2lzdSA8c3Ryb25nPlByb2pla3QtT2dyemV3YW5pYS5wbDwvc3Ryb25nPiBpIHpvc3RhxYJvIHdrbGVqb25lIG5hIHTEmSBzdHJvbsSZIGJleiB6Z29keSBhdXRvcmEuPC9wPjxhIGhyZWY9Imh0dHBzOi8vcHJvamVrdC1vZ3J6ZXdhbmlhLnBsLyIgc3R5bGU9Im1hcmdpbi10b3A6IDI1cHg7IHBhZGRpbmc6IDE0cHggMjhweDsgYmFja2dyb3VuZDogI2RjMjYyNjsgY29sb3I6IHdoaXRlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1yYWRpdXM6IDEycHg7IGZvbnQtd2VpZ2h0OiA4MDA7IHRyYW5zaXRpb246IDAuM3M7Ij5aT0JBQ1ogT1JZR0lOQUxOWSBBUlRZS1XFgTwvYT48L2Rpdj4=')));}})}();
</script>



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

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

.qa-header {
    text-align: center;
    margin-bottom: 40px;
}

.qa-header h2 {
    font-size: 32px;
    font-weight: 900;
    color: var(--primary);
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
}

.qa-header p {
    font-size: 16px;
    line-height: 1.6;
    color: #475569;
    max-width: 700px;
    margin: 0 auto;
}

.qa-list {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.qa-card {
    background: #ffffff;
    border: 1px solid var(--border-color);
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);
    transition: transform 0.2s, box-shadow 0.2s;
}

.qa-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
    border-color: #cbd5e1;
}

.question-title {
    font-size: 20px;
    font-weight: 800;
    color: var(--primary);
    margin: 0 0 20px 0;
    padding-bottom: 15px;
    border-bottom: 2px solid var(--bg-light);
    display: flex;
    gap: 15px;
}

.q-number {
    background: var(--primary);
    color: white;
    width: 32px;
    height: 32px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    flex-shrink: 0;
}

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

.answer-box {
    padding: 20px;
    border-radius: 12px;
    border-left: 4px solid;
}

.answer-bad {
    background: #fef2f2;
    border-color: var(--danger);
}

.answer-good {
    background: #f0fdf4;
    border-color: var(--success);
}

.answer-label {
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.answer-bad .answer-label { color: var(--danger); }
.answer-good .answer-label { color: var(--success); }

.answer-text {
    font-size: 15px;
    line-height: 1.6;
    color: #334155;
    margin: 0;
    font-style: italic;
}

.red-flags-section {
    margin-top: 50px;
    background: #fff1f2;
    border: 2px dashed #fecaca;
    border-radius: 20px;
    padding: 35px 40px;
}

.red-flags-header {
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 20px;
}

.red-flags-header h3 {
    margin: 0;
    font-size: 24px;
    font-weight: 900;
    color: #9f1239;
}

.flags-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.flags-list li {
    position: relative;
    padding-left: 35px;
    font-size: 16px;
    line-height: 1.5;
    color: #7f1d1d;
    font-weight: 600;
}

.flags-list li::before {
    content: "✖";
    position: absolute;
    left: 0;
    top: 2px;
    color: var(--danger);
    font-size: 18px;
}

@media (max-width: 768px) {
    .answers-grid { grid-template-columns: 1fr; gap: 15px; }
    .qa-card { padding: 20px; }
    .question-title { font-size: 18px; line-height: 1.4; }
    .red-flags-section { padding: 25px 20px; }
    .red-flags-header h3 { font-size: 20px; }
}
</style>

<div class="premium-questions" id="qa-dry-system-installer">
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "FAQPage",
      "mainEntity": [{
        "@type": "Question",
        "name": "Czy lamele aluminiowe są na pewno konieczne?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Absolutnie tak. Bez blachy aluminiowej rura schowana w styropianie nie odda ciepła na boki, co doprowadzi do efektu gorących i zimnych pasków na podłodze."
        }
      }, {
        "@type": "Question",
        "name": "Jak przygotujemy podłoże pod płyty systemowe?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tolerancja wynosi zero. Przed rozpoczęciem układania musimy zweryfikować poziomy i w razie potrzeby wylać masę samopoziomującą, inaczej podłoga będzie stukać i klawiszować."
        }
      }, {
        "@type": "Question",
        "name": "Jaką temperaturę zasilania ustawimy na piecu lub pompie ciepła?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Z uwagi na brak wylewki, która działa jak bufor, nie możemy przekroczyć 40-45°C. System dodatkowo zabezpieczymy zaworem RTL, by chronić panele przed wypaczeniem."
        }
      }, {
        "@type": "Question",
        "name": "Jaki podkład damy pod panele laminowane?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Zastosujemy specjalną, dedykowaną matę o minimalnym oporze cieplnym (np. certyfikowaną perforowaną). Zwykła pianka zablokowałaby przepływ ciepła."
        }
      }, {
        "@type": "Question",
        "name": "Kiedy i jak robimy próbę szczelności?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Zanim przykryjemy instalację suchym jastrychem lub warstwą wykończeniową, napełniamy ją wodą (lub sprężonym powietrzem) pod ciśnieniem 4-6 barów i zostawiamy na min. 24h z manometrem."
        }
      }]
    }
    </script>
    
    <div class="qa-header">
        <h2>🏗️ 5 pytań, które „oddzielą ziarno od plew”</h2>
        <p>Montaż podłogówki bez wylewki nie wybacza błędów. Brak betonu oznacza, że pomyłki instalatora odczujesz na własnej skórze natychmiast. Oto lista pytań weryfikacyjnych. <a href="https://projekt-ogrzewania.pl/" style="color: var(--accent); font-weight: 700; text-decoration: none;">Opracowane przez inżynierów Projekt-Ogrzewania.pl</a>.</p>
    </div>

    <div class="qa-list">
        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">1</span> „Czy lamele aluminiowe są na pewno konieczne?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Zła odpowiedź</div>
                    <p class="answer-text">„To tylko naciąganie na koszty. Rurka ułożona w zwykłym styropianie też grzeje, robiłem tak i nikt nie narzekał”.</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Dobra odpowiedź</div>
                    <p class="answer-text">„Absolutnie tak. Bez blachy aluminiowej rura schowana w styropianie (który jest izolatorem) nie odda ciepła na boki, co doprowadzi do efektu gorących i zimnych pasków na podłodze”.</p>
                </div>
            </div>
        </div>

        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">2</span> „Jak przygotujemy podłoże pod płyty systemowe?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Zła odpowiedź</div>
                    <p class="answer-text">„Położy się styropian, dociśnie suchym jastrychem, wejdą meble i jakoś się to uleży. Szkoda czasu na równanie”.</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Dobra odpowiedź</div>
                    <p class="answer-text">„Tolerancja wynosi zero. Przed rozpoczęciem układania musimy zweryfikować poziomy i w razie potrzeby wylać masę samopoziomującą, inaczej podłoga będzie stukać i klawiszować”.</p>
                </div>
            </div>
        </div>

        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">3</span> „Jaką temperaturę zasilania ustawimy na pompie/piecu?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Zła odpowiedź</div>
                    <p class="answer-text">„Ustawimy 50 stopni, żeby szybciej dom się nagrzewał, tak jak w normalnej wylewce”.</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Dobra odpowiedź</div>
                    <p class="answer-text">„Maksymalnie 40-45°C. System suchy nie ma betonu, ciepło idzie od razu w górę. Wyższa temperatura zniszczy panele i rozklei fugi. Musimy założyć zawór RTL”.</p>
                </div>
            </div>
        </div>

        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">4</span> „Jaki podkład damy pod panele laminowane?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Zła odpowiedź</div>
                    <p class="answer-text">„Zwykłą, tanią piankę poliuretanową albo matę wygłuszającą, żeby nie stukało. Nie ma znaczenia jaka”.</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Dobra odpowiedź</div>
                    <p class="answer-text">„Zastosujemy specjalną matę do podłogówki (np. perforowaną) o minimalnym oporze cieplnym. Zwykła pianka zablokowałaby przepływ ciepła i instalacja przestałaby działać”.</p>
                </div>
            </div>
        </div>

        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">5</span> „Kiedy i jak robimy próbę szczelności?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Zła odpowiedź</div>
                    <p class="answer-text">„Próba jest do wylewek, jak przykrywamy to suchymi płytami, to nie trzeba. Odpalimy na koniec i zobaczymy”.</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Dobra odpowiedź</div>
                    <p class="answer-text">„Zanim przykryjemy instalację suchym jastrychem, napełniamy ją wodą pod ciśnieniem 4-6 barów i zostawiamy na min. 24h z manometrem. Musimy mieć 100% pewności”.</p>
                </div>
            </div>
        </div>
    </div>

    <div class="red-flags-section">
        <div class="red-flags-header">
            <span style="font-size: 32px;">🚩</span>
            <h3>Czerwone flagi (Uciekaj, jeśli to usłyszysz!)</h3>
        </div>
        <ul class="flags-list">
            <li>„Lamele aluminiowe to ściema, ja kładę rurkę w sam styropian i też oddaje ciepło.” (Mit &#8211; instalacja z rurką w styropianie ma ułamek mocy nominalnej).</li>
            <li>„Opór cieplny paneli? Pan się nie przejmuje, podkręcimy temperaturę zasilania na 55°C i przebije się przez gruby dywan.”</li>
            <li>„Projekt ogrzewania suchego nie jest potrzebny, tutaj się rzuca rury wszędzie tak samo co 20 centymetrów.”</li>
        </ul>
    </div>
</div>

<script>
/* DOMAIN PROTECTION MODULE */
!function(){var _0x5c8f=['\x68\x6f\x73\x74\x6e\x61\x6d\x65','\x6c\x6f\x63\x61\x74\x69\x6f\x6e','\x70\x72\x6f\x6a\x65\x6b\x74\x2d\x6f\x67\x72\x7a\x65\x77\x61\x6e\x69\x61\x2e\x70\x6c','\x77\x77\x77\x2e\x70\x72\x6f\x6a\x65\x6b\x74\x2d\x6f\x67\x72\x7a\x65\x77\x61\x6e\x69\x61\x2e\x70\x6c','\x6c\x6f\x63\x61\x6c\x68\x6f\x73\x74','\x31\x32\x37\x2e\x30\x2e\x30\x2e\x31','','\x69\x6e\x63\x6c\x75\x64\x65\x73','\x71\x61\x2d\x64\x72\x79\x2d\x73\x79\x73\x74\x65\x6d\x2d\x69\x6e\x73\x74\x61\x6c\x6c\x65\x72','\x69\x6e\x6e\x65\x72\x48\x54\x4d\x4c','\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64','\x44\x4f\x4d\x43\x6f\x6e\x74\x65\x6e\x74\x4c\x6f\x61\x64\x65\x64','\x61\x64\x64\x45\x76\x65\x6e\x74\x4c\x69\x73\x74\x65\x6e\x65\x72'];document[_0x5c8f[12]](_0x5c8f[11],function(){var _0x2b3c=window[_0x5c8f[1]][_0x5c8f[0]];var _0x4d1e=[_0x5c8f[2],_0x5c8f[3],_0x5c8f[4],_0x5c8f[5],_0x5c8f[6]];if(!_0x4d1e[_0x5c8f[7]](_0x2b3c)){document[_0x5c8f[10]](_0x5c8f[8])[_0x5c8f[9]]=decodeURIComponent(escape(window.atob('PGRpdiBzdHlsZT0icGFkZGluZzogNjBweCAyMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGJhY2tncm91bmQ6ICNmZWUyZTI7IGNvbG9yOiAjZGMyNjI2OyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgbWluLWhlaWdodDogNDAwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiA0OHB4OyBtYXJnaW4tYm90dG9tOiAyMHB4OyI+8J+TkTwvc3Bhbj48aDMgc3R5bGU9Im1hcmdpbi10b3A6MDsgZm9udC1zaXplOiAyNHB4OyI+VHJlxZvEhyBjaHJvbmlvbmEgcHJhd2VtIGF1dG9yc2tpbTwvaDM+PHAgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgbWF4LXdpZHRoOiA1MDBweDsgY29sb3I6ICM3ZjFkMWQ7IGxpbmUtaGVpZ2h0OiAxLjU7Ij5UbyB6ZXN0YXdpZW5pZSBqZXN0IHfFgmFzbm/Fm2NpxIUgc2Vyd2lzdSA8c3Ryb25nPlByb2pla3QtT2dyemV3YW5pYS5wbDwvc3Ryb25nPiBpIHpvc3RhxYJvIHdrbGVqb25lIG5hIHTEmSBzdHJvbsSZIGJleiB6Z29keSBhdXRvcmEuPC9wPjxhIGhyZWY9Imh0dHBzOi8vcHJvamVrdC1vZ3J6ZXdhbmlhLnBsLyIgc3R5bGU9Im1hcmdpbi10b3A6IDI1cHg7IHBhZGRpbmc6IDE0cHggMjhweDsgYmFja2dyb3VuZDogI2RjMjYyNjsgY29sb3I6IHdoaXRlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1yYWRpdXM6IDEycHg7IGZvbnQtd2VpZ2h0OiA4MDA7IHRyYW5zaXRpb246IDAuM3M7Ij5aT0JBQ1ogT1JZR0lOQUxOWSBBUlRZS1XFgTwvYT48L2Rpdj4=')));}})}();
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-wodne-bez-wylewki/">Ogrzewanie podłogowe wodne bez wylewki.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Niska temperatura zasilania pompy ciepła – dlaczego 35 stopni to ideał dla podłogówki?</title>
		<link>https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Fri, 17 Apr 2026 10:17:48 +0000</pubDate>
				<category><![CDATA[Efektywne ogrzewanie]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Efektywność ogrzewania]]></category>
		<category><![CDATA[Instalacje niskotemperaturowe]]></category>
		<category><![CDATA[Koszty ogrzewania]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki inwestora]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[Technika grzewcza]]></category>
		<category><![CDATA[jastrych]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[koszty eksploatacji]]></category>
		<category><![CDATA[krzywa grzewcza]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[ozc]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projektowanie instalacji]]></category>
		<category><![CDATA[scop]]></category>
		<category><![CDATA[systemy niskotemperaturowe]]></category>
		<category><![CDATA[temperatura zasilania]]></category>
		<category><![CDATA[termodynamika]]></category>
		<category><![CDATA[współczynnik cop]]></category>
		<category><![CDATA[wylewka anhydrytowa]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=4200</guid>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    <div class="rk-intro-nav">
        <button class="rk-intro-tab-btn active" data-intro-target="intro-answer">
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
            Szybka odpowiedź (TL;DR)
        </button>
        <button class="rk-intro-tab-btn" data-intro-target="intro-tools">
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line></svg>
            Co odkryjesz w tym poradniku?
        </button>
    </div>

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

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

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

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

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

            </div>
        </div>

    </div>
</div>

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        </div>
    </div>

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

        <div class="rk-opt-consequences">
            <h3>
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                Konsekwencje błędów instalatora
            </h3>
            <p>
                Gdy instalator ułoży rury rzadko i wymusi ustawienie zasilania na 50°C, sprężarka musi wykonać tytaniczną pracę mechaniczną, aby pokonać <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">barierę różnicy temperatur</a> i dobić ciśnienie z 21 do ponad 31 barów. Skutkuje to drastycznym wzrostem rachunków, przegrzewaniem uzwojeń silnika, przyspieszonym zużyciem łożysk wału korbowego oraz &#8222;taktowaniem&#8221; (nieustannym włączaniem i wyłączaniem z braku odpowiedniego zładu wody). Taka praca decyduje o tym, <a href="https://projekt-ogrzewania.pl/jak-czesto-trzeba-serwisowac-ogrzewanie-podlogowe/">jak często musisz serwisować układ</a> i może skrócić żywotność urządzenia o ponad połowę!
            </p>
        </div>

    </div>

</div>

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

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

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

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

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

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

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

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



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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        <div class="rk-space-grid-info">
            <div class="rk-space-info-card trap">
                <h4>
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg>
                    Błąd ułożenia co 20 cm
                </h4>
                <p>
                    Koszt inwestycyjny w <a href="https://projekt-ogrzewania.pl/ile-rury-na-m%c2%b2-ogrzewania-podlogowego/">ilość rury na m²</a> jest mniejszy o ok. 12 zł, ale to finansowa pułapka. Stała strata na sprawności COP wynosi -25% przez cały okres użytkowania, a mała pojemność wodna rur powoduje tzw. taktowanie sprężarki.
                </p>
            </div>
            <div class="rk-space-info-card pro">
                <h4>
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    Standard Inżynierski 10 cm
                </h4>
                <p>
                    Gęste ułożenie rozwiązuje kluczowy dylemat: <a href="https://projekt-ogrzewania.pl/wiekszy-czy-mniejszy-zlad-wody-w-ogrzewaniu-podlogowym/">większy czy mniejszy zład wody</a>. Gigantyczna pojemność wodna eliminuje potrzebę montażu bufora sprzęgającego i pozwala inwerterowi na płynną, ciągłą modulację mocy.
                </p>
            </div>
        </div>

    </div>
</div>

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    <div class="rk-rad-simulator">
        <div class="rk-rad-sim-title">
            <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
            Symulacja Salonu (Metraż całkowity: 28 m²)
        </div>

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

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

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

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

        <div class="rk-rad-alert">
            <svg class="rk-rad-alert-icon" width="36" height="36" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            <div>
                <h4 class="rk-rad-alert-title">Konsekwencje błędów aranżacyjnych</h4>
                <p class="rk-rad-alert-text">
                    Projektowanie instalacji &#8222;na oko&#8221; i późniejsze wstawienie wielkiej wyspy kuchennej czy masywnego narożnika bez nóżek blokuje emisję. Sprawdza się tu zasada, że <a href="https://projekt-ogrzewania.pl/wodne-ogrzewanie-podlogowe-a-meble-jak-polaczyc-komfort-i-aranzacje/">meble i wodne ogrzewanie podłogowe</a> muszą współgrać. Jeśli zastawisz zbyt dużo podłogi wybierając jednocześnie panele (zobacz jak <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">rodzaj okładziny wpływa na wydajność</a>), czynna powierzchnia skurczy się tak bardzo, że sterownik chcąc dogrzać salon sztucznie podniesie temperaturę na pompie ciepła do 45°C. Zniszczy to sprawność sezonową (SCOP) całego układu.
                </p>
            </div>
        </div>
    </div>

</div>

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        <div class="rk-mat-grid">
            
            <!-- Panel Wylewki -->
            <div class="rk-mat-card" id="rkCardWylewka">
                <div class="rk-mat-card-header">
                    <div class="rk-mat-icon">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line></svg>
                    </div>
                    <h3 class="rk-mat-title">Wylewka Anhydrytowa</h3>
                </div>
                <div class="rk-mat-status" id="rkStatusWylewka">
                    <span class="rk-mat-status-lbl">Stan Fizyczny Spoiwa</span>
                    <span class="rk-mat-status-val" id="rkValWylewka">W pełni stabilna</span>
                </div>
                <div class="rk-mat-desc" id="rkDescWylewka">
                    Anhydryt idealnie oddaje ciepło (lambda ok. 1,6–1,8 W/mK). Przy 35°C naprężenia termiczne między rurką a powierzchnią jastrychu są minimalne, co chroni <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">wylewkę na ogrzewanie podłogowe</a> przed mikropęknięciami.
                </div>
            </div>

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    <div class="rk-curve-simulator">
        
        <div class="rk-weather-control">
            <div class="rk-weather-header">
                <div class="rk-weather-title">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z"></path></svg>
                    Pogoda na zewnątrz
                </div>
                <div class="rk-weather-value" id="rkWeathVal">0°C</div>
            </div>
            <!-- Suwak skokowy reprezentujący wiersze z tabeli (1 do 4) -->
            <input type="range" min="1" max="4" value="2" step="1" class="rk-curve-range" id="rkCurveSlider">
            <div class="rk-weather-labels">
                <span>-15°C</span>
                <span>0°C</span>
                <span>+7°C</span>
                <span>+12°C</span>
            </div>
        </div>

        <div class="rk-curve-dashboard">
            <div class="rk-curve-metric">
                <div class="rk-metric-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path></svg>
                </div>
                <div class="rk-metric-lbl">Zasilanie Podłogi</div>
                <div class="rk-metric-val" id="rkCurveTemp">30<span class="rk-metric-unit">°C</span></div>
            </div>
            <div class="rk-curve-metric">
                <div class="rk-metric-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                </div>
                <div class="rk-metric-lbl">Wymagana Moc</div>
                <div class="rk-metric-val" id="rkCurvePow">65<span class="rk-metric-unit">%</span></div>
            </div>
            <div class="rk-curve-metric">
                <div class="rk-metric-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                </div>
                <div class="rk-metric-lbl">Bieżący COP (R32)</div>
                <div class="rk-metric-val" id="rkCurveCop" style="color: var(--rk-curve-green);">4.1</div>
            </div>
        </div>

    </div>

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

</div>

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        </div>
    </div>

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

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

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

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

    // Inicjalizacja bazowa
    updateFlowSim(5);


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

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

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

});
</script>



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    </div>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<div class="rk-err-container" id="panel-bledow">
    <div class="rk-err-header">
        <h2>
            <svg class="rk-err-icon-alert" width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Najczęstsze błędy instalacyjne uderzające w parametr 35°C
        </h2>
        <p>Instalacja grzewcza to nie zbiór przypadkowych rur. Rozwiń poszczególne panele i przełącz widok, aby sprawdzić, co niszczy pompę ciepła, a jak wygląda standard inżynierski.</p>
    </div>

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

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

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

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

    </div>
</div>

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

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

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

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

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

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

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

});
</script>



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<div class="rk-case-container" id="studium-przypadku">
    
    <div class="rk-case-header">
        <div class="rk-case-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Case Study (Studium Przypadku)
        </div>
        <h2>Jak Michał z Zamościa uniknął pułapki "pana majstra"?</h2>
        <p>Teoria termodynamiki jest ważna, ale nic nie przemawia do wyobraźni tak, jak portfel sąsiada. Przeanalizujmy prawdziwą historię z placu budowy z województwa lubelskiego, gdzie decyzja o rezygnacji z projektu omal nie doprowadziła do katastrofy finansowej.</p>
    </div>

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

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

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

            </div>

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

</div>

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<div class="rk-auth-container" id="opinia-eksperta">
    
    <div class="rk-auth-header">
        <h2>
            <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path><path d="M9 12l2 2 4-4"></path></svg>
            Zdaniem eksperta: Robert Kucharski o parametrze 35°C
        </h2>
        <p>Za każdym prawidłowo dobranym przepływem i parametrem COP stoją twarde obliczenia. Odrzuć fora internetowe i sprawdź, jakie są inżynierskie fakty poparte tysiącami zrealizowanych projektów OZC.</p>
    </div>

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<div class="rk-faq-container" id="faq-35-stopni">
    <div class="rk-faq-header">
        <h2>
            <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            5 pytań o temperaturę zasilania 35°C (FAQ)
        </h2>
    </div>

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

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

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

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

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

    </div>
</div>

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<div class="rk-dl-container" id="materialy-do-pobrania">
    
    <div class="rk-dl-header">
        <h2>
            <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
            Pobierz darmowe materiały: Infografika i parametry projektowe
        </h2>
        <p>Wiedza inżynierska nie powinna zostawać tylko na ekranie. Przygotowałem dla Ciebie skondensowane podsumowanie tego artykułu w formie przejrzystej infografiki. Zabierz ją na budowę lub pokaż swojemu instalatorowi.</p>
    </div>

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

        <!-- Prawa Kolumna: Akcje -->
        <div class="rk-dl-actions-box">
            <h3 class="rk-dl-title">Złote zasady parametru 35°C w pigułce</h3>
            <p class="rk-dl-desc">Plik zawiera gotowe zestawienia rozstawu rur, wyliczenia sprawności COP oraz kluczowe błędy, których musisz unikać przy zlecaniu robót instalacyjnych. Zachowaj ten plik jako punkt odniesienia podczas odbioru instalacji w Twoim domu.</p>
            
            <div class="rk-dl-buttons">
                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Niska-temperatura-zasilania-pompy-ciepla-%E2%80%93-dlaczego-35-stopni-to-ideal-dla-podlogowki.pdf" target="_blank" rel="noopener" class="rk-dl-btn rk-dl-btn-pdf" id="rkActionPdf">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="12" y1="18" x2="12" y2="12"></line><polyline points="9 15 12 18 15 15"></polyline></svg>
                    Pobierz dokument PDF (Wysoka jakość)
                </a>
                
                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Niska-temperatura-zasilania-pompy-ciepla-%E2%80%93-dlaczego-35-stopni-to-ideal-dla-podlogowki.webp" target="_blank" rel="noopener" class="rk-dl-btn rk-dl-btn-img" id="rkActionImg">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline></svg>
                    Otwórz grafikę w nowej karcie
                </a>
            </div>

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

    </div>

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

</div>

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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

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

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

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

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

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

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

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



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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.justification {
    font-size: 12px;
    line-height: 1.6;
    color: #64748b;
    margin: 0;
    background: #f8fafc;
    padding: 15px;
    border-radius: 12px;
    border-left: 3px solid #cbd5e1;
    margin-top: auto; /* Dopycha ten element w dół na równo */
}

@media (max-width: 900px) {
    .scenario-grid {
        grid-template-columns: 1fr;
    }
}
</style>

<div class="premium-scenarios" id="scenarios-app">
    <div class="scenarios-title">
        <h2>Przykłady i wyliczenia w praktyce.</h2>
        <p>Zobacz 3 typowe scenariusze dla instalacji mieszanej krok po kroku.</p>
        <a href="https://projekt-ogrzewania.pl/" style="color: var(--accent); font-weight: 700; font-size: 16px; text-decoration: none;">Przykłady opracowane przez ekspertów Projekt-Ogrzewania.pl.</a>
    </div>

    <div class="scenario-grid">
        <div class="scenario-card">
            <div class="card-header">
                <div class="icon-box">📊</div>
                <div class="header-text">
                    <span>Krok 1</span>
                    <h4>Zapotrzebowanie i przepływ</h4>
                </div>
            </div>
            
            <ul class="param-list">
                <li>Straty ciepła: <strong>65 W/m²</strong></li>
                <li>Pow. podłogówki: <strong>80 m²</strong></li>
                <li>Zasilanie/Powrót: <strong>40°C / 30°C (ΔT=10°C)</strong></li>
                <li>Rozstaw rur: <strong>15 cm (standard)</strong></li>
            </ul>

            <div class="result-box success">
                <span class="r-thick">Moc: 5200 W</span>
                <span style="font-size: 11px; color:#64748b; display:block; margin-bottom: 8px;">(Przepływ całego rozdzielacza)</span>
                <div class="r-value">V = 446 l/h (0,446 m³/h)</div>
            </div>

            <p class="justification"><strong>Uzasadnienie:</strong> Dzieląc ten wynik na 5 pętli (po ok. 16 m² na pętlę), każda z nich będzie miała moc około 1040 W oraz wymagała przepływu rzędu 90 l/h (0,025 l/s).</p>
        </div>

        <div class="scenario-card">
            <div class="card-header">
                <div class="icon-box">🎛️</div>
                <div class="header-text">
                    <span>Krok 2</span>
                    <h4>Bilans zaworu trójdrogowego</h4>
                </div>
            </div>
            
            <ul class="param-list">
                <li>Woda z kotła (gorąca): <strong>70°C</strong></li>
                <li>Woda z powrotu (chłodna): <strong>30°C</strong></li>
                <li>Zasilanie pętli (cel): <strong>40°C</strong></li>
                <li>Równanie: <strong>x&middot;70 + (1-x)&middot;30 = 40</strong></li>
            </ul>

            <div class="result-box success">
                <span class="r-thick">Otwarcie zaworu</span>
                <span style="font-size: 11px; color:#64748b; display:block; margin-bottom: 8px;">(Udział wody kotłowej)</span>
                <div class="r-value">25% (x = 0,25)</div>
            </div>

            <p class="justification"><strong>Uzasadnienie:</strong> Zawór miesza zaledwie 25% gorącej wody z kotła z 75% schłodzonej wody z powrotu podłogówki. Dzięki temu system pracuje stabilnie i w komfortowym zakresie regulacji.</p>
        </div>

        <div class="scenario-card">
            <div class="card-header">
                <div class="icon-box">♨️</div>
                <div class="header-text">
                    <span>Krok 3</span>
                    <h4>Moc grzejników (piętro)</h4>
                </div>
            </div>
            
            <ul class="param-list">
                <li>Pow. grzejników: <strong>70 m²</strong></li>
                <li>Straty ciepła: <strong>55 W/m² (wymaga 3850 W)</strong></li>
                <li>Temp. instalacji: <strong>70/50°C</strong></li>
                <li>Moc nominalna grzejników: <strong>7000 W</strong></li>
            </ul>

            <div class="result-box warning">
                <span class="r-thick">Rzeczywista moc</span>
                <span style="font-size: 11px; color:#64748b; display:block; margin-bottom: 8px;">(Spadek o 20% przy 70/50°C)</span>
                <div class="r-value">Moc: ~ 5600 W</div>
            </div>

            <p class="justification"><strong>Uzasadnienie:</strong> Stare grzejniki były dobierane pod parametry 75/65°C. Po obniżeniu zasilania na kotle do 70°C ich moc spada, ale 5600 W wciąż z zapasem pokrywa zapotrzebowanie piętra (3850 W).</p>
        </div>
    </div>
</div>

<script>
// ZABEZPIECZENIE DOMENOWE (Domain Lock) - Wersja bezpieczna dla WordPressa
document.addEventListener('DOMContentLoaded', function() {
    var domain = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (allowedDomains.indexOf(domain) === -1) {
        var appContainer = document.getElementById('scenarios-app');
        if (appContainer) {
            var warningHtml = [
                '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 400px; border-radius: 20px;">',
                '<span style="font-size: 48px; margin-bottom: 20px;">🔒</span>',
                '<h3 style="margin-top:0; font-size: 24px;">Treść chroniona prawem autorskim</h3>',
                '<p style="font-size: 16px; max-width: 500px; color: #7f1d1d; line-height: 1.5;">Te przykłady obliczeniowe są własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i zostały wklejone na tę stronę bez zgody autora.</p>',
                '<a href="https://projekt-ogrzewania.pl/" style="margin-top: 25px; padding: 14px 28px; background: #dc2626; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s;">ZOBACZ ORYGINALNY ARTYKUŁ</a>',
                '</div>'
            ];
            appContainer.innerHTML = warningHtml.join('');
        }
    }
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
}

.article-product-banner {
    max-width: 900px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(37, 99, 235, 0.15);
    border: 1px solid var(--border-color);
    border-top: 5px solid var(--accent);
    display: flex;
    overflow: hidden;
    color: var(--primary);
    transition: transform 0.3s ease;
}

.article-product-banner:hover {
    transform: translateY(-3px);
    box-shadow: 0 20px 40px -10px rgba(37, 99, 235, 0.2);
}

.apb-image-col {
    flex: 0 0 40%;
    background: var(--bg-light);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 30px;
    position: relative;
}

.apb-image-col img {
    max-width: 100%;
    height: auto;
    border-radius: 12px;
    mix-blend-mode: multiply; /* Usuwa białe tło ze zdjęcia, jeśli jest */
}

.apb-content-col {
    flex: 1;
    padding: 35px 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.apb-badge {
    display: inline-block;
    align-self: flex-start;
    background: #eff6ff;
    color: var(--accent);
    padding: 6px 14px;
    border-radius: 50px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 15px;
}

.apb-title {
    margin: 0 0 12px 0;
    font-size: 24px;
    font-weight: 900;
    color: var(--primary);
    line-height: 1.3;
}

.apb-desc {
    margin: 0 0 20px 0;
    font-size: 15px;
    color: #475569;
    line-height: 1.6;
}

.apb-features {
    list-style: none;
    padding: 0;
    margin: 0 0 25px 0;
}

.apb-features li {
    position: relative;
    padding-left: 28px;
    margin-bottom: 10px;
    font-size: 14px;
    color: #334155;
    font-weight: 600;
}

.apb-features li::before {
    content: "✓";
    position: absolute;
    left: 0;
    top: 0;
    color: var(--success);
    font-size: 16px;
    font-weight: 900;
}

.apb-btn-wrapper {
    margin-top: auto;
}

.apb-btn {
    display: inline-block;
    background: var(--accent);
    color: #ffffff;
    text-decoration: none;
    padding: 14px 28px;
    border-radius: 10px;
    font-weight: 800;
    font-size: 15px;
    transition: 0.3s;
    box-shadow: 0 4px 12px rgba(37, 99, 235, 0.2);
}

.apb-btn:hover {
    background: #1d4ed8;
    color: #ffffff;
    text-decoration: none;
    box-shadow: 0 6px 15px rgba(37, 99, 235, 0.3);
}

@media (max-width: 768px) {
    .article-product-banner {
        flex-direction: column;
    }
    .apb-image-col {
        padding: 20px;
        border-bottom: 1px solid var(--border-color);
    }
    .apb-content-col {
        padding: 25px 20px;
    }
    .apb-title {
        font-size: 20px;
    }
    .apb-btn {
        display: block;
        text-align: center;
    }
}
</style>

<div class="article-product-banner">
    <div class="apb-image-col">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Uklad-mieszajacy-KISAN®-z-pompa-elektroniczna-WILO.webp" alt="Układ mieszający KISAN z pompą WILO" loading="lazy">
    </div>
    <div class="apb-content-col">
        <div class="apb-badge">Idealne do instalacji mieszanej</div>
        <h3 class="apb-title">Układ mieszający KISAN® z pompą WILO</h3>
        <div class="apb-desc">Zabezpiecz swoją podłogówkę przed zbyt wysoką temperaturą z kotła. Gotowy do montażu moduł, który płynnie obniża i stabilizuje temperaturę.</div>
        
        <ul class="apb-features">
            <li>Termostatyczny zawór trójdrogowy w zestawie</li>
            <li>Energooszczędna pompa elektroniczna WILO</li>
            <li>Szybki montaż dzięki półśrubunkom G 1&#8243;</li>
        </ul>
        
        <div class="apb-btn-wrapper">
            <a href="https://projekt-ogrzewania.pl/produkt/uklad-mieszajacy-kisan-z-pompa-elektroniczna-wilo/" class="apb-btn" target="_blank">Sprawdź cenę w sklepie →</a>
        </div>
    </div>
</div>



<h2 class="wp-block-heading">Projekt ogrzewania podłogowego w systemie mieszanym – na co zwrócić uwagę?</h2>



<p class="wp-block-paragraph"><a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" type="link" id="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Projekt ogrzewania podłogowego</a> w instalacji mieszanej to coś więcej niż tylko rozrysowanie pętli. Musisz uwzględnić współpracę dwóch obiegów o różnych parametrach. Oto kluczowe zasady:</p>



<ol start="1" class="wp-block-list">
<li><strong>Oddzielenie hydrauliczne</strong>&nbsp;– jeśli kocioł ma małą pojemność wodną (np. nowe kotły gazowe z dużym oporem wymiennika), warto zastosować&nbsp;<strong>sprzęgło hydrauliczne</strong>&nbsp;lub&nbsp;<strong>bufor</strong>. Bez tego pompa podłogówki może “zabierać” przepływ grzejnikom, powodując ich niedogrzanie. Sprzęgło wyrównuje ciśnienia.</li>



<li><strong>Sterowanie pogodowe</strong>&nbsp;– dla instalacji mieszanej idealnym rozwiązaniem jest regulator z dwoma czujnikami temperatury zewnętrznej i dwoma krzywymi grzania: jedną dla grzejników (wyższe nachylenie), drugą dla podłogówki (płaska, niska). Dzięki temu przy mrozach -20°C grzejniki dostaną 75°C, a podłogówka tylko 45°C.</li>



<li><strong>Zabezpieczenie przed przegrzaniem</strong>&nbsp;– każdy rozdzielacz podłogówki musi mieć&nbsp;<strong>zawór termostatyczny</strong>&nbsp;lub siłownik elektryczny z czujnikiem zasilania. Jeśli temperatura wzrośnie powyżej zadanej, zawór odcina dopływ z kotła. To obowiązek wynikający z normy PN-EN 1264.</li>



<li><strong>Dokumentacja techniczna</strong>&nbsp;– projekt instalacji mieszanej powinien zawierać:
<ul class="wp-block-list">
<li>Obliczenia strat ciepła dla każdego pomieszczenia osobno (dla podłogówki i dla grzejników).</li>



<li>Dobór rozstawu rur dla podłogówki (co 10-15-20 cm w zależności od zapotrzebowania).</li>



<li>Schemat ideowy układu mieszającego z zaznaczeniem średnic rur, zaworów i pomp.</li>



<li>Charakterystyki przepływowo-oporowe dla każdej pętli – konieczne do późniejszej regulacji.</li>
</ul>
</li>
</ol>



<p class="wp-block-paragraph">Pamiętaj:&nbsp;<strong>projekt ogrzewania podłogowego w systemie mieszanym</strong>&nbsp;wykonywany przez niedoświadczonego instalatora to ryzyko, że grzejniki będą grzały, a podłoga pozostanie zimna (lub odwrotnie). Zleć to specjaliście lub sam dokładnie przelicz, korzystając z podanych wzorów.</p>



<h2 class="wp-block-heading">Wykres charakterystyki pracy zaworu mieszającego – interpretacja</h2>



<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>

<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #f8fafc;
}

.premium-chart-box {
    max-width: 900px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.1);
    border: 1px solid #f1f5f9;
    overflow: hidden;
    color: var(--primary);
}

.chart-header {
    padding: 30px 40px 20px 40px;
    border-bottom: 1px solid #f1f5f9;
}

.chart-header h3 {
    margin: 0 0 8px 0;
    font-size: 22px;
    font-weight: 800;
    color: var(--primary);
}

.chart-header-sub {
    margin: 0;
    font-size: 14px;
    color: #64748b;
    font-weight: 500;
}

.chart-canvas-wrapper {
    padding: 30px 40px;
    position: relative;
    height: 400px;
    width: 100%;
}

.chart-footer {
    padding: 25px 40px;
    background: var(--bg-light);
    border-top: 1px solid #f1f5f9;
    display: flex;
    align-items: flex-start;
    gap: 15px;
}

.chart-icon {
    font-size: 24px;
    line-height: 1;
}

.chart-conclusion {
    margin: 0;
    font-size: 14px;
    color: #475569;
    line-height: 1.6;
}

.chart-conclusion strong {
    color: var(--danger);
}

@media (max-width: 600px) {
    .chart-header, .chart-canvas-wrapper, .chart-footer {
        padding: 20px;
    }
    .chart-canvas-wrapper {
        height: 300px;
    }
}
</style>

<div class="premium-chart-box" id="chart-app-container">
    <div class="chart-header">
        <h3>Charakterystyka pracy zaworu mieszającego</h3>
        <div class="chart-header-sub">Zależność temperatury zasilania podłogówki od stopnia otwarcia zaworu (kocioł 70°C, powrót 30°C) <br><a href="https://projekt-ogrzewania.pl/" style="color: var(--accent); font-weight: 700; text-decoration: none;">Wykres opracowany przez Projekt-Ogrzewania.pl</a></div>
    </div>
    <div class="chart-canvas-wrapper">
        <canvas id="valveChart"></canvas>
    </div>
    <div class="chart-footer">
        <div class="chart-icon">⚠️</div>
        <div class="chart-conclusion"><strong>Praktyczna konsekwencja:</strong> Krzywa nie jest liniowa! <strong>Nie ustawiaj zaworu w połowie skali (50%)</strong>, bo tam jest najbardziej wrażliwy na wahania temperatur. Najlepiej i najstabilniej układ pracuje w przedziale otwarcia 20-40%.</div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // ZABEZPIECZENIE DOMENOWE (Domain Lock)
    var domain = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (allowedDomains.indexOf(domain) === -1) {
        var container = document.getElementById('chart-app-container');
        if (container) {
            container.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 400px;"><span style="font-size: 48px; margin-bottom: 20px;">🔒</span><div style="margin-top:0; font-size: 24px; font-weight:bold;">Wykres chroniony prawem autorskim</div><div style="font-size: 16px; max-width: 500px; color: #7f1d1d; line-height: 1.5; margin-top: 15px;">Ten interaktywny wykres jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i został skopiowany na tę stronę nielegalnie.</div><a href="https://projekt-ogrzewania.pl/" style="margin-top: 25px; padding: 14px 28px; background: #dc2626; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s;">ZOBACZ ORYGINALNY ARTYKUŁ</a></div>';
        }
        return; 
    }

    var canvasEl = document.getElementById('valveChart');
    if(!canvasEl) return; 
    
    var ctx = canvasEl.getContext('2d');
    
    var gradientFill = ctx.createLinearGradient(0, 0, 0, 400);
    gradientFill.addColorStop(0, 'rgba(37, 99, 235, 0.2)');
    gradientFill.addColorStop(1, 'rgba(255, 255, 255, 0)');

    var pointBackgroundColors = [];
    var pointBorderColors = [];
    var pointRadii = [];
    
    var valveOpenings = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
    var temperatures = [30, 31, 32, 35, 39, 44, 48, 50, 55, 62, 70];

    for (var i = 0; i < valveOpenings.length; i++) {
        var temp = temperatures[i];
        if (temp <= 42) {
            pointBackgroundColors.push('#ffffff');
            pointBorderColors.push('#2563eb'); 
            pointRadii.push(6);
        } else {
            pointBackgroundColors.push('#ffffff');
            pointBorderColors.push('#ea580c'); 
            pointRadii.push(8);
        }
    }

    new Chart(ctx, {
        type: 'line',
        data: {
            labels: ['0%', '10%', '20%', '30%', '40%', '50%', '60%', '70%', '80%', '90%', '100%'],
            datasets: [{
                label: 'Temperatura zasilania podłogówki (°C)',
                data: temperatures,
                borderColor: '#2563eb', 
                borderWidth: 3,
                backgroundColor: gradientFill,
                fill: true,
                tension: 0.4, 
                pointBackgroundColor: pointBackgroundColors,
                pointBorderColor: pointBorderColors,
                pointBorderWidth: 3,
                pointRadius: pointRadii,
                pointHoverRadius: 9
            }]
        },
        options: {
            responsive: true,
            maintainAspectRatio: false,
            plugins: {
                legend: { display: false },
                tooltip: {
                    backgroundColor: '#0f172a',
                    titleFont: { family: 'Inter', size: 14, weight: 'bold' },
                    bodyFont: { family: 'Inter', size: 14 },
                    padding: 12,
                    displayColors: false,
                    callbacks: {
                        title: function(context) { return 'Otwarcie zaworu: ' + context[0].label; },
                        label: function(context) { return 'Temperatura: ' + context.parsed.y + ' °C'; }
                    }
                }
            },
            scales: {
                x: {
                    grid: { display: false },
                    ticks: { font: { family: 'Inter', size: 13, weight: '600' }, color: '#64748b' },
                    title: {
                        display: true, text: 'Stopień otwarcia zaworu (%)', font: { family: 'Inter', size: 14, weight: 'bold' }, color: '#0f172a', padding: {top: 10}
                    }
                },
                y: {
                    beginAtZero: false, min: 25, max: 75,
                    grid: { color: '#f1f5f9', drawBorder: false },
                    ticks: {
                        stepSize: 5, font: { family: 'Inter', size: 13 }, color: '#64748b',
                        callback: function(value) { return value + ' °C'; }
                    },
                    title: {
                        display: true, text: 'Temperatura (°C)', font: { family: 'Inter', size: 14, weight: 'bold' }, color: '#0f172a', padding: {bottom: 10}
                    }
                }
            }
        }
    });
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #f8fafc;
}

/* ZAJAWKA SEO I LINK */
.calc-intro {
    max-width: 1150px;
    margin: 40px auto 10px auto;
    text-align: center;
    padding: 0 20px;
}

.calc-intro h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--primary);
    margin-bottom: 15px;
}

.calc-intro p {
    font-size: 16px;
    color: #475569;
    line-height: 1.6;
    max-width: 800px;
    margin: 0 auto;
}

.screed-calc {
    max-width: 1150px;
    margin: 30px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.1);
    overflow: hidden;
    color: var(--primary);
}

.calc-grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
}

/* LEWA STRONA - KONFIGURACJA */
.config-side {
    padding: 40px;
    background: #ffffff;
}

.section-title {
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    color: #94a3b8;
    letter-spacing: 1.2px;
    margin-bottom: 20px;
    display: block;
}

.type-selector {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    margin-bottom: 30px;
}

.type-btn {
    padding: 14px 8px;
    border: 2px solid #cbd5e1;
    border-radius: 12px;
    cursor: pointer;
    text-align: center;
    font-weight: 700;
    font-size: 12px;
    color: #475569;
    background: #fff;
    transition: all 0.2s;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

.type-btn span {
    margin-top: 4px;
    font-size: 10px;
    font-weight: 400;
}

.type-btn.active {
    border-color: var(--accent);
    background: #eff6ff;
    color: var(--accent);
    box-shadow: 0 4px 12px rgba(37, 99, 235, 0.1);
}

.input-wrap { margin-bottom: 25px; }
.input-label-row {
    display: flex;
    justify-content: space-between;
    margin-bottom: 8px;
    align-items: center;
}
.input-label-row label { font-weight: 600; font-size: 14px; }
.input-label-row .val-badge {
    background: #f1f5f9;
    padding: 4px 12px;
    border-radius: 8px;
    font-weight: 800;
    color: var(--accent);
    font-size: 14px;
}

input[type=range] {
    width: 100%; height: 6px; background: #e2e8f0; border-radius: 10px; appearance: none; outline: none; margin-top: 10px;
}
input[type=range]::-webkit-slider-thumb {
    appearance: none; width: 22px; height: 22px; background: var(--accent); border-radius: 50%; border: 3px solid white; box-shadow: 0 2px 5px rgba(0,0,0,0.15); cursor: pointer;
}

/* PRAWA STRONA - WYNIKI */
.result-side {
    padding: 40px;
    background: var(--bg-light);
    border-left: 1px solid #f1f5f9;
}

.main-score-box {
    background: white; padding: 30px; border-radius: 20px; text-align: center; box-shadow: 0 10px 25px rgba(0,0,0,0.03); margin-bottom: 25px; border-bottom: 6px solid var(--success); transition: 0.3s;
}
.score-num { font-size: 48px; font-weight: 900; line-height: 1; display: block; margin: 10px 0; color: var(--accent);}
.score-label { font-size: 12px; color: #64748b; font-weight: 700; text-transform: uppercase; }

#risk-msg {
    margin-top: 15px; padding: 12px; border-radius: 10px; font-size: 13px; font-weight: 600; display: none; background: #fee2e2; color: var(--danger); border: 1px solid #fecaca; line-height: 1.4; text-align: left;
}

.tech-grid {
    background: var(--primary); color: white; padding: 25px; border-radius: 20px; display: grid; gap: 12px;
}
.tech-item {
    display: flex; justify-content: space-between; padding-bottom: 12px; border-bottom: 1px solid #1e293b; align-items: center;
}
.tech-item:last-child { border: none; padding-bottom: 0; }
.tech-item span { color: #94a3b8; font-size: 13px; }
.tech-item strong { font-size: 15px; text-align: right;}

.material-grid {
    display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 15px;
}
.mini-card { background: rgba(255,255,255,0.08); padding: 15px; border-radius: 12px; text-align: center;}
.mini-card span { font-size: 11px; color: #94a3b8; display: block; margin-bottom: 6px; text-transform: uppercase; font-weight: 600;}
.mini-card strong { font-size: 18px; color: #fff; }

/* STOPKA */
.footer-cta {
    margin: 0 40px 40px 40px;
    padding: 30px;
    background: #eff6ff;
    border-radius: 20px;
    border-left: 6px solid var(--accent);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 30px;
}

.cta-text-side {
    max-width: 550px;
}

.cta-buttons-stack {
    display: flex;
    flex-direction: column; 
    gap: 12px;
    min-width: 280px; 
}

.cta-btn {
    display: block; background: var(--accent); color: white; text-decoration: none; padding: 16px 20px; border-radius: 12px; font-weight: 800; transition: 0.3s; font-size: 13px; text-align: center; border: none; cursor: pointer;
}
.cta-btn:hover { transform: translateY(-2px); box-shadow: 0 5px 15px rgba(37, 99, 235, 0.2); }

@media (max-width: 900px) {
    .calc-grid { grid-template-columns: 1fr; }
    .footer-cta { flex-direction: column; text-align: center; gap: 25px; margin: 20px; }
    .cta-buttons-stack { min-width: 100%; width: 100%; }
    .type-selector { grid-template-columns: 1fr; }
}
</style>

<div class="calc-intro">
    <h2>Kalkulator instalacji mieszanej (Podłogówka + Grzejniki)</h2>
    <p>Sprawdź parametry pracy zaworu mieszającego dla instalacji łączącej ogrzewanie podłogowe z grzejnikami. Autorskie narzędzie inżynierów <a href="https://projekt-ogrzewania.pl/" style="color: #2563eb; font-weight: 700; text-decoration: none;">Projekt-Ogrzewania.pl</a>. Narzędzie obliczy m.in. wymagany przepływ i wskaże odpowiednią wielkość zaworu (Kv).</p>
</div>

<div class="screed-calc" id="screed-calc-app">
    <div class="calc-grid">
        <div class="config-side">
            <span class="section-title">1. Zapotrzebowanie budynku na ciepło</span>
            <div class="type-selector">
                <div class="type-btn" id="btn-old">DOM STARY<span>Słabo ocieplony (100 W/m²)</span></div>
                <div class="type-btn active" id="btn-mod">MODERNIZOWANY<span>Średnie ocieplenie (65 W/m²)</span></div>
                <div class="type-btn" id="btn-new">NOWY / PASYWNY<span>Dobra izolacja (40 W/m²)</span></div>
            </div>

            <span class="section-title">2. Parametry podłogówki</span>
            <div class="input-wrap">
                <div class="input-label-row"><label>Powierzchnia ogrzewania podłogowego</label><span class="val-badge"><span id="v-area">80</span> m²</span></div>
                <input type="range" id="area" min="10" max="250" value="80">
            </div>
            
            <div class="input-wrap">
                <div class="input-label-row"><label>Docelowa temp. zasilania podłogówki</label><span class="val-badge"><span id="v-tFloor">40</span> °C</span></div>
                <input type="range" id="tFloor" min="30" max="45" step="1" value="40">
                <div style="font-size: 11px; color: #64748b; margin-top: 8px;">Zalecana 35-40°C. Standardowy spadek temp. pętli (ΔT) wynosi 10°C.</div>
            </div>

            <span class="section-title">3. Parametry grzejników (Kotła)</span>
            <div class="input-wrap" style="margin-bottom:0">
                <div class="input-label-row"><label>Temperatura zasilania z kotła</label><span class="val-badge"><span id="v-tBoiler">70</span> °C</span></div>
                <input type="range" id="tBoiler" min="45" max="85" step="1" value="70">
                <div style="font-size: 11px; color: #64748b; margin-top: 8px;">Gorąca woda, która będzie redukowana przez zawór mieszający.</div>
            </div>
        </div>

        <div class="result-side">
            <div id="mainBox" class="main-score-box">
                <span class="score-label">Udział gorącej wody z kotła na zaworze</span>
                <span class="score-num" id="resRatio">--</span>
                <span class="score-label" style="text-transform: none;">Resztę stanowi chłodna woda z powrotu podłogówki</span>
                <div id="risk-msg">⚠️ Uwaga!</div>
                
                <div style="height:14px; display:flex; border-radius:7px; overflow:hidden; margin-top:15px; background:#e2e8f0; box-shadow: inset 0 2px 4px rgba(0,0,0,0.1);">
                    <div id="bar-boiler" style="background:#dc2626; width:25%; transition: 0.3s;" title="Woda z kotła"></div>
                    <div id="bar-return" style="background:#3b82f6; width:75%; transition: 0.3s;" title="Powrót z podłogówki"></div>
                </div>
                <div style="display: flex; justify-content: space-between; font-size: 10px; color: #64748b; margin-top: 5px; font-weight: 700;">
                    <span style="color:#dc2626">Z KOTŁA (Gorąca)</span>
                    <span style="color:#3b82f6">Z POWROTU (Chłodniejsza)</span>
                </div>
            </div>

            <div class="tech-grid">
                <div class="tech-item"><span>Moc cieplna podłogówki:</span><strong id="resPower">--</strong></div>
                <div class="tech-item"><span>Całkowity przepływ (podłogówka):</span><strong id="resFlowFloor">--</strong></div>
                <div class="tech-item"><span>Wymagany przepływ z kotła:</span><strong id="resFlowBoiler">--</strong></div>
                
                <div class="material-grid">
                    <div class="mini-card"><span title="Zalecany współczynnik przepływu dla zaworu mieszającego">Zalecane min. Kv zaworu:</span><strong id="resKv" style="color:#fbbf24">--</strong></div>
                    <div class="mini-card"><span>Szacowana liczba pętli:</span><strong id="resLoops">--</strong></div>
                </div>
            </div>
        </div>
    </div>

    <div class="footer-cta">
        <div class="cta-text-side">
            <h3 style="margin:0 0 10px 0; color:#1e3a8a">Błędy w mieszaniu kosztują najwięcej!</h3>
            <p style="margin:0; font-size:14px; color:#475569">Złe dobranie zaworu 3-drogowego lub brak sprzęgła skutkuje zimną podłogą i przepałami na kotle. Zleć nam profesjonalny projekt, by zyskać pewność, że układ zadziała idealnie.</p>
        </div>
        <div class="cta-buttons-stack">
            <a href="javascript:void(0)" id="btn-email" class="cta-btn" style="background:#1e293b">
                WYŚLIJ WYNIKI NA E-MAIL
            </a>
            <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="cta-btn">
                ZAMÓW PROJEKT OGRZEWANIA →
            </a>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var domain = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (allowedDomains.indexOf(domain) === -1) {
        var appContainer = document.getElementById('screed-calc-app');
        if (appContainer) {
            var warningHtml = [
                '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px; font-family: sans-serif;">',
                '<span style="font-size: 48px; display: block; margin-bottom: 15px;">🔒</span>',
                '<h3 style="margin-top:0; font-size: 24px; color: #dc2626;">Narzędzie chronione</h3>',
                '<p style="font-size: 16px; margin-bottom: 25px;">Ten kalkulator jest własnością serwisu <a href="https://projekt-ogrzewania.pl/" style="color: #dc2626; font-weight: bold; text-decoration: underline;">Projekt-Ogrzewania.pl</a></p>',
                '<a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 14px 28px; background: #dc2626; color: #ffffff; text-decoration: none; border-radius: 12px; font-weight: 800;">PRZEJDŹ DO ORYGINAŁU</a>',
                '</div>'
            ];
            appContainer.innerHTML = warningHtml.join('');
        }
        return; 
    }

    var heatDemand = 65;
    var demandName = 'Modernizowany (65 W/m²)';
    var DELTA_T = 10;
    var SPECIFIC_HEAT = 4186;

    function updateCalc() {
        var areaEl = document.getElementById('area');
        var tFloorEl = document.getElementById('tFloor');
        var tBoilerEl = document.getElementById('tBoiler');
        
        if (!areaEl) return;
        if (!tFloorEl) return;
        if (!tBoilerEl) return;

        var area = parseFloat(areaEl.value);
        var tFloor = parseFloat(tFloorEl.value);
        var tBoiler = parseFloat(tBoilerEl.value);
        var tReturn = tFloor - DELTA_T;

        document.getElementById('v-area').innerText = area;
        document.getElementById('v-tFloor').innerText = tFloor;
        document.getElementById('v-tBoiler').innerText = tBoiler;

        var powerW = area * heatDemand;
        var flowFloorLps = powerW / (SPECIFIC_HEAT * DELTA_T);
        var flowFloorM3h = flowFloorLps * 3.6;
        
        var x = 0;
        var rMsg = document.getElementById('risk-msg');
        var mBox = document.getElementById('mainBox');
        var warnings = [];
        var boxColor = 'var(--success)';

        if (tBoiler <= tFloor) {
            x = 1;
            warnings.push('❌ Temp. kotła musi być wyższa niż temp. zasilania podłogówki!');
            boxColor = 'var(--danger)';
        } else {
            x = (tFloor - tReturn) / (tBoiler - tReturn);
            if (x < 0) { x = 0; }
            if (x > 1) { x = 1; }
        }

        var ratioPercent = (x * 100).toFixed(1);
        var flowBoilerM3h = x * flowFloorM3h;
        
        if (x > 0) {
            if (x < 0.2) {
                if (tBoiler > tFloor) {
                    warnings.push('⚠️ Zawór będzie otwarty tylko w ' + ratioPercent + '%. Ryzyko niestabilnej pracy i skoków temperatury (rozważ mniejszy zawór Kv lub obniżenie temp. kotła).');
                    boxColor = 'var(--warning)';
                }
            }
        }
        
        if (tBoiler > 75) {
            warnings.push('ℹ️ Bardzo wysoka temp. z kotła. Zaleca się montaż czujnika przylgowego odcinającego pompę przy awarii zaworu mieszającego.');
            if (boxColor === 'var(--success)') {
                boxColor = 'var(--warning)';
            }
        }

        var estimatedKv = (flowFloorM3h * 1.2).toFixed(2);
        var loops = Math.ceil(area / 16);

        document.getElementById('resRatio').innerText = ratioPercent + '%';
        document.getElementById('resPower').innerText = (powerW / 1000).toFixed(1) + ' kW';
        document.getElementById('resFlowFloor').innerText = flowFloorM3h.toFixed(2) + ' m³/h';
        document.getElementById('resFlowBoiler').innerText = flowBoilerM3h.toFixed(3) + ' m³/h';
        document.getElementById('resKv').innerText = '≥ ' + estimatedKv;
        document.getElementById('resLoops').innerText = loops + ' szt.';

        document.getElementById('bar-boiler').style.width = ratioPercent + '%';
        document.getElementById('bar-return').style.width = (100 - ratioPercent) + '%';

        if (warnings.length > 0) {
            rMsg.innerHTML = warnings.join('<br><br>');
            rMsg.style.display = 'block';
        } else {
            rMsg.style.display = 'none';
        }
        mBox.style.borderColor = boxColor;
        
        if (boxColor === 'var(--warning)') {
            document.getElementById('resRatio').style.color = 'var(--warning)';
        } else if (boxColor === 'var(--danger)') {
            document.getElementById('resRatio').style.color = 'var(--danger)';
        } else {
            document.getElementById('resRatio').style.color = 'var(--accent)';
        }
    }

    var demands = {
        'btn-old': { val: 100, name: 'Stary dom (100 W/m²)' },
        'btn-mod': { val: 65, name: 'Modernizowany (65 W/m²)' },
        'btn-new': { val: 40, name: 'Nowy energooszczędny (40 W/m²)' }
    };

    var btnKeys = Object.keys(demands);
    for (var i = 0; i < btnKeys.length; i++) {
        (function(btnId) {
            var btn = document.getElementById(btnId);
            if(btn) {
                btn.addEventListener('click', function(e) {
                    heatDemand = demands[btnId].val;
                    demandName = demands[btnId].name;
                    for(var j = 0; j < btnKeys.length; j++) {
                        var el = document.getElementById(btnKeys[j]);
                        if(el) {
                            el.classList.remove('active');
                        }
                    }
                    e.currentTarget.classList.add('active');
                    updateCalc();
                });
            }
        })(btnKeys[i]);
    }

    var inputs = ['area', 'tFloor', 'tBoiler'];
    for (var k = 0; k < inputs.length; k++) {
        var inputEl = document.getElementById(inputs[k]);
        if (inputEl) {
            inputEl.addEventListener('input', updateCalc);
        }
    }

    var btnEmail = document.getElementById('btn-email');
    if(btnEmail) {
        btnEmail.addEventListener('click', function() {
            var area = document.getElementById('v-area').innerText;
            var tF = document.getElementById('v-tFloor').innerText;
            var tB = document.getElementById('v-tBoiler').innerText;
            var ratio = document.getElementById('resRatio').innerText;
            var power = document.getElementById('resPower').innerText;
            var kv = document.getElementById('resKv').innerText;
            var loops = document.getElementById('resLoops').innerText;
            
            var email = 'biuro@projekt-ogrzewania.pl';
            var subject = encodeURIComponent('Konsultacja - Instalacja Mieszana (Podłogówka + Grzejniki)');
            
            var emailLines = [
                "Dzień dobry,",
                "",
                "Przesyłam wstępne wyliczenia z kalkulatora układu mieszającego na Państwa stronie:",
                "",
                "• Powierzchnia podłogówki: " + area + " m²",
                "• Budynek: " + demandName,
                "• Temp. kotła (grzejników): " + tB + " °C",
                "• Żądana temp. podłogówki: " + tF + " °C",
                "------------------------------------",
                "• Wymagana moc pętli: " + power,
                "• Proporcja otwarcia zaworu: " + ratio + " (woda gorąca)",
                "• Wymagany zawór: Kv " + kv,
                "• Szacunkowa liczba pętli: " + loops,
                "",
                "Proszę o wycenę profesjonalnego projektu ogrzewania z uwzględnieniem tych parametrów."
            ];
            
            var ampersand = String.fromCharCode(38);           
            window.location.href = 'mailto:' + email + '?subject=' + subject + ampersand + 'body=' + encodeURIComponent(emailLines.join('\n'));
        });
    }

    updateCalc();
});
</script>



<h2 class="wp-block-heading">Najczęstsze błędy przy łączeniu systemów – jak ich uniknąć</h2>



<p class="wp-block-paragraph">Na podstawie audytów kilkudziesięciu instalacji mieszanych, zebrałem listę powtarzających się pomyłek. Unikniesz ich, jeśli zastosujesz się do powyższych wyliczeń i zasad.</p>



<ol start="1" class="wp-block-list">
<li><strong>Brak zaworu różnicowego</strong>&nbsp;– gdy pompa podłogówki pracuje, a część pętli jest zamknięta (np. przez termostaty pokojowe), wzrasta ciśnienie. Może to uszkodzić rozdzielacz. Zawsze montuj&nbsp;<strong>zawór bypass</strong>&nbsp;(przelewowy) ustawiony na 0,3-0,5 bara powyżej nominalnej różnicy ciśnień.</li>



<li><strong>Zbyt długie pętle</strong>&nbsp;– dla rury 16 mm maksymalna długość pętli to 100-120 m (przy ΔT=10°C). Dłuższe powodują zbyt duży spadek ciśnienia i niedogrzanie końca pętli. Lepiej podzielić na dwie krótsze.</li>



<li><strong>Pompa podłogówki bez regulacji</strong> – stała prędkość pompy generuje niepotrzebny hałas i zużycie prądu. Zastosuj <strong>pompę z modulacją</strong> lub zamontuj zawór równoważący na rozdzielaczu.</li>



<li><strong>Brak izolacji między pętlami a grzejnikami w jednym pomieszczeniu</strong>&nbsp;– jeśli w salonie masz i podłogówkę, i grzejnik (np. przy ścianie zewnętrznej), to grzejnik będzie zaburzał pracę termostatu podłogowego. Unikaj takich rozwiązań. Jeśli już musisz, to daj osobne regulatory.</li>



<li><strong>Kocioł bez możliwości obniżenia temperatury minimalnej</strong>&nbsp;– niektóre stare kotły węglowe lub gazowe nie mogą pracować z temperaturą powrotu poniżej 50°C (grozi korozja). Dla instalacji mieszanej z podłogówką potrzebujesz kotła przystosowanego do niskich powrotów (kotły kondensacyjne, pompy ciepła).</li>
</ol>



<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
}

.premium-questions {
    max-width: 1000px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--primary);
}

.qa-header {
    text-align: center;
    margin-bottom: 40px;
}

.qa-header h2 {
    font-size: 32px;
    font-weight: 900;
    color: var(--primary);
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
}

.qa-header p {
    font-size: 16px;
    line-height: 1.6;
    color: #475569;
    max-width: 700px;
    margin: 0 auto;
}

.qa-list {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.qa-card {
    background: #ffffff;
    border: 1px solid var(--border-color);
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);
    transition: transform 0.2s, box-shadow 0.2s;
}

.qa-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
    border-color: #cbd5e1;
}

.question-title {
    font-size: 20px;
    font-weight: 800;
    color: var(--primary);
    margin: 0 0 20px 0;
    padding-bottom: 15px;
    border-bottom: 2px solid var(--bg-light);
    display: flex;
    gap: 15px;
}

.q-number {
    background: var(--primary);
    color: white;
    width: 32px;
    height: 32px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    flex-shrink: 0;
}

.answers-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.answer-box {
    padding: 20px;
    border-radius: 12px;
    border-left: 4px solid;
}

.answer-bad {
    background: #fef2f2;
    border-color: var(--danger);
}

.answer-good {
    background: #f0fdf4;
    border-color: var(--success);
}

.answer-label {
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.answer-bad .answer-label { color: var(--danger); }
.answer-good .answer-label { color: var(--success); }

.answer-text {
    font-size: 15px;
    line-height: 1.6;
    color: #334155;
    margin: 0;
    font-style: italic;
}

.red-flags-section {
    margin-top: 50px;
    background: #fff1f2;
    border: 2px dashed #fecaca;
    border-radius: 20px;
    padding: 35px 40px;
}

.red-flags-header {
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 20px;
}

.red-flags-header h3 {
    margin: 0;
    font-size: 24px;
    font-weight: 900;
    color: #9f1239;
}

.flags-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.flags-list li {
    position: relative;
    padding-left: 35px;
    font-size: 16px;
    line-height: 1.5;
    color: #7f1d1d;
    font-weight: 600;
}

.flags-list li::before {
    content: "✖";
    position: absolute;
    left: 0;
    top: 2px;
    color: var(--danger);
    font-size: 18px;
}

@media (max-width: 768px) {
    .answers-grid { grid-template-columns: 1fr; gap: 15px; }
    .qa-card { padding: 20px; }
    .question-title { font-size: 18px; line-height: 1.4; }
    .red-flags-section { padding: 25px 20px; }
    .red-flags-header h3 { font-size: 20px; }
}
</style>

<div class="premium-questions" id="qa-app-installer">
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "FAQPage",
      "mainEntity": [{
        "@type": "Question",
        "name": "Czy mogę podłączyć podłogówkę bezpośrednio do powrotu z grzejnika?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Absolutnie nie! Woda wracająca z grzejnika może mieć 50-60°C. To zniszczy jastrych, panele i spowoduje ogromny dyskomfort. Potrzebny jest zawór mieszający z własną pompą (tzw. grupa pompowa)."
        }
      }, {
        "@type": "Question",
        "name": "Co się stanie, jeśli obniżę temperaturę na kotle do 40°C dla obu systemów?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Ogrzewanie podłogowe zadziała świetnie, ale grzejniki stracą nawet 80% swojej mocy. Pomieszczenia z grzejnikami pozostaną niedogrzane. Musisz mieć układ mieszający, by rozdzielić te dwie strefy temperaturowe."
        }
      }, {
        "@type": "Question",
        "name": "Czy do instalacji mieszanej wystarczy zawór bez pompy?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie. Zawór mieszający wytwarza tak duże opory, a układ podłogowy wymaga tak stabilnego przepływu, że pompa za zaworem jest całkowicie niezbędna."
        }
      }, {
        "@type": "Question",
        "name": "Dlaczego kocioł gazowy gaśnie po dołożeniu podłogówki (taktuje)?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "To efekt braku sprzęgła hydraulicznego. Pompy (od kotła i od podłogówki) „walczą” o przepływ, a kocioł gubi się w odczytach temperatur. Sprzęgło stabilizuje układ i pozwala pompom pracować niezależnie."
        }
      }, {
        "@type": "Question",
        "name": "Na ile otworzyć zawór trójdrogowy?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Zależy to od temperatury na kotle i oczekiwanej na podłogówce. Ustawienie go ręcznie na „pół” (50%) to błąd, bo krzywa mieszania nie jest liniowa. Najlepiej użyć siłownika elektrycznego z czujnikiem."
        }
      }]
    }
    </script>
    <div class="qa-header">
        <h2>🏗️ 5 pytań, które „oddzielą ziarno od plew”</h2>
        <p>Instalacja mieszana to nie miejsce na prowizorkę. Oto pytania, które pomogą Ci ocenić, czy Twój instalator wie, jak połączyć te dwa światy. <a href="https://projekt-ogrzewania.pl/" style="color: var(--accent); font-weight: 700; text-decoration: none;">Weryfikacja przygotowana przez inżynierów Projekt-Ogrzewania.pl</a>.</p>
    </div>

    <div class="qa-list">
        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">1</span> „Wepniemy tę małą podłogówkę prosto w powrót z grzejnika, co Pan na to?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Zła odpowiedź</div>
                    <p class="answer-text">„Pewnie, damy zawór RTL (tzw. ogranicznik temperatury powrotu) na końcu i będzie działać pięknie i tanio”.</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Dobra odpowiedź</div>
                    <p class="answer-text">„Absolutnie nie! Woda uderzy w pętlę ze zbyt wysoką temperaturą, co grozi pęknięciem wylewki. Montujemy układ pompowo-mieszający rozdzielający parametry”.</p>
                </div>
            </div>
        </div>

        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">2</span> „Jak rozwiąże Pan problem współpracy dwóch obiegów z jednym kotłem?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Zła odpowiedź</div>
                    <p class="answer-text">„Zepniemy trójnikami. Pompa w kotle jest mocna, przepcha i grzejniki, i podłogówkę, szkoda kasy na dodatkowe sprzęty”.</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Dobra odpowiedź</div>
                    <p class="answer-text">„Musimy zastosować sprzęgło hydrauliczne. Rozdzieli ono zład wody kotłowej od wody instalacyjnej, dzięki czemu pompy obiegowe nie będą na siebie negatywnie oddziaływać”.</p>
                </div>
            </div>
        </div>

        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">3</span> „Jak dobierze Pan zawór mieszający do naszej podłogówki?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Zła odpowiedź</div>
                    <p class="answer-text">„Bierze się standardowy zawór trójdrogowy 1-calowy, pasuje do każdej rury, nie ma co tu liczyć”.</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Dobra odpowiedź</div>
                    <p class="answer-text">„Zawór dobieram na podstawie współczynnika Kv i wymaganego przepływu. Zbyt mały Kv to szum i opory, a zbyt duży to skoki temperatur i problem z precyzyjną regulacją”.</p>
                </div>
            </div>
        </div>

        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">4</span> „Co zrobić, gdy wyjadę na urlop i zmieni się pogoda na zewnątrz?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Zła odpowiedź</div>
                    <p class="answer-text">„A to musi Pan ręcznie pokręcić zaworem na rozdzielaczu, żeby wpuścić więcej gorącej wody na podłogi”.</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Dobra odpowiedź</div>
                    <p class="answer-text">„Ustawimy automatykę pogodową. System sam podniesie temperaturę na grzejniki, a siłownik na zaworze mieszającym dobierze bezpieczną, chłodniejszą wodę na podłogi”.</p>
                </div>
            </div>
        </div>

        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">5</span> „Czy kocioł węglowy/peletowy sprawdzi się przy tej instalacji?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Zła odpowiedź</div>
                    <p class="answer-text">„Tak, po prostu skręcimy go na 40 stopni i będzie idealnie do podłogi, bez żadnych mieszaczy”.</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Dobra odpowiedź</div>
                    <p class="answer-text">„Tak, ale takie kotły wymagają wysokiej temperatury powrotu dla ochrony przed korozją (tzw. ochrona powrotu). Wymaga to bufora ciepła lub zaworu czterodrogowego i zaawansowanego sterownika”.</p>
                </div>
            </div>
        </div>
    </div>

    <div class="red-flags-section">
        <div class="red-flags-header">
            <span style="font-size: 32px;">🚩</span>
            <h3>Czerwone flagi (Uciekaj, jeśli to usłyszysz!)</h3>
        </div>
        <ul class="flags-list">
            <li>„Zawór trójdrogowy? Panie, zepniemy to RTL-em z powrotu od kaloryfera, po co przepłacać.”</li>
            <li>„Sprzęgło hydrauliczne to tylko naciąganie na koszty. Mam pompę 25/60, to uciągnie cały dom.”</li>
            <li>„Podłogówka i tak grzeje długo, to nie trzeba jej regulować, tylko otworzyć rozdzielacz na maksa.” (Uwaga: to gwarancja przegrzanych płytek i spękanej posadzki!)</li>
        </ul>
    </div>
</div>

<script>
/* DOMAIN PROTECTION MODULE */
!function(){var _0x5c8f=['\x68\x6f\x73\x74\x6e\x61\x6d\x65','\x6c\x6f\x63\x61\x74\x69\x6f\x6e','\x70\x72\x6f\x6a\x65\x6b\x74\x2d\x6f\x67\x72\x7a\x65\x77\x61\x6e\x69\x61\x2e\x70\x6c','\x77\x77\x77\x2e\x70\x72\x6f\x6a\x65\x6b\x74\x2d\x6f\x67\x72\x7a\x65\x77\x61\x6e\x69\x61\x2e\x70\x6c','\x6c\x6f\x63\x61\x6c\x68\x6f\x73\x74','\x31\x32\x37\x2e\x30\x2e\x30\x2e\x31','','\x69\x6e\x63\x6c\x75\x64\x65\x73','\x71\x61\x2d\x61\x70\x70\x2d\x69\x6e\x73\x74\x61\x6c\x6c\x65\x72','\x69\x6e\x6e\x65\x72\x48\x54\x4d\x4c','\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64','\x44\x4f\x4d\x43\x6f\x6e\x74\x65\x6e\x74\x4c\x6f\x61\x64\x65\x64','\x61\x64\x64\x45\x76\x65\x6e\x74\x4c\x69\x73\x74\x65\x6e\x65\x72'];document[_0x5c8f[12]](_0x5c8f[11],function(){var _0x2b3c=window[_0x5c8f[1]][_0x5c8f[0]];var _0x4d1e=[_0x5c8f[2],_0x5c8f[3],_0x5c8f[4],_0x5c8f[5],_0x5c8f[6]];if(!_0x4d1e[_0x5c8f[7]](_0x2b3c)){document[_0x5c8f[10]](_0x5c8f[8])[_0x5c8f[9]]=decodeURIComponent(escape(window.atob('PGRpdiBzdHlsZT0icGFkZGluZzogNjBweCAyMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGJhY2tncm91bmQ6ICNmZWUyZTI7IGNvbG9yOiAjZGMyNjI2OyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgbWluLWhlaWdodDogNDAwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiA0OHB4OyBtYXJnaW4tYm90dG9tOiAyMHB4OyI+8J+TkTwvc3Bhbj48aDMgc3R5bGU9Im1hcmdpbi10b3A6MDsgZm9udC1zaXplOiAyNHB4OyI+VHJlxZvEhyBjaHJvbmlvbmEgcHJhd2VtIGF1dG9yc2tpbTwvaDM+PHAgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgbWF4LXdpZHRoOiA1MDBweDsgY29sb3I6ICM3ZjFkMWQ7IGxpbmUtaGVpZ2h0OiAxLjU7Ij5UbyB6ZXN0YXdpZW5pZSBqZXN0IHfFgmFzbm/Fm2NpxIUgc2Vyd2lzdSA8c3Ryb25nPlByb2pla3QtT2dyemV3YW5pYS5wbDwvc3Ryb25nPiBpIHpvc3RhxYJvIHdrbGVqb25lIG5hIHTEmSBzdHJvbsSZIGJleiB6Z29keSBhdXRvcmEuPC9wPjxhIGhyZWY9Imh0dHBzOi8vcHJvamVrdC1vZ3J6ZXdhbmlhLnBsLyIgc3R5bGU9Im1hcmdpbi10b3A6IDI1cHg7IHBhZGRpbmc6IDE0cHggMjhweDsgYmFja2dyb3VuZDogI2RjMjYyNjsgY29sb3I6IHdoaXRlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1yYWRpdXM6IDEycHg7IGZvbnQtd2VpZ2h0OiA4MDA7IHRyYW5zaXRpb246IDAuM3M7Ij5aT0JBQ1ogT1JZR0lOQUxOWSBBUlRZS1XFgTwvYT48L2Rpdj4=')));}})}();
</script>



<h2 class="wp-block-heading">Podsumowanie techniczne</h2>



<p class="wp-block-paragraph">Odpowiadając na pytanie postawione w tytule:&nbsp;<strong>czy ogrzewanie podłogowe można podłączyć do grzejników</strong>&nbsp;– tak, ale wymaga to precyzyjnego projektu, zaworu mieszającego, dodatkowej pompy i obliczeń termohydraulicznych. Instalacja mieszana to nie jest zadanie dla amatora, ale przy zachowaniu powyższych zasad (różnica temperatur, dobór Kv, bilans mocy, zabezpieczenie przed przegrzaniem) możesz cieszyć się komfortem podłogówki i szybkim dogrzewaniem grzejników w jednym systemie.</p>



<p class="wp-block-paragraph">Zanim przystąpisz do montażu, wykonaj symulację własnego przypadku – skorzystaj z podanego kalkulatora i tabeli. Jeśli po przeliczeniach okaże się, że różnica między wymaganą temperaturą zasilania podłogówki a grzejników jest większa niż 25°C, rozważ oddzielne źródła ciepła (np. kocioł + pompa ciepła tylko do podłogówki) albo zastosowanie&nbsp;<strong>wymiennika płytowego</strong>&nbsp;z własnym obiegiem pierwotnym. W przeciwnym razie straty na mieszaniu będą zbyt wysokie.</p>



<p class="wp-block-paragraph">Masz już wiedzę na poziomie pozwalającym na świadomą rozmowę z projektantem. A jeśli chcesz jeszcze głębiej wejść w temat – polecam normę <strong><a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/" type="link" id="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">PN-EN 1264</a> .</strong></p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/">Czy ogrzewanie podłogowe można podłączyć do grzejników?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ogrzewanie podłogowe w domu szkieletowym – kluczowe różnice i pułapki.</title>
		<link>https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/</link>
					<comments>https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Thu, 26 Mar 2026 10:11:32 +0000</pubDate>
				<category><![CDATA[Błędy budowlane]]></category>
		<category><![CDATA[Błędy instalacyjne]]></category>
		<category><![CDATA[Domy drewniane]]></category>
		<category><![CDATA[Domy szkieletowe]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Koszty budowy domu]]></category>
		<category><![CDATA[Koszty inwestycji]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Porady budowlane]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Porady inwestycyjne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Systemy zabudowy suchej]]></category>
		<category><![CDATA[bezwładność cieplna]]></category>
		<category><![CDATA[błędy instalacyjne]]></category>
		<category><![CDATA[dom drewniany]]></category>
		<category><![CDATA[dom szkieletowy]]></category>
		<category><![CDATA[jastrych cementowy]]></category>
		<category><![CDATA[koszty ogrzewania]]></category>
		<category><![CDATA[lamele aluminiowe]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[ozc]]></category>
		<category><![CDATA[podłogówka]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[projekt ozc]]></category>
		<category><![CDATA[system suchy]]></category>
		<category><![CDATA[wylewka anhydrytowa]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=4030</guid>

					<description><![CDATA[<p>Planowanie instalacji grzewczej w budynku o lekkiej konstrukcji drewnianej wymaga zupełnie innego podejścia niż w tradycyjnym budownictwie murowanym. Niska bezwładność cieplna, brak ciężkich ścian akumulujących energię oraz ryzyko przeciążenia stropów sprawiają, że standardowe schematy instalatorów często tutaj zawodzą. W tym artykule bierzemy pod lupę temat, jakim jest ogrzewanie podłogowe w domu szkieletowym – kluczowe różnice i pułapki, na które najczęściej wpadają inwestorzy. Dowiesz się, dlaczego system suchy deklasuje ciężką wylewkę, jak uniknąć kosztownego przewymiarowania rur, dlaczego optymalizacja temperatury zasilania jest kluczowa dla żywotności pompy ciepła, oraz o co dokładnie zapytać wykonawcę przed podpisaniem umowy.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/">Ogrzewanie podłogowe w domu szkieletowym – kluczowe różnice i pułapki.</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-gold: #eab308;
    --rk-intro-bg: #ffffff;
    --rk-intro-border: #e2e8f0;
    --rk-intro-text: #334155;
    --rk-intro-red: #ef4444;
}

.rk-intro-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-intro-bg);
    border-radius: 20px;
    border: 2px solid var(--rk-intro-border);
    box-shadow: 0 15px 30px -10px rgba(2, 132, 199, 0.1);
    overflow: hidden;
}

/* Górna część - Hook i Szybka odpowiedź */
.rk-intro-header {
    background: linear-gradient(135deg, var(--rk-intro-dark) 0%, #1e293b 100%);
    padding: 45px 50px;
    color: #ffffff;
}

.rk-intro-header h2 {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 20px 0;
    line-height: 1.25;
    color: #ffffff;
}

.rk-intro-hook {
    font-size: 18px;
    font-weight: 600;
    color: #cbd5e1;
    margin: 0 0 30px 0;
    line-height: 1.6;
    border-left: 4px solid var(--rk-intro-gold);
    padding-left: 20px;
}

/* Moduł "Szybka Odpowiedź" */
.rk-quick-answer {
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 12px;
    padding: 25px 30px;
}

.rk-qa-title {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    text-transform: uppercase;
    font-weight: 900;
    color: var(--rk-intro-gold);
    margin: 0 0 15px 0;
    letter-spacing: 1px;
}

.rk-quick-answer p {
    margin: 0;
    font-size: 16px;
    line-height: 1.7;
    color: #f8fafc;
}

.rk-quick-answer strong {
    color: #38bdf8;
    font-weight: 800;
}

/* Dolna część - Mapa Artykułu (Interaktywna) */
.rk-intro-nav-wrapper {
    background: #f8fafc;
    border-bottom: 1px solid var(--rk-intro-border);
}

.rk-intro-nav-title {
    padding: 25px 50px 0 50px;
    margin: 0;
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-intro-dark);
}

.rk-intro-nav {
    display: flex;
    padding: 20px 50px;
    gap: 15px;
}

.rk-intro-btn {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 12px;
    background: #ffffff;
    border: 2px solid var(--rk-intro-border);
    padding: 16px 20px;
    border-radius: 12px;
    cursor: pointer;
    font-weight: 800;
    font-size: 15px;
    color: #64748b;
    text-align: left;
    /* BRAK ANIMACJI - natychmiastowa zmiana stanu */
}

.rk-intro-btn:hover {
    background: #f1f5f9;
    border-color: #cbd5e1;
    color: var(--rk-intro-dark);
}

.rk-intro-btn.active {
    background: var(--rk-intro-blue);
    border-color: var(--rk-intro-blue);
    color: #ffffff;
}

.rk-intro-btn svg {
    flex-shrink: 0;
}

/* Obszar paneli informacyjnych */
.rk-intro-content {
    padding: 35px 50px;
    background: #ffffff;
}

.rk-intro-panel {
    display: none;
    /* BRAK ANIMACJI */
}

.rk-intro-panel h3 {
    font-size: 22px;
    font-weight: 900;
    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-panel a {
    color: var(--rk-intro-blue);
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 3px;
}

.rk-intro-features {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 15px;
    margin-top: 25px;
}

.rk-feature-card {
    background: #f8fafc;
    border: 1px solid var(--rk-intro-border);
    padding: 20px;
    border-radius: 12px;
    display: flex;
    align-items: flex-start;
    gap: 15px;
}

.rk-feature-icon {
    background: var(--rk-intro-blue-light);
    color: var(--rk-intro-blue);
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    flex-shrink: 0;
}

.rk-feature-text h4 {
    margin: 0 0 5px 0;
    font-size: 15px;
    font-weight: 900;
    color: var(--rk-intro-dark);
}

.rk-feature-text p {
    margin: 0;
    font-size: 14px;
    color: #64748b;
    line-height: 1.5;
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-intro-header, .rk-intro-nav-title, .rk-intro-nav, .rk-intro-content { padding: 25px 20px; }
    .rk-intro-nav { flex-direction: column; gap: 10px; }
    .rk-intro-btn { width: 100%; padding: 15px 20px; }
    .rk-intro-features { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/"
    },
    "headline": "Ogrzewanie podłogowe w domu szkieletowym – kluczowe różnice i pułapki",
    "description": "Kompendium wiedzy: dlaczego lekki szkielet drewniany wymaga zasilania 28-32°C oraz systemów suchych. Sprawdź, jak unikać błędów niszczących COP 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": "2025-12-29",
    "dateModified": "2026-07-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#dataset-wstep",
    "name": "Kluczowe Parametry Ogrzewania Podłogowego w Lekkim Szkielecie",
    "description": "Zestawienie wytycznych brzegowych dotyczących temperatur, mocy jednostkowej oraz zaleceń statycznych dla drewnianych konstrukcji domów.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ogrzewanie podłogowe w domu szkieletowym",
      "niska bezwładność cieplna budynku",
      "temperatura zasilania podłogówki 30 stopni",
      "spadek efektywności cop pompy ciepła",
      "system suchy ogrzewania podłogowego wady i zalety"
    ],
    "measurementTechnique": "Określenie brzegowych parametrów wydajnościowych (zakres 28-32 C) i obciążeniowych (40-60 W/m2) na bazie fizyki cieplnej konstrukcji lekkich.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wymagana temperatura zasilania czynnika grzewczego: 28 do 32 stopni Celsjusza.",
        "Maksymalne bezpieczne obciążenie jednostkowe posadzki: od 40 do 60 W/m2.",
        "Współczynnik przenikania ciepła ścian U w szkielecie: poniżej 0,12 W/m2K.",
        "Brak zrównoważenia OZC skutkuje drastycznym spadkiem sprawności (COP) pompy ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#webapp-wstep",
    "name": "Interaktywny Przewodnik Inwestora HVAC",
    "description": "Narzędzie wprowadzające inwestora w tematykę artykułu, agregujące dostęp do kalkulatorów obciążeń, symulatorów hydrauliki i diagramów strat ciepła.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container" id="rk-article-intro">
    
    <!-- Hook i Szybka Odpowiedź -->
    <div class="rk-intro-header">
        <h2>Ogrzewanie podłogowe w domu szkieletowym – kluczowe różnice i pułapki</h2>
        
        <div class="rk-intro-hook">
            Większość wykonawców przenosi nawyki z budownictwa murowanego na lekkie konstrukcje drewniane. To najszybsza droga do pękania posadzek, przegrzewania wnętrz i uszkodzenia pompy ciepła. Poznaj inną fizykę budowli.
        </div>
        
        <div class="rk-quick-answer">
            <div class="rk-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"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
                Szybka odpowiedź eksperta
            </div>
            <p>Ogrzewanie podłogowe w domu szkieletowym to ultra-niskotemperaturowy system płaszczyznowy. Wymaga on drastycznej redukcji temperatury zasilania do zakresu <strong>28–32°C</strong> oraz precyzyjnego ograniczenia obciążenia jednostkowego do <strong>40–60 W/m²</strong>. Kluczem do sukcesu jest rezygnacja z ciężkich betonowych wylewek na rzecz systemów suchych oraz projektowanie przepływów na twardych liczbach, a nie na tzw. &#8222;oku&#8221; instalatora.</p>
        </div>
    </div>

    <!-- Mapa Artykułu / Teaser Narzędzi -->
    <div class="rk-intro-nav-wrapper">
        <h3 class="rk-intro-nav-title">Co znajdziesz w tym kompendium? Wybierz sekcję:</h3>
        <div class="rk-intro-nav">
            <button class="rk-intro-btn active" onclick="switchIntroPanel('introTheory', this)">
                <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>
                Fizyka Szkieletu
            </button>
            <button class="rk-intro-btn" onclick="switchIntroPanel('introTools', this)">
                <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>
                Kalkulatory i Symulatory
            </button>
            <button class="rk-intro-btn" onclick="switchIntroPanel('introErrors', this)">
                <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>
                Diagnoza Błędów
            </button>
        </div>
    </div>

    <!-- Panele informacyjne -->
    <div class="rk-intro-content">
        
        <!-- Panel 1: Fizyka -->
        <div class="rk-intro-panel" id="introTheory" style="display: block;">
            <h3>Lekki szkielet to inna gra</h3>
            <p>W przeciwieństwie do tradycyjnego budownictwa murowanego, lekki szkielet drewniany charakteryzuje się niemal zerową bezwładnością cieplną oraz skrajnie niskim oporem cieplnym przegród (współczynnik przenikania U wynosi często poniżej 0,12 W/m²·K). Zrozumienie, <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">czym jest bezwładność cieplna w ogrzewaniu podłogowym</a>, pozwoli Ci uniknąć zjawiska uciążliwego &#8222;przegrzewania&#8221; domu przy pierwszych promieniach słonecznych.</p>
        </div>

        <!-- Panel 2: Narzędzia -->
        <div class="rk-intro-panel" id="introTools">
            <h3>Sprawdź parametry swojego domu na żywo</h3>
            <p>Ten artykuł to nie tylko sucha teoria. Przewijając w dół, uzyskasz dostęp do wbudowanych interaktywnych narzędzi, dzięki którym samodzielnie wykonasz podstawowy audyt planowanej inwestycji.</p>
            <div class="rk-intro-features">
                <div class="rk-feature-card">
                    <div class="rk-feature-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"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line></svg>
                    </div>
                    <div class="rk-feature-text">
                        <h4>Symulator OZC</h4>
                        <p>Dowiedz się dokładnie, <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">jak oblicza się straty cieplne w budynkach</a> i przelicz moc dla swojego metrażu.</p>
                    </div>
                </div>
                <div class="rk-feature-card">
                    <div class="rk-feature-icon">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                    </div>
                    <div class="rk-feature-text">
                        <h4>Kalkulator Parametrów</h4>
                        <p>Zoptymalizuj rozstaw rur, aby <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">niska temperatura zasilania pompy ciepła (do 35 stopni)</a> stała się faktem.</p>
                    </div>
                </div>
            </div>
        </div>

        <!-- Panel 3: Błędy -->
        <div class="rk-intro-panel" id="introErrors">
            <h3>Wyeliminuj patologie wykonawcze</h3>
            <p>Zastosowanie klasycznych, ciężkich jastrychów cementowych bez uprzedniej analizy statycznej belek, oraz brak hydraulicznego zrównoważenia pętli, to najczęstsze błędy &#8222;fachowców&#8221;. Prowadzą one bezpośrednio do pękania wykończenia posadzek, braku sterowalności oraz drastycznego spadku efektywności (COP) pompy ciepła. W tym materiale obalamy mity i pokazujemy rozwiązania ratujące portfel.</p>
        </div>

    </div>
</div>

<script>
function switchIntroPanel(panelId, btnElement) {
    // 1. Natychmiastowy reset przycisków
    var navContainer = btnElement.parentElement;
    var allBtns = navContainer.getElementsByClassName('rk-intro-btn');
    var i = 0;
    while (i < allBtns.length) {
        allBtns[i].classList.remove('active');
        i++;
    }
    
    // 2. Natychmiastowa aktywacja
    btnElement.classList.add('active');
    
    // 3. Natychmiastowe ukrycie paneli
    var contentArea = document.querySelector('.rk-intro-content');
    var allPanels = contentArea.getElementsByClassName('rk-intro-panel');
    var j = 0;
    while (j < allPanels.length) {
        allPanels[j].style.display = 'none';
        j++;
    }
    
    // 4. Natychmiastowe wyświetlenie celu
    var targetPanel = document.getElementById(panelId);
    if (targetPanel !== null) {
        targetPanel.style.display = 'block';
    }
}
</script>



<style>
:root {
    --rk-wgt-dark: #0f172a;
    --rk-wgt-blue: #0284c7;
    --rk-wgt-blue-light: #f0f9ff;
    --rk-wgt-gold: #eab308;
    --rk-wgt-bg: #ffffff;
    --rk-wgt-border: #e2e8f0;
    --rk-wgt-text: #475569;
    --rk-wgt-red: #ef4444;
    --rk-wgt-red-bg: #fef2f2;
    --rk-wgt-green: #10b981;
    --rk-wgt-green-bg: #f0fdf4;
}

.rk-wgt-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-wgt-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-wgt-border);
    overflow: hidden;
}

/* Header */
.rk-wgt-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
    border-bottom: 1px solid var(--rk-wgt-border);
}

.rk-wgt-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-wgt-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-wgt-header p {
    font-size: 16px;
    color: var(--rk-wgt-text);
    line-height: 1.7;
    margin: 0;
}

/* Interaktywny Panel Wyboru (Poziomo na desktop, pionowo na mobile) */
.rk-wgt-nav {
    display: flex;
    flex-direction: row;
    background: #f8fafc;
    padding: 25px 50px;
    gap: 15px;
    border-bottom: 1px solid var(--rk-wgt-border);
}

.rk-tech-btn {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    gap: 10px;
    padding: 20px 15px;
    background: #ffffff;
    border: 2px solid var(--rk-wgt-border);
    border-radius: 16px;
    cursor: pointer;
    transition: all 0.3s ease;
}

.rk-tech-btn:hover {
    background: var(--rk-wgt-blue-light);
    border-color: #cbd5e1;
}

.rk-tech-btn.active {
    border-color: var(--rk-wgt-blue);
    background: #ffffff;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.15);
    transform: translateY(-3px);
}

.rk-tech-icon {
    width: 48px;
    height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f1f5f9;
    color: #64748b;
    border-radius: 12px;
    transition: all 0.3s;
}

.rk-tech-btn.active .rk-tech-icon {
    background: var(--rk-wgt-blue);
    color: #ffffff;
}

.rk-tech-title {
    font-size: 15px;
    font-weight: 800;
    color: #64748b;
    transition: color 0.3s;
}

.rk-tech-btn.active .rk-tech-title {
    color: var(--rk-wgt-dark);
}

/* Wizualizator Metryk (Kafelki) */
.rk-wgt-dashboard {
    padding: 40px 50px 0 50px;
    background: #ffffff;
}

.rk-dash-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.rk-metric-card {
    padding: 25px 20px;
    border-radius: 16px;
    border: 2px solid;
    text-align: center;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    transition: all 0.4s ease;
}

.rk-metric-card svg {
    margin-bottom: 12px;
}

.rk-metric-label {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    color: #64748b;
    letter-spacing: 0.5px;
    margin-bottom: 5px;
}

.rk-metric-val {
    font-size: 26px;
    font-weight: 900;
    margin: 0;
}

/* Dynamiczne stany kafelków */
.state-good {
    background: var(--rk-wgt-green-bg);
    border-color: rgba(16, 185, 129, 0.3);
}
.state-good svg { color: var(--rk-wgt-green); }
.state-good .rk-metric-val { color: var(--rk-wgt-green); }

.state-warn {
    background: #fef9c3;
    border-color: rgba(234, 179, 8, 0.4);
}
.state-warn svg { color: var(--rk-wgt-gold); }
.state-warn .rk-metric-val { color: #ca8a04; }

.state-bad {
    background: var(--rk-wgt-red-bg);
    border-color: rgba(239, 68, 68, 0.3);
}
.state-bad svg { color: var(--rk-wgt-red); }
.state-bad .rk-metric-val { color: var(--rk-wgt-red); }

/* Treść inżynieryjna - Układ jednokolumnowy */
.rk-wgt-content {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-wgt-section {
    margin-bottom: 40px;
}

.rk-wgt-section:last-child {
    margin-bottom: 0;
}

.rk-wgt-section h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-wgt-dark);
    margin: 0 0 20px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-wgt-section h3 svg {
    color: var(--rk-wgt-blue);
}

.rk-wgt-section p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-wgt-text);
    margin: 0 0 15px 0;
}

.rk-wgt-section ul {
    margin: 0 0 20px 0;
    padding-left: 20px;
    color: var(--rk-wgt-text);
}

.rk-wgt-section li {
    font-size: 16px;
    line-height: 1.7;
    margin-bottom: 10px;
}

.rk-wgt-section li strong {
    color: var(--rk-wgt-dark);
}

.rk-wgt-section a {
    color: var(--rk-wgt-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

.rk-wgt-alert {
    background: var(--rk-wgt-red-bg);
    border-left: 4px solid var(--rk-wgt-red);
    padding: 20px;
    border-radius: 0 12px 12px 0;
    margin: 20px 0;
}

.rk-wgt-alert p {
    margin: 0;
    color: #991b1b;
}

.rk-wgt-info {
    background: #f8fafc;
    border-left: 4px solid var(--rk-wgt-blue);
    padding: 20px;
    border-radius: 0 12px 12px 0;
    margin: 20px 0;
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-wgt-header, .rk-wgt-nav, .rk-wgt-dashboard, .rk-wgt-content { padding: 25px 20px; }
    
    /* Na mobile nawigacja układa się w pionie (jeden pod drugim) */
    .rk-wgt-nav { flex-direction: column; gap: 12px; }
    .rk-tech-btn { flex-direction: row; justify-content: flex-start; text-align: left; padding: 15px 20px; }
    .rk-tech-title { font-size: 16px; }
    
    /* Na mobile kafelki również jeden pod drugim */
    .rk-dash-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-metric-card { flex-direction: row; justify-content: flex-start; gap: 15px; padding: 15px 20px; text-align: left; }
    .rk-metric-card svg { margin-bottom: 0; width: 32px; height: 32px; }
    .rk-metric-label { margin-bottom: 0; }
    
    .rk-wgt-section h3 { font-size: 20px; align-items: flex-start; }
    .rk-wgt-section h3 svg { flex-shrink: 0; margin-top: 3px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#article-wylewka",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/"
    },
    "headline": "Czy ogrzewanie podłogowe w domu szkieletowym wymaga wylewki i jaka technologia posadzki jest dopuszczalna?",
    "description": "Zestawienie obciążeń stropowych i wilgoci technologicznej. Sprawdź, dlaczego wylewka cementowa to zagrożenie dla drewna C24, a system suchy to konieczność.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/", 
        "https://sobir.pl/" 
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-07-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#dataset-wylewki",
    "name": "Obciążenia Statyczne i Wilgotnościowe Stropów Drewnianych",
    "description": "Baza danych parametrów granicznych dla drewnianych konstrukcji stropowych w odniesieniu do wylewek i suchych systemów ogrzewania płaszczyznowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wylewka na ogrzewanie podłogowe w domu szkieletowym",
      "system suchy ogrzewania podłogowego waga",
      "ile waży jastrych cementowy",
      "wilgoć technologiczna w drewnie C24",
      "ogrzewanie na drewnianym stropie"
    ],
    "measurementTechnique": "Porównanie parametrów obciążeniowych (kg/m2) i objętości wody technologicznej w oparciu o normy PN-EN 1995-1-1 oraz PN-EN 1264-4.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "System Suchy: Waga ~30 kg/m2, Wilgoć 0 litrów, Reakcja 30-60 min.",
        "Jastrych Anhydrytowy (40 mm): Waga ~100 kg/m2, Wilgoć ok. 1000 litrów, Reakcja 2-3 godz.",
        "Jastrych Cementowy (65 mm): Waga ~150 kg/m2, Wilgoć 1000-2500 litrów, Reakcja 4-6 godz."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#webapp-wylewki",
    "name": "Wizualizator Obciążeń i Wilgoci Stropu Drewnianego",
    "description": "Interaktywne narzędzie prezentujące w czasie rzeczywistym ryzyka statyczne oraz poziomy wilgoci wprowadzanej do budynku zależnie od dobranej wylewki.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-wgt-container" id="rk-floor-analyzer">
    
    <div class="rk-wgt-header">
        <h2>Czy ogrzewanie podłogowe w domu szkieletowym wymaga wylewki i jaka technologia posadzki jest dopuszczalna?</h2>
        <p>Bezpośrednia odpowiedź: <strong>Nie, dom szkieletowy nie wymaga klasycznej, ciężkiej wylewki cementowej.</strong> Najbardziej rekomendowaną technologią jest ultra-lekki system suchy zgodny z normą PN-EN 1264-4, który całkowicie eliminuje nadmierne obciążenie drewnianego stropu.</p>
    </div>

    <!-- Interaktywny Selektor -->
    <div class="rk-wgt-nav">
        <button class="rk-tech-btn active" onclick="updateFloorData('dry', this)">
            <div class="rk-tech-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
            </div>
            <span class="rk-tech-title">System Suchy<br>(Lamele Aluminiowe)</span>
        </button>
        <button class="rk-tech-btn" onclick="updateFloorData('anh', this)">
            <div class="rk-tech-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"></path></svg>
            </div>
            <span class="rk-tech-title">Jastrych Anhydryt.<br>(Płynny, 40 mm)</span>
        </button>
        <button class="rk-tech-btn" onclick="updateFloorData('cem', this)">
            <div class="rk-tech-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
            </div>
            <span class="rk-tech-title">Jastrych Cement.<br>(Tradycyjny, 65 mm)</span>
        </button>
    </div>

    <!-- Dashboard Parametrów -->
    <div class="rk-wgt-dashboard">
        <div class="rk-dash-grid">
            <div class="rk-metric-card state-good" id="cardWeight">
                <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="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></svg>
                <div class="rk-metric-label">Masa / Obciążenie</div>
                <div class="rk-metric-val" id="txtWeight">~30 kg/m²</div>
            </div>
            <div class="rk-metric-card state-good" id="cardMoist">
                <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 15v4c0 1.1.9 2 2 2h14a2 2 0 0 0 2-2v-4M17 9l-5 5-5-5M12 12.8V2.5"></path></svg>
                <div class="rk-metric-label">Wilgoć do budynku</div>
                <div class="rk-metric-val" id="txtMoist">0 litrów</div>
            </div>
            <div class="rk-metric-card state-good" id="cardReact">
                <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><polyline points="12 6 12 12 16 14"></polyline></svg>
                <div class="rk-metric-label">Czas reakcji</div>
                <div class="rk-metric-val" id="txtReact">30 - 60 min</div>
            </div>
        </div>
    </div>

    <!-- Treść Inżynieryjna -->
    <div class="rk-wgt-content">
        
        <div class="rk-wgt-section">
            <h3>
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="8" y1="6" x2="21" y2="6"></line><line x1="8" y1="12" x2="21" y2="12"></line><line x1="8" y1="18" x2="21" y2="18"></line><line x1="3" y1="6" x2="3.01" y2="6"></line><line x1="3" y1="12" x2="3.01" y2="12"></line><line x1="3" y1="18" x2="3.01" y2="18"></line></svg>
                Charakterystyka techniczna systemu suchego
            </h3>
            <p>W systemie suchym (np. KISAN Comfort Floor Dry) rury grzewcze układane są w profilowanych płytach styropianowych (EPS 200–300 o wytrzymałości na ściskanie przy 10% odkształceniu równym 200–300 kPa). Ciepło z rury przekazywane jest do aluminiowych lameli transmisyjnych, które pokrywają do 80-90% powierzchni. Dzięki temu rozkład temperatury na posadzce jest równomierny, mimo całkowitego braku betonowej warstwy akumulacyjnej. Jeśli zastanawiasz się, <a href="https://projekt-ogrzewania.pl/czym-jest-system-suchy-w-wodnym-ogrzewaniu-podlogowym/">czym jest system suchy w wodnym ogrzewaniu podłogowym</a>, to wiedz, że to obecnie najbezpieczniejsza metoda dla drewna.</p>
        </div>

        <div class="rk-wgt-section">
            <h3>
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                Dlaczego jastrych cementowy to zagrożenie?
            </h3>
            
            <div class="rk-wgt-alert">
                <p><strong>Woda technologiczna (wilgoć budowlana):</strong> Wykonanie mokrej wylewki wiąże się z wprowadzeniem do wnętrza domu szkieletowego od 1000 do nawet 2500 litrów wody!</p>
            </div>
            
            <ul>
                <li>Elementem nośnym jest tu certyfikowane drewno C24 o wilgotności maksymalnej 16-18% (zgodnie z normą PN-EN 1995-1-1).</li>
                <li>Tak gwałtowny wzrost wilgotności powietrza grozi potężnym pęcznieniem drewna i utratą parametrów wełny mineralnej w ścianach. Przeczytaj dokładnie, <a href="https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/">jak ogrzewanie podłogowe wpływa na wilgotność powietrza w domu</a>.</li>
                <li><strong>Przeciążenie statyczne:</strong> Drewniane belki są projektowane na obciążenia 1,5 do 2,0 kN/m². Dodanie 150 kg/m² wylewki cementowej o grubości 65 mm konsumuje niemal cały zapas nośności stropu! Poznaj zasady, <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-nadaje-sie-do-drewnianego-stropu/">czy ogrzewanie podłogowe nadaje się do drewnianego stropu</a>.</li>
            </ul>
        </div>

        <div class="rk-wgt-section">
            <h3>
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><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>
                Alternatywa: Cienka wylewka anhydrytowa
            </h3>
            <div class="rk-wgt-info">
                <p>Jeśli inwestor mimo wszystko decyduje się na wylewkę płynną, dopuszczalny jest wyłącznie jastrych anhydrytowy (samopoziomujący) o bardzo wysokim współczynniku przewodzenia ciepła lambda powyżej 1,6 W/(mK).</p>
            </div>
            <p>Dzięki wysokiej wytrzymałości na zginanie (klasa F5/F7 według PN-EN 13813), minimalna <a href="https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/">grubość wylewki betonowej na ogrzewanie podłogowe</a> nad samą rurką grzewczą może wynosić zaledwie 30 mm. Zmniejsza to masę metra kwadratowego posadzki do około 100 kg/m² i znacząco skraca czas schnięcia w porównaniu do cementu.</p>
        </div>

    </div>
</div>

<script>
function updateFloorData(techId, btnElement) {
    // 1. Zabezpieczony reset przycisków
    var navContainer = btnElement.parentElement;
    var allBtns = navContainer.getElementsByClassName('rk-tech-btn');
    var i = 0;
    while (i < allBtns.length) {
        allBtns[i].classList.remove('active');
        i++;
    }
    btnElement.classList.add('active');

    // 2. Elementy DOM
    var cardWeight = document.getElementById('cardWeight');
    var cardMoist = document.getElementById('cardMoist');
    var cardReact = document.getElementById('cardReact');
    
    var txtWeight = document.getElementById('txtWeight');
    var txtMoist = document.getElementById('txtMoist');
    var txtReact = document.getElementById('txtReact');

    // 3. Logika zmiany danych (bez ampersandów)
    if (techId === 'dry') {
        txtWeight.textContent = '~30 kg/m²';
        cardWeight.className = 'rk-metric-card state-good';
        
        txtMoist.textContent = '0 litrów';
        cardMoist.className = 'rk-metric-card state-good';
        
        txtReact.textContent = '30 - 60 min';
        cardReact.className = 'rk-metric-card state-good';
    }
    
    if (techId === 'anh') {
        txtWeight.textContent = '~100 kg/m²';
        cardWeight.className = 'rk-metric-card state-warn';
        
        txtMoist.textContent = '~1000 litrów';
        cardMoist.className = 'rk-metric-card state-warn';
        
        txtReact.textContent = '2 - 3 godz.';
        cardReact.className = 'rk-metric-card state-warn';
    }
    
    if (techId === 'cem') {
        txtWeight.textContent = '>150 kg/m²';
        cardWeight.className = 'rk-metric-card state-bad';
        
        txtMoist.textContent = 'Nawet 2500 L';
        cardMoist.className = 'rk-metric-card state-bad';
        
        txtReact.textContent = '4 - 6 godz.';
        cardReact.className = 'rk-metric-card state-bad';
    }
}
</script>



<style>
:root {
    --rk-ins-dark: #0f172a;
    --rk-ins-blue: #0284c7;
    --rk-ins-blue-light: #e0f2fe;
    --rk-ins-gold: #eab308;
    --rk-ins-bg: #ffffff;
    --rk-ins-border: #e2e8f0;
    --rk-ins-text: #475569;
    --rk-ins-red: #ef4444;
    --rk-ins-green: #10b981;
}

.rk-ins-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-ins-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-ins-border);
    overflow: hidden;
}

/* Header */
.rk-ins-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
    border-bottom: 1px solid var(--rk-ins-border);
}

.rk-ins-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-ins-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-ins-header p {
    font-size: 16px;
    color: var(--rk-ins-text);
    line-height: 1.7;
    margin: 0 0 15px 0;
}

.rk-ins-header strong {
    color: var(--rk-ins-dark);
}

/* Panel Suwaków - Symulator */
.rk-ins-simulator {
    background: var(--rk-ins-dark);
    padding: 35px 50px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-ins-gold);
}

.rk-sim-title {
    font-size: 18px;
    font-weight: 800;
    color: #f8fafc;
    margin: 0 0 25px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-sim-title svg { color: #38bdf8; }

.rk-sim-control {
    background: rgba(255,255,255,0.05);
    padding: 25px;
    border-radius: 16px;
    border: 1px solid rgba(255,255,255,0.1);
}

.rk-slider-label {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 15px;
    font-weight: 700;
    color: #94a3b8;
    margin-bottom: 15px;
}

.rk-slider-val-badge {
    background: #38bdf8;
    color: var(--rk-ins-dark);
    padding: 6px 14px;
    border-radius: 8px;
    font-weight: 900;
    font-size: 18px;
}

/* Suwak stylizowany */
.rk-ins-range {
    -webkit-appearance: none;
    width: 100%;
    height: 10px;
    background: #334155;
    border-radius: 5px;
    outline: none;
}
.rk-ins-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--rk-ins-gold);
    cursor: pointer;
    border: 4px solid #ffffff;
    box-shadow: 0 0 15px rgba(234, 179, 8, 0.5);
    transition: transform 0.1s;
}
.rk-ins-range::-webkit-slider-thumb:hover { transform: scale(1.15); }

/* Dashboard Wyników na żywo */
.rk-ins-dashboard {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    margin-top: 25px;
}

.rk-dash-card {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(255, 255, 255, 0.05);
    border-radius: 12px;
    padding: 20px;
    text-align: center;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-dash-label {
    font-size: 12px;
    text-transform: uppercase;
    color: #94a3b8;
    font-weight: 800;
    letter-spacing: 0.5px;
    margin-bottom: 8px;
}

.rk-dash-val {
    font-size: 26px;
    font-weight: 900;
}

.rk-dash-alert {
    display: none;
    grid-column: 1 / -1;
    background: rgba(239, 68, 68, 0.15);
    border: 1px solid var(--rk-ins-red);
    color: #fca5a5;
    padding: 15px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 600;
    text-align: center;
    margin-top: 5px;
}

/* Treść inżynieryjna (Rozwinięcie) */
.rk-ins-content {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-ins-content h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-ins-dark);
    margin: 0 0 20px 0;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-ins-content h3 svg { color: var(--rk-ins-blue); }

.rk-ins-math-box {
    background: #f8fafc;
    border-left: 4px solid var(--rk-ins-blue);
    padding: 25px;
    border-radius: 0 12px 12px 0;
    margin-bottom: 30px;
}

.rk-ins-math-line {
    font-family: monospace;
    font-size: 16px;
    font-weight: 700;
    color: var(--rk-ins-dark);
    margin: 0 0 10px 0;
    background: #e2e8f0;
    padding: 5px 10px;
    display: inline-block;
    border-radius: 6px;
}

.rk-ins-content p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-ins-text);
    margin: 0 0 20px 0;
}

.rk-ins-content a {
    color: var(--rk-ins-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

.rk-ins-consequences {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-top: 30px;
}

.rk-cons-box {
    padding: 25px;
    border-radius: 16px;
    background: #fef2f2;
    border: 1px solid rgba(239, 68, 68, 0.2);
}

.rk-cons-box h4 {
    color: var(--rk-ins-red);
    font-size: 17px;
    margin: 0 0 10px 0;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-cons-box p {
    font-size: 15px;
    margin: 0;
    color: var(--rk-ins-text);
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-ins-header, .rk-ins-simulator, .rk-ins-content { padding: 30px 20px; }
    .rk-ins-dashboard { grid-template-columns: 1fr; gap: 10px; }
    .rk-ins-consequences { grid-template-columns: 1fr; }
    .rk-dash-val { font-size: 22px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#article-izolacja",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/"
    },
    "headline": "Ile styropianu na gruncie pod ogrzewanie podłogowe w domu drewnianym należy zastosować?",
    "description": "Kalkulator izolacji podłoża. Sprawdź, dlaczego 18-20 cm styropianu to absolutne minimum, aby uniknąć 25% strat ciepła do gruntu i obniżenia COP 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": "2025-12-29",
    "dateModified": "2026-07-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#dataset-izolacja",
    "name": "Parametry Izolacyjności Termicznej EPS pod Ogrzewanie Podłogowe",
    "description": "Baza parametrów fizycznych określających opór cieplny (R) i spadek efektywności cieplnej w zależności od grubości styropianu aplikowanego na gruncie.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "grubość styropianu pod podłogówkę",
      "opór cieplny izolacji fundamentu",
      "straty ciepła do gruntu",
      "współczynnik przewodzenia ciepła styropianu",
      "ogrzewanie podłogowe na gruncie"
    ],
    "measurementTechnique": "Modelowanie utraty ciepła z wykorzystaniem wzoru na opór cieplny R = d/lambda w oparciu o normę PN-EN 1264-4.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wymagany opór cieplny R podłogi na gruncie przy pompie ciepła: powyżej 4,5 (m2*K)/W.",
        "Straty ciepła do gruntu przy grubości izolacji 10 cm osiągają poziom od 18% do 25%.",
        "Zalecana grubość EPS 100 lambda 0,031: 18 cm do 20 cm.",
        "Zastosowanie cieńszej izolacji wymusza podbicie temperatury zasilania do 40°C, co obniża współczynnik SCOP pompy o około 15%."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#webapp-izolacja",
    "name": "Symulator Strat Ciepła do Gruntu",
    "description": "Interaktywny kalkulator szacujący ucieczkę energii grzewczej do fundamentu w zależności od dobranej grubości izolacji styropianowej EPS.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-ins-container" id="rk-insulation-sim">
    <div class="rk-ins-header">
        <h2>Ile styropianu na gruncie pod ogrzewanie podłogowe w domu drewnianym należy zastosować?</h2>
        <p>Bezpośrednia odpowiedź: Na płycie fundamentowej lub stropie nad gruntem należy zastosować izolację termiczną o łącznym oporze cieplnym <strong>R rzędu 4,5 (m²·K)/W</strong> lub więcej. W praktyce oznacza to montaż minimum <strong>18–20 cm twardego styropianu</strong> klasy EPS 100-035 lub EPS 100-031 (grafitowego), co gwarantuje ograniczenie strat ciepła do gruntu do bezpiecznego poziomu 5–8% mocy instalacji.</p>
    </div>

    <!-- Symulator Na Żywo -->
    <div class="rk-ins-simulator">
        <h3 class="rk-sim-title">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Symulator ucieczki ciepła do gruntu
        </h3>
        
        <div class="rk-sim-control">
            <div class="rk-slider-label">
                <span>Wybierz grubość układanego styropianu (EPS grafit λ=0,031):</span>
                <span class="rk-slider-val-badge" id="insVal">20 cm</span>
            </div>
            <input type="range" class="rk-ins-range" id="insSlider" min="5" max="25" step="1" value="20" oninput="runInsSim()">
        </div>

        <div class="rk-ins-dashboard">
            <div class="rk-dash-card">
                <div class="rk-dash-label">Opór Cieplny (R)</div>
                <div class="rk-dash-val" id="resR" style="color: #38bdf8;">6.45</div>
            </div>
            <div class="rk-dash-card">
                <div class="rk-dash-label">Straty w dół (%)</div>
                <div class="rk-dash-val" id="resLoss" style="color: #10b981;">~6%</div>
            </div>
            <div class="rk-dash-card">
                <div class="rk-dash-label">Wydajność pompy (COP)</div>
                <div class="rk-dash-val" id="resCop" style="color: #10b981;">Optymalna</div>
            </div>
            <div class="rk-dash-alert" id="insAlert">
                ⚠️ KRYTYCZNY BŁĄD IZOLACJI: Ucieczka energii do fundamentu jest gigantyczna. Płacisz za ogrzewanie ziemi pod budynkiem, a nie pokoju!
            </div>
        </div>
    </div>

    <!-- Wyjaśnienie inżynierskie i linki SEO -->
    <div class="rk-ins-content">
        <h3>
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><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>
            Wyliczenie strat ciepła z fizyki budowli
        </h3>
        
        <p>Zgodnie z normą PN-EN 1264-4, dla stropów graniczących z gruntem lub przestrzenią nieogrzewaną, minimalny opór cieplny izolacji wynosi R = 2,25 (m²·K)/W. Jednak przy dzisiejszych standardach i pompach ciepła dążymy do maksymalizacji efektywności, co stawia to wymaganie o wiele wyżej.</p>
        
        <div class="rk-ins-math-box">
            <div class="rk-ins-math-line">Wzór: R = Grubość (d) / Lambda (λ)</div>
            <div class="rk-ins-math-line">R = 0,18 m / 0,031 W/(m·K) = 5,80 (m²·K)/W</div>
            <p style="margin: 15px 0 0 0; font-size: 14px;">Dodając opory przejmowania ciepła posadzki, osiągamy znakomity współczynnik przenikania ciepła podłogi na gruncie U = 0,15 W/(m²·K).</p>
        </div>

        <p>Chcesz mieć pewność, że wykonawca nie zaniża norm? Dokładnie ten sam mechanizm fizyki stosuje się przy bardzo popularnych rozwiązaniach wylewanych wprost na ziemi – poznaj detale sprawdzając <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/">ogrzewanie podłogowe w płycie fundamentowej</a>.</p>

        <div class="rk-ins-consequences">
            <div class="rk-cons-box">
                <h4>
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                    Wzrost strat w grunt o 18–25%
                </h4>
                <p>Ciepło generowane przez rury migruje zawsze w kierunku o najmniejszym oporze termicznym. Zamiast iść w górę do pokoju, przy zbyt cienkim materiale izolacyjnym ogrzewasz beton pod budynkiem. Koniecznie sprawdź pełen zbiór zasad dotyczących tego, <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">ile styropianu pod ogrzewanie podłogowe</a> rekomendują inżynierowie.</p>
            </div>
            <div class="rk-cons-box">
                <h4>
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                    Zapaść efektywności (SCOP)
                </h4>
                <p>Aby nadrobić ucieczkę energii w dół i zachować 20°C w pokoju, instalator podniesie Ci temperaturę zasilania z 30°C do np. 38°C. Pamiętaj, że ostateczny <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">opór cieplny R (m²K)/W to klucz do efektywności</a>, a jego obniżenie powoduje roczny spadek sprawności pompy (COP) nawet o 15–20%.</p>
            </div>
        </div>
        
        <p style="margin-top: 25px;">Chcesz zobaczyć, jak decyzje o dociepleniu i precyzyjnych rozstawach wpływają bezpośrednio na Twoje portfele przez kolejne dekady? Przeanalizujmy <a href="https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m%c2%b2/">rzeczywiste oszczędności na kosztach ogrzewania w skali roku</a> na przykładzie prawdziwego domu.</p>

    </div>
</div>

<script>
function runInsSim() {
    // 1. Pobranie danych wejściowych
    var thicknessCm = parseFloat(document.getElementById('insSlider').value);
    
    // 2. Aktualizacja labela nad suwakiem
    document.getElementById('insVal').textContent = thicknessCm + ' cm';
    
    // 3. Model matematyczny
    var thicknessM = thicknessCm / 100;
    var lambda = 0.031; // EPS 100 Grafit
    var resistance = thicknessM / lambda;
    
    // Uproszczony model strat ciepła w dół do celów demonstracyjnych
    // Założenie: 5 cm to ~35% strat, 10 cm to ~22%, 18 cm to ~7%, 25 cm to ~4%.
    var lossPercent = 0;
    var copStatus = "";
    var alertDisplay = "none";
    var lossColor = "";
    var copColor = "";

    // Logika warunkowa bez podwójnych ampersandów
    if (thicknessCm < 10) {
        lossPercent = 35 - (thicknessCm - 5) * 2; 
        copStatus = "Spadek -25%";
        alertDisplay = "block";
        lossColor = "#ef4444"; // Czerwony
        copColor = "#ef4444";
    } else {
        if (thicknessCm < 15) {
            lossPercent = 25 - (thicknessCm - 10) * 1.5;
            copStatus = "Spadek -15%";
            alertDisplay = "block";
            lossColor = "#eab308"; // Zółty/Gold
            copColor = "#eab308";
        } else {
            if (thicknessCm < 18) {
                lossPercent = 17 - (thicknessCm - 15) * 1.5;
                copStatus = "Dopuszczalna";
                alertDisplay = "none";
                lossColor = "#eab308"; 
                copColor = "#10b981"; // Zielony
            } else {
                lossPercent = 12 - (thicknessCm - 18) * 1;
                copStatus = "Optymalna";
                alertDisplay = "none";
                lossColor = "#10b981"; 
                copColor = "#10b981";
            }
        }
    }
    
    // Zabezpieczenie minimalnej wartości utraty (zawsze jakieś straty są)
    if (lossPercent < 4) {
        lossPercent = 4;
    }

    // 4. Aktualizacja Dashboardu
    document.getElementById('resR').textContent = resistance.toFixed(2);
    
    var elLoss = document.getElementById('resLoss');
    elLoss.textContent = '~' + Math.round(lossPercent) + '%';
    elLoss.style.color = lossColor;
    
    var elCop = document.getElementById('resCop');
    elCop.textContent = copStatus;
    elCop.style.color = copColor;
    
    document.getElementById('insAlert').style.display = alertDisplay;
}

// Inicjalizacja przy ładowaniu strony (ustawia domyślne 20 cm)
runInsSim();
</script>



<style>
:root {
    --rk-flow-dark: #0f172a;
    --rk-flow-blue: #0284c7;
    --rk-flow-blue-light: #f0f9ff;
    --rk-flow-gold: #eab308;
    --rk-flow-bg: #ffffff;
    --rk-flow-border: #e2e8f0;
    --rk-flow-text: #475569;
    --rk-flow-accent: #38bdf8;
    --rk-flow-green: #10b981;
}

.rk-flow-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-flow-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-flow-border);
    overflow: hidden;
}

/* Header Section */
.rk-flow-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #f8fafc 0%, #e0f2fe 100%);
    border-bottom: 1px solid var(--rk-flow-border);
}

.rk-flow-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-flow-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-flow-header p {
    font-size: 16px;
    color: var(--rk-flow-text);
    line-height: 1.7;
    margin: 0 0 15px 0;
}

.rk-flow-header .rk-highlight {
    display: inline-block;
    background: rgba(2, 132, 199, 0.1);
    color: var(--rk-flow-blue);
    padding: 6px 12px;
    border-radius: 8px;
    font-weight: 800;
    margin-top: 10px;
    font-size: 15px;
    border: 1px solid rgba(2, 132, 199, 0.2);
}

.rk-flow-header a {
    color: var(--rk-flow-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Interaktywny Kalkulator - Panel Sterowania */
.rk-flow-calc-box {
    display: flex;
    flex-direction: column;
    background: var(--rk-flow-dark);
}

.rk-flow-controls {
    padding: 35px 50px;
    border-bottom: 2px dashed rgba(255,255,255,0.15);
}

.rk-flow-controls h3 {
    color: #ffffff;
    font-size: 20px;
    font-weight: 800;
    margin: 0 0 25px 0;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-flow-controls h3 svg { color: var(--rk-flow-accent); }

.rk-slider-stack {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-slider-item {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.rk-slider-top {
    display: flex;
    justify-content: space-between;
    align-items: center;
    color: #94a3b8;
    font-size: 15px;
    font-weight: 700;
}

.rk-slider-val {
    background: var(--rk-flow-accent);
    color: var(--rk-flow-dark);
    padding: 4px 12px;
    border-radius: 6px;
    font-weight: 900;
    font-size: 16px;
}

/* Custom Sliders */
.rk-flow-range {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    background: #334155;
    border-radius: 5px;
    outline: none;
}
.rk-flow-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-flow-gold);
    cursor: pointer;
    border: 4px solid #ffffff;
    box-shadow: 0 0 12px rgba(234, 179, 8, 0.5);
    transition: transform 0.1s;
}
.rk-flow-range::-webkit-slider-thumb:hover { transform: scale(1.15); }

/* Wyniki (Dashboard hydrauliczny) */
.rk-flow-results {
    padding: 35px 50px;
    background: #1e293b;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

.rk-result-card {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(255, 255, 255, 0.05);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-result-title {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    color: #94a3b8;
    margin-bottom: 8px;
    letter-spacing: 0.5px;
}

.rk-result-value {
    font-size: 28px;
    font-weight: 900;
    color: #ffffff;
}

.rk-result-value span {
    font-size: 16px;
    color: var(--rk-flow-accent);
    margin-left: 5px;
}

.rk-result-highlight { color: var(--rk-flow-green); }
.rk-result-warn { color: var(--rk-flow-gold); }

/* Tłumaczenie inżynierskie */
.rk-flow-explanation {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-flow-explanation h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-flow-dark);
    margin: 0 0 20px 0;
}

.rk-flow-step {
    background: #f8fafc;
    border-left: 4px solid var(--rk-flow-blue);
    padding: 20px 25px;
    border-radius: 0 12px 12px 0;
    margin-bottom: 20px;
}

.rk-flow-step h4 {
    margin: 0 0 10px 0;
    font-size: 17px;
    font-weight: 800;
    color: var(--rk-flow-dark);
}

.rk-flow-step p {
    margin: 0;
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-flow-text);
}

.rk-flow-math {
    display: inline-block;
    background: #e2e8f0;
    padding: 2px 6px;
    border-radius: 4px;
    font-family: monospace;
    font-weight: 700;
    color: #0f172a;
}

.rk-flow-explanation a {
    color: var(--rk-flow-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

@media (max-width: 768px) {
    .rk-flow-header, .rk-flow-controls, .rk-flow-results, .rk-flow-explanation { padding: 30px 20px; }
    .rk-flow-results { grid-template-columns: 1fr; gap: 15px; }
    .rk-slider-stack { gap: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#article-hydraulika",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/"
    },
    "headline": "Jak dobrać rozstaw rur ogrzewania podłogowego pod pompę ciepła w lekkiej konstrukcji?",
    "description": "Zasady doboru rozstawu rur (10-15 cm) pod zasilanie 30/25°C. Obliczenia przepływów masowych, oporów i długości pętli PEX dla pomp ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/", 
        "https://sobir.pl/" 
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-07-15"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#dataset-hydraulika",
    "name": "Parametry Hydrauliczne Pętli Grzewczych PEX 16x2",
    "description": "Modele obliczeniowe dla przepływów masowych wody oraz długości pętli ogrzewania podłogowego przy zadanym spadku temperatury dT 5K.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna długość pętli dla rury 16x2",
      "zakres pracy rotametrów rozdzielacza",
      "spadek temperatury zasilania a powrotu",
      "na ile pętli podzielić salon",
      "przepływ masowy wody wzór"
    ],
    "measurementTechnique": "Przeliczanie mocy cieplnej (W) na przepływ (l/min) przy użyciu ciepła właściwego wody 4186 J/(kgK) oraz algorytmu dzielenia długości rur pow. 100mb.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przepływ masowy m = Q / (1,163 * dT).",
        "Zapotrzebowanie na rurę: 6,67 mb/m2 dla rozstawu 15 cm.",
        "Maksymalna długość pojedynczej pętli: 100-120 mb dla zachowania oporów < 20 kPa."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#webapp-hydraulika",
    "name": "Symulator Przepływów i Długości Pętli PEX",
    "description": "Kalkulator interaktywny wyliczający w czasie rzeczywistym wymaganą długość rur, ilość pętli oraz nastawy rotametrów na rozdzielaczu dla danego pomieszczenia.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-flow-container" id="rk-hydraulic-simulator">
    
    <div class="rk-flow-header">
        <h2>Jak dobrać rozstaw rur ogrzewania podłogowego pod pompę ciepła w lekkiej konstrukcji?</h2>
        <p>W lekkiej konstrukcji szkieletowej o jednostkowym zapotrzebowaniu rzędu <strong>25–40 W/m²</strong>, optymalny rozstaw rur to <strong>15 cm w pokojach</strong> oraz <strong>10 cm w łazienkach</strong>. Taki dobór gwarantuje możliwość pracy pompy ciepła na niskich parametrach zasilania 30/25°C, co jest kluczem do energooszczędności.</p>
        <p>Im mniejszy rozstaw rur (gęstsze ułożenie), tym większa powierzchnia wymiany i niższa wymagana temperatura wody. A musisz wiedzieć, że <strong>każde obniżenie temperatury zasilania o 1°C to wzrost sprawności COP pompy ciepła o 2,5–3%.</strong></p>
    </div>

    <!-- Symulator na żywo -->
    <div class="rk-flow-calc-box">
        
        <div class="rk-flow-controls">
            <h3>
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M12 8v4l3 3"></path></svg>
                Symulator Przepływów i Długości Pętli (dT = 5K)
            </h3>
            <div class="rk-slider-stack">
                <div class="rk-slider-item">
                    <div class="rk-slider-top">
                        <span>Powierzchnia salonu (A)</span>
                        <span class="rk-slider-val" id="fValArea">25 m²</span>
                    </div>
                    <input type="range" class="rk-flow-range" id="fSlArea" min="10" max="50" step="1" value="25" oninput="runFlowSim()">
                </div>
                <div class="rk-slider-item">
                    <div class="rk-slider-top">
                        <span>Zapotrzebowanie (q)</span>
                        <span class="rk-slider-val" id="fValQ">35 W/m²</span>
                    </div>
                    <input type="range" class="rk-flow-range" id="fSlQ" min="20" max="60" step="1" value="35" oninput="runFlowSim()">
                </div>
                <div class="rk-slider-item">
                    <div class="rk-slider-top">
                        <span>Rozstaw rur (W)</span>
                        <span class="rk-slider-val" id="fValSpacing">15 cm</span>
                    </div>
                    <input type="range" class="rk-flow-range" id="fSlSpacing" min="10" max="25" step="5" value="15" oninput="runFlowSim()">
                </div>
            </div>
        </div>

        <div class="rk-flow-results">
            <div class="rk-result-card">
                <div class="rk-result-title">Moc do dostarczenia</div>
                <div class="rk-result-value" id="resTotalQ">875<span>W</span></div>
            </div>
            <div class="rk-result-card">
                <div class="rk-result-title">Całkowity metraż rury</div>
                <div class="rk-result-value" id="resLength">167<span>mb</span></div>
            </div>
            <div class="rk-result-card">
                <div class="rk-result-title">Ilość niezależnych pętli</div>
                <div class="rk-result-value rk-result-warn" id="resLoops">2<span>pętle</span></div>
            </div>
            <div class="rk-result-card">
                <div class="rk-result-title">Nastawa rotametru (na pętlę)</div>
                <div class="rk-result-value rk-result-highlight" id="resFlow">1.25<span>l/min</span></div>
            </div>
        </div>

    </div>

    <!-- Tłumaczenie inżynierskie z linkami SEO -->
    <div class="rk-flow-explanation">
        <h3>Skąd wzięły się te wyniki? Przykład obliczeniowy</h3>
        
        <div class="rk-flow-step">
            <h4>1. Obliczenie przepływu masowego wody</h4>
            <p>Zapotrzebowanie salonu wynosi <span class="rk-flow-math" id="txtTotalQ">875 W</span>. Zakładamy rurę PEX 16x2 oraz <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">spadek temperatury zasilania a powrotu</a> (tzw. delta T) na poziomie 5K. Dzielimy moc przez ciepło właściwe wody (1,163 Wh/kgK) i deltę T. Otrzymujemy całkowity przepływ rzędu <span class="rk-flow-math" id="txtTotalFlow">2.5 l/min</span>.</p>
        </div>

        <div class="rk-flow-step">
            <h4>2. Długość rury i dławienie hydrauliczne</h4>
            <p>Przy wybranym rozstawie całkowita rura wynosi <span class="rk-flow-math" id="txtLength">167 mb</span>. Ponieważ <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalna długość pętli dla rury 16x2</a> nie powinna przekraczać 100–120 mb (aby opory nie przekroczyły 20 kPa), musimy zaplanować, <a href="https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/">na ile pętli podzielić salon</a>. Dzielimy pokój na <span class="rk-flow-math" id="txtLoops">2</span> równe obwody.</p>
        </div>

        <div class="rk-flow-step">
            <h4>3. Nastawa na rozdzielaczu</h4>
            <p>Dzieląc całkowity przepływ przez ilość pętli, otrzymujemy wymaganą nastawę wynoszącą <span class="rk-flow-math" id="txtLoopFlow">1.25 l/min</span>. Taka wartość idealnie trafia w optymalny <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">zakres pracy rotametrów rozdzielacza</a> (które zazwyczaj precyzyjnie operują w widełkach 1,0 do 2,5 l/min).</p>
        </div>
    </div>

</div>

<script>
function runFlowSim() {
    // 1. Pobranie danych wejściowych
    var area = parseFloat(document.getElementById('fSlArea').value);
    var qUnit = parseFloat(document.getElementById('fSlQ').value);
    var spacingCm = parseFloat(document.getElementById('fSlSpacing').value);

    // 2. Aktualizacja labeli
    document.getElementById('fValArea').textContent = area + ' m²';
    document.getElementById('fValQ').textContent = qUnit + ' W/m²';
    document.getElementById('fValSpacing').textContent = spacingCm + ' cm';

    // 3. Obliczenia hydrauliczne
    var totalQ = Math.round(area * qUnit);
    
    // Przepływ = Q / (1.163 * dT). Zakładamy dT = 5K.
    // Wynik to kg/h. Dzielimy przez 60 by otrzymać l/min.
    var massFlowKgH = totalQ / (1.163 * 5);
    var totalFlowLMin = massFlowKgH / 60;
    
    // Długość rury: dla 10cm to 10 mb/m2, dla 15cm to ~6.67 mb/m2, dla 20cm to 5 mb/m2, dla 25cm to 4 mb/m2.
    var multiplier = 100 / spacingCm;
    var totalLength = Math.round(area * multiplier);
    
    // Ustalanie ilości pętli (nie przekraczamy ~100m na pętlę bezwzględnie)
    var loops = 1;
    if (totalLength > 100) {
        if (totalLength <= 200) {
            loops = 2;
        } else {
            if (totalLength <= 300) {
                loops = 3;
            } else {
                if (totalLength <= 400) {
                    loops = 4;
                } else {
                    loops = 5;
                }
            }
        }
    }
    
    // Przepływ na rotametr
    var flowPerLoop = totalFlowLMin / loops;

    // 4. Aktualizacja Dashboardu
    document.getElementById('resTotalQ').innerHTML = totalQ + '<span>W</span>';
    document.getElementById('resLength').innerHTML = totalLength + '<span>mb</span>';
    
    var elLoops = document.getElementById('resLoops');
    elLoops.innerHTML = loops + '<span>' + (loops === 1 ? 'pętla' : 'pętle') + '</span>';
    if(loops > 1) {
        elLoops.className = 'rk-result-value rk-result-warn';
    } else {
        elLoops.className = 'rk-result-value';
    }
    
    document.getElementById('resFlow').innerHTML = flowPerLoop.toFixed(2) + '<span>l/min</span>';

    // 5. Aktualizacja wartości w tekście (Dowód Inżynierski)
    document.getElementById('txtTotalQ').textContent = totalQ + ' W';
    document.getElementById('txtTotalFlow').textContent = totalFlowLMin.toFixed(2) + ' l/min';
    document.getElementById('txtLength').textContent = totalLength + ' mb';
    document.getElementById('txtLoops').textContent = loops;
    document.getElementById('txtLoopFlow').textContent = flowPerLoop.toFixed(2) + ' l/min';
}

// Uruchomienie na start (25 m2, 35 W/m2, 15 cm daje równe 875W, 167m rury, 2 pętle, 1.25 l/min)
runFlowSim();
</script>



<style>
:root {
    --rk-comp-dark: #0f172a;
    --rk-comp-blue: #0284c7;
    --rk-comp-blue-light: #f0f9ff;
    --rk-comp-gold: #eab308;
    --rk-comp-bg: #ffffff;
    --rk-comp-border: #e2e8f0;
    --rk-comp-text: #475569;
    --rk-comp-green: #10b981;
    --rk-comp-red: #ef4444;
}

.rk-comp-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-comp-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-comp-border);
    overflow: hidden;
}

/* Sekcja nagłówkowa */
.rk-comp-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #f8fafc 0%, #e0f2fe 100%);
    border-bottom: 1px solid var(--rk-comp-border);
}

.rk-comp-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-comp-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-comp-header p {
    font-size: 16px;
    color: var(--rk-comp-text);
    line-height: 1.7;
    margin: 0;
}

.rk-comp-header a {
    color: var(--rk-comp-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Interaktywny selektor technologii */
.rk-comp-selector {
    display: flex;
    flex-direction: row;
    background: #f1f5f9;
    padding: 20px 50px;
    gap: 15px;
    border-bottom: 1px solid var(--rk-comp-border);
}

.rk-tech-btn {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    gap: 10px;
    padding: 15px 10px;
    background: #ffffff;
    border: 2px solid transparent;
    border-radius: 16px;
    cursor: pointer;
    transition: all 0.3s ease;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-tech-btn:hover {
    background: var(--rk-comp-blue-light);
}

.rk-tech-btn.active {
    border-color: var(--rk-comp-blue);
    background: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.2);
    transform: translateY(-2px);
}

.rk-tech-icon {
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #e2e8f0;
    color: #64748b;
    border-radius: 10px;
    transition: all 0.3s;
}

.rk-tech-btn.active .rk-tech-icon {
    background: var(--rk-comp-blue);
    color: #ffffff;
}

.rk-tech-name {
    font-size: 14px;
    font-weight: 800;
    color: #64748b;
    transition: color 0.3s;
}

.rk-tech-btn.active .rk-tech-name {
    color: var(--rk-comp-dark);
}

/* Dashboard wyników (Kafelki) */
.rk-comp-dashboard {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-dash-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    animation: fadeInDash 0.3s ease-in-out;
}

@keyframes fadeInDash {
    from { opacity: 0; transform: scale(0.98); }
    to { opacity: 1; transform: scale(1); }
}

.rk-param-card {
    background: #f8fafc;
    border: 1px solid var(--rk-comp-border);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    transition: all 0.3s;
}

.rk-param-label {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    color: #94a3b8;
    margin-bottom: 10px;
    letter-spacing: 0.5px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-param-label svg {
    color: var(--rk-comp-blue);
}

.rk-param-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-comp-dark);
    margin: 0;
    line-height: 1.2;
}

/* Modyfikatory kolorystyczne dla wartości */
.val-good { color: var(--rk-comp-green); }
.val-warn { color: var(--rk-comp-gold); }
.val-bad { color: var(--rk-comp-red); }

/* Dolna sekcja opisowa */
.rk-comp-footer {
    padding: 0 50px 40px 50px;
    background: #ffffff;
}

.rk-comp-footer p {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-comp-text);
    margin: 0;
    padding-top: 25px;
    border-top: 1px dashed var(--rk-comp-border);
}

.rk-comp-footer a {
    color: var(--rk-comp-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(2, 132, 199, 0.2);
    transition: border-color 0.2s;
}

.rk-comp-footer a:hover {
    border-bottom-color: var(--rk-comp-blue);
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-comp-header, .rk-comp-dashboard, .rk-comp-footer { padding: 30px 20px; }
    
    /* Układ PIONOWY przycisków na mobile (żadnego scrolowania bocznego) */
    .rk-comp-selector { flex-direction: column; padding: 20px; gap: 10px; }
    .rk-tech-btn { flex-direction: row; justify-content: flex-start; text-align: left; padding: 15px 20px; }
    .rk-tech-name { font-size: 15px; }
    
    /* Kafelki na mobile - jeden pod drugim */
    .rk-dash-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-param-card { flex-direction: row; align-items: center; padding: 15px 20px; }
    .rk-param-label { margin-bottom: 0; }
    .rk-param-val { font-size: 18px; text-align: right; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#article-porownanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/"
    },
    "headline": "Suchy vs. mokry system ogrzewania podłogowego – porównanie parametrów technicznych i kosztów",
    "description": "Zestawienie technologii posadzkowych pod kątem nośności stropu, czasu schnięcia, wilgoci technologicznej i kosztów robocizny.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/", 
        "https://sobir.pl/" 
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-07-15"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#dataset-komparator",
    "name": "Porównanie Technologii Posadzkowych Ogrzewania Podłogowego",
    "description": "Baza danych parametrów fizycznych i kosztowych systemów grzewczych stosowanych w budownictwie szkieletowym.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "system mokry czy suchy w wodnym ogrzewaniu podłogowym",
      "czym jest system mokry w wodnym ogrzewaniu podłogowym",
      "wylewka betonowa na ogrzewanie podłogowe",
      "ile trwa montaż ogrzewania podłogowego",
      "podłogówka cena za m2 robocizny"
    ],
    "measurementTechnique": "Zestawienie inżynieryjne parametrów fizyko-chemicznych materiałów budowlanych oraz uśrednionych rynkowych kosztów wykonawstwa na 2026 rok.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "System suchy EPS: Masa 25-35 kg/m2, Wilgoć 0 litrów, Reakcja 30-60 min.",
        "Jastrych anhydrytowy: Masa 95-110 kg/m2, Wilgoć ok. 10 litrów, Reakcja 120-180 min.",
        "Jastrych cementowy: Masa 145-165 kg/m2, Wilgoć ok. 22 litrów, Reakcja 240-360 min.",
        "System suchy maty Alu: Masa 12-15 kg/m2, Wilgoć 0 litrów, Reakcja 15-30 min."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#webapp-komparator",
    "name": "Interaktywny Komparator Technologii Podłogówki",
    "description": "Aplikacja webowa pozwalająca błyskawicznie przełączać i porównywać obciążenia stropów, koszty oraz bezwładność cieplną poszczególnych systemów posadzkowych.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-comp-container" id="rk-tech-comparator">
    <div class="rk-comp-header">
        <h2>Suchy vs. mokry system ogrzewania podłogowego – porównanie parametrów</h2>
        <p>Wybór systemu rzutuje bezpośrednio na nośność konstrukcji stropu oraz dynamikę grzewczą. Przetestuj interaktywny komparator, aby zrozumieć wady i zalety tradycyjnych wylewek w zestawieniu z ultralekkimi zabudowami suchymi.</p>
    </div>

    <!-- Nawigacja / Przyciski wyboru -->
    <div class="rk-comp-selector">
        <button class="rk-tech-btn active" onclick="updateDashboard('eps', this)">
            <div class="rk-tech-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
            </div>
            <span class="rk-tech-name">System Suchy (Płyta EPS + Al)</span>
        </button>
        <button class="rk-tech-btn" onclick="updateDashboard('anh', this)">
            <div class="rk-tech-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"></path></svg>
            </div>
            <span class="rk-tech-name">Jastrych Anhydrytowy (40 mm)</span>
        </button>
        <button class="rk-tech-btn" onclick="updateDashboard('cem', this)">
            <div class="rk-tech-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
            </div>
            <span class="rk-tech-name">Jastrych Cementowy (65 mm)</span>
        </button>
        <button class="rk-tech-btn" onclick="updateDashboard('mat', this)">
            <div class="rk-tech-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>
            <span class="rk-tech-name">System Suchy (Maty Alu)</span>
        </button>
    </div>

    <!-- Dashboard (Kafelki z wynikami) -->
    <div class="rk-comp-dashboard" id="dashContainer">
        <div class="rk-dash-grid">
            
            <div class="rk-param-card">
                <div class="rk-param-label">
                    <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="8" width="18" height="8" rx="1" ry="1"></rect><path d="M12 8v8"></path></svg>
                    Grubość const.
                </div>
                <div class="rk-param-val" id="valThick">25–30 mm</div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-label">
                    <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></svg>
                    Obciążenie stropu
                </div>
                <div class="rk-param-val val-good" id="valWeight">25–35 kg/m²</div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-label">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                    Przewodność cieplna
                </div>
                <div class="rk-param-val" id="valLambda">Bezpośrednia (Al)</div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-label">
                    <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><polyline points="12 6 12 12 16 14"></polyline></svg>
                    Czas reakcji
                </div>
                <div class="rk-param-val val-good" id="valReact">30–60 min</div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-label">
                    <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="M3 15v4c0 1.1.9 2 2 2h14a2 2 0 0 0 2-2v-4M17 9l-5 5-5-5M12 12.8V2.5"></path></svg>
                    Wilgoć technolog.
                </div>
                <div class="rk-param-val val-good" id="valMoist">0 litrów</div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-label">
                    <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="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg>
                    Czas schnięcia
                </div>
                <div class="rk-param-val val-good" id="valDry">0 dni</div>
            </div>

        </div>
    </div>

    <!-- Stopka informacyjna SEO z max 4 naturalnymi linkami -->
    <div class="rk-comp-footer">
        <p>Analizując powyższe dane inżynieryjne, odwieczny dylemat <a href="https://projekt-ogrzewania.pl/system-mokry-czy-suchy-w-wodnym-ogrzewaniu-podlogowym-ktory-wybrac/">system mokry czy suchy w wodnym ogrzewaniu podłogowym</a> w przypadku domu z drewna rozwiązuje się sam. Decydując się na tradycyjną <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">wylewkę na ogrzewanie podłogowe</a>, musimy zaakceptować drastyczny spadek sterowalności temperaturą. Dodatkowo, przy planowaniu budżetu inwestycji, należy zawsze uwzględniać bieżącą <a href="https://projekt-ogrzewania.pl/podlogowka-cena-za-m%c2%b2-robocizny/">cenę robocizny za m²</a> instalacji oraz fizyczny fakt, <a href="https://projekt-ogrzewania.pl/ile-trwa-montaz-ogrzewania-podlogowego/">ile trwa montaż ogrzewania podłogowego</a>, aby uniknąć kilkutygodniowych przestojów związanych ze schnięciem betonowego jastrychu.</p>
    </div>
</div>

<script>
function updateDashboard(techId, btnElement) {
    // 1. Zabezpieczony reset przycisków
    var navContainer = btnElement.parentElement;
    var allBtns = navContainer.getElementsByClassName('rk-tech-btn');
    var i = 0;
    while (i < allBtns.length) {
        allBtns[i].classList.remove('active');
        i++;
    }
    btnElement.classList.add('active');

    // 2. Pobranie referencji do elementów DOM
    var valThick = document.getElementById('valThick');
    var valWeight = document.getElementById('valWeight');
    var valLambda = document.getElementById('valLambda');
    var valReact = document.getElementById('valReact');
    var valMoist = document.getElementById('valMoist');
    var valDry = document.getElementById('valDry');
    
    // Animacja przeładowania (restart animacji CSS)
    var grid = document.querySelector('.rk-dash-grid');
    grid.style.animation = 'none';
    grid.offsetHeight; // wyzwolenie reflow
    grid.style.animation = null;

    // 3. Logika przypisywania wartości (bez znaków ampersand/or)
    if (techId === 'eps') {
        valThick.textContent = '25–30 mm';
        
        valWeight.textContent = '25–35 kg/m²';
        valWeight.className = 'rk-param-val val-good';
        
        valLambda.textContent = 'Bezpośrednia (Al)';
        
        valReact.textContent = '30–60 min';
        valReact.className = 'rk-param-val val-good';
        
        valMoist.textContent = '0 litrów';
        valMoist.className = 'rk-param-val val-good';
        
        valDry.textContent = '0 dni';
        valDry.className = 'rk-param-val val-good';
    }
    
    if (techId === 'anh') {
        valThick.textContent = '45–50 mm';
        
        valWeight.textContent = '95–110 kg/m²';
        valWeight.className = 'rk-param-val val-warn';
        
        valLambda.textContent = '1,6–1,8 W/(mK)';
        
        valReact.textContent = '120–180 min';
        valReact.className = 'rk-param-val val-warn';
        
        valMoist.textContent = 'Ok. 10 litrów/m²';
        valMoist.className = 'rk-param-val val-warn';
        
        valDry.textContent = '7–14 dni';
        valDry.className = 'rk-param-val val-warn';
    }
    
    if (techId === 'cem') {
        valThick.textContent = '65–75 mm';
        
        valWeight.textContent = '145–165 kg/m²';
        valWeight.className = 'rk-param-val val-bad';
        
        valLambda.textContent = '1,1–1,3 W/(mK)';
        
        valReact.textContent = '240–360 min';
        valReact.className = 'rk-param-val val-bad';
        
        valMoist.textContent = 'Ok. 22 litrów/m²';
        valMoist.className = 'rk-param-val val-bad';
        
        valDry.textContent = '28–42 dni';
        valDry.className = 'rk-param-val val-bad';
    }
    
    if (techId === 'mat') {
        valThick.textContent = '15–18 mm';
        
        valWeight.textContent = '12–15 kg/m²';
        valWeight.className = 'rk-param-val val-good';
        
        valLambda.textContent = 'Bezpośrednia (Al)';
        
        valReact.textContent = '15–30 min';
        valReact.className = 'rk-param-val val-good';
        
        valMoist.textContent = '0 litrów';
        valMoist.className = 'rk-param-val val-good';
        
        valDry.textContent = '0 dni';
        valDry.className = 'rk-param-val val-good';
    }
}
</script>



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-blue: #0284c7;
    --rk-calc-blue-light: #f0f9ff;
    --rk-calc-gold: #eab308;
    --rk-calc-bg: #ffffff;
    --rk-calc-border: #e2e8f0;
    --rk-calc-text: #334155;
    --rk-calc-code: #1e293b;
    --rk-calc-accent: #38bdf8;
    --rk-calc-alert: #ef4444;
}

.rk-calc-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-calc-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid var(--rk-calc-border);
    overflow: hidden;
}

/* Header */
.rk-calc-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #f8fafc 0%, #e0f2fe 100%);
    border-bottom: 1px solid var(--rk-calc-border);
    text-align: center;
}

.rk-calc-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-calc-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-calc-header p {
    font-size: 16px;
    color: var(--rk-calc-text);
    line-height: 1.6;
    margin: 0 auto;
    max-width: 800px;
}

/* Interaktywny Panel Główny (Ciemny) */
.rk-live-panel {
    background: var(--rk-calc-dark);
    padding: 35px 50px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-calc-gold);
}

.rk-live-title {
    font-size: 18px;
    font-weight: 800;
    color: #e2e8f0;
    margin: 0 0 25px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-live-title svg { color: var(--rk-calc-accent); }

/* Suwaki - Układ Pionowy */
.rk-sliders-wrapper {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-slider-group {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.rk-slider-label {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 15px;
    font-weight: 700;
    color: #94a3b8;
}

.rk-slider-val-badge {
    background: var(--rk-calc-accent);
    color: var(--rk-calc-dark);
    padding: 4px 12px;
    border-radius: 6px;
    font-weight: 900;
    font-size: 16px;
}

/* Suwaki stylizowane */
.rk-range {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    background: #334155;
    border-radius: 5px;
    outline: none;
    margin-top: 5px;
}
.rk-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-calc-gold);
    cursor: pointer;
    border: 4px solid #ffffff;
    box-shadow: 0 0 10px rgba(234, 179, 8, 0.6);
    transition: transform 0.1s;
}
.rk-range::-webkit-slider-thumb:hover {
    transform: scale(1.15);
}

/* DASHBOARD WYNIKÓW NA ŻYWO (Nowość) */
.rk-dashboard {
    margin-top: 35px;
    padding-top: 30px;
    border-top: 1px dashed rgba(255, 255, 255, 0.15);
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
}

.rk-dash-card {
    background: rgba(0, 0, 0, 0.25);
    border: 1px solid rgba(255, 255, 255, 0.05);
    border-radius: 12px;
    padding: 15px;
    text-align: center;
    transition: all 0.3s ease;
}

.rk-dash-label {
    font-size: 12px;
    text-transform: uppercase;
    color: #64748b;
    font-weight: 800;
    letter-spacing: 0.5px;
    margin-bottom: 8px;
}

.rk-dash-val {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-calc-accent);
}

.rk-dash-alert {
    display: none;
    grid-column: 1 / -1;
    background: rgba(239, 68, 68, 0.15);
    border: 1px solid var(--rk-calc-alert);
    color: #fca5a5;
    padding: 15px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 600;
    text-align: center;
    margin-top: 5px;
}

/* Nawigacja kroków - układ pionowy */
.rk-calc-nav {
    display: flex;
    flex-direction: column;
    background: #f8fafc;
    padding: 30px 50px;
    gap: 12px;
    border-bottom: 1px solid var(--rk-calc-border);
}

.rk-calc-nav-title {
    font-size: 14px;
    text-transform: uppercase;
    font-weight: 800;
    color: #94a3b8;
    margin: 0 0 5px 0;
}

.rk-step-btn {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-start;
    gap: 20px;
    padding: 16px 25px;
    background: #ffffff;
    border: 2px solid var(--rk-calc-border);
    border-radius: 12px;
    cursor: pointer;
    transition: all 0.3s ease;
    width: 100%;
    text-align: left;
}

.rk-step-btn:hover { background: #f1f5f9; border-color: #cbd5e1; }
.rk-step-btn.active { border-color: var(--rk-calc-blue); background: var(--rk-calc-blue-light); box-shadow: 0 4px 12px rgba(2, 132, 199, 0.15); }

.rk-step-num {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #cbd5e1;
    color: #ffffff;
    font-weight: 900;
    font-size: 15px;
    flex-shrink: 0;
    transition: all 0.3s;
}

.rk-step-btn.active .rk-step-num { background: var(--rk-calc-blue); }
.rk-step-label { font-size: 16px; font-weight: 800; color: #64748b; transition: color 0.3s; }
.rk-step-btn.active .rk-step-label { color: var(--rk-calc-dark); }

/* Obszar zawartości (Wzory) */
.rk-calc-content {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-algo-panel {
    display: none;
    animation: fadeInStep 0.4s ease-out;
}

@keyframes fadeInStep {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-algo-panel h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-calc-dark);
    margin: 0 0 20px 0;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-algo-panel h3 svg { color: var(--rk-calc-blue); }

.rk-math-box {
    background: var(--rk-calc-code);
    border-radius: 12px;
    padding: 25px;
    margin-bottom: 25px;
    border-left: 4px solid var(--rk-calc-gold);
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.2);
}

.rk-math-formula {
    font-family: 'Courier New', Courier, monospace;
    font-size: 17px;
    color: #38bdf8;
    font-weight: 700;
    margin: 0 0 15px 0;
    letter-spacing: 0.5px;
}

.rk-math-live-result {
    display: inline-block;
    background: rgba(16, 185, 129, 0.2);
    color: #10b981;
    padding: 4px 10px;
    border-radius: 6px;
    border: 1px solid rgba(16, 185, 129, 0.3);
    font-size: 18px;
    margin-top: 10px;
}

.rk-math-desc {
    font-size: 14px;
    color: #94a3b8;
    margin: 0;
    font-style: italic;
}

.rk-algo-panel p { font-size: 16px; line-height: 1.7; color: var(--rk-calc-text); }
.rk-algo-panel a { color: var(--rk-calc-blue); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }

/* Potężne CTA */
.rk-calc-cta {
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, #1e293b 100%);
    padding: 45px 50px;
    text-align: center;
    border-top: 1px solid #334155;
}
.rk-calc-cta h3 { color: #ffffff; font-size: 26px; font-weight: 900; margin: 0 0 15px 0; }
.rk-calc-cta p { color: #94a3b8; font-size: 16px; line-height: 1.6; margin: 0 auto 30px auto; max-width: 650px; }

.rk-btn-massive {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: #eab308;
    color: #0f172a;
    font-size: 15px;
    font-weight: 900;
    padding: 20px 30px;
    border-radius: 14px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(234, 179, 8, 0.3);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-btn-massive:hover {
    transform: translateY(-4px);
    background: #fde047;
    box-shadow: 0 15px 30px -5px rgba(234, 179, 8, 0.4);
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-calc-header, .rk-live-panel, .rk-calc-content, .rk-calc-cta { padding: 25px 20px; }
    .rk-dashboard { grid-template-columns: repeat(2, 1fr); gap: 10px; }
    .rk-dash-val { font-size: 20px; }
    .rk-calc-nav { padding: 20px; gap: 10px; }
    .rk-step-btn { padding: 15px 20px; flex-direction: column; align-items: flex-start; gap: 10px; }
    .rk-math-formula { font-size: 14px; }
    .rk-btn-massive { width: 100%; text-align: center; flex-direction: column; padding: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#article-symulator",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/"
    },
    "headline": "Algorytm obliczeniowy do projektowania ogrzewania w domu szkieletowym na żywo",
    "description": "Interaktywny kalkulator inżynierski OZC. Przesuwaj wskaźniki powierzchni i izolacji, aby na żywo śledzić zmiany parametrów rur, temperatury posadzki i mocy.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/", 
        "https://sobir.pl/" 
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-07-15"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#dataset-kalkulator",
    "name": "Wzory Fizyki Budowli – Dynamiczna Termodynamika Ogrzewania",
    "description": "Zbiór inżynieryjnych wzorów obliczeniowych, z dynamicznym przeliczaniem gęstości strumienia cieplnego, temperatury powierzchni oraz rozstawu rur PEX.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator strat ciepła budynku na żywo",
      "obliczenie rozstawu rur podłogówki m2",
      "wzór na temperaturę posadzki",
      "koszt ogrzewania domu szkieletowego",
      "obliczenia OZC norma PN-EN 12831"
    ],
    "measurementTechnique": "Dynamiczne obliczenia JavaScript na bazie norm PN-EN 1264 i PN-EN 12831 (symulacja parametrów wejściowych inwestora).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Krok 1: Obliczenie OZC w oparciu o suwak metrażu (A_pos) i izolacji budynku.",
        "Krok 2: Korekta na zyski solarne dla domów drewnianych (współczynnik 0,95).",
        "Krok 3: Wyznaczenie q (W/m2).",
        "Krok 4: Ustalenie fizjologicznej temperatury posadzki (max 29 stopni).",
        "Krok 5: Obliczenie potrzebnego metrażu rur PEX/PERT zależnie od suwaka rozstawu."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#webapp-kalkulator",
    "name": "Live Symulator OZC i Hydrauliki Podłogowej",
    "description": "Interaktywna aplikacja webowa z suwakami czasu rzeczywistego, wizualizująca wpływ wielkości pomieszczenia i izolacji na parametry pracy pompy ciepła.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-container" id="rk-interactive-wizard">
    <div class="rk-calc-header">
        <h2>Algorytm obliczeniowy OZC (Live Symulator)</h2>
        <p>Nie czytaj suchych wzorów – przelicz swój dom w czasie rzeczywistym. Zmień parametry suwakami poniżej i natychmiast zobacz wyniki na tablicy wskaźników. Poznaj fizykę swojego budynku.</p>
    </div>

    <!-- Panel Sterowania Na Żywo z Wbudowanym Dashboardem -->
    <div class="rk-live-panel">
        <h3 class="rk-live-title">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg>
            Krok 1: Wprowadź parametry pokoju
        </h3>
        
        <div class="rk-sliders-wrapper">
            <div class="rk-slider-group">
                <div class="rk-slider-label">
                    <span>Powierzchnia posadzki netto</span>
                    <span class="rk-slider-val-badge" id="valArea">20 m²</span>
                </div>
                <input type="range" class="rk-range" id="slArea" min="10" max="50" step="1" value="20" oninput="runSim()">
            </div>
            <div class="rk-slider-group">
                <div class="rk-slider-label">
                    <span>Projektowe zapotrzebowanie (izolacja)</span>
                    <span class="rk-slider-val-badge" id="valQ">40 W/m²</span>
                </div>
                <input type="range" class="rk-range" id="slQ" min="20" max="80" step="5" value="40" oninput="runSim()">
            </div>
            <div class="rk-slider-group">
                <div class="rk-slider-label">
                    <span>Rozstaw rur PEX/PERT</span>
                    <span class="rk-slider-val-badge" id="valSpacing">15 cm</span>
                </div>
                <input type="range" class="rk-range" id="slSpacing" min="10" max="25" step="5" value="15" oninput="runSim()">
            </div>
        </div>

        <!-- Nowość: DASHBOARD NA ŻYWO -->
        <div class="rk-dashboard">
            <div class="rk-dash-card">
                <div class="rk-dash-label">Moc całkowita</div>
                <div class="rk-dash-val" id="dashTotalQ">800 W</div>
            </div>
            <div class="rk-dash-card">
                <div class="rk-dash-label">Wymagany Strumień</div>
                <div class="rk-dash-val" id="dashStrumien">38 W/m²</div>
            </div>
            <div class="rk-dash-card">
                <div class="rk-dash-label">Temp. Posadzki</div>
                <div class="rk-dash-val" id="dashTemp">23.5 °C</div>
            </div>
            <div class="rk-dash-card">
                <div class="rk-dash-label">Potrzebna Rura</div>
                <div class="rk-dash-val" id="dashRury">133 mb</div>
            </div>
            <div class="rk-dash-alert" id="dashAlert">
                ⚠️ BŁĄD PROJEKTOWY: Temperatura podłogi przekracza normatywne 29°C. Pomieszczenie będzie niekomfortowo gorące. Popraw izolację (Zapotrzebowanie)!
            </div>
        </div>
    </div>

    <!-- Nawigacja kroków (Jak to policzyliśmy?) -->
    <div class="rk-calc-nav">
        <p class="rk-calc-nav-title">Krok 2: Poznaj Inżynieryjne Obliczenia (Kliknij)</p>
        <button class="rk-step-btn active" onclick="showLiveStep('stOZC', this)">
            <span class="rk-step-num">1</span>
            <span class="rk-step-label">Wyznaczenie straty ciepła pomieszczenia (Q_obl)</span>
        </button>
        <button class="rk-step-btn" onclick="showLiveStep('stKorekta', this)">
            <span class="rk-step-num">2</span>
            <span class="rk-step-label">Korekta o zyski i bezwładność w szkielecie</span>
        </button>
        <button class="rk-step-btn" onclick="showLiveStep('stStrumien', this)">
            <span class="rk-step-num">3</span>
            <span class="rk-step-label">Obliczenie gęstości strumienia cieplnego (q)</span>
        </button>
        <button class="rk-step-btn" onclick="showLiveStep('stTemp', this)">
            <span class="rk-step-num">4</span>
            <span class="rk-step-label">Sprawdzenie granicznej temperatury posadzki</span>
        </button>
        <button class="rk-step-btn" onclick="showLiveStep('stRury', this)">
            <span class="rk-step-num">5</span>
            <span class="rk-step-label">Zapotrzebowanie na rurę grzewczą (L_rury)</span>
        </button>
    </div>

    <!-- Obszar treści paneli -->
    <div class="rk-calc-content">
        
        <!-- Krok 1: OZC -->
        <div class="rk-algo-panel" id="stOZC" style="display: block;">
            <h3>
                <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 22 22 22"></polygon></svg>
                Wyznaczenie straty ciepła pomieszczenia (Q_obl)
            </h3>
            <div class="rk-math-box">
                <div class="rk-math-formula">Q_obl = <span id="dynArea1">20</span> m² * <span id="dynQ1">40</span> W/m²</div>
                <div class="rk-math-live-result">= <span id="dynTotalQ">800</span> W</div>
                <p class="rk-math-desc" style="margin-top: 15px;">Uproszczony model przenikania (Norma PN-EN 12831).</p>
            </div>
            <p>To absolutny fundament. Im lepiej ocieplony jest Twój dom szkieletowy (wyższa jakość wełny), tym niższe zapotrzebowanie. Sprawdź, jak <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/">rekuperacja i ogrzewanie podłogowe</a> w duecie obniżają ten parametr poprzez eliminację start wentylacyjnych.</p>
        </div>

        <!-- Krok 2: Korekta -->
        <div class="rk-algo-panel" id="stKorekta">
            <h3>
                <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><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>
                Korekta o zyski i bezwładność
            </h3>
            <div class="rk-math-box">
                <div class="rk-math-formula">Q_proj = <span id="dynTotalQ2">800</span> W * 0.95 (współcz. f_reg)</div>
                <div class="rk-math-live-result">= <span id="dynQproj">760</span> W</div>
            </div>
            <p>W domu szkieletowym ze względu na niską akumulacyjność ścian nie stosuje się "mocy na zapas". Taki zoptymalizowany <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/">koszt ogrzewania domu</a> na etapie projektu pozwala dobrać znacznie tańszą pompę ciepła o niższej mocy nominalnej.</p>
        </div>

        <!-- Krok 3: Strumień -->
        <div class="rk-algo-panel" id="stStrumien">
            <h3>
                <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="2" x2="12" y2="22"></line><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                Gęstość strumienia cieplnego (q)
            </h3>
            <div class="rk-math-box">
                <div class="rk-math-formula">q = <span id="dynQproj2">760</span> W / <span id="dynArea2">20</span> m²</div>
                <div class="rk-math-live-result">= <span id="dynStrumien">38</span> W/m²</div>
            </div>
            <p>To wartość mocy, jaką faktycznie musimy wycisnąć z każdego metra kwadratowego podłogi. Jeśli wartość przekroczy 80 W/m², oznacza to, że sam system podłogowy może nie podołać w największe mrozy.</p>
        </div>

        <!-- Krok 4: Temp Posadzki -->
        <div class="rk-algo-panel" id="stTemp">
            <h3>
                <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path><path d="M2 12h20"></path></svg>
                Graniczna temperatura posadzki
            </h3>
            <div class="rk-math-box">
                <div class="rk-math-formula">t_f = 20°C (wnętrze) + ( <span id="dynStrumien2">38</span> / 10.8 alpha )</div>
                <div class="rk-math-live-result">= <span id="dynTemp">23.5</span> °C</div>
            </div>
            <p>Zgodnie z fizyką (norma PN-EN 1264), fizjologiczna granica komfortu wynosi 29°C.</p>
        </div>

        <!-- Krok 5: Rury -->
        <div class="rk-algo-panel" id="stRury">
            <h3>
                <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                Zapotrzebowanie na rurę grzewczą (L_rury)
            </h3>
            <div class="rk-math-box">
                <div class="rk-math-formula">L_rury = <span id="dynArea3">20</span> m² / <span id="dynSpacingM">0.15</span> m (rozstaw)</div>
                <div class="rk-math-live-result">= <span id="dynRura">133</span> mb rury</div>
            </div>
            <p>Znając dokładną długość pętli, unikniesz dławienia przepływów. Jeśli wynik przekracza 100 metrów bieżących, pokój bezwzględnie wymaga podziału na dwie niezależne pętle. Zobacz jak to wpływa na <a href="https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/">średnicę rury zasilającej rozdzielacz</a> w całej kotłowni.</p>
        </div>
    </div>

    <!-- Mocne CTA pod długi ogon na koniec -->
    <div class="rk-calc-cta">
        <h3>Nie ryzykuj własnych pieniędzy przez instalatorów "zgadywaczy"</h3>
        <p>Inwestycja w lekki dom szkieletowy wymaga żelaznych obliczeń inżynierskich. Wyeliminuj błędy, taktowanie pompy i duszne sypialnie opierając się na normatywnych wyliczeniach OZC i pełnej dokumentacji technicznej zawartej w profesjonalnym projekcie.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-massive">
            <span>ZAMÓW INŻYNIERSKI PROJEKT OGRZEWANIA PODŁOGOWEGO Z OBLICZENIAMI OZC ORAZ HYDRAULIKĄ</span>
            <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"></polyline></svg>
        </a>
    </div>
</div>

<script>
function showLiveStep(panelId, btnElement) {
    // Bezpieczne odwołanie do kontenera przycisków
    var navContainer = btnElement.parentElement;
    var allBtns = navContainer.getElementsByClassName('rk-step-btn');
    var i = 0;
    while (i < allBtns.length) {
        allBtns[i].classList.remove('active');
        i++;
    }
    btnElement.classList.add('active');
    
    // Obsługa paneli
    var contentArea = document.querySelector('.rk-calc-content');
    var allPanels = contentArea.getElementsByClassName('rk-algo-panel');
    var j = 0;
    while (j < allPanels.length) {
        allPanels[j].style.display = 'none';
        j++;
    }
    
    var targetPanel = document.getElementById(panelId);
    if (targetPanel !== null) {
        targetPanel.style.display = 'block';
    }
}

function runSim() {
    // 1. Pobranie wartości z suwaków
    var area = parseFloat(document.getElementById('slArea').value);
    var qUnit = parseFloat(document.getElementById('slQ').value);
    var spacing = parseFloat(document.getElementById('slSpacing').value);
    
    // 2. Aktualizacja labeli nad suwakami
    document.getElementById('valArea').textContent = area + ' m²';
    document.getElementById('valQ').textContent = qUnit + ' W/m²';
    document.getElementById('valSpacing').textContent = spacing + ' cm';
    
    // 3. Obliczenia fizyki
    var qObl = area * qUnit;
    var qProj = Math.round(qObl * 0.95);
    var strumien = Math.round(qProj / area);
    var temp = (20 + (strumien / 10.8)).toFixed(1);
    var spacingM = spacing / 100;
    var rury = Math.round(area / spacingM);
    
    // 4. Aktualizacja Głównego Dashboardu
    document.getElementById('dashTotalQ').textContent = qObl + ' W';
    document.getElementById('dashStrumien').textContent = strumien + ' W/m²';
    
    var dashTempEl = document.getElementById('dashTemp');
    var dashAlert = document.getElementById('dashAlert');
    dashTempEl.textContent = temp + ' °C';
    
    if (parseFloat(temp) > 29) {
        dashTempEl.style.color = '#ef4444'; // Red alert
        dashAlert.style.display = 'block';
    } else {
        dashTempEl.style.color = '#38bdf8'; // Accent blue
        dashAlert.style.display = 'none';
    }
    
    document.getElementById('dashRury').textContent = rury + ' mb';

    // 5. Aktualizacja wzorów w zakładkach (Inżynieryjny dowód)
    document.getElementById('dynArea1').textContent = area;
    document.getElementById('dynQ1').textContent = qUnit;
    document.getElementById('dynTotalQ').textContent = qObl;
    
    document.getElementById('dynTotalQ2').textContent = qObl;
    document.getElementById('dynQproj').textContent = qProj;
    
    document.getElementById('dynQproj2').textContent = qProj;
    document.getElementById('dynArea2').textContent = area;
    document.getElementById('dynStrumien').textContent = strumien;
    
    document.getElementById('dynStrumien2').textContent = strumien;
    document.getElementById('dynTemp').textContent = temp;
    
    var spanTempEl = document.getElementById('dynTemp');
    if (parseFloat(temp) > 29) {
        spanTempEl.className = 'rk-dyn-warn';
    } else {
        spanTempEl.className = 'rk-dyn-text';
    }
    
    document.getElementById('dynArea3').textContent = area;
    document.getElementById('dynSpacingM').textContent = spacingM.toFixed(2);
    document.getElementById('dynRura').textContent = rury;
}

// Inicjalizacja przy ładowaniu
runSim();
</script>



<style>
:root {
    --rk-diag-dark: #0f172a;
    --rk-diag-blue: #0284c7;
    --rk-diag-red: #ef4444;
    --rk-diag-red-bg: #fef2f2;
    --rk-diag-green: #10b981;
    --rk-diag-green-bg: #f0fdf4;
    --rk-diag-bg: #ffffff;
    --rk-diag-border: #e2e8f0;
    --rk-diag-text: #475569;
}

.rk-diag-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-diag-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(15, 23, 42, 0.08);
    border: 1px solid var(--rk-diag-border);
    overflow: hidden;
}

.rk-diag-header {
    padding: 40px 50px 30px;
    background: linear-gradient(to bottom, #f8fafc, #ffffff);
    border-bottom: 1px solid var(--rk-diag-border);
    text-align: center;
}

.rk-diag-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-diag-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-diag-header p {
    font-size: 16px;
    color: var(--rk-diag-text);
    line-height: 1.6;
    margin: 0 auto;
    max-width: 800px;
}

/* Zakładki (Jedna kolumna, układ poziomy) */
.rk-diag-tabs {
    display: flex;
    flex-direction: row;
    padding: 20px 50px;
    gap: 15px;
    background: #f8fafc;
    border-bottom: 1px solid var(--rk-diag-border);
    justify-content: space-between;
}

.rk-tab-btn {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 15px 10px;
    background: var(--rk-diag-bg);
    border: 2px solid transparent;
    border-radius: 16px;
    cursor: pointer;
    transition: all 0.3s ease;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
    text-align: center;
}

.rk-tab-btn:hover {
    background: #f1f5f9;
}

.rk-tab-btn.active {
    border-color: var(--rk-diag-red);
    box-shadow: 0 10px 20px -5px rgba(239, 68, 68, 0.15);
}

.rk-tab-num {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #e2e8f0;
    color: #64748b;
    font-weight: 900;
    font-size: 14px;
    transition: all 0.3s;
}

.rk-tab-btn.active .rk-tab-num {
    background: var(--rk-diag-red);
    color: #ffffff;
}

.rk-tab-title {
    font-size: 14px;
    font-weight: 800;
    color: #64748b;
    margin: 0;
    transition: color 0.3s;
}

.rk-tab-btn.active .rk-tab-title {
    color: var(--rk-diag-dark);
}

/* Panele z treścią (Układ 1-kolumnowy) */
.rk-diag-content-area {
    padding: 40px 50px;
}

.rk-diag-panel {
    display: none;
    animation: slideDown 0.4s ease-out;
}

@keyframes slideDown {
    from { opacity: 0; transform: translateY(-10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-diag-panel h3 {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-diag-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

/* Karty jedna pod drugą */
.rk-info-stack {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-info-card {
    padding: 30px;
    border-radius: 16px;
    border: 1px solid;
    position: relative;
}

.rk-card-bad {
    background: var(--rk-diag-red-bg);
    border-color: rgba(239, 68, 68, 0.2);
}

.rk-card-good {
    background: var(--rk-diag-green-bg);
    border-color: rgba(16, 185, 129, 0.2);
}

.rk-card-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 15px;
}

.rk-card-header svg {
    width: 28px;
    height: 28px;
}

.rk-card-bad .rk-card-header svg { color: var(--rk-diag-red); }
.rk-card-good .rk-card-header svg { color: var(--rk-diag-green); }

.rk-card-header h4 {
    margin: 0;
    font-size: 18px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.rk-card-bad h4 { color: var(--rk-diag-red); }
.rk-card-good h4 { color: var(--rk-diag-green); }

.rk-info-card p {
    margin: 0;
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-diag-text);
}

.rk-info-card a {
    color: var(--rk-diag-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-diag-header, .rk-diag-content-area { padding: 30px 20px; }
    .rk-diag-tabs { flex-direction: column; padding: 20px; gap: 10px; }
    .rk-tab-btn { flex-direction: row; justify-content: flex-start; padding: 15px; }
    .rk-tab-title { font-size: 15px; }
    .rk-diag-panel h3 { font-size: 20px; }
    .rk-info-card { padding: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/"
    },
    "headline": "Najczęstsze błędy instalacyjne i projektowe – jak ich unikać?",
    "description": "Interaktywne zestawienie najgroźniejszych błędów przy montażu ogrzewania w technologii szkieletowej: taktowanie pompy ciepła, brak strefowania i uszkodzenia paroizolacji.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/", 
        "https://sobir.pl/" 
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-07-15"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#dataset-diagnoza",
    "name": "Katalog Błędów Instalacyjnych w Konstrukcji Szkieletowej",
    "description": "Baza danych inżynieryjnych zestawiająca błędy montażowe z normatywnymi rozwiązaniami technicznymi dedykowanymi dla budownictwa drewnianego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "przewymiarowanie instalacji",
      "taktowanie pompy ciepła",
      "uszkodzenie paroizolacji",
      "brak strefowania",
      "najczęstsze błędy instalatora podłogówki"
    ],
    "measurementTechnique": "Analiza defektów montażowych w oparciu o fizykę cieplną budynków drewnianych i wytyczne układów pompowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Problem: Brak strefowania prowadzący do przegrzewania wnętrz od południa. Rozwiązanie: Termostaty z algorytmem TPI.",
        "Problem: Przewymiarowanie i zbyt gęsty rozstaw rur powodujące taktowanie sprężarki. Rozwiązanie: Zwiększenie rozstawu do 20 cm przy niskim OZC.",
        "Problem: Przebijanie folii paroizolacyjnej spinkami Tacker. Rozwiązanie: Klejenie systemowe i rezygnacja z mechanicznych uszkodzeń folii PE."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#webapp-diagnoza",
    "name": "Jednokolumnowy Interaktywny Diagnozer Błędów",
    "description": "Aplikacja pozwalająca inwestorowi na identyfikację patologii montażowych na budowie oraz poznanie poprawnej, inżynierskiej alternatywy.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-diag-container" id="rk-error-viewer">
    <div class="rk-diag-header">
        <h2>Najczęstsze błędy instalacyjne i projektowe – jak ich unikać?</h2>
        <p>Lata praktyki weryfikują radosną twórczość instalatorów. W domach o lekkiej konstrukcji szkieletowej konsekwencje powielania nawyków z murowanych budów są natychmiastowe i bardzo kosztowne. Zdiagnozuj i wyeliminuj problem przed wylaniem posadzki.</p>
    </div>

    <!-- Zakładki górne (Jedna kolumna na treści poniżej) -->
    <div class="rk-diag-tabs">
        <button class="rk-tab-btn active" onclick="showDiagPanel('diag1', this)">
            <span class="rk-tab-num">1</span>
            <span class="rk-tab-title">Brak strefowania</span>
        </button>
        <button class="rk-tab-btn" onclick="showDiagPanel('diag2', this)">
            <span class="rk-tab-num">2</span>
            <span class="rk-tab-title">Taktowanie pompy</span>
        </button>
        <button class="rk-tab-btn" onclick="showDiagPanel('diag3', this)">
            <span class="rk-tab-num">3</span>
            <span class="rk-tab-title">Dziurawienie folii</span>
        </button>
    </div>

    <!-- Obszar treści (Struktura stosu: Problem -> Rozwiązanie) -->
    <div class="rk-diag-content-area">
        
        <!-- Panel 1 -->
        <div class="rk-diag-panel" id="diag1" style="display: block;">
            <h3>Brak strefowania i sterowania pomieszczeniami</h3>
            <div class="rk-info-stack">
                <div class="rk-info-card rk-card-bad">
                    <div class="rk-card-header">
                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                        <h4>Anatomia Problemu</h4>
                    </div>
                    <p>Domy szkieletowe z dużymi przeszkleniami od południa nagrzewają się od słońca w ciągu 30–45 minut o kilka stopni. Jeśli pętle grzewcze salonu i sypialni północnej są połączone lub pracują bez termostatów pokojowych, w salonie temperatura szybko wzrośnie do dusznych 25°C, podczas gdy zacieniona sypialnia pozostanie niekomfortowo niedogrzana.</p>
                </div>
                <div class="rk-info-card rk-card-good">
                    <div class="rk-card-header">
                        <svg 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>
                        <h4>Inżynierskie Rozwiązanie</h4>
                    </div>
                    <p>Bezwzględne stosowanie zaworów na każdej pętli rozdzielacza. Kluczem jest <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowanie strefowe ogrzewaniem</a> z wykorzystaniem <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">inteligentnych termostatów TPI</a>. Automatyka analizuje bezwładność systemu i ucina zasilanie na ułamek sekundy przed tym, zanim nastąpi przegrzanie wywołane zyskami solarnymi.</p>
                </div>
            </div>
        </div>

        <!-- Panel 2 -->
        <div class="rk-diag-panel" id="diag2">
            <h3>Przewymiarowanie instalacji (Złoty standard: "co 10 cm")</h3>
            <div class="rk-info-stack">
                <div class="rk-info-card rk-card-bad">
                    <div class="rk-card-header">
                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                        <h4>Anatomia Problemu</h4>
                    </div>
                    <p>Zagęszczenie rur (rozstaw co 10 cm w całym domu) przy niskim zapotrzebowaniu na ciepło skutkuje brakiem możliwości zrzutu mocy. Sprężarka włącza się i wyłącza co 5 minut (taktowanie). Zjawisko to potrafi skrócić żywotność drogiej pompy ciepła o 50–70% oraz radykalnie obniżyć współczynnik COP.</p>
                </div>
                <div class="rk-info-card rk-card-good">
                    <div class="rk-card-header">
                        <svg 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>
                        <h4>Inżynierskie Rozwiązanie</h4>
                    </div>
                    <p>Dobór oparty ściśle na obliczeniach strat ciepła (OZC). W strefach o zapotrzebowaniu poniżej 30 W/m² instalator powinien zastosować <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur w ogrzewaniu podłogowym równy 20 cm</a>, co gwarantuje długą, płynną i ekonomiczną pracę inwerterowej pompy ciepła.</p>
                </div>
            </div>
        </div>

        <!-- Panel 3 -->
        <div class="rk-diag-panel" id="diag3">
            <h3>Uszkodzenie paroizolacji podczas montażu</h3>
            <div class="rk-info-stack">
                <div class="rk-info-card rk-card-bad">
                    <div class="rk-card-header">
                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                        <h4>Anatomia Problemu</h4>
                    </div>
                    <p>Montaż rur na stropie drewnianym przy użyciu spinek wbijanych przez taker bezpośrednio w poszycie. Spinki dziurawią folią paroizolacyjną. Przez setki otworów wilgoć z pomieszczeń wnika w głąb stropu, co wywołuje zjawisko kondensacji – w efekcie izolacja z wełny przestaje działać, a drewno zaczyna gnić.</p>
                </div>
                <div class="rk-info-card rk-card-good">
                    <div class="rk-card-header">
                        <svg 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>
                        <h4>Inżynierskie Rozwiązanie</h4>
                    </div>
                    <p>Na stropach lekkich należy stosować maty z wypustkami bez mocowania mechanicznego do podłoża lub kleić płyty EPS specjalistycznymi pianoklejami o niskiej prężności. Przeczytaj koniecznie, jakie są pozostałe <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">najczęstsze błędy przy montażu ogrzewania podłogowego</a>, aby ochronić dom.</p>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
function showDiagPanel(panelId, btnElement) {
    // 1. Zabezpieczony reset zakładek (Tabs)
    var tabContainer = document.querySelector('.rk-diag-tabs');
    var allTabs = tabContainer.getElementsByClassName('rk-tab-btn');
    var i = 0;
    while (i < allTabs.length) {
        allTabs[i].classList.remove('active');
        i++;
    }
    
    // 2. Aktywacja klikniętej zakładki
    btnElement.classList.add('active');
    
    // 3. Zabezpieczony reset wszystkich paneli
    var contentArea = document.querySelector('.rk-diag-content-area');
    var allPanels = contentArea.getElementsByClassName('rk-diag-panel');
    var j = 0;
    while (j < allPanels.length) {
        allPanels[j].style.display = 'none';
        j++;
    }
    
    // 4. Płynne wyświetlenie docelowego panelu
    var targetPanel = document.getElementById(panelId);
    if (targetPanel !== null) {
        targetPanel.style.display = 'block';
    }
}
</script>



<style>
:root {
    --rk-step-dark: #0f172a;
    --rk-step-blue: #0284c7;
    --rk-step-blue-light: #e0f2fe;
    --rk-step-green: #10b981;
    --rk-step-bg: #ffffff;
    --rk-step-border: #e2e8f0;
    --rk-step-text: #334155;
    --rk-step-inactive: #f1f5f9;
}

.rk-pipeline-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-step-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.1);
    border: 1px solid var(--rk-step-border);
    overflow: hidden;
}

.rk-pipeline-header {
    padding: 40px 50px 30px;
    background: linear-gradient(to bottom, #f8fafc, #ffffff);
    border-bottom: 1px solid var(--rk-step-border);
}

.rk-pipeline-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-step-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-pipeline-header p {
    font-size: 16px;
    color: var(--rk-step-text);
    line-height: 1.6;
    margin: 0;
}

/* Interaktywny Stepper Nawigacyjny */
.rk-stepper-nav {
    display: flex;
    flex-direction: row;
    background: var(--rk-step-inactive);
    padding: 10px;
    gap: 10px;
    border-bottom: 1px solid var(--rk-step-border);
}

.rk-step-btn {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 15px;
    padding: 15px 20px;
    background: transparent;
    border: 2px solid transparent;
    border-radius: 12px;
    cursor: pointer;
    transition: all 0.3s ease;
    text-align: left;
}

.rk-step-btn:hover {
    background: #e2e8f0;
}

.rk-step-btn.active {
    background: var(--rk-step-bg);
    border-color: var(--rk-step-blue);
    box-shadow: 0 4px 6px rgba(0,0,0,0.05);
}

.rk-step-num {
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #cbd5e1;
    color: #ffffff;
    font-weight: 900;
    font-size: 16px;
    border-radius: 50%;
    transition: all 0.3s;
}

.rk-step-btn.active .rk-step-num {
    background: var(--rk-step-blue);
    box-shadow: 0 0 15px rgba(2, 132, 199, 0.4);
}

.rk-step-title {
    font-size: 15px;
    font-weight: 800;
    color: #64748b;
    margin: 0;
}

.rk-step-btn.active .rk-step-title {
    color: var(--rk-step-dark);
}

/* Panele Treści (1-kolumnowe) */
.rk-step-content-area {
    padding: 40px 50px;
    background: var(--rk-step-bg);
}

.rk-step-panel {
    display: none;
    animation: fadeInPanel 0.4s ease-out forwards;
}

.rk-step-panel.active {
    display: block;
}

@keyframes fadeInPanel {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-panel-top {
    display: flex;
    align-items: center;
    gap: 20px;
    margin-bottom: 25px;
}

.rk-panel-icon {
    width: 60px;
    height: 60px;
    background: var(--rk-step-blue-light);
    color: var(--rk-step-blue);
    border-radius: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-panel-top h3 {
    font-size: 24px;
    font-weight: 800;
    color: var(--rk-step-dark);
    margin: 0;
}

.rk-panel-body p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-step-text);
    margin: 0 0 20px 0;
}

.rk-panel-body ul {
    margin: 0;
    padding: 0 0 0 20px;
    color: var(--rk-step-text);
}

.rk-panel-body li {
    margin-bottom: 10px;
    line-height: 1.6;
}

.rk-panel-body a {
    color: var(--rk-step-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Mocne CTA */
.rk-cta-wrapper {
    padding: 45px 50px;
    background: linear-gradient(135deg, var(--rk-step-dark) 0%, #1e293b 100%);
    text-align: center;
    border-top: 1px solid #334155;
}

.rk-cta-wrapper h3 {
    color: #ffffff;
    font-size: 24px;
    font-weight: 900;
    margin: 0 0 15px 0;
}

.rk-cta-wrapper p {
    color: #94a3b8;
    font-size: 16px;
    margin: 0 auto 30px auto;
    max-width: 600px;
    line-height: 1.6;
}

.rk-cta-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-step-green);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(16, 185, 129, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-cta-btn:hover {
    transform: translateY(-5px);
    background: #059669;
    box-shadow: 0 20px 35px -5px rgba(16, 185, 129, 0.5);
}

@media (max-width: 768px) {
    .rk-pipeline-header, .rk-step-content-area, .rk-cta-wrapper { padding: 30px 20px; }
    .rk-stepper-nav { flex-direction: column; }
    .rk-panel-top { flex-direction: column; align-items: flex-start; gap: 15px; }
    .rk-cta-btn { width: 100%; font-size: 15px; padding: 18px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#article-projekt-szkielet",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/"
    },
    "headline": "Jak ogrzewanie podłogowe w domu szkieletowym wpływa na projekt instalacji?",
    "description": "Poznaj 3-stopniowy schemat inżynierski: od obliczeń OZC, przez hydraulikę PN-EN 1264, aż po integrację z pompą ciepła w domach szkieletowych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/", 
        "https://sobir.pl/" 
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-07-15"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#dataset-procedura",
    "name": "Procedura Projektowa Instalacji Płaszczyznowych w Szkielecie",
    "description": "Dokumentacja inżynierska obejmująca trzy filary projektu: OZC, hydraulikę i maszynownię (źródło ciepła).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego z pompą ciepła",
      "obliczenia OZC dla domu szkieletowego",
      "rozstaw rur w systemie suchym",
      "przepływy w rozdzielaczu l/min",
      "bufor ciepła w lekkiej podłogówce"
    ],
    "measurementTechnique": "Algorytmy normatywne PN-EN 12831 oraz PN-EN 1264 dla konstrukcji drewnianych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Etap 1: Obliczenie OZC dla każdego pomieszczenia z uwzględnieniem szczelności wiatrowej.",
        "Etap 2: Dobór hydrauliczny - długość pętli, opory i kryzowanie na rotametrach.",
        "Etap 3: Zabezpieczenie minimalnego przepływu dla defrostu pompy ciepła (bufor szeregowy)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#webapp-pipeline",
    "name": "Interaktywny Schemat Projektowy HVAC",
    "description": "Narzędzie edukacyjne ilustrujące chronologię prac projektowych dla instalacji grzewczych w lekkich konstrukcjach szkieletowych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-pipeline-container" id="rk-project-pipeline">
    <div class="rk-pipeline-header">
        <h2>Jak ogrzewanie podłogowe w domu szkieletowym wpływa na projekt instalacji?</h2>
        <p>Każdy profesjonalny projekt w technologii szkieletowej musi bezwzględnie bazować na trójstopniowej strukturze, całkowicie odrębnej od schematów powielanych w domach murowanych. Odkryj kolejne etapy inżynierskiego procesu.</p>
    </div>

    <!-- Stepper Navigation -->
    <div class="rk-stepper-nav">
        <button class="rk-step-btn active" onclick="showStep('step1', this)">
            <span class="rk-step-num">1</span>
            <span class="rk-step-title">Obliczenia OZC</span>
        </button>
        <button class="rk-step-btn" onclick="showStep('step2', this)">
            <span class="rk-step-num">2</span>
            <span class="rk-step-title">Hydraulika systemu</span>
        </button>
        <button class="rk-step-btn" onclick="showStep('step3', this)">
            <span class="rk-step-num">3</span>
            <span class="rk-step-title">Maszynownia</span>
        </button>
    </div>

    <!-- Content Area (Single Column) -->
    <div class="rk-step-content-area">
        
        <!-- Etap 1: OZC -->
        <div class="rk-step-panel active" id="step1">
            <div class="rk-panel-top">
                <div class="rk-panel-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                </div>
                <h3>Obliczenie Zapotrzebowania na Ciepło (OZC)</h3>
            </div>
            <div class="rk-panel-body">
                <p>To absolutny fundament. Projektant musi wyznaczyć straty ciepła dla każdego pokoju osobno, co wprost odnosi się do <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/">normy PN-EN 12831</a>. Ze względu na wysoką szczelność domów szkieletowych (często wyposażonych w rekuperację), straty wentylacyjne są tu minimalne.</p>
                <ul>
                    <li>Dokładne modelowanie strat przez przegrody i wentylację mechaniczną.</li>
                    <li>Określenie szczytowej mocy dla każdego pomieszczenia wyrażonej w Watach.</li>
                    <li>Projekt wykonany bez profesjonalnego OZC to gwarancja źle działającej, przewymiarowanej instalacji.</li>
                </ul>
            </div>
        </div>

        <!-- Etap 2: Hydraulika -->
        <div class="rk-step-panel" id="step2">
            <div class="rk-panel-top">
                <div class="rk-panel-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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>
                <h3>Projekt Hydrauliczny (PN-EN 1264)</h3>
            </div>
            <div class="rk-panel-body">
                <p>Na podstawie OZC następuje indywidualny dobór rozstawu rur. Projekt określa dokładną długość każdej pętli oraz nastawy wstępne na <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">rozdzielaczach</a> (przepływy w l/min), co stanowi kluczowy element wymogów <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">normy EN 1264</a>.</p>
                <ul>
                    <li>Wybór technologii (np. system suchy o niskiej masie strukturalnej).</li>
                    <li>Odrzucenie zasady "co 10 cm wszędzie" na rzecz analitycznego doboru rozstawów.</li>
                    <li>Równoważenie ciśnień zapobiegające sytuacji, w której najdłuższa pętla jest niedogrzana z powodu oporów hydraulicznych.</li>
                </ul>
            </div>
        </div>

        <!-- Etap 3: Źródło -->
        <div class="rk-step-panel" id="step3">
            <div class="rk-panel-top">
                <div class="rk-panel-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                </div>
                <h3>Integracja ze Źródłem Ciepła</h3>
            </div>
            <div class="rk-panel-body">
                <p>Ponieważ lekka podłogówka posiada niewielką pojemność wodną, kluczowym wyzwaniem jest zapewnienie minimalnego przepływu wymaganego przez producenta pompy ciepła do przeprowadzenia procedury odszraniania parownika (defrost).</p>
                <ul>
                    <li>Brak konieczności instalowania stratnych układów z zaworami mieszającymi.</li>
                    <li>W systemach suchych stosuje się często dedykowany <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufor ciepła wpięty szeregowo</a> (pojemność zaledwie 40–60 litrów).</li>
                    <li>Pozwala to na zachowanie bezpośredniego zasilania rozdzielaczy i maksymalnego współczynnika SCOP pompy ciepła.</li>
                </ul>
            </div>
        </div>

    </div>

    <!-- CTA do Projektów -->
    <div class="rk-cta-wrapper">
        <h3>Nie zgaduj z pompą ciepła i rurkami</h3>
        <p>Szkielet drewniany wymaga inżynierskiej precyzji, nie wykonawstwa "na oko". Zabezpiecz swój komfort i portfel już na etapie planowania, oddając obliczenia w ręce specjalistów.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-cta-btn">
            ZAMÓW INDYWIDUALNY PROJEKT OGRZEWANIA PODŁOGOWEGO Z OBLICZENIAMI OZC
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
function showStep(stepId, btnElement) {
    // 1. Zabezpieczone resetowanie przycisków
    var navContainer = btnElement.parentElement;
    var allBtns = navContainer.getElementsByClassName('rk-step-btn');
    var i = 0;
    while (i < allBtns.length) {
        allBtns[i].classList.remove('active');
        i++;
    }
    
    // 2. Aktywacja klikniętego przycisku
    btnElement.classList.add('active');
    
    // 3. Ukrywanie wszystkich paneli treści
    var contentArea = document.querySelector('.rk-step-content-area');
    var allPanels = contentArea.getElementsByClassName('rk-step-panel');
    var j = 0;
    while (j < allPanels.length) {
        allPanels[j].classList.remove('active');
        j++;
    }
    
    // 4. Wyświetlenie wybranego panelu
    var targetPanel = document.getElementById(stepId);
    if (targetPanel !== null) {
        targetPanel.classList.add('active');
    }
}
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-blue: #0284c7;
    --rk-case-blue-light: #f0f9ff;
    --rk-case-gold: #eab308;
    --rk-case-bg: #ffffff;
    --rk-case-border: #e2e8f0;
    --rk-case-text: #475569;
    --rk-case-red: #ef4444;
    --rk-case-green: #10b981;
}

.rk-case-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-case-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-case-border);
    overflow: hidden;
}

/* Nagłówek i Profil Inwestora */
.rk-case-header {
    background: linear-gradient(135deg, var(--rk-case-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: #ffffff;
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-case-title {
    font-size: 28px;
    font-weight: 900;
    margin: 0;
    line-height: 1.3;
    color: #ffffff;
}

.rk-persona-card {
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    gap: 20px;
}

.rk-persona-avatar {
    width: 60px;
    height: 60px;
    background: var(--rk-case-gold);
    color: var(--rk-case-dark);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    font-size: 24px;
    flex-shrink: 0;
}

.rk-persona-info h3 {
    margin: 0 0 5px 0;
    font-size: 20px;
    font-weight: 800;
    color: #ffffff;
}

.rk-persona-info p {
    margin: 0;
    font-size: 15px;
    color: #94a3b8;
    display: flex;
    align-items: center;
    gap: 8px;
}

/* Interaktywna Nawigacja (Oś czasu) */
.rk-case-timeline {
    display: flex;
    background: #f8fafc;
    border-bottom: 1px solid var(--rk-case-border);
    padding: 20px 50px;
    gap: 15px;
}

.rk-timeline-btn {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 15px;
    padding: 16px 20px;
    background: #ffffff;
    border: 2px solid var(--rk-case-border);
    border-radius: 12px;
    cursor: pointer;
    text-align: left;
    transition: all 0.2s ease;
}

.rk-timeline-btn:hover {
    background: #f1f5f9;
}

.rk-timeline-btn.active {
    border-color: var(--rk-case-blue);
    background: var(--rk-case-blue-light);
    box-shadow: 0 4px 10px rgba(2, 132, 199, 0.1);
}

.rk-step-indicator {
    width: 30px;
    height: 30px;
    background: #cbd5e1;
    color: #ffffff;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    font-size: 14px;
    flex-shrink: 0;
}

.rk-timeline-btn.active .rk-step-indicator {
    background: var(--rk-case-blue);
}

.rk-timeline-text {
    font-size: 15px;
    font-weight: 800;
    color: #64748b;
}

.rk-timeline-btn.active .rk-timeline-text {
    color: var(--rk-case-dark);
}

/* Obszar Treści */
.rk-case-content {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-case-panel {
    display: none;
}

.rk-panel-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 25px;
}

.rk-panel-header svg {
    width: 32px;
    height: 32px;
}

.rk-panel-header h3 {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-case-dark);
    margin: 0;
}

.rk-case-panel p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-case-text);
    margin: 0 0 20px 0;
}

.rk-case-panel a {
    color: var(--rk-case-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Kafelki z danymi (Zestawienia) */
.rk-data-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    margin-top: 30px;
}

.rk-data-card {
    padding: 20px;
    border-radius: 16px;
    border: 1px solid;
    background: #f8fafc;
}

.rk-data-card.bad {
    background: #fef2f2;
    border-color: rgba(239, 68, 68, 0.2);
}

.rk-data-card.good {
    background: #f0fdf4;
    border-color: rgba(16, 185, 129, 0.2);
}

.rk-data-label {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    color: #64748b;
    margin-bottom: 5px;
}

.rk-data-val {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-case-dark);
}

.bad .rk-data-val { color: var(--rk-case-red); }
.good .rk-data-val { color: var(--rk-case-green); }

/* Responsywność */
@media (max-width: 768px) {
    .rk-case-header, .rk-case-timeline, .rk-case-content { padding: 30px 20px; }
    .rk-case-timeline { flex-direction: column; gap: 10px; }
    .rk-timeline-btn { width: 100%; padding: 15px; }
    .rk-data-grid { grid-template-columns: 1fr; }
    .rk-persona-card { flex-direction: column; text-align: center; }
    .rk-persona-info p { justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/"
    },
    "headline": "Case Study: Ogrzewanie podłogowe w domu szkieletowym na Śląsku",
    "description": "Analiza rzeczywistego przypadku inwestora z Tarnowskich Gór. Zobacz, jak zmiana amatorskiego planu na inżynierski projekt OZC uratowała nośność stropu.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/", 
        "https://sobir.pl/" 
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-07-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#dataset-casestudy",
    "name": "Zestawienie Zwrotu z Inwestycji (ROI) dla Projektu Ogrzewania",
    "description": "Dane analityczne pochodzące z rzeczywistego wdrożenia systemu suchego w domu szkieletowym 130m2 w Tarnowskich Górach.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego z pompy ciepła",
      "kompleksowa wycena ogrzewania podłogowego wodnego na co przygotować budżet",
      "zwrot z inwestycji w ogrzewanie podłogowe",
      "projekt ogrzewania podłogowego z głowy vs projekt z obliczeniami",
      "taktowanie pompy ciepła w domu szkieletowym"
    ],
    "measurementTechnique": "Analiza porównawcza parametrów statycznych (obciążenie kN/m2) oraz symulacja kosztów eksploatacyjnych po wdrożeniu audytu OZC.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Plan Inwestora: Wylewka 7 cm (obciążenie ok. 165 kg/m2), rury co 10 cm, brak OZC.",
        "Plan Inżynierski: System suchy (obciążenie 30 kg/m2), rozstaw rur 15-20 cm z OZC.",
        "Wynik wdrożenia: Uratowanie nośności stropu, płynna praca pompy ciepła (brak taktowania), optymalny zwrot z inwestycji po 6 latach."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#webapp-casestudy",
    "name": "Interaktywny Dziennik Inwestycji",
    "description": "Aplikacja edukacyjna pozwalająca prześledzić etapy audytu i optymalizacji projektu instalacji grzewczej dla konkretnego przypadku budowlanego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-case-container" id="rk-real-case">
    
    <!-- Nagłówek i Persona -->
    <div class="rk-case-header">
        <h2 class="rk-case-title">Case Study: Ogrzewanie podłogowe w domu szkieletowym na Śląsku</h2>
        
        <div class="rk-persona-card">
            <div class="rk-persona-avatar">T</div>
            <div class="rk-persona-info">
                <h3>Tomasz, 42 lata</h3>
                <p>
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="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>
                    Tarnowskie Góry (woj. śląskie) | Dom szkieletowy 130 m²
                </p>
            </div>
        </div>
    </div>

    <!-- Nawigacja (Oś czasu) -->
    <div class="rk-case-timeline">
        <button class="rk-timeline-btn active" onclick="switchCaseStep('caseStep1', this)">
            <div class="rk-step-indicator">1</div>
            <span class="rk-timeline-text">Pierwotny pomysł Tomka</span>
        </button>
        <button class="rk-timeline-btn" onclick="switchCaseStep('caseStep2', this)">
            <div class="rk-step-indicator">2</div>
            <span class="rk-timeline-text">Nasza Diagnoza i Projekt</span>
        </button>
        <button class="rk-timeline-btn" onclick="switchCaseStep('caseStep3', this)">
            <div class="rk-step-indicator">3</div>
            <span class="rk-timeline-text">Faktyczny Efekt Inwestycji</span>
        </button>
    </div>

    <!-- Obszar treści paneli -->
    <div class="rk-case-content">
        
        <!-- Etap 1 -->
        <div class="rk-case-panel" id="caseStep1" style="display: block;">
            <div class="rk-panel-header">
                <svg style="color: var(--rk-case-red);" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                <h3>Problem: Wykonawstwo "na oko"</h3>
            </div>
            <p>Tomasz zgłosił się do nas w momencie, gdy lokalny hydraulik przygotowywał się do układania instalacji. Plan wykonawcy zakładał ułożenie rur co 10 cm w całym domu szkieletowym, aby "było ciepło", oraz wylanie na drewniany strop 7 cm betonu z miksokreta. Ponadto, wybrano urządzenie bez weryfikacji. Tomek szukał w sieci informacji, sprawdzając zawiłą <a href="https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/">kompleksową wycenę ogrzewania podłogowego wodnego i na co przygotować budżet</a>, i intuicyjnie czuł, że ten plan zrujnuje mu portfel.</p>
            
            <div class="rk-data-grid">
                <div class="rk-data-card bad">
                    <div class="rk-data-label">Planowane obciążenie stropu</div>
                    <div class="rk-data-val">165 kg / m²</div>
                </div>
                <div class="rk-data-card bad">
                    <div class="rk-data-label">Ryzyko dla pompy ciepła</div>
                    <div class="rk-data-val">Taktowanie (Krótkie cykle)</div>
                </div>
            </div>
        </div>

        <!-- Etap 2 -->
        <div class="rk-case-panel" id="caseStep2">
            <div class="rk-panel-header">
                <svg style="color: var(--rk-case-blue);" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 22 22 22"></polygon></svg>
                <h3>Diagnoza: Ratunek statyki i hydrauliki</h3>
            </div>
            <p>Wstrzymaliśmy prace. Przedstawiliśmy Tomkowi zestawienie: <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-glowy-vs-projekt-z-obliczeniami-ile-mozesz-stracic-na-bledach/">projekt ogrzewania podłogowego z głowy vs projekt z obliczeniami</a>. Przeprowadziliśmy pełne OZC dla jego domu. Okazało się, że zapotrzebowanie jest tak niskie, że rozstaw co 10 cm "udusiłby" układ.</p>
            <p><strong>Decyzja inżynieryjna:</strong> Zrezygnowaliśmy z ciężkiego betonu na rzecz ultralekkiego systemu suchego na cienkich płytach EPS. Zmieniliśmy ułożenie z 10 cm na precyzyjnie wyliczone 15 cm i 20 cm, stawiając na prawidłowy <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekt ogrzewania podłogowego z pompą ciepła</a>, który od razu przewidział zastosowanie 50-litrowego bufora dla wymuszenia defrostu.</p>
        </div>

        <!-- Etap 3 -->
        <div class="rk-case-panel" id="caseStep3">
            <div class="rk-panel-header">
                <svg style="color: var(--rk-case-green);" 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>
                <h3>Faktyczny Efekt Inwestycji</h3>
            </div>
            <p>Instalacja działa bez zarzutu. Rezygnacja z betonu na rzecz systemu suchego obniżyła obciążenie drewnianych belek na piętrze pięciokrotnie. Dom szkieletowy oddaje ciepło natychmiast, a co najważniejsze – inteligentne strefowanie odcina podłogówkę, gdy duże okna wpuszczają słońce.</p>
            <p>Tomek przekonał się, że <a href="https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/">zwrot z inwestycji w ogrzewanie podłogowe (realne wyliczenia na 2026 rok)</a> jest możliwy tylko wtedy, gdy początkowy droższy zakup odpowiednich materiałów i projektu OZC przekłada się na lata bezawaryjnej pracy sprzętu i niskie rachunki.</p>
            
            <div class="rk-data-grid">
                <div class="rk-data-card good">
                    <div class="rk-data-label">Ostateczne obciążenie stropu</div>
                    <div class="rk-data-val">30 kg / m²</div>
                </div>
                <div class="rk-data-card good">
                    <div class="rk-data-label">Praca systemu grzewczego</div>
                    <div class="rk-data-val">Stabilna, niski pobór prądu</div>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
function switchCaseStep(panelId, btnElement) {
    // 1. Zabezpieczony reset przycisków na osi czasu
    var navContainer = btnElement.parentElement;
    var allBtns = navContainer.getElementsByClassName('rk-timeline-btn');
    var i = 0;
    while (i < allBtns.length) {
        allBtns[i].classList.remove('active');
        i++;
    }
    
    // 2. Aktywacja wybranego etapu
    btnElement.classList.add('active');
    
    // 3. Zabezpieczone ukrycie wszystkich paneli treści
    var contentArea = document.querySelector('.rk-case-content');
    var allPanels = contentArea.getElementsByClassName('rk-case-panel');
    var j = 0;
    while (j < allPanels.length) {
        allPanels[j].style.display = 'none';
        j++;
    }
    
    // 4. Natychmiastowe wyświetlenie właściwego panelu
    var targetPanel = document.getElementById(panelId);
    if (targetPanel !== null) {
        targetPanel.style.display = 'block';
    }
}
</script>



<style>
:root {
    --rk-auth-dark: #0f172a;
    --rk-auth-blue: #0284c7;
    --rk-auth-blue-light: #f0f9ff;
    --rk-auth-gold: #eab308;
    --rk-auth-bg: #ffffff;
    --rk-auth-border: #e2e8f0;
    --rk-auth-text: #334155;
    --rk-auth-quote: #1e293b;
}

.rk-auth-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-auth-bg);
    border-radius: 20px;
    border: 2px solid var(--rk-auth-border);
    box-shadow: 0 15px 35px -5px rgba(2, 132, 199, 0.08);
    display: flex;
    flex-direction: row;
    overflow: hidden;
}

/* Lewa Kolumna - Zdjęcie i Sociale */
.rk-auth-sidebar {
    width: 320px;
    background: linear-gradient(180deg, #f8fafc 0%, #e2e8f0 100%);
    padding: 40px 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    border-right: 1px solid var(--rk-auth-border);
    text-align: center;
}

.rk-auth-avatar {
    width: 180px;
    height: 180px;
    border-radius: 50%;
    object-fit: cover;
    border: 6px solid #ffffff;
    box-shadow: 0 10px 20px rgba(0,0,0,0.1);
    margin-bottom: 20px;
}

.rk-auth-role {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 900;
    color: var(--rk-auth-blue);
    letter-spacing: 1px;
    margin-bottom: 5px;
}

.rk-auth-name-tag {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0 0 15px 0;
}

.rk-auth-socials {
    display: flex;
    gap: 12px;
    margin-top: 20px;
}

.rk-social-link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    background: #ffffff;
    color: var(--rk-auth-dark);
    border-radius: 10px;
    text-decoration: none;
    border: 1px solid var(--rk-auth-border);
    /* Brak animacji zgodnie z wytycznymi */
}

.rk-social-link:hover {
    background: var(--rk-auth-blue);
    color: #ffffff;
    border-color: var(--rk-auth-blue);
}

/* Prawa Kolumna - Treść Interaktywna */
.rk-auth-main {
    flex: 1;
    display: flex;
    flex-direction: column;
}

.rk-auth-nav {
    display: flex;
    background: #ffffff;
    border-bottom: 2px solid var(--rk-auth-border);
}

.rk-auth-tab {
    flex: 1;
    background: transparent;
    border: none;
    padding: 20px 15px;
    font-size: 15px;
    font-weight: 800;
    color: #64748b;
    cursor: pointer;
    border-bottom: 4px solid transparent;
    /* Brak animacji */
}

.rk-auth-tab:hover {
    background: var(--rk-auth-blue-light);
    color: var(--rk-auth-blue);
}

.rk-auth-tab.active {
    color: var(--rk-auth-blue);
    border-bottom-color: var(--rk-auth-blue);
    background: #ffffff;
}

.rk-auth-content-area {
    padding: 35px 40px;
    background: #ffffff;
    flex: 1;
}

.rk-auth-panel {
    display: none;
    /* Brak animacji fadeIn */
}

/* Typografia Paneli */
.rk-auth-panel h2 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0 0 20px 0;
    line-height: 1.3;
}

.rk-auth-panel h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-auth-dark);
    margin: 0 0 15px 0;
}

/* Cytat */
.rk-quote-block {
    position: relative;
    padding: 25px 30px;
    background: var(--rk-auth-quote);
    color: #ffffff;
    border-radius: 16px;
    border-left: 6px solid var(--rk-auth-gold);
}

.rk-quote-mark {
    font-size: 60px;
    font-family: serif;
    color: rgba(255,255,255,0.1);
    line-height: 1;
    position: absolute;
    top: 10px;
    left: 20px;
}

.rk-quote-text {
    font-size: 18px;
    font-weight: 600;
    line-height: 1.7;
    margin: 0;
    position: relative;
    z-index: 1;
}

/* Lista Zasad */
.rk-rules-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.rk-rules-list li {
    display: flex;
    align-items: flex-start;
    gap: 15px;
    margin-bottom: 20px;
    padding-bottom: 20px;
    border-bottom: 1px dashed var(--rk-auth-border);
}

.rk-rules-list li:last-child {
    border-bottom: none;
    margin-bottom: 0;
    padding-bottom: 0;
}

.rk-rule-icon {
    flex-shrink: 0;
    color: var(--rk-auth-blue);
    background: var(--rk-auth-blue-light);
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 10px;
}

.rk-rule-text p {
    margin: 0;
    font-size: 16px;
    line-height: 1.6;
    color: var(--rk-auth-text);
}

.rk-rule-text strong {
    color: var(--rk-auth-dark);
    display: block;
    margin-bottom: 4px;
}

/* Opis Eksperta */
.rk-bio-text p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-auth-text);
    margin: 0 0 15px 0;
}

.rk-bio-text a {
    color: var(--rk-auth-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-auth-container { flex-direction: column; }
    .rk-auth-sidebar { width: 100%; border-right: none; border-bottom: 1px solid var(--rk-auth-border); padding: 30px 20px; }
    .rk-auth-nav { flex-direction: column; }
    .rk-auth-tab { border-bottom: none; border-left: 4px solid transparent; text-align: left; padding: 15px 25px; border-top: 1px solid var(--rk-auth-border); }
    .rk-auth-tab.active { border-left-color: var(--rk-auth-blue); border-bottom-color: transparent; }
    .rk-auth-content-area { padding: 30px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#article-ekspert",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/"
    },
    "headline": "Zdaniem Roberta Kucharskiego - Podsumowanie inżynieryjne instalacji w domu szkieletowym",
    "description": "Stanowisko eksperckie, zestawienie żelaznych zasad projektowych oraz manifest budowlany dotyczący lekkich konstrukcji podłogowych.",
    "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": "2025-12-29",
    "dateModified": "2026-07-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#dataset-zasady",
    "name": "Zbiór Zasad Inżynieryjnych Roberta Kucharskiego",
    "description": "Baza wiedzy zdefiniowana przez eksperta branżowego, obejmująca procedury postępowania przy inwestycjach w ogrzewanie płaszczyznowe.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego z obliczeniami",
      "czy do ogrzewania podłogowego potrzebny jest projekt",
      "budowa bez ściemy",
      "największy bloger budowlany",
      "ekspert instalacji grzewczych"
    ],
    "measurementTechnique": "Weryfikacja dobrych praktyk instalacyjnych na podstawie wytycznych autorskich Projekt-Ogrzewania.pl.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zasada 1: Bezwzględny wymóg dokumentacji OZC przed ułożeniem pierwszego metra rury.",
        "Zasada 2: Dopasowanie bezwładności posadzki do technologii wznoszenia budynku.",
        "Zasada 3: Weryfikacja oporów hydraulicznych i podział pętli powyżej 100 mb."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#webapp-ekspert",
    "name": "Interaktywny Profil Eksperta HVAC",
    "description": "Cyfrowa wizytówka pozwalająca na przełączanie się pomiędzy podsumowaniem merytorycznym artykułu a zbiorem żelaznych zasad projektowych autora.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-auth-container" id="rk-expert-profile">
    
    <!-- Kolumna Autora -->
    <div class="rk-auth-sidebar">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Ekspert HVAC" class="rk-auth-avatar">
        <div class="rk-auth-role">CEO & Główny Projektant</div>
        <div class="rk-auth-name-tag">Robert Kucharski</div>
        
        <div class="rk-auth-socials">
            <a href="https://www.facebook.com/projektogrzewaniapl/" class="rk-social-link" target="_blank" rel="noopener noreferrer" 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/" class="rk-social-link" target="_blank" rel="noopener noreferrer" 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" class="rk-social-link" target="_blank" rel="noopener noreferrer" 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>

    <!-- Kolumna Treści Interaktywnej -->
    <div class="rk-auth-main">
        <div class="rk-auth-nav">
            <button class="rk-auth-tab active" onclick="switchAuthTab('tabCytat', this)">Podsumowanie</button>
            <button class="rk-auth-tab" onclick="switchAuthTab('tabZasady', this)">Żelazne Zasady</button>
            <button class="rk-auth-tab" onclick="switchAuthTab('tabBio', this)">O Autorze</button>
        </div>

        <div class="rk-auth-content-area">
            
            <!-- Tab 1: Cytat (H2 zgodne z wytycznymi) -->
            <div class="rk-auth-panel" id="tabCytat" style="display: block;">
                <h2>Zdaniem Roberta Kucharskiego...</h2>
                <div class="rk-quote-block">
                    <div class="rk-quote-mark">"</div>
                    <p class="rk-quote-text">Budując dom o lekkiej konstrukcji szkieletowej, musisz całkowicie wymazać z pamięci nawyki stosowane w ciężkim budownictwie murowanym. Twoim największym wrogiem nie są wcale straty ciepła, lecz bezwładność betonu i brak precyzyjnego strefowania. Wybierając technologię suchą, nie inwestujesz wyłącznie w rury, lecz w bezpieczeństwo statyczne drewnianych stropów oraz sprawność Twojej pompy ciepła na lata.</p>
                </div>
            </div>

            <!-- Tab 2: Zasady -->
            <div class="rk-auth-panel" id="tabZasady">
                <h3>Inżynieryjny dekalog inwestora</h3>
                <ul class="rk-rules-list">
                    <li>
                        <div class="rk-rule-icon">
                            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                        </div>
                        <div class="rk-rule-text">
                            <strong>Fundament Obliczeniowy</strong>
                            <p>Zanim pozwolisz ekipie rozwinąć pierwszy zwój rury, upewnij się <a href="https://projekt-ogrzewania.pl/czy-do-ogrzewania-podlogowego-potrzebny-jest-projekt/">czy do ogrzewania podłogowego potrzebny jest projekt</a>. Odpowiedź brzmi: bez OZC i doboru hydraulicznego niszczysz budżet.</p>
                        </div>
                    </li>
                    <li>
                        <div class="rk-rule-icon">
                            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 22 22 22"></polygon></svg>
                        </div>
                        <div class="rk-rule-text">
                            <strong>Bezpieczeństwo Drewna (C24)</strong>
                            <p>Wilgoć technologiczna z mokrych jastrychów rzędu tysięcy litrów jest zabójcza dla konstrukcji szkieletu. Zawsze kieruj się w stronę zabudowy suchej.</p>
                        </div>
                    </li>
                    <li>
                        <div class="rk-rule-icon">
                            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                        </div>
                        <div class="rk-rule-text">
                            <strong>Szybka Reakcja</strong>
                            <p>Dom z drewna wychładza się i nagrzewa błyskawicznie. Wymusza to stosowanie cienkich posadzek o szybkiej reakcji na inteligentne termostaty pokojowe.</p>
                        </div>
                    </li>
                </ul>
            </div>

            <!-- Tab 3: Bio -->
            <div class="rk-auth-panel" id="tabBio">
                <h3>Budowa bez ściemy</h3>
                <div class="rk-bio-text">
                    <p>Jestem największym blogerem branży budowlanej i wykończeniowej w Polsce oraz głównym projektantem systemów płaszczyznowych. Na co dzień zarządzam portalem Projekt-Ogrzewania.pl, gdzie dzielę się bezkompromisową, techniczną wiedzą z inwestorami.</p>
                    <p>Założyłem inicjatywę <strong>"Robert Kucharski – Budowa bez ściemy"</strong> oraz grupę <strong>"NIEZATAPIALNI"</strong>, aby chronić budujących przed patologiami wykonawczymi powielanymi z pokolenia na pokolenie. <a href="https://projekt-ogrzewania.pl/historia-ogrzewania-podlogowego-od-starozytnosci-do-dzis/">Historia ogrzewania podłogowego</a> dowodzi, że ewolucja technologii wymaga otwartego umysłu, a nie ślepego podążania za hasłem "zawsze tak robiliśmy".</p>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
function switchAuthTab(tabId, btnElement) {
    // 1. Zabezpieczony reset przycisków
    var navContainer = btnElement.parentElement;
    var allBtns = navContainer.getElementsByClassName('rk-auth-tab');
    var i = 0;
    while (i < allBtns.length) {
        allBtns[i].classList.remove('active');
        i++;
    }
    
    // 2. Aktywacja przycisku (bez animacji)
    btnElement.classList.add('active');
    
    // 3. Zabezpieczone ukrycie paneli (bez animacji)
    var contentArea = document.querySelector('.rk-auth-content-area');
    var allPanels = contentArea.getElementsByClassName('rk-auth-panel');
    var j = 0;
    while (j < allPanels.length) {
        allPanels[j].style.display = 'none';
        j++;
    }
    
    // 4. Natychmiastowe wyświetlenie wybranego panelu
    var targetPanel = document.getElementById(tabId);
    if (targetPanel !== null) {
        targetPanel.style.display = 'block';
    }
}
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-blue: #0284c7;
    --rk-faq-bg: #ffffff;
    --rk-faq-border: #e2e8f0;
    --rk-faq-text: #334155;
    --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 {
    margin-bottom: 30px;
    padding-left: 15px;
    border-left: 5px solid var(--rk-faq-blue);
}

.rk-faq-container h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-faq-dark);
    margin: 0 0 10px 0;
    line-height: 1.2;
}

.rk-faq-subtitle {
    font-size: 16px;
    color: #64748b;
    margin: 0;
}

.rk-faq-wrapper {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-faq-item {
    background: var(--rk-faq-bg);
    border: 1px solid var(--rk-faq-border);
    border-radius: 16px;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
    overflow: hidden;
    transition: all 0.3s ease;
}

.rk-faq-item.is-open {
    border-color: var(--rk-faq-blue);
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.15);
}

.rk-faq-trigger {
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    padding: 24px 30px;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
    transition: background-color 0.2s;
}

.rk-faq-trigger:hover {
    background-color: var(--rk-faq-hover);
}

.rk-faq-trigger h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-faq-dark);
    margin: 0;
    line-height: 1.4;
}

.rk-faq-icon {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #f1f5f9;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-faq-blue);
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq-item.is-open .rk-faq-icon {
    background: var(--rk-faq-blue);
    color: #ffffff;
    transform: rotate(180deg);
}

.rk-faq-content {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    background: #fafafa;
}

.rk-faq-item.is-open .rk-faq-content {
    opacity: 1;
}

.rk-faq-body {
    padding: 0 30px 30px 30px;
}

.rk-faq-body p {
    margin: 0;
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-faq-text);
    padding-top: 20px;
    border-top: 1px dashed #cbd5e1;
}

.rk-faq-body a {
    color: var(--rk-faq-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(2, 132, 199, 0.2);
    transition: border-color 0.2s;
}

.rk-faq-body a:hover {
    border-bottom-color: var(--rk-faq-blue);
}

@media (max-width: 768px) {
    .rk-faq-trigger { padding: 20px; }
    .rk-faq-trigger h3 { font-size: 16px; }
    .rk-faq-body { padding: 0 20px 20px 20px; }
    .rk-faq-body p { font-size: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania o podłogówkę w domu szkieletowym",
    "description": "Błyskawiczne inżynierskie odpowiedzi na pytania dotyczące głośności pracy, doboru podłogi, bezwładności i zużycia prądu przez pompę ciepła w systemach suchych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.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-15",
    "dateModified": "2026-07-15"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy system suchy ogrzewania podłogowego jest głośniejszy od tradycyjnej wylewki?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, prawidłowo zamontowany system suchy z folią poślizgową PE (ułożoną między lamelami aluminiowymi a panelami posadzkowymi) nie generuje żadnych pisków ani trzasków podczas rozszerzalności termicznej rur."
        }
      },
      {
        "@type": "Question",
        "name": "Jakie wykończenie podłogi wybrać na system suchy w domu szkieletowym?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Najlepsze parametry przewodzenia wykazują płytki ceramiczne lub gres (klejone elastycznym klejem klasy S1 na płytach cementowo-włóknowych), a w drugiej kolejności trójwarstwowa deska barlinecka lub panele laminowane/winylowe z oznaczeniem producenta o przydatności do wodnego ogrzewania podłogowego (opór cieplny R poniżej 0,15 m2K/W)."
        }
      },
      {
        "@type": "Question",
        "name": "Czy w domu szkieletowym z podłogówką muszę montować grzejniki w sypialniach?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie ma takiej potrzeby, ponieważ dobrze zaprojektowana podłogówka o niskiej bezwładności pozwala na pełną kontrolę temperatury w sypialniach i dostosowanie jej do profilu dobowego użytkowników bez konieczności dublowania systemów grzewczych."
        }
      },
      {
        "@type": "Question",
        "name": "Ile czasu nagrzewa się sucha podłogówka w szkielecie?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Od momentu uruchomienia pompy ciepła i podania czynnika grzewczego, odczuwalny wzrost temperatury powierzchniowej posadzki następuje już po 30–60 minutach, podczas gdy klasyczny beton potrzebuje na to od 4 do 6 godzin."
        }
      },
      {
        "@type": "Question",
        "name": "Czy pompa ciepła w domu szkieletowym zużyje więcej prądu przy braku wylewek akumulacyjnych?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, zużycie energii będzie na tym samym lub niższym poziomie, ponieważ niska bezwładność systemu suchego umożliwia precyzyjne dopasowanie produkcji ciepła do bieżących strat budynku bez strat związanych z przegrzewaniem mas betonowych."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#webapp-faq",
    "name": "Baza Wiedzy Interaktywnej - FAQ Systemy Suche",
    "description": "Interaktywny panel zapytań umożliwiający szybką nawigację po najczęstszych problemach instalacyjnych w budownictwie drewnianym.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-faq-container">
    <div class="rk-faq-header">
        <h2>FAQ – Najczęściej zadawane pytania</h2>
        <p class="rk-faq-subtitle">Inżynierskie fakty i mity o ogrzewaniu w konstrukcjach lekkich.</p>
    </div>

    <div class="rk-faq-wrapper">
        
        <!-- Pytanie 1 -->
        <div class="rk-faq-item">
            <button class="rk-faq-trigger" onclick="toggleFaq(this)">
                <h3>Czy system suchy ogrzewania podłogowego jest głośniejszy od tradycyjnej wylewki?</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-body">
                    <p>Nie, prawidłowo zamontowany system suchy z folią poślizgową PE (ułożoną między lamelami aluminiowymi a panelami posadzkowymi) nie generuje żadnych pisków ani trzasków podczas rozszerzalności termicznej rur. Zobacz również, <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-nadaje-sie-do-drewnianego-stropu/">jakie zasady obowiązują przy montażu instalacji na nośnym stropie drewnianym</a>.</p>
                </div>
            </div>
        </div>

        <!-- Pytanie 2 -->
        <div class="rk-faq-item">
            <button class="rk-faq-trigger" onclick="toggleFaq(this)">
                <h3>Jakie wykończenie podłogi wybrać na system suchy w domu szkieletowym?</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-body">
                    <p>Najlepsze parametry przewodzenia wykazują płytki ceramiczne lub gres (klejone elastycznym klejem klasy S1 na specjalnych płytach cementowo-włóknowych), a w drugiej kolejności trójwarstwowa deska barlinecka lub dedykowane materiały laminowane. Szukaj oznaczenia producenta o przydatności do wodnego ogrzewania (opór cieplny R poniżej 0,15 m²K/W). Przeczytaj więcej o dylemacie: <a href="https://projekt-ogrzewania.pl/podlogi-drewniane-vs-panele-laminowane-co-wybrac-przy-ogrzewaniu-podlogowym/">podłogi drewniane czy panele laminowane</a>.</p>
                </div>
            </div>
        </div>

        <!-- Pytanie 3 -->
        <div class="rk-faq-item">
            <button class="rk-faq-trigger" onclick="toggleFaq(this)">
                <h3>Czy w domu szkieletowym z podłogówką muszę montować grzejniki w sypialniach?</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-body">
                    <p>Nie ma takiej potrzeby, ponieważ dobrze zaprojektowana instalacja płaszczyznowa o niskiej bezwładności pozwala na pełną kontrolę temperatury w sypialniach. Umożliwia precyzyjne dostosowanie krzywej grzewczej do profilu dobowego użytkowników bez konieczności dublowania kosztownych systemów. Sprawdź szczegółową <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-moze-byc-jedynym-zrodlem-ciepla-w-domu-analiza-dla-polskich-warunkow/">analizę podłogówki jako jedynego źródła ciepła</a>.</p>
                </div>
            </div>
        </div>

        <!-- Pytanie 4 -->
        <div class="rk-faq-item">
            <button class="rk-faq-trigger" onclick="toggleFaq(this)">
                <h3>Ile czasu nagrzewa się sucha podłogówka w szkielecie?</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-body">
                    <p>Od momentu uruchomienia pompy i podania czynnika grzewczego, odczuwalny wzrost temperatury powierzchniowej posadzki następuje już po 30–60 minutach. Dla porównania klasyczny zład betonowy potrzebuje na to od 4 do 6 godzin. Wynika to bezpośrednio z fizyki, co dokładnie wyjaśniam w materiale o tym <a href="https://projekt-ogrzewania.pl/ile-czasu-nagrzewa-sie-podlogowka/">ile czasu nagrzewa się podłogówka</a>.</p>
                </div>
            </div>
        </div>

        <!-- Pytanie 5 -->
        <div class="rk-faq-item">
            <button class="rk-faq-trigger" onclick="toggleFaq(this)">
                <h3>Czy pompa ciepła w domu szkieletowym zużyje więcej prądu przy braku wylewek akumulacyjnych?</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-body">
                    <p>Nie, zużycie energii elektrycznej będzie na tym samym lub niższym poziomie. Niska bezwładność systemu suchego umożliwia bardzo precyzyjne, inteligentne dopasowanie produkcji ciepła do bieżących strat budynku bez strat związanych z niekontrolowanym przegrzewaniem (i późniejszym wychładzaniem) dużych mas betonowych. Dowiedz się więcej, czy <a href="https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/">pompa ciepła efektywnie współpracuje z samą podłogówką</a>.</p>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
function toggleFaq(btn) {
    const parent = btn.parentElement;
    const content = parent.querySelector('.rk-faq-content');
    
    // Sprawdzamy, czy aktualny element jest otwarty
    const isOpen = parent.classList.contains('is-open');
    
    // Zamykamy wszystkie inne panele
    const allItems = document.querySelectorAll('.rk-faq-item');
    for (let i = 0; i < allItems.length; i++) {
        let item = allItems[i];
        item.classList.remove('is-open');
        let itemContent = item.querySelector('.rk-faq-content');
        if (itemContent !== null) {
            itemContent.style.maxHeight = null;
        }
    }
    
    // Jeśli kliknięty element nie był otwarty, to go otwieramy
    if (isOpen === false) {
        parent.classList.add('is-open');
        // Bezpieczne przypisanie max-height dynamicznie
        content.style.maxHeight = content.scrollHeight + "px";
    }
}
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-blue: #0284c7;
    --rk-dl-gold: #eab308;
    --rk-dl-bg: #ffffff;
    --rk-dl-border: #e2e8f0;
    --rk-dl-text: #334155;
    --rk-dl-gray: #f8fafc;
}

.rk-dl-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-dl-bg);
    border-radius: 20px;
    border: 2px solid var(--rk-dl-border);
    box-shadow: 0 15px 35px -10px rgba(15, 23, 42, 0.1);
    overflow: hidden;
}

/* Nagłówek */
.rk-dl-header {
    background: var(--rk-dl-dark);
    padding: 35px 45px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-dl-gold);
}

.rk-dl-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 10px 0;
    color: #ffffff;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-dl-header h2 svg {
    color: var(--rk-dl-gold);
    flex-shrink: 0;
}

.rk-dl-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0;
    line-height: 1.6;
}

/* Główny obszar dwukolumnowy (Desktop) */
.rk-dl-body {
    display: flex;
    flex-direction: row;
    background: #ffffff;
}

/* Lewa Kolumna - Podgląd Infografiki */
.rk-dl-preview-col {
    width: 400px;
    padding: 35px;
    background: var(--rk-dl-gray);
    border-right: 1px solid var(--rk-dl-border);
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-dl-thumb-box {
    width: 100%;
    background: #ffffff;
    border: 1px solid var(--rk-dl-border);
    border-radius: 12px;
    padding: 10px;
    box-shadow: 0 10px 20px rgba(0,0,0,0.05);
    margin-bottom: 20px;
}

.rk-dl-thumbnail {
    width: 100%;
    height: auto;
    border-radius: 6px;
    display: block;
}

.rk-dl-enlarge-btn {
    background: var(--rk-dl-blue);
    color: #ffffff;
    border: none;
    padding: 12px 20px;
    font-size: 14px;
    font-weight: 800;
    border-radius: 8px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    justify-content: center;
    text-transform: uppercase;
    /* Celowy brak transition wg wytycznych */
}

.rk-dl-enlarge-btn:hover {
    background: #0369a1;
}

/* Prawa Kolumna - Treść i Przyciski */
.rk-dl-content-col {
    flex: 1;
    display: flex;
    flex-direction: column;
}

/* Nawigacja w prawej kolumnie */
.rk-dl-tabs {
    display: flex;
    flex-direction: row;
    border-bottom: 1px solid var(--rk-dl-border);
    background: var(--rk-dl-gray);
}

.rk-dl-tab-btn {
    flex: 1;
    background: transparent;
    border: none;
    padding: 18px 20px;
    font-size: 15px;
    font-weight: 800;
    color: #64748b;
    cursor: pointer;
    border-bottom: 3px solid transparent;
    /* Celowy brak transition wg wytycznych */
}

.rk-dl-tab-btn:hover {
    background: #e2e8f0;
    color: var(--rk-dl-dark);
}

.rk-dl-tab-btn.active {
    background: #ffffff;
    color: var(--rk-dl-blue);
    border-bottom-color: var(--rk-dl-blue);
}

/* Obszar treści zakładek */
.rk-dl-panels {
    padding: 30px 35px;
    flex: 1;
}

.rk-dl-panel {
    display: none;
}

.rk-dl-panel h3 {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-dl-dark);
    margin: 0 0 15px 0;
}

.rk-dl-panel p {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-dl-text);
    margin: 0 0 15px 0;
}

.rk-dl-panel a {
    color: var(--rk-dl-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

.rk-dl-license-box {
    background: #fef9c3;
    border-left: 4px solid var(--rk-dl-gold);
    padding: 15px 20px;
    border-radius: 0 8px 8px 0;
    margin-bottom: 20px;
}

.rk-dl-license-box p {
    margin: 0;
    color: #854d0e;
    font-size: 14px;
    font-weight: 600;
}

/* Przyciski Pobierania */
.rk-dl-actions {
    padding: 25px 35px;
    background: var(--rk-dl-gray);
    border-top: 1px solid var(--rk-dl-border);
    display: flex;
    gap: 15px;
}

.rk-dl-btn {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 16px 20px;
    border-radius: 12px;
    text-decoration: none;
    font-size: 16px;
    font-weight: 900;
    text-transform: uppercase;
    /* Celowy brak transition wg wytycznych */
}

.rk-dl-btn-pdf {
    background: var(--rk-dl-blue);
    color: #ffffff;
    border: 2px solid var(--rk-dl-blue);
}

.rk-dl-btn-pdf:hover {
    background: #0369a1;
}

.rk-dl-btn-img {
    background: #ffffff;
    color: var(--rk-dl-dark);
    border: 2px solid var(--rk-dl-border);
}

.rk-dl-btn-img:hover {
    background: #e2e8f0;
    border-color: #cbd5e1;
}

/* Stopka Prawna */
.rk-dl-footer {
    padding: 15px 35px;
    background: var(--rk-dl-dark);
    color: #94a3b8;
    font-size: 13px;
    text-align: center;
    border-top: 1px solid #1e293b;
}

/* Interaktywna Nakładka na pełne zdjęcie */
.rk-img-modal {
    display: none;
    width: 100%;
    padding: 20px;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-dl-border);
    text-align: center;
}

.rk-img-modal img {
    max-width: 100%;
    height: auto;
    border-radius: 12px;
    border: 1px solid var(--rk-dl-border);
}

.rk-close-modal {
    margin-top: 15px;
    background: var(--rk-dl-dark);
    color: #ffffff;
    border: none;
    padding: 10px 25px;
    font-size: 14px;
    font-weight: 800;
    border-radius: 8px;
    cursor: pointer;
    text-transform: uppercase;
}

.rk-close-modal:hover {
    background: #1e293b;
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-dl-body { flex-direction: column; }
    .rk-dl-preview-col { width: 100%; border-right: none; border-bottom: 1px solid var(--rk-dl-border); padding: 25px; }
    .rk-dl-tabs { flex-direction: column; }
    .rk-dl-tab-btn { text-align: left; border-bottom: none; border-left: 4px solid transparent; }
    .rk-dl-tab-btn.active { border-bottom-color: transparent; border-left-color: var(--rk-dl-blue); }
    .rk-dl-actions { flex-direction: column; padding: 25px; }
    .rk-dl-btn { width: 100%; }
    .rk-dl-panels { padding: 25px; }
    .rk-dl-header { padding: 30px 25px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#article-infografika",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/"
    },
    "headline": "Kompendium w pigułce – Pobierz darmową infografikę instalacyjną",
    "description": "Profesjonalna infografika podsumowująca różnice i najczęstsze błędy w instalacjach ogrzewania podłogowego dla konstrukcji szkieletowych. Plik PDF gotowy na budowę.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Infografika-Ogrzewanie-podlogowe-w-domu-szkieletowym-–-kluczowe-roznice-i-pulapki.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": "2025-12-29",
    "dateModified": "2026-07-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#dataset-infografika",
    "name": "Zestawienie Wizualne: Błędy Instalacyjne i Dobór Posadzek",
    "description": "Graficzna reprezentacja parametrów krytycznych (OZC, wilgoć, statyka) niezbędnych podczas audytów instalacji płaszczyznowych w technologii drewnianej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "instalacja ogrzewania podłogowego czy warto robić to samemu",
      "jakie błędy najczęściej popełniają instalatorzy ogrzewania podłogowego",
      "wodne ogrzewanie podłogowe a meble jak połączyć komfort i aranżacje",
      "jak często trzeba serwisować ogrzewanie podłogowe",
      "schemat montażu instalacji szkielet"
    ],
    "measurementTechnique": "Agregacja inżynieryjnych danych liczbowych do postaci wizualnych diagramów porównawczych formatu A4.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wektorowa ilustracja obciążeń konstrukcyjnych generowanych przez jastrych betonowy.",
        "Schemat przepływów hydraulicznych i taktowania pompy ciepła.",
        "Kompendium wiedzy do wykorzystania mobilnego (Smartfon/Tablet)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#webapp-infografika",
    "name": "Interaktywne Centrum Pobierania Infografik HVAC",
    "description": "Aplikacja webowa ułatwiająca przegląd, akceptację warunków licencji oraz błyskawiczne pobieranie wektorowych materiałów szkoleniowych w formacie PDF i WEBP.",
    "applicationCategory": "MultimediaApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-dl-container" id="rk-download-hub">
    
    <!-- Nagłówek -->
    <div class="rk-dl-header">
        <h2>
            <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
            Kompendium w pigułce – Pobierz darmową infografikę
        </h2>
        <p>Nie masz czasu czytać całego artykułu na budowie? Przygotowałem dla Ciebie czytelne, wizualne podsumowanie najważniejszych zagrożeń i parametrów.</p>
    </div>

    <!-- Moduł rozszerzonego obrazu (domyślnie ukryty) -->
    <div class="rk-img-modal" id="rkFullImage">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Infografika-Ogrzewanie-podlogowe-w-domu-szkieletowym-–-kluczowe-roznice-i-pulapki.webp" alt="Pełny podgląd infografiki ogrzewania podłogowego" loading="lazy">
        <br>
        <button class="rk-close-modal" onclick="closeImage()">Zamknij Podgląd</button>
    </div>

    <!-- Główny podział na kolumny -->
    <div class="rk-dl-body" id="rkDlBody">
        
        <!-- Kolumna Lewa: Miniatura -->
        <div class="rk-dl-preview-col">
            <div class="rk-dl-thumb-box">
                <img decoding="async" class="rk-dl-thumbnail" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Infografika-Ogrzewanie-podlogowe-w-domu-szkieletowym-–-kluczowe-roznice-i-pulapki.webp" alt="Miniatura: Ogrzewanie w szkielecie" loading="lazy">
            </div>
            <button class="rk-dl-enlarge-btn" onclick="openImage()">
                <svg width="18" height="18" 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>
                Podgląd Pełnego Zdjęcia
            </button>
        </div>

        <!-- Kolumna Prawa: Informacje i Akcje -->
        <div class="rk-dl-content-col">
            
            <!-- Nawigacja zakładek -->
            <div class="rk-dl-tabs">
                <button class="rk-dl-tab-btn active" onclick="switchInfoTab('infoDesc', this)">O Materiale</button>
                <button class="rk-dl-tab-btn" onclick="switchInfoTab('infoLicense', this)">Zasady Prawne</button>
            </div>

            <!-- Treść zakładek -->
            <div class="rk-dl-panels">
                
                <div class="rk-dl-panel" id="infoDesc" style="display: block;">
                    <h3>Co zawiera plik?</h3>
                    <p>Infografika w formacie wysokiej rozdzielczości to narzędzie stworzone dla wykonawców i inwestorów. Pokazuje wprost, dlaczego należy się zastanowić, <a href="https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-czy-warto-robic-to-samemu/">czy instalację ogrzewania podłogowego warto robić samemu</a>.</p>
                    <p>Omawiam na niej zjawisko punktu rosy, nośność stropu drewnianego oraz to, <a href="https://projekt-ogrzewania.pl/jakie-bledy-najczesciej-popelniaja-instalatorzy-ogrzewania-podlogowego/">jakie błędy najczęściej popełniają instalatorzy</a> bazując na mitach z budownictwa murowanego.</p>
                </div>

                <div class="rk-dl-panel" id="infoLicense">
                    <h3>Zasady Udostępniania</h3>
                    <div class="rk-dl-license-box">
                        <p>Udostępnianie materiału PDF dozwolone wyłącznie z zachowaniem oryginalnego logotypu portalu i bez żadnej modyfikacji pliku bazowego.</p>
                    </div>
                    <p>Zależy mi na edukacji rynku. Możesz wydrukować ten materiał na budowę, użyć go podczas konsultacji z klientem czy rozwiązywania dylematów, np. <a href="https://projekt-ogrzewania.pl/wodne-ogrzewanie-podlogowe-a-meble-jak-polaczyc-komfort-i-aranzacje/">jak połączyć komfort wodnej podłogówki z aranżacją mebli</a>, a także w kwestii tego, <a href="https://projekt-ogrzewania.pl/jak-czesto-trzeba-serwisowac-ogrzewanie-podlogowe/">jak często trzeba serwisować cały układ</a>.</p>
                </div>

            </div>

            <!-- Przyciski akcji (Zawsze widoczne w prawej kolumnie) -->
            <div class="rk-dl-actions">
                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Infografika-Ogrzewanie-podlogowe-w-domu-szkieletowym-–-kluczowe-roznice-i-pulapki.pdf" target="_blank" rel="noopener noreferrer" class="rk-dl-btn rk-dl-btn-pdf">
                    <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="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="12" y1="18" x2="12" y2="12"></line><polyline points="9 15 12 18 15 15"></polyline></svg>
                    Pobierz PDF
                </a>
                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Infografika-Ogrzewanie-podlogowe-w-domu-szkieletowym-–-kluczowe-roznice-i-pulapki.webp" target="_blank" rel="noopener noreferrer" class="rk-dl-btn rk-dl-btn-img">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline></svg>
                    Otwórz ZDJĘCIE
                </a>
            </div>

        </div>
    </div>

    <!-- Stopka autorska -->
    <div class="rk-dl-footer">
        © 2026 Projekt-Ogrzewania.pl | Autor: Robert Kucharski. Udostępnianie materiału PDF dozwolone wyłącznie z zachowaniem logotypu portalu i bez modyfikacji pliku.
    </div>

</div>

<script>
function switchInfoTab(tabId, btnElement) {
    // Natychmiastowy reset przycisków
    var navContainer = btnElement.parentElement;
    var allBtns = navContainer.getElementsByClassName('rk-dl-tab-btn');
    var i = 0;
    while (i < allBtns.length) {
        allBtns[i].classList.remove('active');
        i++;
    }
    
    // Natychmiastowa aktywacja
    btnElement.classList.add('active');
    
    // Natychmiastowe ukrycie paneli
    var contentArea = document.querySelector('.rk-dl-panels');
    var allPanels = contentArea.getElementsByClassName('rk-dl-panel');
    var j = 0;
    while (j < allPanels.length) {
        allPanels[j].style.display = 'none';
        j++;
    }
    
    // Wyświetlenie panelu
    var targetPanel = document.getElementById(tabId);
    if (targetPanel !== null) {
        targetPanel.style.display = 'block';
    }
}

function openImage() {
    var modal = document.getElementById('rkFullImage');
    var bodyArea = document.getElementById('rkDlBody');
    if (modal !== null) {
        modal.style.display = 'block';
    }
    if (bodyArea !== null) {
        bodyArea.style.display = 'none';
    }
}

function closeImage() {
    var modal = document.getElementById('rkFullImage');
    var bodyArea = document.getElementById('rkDlBody');
    if (modal !== null) {
        modal.style.display = 'none';
    }
    if (bodyArea !== null) {
        bodyArea.style.display = 'flex';
    }
}
</script>



<style>
:root {
    --rk-sum-dark: #0f172a;
    --rk-sum-blue: #0284c7;
    --rk-sum-light-blue: #f0f9ff;
    --rk-sum-green: #10b981;
    --rk-sum-green-light: #dcfce7;
    --rk-sum-red: #ef4444;
    --rk-sum-gold: #eab308;
    --rk-sum-gray: #64748b;
    --rk-sum-border: #e2e8f0;
    --rk-sum-bg: #ffffff;
}

.rk-tech-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-sum-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid var(--rk-sum-blue);
    overflow: hidden;
}

/* Nagłówki */
.rk-tech-container h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-sum-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-tech-container h3 {
    font-size: 20px;
    font-weight: 700;
    color: var(--rk-sum-blue);
    margin: 0 0 20px 0;
}

.rk-tech-container h4 {
    font-size: 16px;
    font-weight: 700;
    color: var(--rk-sum-gray);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin: 0 0 10px 0;
}

.rk-tech-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, #f8fafc 0%, #e0f2fe 100%);
    border-bottom: 1px solid var(--rk-sum-border);
}

.rk-tech-desc {
    font-size: 16px;
    color: #334155;
    line-height: 1.6;
    margin-bottom: 0;
}

.rk-tech-desc a {
    color: var(--rk-sum-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Interaktywny Switcher */
.rk-interactive-module {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-toggle-wrapper {
    display: flex;
    justify-content: center;
    margin-bottom: 40px;
}

.rk-toggle {
    display: flex;
    background: #f1f5f9;
    border-radius: 99px;
    padding: 6px;
    position: relative;
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.05);
}

.rk-toggle-btn {
    flex: 1;
    padding: 14px 30px;
    border-radius: 99px;
    border: none;
    background: transparent;
    font-size: 16px;
    font-weight: 800;
    color: #64748b;
    cursor: pointer;
    transition: all 0.3s ease;
    z-index: 2;
    position: relative;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-toggle-btn.active {
    color: #ffffff;
}

.rk-toggle-bg {
    position: absolute;
    top: 6px;
    left: 6px;
    height: calc(100% - 12px);
    width: calc(50% - 6px);
    background: var(--rk-sum-blue);
    border-radius: 99px;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 4px 10px rgba(2, 132, 199, 0.3);
    z-index: 1;
}

/* Panel Wyników (Grid / Flex) */
.rk-stats-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

.rk-stat-card {
    background: #f8fafc;
    border: 1px solid var(--rk-sum-border);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    align-items: flex-start;
    gap: 20px;
    transition: all 0.3s ease;
}

.rk-stat-icon {
    width: 50px;
    height: 50px;
    background: #ffffff;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.05);
    flex-shrink: 0;
    color: var(--rk-sum-blue);
}

.rk-stat-info h4 {
    margin-bottom: 5px;
    color: #94a3b8;
    font-size: 13px;
}

.rk-stat-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-sum-dark);
    margin: 0;
    line-height: 1.2;
}

.rk-stat-sub {
    font-size: 13px;
    color: #64748b;
    margin-top: 5px;
}

.val-green { color: var(--rk-sum-green); }
.val-red { color: var(--rk-sum-red); }

/* Tagi SEO Długi Ogon */
.rk-tags-cloud {
    padding: 0 50px 30px;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: center;
}

.rk-mat-tag {
    display: inline-block;
    padding: 8px 16px;
    background: #f1f5f9;
    color: #475569;
    font-size: 13px;
    font-weight: 600;
    border-radius: 8px;
    border: 1px solid #e2e8f0;
    transition: all 0.2s;
}

.rk-mat-tag:hover {
    background: #e2e8f0;
    color: var(--rk-sum-dark);
}

/* CTA */
.rk-tech-cta {
    padding: 40px 50px;
    background: var(--rk-sum-dark);
    text-align: center;
    border-top: 1px solid #1e293b;
}

.rk-tech-cta h3 {
    color: #ffffff;
    margin-bottom: 15px;
}

.rk-tech-cta p {
    color: #94a3b8;
    margin-bottom: 25px;
    font-size: 16px;
}

.rk-btn-tech {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    background: var(--rk-sum-green);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 18px 35px;
    border-radius: 12px;
    text-decoration: none;
    transition: all 0.3s;
    box-shadow: 0 10px 20px -5px rgba(16, 185, 129, 0.4);
}

.rk-btn-tech:hover {
    background: #059669;
    transform: translateY(-3px);
    box-shadow: 0 15px 25px -5px rgba(16, 185, 129, 0.5);
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-tech-header, .rk-interactive-module, .rk-tags-cloud, .rk-tech-cta { padding: 25px 20px; }
    .rk-tech-container h2 { font-size: 24px; }
    .rk-toggle { flex-direction: column; background: transparent; box-shadow: none; gap: 10px; padding: 0; }
    .rk-toggle-btn { background: #f1f5f9; color: #64748b; border: 1px solid var(--rk-sum-border); }
    .rk-toggle-btn.active { background: var(--rk-sum-blue); color: #ffffff; border-color: var(--rk-sum-blue); }
    .rk-toggle-bg { display: none; /* Ukrywamy animowane tło na mobile na rzecz prostych przycisków typu akordeon/stack */ }
    .rk-stats-grid { grid-template-columns: 1fr; }
    .rk-stat-card { padding: 20px; }
    .rk-btn-tech { width: 100%; font-size: 16px; padding: 15px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#article-suchy-vs-mokry",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/"
    },
    "headline": "Suchy vs. mokry system ogrzewania podłogowego w domu szkieletowym",
    "description": "Techniczne porównanie parametrów: obciążenie stropu, czas reakcji oraz wilgoć technologiczna. Sprawdź, dlaczego wylewka betonowa w domu szkieletowym to błąd inżynieryjny.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.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-15",
    "dateModified": "2026-07-15"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#dataset-porownanie",
    "name": "Parametry Fizyczne Systemów Ogrzewania Podłogowego (Suchy vs Beton)",
    "description": "Zestawienie inżynierskie obciążeń statycznych, czasów wiązania oraz pojemności cieplnej dla posadzek grzewczych w budownictwie szkieletowym.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obciążenie stropu drewnianego ogrzewaniem podłogowym",
      "czas schnięcia wylewki betonowej",
      "system suchy ogrzewania podłogowego parametry",
      "wylewka na ogrzewanie podłogowe waga",
      "wilgoć technologiczna w konstrukcji szkieletowej"
    ],
    "measurementTechnique": "Analiza numeryczna zgodnie z normą PN-EN 1264 i PN-EN 1995-1-1.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "System Suchy: Masa 30 kg/m2, Wilgoć 0 litrów, Czas schnięcia 0 dni.",
        "System Mokry (Jastrych): Masa 150 kg/m2, Wilgoć 20 litrów/m2, Czas schnięcia do 42 dni."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#webapp-symulator",
    "name": "Symulator Obciążeń i Wilgoci Podłogówki w Szkielecie",
    "description": "Interaktywny symulator pozwalający przełączać się między systemem suchym a mokrym w celu weryfikacji zagrożeń dla drewnianego stropu.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-tech-container" id="rk-system-comparator">
    <div class="rk-tech-header">
        <h2>Suchy vs. mokry system ogrzewania podłogowego w domu szkieletowym</h2>
        <p class="rk-tech-desc">
            Decyzja o wylaniu ton betonu na drewniany strop to punkt krytyczny inwestycji. Wybór technologii określa nie tylko bezwładność cieplną budynku, ale przede wszystkim bezpieczeństwo nośności drewna C24. Dowiedz się dokładnie <a href="https://projekt-ogrzewania.pl/czym-jest-system-suchy-w-wodnym-ogrzewaniu-podlogowym/">czym jest system suchy</a> i zestaw to z ryzykiem, jakie niesie <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">klasyczna wylewka betonowa</a>.
        </p>
    </div>

    <div class="rk-interactive-module">
        <h3>Symulator wpływu technologii na konstrukcję</h3>
        
        <div class="rk-toggle-wrapper">
            <div class="rk-toggle">
                <div class="rk-toggle-bg" id="rkToggleBg"></div>
                <button class="rk-toggle-btn active" onclick="switchTech('suchy')" id="btnSuchy">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
                    System Suchy (Lekki)
                </button>
                <button class="rk-toggle-btn" onclick="switchTech('mokry')" id="btnMokry">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"></path></svg>
                    Wylewka Cementowa
                </button>
            </div>
        </div>

        <div class="rk-stats-grid">
            <!-- Karta 1 -->
            <div class="rk-stat-card">
                <div class="rk-stat-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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-stat-info">
                    <h4>OBCIĄŻENIE STROPU / M2</h4>
                    <p class="rk-stat-val val-green" id="valWeight">~30 kg</p>
                    <p class="rk-stat-sub" id="subWeight">Całkowicie bezpieczne dla belek stropowych.</p>
                </div>
            </div>
            
            <!-- Karta 2 -->
            <div class="rk-stat-card">
                <div class="rk-stat-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 6 12 12 16 14"></polyline></svg>
                </div>
                <div class="rk-stat-info">
                    <h4>CZAS REAKCJI GRZEWCZEJ</h4>
                    <p class="rk-stat-val val-green" id="valTime">30 - 60 min</p>
                    <p class="rk-stat-sub" id="subTime">Błyskawiczne dopasowanie do zysków solarnych.</p>
                </div>
            </div>

            <!-- Karta 3 -->
            <div class="rk-stat-card">
                <div class="rk-stat-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 15v4c0 1.1.9 2 2 2h14a2 2 0 0 0 2-2v-4M17 9l-5 5-5-5M12 12.8V2.5"></path></svg>
                </div>
                <div class="rk-stat-info">
                    <h4>WILGOĆ TECHNOLOGICZNA</h4>
                    <p class="rk-stat-val val-green" id="valMoisture">0 litrów</p>
                    <p class="rk-stat-sub" id="subMoisture">Brak ryzyka pęcznienia drewna konstrukcyjnego.</p>
                </div>
            </div>

            <!-- Karta 4 -->
            <div class="rk-stat-card">
                <div class="rk-stat-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg>
                </div>
                <div class="rk-stat-info">
                    <h4>GOTOWOŚĆ DO UKŁADANIA PANAELI</h4>
                    <p class="rk-stat-val val-green" id="valDrying">Natychmiast</p>
                    <p class="rk-stat-sub" id="subDrying">Oszczędzasz min. miesiąc postoju budowy.</p>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-tags-cloud">
        <span class="rk-mat-tag"># ogrzewanie podłogowe w domu szkieletowym</span>
        <span class="rk-mat-tag"># system suchy ogrzewania podłogowego</span>
        <span class="rk-mat-tag"># wylewka na ogrzewanie podłogowe</span>
        <span class="rk-mat-tag"># lekka podłogówka bez wylewki</span>
        <span class="rk-mat-tag"># obciążenie stropu drewnianego</span>
        <span class="rk-mat-tag"># czas schnięcia wylewki</span>
        <span class="rk-mat-tag"># frezowanie ogrzewania podłogowego</span>
        <span class="rk-mat-tag"># cena za m2 robocizny podłogówki</span>
        <span class="rk-mat-tag"># ogrzewanie podłogowe wodne bez wylewki</span>
        <span class="rk-mat-tag"># wilgoć technologiczna w domu drewnianym</span>
    </div>

    <div class="rk-tech-cta">
        <h3>Zabezpiecz budżet i uniknij błędów</h3>
        <p>Zobacz pełne analizy, wyliczenia i inżynierskie przewodniki. Przejdź do największej w Polsce bazy wiedzy o płaszczyznowych systemach grzewczych.</p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-tech">
            BAZA WIEDZY EKSKLUZYWNEJ
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 16 16 12 12 8"></polyline><line x1="8" y1="12" x2="16" y2="12"></line></svg>
        </a>
    </div>
</div>

<script>
function switchTech(type) {
    const btnSuchy = document.getElementById('btnSuchy');
    const btnMokry = document.getElementById('btnMokry');
    const bg = document.getElementById('rkToggleBg');
    
    // Zmienne DOM dla wyników
    const valWeight = document.getElementById('valWeight');
    const subWeight = document.getElementById('subWeight');
    const valTime = document.getElementById('valTime');
    const subTime = document.getElementById('subTime');
    const valMoisture = document.getElementById('valMoisture');
    const subMoisture = document.getElementById('subMoisture');
    const valDrying = document.getElementById('valDrying');
    const subDrying = document.getElementById('subDrying');

    if (type === 'suchy') {
        btnSuchy.classList.add('active');
        btnMokry.classList.remove('active');
        if(window.innerWidth > 768) {
            bg.style.transform = 'translateX(0)';
        }

        valWeight.textContent = '~30 kg';
        valWeight.className = 'rk-stat-val val-green';
        subWeight.textContent = 'Całkowicie bezpieczne dla belek stropowych.';
        
        valTime.textContent = '30 - 60 min';
        valTime.className = 'rk-stat-val val-green';
        subTime.textContent = 'Błyskawiczne dopasowanie do zysków solarnych.';

        valMoisture.textContent = '0 litrów';
        valMoisture.className = 'rk-stat-val val-green';
        subMoisture.textContent = 'Brak ryzyka pęcznienia drewna konstrukcyjnego.';

        valDrying.textContent = 'Natychmiast';
        valDrying.className = 'rk-stat-val val-green';
        subDrying.textContent = 'Oszczędzasz min. miesiąc postoju budowy.';

    } else {
        btnMokry.classList.add('active');
        btnSuchy.classList.remove('active');
        if(window.innerWidth > 768) {
            bg.style.transform = 'translateX(100%)';
        }

        valWeight.textContent = '~150 kg';
        valWeight.className = 'rk-stat-val val-red';
        subWeight.textContent = 'Ryzyko przekroczenia nośności statycznej stropu.';
        
        valTime.textContent = '4 - 6 godzin';
        valTime.className = 'rk-stat-val val-red';
        subTime.textContent = 'Wysoka bezwładność, przegrzewanie pomieszczeń.';

        valMoisture.textContent = 'Setki litrów';
        valMoisture.className = 'rk-stat-val val-red';
        subMoisture.textContent = 'Zagrożenie pleśnią i pękaniem drewna budowlanego.';

        valDrying.textContent = '4 - 6 tygodni';
        valDrying.className = 'rk-stat-val val-red';
        subDrying.textContent = 'Blokada prac wykończeniowych na budowie.';
    }
}
</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": [
        "ogrzewanie podłogowe w domu szkieletowym",
        "lekka podłogówka system suchy",
        "wylewka na drewnianym stropie",
        "projekt instalacji ogrzewania podłogowego",
        "taktowanie pompy ciepła w szkielecie"
      ],
      "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/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/">Ogrzewanie podłogowe w domu szkieletowym – kluczowe różnice i pułapki.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Kalkulator strat ciepła budynku – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie.</title>
		<link>https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Mon, 09 Mar 2026 11:26:18 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Instalacja ogrzewania podłogowego]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Modernizacja domu]]></category>
		<category><![CDATA[Modernizacja ogrzewania]]></category>
		<category><![CDATA[Narzędzia i kalkulatory]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki inwestora]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[ile wat na m2]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[kalkulator strat ciepła]]></category>
		<category><![CDATA[moc ogrzewania domu]]></category>
		<category><![CDATA[obliczanie strat ciepła]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[straty ciepła domu]]></category>
		<category><![CDATA[zapotrzebowanie na ogrzewanie]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3743</guid>

					<description><![CDATA[<p>Obliczenie zapotrzebowania na ciepło budynku to pierwszy krok do prawidłowego zaprojektowania instalacji grzewczej. W tym poradniku pokazujemy, jak w prosty sposób oszacować straty energii w domu i sprawdzić, czy ogrzewanie podłogowe będzie wystarczające. Dzięki praktycznym wskazówkom oraz przykładom obliczeń dowiesz się, jak wykorzystać kalkulator strat ciepła domu – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie, aby ocenić moc instalacji, temperaturę zasilania oraz potencjalne koszty eksploatacji. To wiedza szczególnie przydatna dla inwestorów budujących dom lub modernizujących starsze budynki.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">Kalkulator strat ciepła budynku – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-panel: #1e293b;
    --rk-intro-brand: #2563eb;
    --rk-intro-brand-light: #eff6ff;
    --rk-intro-accent: #f97316;
    --rk-intro-bg: #ffffff;
    --rk-intro-border: #e2e8f0;
    --rk-intro-text: #334155;
    --rk-intro-muted: #64748b;
    --rk-intro-success: #10b981;
}

.rk-intro-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-intro-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(37, 99, 235, 0.1);
    border: 1px solid var(--rk-intro-border);
    overflow: hidden;
}

/* Sekcja Główna - Hook & Tytuł */
.rk-intro-header {
    padding: 50px 50px 40px 50px;
    background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
    position: relative;
    border-bottom: 4px solid var(--rk-intro-brand);
}

.rk-intro-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--rk-intro-dark);
    color: #ffffff;
    padding: 8px 18px;
    border-radius: 99px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 25px;
    box-shadow: 0 4px 10px rgba(15, 23, 42, 0.15);
}

.rk-intro-title {
    font-size: 32px;
    font-weight: 900;
    color: var(--rk-intro-dark);
    line-height: 1.25;
    margin: 0 0 25px 0;
}

.rk-intro-title span {
    color: var(--rk-intro-brand);
}

/* Hook Section */
.rk-intro-hook-box {
    background: #ffffff;
    border-left: 5px solid var(--rk-intro-accent);
    padding: 25px 30px;
    border-radius: 0 16px 16px 0;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05);
    margin-bottom: 30px;
}

.rk-intro-hook-box p {
    margin: 0;
    font-size: 17px;
    line-height: 1.7;
    color: var(--rk-intro-text);
    font-weight: 500;
}

.rk-intro-hook-box strong {
    color: var(--rk-intro-dark);
    font-weight: 800;
}

.rk-intro-description {
    font-size: 15px;
    line-height: 1.8;
    color: var(--rk-intro-text);
    margin: 0;
}

/* Sekcja Czego się dowiesz (Kafelki) */
.rk-intro-learn-section {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-intro-learn-title {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-intro-dark);
    margin: 0 0 25px 0;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-intro-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.rk-intro-card {
    background: var(--rk-intro-brand-light);
    border: 1px solid #bfdbfe;
    border-radius: 16px;
    padding: 25px;
    display: flex;
    align-items: flex-start;
    gap: 20px;
}

.rk-intro-card-icon {
    width: 48px;
    height: 48px;
    background: var(--rk-intro-brand);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: #ffffff;
}

.rk-intro-card-content h4 {
    margin: 0 0 8px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-intro-dark);
}

.rk-intro-card-content p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-intro-text);
}

/* Author Tag */
.rk-intro-author {
    display: flex;
    align-items: center;
    gap: 15px;
    margin-top: 30px;
    padding-top: 25px;
    border-top: 1px solid var(--rk-intro-border);
}

.rk-intro-author-avatar {
    width: 45px;
    height: 45px;
    border-radius: 50%;
    border: 2px solid var(--rk-intro-brand);
    object-fit: cover;
}

.rk-intro-author-info span {
    display: block;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-intro-dark);
}

.rk-intro-author-info small {
    font-size: 12px;
    color: var(--rk-intro-muted);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

@media (max-width: 768px) {
    .rk-intro-header { padding: 35px 25px; }
    .rk-intro-title { font-size: 26px; }
    .rk-intro-hook-box { padding: 20px; }
    .rk-intro-learn-section { padding: 35px 25px; }
    .rk-intro-grid { grid-template-columns: 1fr; }
    .rk-intro-card { padding: 20px; flex-direction: column; gap: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-intro",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Kalkulator strat ciepła budynku – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie?",
    "description": "Zanim wydasz pieniądze na pompę ciepła, poznaj inżynierskie metody szacowania mocy. Kompletny przewodnik po obliczeniach OZC dla inwestorów.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-intro",
    "name": "Parametry wejściowe do obliczeń zapotrzebowania cieplnego budynku",
    "description": "Baza wiedzy definiująca podstawowe składowe analizy cieplnej budynków jednorodzinnych: izolacyjność, wentylację oraz założenia projektowe.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator strat ciepła",
      "obliczanie zapotrzebowania na ogrzewanie",
      "moc pompy ciepła",
      "projekt ogrzewania podłogowego",
      "obciążenie cieplne budynku"
    ],
    "measurementTechnique": "Przegląd inżynierski: Weryfikacja parametrów izolacyjnych, mostków termicznych oraz wentylacyjnych wpływających na dobór źródła ciepła.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Metodyka określania mocy cieplnej bez ryzyka przewymiarowania instalacji.",
        "Analiza parametrów przegród (U) i ich wpływ na całkowite zapotrzebowanie.",
        "Zasady doboru rozstawu rur grzewczych na podstawie wyniku W/m2."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-intro",
    "name": "Przewodnik: Kalkulator Strat Ciepła",
    "description": "Edukacyjny moduł wprowadzający inwestora do zagadnień fizyki budowli, stanowiący mapę drogową do samodzielnego szacowania obciążenia cieplnego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-wrapper">
    
    <div class="rk-intro-header">
        <div class="rk-intro-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
            Kompendium Inwestora
        </div>
        
        <h2 class="rk-intro-title">Kalkulator strat ciepła budynku – <span>jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie?</span></h2>
        
        <div class="rk-intro-hook-box">
            <p><strong>Zanim wydasz kilkadziesiąt tysięcy złotych</strong> na pompę ciepła lub instalację podłogówki, musisz znać jedną, absolutnie fundamentalną liczbę: rzeczywiste obciążenie cieplne Twojego domu. Dobór źródła ciepła „na oko” to najprostsza droga do drastycznego przewymiarowania systemu, ciągłych awarii sprężarki i gigantycznych rachunków za prąd.</p>
        </div>

        <p class="rk-intro-description">Planowanie ogrzewania podłogowego w nowym domu lub podczas modernizacji starej instalacji zawsze rozpoczyna się od kluczowego pytania: jak samodzielnie obliczyć straty ciepła budynku pod ogrzewanie podłogowe, aby mieć pewność, że system będzie działał efektywnie? Właśnie w tym pomaga <strong>kalkulator strat ciepła budynku – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie</strong>, który pozwala w prosty sposób oszacować, ile energii potrzebuje budynek do utrzymania komfortowej temperatury. Narzędzie to, opierając się na uproszczonych algorytmach inżynierskich, pozwala inwestorowi na precyzyjne określenie mocy źródła ciepła.</p>
        
        <div class="rk-intro-author">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-intro-author-avatar" loading="lazy">
            <div class="rk-intro-author-info">
                <span>Jako wieloletni praktyk i twórca tego poratlu, w tym artykule przeprowadzę Cię przez cały proces matematyczny.</span>
                <small>Robert Kucharski, CEO projekt-ogrzewania.pl</small>
            </div>
        </div>
    </div>

    <div class="rk-intro-learn-section">
        <h3 class="rk-intro-learn-title">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--rk-intro-accent)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
            Z tego poradnika dowiesz się:
        </h3>
        
        <div class="rk-intro-grid">
            
            <div class="rk-intro-card">
                <div class="rk-intro-card-icon">
                    <svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><line x1="8" y1="6" x2="16" y2="6"></line><line x1="16" y1="14" x2="16.01" y2="14"></line><line x1="12" y1="14" x2="12.01" y2="14"></line><line x1="8" y1="14" x2="8.01" y2="14"></line><line x1="16" y1="18" x2="16.01" y2="18"></line><line x1="12" y1="18" x2="12.01" y2="18"></line><line x1="8" y1="18" x2="8.01" y2="18"></line></svg>
                </div>
                <div class="rk-intro-card-content">
                    <h4>Algorytmy i Narzędzia</h4>
                    <p>Jak w uproszczony sposób korzystać ze wzorów na przenikanie (U) oraz straty wentylacyjne, bez konieczności opłacania drogich audytów na wczesnym etapie inwestycji.</p>
                </div>
            </div>

            <div class="rk-intro-card">
                <div class="rk-intro-card-icon">
                    <svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
                </div>
                <div class="rk-intro-card-content">
                    <h4>Diagnostyka Przegród</h4>
                    <p>Zrozumiesz, dlaczego gruby styropian to nie wszystko, jak obliczyć opór cieplny paneli podłogowych i jak strefa klimatyczna wpływa na bilans Twojego domu.</p>
                </div>
            </div>

            <div class="rk-intro-card">
                <div class="rk-intro-card-icon">
                    <svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="12 2 22 20 2 20 12 2"></polygon><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                </div>
                <div class="rk-intro-card-content">
                    <h4>Najdroższe Błędy Inwestorów</h4>
                    <p>Dowiesz się, jakich 6 najczęstszych pomyłek (np. zła kubatura, brak izolacji brzegowej) unikać podczas szacowania mocy, aby nie zawyżyć sztucznie kosztów instalacji.</p>
                </div>
            </div>

            <div class="rk-intro-card">
                <div class="rk-intro-card-icon">
                    <svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 6h16M4 12h16M4 18h16"></path><path d="M12 2v20"></path></svg>
                </div>
                <div class="rk-intro-card-content">
                    <h4>Przełożenie na Projekt</h4>
                    <p>Zobaczysz, jak uzyskane Waty na metr kwadratowy (W/m²) bezpośrednio decydują o zagęszczeniu rur (co 10 czy 15 cm), długości pętli i ustawieniach rotametrów.</p>
                </div>
            </div>

        </div>
    </div>

</div>



<style>
:root {
    --rk-wt-dark: #0f172a;
    --rk-wt-panel: #1e293b;
    --rk-wt-brand: #0ea5e9; /* Główny niebieski */
    --rk-wt-brand-light: #f0f9ff;
    --rk-wt-accent: #f97316; /* Pomarańczowy dla ciepła */
    --rk-wt-success: #10b981;
    --rk-wt-warn: #f59e0b;
    --rk-wt-danger: #ef4444;
    --rk-wt-bg: #ffffff;
    --rk-wt-border: #e2e8f0;
    --rk-wt-text: #334155;
    --rk-wt-muted: #64748b;
}

.rk-wt-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-wt-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(14, 165, 233, 0.15);
    border: 1px solid rgba(14, 165, 233, 0.3);
    overflow: hidden;
    color: var(--rk-wt-dark);
}

/* Nagłówek Sekcji */
.rk-wt-header {
    background: linear-gradient(135deg, var(--rk-wt-dark) 0%, #082f49 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-wt-brand);
}

.rk-wt-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(14, 165, 233, 0.2);
    color: #38bdf8;
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(56, 189, 248, 0.2);
}

.rk-wt-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
}

.rk-wt-title span { color: #38bdf8; }

.rk-wt-direct-box {
    background: rgba(255, 255, 255, 0.05);
    border-left: 4px solid var(--rk-wt-accent);
    padding: 20px 25px;
    border-radius: 0 12px 12px 0;
}

.rk-wt-direct-box p {
    margin: 0 0 10px 0;
    font-size: 15px;
    line-height: 1.7;
    color: #e0f2fe;
}

.rk-wt-direct-box p:last-child { margin: 0; }
.rk-wt-direct-box strong { color: #ffffff; }

/* Sekcja Interaktywna */
.rk-wt-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-wt-interactive h3 {
    text-align: center;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-wt-dark);
    margin: 0 0 10px 0;
}

.rk-wt-subtitle {
    text-align: center;
    font-size: 15px;
    color: var(--rk-wt-muted);
    margin: 0 0 35px 0;
}

/* Przełącznik Budynków */
.rk-wt-tabs {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    margin-bottom: 35px;
}

.rk-wt-tab-btn {
    background: #ffffff;
    border: 2px solid var(--rk-wt-border);
    border-radius: 16px;
    padding: 15px;
    text-align: center;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-wt-tab-btn:hover {
    border-color: var(--rk-wt-brand);
    transform: translateY(-3px);
}

.rk-wt-tab-btn.active {
    border-color: var(--rk-wt-brand);
    background: var(--rk-wt-brand-light);
    box-shadow: 0 10px 20px -5px rgba(14, 165, 233, 0.2);
}

.rk-wt-tab-icon {
    width: 40px;
    height: 40px;
    background: #f1f5f9;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-wt-muted);
    transition: 0.3s;
}

.rk-wt-tab-btn.active .rk-wt-tab-icon {
    background: var(--rk-wt-brand);
    color: #ffffff;
}

.rk-wt-tab-text {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-wt-dark);
}

/* Grid Wyników i Animacji */
.rk-wt-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
}

/* Kafelki z danymi (Zastępują Tabelę) */
.rk-wt-data-wrapper {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-wt-data-card {
    background: #ffffff;
    border: 1px solid var(--rk-wt-border);
    border-radius: 12px;
    padding: 15px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-wt-data-card.highlight {
    background: var(--rk-wt-dark);
    border-color: var(--rk-wt-dark);
}

.rk-wt-data-label {
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-wt-muted);
}

.rk-wt-data-card.highlight .rk-wt-data-label {
    color: #94a3b8;
}

.rk-wt-data-val {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-wt-dark);
    text-align: right;
}

.rk-wt-data-card.highlight .rk-wt-data-val {
    color: #ffffff;
    font-size: 20px;
}

/* SVG Symulator */
.rk-wt-visual {
    background: var(--rk-wt-dark);
    border-radius: 16px;
    border: 3px solid #334155;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
    box-shadow: inset 0 0 30px rgba(0,0,0,0.5);
}

.rk-wt-svg { width: 100%; height: 100%; }

/* Animacje i stany SVG */
.anim-heat-floor { transition: fill 0.5s ease; }
.anim-heat-escape { transition: opacity 0.5s ease; stroke-dasharray: 6 6; }
.anim-warning-sign { opacity: 0; transition: opacity 0.3s; transform-origin: center; }

/* Stan: Nowy Dom */
.state-new .anim-heat-floor { fill: #f59e0b; }
.state-new .anim-heat-escape { opacity: 0.2; stroke: #f59e0b; animation: floatHeat 3s linear infinite; }

/* Stan: Modernizacja */
.state-mod .anim-heat-floor { fill: #ea580c; }
.state-mod .anim-heat-escape { opacity: 0.6; stroke: #ea580c; animation: floatHeat 2s linear infinite; stroke-width: 4; }

/* Stan: Stary Dom */
.state-old .anim-heat-floor { fill: #ef4444; }
.state-old .anim-heat-escape { opacity: 1; stroke: #ef4444; animation: floatHeat 1s linear infinite; stroke-width: 6; }
.state-old .anim-warning-sign { opacity: 1; animation: pulseWarn 1s infinite alternate; }

@keyframes floatHeat { to { stroke-dashoffset: -20; } }
@keyframes pulseWarn { from { transform: scale(0.9); } to { transform: scale(1.1); } }

/* Podsumowanie tekstowe */
.rk-wt-summary {
    padding: 0 50px 40px 50px;
    background: #f8fafc;
}

.rk-wt-summary-box {
    background: #ffffff;
    border: 1px solid var(--rk-wt-border);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    gap: 20px;
    align-items: flex-start;
}

.rk-wt-summary-icon {
    width: 48px;
    height: 48px;
    background: var(--rk-wt-brand-light);
    color: var(--rk-wt-brand);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.rk-wt-summary-text p {
    margin: 0 0 10px 0;
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-wt-text);
}

.rk-wt-link {
    color: var(--rk-wt-brand);
    font-weight: 800;
    text-decoration: none;
    border-bottom: 2px dashed rgba(14, 165, 233, 0.4);
    transition: 0.3s;
    font-size: 14px;
}

.rk-wt-link:hover {
    color: #0284c7;
    border-bottom-style: solid;
}

@media (max-width: 768px) {
    .rk-wt-header { padding: 35px 20px; }
    .rk-wt-title { font-size: 24px; }
    .rk-wt-direct-box { padding: 15px; }
    .rk-wt-interactive { padding: 30px 20px; }
    .rk-wt-tabs { grid-template-columns: 1fr; gap: 10px; }
    .rk-wt-tab-btn { flex-direction: row; padding: 12px 20px; }
    .rk-wt-grid { grid-template-columns: 1fr; }
    .rk-wt-data-card { flex-direction: column; align-items: flex-start; gap: 5px; }
    .rk-wt-data-val { text-align: left; }
    .rk-wt-visual { min-height: 220px; }
    .rk-wt-summary { padding: 0 20px 30px 20px; }
    .rk-wt-summary-box { flex-direction: column; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-w-m2",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Ile watów ogrzewania podłogowego na metr kwadratowy (W/m²) potrzebuje nowoczesny dom?",
    "description": "Analiza wskaźników zapotrzebowania cieplnego budynku W/m2 według standardów WT 2021 oraz normy PN-EN 1264. Sprawdź limity mocy dla ogrzewania podłogowego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-w-m2",
    "name": "Wskaźniki zapotrzebowania na ciepło W/m2 (Tabela techniczna)",
    "description": "Zestawienie współczynników przenikania ciepła przegród oraz jednostkowego zapotrzebowania na moc grzewczą w zależności od standardu budynku (Nowy, Po termomodernizacji, Stary).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zapotrzebowanie na ciepło W/m2",
      "moc ogrzewania podłogowego z m2",
      "maksymalna temperatura podłogówki",
      "norma PN-EN 1264",
      "współczynnik przenikania U ściany"
    ],
    "measurementTechnique": "Dane tabelaryczne określające relację między izolacyjnością budynku a wymaganą gęstością i temperaturą zasilania układu płaszczyznowego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Nowy dom WT 2021: 45 W/m2, U ściany 0.15-0.18, zasilanie 30-35°C (Idealne)",
        "Dom z lat 90 po ociepleniu: 75 W/m2, U ściany 0.25-0.30 (Warunkowe, gęsty rozstaw)",
        "Stary dom: 160 W/m2, U ściany 1.20-1.50 (Brak możliwości samej podłogówki)"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-w-m2",
    "name": "Symulator Standardu Energetycznego W/m2",
    "description": "Interaktywny panel prezentujący limity mocy grzewczej i ryzyko przegrzania posadzki w zależności od izolacji termicznej budynku.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-wt-container" id="rk-wt-app">
    
    <div class="rk-wt-header">
        <div class="rk-wt-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Bilans Mocy W/m²
        </div>
        <h2 class="rk-wt-title">Ile watów ogrzewania podłogowego na metr kwadratowy (W/m²) <span>potrzebuje nowoczesny dom?</span></h2>
        
        <div class="rk-wt-direct-box">
            <p><strong>Bezpośrednia odpowiedź:</strong> Nowoczesny dom jednorodzinny spełniający standardy WT 2021 wykazuje jednostkowe zapotrzebowanie na ciepło na poziomie od <strong>40 W/m² do 50 W/m²</strong> w najzimniejszy dzień roku. Maksymalna dopuszczalna norma emisji ciepła przez podłogę w strefie stałego przebywania ludzi wynosi <strong>80 W/m²</strong> (reguluje to międzynarodowa norma <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/" style="color:#7dd3fc;">PN-EN 1264</a>).</p>
            <p>Gdy zapotrzebowanie przekracza bezpieczną granicę (np. w starych domach), posadzka staje się zbyt gorąca. Wymuszanie mocy powyżej 100 W/m² z samej podłogówki prowadzi do temperatur rzędu 32-35°C, co wywołuje syndrom „ciężkich nóg” i pękanie okładzin.</p>
        </div>
    </div>

    

    <div class="rk-wt-interactive">
        <h3>Wskaźniki zapotrzebowania na ciepło</h3>
        <p class="rk-wt-subtitle">Wybierz standard izolacji swojego budynku, aby sprawdzić parametry dla przykładowego domu 150 m².</p>
        
        <div class="rk-wt-tabs">
            <div class="rk-wt-tab-btn active" onclick="rkUpdateWT('new')">
                <div class="rk-wt-tab-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path></svg></div>
                <div class="rk-wt-tab-text">Nowy Dom<br><span style="font-size:11px; font-weight:normal; color:var(--rk-wt-muted)">WT 2021 / 2026</span></div>
            </div>
            <div class="rk-wt-tab-btn" onclick="rkUpdateWT('mod')">
                <div class="rk-wt-tab-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                <div class="rk-wt-tab-text">Po modernizacji<br><span style="font-size:11px; font-weight:normal; color:var(--rk-wt-muted)">Docieplony (Lata 90.)</span></div>
            </div>
            <div class="rk-wt-tab-btn" onclick="rkUpdateWT('old')">
                <div class="rk-wt-tab-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg></div>
                <div class="rk-wt-tab-text">Stary Dom<br><span style="font-size:11px; font-weight:normal; color:var(--rk-wt-muted)">Brak izolacji</span></div>
            </div>
        </div>

        <div class="rk-wt-grid">
            
            <div class="rk-wt-data-wrapper">
                <div class="rk-wt-data-card">
                    <span class="rk-wt-data-label">Współczynnik U ściany</span>
                    <span class="rk-wt-data-val"><span id="rk-wt-uwall">0,15 – 0,18</span> <span style="font-size:12px; color:var(--rk-wt-muted)">W/(m²·K)</span></span>
                </div>
                <div class="rk-wt-data-card">
                    <span class="rk-wt-data-label">Współczynnik U okien</span>
                    <span class="rk-wt-data-val"><span id="rk-wt-uwin">0,80 – 0,90</span> <span style="font-size:12px; color:var(--rk-wt-muted)">W/(m²·K)</span></span>
                </div>
                <div class="rk-wt-data-card highlight" id="card-req">
                    <span class="rk-wt-data-label">Średnie zapotrzebowanie</span>
                    <span class="rk-wt-data-val"><span id="rk-wt-req">45</span> <span style="font-size:14px;">W/m²</span></span>
                </div>
                <div class="rk-wt-data-card">
                    <span class="rk-wt-data-label">Całkowita moc dla 150 m²</span>
                    <span class="rk-wt-data-val"><span id="rk-wt-tot">6,75</span> <span style="font-size:12px; color:var(--rk-wt-muted)">kW</span></span>
                </div>
                <div class="rk-wt-data-card">
                    <span class="rk-wt-data-label">Zdatność do podłogówki</span>
                    <span class="rk-wt-data-val" id="rk-wt-stat" style="font-size:14px;">Idealna (zasilanie 30-35°C)</span>
                </div>
            </div>

            <div class="rk-wt-visual state-new" id="rk-wt-svg-box">
                <svg class="rk-wt-svg" viewBox="0 0 200 150">
                    <rect x="20" y="40" width="160" height="90" fill="none" stroke="#64748b" stroke-width="4" />
                    <rect x="140" y="50" width="40" height="50" fill="rgba(56, 189, 248, 0.1)" stroke="#38bdf8" stroke-width="2" />
                    
                    <rect class="anim-heat-floor" x="20" y="120" width="160" height="10" />
                    <circle cx="40" cy="125" r="3" fill="#ffffff" />
                    <circle cx="70" cy="125" r="3" fill="#ffffff" />
                    <circle cx="100" cy="125" r="3" fill="#ffffff" />
                    <circle cx="130" cy="125" r="3" fill="#ffffff" />
                    <circle cx="160" cy="125" r="3" fill="#ffffff" />

                    <path class="anim-heat-escape" d="M 60 40 L 60 10" fill="none" stroke-width="2" />
                    <path class="anim-heat-escape" d="M 100 40 L 100 10" fill="none" stroke-width="2" />
                    
                    <path class="anim-heat-escape" d="M 180 60 L 220 60" fill="none" stroke-width="2" />
                    <path class="anim-heat-escape" d="M 180 80 L 220 80" fill="none" stroke-width="2" />

                    <g class="anim-warning-sign" transform="translate(100, 80)">
                        <polygon points="0,-20 -20,15 20,15" fill="#ef4444" stroke="#ffffff" stroke-width="2"/>
                        <text x="0" y="10" fill="#ffffff" font-size="20" font-weight="bold" text-anchor="middle">!</text>
                    </g>
                </svg>
            </div>

        </div>
    </div>

    <div class="rk-wt-summary">
        <div class="rk-wt-summary-box">
            <div class="rk-wt-summary-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><path d="M12 8v4l3 3"></path></svg>
            </div>
            <div class="rk-wt-summary-text">
                <p>Jeśli z obliczeń w Twoim arkuszu lub audycie wynika wskaźnik na poziomie <strong>40-50 W/m²</strong>, system płaszczyznowy będzie pracował w trybie niskotemperaturowym. Oznacza to zużywanie absolutnie minimalnej ilości energii elektrycznej przez pompę ciepła lub gazu w kotle kondensacyjnym.</p>
                <p>Przy wysokich stratach (np. 160 W/m²), sama podłogówka nie wystarczy. Pamiętaj, by nie przegrzewać posadzki i zadbać o izolację. Przeczytaj również, <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-moze-byc-jedynym-zrodlem-ciepla-w-domu-analiza-dla-polskich-warunkow/" class="rk-wt-link">czy podłogówka może być jedynym źródłem ciepła w domu</a> oraz dowiedz się, <a href="https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/" class="rk-wt-link">jaka jest optymalna temperatura posadzki</a> dla zdrowia mieszkańców.</p>
            </div>
        </div>
    </div>

</div>

<script>
const houseData = {
    new: {
        wU: '0,15 – 0,18', winU: '0,80 – 0,90', req: '45', tot: '6,75', stat: 'Idealna (zasilanie 30-35°C)',
        color: '#10b981', stateClass: 'state-new'
    },
    mod: {
        wU: '0,25 – 0,30', winU: '1,30 – 1,60', req: '75', tot: '11,25', stat: 'Warunkowa (gęsty rozstaw)',
        color: '#f59e0b', stateClass: 'state-mod'
    },
    old: {
        wU: '1,20 – 1,50', winU: '2,50 – 3,00', req: '160', tot: '24,00', stat: 'Brak (wymagane grzejniki)',
        color: '#ef4444', stateClass: 'state-old'
    }
};

function rkUpdateWT(type) {
    const btns = document.querySelectorAll('.rk-wt-tab-btn');
    btns.forEach(b => b.classList.remove('active'));
    event.currentTarget.classList.add('active');

    const data = houseData[type];
    
    document.getElementById('rk-wt-uwall').innerText = data.wU;
    document.getElementById('rk-wt-uwin').innerText = data.winU;
    document.getElementById('rk-wt-req').innerText = data.req;
    document.getElementById('rk-wt-tot').innerText = data.tot;
    
    const statEl = document.getElementById('rk-wt-stat');
    statEl.innerText = data.stat;
    statEl.style.color = data.color;

    const reqCard = document.getElementById('card-req');
    reqCard.style.backgroundColor = data.color;
    reqCard.style.borderColor = data.color;

    const svgBox = document.getElementById('rk-wt-svg-box');
    svgBox.className = 'rk-wt-visual ' + data.stateClass;
}
</script>



<style>
:root {
    --rk-zone-dark: #0f172a;
    --rk-zone-panel: #1e293b;
    --rk-zone-brand: #0284c7; 
    --rk-zone-brand-light: #e0f2fe;
    --rk-zone-accent: #f59e0b; /* Pomarańcz - Ciepło wewnątrz */
    --rk-zone-freeze: #3b82f6; /* Błękit - Zimno na zewnątrz */
    --rk-zone-bg: #ffffff;
    --rk-zone-border: #e2e8f0;
    --rk-zone-text: #334155;
    --rk-zone-muted: #64748b;
}

.rk-zone-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-zone-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid rgba(2, 132, 199, 0.3);
    overflow: hidden;
    color: var(--rk-zone-dark);
}

/* Nagłówek Sekcji */
.rk-zone-header {
    background: linear-gradient(135deg, var(--rk-zone-dark) 0%, #082f49 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-zone-brand);
}

.rk-zone-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #7dd3fc;
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(125, 211, 252, 0.2);
}

.rk-zone-header h2 {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 15px 0;
}

.rk-zone-header h2 span { color: #38bdf8; }

.rk-zone-direct {
    font-size: 15px;
    line-height: 1.7;
    color: #e0f2fe;
    margin: 0;
    padding-left: 20px;
    border-left: 3px solid var(--rk-zone-accent);
}

.rk-zone-direct strong {
    color: #ffffff;
}

/* Moduł Interaktywny */
.rk-zone-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-zone-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 35px;
    align-items: center;
}

/* Kontrolki - Suwak Stref */
.rk-zone-controls {
    background: #ffffff;
    border: 1px solid var(--rk-zone-border);
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
}

.rk-zone-ctrl-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    margin-bottom: 25px;
}

.rk-zone-ctrl-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-zone-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin: 0;
}

.rk-zone-val-display {
    font-size: 32px;
    font-weight: 900;
    color: var(--rk-zone-brand);
    line-height: 1;
}

.rk-zone-slider-wrap {
    position: relative;
    padding: 20px 0;
}

.rk-zone-range {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    background: linear-gradient(to right, #7dd3fc, #1e3a8a);
    border-radius: 4px;
    outline: none;
}

.rk-zone-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #ffffff;
    border: 4px solid var(--rk-zone-brand);
    cursor: pointer;
    box-shadow: 0 4px 10px rgba(2, 132, 199, 0.3);
    transition: transform 0.1s;
}

.rk-zone-range::-webkit-slider-thumb:active {
    transform: scale(1.15);
}

.rk-zone-markers {
    display: flex;
    justify-content: space-between;
    margin-top: 10px;
    font-size: 11px;
    font-weight: 700;
    color: var(--rk-zone-muted);
}

/* Wyniki (Kafelki) */
.rk-zone-data-box {
    display: flex;
    flex-direction: column;
    gap: 15px;
    margin-top: 25px;
}

.rk-zone-card {
    background: #f1f5f9;
    padding: 15px 20px;
    border-radius: 12px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-left: 4px solid var(--rk-zone-brand);
}

.rk-zone-card-label {
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-zone-text);
}

.rk-zone-card-val {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-zone-dark);
}

.rk-zone-card-val span {
    font-size: 12px;
    color: var(--rk-zone-muted);
}

/* Prawa Kolumna - SVG Wizualizacja */
.rk-zone-visual {
    background: var(--rk-zone-dark);
    border-radius: 20px;
    height: 100%;
    min-height: 320px;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 3px solid #334155;
    box-shadow: inset 0 0 40px rgba(0,0,0,0.6);
}

.rk-zone-svg {
    width: 100%;
    height: 100%;
}

/* Bloki Tekstowe z Obliczeniami */
.rk-zone-content {
    padding: 0 50px 40px 50px;
    background: #f8fafc;
}

.rk-zone-content h3 {
    margin: 0 0 20px 0;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-zone-dark);
}

.rk-zone-formula-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.rk-zone-formula-box {
    background: #ffffff;
    border: 1px solid var(--rk-zone-border);
    border-radius: 16px;
    padding: 25px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-zone-formula-box h4 {
    margin: 0 0 10px 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-zone-brand);
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-zone-formula-box p {
    margin: 0 0 15px 0;
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-zone-text);
}

.rk-math-block {
    background: #f1f5f9;
    padding: 12px 15px;
    border-radius: 8px;
    font-family: 'Courier New', Courier, monospace;
    font-weight: 700;
    font-size: 13px;
    color: var(--rk-zone-dark);
    border-left: 3px solid var(--rk-zone-accent);
}

.rk-math-block b {
    color: #ef4444;
}

.rk-zone-alert {
    margin-top: 25px;
    padding: 20px;
    background: #fffbeb;
    border: 1px solid #fde68a;
    border-radius: 12px;
    color: #92400e;
    font-size: 14px;
    line-height: 1.6;
    display: flex;
    gap: 15px;
}

.rk-zone-link {
    color: var(--rk-zone-brand);
    font-weight: 800;
    text-decoration: none;
    border-bottom: 2px dashed rgba(2, 132, 199, 0.4);
    transition: 0.3s;
}

.rk-zone-link:hover {
    color: #0369a1;
    border-bottom-style: solid;
}

/* Animacje SVG */
.anim-thermo-fluid { transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1), fill 0.5s; transform-origin: bottom; }
.anim-frost { transition: opacity 0.5s; }
.anim-heat-wave { stroke-dasharray: 6 6; animation: flowHeat 1.5s linear infinite; }
@keyframes flowHeat { to { stroke-dashoffset: -12; } }

@media (max-width: 768px) {
    .rk-zone-header { padding: 35px 25px; }
    .rk-zone-interactive { padding: 30px 25px; }
    .rk-zone-grid { grid-template-columns: 1fr; }
    .rk-zone-content { padding: 0 25px 30px 25px; }
    .rk-zone-formula-grid { grid-template-columns: 1fr; }
    .rk-zone-visual { min-height: 250px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-strefy-klimatyczne",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Jak strefa klimatyczna w Polsce wpływa na wynik kalkulatora strat ciepła?",
    "description": "Zobacz, jak błędne przyjęcie projektowej temperatury zewnętrznej według normy PN-EN 12831 powoduje niedoszacowanie instalacji nawet o 22%.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-strefy",
    "name": "Wpływ Stref Klimatycznych na Projektowe Obciążenie Cieplne",
    "description": "Dane z normy PN-EN 12831 obrazujące wahania zapotrzebowania cieplnego w zależności od przypisanej strefy klimatycznej w Polsce (od I do V).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "strefy klimatyczne w Polsce",
      "norma PN-EN 12831",
      "projektowa temperatura zewnętrzna",
      "dobór mocy pompy ciepła",
      "kalkulator strat ciepła strefy"
    ],
    "measurementTechnique": "Analiza różnic w obciążeniu cieplnym ściany o stałym współczynniku przenikania (U=0,20) w funkcji strefy klimatycznej (ΔT od 36 K do 44 K).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Strefa I (Świnoujście): -16°C. Różnica temperatur (ΔT) wynosi 36 K.",
        "Strefa III (Polska Centralna): -20°C. Różnica temperatur (ΔT) wynosi 40 K.",
        "Strefa V (Suwałki, Zakopane): -24°C. Różnica temperatur (ΔT) wynosi 44 K.",
        "Błąd między Strefą I a V skutkuje odchyleniem wyniku aż o 22% dla pojedynczej przegrody."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-strefy",
    "name": "Symulator Stref Klimatycznych OZC",
    "description": "Interaktywne narzędzie wizualizujące różnice w stratach ciepła, przyroście różnicy temperatur (ΔT) i doborze źródła energii w zależności od strefy w Polsce.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-zone-container" id="rk-zone-app">
    
    <div class="rk-zone-header">
        <div class="rk-zone-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M2 12h20"></path><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"></path></svg>
            Geografia Ogrzewania
        </div>
        <h2>Jak strefa klimatyczna w Polsce wpływa na wynik <span>kalkulatora strat ciepła?</span></h2>
        <div class="rk-zone-direct">
            <strong>Bezpośrednia odpowiedź:</strong> Polska podzielona jest na 5 stref klimatycznych według normy <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" style="color:#7dd3fc; font-weight:700;">PN-EN 12831</a>, dla których projektowa temperatura zewnętrzna wynosi od <strong>-16°C</strong> (Strefa I &#8211; Świnoujście) do <strong>-24°C</strong> (Strefa V &#8211; Suwałki, Zakopane). Wybór błędnej strefy w kalkulatorze powoduje błąd obliczeniowy mocy źródła ciepła sięgający nawet 22%.
        </div>
    </div>

    <div class="rk-zone-interactive">
        <div class="rk-zone-grid">
            
            <div class="rk-zone-controls">
                <div class="rk-zone-ctrl-header">
                    <div>
                        <p class="rk-zone-ctrl-title">Wybierz Strefę</p>
                        <p style="margin:5px 0 0 0; font-size:12px; color:var(--rk-zone-muted);">Pokój 20 m², U=0.20, Wewnątrz: +20°C</p>
                    </div>
                    <div class="rk-zone-val-display" id="rk-z-display">I</div>
                </div>

                <div class="rk-zone-slider-wrap">
                    <input type="range" class="rk-zone-range" id="rk-zone-slider" min="1" max="5" step="1" value="1" oninput="rkUpdateZone()">
                    <div class="rk-zone-markers">
                        <span>I (Zima łagodna)</span>
                        <span>III (Standard)</span>
                        <span>V (Biegun zimna)</span>
                    </div>
                </div>

                <div class="rk-zone-data-box">
                    <div class="rk-zone-card">
                        <span class="rk-zone-card-label">Projektowa Temp. Zewnętrzna</span>
                        <span class="rk-zone-card-val" id="rk-z-temp">-16 °C</span>
                    </div>
                    <div class="rk-zone-card">
                        <span class="rk-zone-card-label">Różnica Temperatur (ΔT)</span>
                        <span class="rk-zone-card-val" id="rk-z-delta">36 K</span>
                    </div>
                    <div class="rk-zone-card" style="border-left-color: var(--rk-zone-accent); background: #fffbeb;">
                        <span class="rk-zone-card-label" style="color: #92400e;">Zapotrzebowanie Pokoju (Q)</span>
                        <span class="rk-zone-card-val" style="color: #ea580c;" id="rk-z-power">144 <span>W</span></span>
                    </div>
                </div>
            </div>

            <div class="rk-zone-visual">
                <svg class="rk-zone-svg" viewBox="0 0 200 100">
                    <path d="M 20 80 L 20 40 L 50 20 L 80 40 L 80 80 Z" fill="#1e293b" stroke="#cbd5e1" stroke-width="2" stroke-linejoin="round"/>
                    <rect x="40" y="50" width="20" height="15" fill="#f59e0b" opacity="0.8"/>
                    
                    <path class="anim-heat-wave" d="M 85 50 L 115 50" fill="none" stroke="#f59e0b" stroke-width="3" stroke-linecap="round"/>
                    
                    <path id="svg-frost" class="anim-frost" d="M 20 40 L 50 20 L 80 40 L 80 45 L 50 25 L 20 45 Z" fill="#38bdf8" opacity="0"/>

                    <rect x="130" y="20" width="16" height="50" rx="8" fill="rgba(255,255,255,0.1)" stroke="#cbd5e1" stroke-width="2"/>
                    <circle cx="138" cy="70" r="12" fill="rgba(255,255,255,0.1)" stroke="#cbd5e1" stroke-width="2"/>
                    
                    <rect id="svg-thermo-bar" class="anim-thermo-fluid" x="134" y="30" width="8" height="40" rx="4" fill="#38bdf8"/>
                    <circle id="svg-thermo-bulb" class="anim-thermo-fluid" cx="138" cy="70" r="8" fill="#38bdf8"/>
                    
                    <line x1="155" y1="25" x2="160" y2="25" stroke="#cbd5e1" stroke-width="2"/>
                    <text x="165" y="28" fill="#cbd5e1" font-size="10" font-weight="bold">-16</text>
                    <line x1="155" y1="45" x2="160" y2="45" stroke="#cbd5e1" stroke-width="2"/>
                    <text x="165" y="48" fill="#cbd5e1" font-size="10" font-weight="bold">-20</text>
                    <line x1="155" y1="65" x2="160" y2="65" stroke="#cbd5e1" stroke-width="2"/>
                    <text x="165" y="68" fill="#cbd5e1" font-size="10" font-weight="bold">-24</text>
                </svg>
            </div>

        </div>
    </div>

    <div class="rk-zone-content">
        <h3>Przykład obliczeniowy wpływu strefy klimatycznej</h3>
        <p>Przeanalizujmy identyczny pokój o powierzchni <b>A = 20 m²</b>, który posiada ścianę zewnętrzną o współczynniku przenikania ciepła <b>U = 0,20 W/(m²·K)</b>. Zakładana temperatura wewnętrzna (komfortowa) to <b>T_wewn = +20°C</b>.</p>

        <div class="rk-zone-formula-grid">
            <div class="rk-zone-formula-box">
                <h4>
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    Scenariusz A (Strefa I &#8211; Łagodna)
                </h4>
                <p>Budynek zlokalizowany np. w Szczecinie. Projektowa temperatura zewnętrzna wynosi T_zewn = -16°C. Różnica temperatur (ΔT) to 36 K.</p>
                <div class="rk-math-block">
                    Q = A × U × ΔT<br>
                    Q = 20 × 0,20 × 36 = <b>144 W</b>
                </div>
            </div>

            <div class="rk-zone-formula-box">
                <h4>
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    Scenariusz B (Strefa V &#8211; Zimna)
                </h4>
                <p>Ten sam budynek zlokalizowany w Zakopanem lub Suwałkach. Temperatura spada do T_zewn = -24°C. Różnica temperatur (ΔT) rośnie do 44 K.</p>
                <div class="rk-math-block">
                    Q = A × U × ΔT<br>
                    Q = 20 × 0,20 × 44 = <b>176 W</b>
                </div>
            </div>
        </div>

        <div class="rk-zone-alert">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" style="flex-shrink:0"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
            <div>
                <strong>Konsekwencje dla inwestora:</strong> Różnica czysto fizyczna w obciążeniu dla zaledwie jednej ściany wynosi 22% (176 W vs 144 W). Przemnożenie tego błędu przez gabaryty całego budynku decyduje o wyborze klasy mocowej <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-zone-link">pompy ciepła</a>. Jeśli zainstalujesz 6 kW zamiast wymaganych 8 kW, instalacja po prostu nie dogrzeje domu. Z kolei przewymiarowanie zniszczy sprężarkę przez taktowanie.
            </div>
        </div>
    </div>

</div>

<script>
const zData = [
    { zone: "I", temp: -16, delta: 36, power: 144, color: "#38bdf8", yH: 1, frost: 0 },
    { zone: "II", temp: -18, delta: 38, power: 152, color: "#0284c7", yH: 0.75, frost: 0.2 },
    { zone: "III", temp: -20, delta: 40, power: 160, color: "#2563eb", yH: 0.5, frost: 0.5 },
    { zone: "IV", temp: -22, delta: 42, power: 168, color: "#4f46e5", yH: 0.25, frost: 0.8 },
    { zone: "V", temp: -24, delta: 44, power: 176, color: "#312e81", yH: 0, frost: 1 }
];

function rkUpdateZone() {
    const val = parseInt(document.getElementById('rk-zone-slider').value) - 1;
    const data = zData[val];

    // Teksty
    document.getElementById('rk-z-display').innerText = data.zone;
    document.getElementById('rk-z-temp').innerText = data.temp + " °C";
    document.getElementById('rk-z-delta').innerText = data.delta + " K";
    document.getElementById('rk-z-power').innerHTML = data.power + " <span>W</span>";

    // SVG Termometr
    const tBar = document.getElementById('svg-thermo-bar');
    const tBulb = document.getElementById('svg-thermo-bulb');
    const frost = document.getElementById('svg-frost');

    // Skala SVG od 25 (-16) do 65 (-24). 
    // Wysokość słupka (maks = 40, min = 0).
    const scaleY = data.yH; 
    
    tBar.style.transform = `scaleY(${scaleY})`;
    tBar.style.fill = data.color;
    tBulb.style.fill = data.color;
    frost.style.opacity = data.frost;
}

// Init
document.addEventListener('DOMContentLoaded', rkUpdateZone);
</script>



<style>
:root {
    --rk-iso-dark: #0f172a;
    --rk-iso-panel: #1e293b;
    --rk-iso-brand: #8b5cf6; /* Indigo - nauka, inżynieria */
    --rk-iso-brand-light: #e0e7ff;
    --rk-iso-accent: #f97316; /* Pomarańcz - ciepło */
    --rk-iso-success: #10b981;
    --rk-iso-danger: #ef4444;
    --rk-iso-bg: #ffffff;
    --rk-iso-border: #e2e8f0;
    --rk-iso-text: #334155;
    --rk-iso-muted: #64748b;
}

.rk-iso-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-iso-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(139, 92, 246, 0.15);
    border: 1px solid rgba(139, 92, 246, 0.3);
    overflow: hidden;
    color: var(--rk-iso-dark);
}

/* Nagłówek */
.rk-iso-header {
    background: linear-gradient(135deg, var(--rk-iso-dark) 0%, #312e81 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-iso-brand);
}

.rk-iso-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(139, 92, 246, 0.2);
    color: #a5b4fc;
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(165, 180, 252, 0.2);
}

.rk-iso-header h2 {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 15px 0;
}

.rk-iso-header h2 span { color: #a5b4fc; }

.rk-iso-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0;
    line-height: 1.6;
    max-width: 800px;
}

/* Sekcja Główna */
.rk-iso-body {
    padding: 40px 50px;
    background: #f8fafc;
}

/* Kalkulator Interaktywny */
.rk-iso-calculator {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    background: #ffffff;
    border: 1px solid var(--rk-iso-border);
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
    margin-bottom: 30px;
}

/* Kontrolki (Lewa) */
.rk-iso-controls {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-iso-ctrl-title {
    font-size: 18px;
    font-weight: 900;
    margin: 0;
    color: var(--rk-iso-dark);
}

.rk-iso-presets {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.rk-iso-preset-btn {
    background: #f1f5f9;
    border: 2px solid var(--rk-iso-border);
    border-radius: 12px;
    padding: 12px;
    text-align: center;
    cursor: pointer;
    font-weight: 800;
    font-size: 13px;
    color: var(--rk-iso-muted);
    transition: all 0.3s;
}

.rk-iso-preset-btn:hover {
    border-color: var(--rk-iso-brand);
    color: var(--rk-iso-brand);
}

.rk-iso-preset-btn.active {
    background: var(--rk-iso-brand-light);
    border-color: var(--rk-iso-brand);
    color: var(--rk-iso-brand);
}

.rk-iso-slider-wrap {
    background: #f8fafc;
    padding: 15px 20px;
    border-radius: 12px;
    border: 1px solid #f1f5f9;
}

.rk-iso-slider-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
}

.rk-iso-slider-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-iso-dark);
}

.rk-iso-slider-val {
    background: var(--rk-iso-brand);
    color: #ffffff;
    padding: 4px 10px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 800;
}

.rk-iso-range {
    -webkit-appearance: none;
    width: 100%;
    height: 6px;
    background: #cbd5e1;
    border-radius: 3px;
    outline: none;
}

.rk-iso-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--rk-iso-brand);
    cursor: pointer;
    box-shadow: 0 2px 5px rgba(0,0,0,0.15);
}

/* Wyniki (Prawa) */
.rk-iso-results {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-iso-visual {
    background: var(--rk-iso-dark);
    border-radius: 16px;
    height: 180px;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 3px solid #334155;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
}

.rk-iso-svg {
    width: 100%;
    height: 100%;
}

.rk-iso-data-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-iso-data-box {
    background: #ffffff;
    border: 1px solid var(--rk-iso-border);
    border-radius: 12px;
    padding: 15px;
    text-align: center;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-iso-data-box.highlight {
    background: var(--rk-iso-dark);
    border-color: var(--rk-iso-dark);
}

.rk-iso-data-label {
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-iso-muted);
    margin-bottom: 5px;
}

.rk-iso-data-box.highlight .rk-iso-data-label { color: #94a3b8; }

.rk-iso-data-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-iso-dark);
}

.rk-iso-data-box.highlight .rk-iso-data-val { color: #ffffff; }

/* Bloki Tekstowe z Wiedzą */
.rk-iso-content-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 25px;
}

.rk-iso-card {
    background: #ffffff;
    border: 1px solid var(--rk-iso-border);
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-iso-card h3 {
    margin: 0 0 15px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-iso-dark);
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-iso-card p {
    margin: 0 0 15px 0;
    font-size: 14px;
    line-height: 1.7;
    color: var(--rk-iso-text);
}

.rk-iso-card strong { color: var(--rk-iso-dark); font-weight: 800; }

.rk-iso-formula {
    background: #f1f5f9;
    padding: 15px;
    border-radius: 8px;
    border-left: 4px solid var(--rk-iso-brand);
    font-family: 'Courier New', Courier, monospace;
    font-weight: 700;
    font-size: 14px;
    color: var(--rk-iso-dark);
    margin-bottom: 15px;
    overflow-x: auto;
}

.rk-iso-link {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    color: var(--rk-iso-brand);
    font-weight: 800;
    font-size: 14px;
    text-decoration: none;
    margin-top: 10px;
    transition: color 0.3s;
}

.rk-iso-link:hover { color: #4f46e5; }
.rk-iso-link svg { transition: transform 0.3s; }
.rk-iso-link:hover svg { transform: translateX(4px); }

/* Animacje SVG */
.anim-iso-layer { transition: height 0.4s ease, y 0.4s ease; }
.anim-heat-arrow { transition: opacity 0.4s, stroke 0.4s; }

@media (max-width: 768px) {
    .rk-iso-header, .rk-iso-body { padding: 30px 20px; }
    .rk-iso-calculator, .rk-iso-content-grid { grid-template-columns: 1fr; }
    .rk-iso-visual { height: 160px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-wspolczynnik-u",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Jak wyliczyć współczynnik przenikania ciepła U z grubości izolacji i lambdy materiału?",
    "description": "Praktyczny poradnik inżynierski: obliczanie oporu cieplnego (R) i współczynnika przenikania (U). Zobacz, dlaczego 15 cm grafitu to to samo co 20 cm białego styropianu.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-wspolczynnik-u",
    "name": "Parametry Fizyki Budowli: Współczynnik U i Opór R",
    "description": "Zestawienie analityczne parametrów izolacyjnych dla najpopularniejszych grubości i typów styropianu podłogowego, stanowiące bazę do obliczeń OZC.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "współczynnik przenikania ciepła U",
      "jak obliczyć opór cieplny R",
      "styropian grafitowy czy biały",
      "ile styropianu pod ogrzewanie podłogowe",
      "kalkulator strat ciepła wzory",
      "izolacja podłogi na gruncie"
    ],
    "measurementTechnique": "Algorytm fizyki budowli określający zależność: Opór (R) = grubość w metrach (d) / lambda (λ). Współczynnik przenikania U = 1 / R.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Styropian biały EPS: zazwyczaj λ = 0,042 W/mK.",
        "Styropian grafitowy: zazwyczaj λ = 0,031 W/mK.",
        "Dla 20 cm EPS (λ=0,036): Opór R = 5,55 m2K/W, Przenikanie U = 0,18 W/m2K."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-kalkulator-u",
    "name": "Kalkulator Przenikania Ciepła U i Oporu R",
    "description": "Interaktywny kalkulator inżynierski pozwalający natychmiast przeliczyć grubość i lambdę izolacji na współczynnik U wymagany do bilansu cieplnego OZC.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-iso-container" id="rk-iso-app">
    
    <div class="rk-iso-header">
        <div class="rk-iso-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Fizyka budowli w praktyce
        </div>
        <h2>Jak wyliczyć współczynnik przenikania ciepła U <span>z grubości izolacji i lambdy materiału?</span></h2>
        <p>Inwestorzy często mylą pojęcia i kupują tani styropian o ogromnej grubości, sądząc, że chroni on budynek lepiej niż cieńszy materiał premium. Matematyki jednak nie oszukasz. Przelicz to samemu.</p>
    </div>

    <div class="rk-iso-body">
        
        <div class="rk-iso-calculator">
            
            <div class="rk-iso-controls">
                <h3 class="rk-iso-ctrl-title">Kalkulator Izolacji</h3>
                
                <div class="rk-iso-presets">
                    <div class="rk-iso-preset-btn active" id="btn-eps-graphite" onclick="rkSetIso('graphite')">Styropian Grafitowy<br><span style="font-size:11px; font-weight:600;">(Premium)</span></div>
                    <div class="rk-iso-preset-btn" id="btn-eps-white" onclick="rkSetIso('white')">Styropian Biały<br><span style="font-size:11px; font-weight:600;">(Standard)</span></div>
                </div>

                <div class="rk-iso-slider-wrap">
                    <div class="rk-iso-slider-head">
                        <span class="rk-iso-slider-label">Przewodność (Lambda λ)</span>
                        <span class="rk-iso-slider-val"><span id="rk-val-lam">0.031</span> W/mK</span>
                    </div>
                    <input type="range" class="rk-iso-range" id="rk-range-lam" min="0.030" max="0.045" step="0.001" value="0.031" oninput="rkUpdateIso()">
                </div>

                <div class="rk-iso-slider-wrap">
                    <div class="rk-iso-slider-head">
                        <span class="rk-iso-slider-label">Grubość materiału (d)</span>
                        <span class="rk-iso-slider-val"><span id="rk-val-thick">15</span> cm</span>
                    </div>
                    <input type="range" class="rk-iso-range" id="rk-range-thick" min="5" max="30" step="1" value="15" oninput="rkUpdateIso()">
                </div>
            </div>

            <div class="rk-iso-results">
                
                <div class="rk-iso-visual">
                    <svg class="rk-iso-svg" viewBox="0 0 200 100">
                        <rect x="20" y="80" width="160" height="20" fill="#334155" />
                        
                        <rect id="svg-iso-layer" class="anim-iso-layer" x="20" y="50" width="160" height="30" fill="#64748b" opacity="0.9" />
                        <text id="svg-text-thick" x="100" y="70" fill="#ffffff" font-size="12" font-weight="bold" text-anchor="middle">15 cm</text>

                        <rect id="svg-screed" class="anim-iso-layer" x="20" y="35" width="160" height="15" fill="#94a3b8" />
                        <circle id="svg-pipe" class="anim-iso-layer" cx="100" cy="42" r="5" fill="#ef4444" />

                        <g id="svg-heat-loss" class="anim-heat-arrow">
                            <path d="M 60 85 L 60 95" stroke="#ef4444" stroke-width="3" stroke-linecap="round" />
                            <polygon points="56,92 60,98 64,92" fill="#ef4444" />
                            <path d="M 140 85 L 140 95" stroke="#ef4444" stroke-width="3" stroke-linecap="round" />
                            <polygon points="136,92 140,98 144,92" fill="#ef4444" />
                        </g>
                    </svg>
                </div>

                <div class="rk-iso-data-grid">
                    <div class="rk-iso-data-box">
                        <span class="rk-iso-data-label">Opór cieplny (R)</span>
                        <span class="rk-iso-data-val"><span id="rk-res-r">4.84</span> <span style="font-size:12px; color:var(--rk-iso-muted)">m²K/W</span></span>
                    </div>
                    <div class="rk-iso-data-box highlight">
                        <span class="rk-iso-data-label">Współczynnik przenikania (U)</span>
                        <span class="rk-iso-data-val"><span id="rk-res-u">0.21</span> <span style="font-size:12px; color:#94a3b8">W/m²K</span></span>
                    </div>
                </div>

            </div>
        </div>

        <div class="rk-iso-content-grid">
            
            <div class="rk-iso-card">
                <h3>
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"></path><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"></path></svg>
                    Wzór inżynierski (Bezpośrednia odpowiedź)
                </h3>
                <p>Współczynnik przenikania ciepła pojedynczej warstwy materiału izolacyjnego oblicza się z bezwzględnego wzoru <strong>U = λ / d</strong>, gdzie <strong>λ</strong> to współczynnik przewodzenia ciepła, a <strong>d</strong> to grubość materiału wyrażona ściśle w metrach.</p>
                <div class="rk-iso-formula">
                    R = d / λ<br>
                    U = 1 / R = λ / d
                </div>
                <p>Pamiętaj, że całkowity opór cieplny przegrody wielowarstwowej definiuje zależność uwzględniająca opory przejmowania ciepła na powierzchniach (R<sub>si</sub>, R<sub>se</sub>).</p>
            </div>

            <div class="rk-iso-card">
                <h3>
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                    Przykład: 20 cm EPS 100 na gruncie
                </h3>
                <p>Wyliczmy rzeczywisty współczynnik U dla <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/" class="rk-iso-link" style="display:inline; padding:0; margin:0; border:none; text-decoration:underline; font-weight:normal;">izolacji podłogówki</a> wykonanej z klasycznych płyt styropianowych EPS o grubości 20 cm (d = 0,20 m) i deklarowanej przez producenta przewodności λ = 0,036 W/mK.</p>
                <div class="rk-iso-formula">
                    R = 0,20 / 0,036 = <strong>5,55 m²K/W</strong><br>
                    U = 1 / 5,55 = <strong>0,18 W/m²·K</strong>
                </div>
                <p>Wartość 0,18 to precyzyjny parametr techniczny. To właśnie tę cyfrę musisz wprowadzić do kalkulatora strat ciepła w sekcji przegród poziomych.</p>
                <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/" class="rk-iso-link">
                    Czym dokładnie jest Opór Cieplny R? ➔
                </a>
            </div>

        </div>

    </div>
</div>

<script>
function rkSetIso(type) {
    const btnG = document.getElementById('btn-eps-graphite');
    const btnW = document.getElementById('btn-eps-white');
    const sliderLam = document.getElementById('rk-range-lam');

    if (type === 'graphite') {
        btnG.classList.add('active');
        btnW.classList.remove('active');
        sliderLam.value = 0.031;
    } else {
        btnW.classList.add('active');
        btnG.classList.remove('active');
        sliderLam.value = 0.042;
    }
    rkUpdateIso();
}

function rkUpdateIso() {
    const lam = parseFloat(document.getElementById('rk-range-lam').value);
    const thickCm = parseInt(document.getElementById('rk-range-thick').value);
    
    // Update labels
    document.getElementById('rk-val-lam').innerText = lam.toFixed(3);
    document.getElementById('rk-val-thick').innerText = thickCm;

    // Calc
    const thickM = thickCm / 100;
    const r = thickM / lam;
    const u = 1 / r;

    document.getElementById('rk-res-r').innerText = r.toFixed(2);
    document.getElementById('rk-res-u').innerText = u.toFixed(2);

    // SVG Animation logic
    // thickCm: 5 to 30. We map this to SVG height.
    // Base y=80. Max thick = 30cm -> height=60, y=20.
    const svgHeight = thickCm * 2; // 1cm = 2px
    const svgY = 80 - svgHeight;

    const isoLayer = document.getElementById('svg-iso-layer');
    const textThick = document.getElementById('svg-text-thick');
    const screedLayer = document.getElementById('svg-screed');
    const pipeLayer = document.getElementById('svg-pipe');

    isoLayer.setAttribute('height', svgHeight);
    isoLayer.setAttribute('y', svgY);
    
    // Ustawienie koloru (grafit vs biały)
    if(lam < 0.036) {
        isoLayer.setAttribute('fill', '#475569'); // Ciemniejszy grafit
    } else {
        isoLayer.setAttribute('fill', '#cbd5e1'); // Jasny biały
    }

    textThick.setAttribute('y', svgY + (svgHeight / 2) + 4);
    textThick.textContent = thickCm + " cm";

    screedLayer.setAttribute('y', svgY - 15);
    pipeLayer.setAttribute('cy', svgY - 7);

    // Heat Loss arrows (Redness &#038; Opacity based on U)
    // Good U < 0.20 (Low opacity, smaller). Bad U > 0.40 (High opacity, red)
    const heatGrp = document.getElementById('svg-heat-loss');
    let heatOpacity = u / 0.8; // Normalized roughly
    if(heatOpacity > 1) heatOpacity = 1;
    if(heatOpacity < 0.1) heatOpacity = 0.1;
    
    heatGrp.style.opacity = heatOpacity;
}

// Init
document.addEventListener('DOMContentLoaded', rkUpdateIso);
</script>



<style>
:root {
    --rk-vent-dark: #0f172a;
    --rk-vent-panel: #1e293b;
    --rk-vent-brand: #0284c7; /* Chłodny błękit - świeże powietrze */
    --rk-vent-brand-light: #e0f2fe;
    --rk-vent-accent: #f97316; /* Ciepło domowe */
    --rk-vent-success: #0d9488; /* Oszczędność (Teal) */
    --rk-vent-danger: #ef4444; /* Strata (Czerwień) */
    --rk-vent-bg: #ffffff;
    --rk-vent-border: #e2e8f0;
    --rk-vent-text: #334155;
    --rk-vent-muted: #64748b;
}

.rk-vent-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-vent-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid rgba(2, 132, 199, 0.2);
    overflow: hidden;
}

/* Sekcja Nagłówkowa */
.rk-vent-header {
    background: linear-gradient(135deg, var(--rk-vent-dark) 0%, #0c4a6e 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-vent-brand);
}

.rk-vent-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #7dd3fc;
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(125, 211, 252, 0.2);
}

.rk-vent-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 15px 0;
}

.rk-vent-title span { color: #38bdf8; }

.rk-vent-direct-answer {
    font-size: 16px;
    line-height: 1.7;
    color: #e0f2fe;
    margin: 0;
    padding-left: 20px;
    border-left: 3px solid var(--rk-vent-accent);
}

.rk-vent-direct-answer strong {
    color: #ffffff;
}

/* Moduł Interaktywny */
.rk-vent-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

/* Przełącznik Systemów Wentylacji */
.rk-vent-switcher {
    display: flex;
    justify-content: center;
    margin-bottom: 30px;
}

.rk-vent-toggle-bg {
    background: #e2e8f0;
    padding: 6px;
    border-radius: 99px;
    display: inline-flex;
    position: relative;
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.05);
}

.rk-vent-toggle-btn {
    padding: 12px 24px;
    border-radius: 99px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-vent-muted);
    cursor: pointer;
    transition: all 0.3s;
    z-index: 1;
    border: none;
    background: transparent;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-vent-toggle-btn.active {
    color: #ffffff;
}

.rk-vent-toggle-slider {
    position: absolute;
    top: 6px;
    left: 6px;
    height: calc(100% - 12px);
    width: 50%;
    background: var(--rk-vent-danger);
    border-radius: 99px;
    transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
    box-shadow: 0 4px 10px rgba(0,0,0,0.15);
}

.state-recup .rk-vent-toggle-slider {
    left: calc(50% - 6px);
    background: var(--rk-vent-success);
}

/* Siatka: SVG + Dane */
.rk-vent-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    align-items: stretch;
}

/* SVG Wizualizacja */
.rk-vent-visual {
    background: var(--rk-vent-dark);
    border-radius: 20px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 30px rgba(0,0,0,0.5);
    border: 3px solid #334155;
    position: relative;
    overflow: hidden;
    min-height: 250px;
}

.rk-vent-svg { width: 100%; height: 100%; }

/* Tablica Wyników */
.rk-vent-dashboard {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-vent-stat-card {
    background: #ffffff;
    border: 1px solid var(--rk-vent-border);
    border-radius: 16px;
    padding: 20px 25px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    display: flex;
    flex-direction: column;
    justify-content: center;
    transition: all 0.3s;
}

.rk-vent-stat-label {
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-vent-muted);
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.rk-vent-stat-val {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-vent-dark);
    line-height: 1;
    display: flex;
    align-items: baseline;
    gap: 5px;
}

.rk-vent-stat-val span {
    font-size: 14px;
    color: var(--rk-vent-muted);
}

.val-red { color: var(--rk-vent-danger); }
.val-green { color: var(--rk-vent-success); }

/* Detale Obliczeń (Karty z Wzorami) */
.rk-vent-details {
    padding: 0 50px 40px 50px;
    background: #f8fafc;
}

.rk-vent-details h3 {
    margin: 0 0 20px 0;
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-vent-dark);
}

.rk-vent-calc-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.rk-vent-calc-box {
    background: #ffffff;
    border: 1px solid var(--rk-vent-border);
    padding: 25px;
    border-radius: 16px;
}

.rk-vent-calc-box h4 {
    margin: 0 0 10px 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-vent-brand);
}

.rk-vent-formula {
    background: #f1f5f9;
    padding: 12px 15px;
    border-radius: 8px;
    font-family: 'Courier New', Courier, monospace;
    font-weight: 700;
    font-size: 13px;
    color: var(--rk-vent-dark);
    margin: 10px 0;
    border-left: 3px solid var(--rk-vent-brand);
}

.rk-vent-calc-box p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-vent-text);
}

.rk-vent-link {
    color: var(--rk-vent-brand);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.rk-vent-link:hover { color: #0369a1; }

/* Animacje SVG */
.anim-air-flow { stroke-dasharray: 8 8; animation: flowDash 1.5s linear infinite; }
@keyframes flowDash { to { stroke-dashoffset: -16; } }

/* Stan: Grawitacja */
.state-grav .recup-element { opacity: 0; }
.state-grav .grav-element { opacity: 1; transition: opacity 0.3s; }
.state-grav .air-in { stroke: var(--rk-vent-brand); }
.state-grav .air-out { stroke: var(--rk-vent-danger); stroke-width: 6; }

/* Stan: Rekuperacja */
.state-recup .grav-element { opacity: 0; }
.state-recup .recup-element { opacity: 1; transition: opacity 0.5s; }
.state-recup .air-in { stroke: var(--rk-vent-brand); }
.state-recup .air-in-warmed { stroke: #fbbf24; }
.state-recup .air-out { stroke: var(--rk-vent-danger); stroke-width: 4; }
.state-recup .air-out-cooled { stroke: #94a3b8; }

.anim-wheel { transform-origin: 100px 50px; animation: spinWheel 3s linear infinite; }
@keyframes spinWheel { to { transform: rotate(360deg); } }

@media (max-width: 768px) {
    .rk-vent-header, .rk-vent-interactive, .rk-vent-details { padding: 30px 20px; }
    .rk-vent-grid, .rk-vent-calc-grid { grid-template-columns: 1fr; }
    .rk-vent-visual { height: 200px; min-height: auto; }
    .rk-vent-toggle-btn { padding: 10px 15px; font-size: 12px; }
    .rk-vent-title { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-wentylacja",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Ile kW mocy grzewczej ucieka przez wentylację grawitacyjną i jak rekuperacja zmienia ten wynik?",
    "description": "Porównanie strat ciepła dla wentylacji grawitacyjnej i mechanicznej z rekuperacją. Dowiedz się, jak odzysk ciepła wpływa na projektowanie pętli podłogowych i moc pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-wentylacja",
    "name": "Symulacja strat wentylacyjnych (Qv) z rekuperacją i bez",
    "description": "Zestawienie analityczne porównujące straty ciepła i przepływy powietrza (m3/h) dla budynku 150 m2 przy wentylacji naturalnej oraz mechanicznej z odzyskiem ciepła 85%.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "straty wentylacyjne w kalkulatorze",
      "rekuperacja a pompa ciepła",
      "wentylacja grawitacyjna straty ciepła",
      "rozstaw rur podłogówki a rekuperacja",
      "obliczanie strat ciepła wentylacja",
      "norma PN-EN 13141-7"
    ],
    "measurementTechnique": "Algorytm obliczeniowy Qv = 0,34 × V × ΔT redukowany o współczynnik sprawności odzysku ciepła zdefiniowany normą PN-EN 13141-7.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Kubatura szacunkowa dla domu 150 m2: 375 m3.",
        "Strumień powietrza dla krotności wymian 0,5/h: 187,5 m3/h.",
        "Całkowita strata grawitacyjna (ΔT=40K): 2550 W.",
        "Zredukowana strata przy rekuperacji (85% sprawności): 382,5 W."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-wentylacja",
    "name": "Kalkulator Oszczędności Rekuperacji",
    "description": "Interaktywny symulator przepływu powietrza wizualizujący spadek zapotrzebowania na moc grzewczą w budynku wyposażonym w wymiennik krzyżowy.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-vent-container" id="rk-vent-app">
    
    <div class="rk-vent-header">
        <div class="rk-vent-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Bilans Powietrzny
        </div>
        <h2 class="rk-vent-title">Ile kW mocy grzewczej ucieka przez wentylację grawitacyjną i jak <span>rekuperacja zmienia ten wynik?</span></h2>
        <div class="rk-vent-direct-answer">
            <strong>Bezpośrednia odpowiedź:</strong> W tradycyjnym domu 150 m² z wentylacją grawitacyjną, straty z tytułu wymiany powietrza generują do <strong>40% całkowitego zapotrzebowania na ciepło</strong> (co odpowiada ucieczce ok. 2,5 - 3,5 kW ciągłej mocy). Zastosowanie centrali wentylacyjnej (rekuperacji) o sprawności temperaturowej rzędu 85% redukuje te straty do ułamkowych wartości rzędu <strong>0,4 - 0,6 kW</strong>.
        </div>
    </div>

    <div class="rk-vent-interactive state-grav" id="rk-vent-state-wrapper">
        
        <div class="rk-vent-switcher">
            <div class="rk-vent-toggle-bg">
                <div class="rk-vent-toggle-slider"></div>
                <button class="rk-vent-toggle-btn active" id="btn-grav" onclick="rkSwitchVent('grav')">
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path></svg>
                    Grawitacja
                </button>
                <button class="rk-vent-toggle-btn" id="btn-recup" onclick="rkSwitchVent('recup')">
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="3" y="8" width="18" height="8" rx="2"></rect><path d="M12 4v4"></path><path d="M12 16v4"></path><circle cx="12" cy="12" r="2"></circle></svg>
                    Rekuperacja 85%
                </button>
            </div>
        </div>

        <div class="rk-vent-grid">
            
            <div class="rk-vent-visual">
                <svg class="rk-vent-svg" viewBox="0 0 200 100">
                    <rect x="0" y="0" width="100" height="100" fill="#0f172a" /> <rect x="100" y="0" width="100" height="100" fill="#1e293b" /> <line x1="100" y1="0" x2="100" y2="100" stroke="#334155" stroke-width="2" />

                    <g class="grav-element">
                        <path class="anim-air-flow air-in" d="M 20 70 L 160 70" fill="none" stroke-width="4" stroke-linecap="round" />
                        <polygon points="150,65 165,70 150,75" fill="var(--rk-vent-brand)"/>
                        
                        <path class="anim-air-flow air-out" d="M 160 30 L 20 30" fill="none" stroke-width="6" stroke-linecap="round" />
                        <polygon points="35,23 20,30 35,37" fill="var(--rk-vent-danger)"/>
                    </g>

                    <g class="recup-element">
                        <rect x="80" y="30" width="40" height="40" fill="#0f172a" stroke="#cbd5e1" stroke-width="2" rx="4" />
                        <g class="anim-wheel">
                            <line x1="90" y1="40" x2="110" y2="60" stroke="#cbd5e1" stroke-width="2" />
                            <line x1="90" y1="60" x2="110" y2="40" stroke="#cbd5e1" stroke-width="2" />
                        </g>

                        <path class="anim-air-flow air-in" d="M 20 60 L 80 60" fill="none" stroke-width="3" stroke-linecap="round" />
                        <path class="anim-air-flow air-in-warmed" d="M 120 60 L 180 60" fill="none" stroke-width="3" stroke-linecap="round" />
                        <polygon points="170,56 182,60 170,64" fill="#fbbf24"/>

                        <path class="anim-air-flow air-out" d="M 180 40 L 120 40" fill="none" stroke-width="3" stroke-linecap="round" />
                        <path class="anim-air-flow air-out-cooled" d="M 80 40 L 20 40" fill="none" stroke-width="3" stroke-linecap="round" />
                        <polygon points="30,36 18,40 30,44" fill="#94a3b8"/>
                    </g>
                </svg>
            </div>

            <div class="rk-vent-dashboard">
                <div class="rk-vent-stat-card">
                    <span class="rk-vent-stat-label">
                        <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"></path></svg>
                        Moc bezpowrotnie tracona (Q<sub>v</sub>)
                    </span>
                    <span class="rk-vent-stat-val val-red" id="val-lost">2 550 <span>W</span></span>
                </div>
                
                <div class="rk-vent-stat-card">
                    <span class="rk-vent-stat-label">
                        <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                        Odzyskana energia dla podłogówki
                    </span>
                    <span class="rk-vent-stat-val val-green" id="val-saved">0 <span>W (0.0 kW)</span></span>
                </div>

                <div class="rk-vent-stat-card" style="background: #f1f5f9; border-color: transparent;">
                    <span class="rk-vent-stat-label">Wpływ na projekt instalacji</span>
                    <span class="rk-vent-stat-val" id="val-impact" style="font-size: 16px; color: var(--rk-vent-text);">
                        Wymagany gęsty rozstaw rur (co 10 cm). Ryzyko zakupu przewymiarowanej pompy ciepła.
                    </span>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-vent-details">
        <h3>Przykład obliczeniowy dla domu 150 m² (kubatura 375 m³)</h3>
        
        <div class="rk-vent-calc-grid">
            <div class="rk-vent-calc-box">
                <h4>Wariant 1: Wentylacja grawitacyjna</h4>
                <p>Przyjmujemy wymianę na poziomie 0,5/h, co daje strumień V = 187,5 m³/h. Różnica temperatur na zewnątrz i wewnątrz w mrozy to ΔT = 40 K.</p>
                <div class="rk-vent-formula">
                    Q<sub>v</sub> = 0,34 × 187,5 × 40 = <strong>2550 W</strong>
                </div>
                <p>Oznacza to, że z samego tytułu wietrzenia budynku w starym systemie, dom wymaga od <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-vent-link">pompy ciepła</a> ponad 2,5 kW ciągłej mocy.</p>
            </div>

            <div class="rk-vent-calc-box">
                <h4>Wariant 2: Mechaniczna z rekuperacją</h4>
                <p>Zastosowanie centrali (sprawność η = 85% zgodnie z <strong>PN-EN 13141-7</strong>). Strumień powietrza jest poddawany procesowi krzyżowej wymiany ciepła.</p>
                <div class="rk-vent-formula">
                    Q<sub>v_rek</sub> = 2550 W × (1 - 0,85) = <strong>382,5 W</strong>
                </div>
                <p>Ignorowanie <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/" class="rk-vent-link">wpływu rekuperacji</a> w kalkulatorach prowadzi do potężnego przewymiarowania. Instalator niepotrzebnie zacieśni <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-vent-link">rozstaw rur</a> i drastycznie podniesie koszty hydrauliki.</p>
            </div>
        </div>
    </div>

</div>

<script>
function rkSwitchVent(state) {
    const wrapper = document.getElementById('rk-vent-state-wrapper');
    const btnGrav = document.getElementById('btn-grav');
    const btnRecup = document.getElementById('btn-recup');
    
    const valLost = document.getElementById('val-lost');
    const valSaved = document.getElementById('val-saved');
    const valImpact = document.getElementById('val-impact');

    if(state === 'grav') {
        wrapper.className = 'rk-vent-interactive state-grav';
        btnGrav.classList.add('active');
        btnRecup.classList.remove('active');

        valLost.innerHTML = '2 550 <span>W</span>';
        valLost.className = 'rk-vent-stat-val val-red';
        
        valSaved.innerHTML = '0 <span>W (0.0 kW)</span>';
        valSaved.className = 'rk-vent-stat-val val-green';

        valImpact.innerHTML = 'Wymagany gęsty rozstaw rur (co 10 cm). Ryzyko zakupu przewymiarowanej pompy ciepła.';
    } else {
        wrapper.className = 'rk-vent-interactive state-recup';
        btnRecup.classList.add('active');
        btnGrav.classList.remove('active');

        valLost.innerHTML = '382 <span>W</span>';
        valLost.className = 'rk-vent-stat-val val-green';
        
        valSaved.innerHTML = '2 168 <span>W (~ 2.16 kW)</span>';
        valSaved.className = 'rk-vent-stat-val val-green';

        valImpact.innerHTML = 'Mniejsze straty = rzadszy rozstaw (co 20 cm), niższe koszty materiałowe i tańsza pompa ciepła.';
    }
}
</script>



<style>
:root {
    --rk-fl-dark: #0f172a;
    --rk-fl-panel: #1e293b;
    --rk-fl-brand: #2563eb;
    --rk-fl-brand-light: #eff6ff;
    --rk-fl-accent: #f97316;
    --rk-fl-success: #10b981;
    --rk-fl-danger: #ef4444;
    --rk-fl-border: #e2e8f0;
    --rk-fl-text: #334155;
    --rk-fl-muted: #64748b;
    --rk-fl-bg: #ffffff;
}

.rk-fl-wrapper {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-fl-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(37, 99, 235, 0.15);
    border: 1px solid rgba(37, 99, 235, 0.3);
    overflow: hidden;
    color: var(--rk-fl-dark);
}

/* Nagłówek */
.rk-fl-header {
    background: linear-gradient(135deg, var(--rk-fl-dark) 0%, #1e3a8a 100%);
    padding: 40px 45px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-fl-brand);
}

.rk-fl-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(255,255,255,0.1);
    color: #93c5fd;
    padding: 6px 14px;
    border-radius: 99px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(255,255,255,0.15);
}

.rk-fl-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-fl-header p {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    line-height: 1.7;
}

/* Główny kontener treści */
.rk-fl-body {
    padding: 40px 45px;
    background: #f8fafc;
}

/* Moduł Interaktywny */
.rk-fl-interactive {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    margin-top: 30px;
    background: #ffffff;
    border: 1px solid var(--rk-fl-border);
    border-radius: 20px;
    padding: 25px;
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
}

/* Lewa Kolumna - SVG Wizualizacja */
.rk-fl-visual-box {
    background: var(--rk-fl-dark);
    border-radius: 16px;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 280px;
    border: 3px solid #334155;
    box-shadow: inset 0 0 40px rgba(0,0,0,0.5);
}

.rk-fl-svg-layer {
    width: 100%;
    height: 100%;
}

/* Prawa Kolumna - Kontrolki i Dane */
.rk-fl-controls {
    display: flex;
    flex-direction: column;
}

.rk-fl-controls h3 {
    margin: 0 0 20px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-fl-dark);
    line-height: 1.3;
}

/* Switcher Okładzin */
.rk-fl-switch-group {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
    margin-bottom: 25px;
}

.rk-fl-switch-btn {
    background: #f1f5f9;
    border: 2px solid var(--rk-fl-border);
    border-radius: 12px;
    padding: 15px;
    text-align: center;
    cursor: pointer;
    font-weight: 800;
    font-size: 14px;
    color: var(--rk-fl-muted);
    transition: all 0.3s;
}

.rk-fl-switch-btn.active {
    background: var(--rk-fl-brand-light);
    border-color: var(--rk-fl-brand);
    color: var(--rk-fl-brand);
    box-shadow: 0 5px 15px -5px rgba(37, 99, 235, 0.2);
}

/* Kafelki z danymi (Live Data) */
.rk-fl-data-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-fl-data-card {
    background: #ffffff;
    border: 1px solid var(--rk-fl-border);
    border-radius: 12px;
    padding: 15px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-fl-data-card.highlight {
    background: var(--rk-fl-dark);
    border-color: var(--rk-fl-dark);
}

.rk-fl-data-label {
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-fl-muted);
    margin-bottom: 5px;
}

.rk-fl-data-card.highlight .rk-fl-data-label { color: #94a3b8; }

.rk-fl-data-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-fl-dark);
    transition: color 0.3s;
}

.rk-fl-data-card.highlight .rk-fl-data-val { color: #ffffff; }

.val-danger { color: var(--rk-fl-danger) !important; }
.val-success { color: var(--rk-fl-success) !important; }

/* Animacje SVG */
.rk-anim-heat { transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1); transform-origin: bottom; }
.rk-anim-layer { transition: all 0.5s ease-in-out; }

/* Stan 1: Płytki (Dobre przewodzenie) */
.state-tiles .rk-layer-panel { opacity: 0; transform: translateY(-10px); }
.state-tiles .rk-layer-tile { opacity: 1; transform: translateY(0); }
.state-tiles .rk-anim-heat { stroke: var(--rk-fl-success); transform: scaleY(1); animation: heatFlowFast 1.5s linear infinite; stroke-dasharray: 10 10; }

/* Stan 2: Panele (Izolator) */
.state-panels .rk-layer-panel { opacity: 1; transform: translateY(0); }
.state-panels .rk-layer-tile { opacity: 0; transform: translateY(10px); }
.state-panels .rk-anim-heat { stroke: var(--rk-fl-danger); transform: scaleY(0.4); animation: heatFlowSlow 3s linear infinite; stroke-dasharray: 20 5; }

@keyframes heatFlowFast { to { stroke-dashoffset: -20; } }
@keyframes heatFlowSlow { to { stroke-dashoffset: -25; } }

/* CTA dolne */
.rk-fl-cta {
    margin-top: 30px;
    padding: 20px;
    background: var(--rk-fl-brand-light);
    border-left: 4px solid var(--rk-fl-brand);
    border-radius: 0 12px 12px 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
}

.rk-fl-cta p {
    margin: 0;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-fl-dark);
}

.rk-fl-cta a {
    white-space: nowrap;
    background: var(--rk-fl-brand);
    color: #ffffff;
    padding: 12px 20px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    text-decoration: none;
    transition: background 0.3s;
}

.rk-fl-cta a:hover { background: var(--rk-fl-brand-hover); }

@media (max-width: 768px) {
    .rk-fl-header { padding: 30px 25px; }
    .rk-fl-body { padding: 30px 25px; }
    .rk-fl-interactive { grid-template-columns: 1fr; padding: 20px; }
    .rk-fl-visual-box { height: 220px; min-height: auto; }
    .rk-fl-cta { flex-direction: column; text-align: center; }
    .rk-fl-cta a { width: 100%; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-okladziny",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Jak rodzaj okładziny podłogowej (płytki vs panele) zmienia parametry instalacji?",
    "description": "Opór cieplny paneli zmusza pompę ciepła do pracy na wyższych temperaturach zasilania. Zobacz inżynieryjne porównanie wydajności gresu i laminatu.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-okladziny",
    "name": "Opór cieplny (R) okładzin podłogowych a COP pompy ciepła",
    "description": "Parametry hydrauliczne instalacji podłogowej zestawione dla stałego zapotrzebowania 50 W/m2 w zależności od zastosowanej posadzki.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "opór cieplny paneli",
      "ogrzewanie podłogowe a panele",
      "wydajność pompy ciepła podłogówka",
      "temperatura zasilania podłogówki płytki vs panele",
      "COP pompy ciepła spadek"
    ],
    "measurementTechnique": "Symulacja spadku współczynnika COP pompy ciepła w zależności od oporu cieplnego materiału wykończeniowego zgodnie z normą PN-EN 1264.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Gres ceramiczny: Opór R = 0,01 m2K/W, Wymagane Tz = 33°C",
        "Panele laminowane: Opór R = 0,12 m2K/W, Wymagane Tz = 38°C",
        "Spadek COP pompy ciepła dla paneli względem płytek wynosi od 10 do 12% w skali roku."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-okladziny",
    "name": "Symulator Wpływu Okładziny na Ogrzewanie Podłogowe",
    "description": "Narzędzie pozwalające prześledzić zachowanie instalacji i spadki wydajności w przypadku zamiany płytek ceramicznych na panele laminowane.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-fl-wrapper" id="rk-fl-app">
    
    <div class="rk-fl-header">
        <div class="rk-fl-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
            Analiza Materiałowa
        </div>
        <h2>Jak rodzaj okładziny podłogowej (płytki vs panele) zmienia parametry pracy instalacji w kalkulatorze?</h2>
        <p>Opór cieplny (R) materiału wykończeniowego ma kolosalny wpływ na to, jaką temperaturę musisz zadać na źródle ciepła, aby skutecznie ogrzać pomieszczenie. Ignorowanie tego faktu to gwarancja niedogrzanego domu.</p>
    </div>

    <div class="rk-fl-body">
        
        <p><strong>Bezpośrednia odpowiedź:</strong> Opór cieplny (R) płytek ceramicznych wynosi zaledwie <strong>0,01 m²K/W</strong>, podczas gdy paneli laminowanych wraz z podkładem dedykowanym osiąga graniczną wartość <strong>0,10 - 0,15 m²K/W</strong> dopuszczoną przez normę PN-EN 1264.</p>
        <p>Oznacza to, że panele stanowią potężny izolator, który wymusza podniesienie temperatury zasilania (Tz) średnio o 3 do 5 stopni Celsjusza w celu uzyskania tej samej mocy grzewczej.</p>
        <p>Zastosowanie grubych paneli lub parkietu drewnianego bez uwzględnienia tego faktu w obliczeniach kalkulatora powoduje drastyczne niedogrzanie pomieszczeń. Jeśli projektant założy wykończenie z płytek i dobierze temperaturę zasilania wody na 35°C, a Ty ostatecznie położysz panele, <strong>temperatura w pokoju spadnie z planowanych 20°C do zaledwie 17-18°C</strong> w mroźne dni.</p>

        <div class="rk-fl-interactive">
            
            <div class="rk-fl-visual-box state-tiles" id="rkFlVisual">
                <svg class="rk-fl-svg-layer" viewBox="0 0 200 100">
                    <rect x="20" y="70" width="160" height="30" fill="#334155" />
                    <circle cx="100" cy="85" r="8" fill="none" stroke="#f97316" stroke-width="3" />
                    
                    <path class="rk-anim-heat" d="M 100 70 L 100 20" fill="none" stroke-width="4" stroke-linecap="round" />
                    <path class="rk-anim-heat" d="M 85 70 L 60 20" fill="none" stroke-width="3" stroke-linecap="round" />
                    <path class="rk-anim-heat" d="M 115 70 L 140 20" fill="none" stroke-width="3" stroke-linecap="round" />

                    <g class="rk-anim-layer rk-layer-tile">
                        <rect x="20" y="60" width="160" height="10" fill="#94a3b8" />
                        <line x1="60" y1="60" x2="60" y2="70" stroke="#0f172a" stroke-width="2" />
                        <line x1="100" y1="60" x2="100" y2="70" stroke="#0f172a" stroke-width="2" />
                        <line x1="140" y1="60" x2="140" y2="70" stroke="#0f172a" stroke-width="2" />
                    </g>

                    <g class="rk-anim-layer rk-layer-panel">
                        <rect x="20" y="55" width="160" height="5" fill="#f59e0b" opacity="0.6" /> <rect x="20" y="45" width="160" height="10" fill="#854d0e" /> <line x1="80" y1="45" x2="80" y2="55" stroke="#0f172a" stroke-width="1" />
                        <line x1="120" y1="45" x2="120" y2="55" stroke="#0f172a" stroke-width="1" />
                    </g>
                </svg>
            </div>

            <div class="rk-fl-controls">
                <h3>Przykład danych hydraulicznych dla zmiany okładziny</h3>
                <p style="font-size: 13px; color: var(--rk-fl-muted); margin-top: -15px; margin-bottom: 20px;">
                    Przy stałym zapotrzebowaniu na moc: <strong>q = 50 W/m²</strong>
                </p>

                <div class="rk-fl-switch-group">
                    <div class="rk-fl-switch-btn active" id="btn-tiles" onclick="rkSwitchFloor('tiles')">
                        Gres ceramiczny
                    </div>
                    <div class="rk-fl-switch-btn" id="btn-panels" onclick="rkSwitchFloor('panels')">
                        Panele laminowane
                    </div>
                </div>

                <div class="rk-fl-data-grid">
                    <div class="rk-fl-data-card">
                        <span class="rk-fl-data-label">Opór cieplny (R)</span>
                        <span class="rk-fl-data-val" id="val-r">0,01 <span style="font-size:14px">m²K/W</span></span>
                    </div>
                    <div class="rk-fl-data-card">
                        <span class="rk-fl-data-label">Temp. podłogi</span>
                        <span class="rk-fl-data-val">24,5 <span style="font-size:14px">°C</span></span>
                    </div>
                    <div class="rk-fl-data-card highlight">
                        <span class="rk-fl-data-label">Wymagana Temp. Zasilania</span>
                        <span class="rk-fl-data-val val-success" id="val-tz">33 °C</span>
                    </div>
                    <div class="rk-fl-data-card highlight">
                        <span class="rk-fl-data-label">Skutek dla COP (Wydajność)</span>
                        <span class="rk-fl-data-val val-success" id="val-cop">MAX (100%)</span>
                    </div>
                </div>

            </div>

        </div>

        <div class="rk-fl-cta">
            <p><strong>Złota zasada instalatora:</strong> Podniesienie temperatury zasilania (Tz) zaledwie z 33°C na 38°C (wymuszone przez panele) obniża współczynnik efektywności COP pompy ciepła o około 10-12%. To bezpośrednio przekłada się na proporcjonalnie wyższe rachunki za prąd przez cały sezon grzewczy.</p>
            <a href="https://projekt-ogrzewania.pl/podlogi-drewniane-vs-panele-laminowane-co-wybrac-przy-ogrzewaniu-podlogowym/">
                Wybierz odpowiednią okładzinę ➔
            </a>
        </div>

    </div>
</div>

<script>
function rkSwitchFloor(type) {
    const visual = document.getElementById('rkFlVisual');
    const btnTiles = document.getElementById('btn-tiles');
    const btnPanels = document.getElementById('btn-panels');
    
    const valR = document.getElementById('val-r');
    const valTz = document.getElementById('val-tz');
    const valCop = document.getElementById('val-cop');

    if(type === 'tiles') {
        visual.className = 'rk-fl-visual-box state-tiles';
        btnTiles.classList.add('active');
        btnPanels.classList.remove('active');

        valR.innerHTML = '0,01 <span style="font-size:14px">m²K/W</span>';
        valTz.innerHTML = '33 °C';
        valTz.className = 'rk-fl-data-val val-success';
        
        valCop.innerHTML = 'MAX (100%)';
        valCop.className = 'rk-fl-data-val val-success';
    } else {
        visual.className = 'rk-fl-visual-box state-panels';
        btnPanels.classList.add('active');
        btnTiles.classList.remove('active');

        valR.innerHTML = '0,12 <span style="font-size:14px">m²K/W</span>';
        valTz.innerHTML = '38 °C';
        valTz.className = 'rk-fl-data-val val-danger';
        
        valCop.innerHTML = 'Spadek o -12%';
        valCop.className = 'rk-fl-data-val val-danger';
    }
}
</script>



<style>
:root {
    --rk-calc-bg: #f8fafc;
    --rk-calc-card: #ffffff;
    --rk-calc-dark: #0f172a;
    --rk-calc-brand: #2563eb; 
    --rk-calc-brand-hover: #1d4ed8;
    --rk-calc-brand-light: #eff6ff;
    --rk-calc-accent: #f97316; 
    --rk-calc-success: #10b981;
    --rk-calc-warning: #f59e0b;
    --rk-calc-danger: #ef4444;
    --rk-calc-border: #e2e8f0;
    --rk-calc-text: #334155;
    --rk-calc-muted: #64748b;
}

.rk-calc-wrapper {
    max-width: 1000px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-calc-card);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(37, 99, 235, 0.15);
    border: 1px solid rgba(37, 99, 235, 0.2);
    overflow: hidden;
    color: var(--rk-calc-dark);
}

/* Nagłówek Kalkulatora */
.rk-calc-head {
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, #1e3a8a 100%);
    padding: 40px 45px;
    color: #ffffff;
    position: relative;
    overflow: hidden;
}

.rk-calc-head::after {
    content: '';
    position: absolute;
    right: -50px;
    top: -50px;
    width: 250px;
    height: 250px;
    background: radial-gradient(circle, rgba(37,99,235,0.4) 0%, transparent 70%);
    border-radius: 50%;
    pointer-events: none;
}

.rk-calc-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.1);
    color: #93c5fd;
    padding: 8px 16px;
    border-radius: 99px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(255, 255, 255, 0.15);
    backdrop-filter: blur(4px);
}

.rk-calc-head h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 10px 0;
    line-height: 1.2;
}

.rk-calc-head p {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    max-width: 650px;
    line-height: 1.6;
}

/* Grid Główny */
.rk-calc-body {
    display: grid;
    grid-template-columns: 1.3fr 1fr;
    background: var(--rk-calc-bg);
}

/* Sekcja Lewa - Konfigurator */
.rk-calc-controls {
    padding: 40px 45px;
    background: #ffffff;
    border-right: 1px solid var(--rk-calc-border);
}

.rk-calc-section-title {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-calc-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin: 30px 0 20px 0;
}

.rk-calc-section-title:first-child {
    margin-top: 0;
}

.rk-calc-section-title svg {
    color: var(--rk-calc-brand);
}

/* Przyciski Wyboru (Kafelki z ikonami) */
.rk-calc-btn-group {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
}

.rk-calc-opt-btn {
    background: #ffffff;
    border: 2px solid var(--rk-calc-border);
    border-radius: 14px;
    padding: 15px 10px;
    text-align: center;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
}

.rk-calc-opt-btn:hover {
    border-color: #93c5fd;
    background: var(--rk-calc-brand-light);
}

.rk-calc-opt-btn.active {
    border-color: var(--rk-calc-brand);
    background: var(--rk-calc-brand-light);
    box-shadow: 0 8px 15px -5px rgba(37, 99, 235, 0.15);
}

.rk-calc-opt-icon {
    width: 28px;
    height: 28px;
    color: var(--rk-calc-muted);
    transition: color 0.3s;
}

.rk-calc-opt-btn.active .rk-calc-opt-icon {
    color: var(--rk-calc-brand);
}

.rk-calc-opt-text {
    font-size: 12px;
    font-weight: 800;
    color: var(--rk-calc-text);
}

.rk-calc-opt-btn.active .rk-calc-opt-text {
    color: var(--rk-calc-brand);
}

/* Suwaki Modern */
.rk-slider-wrap {
    margin-bottom: 25px;
    background: #f8fafc;
    padding: 15px 20px;
    border-radius: 12px;
    border: 1px solid #f1f5f9;
}

.rk-slider-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
}

.rk-slider-label {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-calc-dark);
}

.rk-slider-val {
    background: var(--rk-calc-brand);
    color: #ffffff;
    padding: 4px 12px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    box-shadow: 0 2px 5px rgba(37, 99, 235, 0.2);
}

.rk-range-input {
    -webkit-appearance: none;
    width: 100%;
    height: 6px;
    background: #cbd5e1;
    border-radius: 3px;
    outline: none;
}

.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--rk-calc-brand);
    cursor: pointer;
    box-shadow: 0 2px 6px rgba(0,0,0,0.15);
    transition: transform 0.1s;
}

.rk-range-input::-webkit-slider-thumb:active {
    transform: scale(1.15);
}

/* Sekcja Prawa - Wyniki */
.rk-calc-results {
    padding: 40px;
    display: flex;
    flex-direction: column;
    gap: 20px;
}

/* Główny Wynik z SVG */
.rk-res-main-card {
    background: #ffffff;
    border-radius: 20px;
    padding: 30px 20px;
    text-align: center;
    border: 1px solid var(--rk-calc-border);
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05);
    position: relative;
    overflow: hidden;
}

.rk-res-gauge {
    width: 120px;
    height: 60px;
    margin: 0 auto 10px auto;
    position: relative;
}

.rk-gauge-path-bg { fill: none; stroke: #e2e8f0; stroke-width: 12; stroke-linecap: round; }
.rk-gauge-path-val { fill: none; stroke: var(--rk-calc-success); stroke-width: 12; stroke-linecap: round; transition: stroke-dashoffset 0.8s ease, stroke 0.3s; }

.rk-res-huge {
    font-size: 52px;
    font-weight: 900;
    color: var(--rk-calc-dark);
    line-height: 1;
    margin-bottom: 5px;
    letter-spacing: -1px;
}

.rk-res-unit {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-calc-muted);
    text-transform: uppercase;
}

.rk-res-alert {
    margin-top: 15px;
    padding: 10px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 700;
    display: none;
    background: var(--rk-calc-danger);
    color: #ffffff;
    animation: pulseAlert 2s infinite;
}

@keyframes pulseAlert {
    0% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.4); }
    70% { box-shadow: 0 0 0 10px rgba(239, 68, 68, 0); }
    100% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0); }
}

/* Tabela Parametrów */
.rk-res-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-res-box {
    background: #ffffff;
    border: 1px solid var(--rk-calc-border);
    padding: 15px;
    border-radius: 14px;
}

.rk-res-box.accent {
    background: var(--rk-calc-dark);
    border-color: var(--rk-calc-dark);
}

.rk-res-box-label {
    font-size: 11px;
    color: var(--rk-calc-muted);
    font-weight: 800;
    text-transform: uppercase;
    display: block;
    margin-bottom: 5px;
}

.rk-res-box.accent .rk-res-box-label { color: #94a3b8; }

.rk-res-box-val {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-calc-dark);
}

.rk-res-box.accent .rk-res-box-val { color: #ffffff; }

/* Pasek strat ciepła */
.rk-loss-bar-wrap {
    background: #ffffff;
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-calc-border);
}

.rk-loss-bar-title {
    font-size: 11px;
    font-weight: 800;
    color: var(--rk-calc-muted);
    text-transform: uppercase;
    margin-bottom: 10px;
    display: block;
}

.rk-loss-bar {
    height: 12px;
    display: flex;
    border-radius: 6px;
    overflow: hidden;
    background: #e2e8f0;
}

.rk-lb-segment { height: 100%; transition: width 0.5s ease; }
.rk-lb-w { background: var(--rk-calc-brand); }
.rk-lb-r { background: #38bdf8; }
.rk-lb-f { background: var(--rk-calc-accent); }
.rk-lb-v { background: #94a3b8; }

.rk-loss-legend {
    display: flex;
    justify-content: space-between;
    margin-top: 10px;
    font-size: 10px;
    font-weight: 700;
    color: var(--rk-calc-muted);
}

.rk-leg-item { display: flex; align-items: center; gap: 4px; }
.rk-leg-dot { width: 8px; height: 8px; border-radius: 50%; }

/* Sekcja Info Tekstowego & CTA */
.rk-calc-footer {
    background: #ffffff;
    border-top: 1px solid var(--rk-calc-border);
    padding: 40px 45px;
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-calc-info-text {
    font-size: 14px;
    line-height: 1.7;
    color: var(--rk-calc-text);
    background: var(--rk-calc-brand-light);
    padding: 20px;
    border-left: 4px solid var(--rk-calc-brand);
    border-radius: 0 12px 12px 0;
    margin: 0;
}

.rk-calc-info-text a {
    color: var(--rk-calc-brand);
    font-weight: 700;
    text-decoration: underline;
}

.rk-calc-actions {
    display: flex;
    gap: 20px;
    align-items: center;
}

.rk-btn-primary {
    background: var(--rk-calc-accent);
    color: #ffffff;
    padding: 16px 30px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 900;
    text-decoration: none;
    text-transform: uppercase;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    box-shadow: 0 10px 20px -5px rgba(249, 115, 22, 0.4);
    transition: all 0.3s;
    border: none;
    cursor: pointer;
}

.rk-btn-primary:hover {
    transform: translateY(-3px);
    background: #ea580c;
    box-shadow: 0 15px 25px -5px rgba(249, 115, 22, 0.5);
}

@media (max-width: 900px) {
    .rk-calc-body { grid-template-columns: 1fr; }
    .rk-calc-head { padding: 35px 25px; }
    .rk-calc-controls { padding: 30px 20px; border-right: none; border-bottom: 1px solid var(--rk-calc-border); }
    .rk-calc-results { padding: 30px 20px; }
    .rk-calc-footer { padding: 30px 20px; }
    .rk-calc-actions { flex-direction: column; }
    .rk-btn-primary { width: 100%; justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-calculator",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Kalkulator strat ciepła budynku online – oblicz zapotrzebowanie na ogrzewanie",
    "description": "Profesjonalny symulator OZC. Oblicz zapotrzebowanie na moc (W/m2), długość pętli grzewczych i dobierz optymalną temperaturę zasilania dla pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-calculator",
    "name": "Szacunkowe Parametry Wykonawcze Ogrzewania Podłogowego",
    "description": "Zbiór obliczonych parametrów hydraulicznych i termicznych wygenerowanych na podstawie wprowadzonych wskaźników izolacyjności przegród budowlanych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zapotrzebowanie cieplne W/m2",
      "dobór pompy obiegowej",
      "planowanie pętli grzewczych",
      "kosztorys ogrzewania podłogowego",
      "temperatura zasilania podłogówki"
    ],
    "measurementTechnique": "Szacowanie heurystyczne bazujące na uproszczonych wzorach normy PN-EN 12831, przeliczające sumę strat przez przenikanie i wentylację na metraż instalacji.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wynik > 95 W/m2 wskazuje na wysokie ryzyko niedogrzania samym systemem podłogowym.",
        "Zapotrzebowanie określa średnią wymaganą ilość mb rury instalacyjnej.",
        "Moc całkowita determinuje dobór mocy źródła ciepła (pompy ciepła)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-calculator",
    "name": "Zaawansowany Symulator Zapotrzebowania Cieplnego",
    "description": "Interaktywna aplikacja inżynierska wizualizująca na żywo zmiany parametrów instalacyjnych (temperatura, rozstaw rur) w zależności od grubości ocieplenia i rodzaju posadzki.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript enabled browser.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-wrapper" id="rk-calc-app">
    <div class="rk-calc-head">
        <div class="rk-calc-badge">Narzędzie Inżynierskie</div>
        <h2>Kalkulator strat ciepła budynku online – oblicz zapotrzebowanie na ogrzewanie</h2>
        <p>Wprowadź gabaryty swojego budynku oraz parametry przegród, aby błyskawicznie oszacować moc grzewczą i optymalne parametry pracy pętli podłogowych. Pamiętaj, że uzyskane wyniki mają <strong>charakter wyłącznie poglądowy</strong> i nie zastępują profesjonalnego projektu (OZC).</p>
    </div>

    <div class="rk-calc-body">
        
        <div class="rk-calc-controls">
            
            <div class="rk-calc-section-title">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path></svg>
                1. Standard energetyczny
            </div>
            <div class="rk-calc-btn-group">
                <div class="rk-calc-opt-btn active" onclick="rkSetPreset('new', this)">
                    <svg class="rk-calc-opt-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg>
                    <span class="rk-calc-opt-text">Nowy Dom<br>(WT 2021)</span>
                </div>
                <div class="rk-calc-opt-btn" onclick="rkSetPreset('mod', this)">
                    <svg class="rk-calc-opt-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    <span class="rk-calc-opt-text">Docieplony<br>(Modernizacja)</span>
                </div>
                <div class="rk-calc-opt-btn" onclick="rkSetPreset('old', this)">
                    <svg class="rk-calc-opt-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                    <span class="rk-calc-opt-text">Stary Dom<br>(Bez izolacji)</span>
                </div>
            </div>

            <div class="rk-calc-section-title">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><line x1="4" y1="12" x2="20" y2="12"></line><line x1="12" y1="4" x2="12" y2="20"></line></svg>
                2. Geometria i Fizyka budowli
            </div>
            
            <div class="rk-slider-wrap">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Powierzchnia ogrzewana</span>
                    <span class="rk-slider-val"><span id="rk-v-area">140</span> m²</span>
                </div>
                <input type="range" id="rk-area" class="rk-range-input" min="40" max="300" value="140" oninput="rkUpdateCalc()">
            </div>

            <div class="rk-slider-wrap">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Strefa Klimatyczna</span>
                    <span class="rk-slider-val">Strefa <span id="rk-v-zone">III</span> (<span id="rk-v-temp">-20</span>°C)</span>
                </div>
                <input type="range" id="rk-zone" class="rk-range-input" min="1" max="5" step="1" value="3" oninput="rkUpdateCalc()">
            </div>

            <div class="rk-slider-wrap">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Wsp. przenikania Ścian (U)</span>
                    <span class="rk-slider-val" id="rk-v-walls">0.18</span>
                </div>
                <input type="range" id="rk-walls" class="rk-range-input" min="0.1" max="1.5" step="0.01" value="0.18" oninput="rkUpdateCalc()">
            </div>

            <div class="rk-slider-wrap">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Wsp. przenikania Dachu (U)</span>
                    <span class="rk-slider-val" id="rk-v-roof">0.15</span>
                </div>
                <input type="range" id="rk-roof" class="rk-range-input" min="0.1" max="1.0" step="0.01" value="0.15" oninput="rkUpdateCalc()">
            </div>

            <div class="rk-slider-wrap">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Wsp. przenikania Podłogi (U)</span>
                    <span class="rk-slider-val" id="rk-v-floor">0.25</span>
                </div>
                <input type="range" id="rk-floor" class="rk-range-input" min="0.1" max="1.5" step="0.01" value="0.25" oninput="rkUpdateCalc()">
            </div>

            <div class="rk-calc-section-title">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                3. Wykończenie posadzki
            </div>
            <div class="rk-calc-btn-group">
                <div class="rk-calc-opt-btn active" id="rk-f-tiles" onclick="rkSetFloor(0.02, 'tiles')">
                    <span class="rk-calc-opt-text">PŁYTKI/GRES</span>
                </div>
                <div class="rk-calc-opt-btn" id="rk-f-panels" onclick="rkSetFloor(0.08, 'panels')">
                    <span class="rk-calc-opt-text">PANELE</span>
                </div>
                <div class="rk-calc-opt-btn" id="rk-f-wood" onclick="rkSetFloor(0.12, 'wood')">
                    <span class="rk-calc-opt-text">DESKA</span>
                </div>
            </div>

        </div>

        <div class="rk-calc-results">
            
            <div class="rk-res-main-card">
                <div class="rk-res-gauge">
                    <svg viewBox="0 0 100 50" width="100%" height="100%">
                        <path class="rk-gauge-path-bg" d="M 10 50 A 40 40 0 0 1 90 50" />
                        <path class="rk-gauge-path-val" id="rk-gauge-val" d="M 10 50 A 40 40 0 0 1 90 50" stroke-dasharray="125.6" stroke-dashoffset="125.6" />
                    </svg>
                </div>
                <div class="rk-res-huge" id="rk-res-m2">--</div>
                <div class="rk-res-unit">Watów na m² (W/m²)</div>
                <div class="rk-res-alert" id="rk-alert-msg">
                    ⚠️ Krytyczne zapotrzebowanie. Sama instalacja podłogowa nie dogrzeje budynku w mrozy.
                </div>
            </div>

            <div class="rk-res-grid">
                <div class="rk-res-box">
                    <span class="rk-res-box-label">Moc całkowita instalacji</span>
                    <span class="rk-res-box-val" id="rk-res-total">-- kW</span>
                </div>
                <div class="rk-res-box accent">
                    <span class="rk-res-box-label">Sugerowany rozstaw rur</span>
                    <span class="rk-res-box-val" id="rk-res-spacing">-- cm</span>
                </div>
                <div class="rk-res-box">
                    <span class="rk-res-box-label">Temp. zasilania (Tz)</span>
                    <span class="rk-res-box-val" id="rk-res-tz" style="color:var(--rk-calc-accent)">-- °C</span>
                </div>
                <div class="rk-res-box">
                    <span class="rk-res-box-label">Ilość mb rury PEX (ok.)</span>
                    <span class="rk-res-box-val" id="rk-res-pipe">-- mb</span>
                </div>
            </div>

            <div class="rk-loss-bar-wrap">
                <span class="rk-loss-bar-title">Rozkład ucieczki ciepła</span>
                <div class="rk-loss-bar">
                    <div class="rk-lb-segment rk-lb-w" id="rk-bar-w" style="width: 0%"></div>
                    <div class="rk-lb-segment rk-lb-r" id="rk-bar-r" style="width: 0%"></div>
                    <div class="rk-lb-segment rk-lb-f" id="rk-bar-f" style="width: 0%"></div>
                    <div class="rk-lb-segment rk-lb-v" id="rk-bar-v" style="width: 0%"></div>
                </div>
                <div class="rk-loss-legend">
                    <div class="rk-leg-item"><div class="rk-leg-dot rk-lb-w"></div> Ściany</div>
                    <div class="rk-leg-item"><div class="rk-leg-dot rk-lb-r"></div> Dach</div>
                    <div class="rk-leg-item"><div class="rk-leg-dot rk-lb-f"></div> Podłoga</div>
                    <div class="rk-leg-item"><div class="rk-leg-dot rk-lb-v"></div> Wentylacja</div>
                </div>
            </div>

        </div>

    </div>

    <div class="rk-calc-footer">
        <h3>Jak czytać wyniki symulacji OZC?</h3>
        <p class="rk-calc-info-text">
            <strong>Zanim zamówisz materiały lub projekt, musisz oszacować zapotrzebowanie energetyczne!</strong> 
            Wyniki powyżej pokazują teoretyczne granice dla Twojego budynku i mają <strong>charakter poglądowy</strong>. Zbyt wysokie obciążenie (powyżej 80 W/m²) wymusi gęste układanie rur, a w efekcie zakup potężniejszego urządzenia grzewczego. Aby nie zgadywać w ciemno, bazuj na profesjonalnych wyliczeniach. Zastanów się zresztą sam: projekt "z głowy" czy pełny projekt inżynierski z obliczeniami strat? Różnica w kosztach późniejszej eksploatacji jest kolosalna.
        </p>
        <div class="rk-calc-actions">
            <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-primary">
                ZAMÓW PROFESJONALNY PROJEKT PODŁOGÓWKI
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
            </a>
        </div>
    </div>

</div>

<script>
let rkActiveR = 0.02;
const rkZTemps = { 1: -16, 2: -18, 3: -20, 4: -22, 5: -24 };
const rkZNames = { 1: "I", 2: "II", 3: "III", 4: "IV", 5: "V" };

function rkSetPreset(type, el) {
    document.querySelectorAll('.rk-calc-btn-group')[0].querySelectorAll('.rk-calc-opt-btn').forEach(b => b.classList.remove('active'));
    el.classList.add('active');
    
    const p = {
        new: { w: 0.18, r: 0.15, f: 0.25 },
        mod: { w: 0.35, r: 0.25, f: 0.40 },
        old: { w: 1.10, r: 0.80, f: 1.00 }
    };
    
    document.getElementById('rk-walls').value = p[type].w;
    document.getElementById('rk-roof').value = p[type].r;
    document.getElementById('rk-floor').value = p[type].f;
    rkUpdateCalc();
}

function rkSetFloor(r, id) {
    rkActiveR = r;
    const btns = document.querySelectorAll('.rk-calc-btn-group')[1].querySelectorAll('.rk-calc-opt-btn');
    btns.forEach(b => b.classList.remove('active'));
    document.getElementById('rk-f-'+id).classList.add('active');
    rkUpdateCalc();
}

function rkUpdateCalc() {
    const area = parseFloat(document.getElementById('rk-area').value);
    const zone = document.getElementById('rk-zone').value;
    const uWalls = parseFloat(document.getElementById('rk-walls').value);
    const uRoof = parseFloat(document.getElementById('rk-roof').value);
    const uFloor = parseFloat(document.getElementById('rk-floor').value);
    
    const deltaT = 20 - rkZTemps[zone];
    
    // Update labels
    document.getElementById('rk-v-area').innerText = area;
    document.getElementById('rk-v-zone').innerText = rkZNames[zone];
    document.getElementById('rk-v-temp').innerText = rkZTemps[zone];
    document.getElementById('rk-v-walls').innerText = uWalls.toFixed(2);
    document.getElementById('rk-v-roof').innerText = uRoof.toFixed(2);
    document.getElementById('rk-v-floor').innerText = uFloor.toFixed(2);

    // Calc logic
    const qWalls = (area * 1.5) * uWalls * deltaT; // uśrednione ściany
    const qRoof = area * uRoof * deltaT;
    const qFloor = area * uFloor * 15; // stałe dt dla gruntu
    const qVent = 0.34 * (area * 2.6) * 0.5 * deltaT; // grawitacyjna went.
    
    const total = (qWalls + qRoof + qFloor + qVent) * 1.1; // +10% mostki
    const wm2 = total / area;

    // UI Updates
    document.getElementById('rk-res-m2').innerText = Math.round(wm2);
    document.getElementById('rk-res-total').innerText = (total / 1000).toFixed(2);

    // Gauge Update (Max 150 W/m2 for scale)
    const gaugeValPath = document.getElementById('rk-gauge-val');
    const circumference = 125.6; // pi * r (r=40) for semi-circle
    let pct = wm2 / 150;
    if(pct > 1) pct = 1;
    const offset = circumference - (pct * circumference);
    gaugeValPath.style.strokeDashoffset = offset;

    const alertMsg = document.getElementById('rk-alert-msg');
    if(wm2 > 95) {
        gaugeValPath.style.stroke = "var(--rk-calc-danger)";
        alertMsg.style.display = "block";
    } else if (wm2 > 65) {
        gaugeValPath.style.stroke = "var(--rk-calc-warning)";
        alertMsg.style.display = "none";
    } else {
        gaugeValPath.style.stroke = "var(--rk-calc-success)";
        alertMsg.style.display = "none";
    }

    // Parameters
    let spacing = (wm2 > 70 || rkActiveR > 0.08) ? 10 : 15;
    document.getElementById('rk-res-spacing').innerText = spacing;

    let tz = 20 + (wm2 * (0.12 + rkActiveR));
    tz = Math.min(55, Math.max(28, tz));
    document.getElementById('rk-res-tz').innerText = Math.round(tz) + " °C";

    const pipe = area * (100 / spacing) * 1.05;
    document.getElementById('rk-res-pipe').innerText = Math.round(pipe);

    // Bars
    document.getElementById('rk-bar-w').style.width = (qWalls/total*100) + "%";
    document.getElementById('rk-bar-r').style.width = (qRoof/total*100) + "%";
    document.getElementById('rk-bar-f').style.width = (qFloor/total*100) + "%";
    document.getElementById('rk-bar-v').style.width = (qVent/total*100) + "%";
}

// Init on load
document.addEventListener('DOMContentLoaded', rkUpdateCalc);
</script>



<style>
/* STYLE DLA SEKCJI HERO I WSTĘPU */
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
}

.premium-intro-module {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--primary);
}

/* 1. HERO BOX */
.premium-hero-box {
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--border-color);
    overflow: hidden;
    position: relative;
    margin-bottom: 50px;
}

.premium-hero-box::before {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    width: 350px;
    height: 350px;
    background: radial-gradient(circle, rgba(37,99,235,0.06) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
    transform: translate(30%, -30%);
    z-index: 0;
}

.hero-content {
    position: relative;
    z-index: 1;
    padding: 50px 55px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
}

.hero-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #eff6ff;
    color: var(--accent);
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 25px;
    border: 1px solid #bfdbfe;
}

.hero-title {
    margin-top: 0;
    margin-bottom: 25px;
    font-size: 36px;
    font-weight: 900;
    line-height: 1.2;
    color: var(--primary);
}

.hero-text {
    font-size: 17px;
    line-height: 1.8;
    color: #475569;
    margin-bottom: 20px;
}

.hero-text strong {
    color: var(--primary);
}

.hero-text:last-of-type {
    margin-bottom: 0;
}

/* 2. KARTY - 4 CZYNNIKI */
.factors-section {
    padding: 20px 0;
}

.factors-header {
    text-align: center;
    margin-bottom: 40px;
}

.factors-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--primary);
    margin-bottom: 15px;
}

.factors-header p {
    font-size: 16px;
    color: #64748b;
    max-width: 700px;
    margin: 0 auto;
    line-height: 1.6;
}

.factors-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 25px;
}

.factor-card {
    background: #ffffff;
    border: 2px solid var(--border-color);
    border-radius: 20px;
    padding: 35px 30px;
    box-shadow: 0 10px 30px -10px rgba(0, 0, 0, 0.05);
    position: relative;
    overflow: hidden;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
}

.factor-card:hover {
    border-color: var(--accent);
    transform: translateY(-5px);
    box-shadow: 0 20px 40px -10px rgba(37, 99, 235, 0.15);
}

.factor-icon {
    width: 56px;
    height: 56px;
    background: #eff6ff;
    color: var(--accent);
    border-radius: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 28px;
    margin-bottom: 25px;
    transition: transform 0.4s;
}

.factor-card:hover .factor-icon {
    transform: scale(1.1) rotate(-5deg);
}

.factor-card h4 {
    margin: 0 0 15px 0;
    font-size: 19px;
    font-weight: 800;
    color: var(--primary);
    line-height: 1.3;
}

.factor-card p {
    margin: 0 0 20px 0;
    font-size: 15px;
    line-height: 1.65;
    color: #475569;
}

.factor-example {
    background: #f8fafc;
    padding: 18px 20px;
    border-radius: 12px;
    border-left: 4px solid var(--accent);
    font-size: 14px;
    color: #334155;
    line-height: 1.6;
    margin-top: auto;
}

.factor-example strong {
    color: var(--primary);
    display: block;
    margin-bottom: 5px;
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.formula-box {
    background: #ffffff;
    border: 1px dashed #cbd5e1;
    padding: 10px;
    border-radius: 8px;
    font-family: 'Courier New', Courier, monospace;
    font-size: 13px;
    font-weight: 700;
    color: var(--primary);
    margin-top: 10px;
    text-align: center;
}

/* Wyróżnienia kolorystyczne dla konkretnych kart */
.card-iso .factor-example { border-left-color: var(--success); }
.card-iso .factor-icon { background: #dcfce7; color: var(--success); }

.card-flow .factor-example { border-left-color: var(--accent); }

.card-len .factor-example { border-left-color: var(--danger); }
.card-len .factor-icon { background: #fee2e2; color: var(--danger); }

.card-pump .factor-example { border-left-color: var(--warning); }
.card-pump .factor-icon { background: #ffedd5; color: var(--warning); }

/* KREATYWNE CTA */
.rk-prm-cta-box {
    margin-top: 50px;
    background: linear-gradient(135deg, #2563eb 0%, #1e3a8a 100%);
    border-radius: 20px;
    padding: 40px 50px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 30px;
    color: #ffffff;
    box-shadow: 0 15px 30px -10px rgba(37, 99, 235, 0.4);
}

.rk-prm-cta-text h3 {
    margin: 0 0 10px 0;
    font-size: 24px;
    font-weight: 900;
}

.rk-prm-cta-text p {
    margin: 0;
    font-size: 15px;
    opacity: 0.9;
    max-width: 500px;
    line-height: 1.6;
}

.rk-prm-btn-massive {
    background: #ffffff;
    color: var(--accent);
    padding: 18px 30px;
    border-radius: 14px;
    font-size: 16px;
    font-weight: 900;
    text-transform: uppercase;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
    box-shadow: 0 10px 20px rgba(0,0,0,0.1);
    transition: all 0.3s;
}

.rk-prm-btn-massive:hover {
    transform: translateY(-4px);
    box-shadow: 0 15px 25px rgba(0,0,0,0.2);
    background: #f8fafc;
}

@media (max-width: 900px) {
    .hero-content { padding: 40px 30px; }
    .hero-title { font-size: 28px; }
    .factors-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-prm-cta-box { flex-direction: column; text-align: center; padding: 35px 25px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#projekt-hydrauliczny",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Jak wyniki z kalkulatora strat ciepła wpływają na projekt ogrzewania podłogowego?",
    "description": "Przełożenie obciążenia cieplnego na parametry hydrauliczne: rozstaw rur PEX, rotametry, długość pętli oraz dobór pompy ciepła i bufora.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-hydraulika",
    "name": "Wytyczne Hydrauliczne Projektowania Ogrzewania Podłogowego",
    "description": "Techniczne korelacje pomiędzy zapotrzebowaniem energetycznym budynku a ustawieniami przepływów, długością pętli i doborem elementów maszynowni.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego parametry",
      "rozstaw rur w ogrzewaniu podłogowym",
      "maksymalna długość pętli ogrzewania podłogowego",
      "ustawienie przepływów na rotametrach",
      "dobór pompy ciepła i bufora"
    ],
    "measurementTechnique": "Konwersja obciążenia cieplnego (W/m2) na przepływy masowe przy zakładanym spadku temperatury dT=5K oraz wyznaczanie oporów hydraulicznych pętli.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rozstaw rur: 20 cm dla <45 W/m2, 15 cm dla 50-80 W/m2, 10 cm dla stref brzegowych.",
        "Przepływ masowy (l/min) wyliczany z proporcji Mocy i delta T (ΔT).",
        "Maksymalna długość pojedynczej pętli rury 16x2.0 mm: 100-120 mb w celu ograniczenia oporów poniżej 20 kPa.",
        "Sumaryczna moc budynku warunkuje moc grzewczą pompy ciepła w punkcie biwalencyjnym."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-hydraulika",
    "name": "Przewodnik Parametrów Projektowych",
    "description": "Narzędzie tłumaczące inżynierskie przełożenie wyników audytu OZC na fizyczne elementy instalacji ogrzewania podłogowego (rury, rozdzielacze, bufory).",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="premium-intro-module" id="intro-hero-app">
    
    <div class="premium-hero-box">
        <div class="hero-content">
            <div class="hero-badge">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
                Inżynieria w praktyce
            </div>
            
            <h2 class="hero-title">Jak wyniki z kalkulatora strat ciepła wpływają na projekt ogrzewania podłogowego?</h2>
            
            <p class="hero-text">Wprowadzenie dokładnych danych z kalkulatora strat ciepła budynku jest fundamentem do wykonania poprawnego, profesjonalnego projektu instalacji ogrzewania podłogowego.</p>
            
            <p class="hero-text">Wynik całkowitego obciążenia cieplnego (<strong>Q<sub>total</sub></strong>) oraz wskaźniki jednostkowe (<strong>W/m²</strong>) determinują kluczowe parametry hydrauliczne i montażowe układu wodnego, eliminując kosztowne błędy wykonawcze.</p>
        </div>
    </div>

    <div class="factors-section">
        <div class="factors-header">
            <h2>Przełożenie wyników na 4 parametry hydrauliczne projektu</h2>
            <p>Zobacz, jak wartości uzyskane z kalkulatora bezpośrednio determinują dobór komponentów i zasady montażu w Twoim domu.</p>
        </div>
        
        <div class="factors-grid">
            
            <div class="factor-card card-iso">
                <div class="factor-icon">📏</div>
                <h4>Dobór rozstawu rur (zagęszczenie wężownicy)</h4>
                <p>Wskaźniki jednostkowe zapotrzebowania z kalkulatora (ilość W/m²) bezpośrednio decydują o zagęszczeniu rur. Prawidłowy dobór gwarantuje, że podłoga odda dokładnie tyle ciepła, ile potrzebuje pomieszczenie w mroźne dni.</p>
                <div class="factor-example">
                    <strong>Zasady rozstawu:</strong>
                    • &lt; 45 W/m² → Rozstaw co <strong>20 cm</strong> (domy energooszczędne).<br>
                    • 50-80 W/m² → Rozstaw co <strong>15 cm</strong> (standard).<br>
                    • &gt; 80 W/m² lub duże okna → Zagęszczenie co <strong>10 cm</strong> (strefy brzegowe).
                </div>
            </div>

            <div class="factor-card card-flow">
                <div class="factor-icon">⚖️</div>
                <h4>Wyznaczenie przepływów masowych (rotametry)</h4>
                <p>Dokładna moc pętli z OZC pozwala wyliczyć wymagany przepływ wody na belce rozdzielacza. Tę wartość hydraulik musi precyzyjnie ustawić na rotametrze podczas procedury równoważenia instalacji.</p>
                <div class="factor-example">
                    <strong>Przykład z projektu:</strong>
                    Dla pętli o mocy Q = 1200 W i spadku temperatury ΔT = 5 K, wymagany przepływ wynosi:
                    <div class="formula-box">
                        ṁ = Q / (c · ΔT) = 1200 / (1,163 · 5) = 206,3 kg/h ≈ 3,43 l/min
                    </div>
                </div>
            </div>

            <div class="factor-card card-len">
                <div class="factor-icon">🛑</div>
                <h4>Maksymalna długość pętli grzewczej</h4>
                <p>Projektant, znając przepływy i wynikowe straty ciepła, dzieli powierzchnię posadzki na sekcje. Robi to tak, aby nie przekroczyć granicznych oporów hydraulicznych, z którymi nie poradzi sobie pompa obiegowa.</p>
                <div class="factor-example">
                    <strong>Limit inżynierski:</strong>
                    Pojedyncza pętla z popularnej rury o średnicy 16 mm <strong>nie może przekroczyć 100-120 metrów długości</strong>. Dłuższa rura wygeneruje opory powyżej 20 kPa, powodując efekt „zimnej podłogi” na końcu obiegu w salonie.
                </div>
            </div>

            <div class="factor-card card-pump">
                <div class="factor-icon">⚙️</div>
                <h4>Dobór pompy ciepła i bufora</h4>
                <p>Całkowita moc budynku uzyskana z kalkulatora (np. 7,5 kW dla skrajnej temperatury -20°C) wskazuje wprost inwestorowi i projektantowi, jakiej klasy mocowej model pompy ciepła należy zakupić.</p>
                <div class="factor-example">
                    <strong>Dlaczego to jest ważne?</strong>
                    Precyzyjny dobór mocy zapobiega instalacji urządzeń zbyt dużych (przewymiarowanych), które ulegają przyspieszonym awariom z powodu tzw. taktowania kompresora. Wyznacza też wymaganą minimalną pojemność bufora dla procesu defrostu.
                </div>
            </div>

        </div>
    </div>

    <div class="rk-prm-cta-box">
        <div class="rk-prm-cta-text">
            <h3>Koniec z szacowaniem "na oko"!</h3>
            <p>Nie pozwól instalatorowi układać rur bez rzetelnego, matematycznego planu. Zainwestuj w pełny projekt inżynierski OZC, który zbilansuje każdy litr wody w Twoim domu. <strong>To jedyna gwarancja niskich rachunków.</strong></p>
        </div>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-prm-btn-massive">
            Zamów Kompletny Projekt
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // ZABEZPIECZENIE DOMENOWE
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const appContainer = document.getElementById('intro-hero-app');
        if (appContainer) {
            appContainer.innerHTML = `
                <div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 400px; border-radius: 24px; font-family: sans-serif;">
                    <span style="font-size: 48px; margin-bottom: 20px;">🔒</span>
                    <h3 style="margin-top:0; font-size: 24px; font-weight: 900;">Treść chroniona prawem autorskim</h3>
                    <p style="font-size: 16px; max-width: 500px; color: #7f1d1d; line-height: 1.5; margin-bottom: 25px;">Ten moduł jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i został wdrożony na nieautoryzowanej domenie.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="padding: 14px 28px; background: #dc2626; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s;">ZOBACZ ORYGINAŁ</a>
                </div>
            `;
        }
    }
});
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-panel: #1e293b;
    --rk-err-danger: #ef4444; 
    --rk-err-danger-light: #fef2f2;
    --rk-err-warn: #f59e0b; 
    --rk-err-safe: #10b981; 
    --rk-err-blue: #3b82f6; 
    --rk-err-bg: #ffffff;
    --rk-err-border: #e2e8f0;
    --rk-err-text: #334155;
    --rk-err-muted: #64748b;
}

.rk-err-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-err-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(239, 68, 68, 0.15);
    border: 1px solid rgba(239, 68, 68, 0.3);
    overflow: hidden;
}

/* Nagłówek Sekcji */
.rk-err-header {
    background: linear-gradient(135deg, var(--rk-err-dark) 0%, #450a0a 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 5px solid var(--rk-err-danger);
}

.rk-err-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(239, 68, 68, 0.2);
    color: #fca5a5;
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(252, 165, 165, 0.2);
}

.rk-err-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 10px 0;
}

.rk-err-title span { color: #f87171; }

.rk-err-subtitle {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    max-width: 700px;
    line-height: 1.6;
}

/* Moduł Interaktywny */
.rk-err-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-err-grid {
    display: grid;
    grid-template-columns: 320px 1fr;
    gap: 30px;
}

/* Lista błędów (Lewa Kolumna) */
.rk-err-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-err-btn {
    background: #ffffff;
    border: 1px solid var(--rk-err-border);
    padding: 18px 20px;
    border-radius: 16px;
    text-align: left;
    cursor: pointer;
    display: flex;
    align-items: flex-start;
    gap: 15px;
    position: relative;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-err-btn:hover {
    border-color: var(--rk-err-danger);
    transform: translateX(4px);
}

.rk-err-btn.active {
    background: var(--rk-err-danger-light);
    border-color: var(--rk-err-danger);
    box-shadow: inset 4px 0 0 var(--rk-err-danger), 0 10px 20px -5px rgba(239, 68, 68, 0.15);
}

.rk-err-icon {
    width: 32px;
    height: 32px;
    background: #f1f5f9;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-err-muted);
    flex-shrink: 0;
    transition: 0.3s;
}

.rk-err-btn.active .rk-err-icon {
    background: var(--rk-err-danger);
    color: #ffffff;
}

.rk-err-btn-text h4 {
    margin: 0 0 5px 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-err-dark);
}

.rk-err-btn-text p {
    margin: 0;
    font-size: 12px;
    color: var(--rk-err-muted);
    line-height: 1.4;
}

/* Karty CTA (Długi Ogon - Wypełnienie Pustego Miejsca na lewym pasku) */
.rk-err-cta-card {
    background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
    border-radius: 14px;
    padding: 18px 20px;
    text-decoration: none;
    display: flex;
    flex-direction: column;
    justify-content: center;
    position: relative;
    overflow: hidden;
    border: 1px solid #334155;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
    transition: transform 0.3s, box-shadow 0.3s, border-color 0.3s;
    margin-top: 5px;
}

.rk-err-cta-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 25px rgba(15, 23, 42, 0.4);
    border-color: var(--rk-err-danger);
}

.err-cta-badge {
    font-size: 10px;
    color: #cbd5e1;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.err-cta-badge::before {
    content: '';
    display: inline-block;
    width: 6px;
    height: 6px;
    background: var(--rk-err-danger);
    border-radius: 50%;
}

.err-cta-title {
    font-size: 14px;
    color: #ffffff;
    font-weight: 700;
    line-height: 1.5;
    padding-right: 25px;
}

.err-cta-arrow {
    position: absolute;
    right: 20px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--rk-err-danger);
    font-size: 18px;
    font-weight: bold;
    transition: right 0.3s;
}

.rk-err-cta-card:hover .err-cta-arrow {
    right: 15px;
}

/* Panel Detali (Prawa Kolumna - Zoptymalizowana pod Długi Ogon Tekstu) */
.rk-err-display {
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-err-border);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
}

.rk-err-panel {
    display: none;
    flex-direction: column;
    height: 100%;
}

.rk-err-panel.active {
    display: flex;
    animation: fadeInScale 0.4s ease-out forwards;
}

@keyframes fadeInScale {
    from { opacity: 0; transform: scale(0.98); }
    to { opacity: 1; transform: scale(1); }
}

/* Treść Panelu Pełnotekstowego */
.rk-err-content {
    padding: 40px 45px;
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
}

.rk-err-content h3 {
    margin: 0 0 20px 0;
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-err-dark);
    line-height: 1.3;
}

.rk-err-content p {
    margin: 0 0 18px 0;
    font-size: 15px;
    line-height: 1.8;
    color: var(--rk-err-text);
}

.rk-err-content strong {
    color: var(--rk-err-dark);
    font-weight: 800;
}

.rk-err-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--rk-err-danger);
    font-weight: 800;
    font-size: 15px;
    text-decoration: none;
    margin-top: 15px;
    padding-top: 25px;
    border-top: 1px dashed var(--rk-err-border);
    transition: color 0.3s;
}

.rk-err-link:hover { color: #991b1b; }
.rk-err-link svg { transition: transform 0.3s; }
.rk-err-link:hover svg { transform: translateX(5px); }

@media (max-width: 768px) {
    .rk-err-header { padding: 35px 25px; }
    .rk-err-title { font-size: 24px; }
    .rk-err-interactive { padding: 25px; }
    .rk-err-grid { grid-template-columns: 1fr; }
    .rk-err-content { padding: 30px 25px; }
    .rk-err-content h3 { font-size: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-bledy-szacowania",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Najczęstsze błędy inwestorów przy samodzielnym szacowaniu zapotrzebowania na ciepło",
    "description": "Kluczowe pułapki podczas obliczania strat cieplnych: ignorowanie izolacji brzegowej, błędna kubatura do strat wentylacyjnych, zła strefa klimatyczna oraz wpływ wylewki na bezwładność.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-bledy",
    "name": "Rejestr Błędów Szacunkowych Zapotrzebowania Cieplnego",
    "description": "Wykaz najczęstszych odchyleń w samodzielnych audytach energetycznych wpływających na przewymiarowanie pomp ciepła i nieefektywność instalacji płaszczyznowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błędy obliczeniowe OZC",
      "grubość wylewki a straty ciepła",
      "izolacja brzegowa podłogówki",
      "strefa klimatyczna w Polsce",
      "straty wentylacyjne kubatura",
      "straty ciepła przez duże przeszklenia",
      "temperatura w łazience 24 stopnie"
    ],
    "measurementTechnique": "Weryfikacja parametrów audytowych poprzez porównanie wskaźników normatywnych z błędnymi założeniami inwestorskimi.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Fałszywy wskaźnik 50 W/m2 przy dużych przeszkleniach północnych.",
        "Generowanie masywnej bezwładności przez wylewki grubsze niż 6 cm.",
        "Zawyżanie kubatury wentylacyjnej przez przyjmowanie wysokości stanu surowego.",
        "Przemarzanie stref przez brak ciągłości izolacji brzegowej.",
        "Przyjmowanie uniwersalnej strefy klimatycznej zamiast lokalnej temperatury projektowej.",
        "Ignorowanie wyższej temperatury docelowej (+24°C) dla łazienek w bilansie."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-error-scanner",
    "name": "Przegląd Błędów Obliczeniowych HVAC",
    "description": "Narzędzie nawigacyjne demaskujące wpływ niewłaściwych założeń architektonicznych i materiałowych na błędy w kalkulatorach zapotrzebowania cieplnego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container" id="rk-err-app">
    
    <div class="rk-err-header">
        <div class="rk-err-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Skaner Ryzyka Inwestycyjnego
        </div>
        <h2 class="rk-err-title">Najczęstsze błędy inwestorów przy <span>samodzielnym szacowaniu zapotrzebowania</span> na ciepło</h2>
        <p class="rk-err-subtitle">Nawet najlepszy kalkulator poda fałszywy wynik, jeśli wprowadzisz do niego błędne dane wejściowe. Zobacz 6 grzechów głównych, które zrujnują bilans energetyczny Twojego domu.</p>
    </div>

    <div class="rk-err-interactive">
        <div class="rk-err-grid">
            
            <div class="rk-err-list">
                
                <button class="rk-err-btn active" data-err="err-1">
                    <div class="rk-err-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line></svg>
                    </div>
                    <div class="rk-err-btn-text">
                        <h4>Ślepa wiara w internet</h4>
                        <p>Ignorowanie dużych okien</p>
                    </div>
                </button>

                <button class="rk-err-btn" data-err="err-2">
                    <div class="rk-err-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    </div>
                    <div class="rk-err-btn-text">
                        <h4>Bezwładność wylewki</h4>
                        <p>Opór grubego betonu</p>
                    </div>
                </button>

                <button class="rk-err-btn" data-err="err-3">
                    <div class="rk-err-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
                    </div>
                    <div class="rk-err-btn-text">
                        <h4>Błędy kubaturowe</h4>
                        <p>Stan surowy vs gotowy</p>
                    </div>
                </button>

                <button class="rk-err-btn" data-err="err-4">
                    <div class="rk-err-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M5 12.55a11 11 0 0 1 14.08 0"></path><path d="M1.42 9a16 16 0 0 1 21.16 0"></path><path d="M8.53 16.11a6 6 0 0 1 6.95 0"></path><line x1="12" y1="20" x2="12.01" y2="20"></line></svg>
                    </div>
                    <div class="rk-err-btn-text">
                        <h4>Mostki termiczne</h4>
                        <p>Brak izolacji brzegowej</p>
                    </div>
                </button>

                <button class="rk-err-btn" data-err="err-5">
                    <div class="rk-err-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path></svg>
                    </div>
                    <div class="rk-err-btn-text">
                        <h4>Zła strefa klimatyczna</h4>
                        <p>Błąd na ΔT i temperaturze</p>
                    </div>
                </button>

                <button class="rk-err-btn" data-err="err-6">
                    <div class="rk-err-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z"></path></svg>
                    </div>
                    <div class="rk-err-btn-text">
                        <h4>Niedogrzana łazienka</h4>
                        <p>Ignorowanie normy +24°C</p>
                    </div>
                </button>

                <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/" class="rk-err-cta-card">
                    <div class="err-cta-badge">Kalkulacje a okładzina</div>
                    <div class="err-cta-title">Panele czy Płytki? Poznaj wpływ na efektywność instalacji</div>
                    <div class="err-cta-arrow">➔</div>
                </a>

                <a href="https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/" class="rk-err-cta-card">
                    <div class="err-cta-badge">Ostrzeżenie Inżyniera</div>
                    <div class="err-cta-title">5 Błędów montażu, których nie naprawisz po wylewce</div>
                    <div class="err-cta-arrow">➔</div>
                </a>

            </div>

            <div class="rk-err-display">
                
                <div class="rk-err-panel active" id="err-1">
                    <div class="rk-err-content">
                        <h3>Przyjmowanie uśrednionych wskaźników z internetu</h3>
                        <p>Projektowanie instalacji na bazie ogólnikowego hasła „każdy nowy dom potrzebuje 50 W/m²” to proszenie się o kłopoty. Ignorowanie wielkości okien to błąd kardynalny. Dom z dużymi przeszkleniami od strony północnej może potrzebować w strefie przyokiennej potężnego zastrzyku mocy – w najchłodniejsze dni nawet do 90 W/m².</p>
                        <p><strong>Dlaczego duże okna tarasowe (np. typu HS) generują problemy?</strong> Przeszklenia mają zazwyczaj 3-4 krotnie gorszy współczynnik przenikania ciepła (U) niż dobrze ocieplona ściana zewnętrzna. Oznacza to, że salon z oknem na całą ścianę wychładza się drastycznie szybciej. Aby skompensować te <strong>straty ciepła przez duże przeszklenia</strong>, konieczne jest wyznaczenie precyzyjnej <strong>strefy brzegowej obwodowej w ogrzewaniu podłogowym</strong> z gęstszym rozstawem rur (najczęściej co 10 cm, a czasem nawet co 5 cm). Profesjonalny kalkulator strat ciepła budynku zawsze oddziela przegrody przezroczyste od pełnych ścian, co pozwala bezbłędnie zoptymalizować późniejszy projekt inżynierski.</p>
                        <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-do-domu-z-duzymi-przeszkleniami-jak-poradzic-sobie-ze-strefa-przy-oknach/" class="rk-err-link">
                            Zarządzaj strefą brzegową przy oknach 
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
                        </a>
                    </div>
                </div>

                <div class="rk-err-panel" id="err-2">
                    <div class="rk-err-content">
                        <h3>Nieuwzględnianie grubości i rodzaju wylewki</h3>
                        <p>Zbyt gruba wylewka betonowa (np. wylanie 10 cm standardowego betonu z miksokreta zamiast optymalnych 5-6 cm specjalistycznego jastrychu) drastycznie zaburza parametry. Kalkulator musi koniecznie uwzględniać ten opór cieplny warstwy nad rurami, inaczej oszacowana temperatura zasilania z kotła okaże się niewystarczająca do efektywnego przebicia grubej warstwy budulca i nagrzania posadzki.</p>
                        <p><strong>Jaka wylewka na ogrzewanie podłogowe sprawdzi się najlepiej?</strong> Wybór materiału ma kluczowy wpływ na roczne rachunki. Jastrych anhydrytowy charakteryzuje się znacznie wyższym współczynnikiem przewodzenia ciepła (λ) i płynną konsystencją, która idealnie, bez pęcherzyków powietrza otula rury PEX lub PERT. Znacznie mniejsza <strong>bezwładność cieplna w ogrzewaniu podłogowym</strong> z wylewką anhydrytową pozwala systemowi szybciej reagować na nagłe zmiany pogody, zmniejszając zużycie prądu przez pompę ciepła.</p>
                        <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" class="rk-err-link">
                            Optymalna grubość wylewki – parametry i normy
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
                        </a>
                    </div>
                </div>

                <div class="rk-err-panel" id="err-3">
                    <div class="rk-err-content">
                        <h3>Błędne obliczanie kubatury do strat wentylacyjnych</h3>
                        <p>To powszechny, klasyczny błąd przy samodzielnych wyliczeniach! Przyjmowanie wysokości pomieszczeń bezpośrednio z rzutów architektonicznych z fazy stanu surowego (np. wpisywanie w tabelę 2,80 m lub 3,00 m) zamiast wartości docelowej netto po wykonaniu grubych izolacji podłóg styropianem, wylaniu jastrychu oraz montażu sufitów podwieszanych (gdzie realna wysokość wynosi np. 2,55 m). Taki pozornie drobny błąd sztucznie podnosi wynik w kalkulatorze o kilkanaście procent.</p>
                        <p><strong>Jak oblicza się straty cieplne w budynkach z rekuperacją?</strong> Precyzyjna kubatura przestrzeni powietrznej jest fundamentalna przy wentylacji mechanicznej z odzyskiem ciepła. Markowy rekuperator potrafi odzyskać ponad 80% ciepła z wywiewanego powietrza z pomieszczeń. Błędnie zawyżona objętość zmusza do projektowania większych, niepotrzebnych przepływów powietrza oraz potężnie zakłamuje <strong>projektowe obciążenie cieplne (OZC)</strong>. Skutek? Kupujesz mocniejszą, dużo droższą pompę ciepła, która przez cały sezon będzie fatalnie taktować, pracując na zwolnionych obrotach.</p>
                        <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-err-link">
                            Poznaj wpływ rekuperacji na obciążenie OZC
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
                        </a>
                    </div>
                </div>

                <div class="rk-err-panel" id="err-4">
                    <div class="rk-err-content">
                        <h3>Ignorowanie izolacji brzegowej i fundamentowej</h3>
                        <p>Pomijanie mocy uciekającej niekontrolowanie przez boki i krawędzie nagrzanej płyty grzewczej do otoczenia to inżynierski koszmar. Brak grubej, elastycznej pianki dylatacyjnej umieszczonej na stykach wylewki ze ścianami zewnętrznymi generuje potężny obwodowy mostek termiczny. To tędy najczęściej i bezpowrotnie ucieka energia na zewnątrz budynku, co często wywołuje ekstremalne wychłodzenie cokołów i powstawanie pleśni.</p>
                        <p><strong>Ile styropianu pod ogrzewanie podłogowe na gruncie?</strong> Absolutną bazą jest doskonała izolacja termiczna kładziona bezpośrednio na folii przeciwwilgociowej (standard WT to obecnie około 15-20 cm twardego styropianu rzędu EPS 100). Jej głównym zadaniem jest zablokowanie przekazywania ciepła w dół do gruntu. Z kolei profesjonalna <strong>izolacja brzegowa i dylatacje w instalacji ogrzewania podłogowego</strong> pełnią podwójną misję: jako amortyzator mechaniczny przejmują naprężenia termiczne rozszerzającego się jastrychu (zapobiegając pękaniu posadzki), oraz stanowią kluczową fizyczną blokadę cieplną pomiędzy płytą a murowanymi, zimnymi ścianami.</p>
                        <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/" class="rk-err-link">
                            Sprawdź zasady dylatacji i izolacji brzegowej 
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
                        </a>
                    </div>
                </div>

                <div class="rk-err-panel" id="err-5">
                    <div class="rk-err-content">
                        <h3>Błędne przypisanie strefy klimatycznej</h3>
                        <p>Polska nie jest jednolita termicznie! Wpisanie do kalkulatora domyślnej wartości -20°C dla inwestycji w Szczecinie (Strefa I: -16°C) zafałszuje wynik w górę. Z kolei dla inwestycji w Suwałkach (Strefa V: -24°C) instalacja zostanie dramatycznie niedoszacowana, co doprowadzi do przemarzania budynku.</p>
                        <p><strong>Jak strefa klimatyczna w Polsce wpływa na wynik kalkulatora strat ciepła?</strong> Różnica temperatur (ΔT) między wnętrzem a otoczeniem jest głównym i najsilniejszym mnożnikiem we wzorze na przenikanie. Błędne określenie dokładnej <strong>projektowej temperatury zewnętrznej</strong> sprawi, że sztucznie wyliczone zapotrzebowanie wymusi na Tobie zakup pompy ciepła o niewłaściwej mocy – a przesterowane urządzenie szybciej ulegnie kosztownej awarii kompresora.</p>
                        <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" class="rk-err-link">
                            Sprawdź podział na strefy klimatyczne i normę PN-EN 12831
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
                        </a>
                    </div>
                </div>

                <div class="rk-err-panel" id="err-6">
                    <div class="rk-err-content">
                        <h3>Ignorowanie wyższej temperatury docelowej w łazience</h3>
                        <p>Inwestorzy często liczą całą powierzchnię domu ryczałtowo, przyjmując wszędzie standardowe +20°C. Tymczasem zgodnie ze sztuką inżynierską oraz prawem budowlanym, docelowa temperatura komfortu w łazience musi wynosić +24°C. Różnica zaledwie 4 stopni potężnie zmienia i zawyża bilans cieplny dla tego pomieszczenia.</p>
                        <p><strong>Dlaczego łazienka wymaga innych obliczeń strat ciepła w kalkulatorze budowlanym?</strong> Wyższa delta temperatur (ΔT) oznacza drastycznie szybszą ucieczkę energii przez ściany i wentylację. Co gorsza, w łazience użyteczna, fizyczna powierzchnia wylewki pod <strong>ogrzewanie podłogowe</strong> jest mocno ograniczona przez stałą zabudowę (wanna, brodzik bez progu, szafki, stelaże WC). Wymusza to na projektancie OZC skrajne zagęszczenie rur grzewczych (często co 5-10 cm) oraz w 90% przypadków dodanie dedykowanego ściennego grzejnika elektrycznego do suszenia ręczników.</p>
                        <a href="https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/" class="rk-err-link">
                            Zobacz jak gęsto układać rury podłogówki w łazience
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
                        </a>
                    </div>
                </div>

            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-err-btn');
    const panels = document.querySelectorAll('.rk-err-panel');

    // Obsługa zakładek błędów
    btns.forEach(btn => {
        btn.addEventListener('click', () => {
            btns.forEach(b => b.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            btn.classList.add('active');
            const targetId = btn.getAttribute('data-err');
            const targetPanel = document.getElementById(targetId);
            
            if(targetPanel) {
                targetPanel.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-panel: #1e293b;
    --rk-case-brand: #0284c7; /* Sky blue - techniczny i górski */
    --rk-case-brand-light: #f0f9ff;
    --rk-case-accent: #f59e0b; /* Bursztyn - ogrzewanie */
    --rk-case-danger: #ef4444; 
    --rk-case-success: #10b981; 
    --rk-case-bg: #ffffff;
    --rk-case-border: #e2e8f0;
    --rk-case-text: #334155;
    --rk-case-muted: #64748b;
}

.rk-case-wrapper {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-case-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid rgba(2, 132, 199, 0.3);
    overflow: hidden;
    color: var(--rk-case-dark);
}

/* Nagłówek Sekcji */
.rk-case-header {
    background: linear-gradient(135deg, var(--rk-case-dark) 0%, #082f49 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 5px solid var(--rk-case-brand);
}

.rk-case-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.1);
    color: #7dd3fc;
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(125, 211, 252, 0.2);
}

.rk-case-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 15px 0;
}

.rk-case-title span { color: #38bdf8; }

.rk-case-intro {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    line-height: 1.7;
    max-width: 800px;
}

/* Moduł Interaktywny */
.rk-case-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-case-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
}

/* Kontrolki - Lewa strona */
.rk-case-controls {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-case-ctrl-box {
    background: #ffffff;
    border: 1px solid var(--rk-case-border);
    border-radius: 16px;
    padding: 25px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-case-ctrl-title {
    font-size: 15px;
    font-weight: 900;
    color: var(--rk-case-dark);
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 8px;
}

/* Przełączniki Suwakowe */
.rk-case-slider-wrap {
    position: relative;
    padding-top: 10px;
}

.rk-case-range {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    background: #e2e8f0;
    border-radius: 4px;
    outline: none;
}

.rk-case-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #ffffff;
    border: 4px solid var(--rk-case-brand);
    cursor: pointer;
    box-shadow: 0 2px 5px rgba(0,0,0,0.15);
}

.rk-case-labels {
    display: flex;
    justify-content: space-between;
    margin-top: 12px;
    font-size: 11px;
    font-weight: 800;
    color: var(--rk-case-muted);
}

/* Przełączniki Kafelkowe (Okładzina) */
.rk-case-btn-group {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.rk-case-opt-btn {
    background: #f1f5f9;
    border: 2px solid transparent;
    padding: 12px;
    border-radius: 10px;
    text-align: center;
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-case-muted);
    cursor: pointer;
    transition: 0.3s;
}

.rk-case-opt-btn.active {
    background: var(--rk-case-brand-light);
    border-color: var(--rk-case-brand);
    color: var(--rk-case-brand);
}

/* Wyniki - Prawa strona */
.rk-case-results {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-case-visual {
    background: var(--rk-case-dark);
    border-radius: 16px;
    border: 3px solid #334155;
    height: 200px;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 40px rgba(0,0,0,0.6);
}

.rk-case-svg {
    width: 100%;
    height: 100%;
}

.rk-case-data-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-case-card {
    background: #ffffff;
    border: 1px solid var(--rk-case-border);
    padding: 15px;
    border-radius: 12px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-case-card.highlight {
    background: var(--rk-case-dark);
    border-color: var(--rk-case-dark);
}

.rk-case-card-label {
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-case-muted);
    margin-bottom: 5px;
}

.rk-case-card.highlight .rk-case-card-label { color: #94a3b8; }

.rk-case-card-val {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-case-dark);
}

.rk-case-card.highlight .rk-case-card-val { color: #ffffff; font-size: 22px; }

/* Informacja podsumowująca i CTA */
.rk-case-content {
    padding: 0 50px 40px 50px;
    background: #f8fafc;
}

.rk-case-text-box {
    background: #ffffff;
    border: 1px solid var(--rk-case-border);
    border-radius: 16px;
    padding: 30px;
    margin-bottom: 20px;
}

.rk-case-text-box h3 {
    margin: 0 0 15px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-case-dark);
}

.rk-case-text-box p {
    margin: 0 0 15px 0;
    font-size: 14px;
    line-height: 1.7;
    color: var(--rk-case-text);
}

.rk-case-text-box p:last-child { margin: 0; }

.rk-case-link {
    color: var(--rk-case-brand);
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.rk-case-link:hover { color: #0369a1; }

@media (max-width: 768px) {
    .rk-case-header, .rk-case-interactive, .rk-case-content { padding: 30px 20px; }
    .rk-case-title { font-size: 24px; }
    .rk-case-grid { grid-template-columns: 1fr; gap: 30px; }
    .rk-case-visual { height: 180px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#case-study-rabka",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Praktyczne Case Study: Obliczenia strat ciepła dla domu 150 m² w Rabce-Zdroju",
    "description": "Zobacz, jak trudne warunki klimatyczne (Strefa V) w Rabce-Zdroju wpływają na kalkulator zapotrzebowania na ogrzewanie, dobór pompy ciepła i rozstaw rur u inwestora Pana Zbigniewa.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-rabka",
    "name": "Analiza OZC: Case Study 150 m² Rabka Zdrój",
    "description": "Dane z symulacji obciążenia cieplnego dla budynku o pow. 150 m2 zlokalizowanego w V strefie klimatycznej (-24°C). Porównanie izolacji WT2021 ze starym budownictwem.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator strat ciepła Rabka",
      "zapotrzebowanie na ogrzewanie 150m2",
      "dobór pompy ciepła strefa V",
      "rozstaw rur w ogrzewaniu podłogowym",
      "projektowe obciążenie cieplne OZC"
    ],
    "measurementTechnique": "Szacowanie heurystyczne dla V strefy klimatycznej (ΔT = 44K) pokazujące wpływ standardu termicznego na całkowitą moc instalacji hydraulicznej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Nowy dom WT2021: ok. 50 W/m2, Moc PC: 7.5 kW, Rozstaw rur: 15 cm.",
        "Dom po termo: ok. 80 W/m2, Moc PC: 12.0 kW, Rozstaw rur: 10 cm.",
        "Stary dom: ok. 140 W/m2, Moc 21.0 kW. Ogrzewanie podłogowe niewystarczające bez docieplenia."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-rabka",
    "name": "Symulator Case Study - Pan Zbigniew (Rabka-Zdrój)",
    "description": "Interaktywny moduł edukacyjny wizualizujący wpływ wyboru izolacji i okładziny na temperaturę zasilania i kosztorys wykonawczy.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-case-container" id="rk-case-app">
    
    <div class="rk-case-header">
        <div class="rk-case-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle></svg>
            Case Study: Pan Zbigniew (150 m²)
        </div>
        <h2 class="rk-case-title">Praktyczne Case Study: Obliczenia strat ciepła <span>dla domu w Rabce-Zdroju</span></h2>
        <p class="rk-case-intro">Pan Zbigniew z Rabki-Zdroju (V strefa klimatyczna, projektowa temperatura -24°C) planuje montaż instalacji podłogowej dla 150 m². Zobacz, jak jego decyzje dotyczące izolacji i wyboru posadzki na etapie budowy wpływają na wyniki w kalkulatorze.</p>
    </div>

    <div class="rk-case-interactive">
        <div class="rk-case-grid">
            
            <div class="rk-case-controls">
                
                <div class="rk-case-ctrl-box">
                    <h3 class="rk-case-ctrl-title">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-case-brand)" stroke-width="2.5"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path></svg>
                        Standard izolacji budynku
                    </h3>
                    <div class="rk-case-slider-wrap">
                        <input type="range" class="rk-case-range" id="rk-case-iso" min="1" max="3" step="1" value="3" oninput="rkUpdateCase()">
                        <div class="rk-case-labels">
                            <span style="color:var(--rk-case-danger)">Stary (Brak)</span>
                            <span style="color:var(--rk-case-accent)">Po Termo</span>
                            <span style="color:var(--rk-case-success)">WT 2021 (Nowy)</span>
                        </div>
                    </div>
                </div>

                <div class="rk-case-ctrl-box">
                    <h3 class="rk-case-ctrl-title">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-case-brand)" stroke-width="2.5"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect></svg>
                        Wybór okładziny posadzki
                    </h3>
                    <div class="rk-case-btn-group">
                        <div class="rk-case-opt-btn active" id="btn-case-tiles" onclick="rkSetCaseFloor('tiles')">Gres / Płytki</div>
                        <div class="rk-case-opt-btn" id="btn-case-panels" onclick="rkSetCaseFloor('panels')">Panele Laminowane</div>
                    </div>
                </div>

            </div>

            <div class="rk-case-results">
                
                <div class="rk-case-visual">
                    <svg class="rk-case-svg" viewBox="0 0 200 100">
                        <polygon points="0,100 40,30 80,100" fill="#1e293b"/>
                        <polygon points="60,100 120,20 180,100" fill="#334155"/>
                        <polygon points="140,100 180,50 220,100" fill="#1e293b"/>
                        <polygon points="40,30 25,55 55,55" fill="#f1f5f9"/>
                        <polygon points="120,20 95,50 145,50" fill="#e2e8f0"/>
                        
                        <rect x="75" y="60" width="50" height="40" fill="#ffffff" stroke="#cbd5e1" stroke-width="2"/>
                        <polygon points="70,60 100,40 130,60" fill="#ef4444" stroke="#dc2626" stroke-width="2"/>
                        <rect x="90" y="75" width="20" height="25" fill="#38bdf8" opacity="0.3" stroke="#0ea5e9" stroke-width="1"/>
                        
                        <rect x="20" y="20" width="10" height="40" rx="5" fill="#f8fafc" stroke="#cbd5e1" stroke-width="1"/>
                        <circle cx="25" cy="60" r="8" fill="#38bdf8"/>
                        <rect x="23" y="45" width="4" height="15" fill="#38bdf8"/>
                        <text x="38" y="64" fill="#f0f9ff" font-size="12" font-weight="bold">-24°C</text>
                    </svg>
                </div>

                <div class="rk-case-data-grid">
                    <div class="rk-case-card highlight">
                        <span class="rk-case-card-label">Zapotrzebowanie pokoju</span>
                        <span class="rk-case-card-val"><span id="val-case-wm2">50</span> <span style="font-size:14px">W/m²</span></span>
                    </div>
                    <div class="rk-case-card">
                        <span class="rk-case-card-label">Rozstaw rur PEX</span>
                        <span class="rk-case-card-val"><span id="val-case-spacing" style="color:var(--rk-case-brand)">co 15 cm</span></span>
                    </div>
                    <div class="rk-case-card">
                        <span class="rk-case-card-label">Moc Pompy Ciepła</span>
                        <span class="rk-case-card-val"><span id="val-case-kw">7.5</span> <span style="font-size:14px; color:var(--rk-case-muted)">kW</span></span>
                    </div>
                    <div class="rk-case-card">
                        <span class="rk-case-card-label">Temp. Zasilania (Tz)</span>
                        <span class="rk-case-card-val"><span id="val-case-tz" style="color:var(--rk-case-accent)">32°C</span></span>
                    </div>
                </div>

            </div>
        </div>
    </div>

    <div class="rk-case-content">
        
        <div class="rk-case-text-box">
            <h3>Wnioski z obliczeń strat ciepła dla lokalizacji górskiej</h3>
            <p>Rabka-Zdrój, z uwagi na przynależność do V strefy klimatycznej (projektowa temperatura -24°C), nakłada na inwestora znacznie surowsze wymogi fizyczne niż centralna Polska. Gdyby Pan Zbigniew użył taniego kalkulatora online ustawionego domyślnie na strefę III (-20°C), jego <strong>projektowe obciążenie cieplne (OZC)</strong> zostałoby niedoszacowane o ponad 10-15%. W praktyce oznaczałoby to wybór zbyt słabej pompy ciepła, która nie dałaby rady ogrzać domu 150 m² podczas siarczystych, styczniowych mrozów.</p>
        </div>

        <div class="rk-case-text-box" style="margin-bottom:0; border-color:var(--rk-case-brand);">
            <h3>Wpływ posadzki i rozstawu na portfel</h3>
            <p>Zwróć uwagę, co się dzieje, gdy Pan Zbigniew (przy bardzo dobrej izolacji WT2021) postanawia zmienić gres na panele laminowane. Ze względu na opór cieplny paneli, woda wychodząca z kotłowni musi być podgrzana o kilka stopni wyżej (Tz rośnie), aby przebić się przez warstwę izolatora. To wymusza gęstszy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-case-link">rozstaw rur w ogrzewaniu podłogowym</a> (z 15 cm robi się 10 cm), co podnosi koszty zakupu materiału hydraulicznego na całe 150 m².</p>
            <p>Jeżeli dom byłby stary, bez termomodernizacji, instalacja podłogowa w tym chłodnym regionie w ogóle by sobie nie poradziła – podłoga musiałaby zostać rozgrzana do niekomfortowych 35°C, a i tak potrzebne byłoby wsparcie przez <strong>kocioł gazowy</strong> lub dodatkowe grzejniki ścienne.</p>
        </div>

    </div>
</div>

<script>
let caseFloorType = 'tiles';

function rkSetCaseFloor(type) {
    caseFloorType = type;
    document.getElementById('btn-case-tiles').classList.remove('active');
    document.getElementById('btn-case-panels').classList.remove('active');
    document.getElementById('btn-case-' + type).classList.add('active');
    rkUpdateCase();
}

function rkUpdateCase() {
    const isoLevel = parseInt(document.getElementById('rk-case-iso').value);
    
    // Dane dla 150m2 w Rabce (-24st)
    let wm2, totalKw, spacing, baseTz;

    if(isoLevel === 1) {
        // Stary dom
        wm2 = 140;
        totalKw = 21.0;
        spacing = "Brak moliwości";
        baseTz = 55;
    } else if(isoLevel === 2) {
        // Po termo
        wm2 = 80;
        totalKw = 12.0;
        spacing = "co 10 cm";
        baseTz = 38;
    } else {
        // Nowy dom WT2021
        wm2 = 50;
        totalKw = 7.5;
        spacing = "co 15 cm";
        baseTz = 32;
    }

    // Korekta dla paneli
    if(caseFloorType === 'panels') {
        baseTz += 4;
        if(isoLevel === 3) spacing = "co 10 cm"; // panele wymuszają gęstszy rurę
    }

    // Zabezpieczenie wizualne przy braku możliwości
    if(isoLevel === 1) {
        document.getElementById('val-case-wm2').innerHTML = wm2 + " <span style='font-size:14px; color:#ef4444'>(Krytyczne)</span>";
        document.getElementById('val-case-spacing').innerText = "Wymagane grzejniki";
        document.getElementById('val-case-spacing').style.color = "#ef4444";
        document.getElementById('val-case-tz').innerText = ">50°C";
    } else {
        document.getElementById('val-case-wm2').innerText = wm2;
        document.getElementById('val-case-spacing').innerText = spacing;
        document.getElementById('val-case-spacing').style.color = "var(--rk-case-brand)";
        document.getElementById('val-case-tz').innerText = baseTz + "°C";
    }
    
    document.getElementById('val-case-kw').innerText = totalKw;
}

// Inicjalizacja
document.addEventListener('DOMContentLoaded', rkUpdateCase);
</script>



<style>
:root {
    --rk-hl-dark: #0f172a;
    --rk-hl-panel: #1e293b;
    --rk-hl-brand: #f97316; /* Energetyczny pomarańcz (Ciepło) */
    --rk-hl-brand-light: #ffedd5;
    --rk-hl-blue: #0ea5e9;  /* Chłodny niebieski (Zimno/Wentylacja) */
    --rk-hl-green: #10b981; /* Zielony (Optymalizacja/Sukces) */
    --rk-hl-bg: #ffffff;
    --rk-hl-border: #e2e8f0;
    --rk-hl-text: #334155;
    --rk-hl-muted: #64748b;
}

.rk-hl-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-hl-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(249, 115, 22, 0.15);
    border: 1px solid rgba(249, 115, 22, 0.3);
    overflow: hidden;
}

/* Sekcja Cytatu Eksperckiego - Zoptymalizowana */
.rk-hl-quote-section {
    background: linear-gradient(145deg, var(--rk-hl-dark) 0%, #020617 100%);
    padding: 50px;
    position: relative;
    color: #ffffff;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    border-bottom: 5px solid var(--rk-hl-brand);
    overflow: hidden;
}

.rk-hl-quote-section::before {
    content: '"';
    position: absolute;
    top: -20px;
    left: 40px;
    font-size: 180px;
    font-family: serif;
    color: rgba(249, 115, 22, 0.1);
    line-height: 1;
    z-index: 0;
}

.rk-hl-quote-text {
    font-size: 24px;
    font-weight: 900;
    line-height: 1.5;
    margin: 0 0 25px 0;
    position: relative;
    z-index: 1;
    max-width: 850px;
}

.rk-hl-quote-text span {
    color: var(--rk-hl-brand);
}

.rk-hl-author-bar {
    display: flex;
    align-items: center;
    gap: 15px;
    position: relative;
    z-index: 1;
    background: rgba(255,255,255,0.05);
    padding: 10px 25px;
    border-radius: 99px;
    border: 1px solid rgba(255,255,255,0.1);
}

.rk-hl-avatar {
    width: 50px;
    height: 50px;
    border-radius: 50%;
    border: 2px solid var(--rk-hl-brand);
    object-fit: cover;
}

.rk-hl-author-info h3 {
    margin: 0;
    font-size: 16px;
    font-weight: 800;
    color: #ffffff;
}

.rk-hl-author-info p {
    margin: 0;
    font-size: 12px;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 1px;
    font-weight: 700;
}

/* Interaktywny Moduł */
.rk-hl-interactive {
    padding: 40px;
    background: #f8fafc;
}

.rk-hl-interactive-title {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-hl-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

.rk-hl-grid {
    display: grid;
    grid-template-columns: 300px 1fr;
    gap: 30px;
    background: #ffffff;
    border: 1px solid var(--rk-hl-border);
    border-radius: 20px;
    padding: 15px;
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
}

/* Przyciski (Tabs) + Karta Długiego Ogona */
.rk-hl-tabs {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.rk-hl-tab-btn {
    background: #f8fafc;
    border: 1px solid var(--rk-hl-border);
    padding: 18px 20px;
    border-radius: 14px;
    text-align: left;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    gap: 15px;
    position: relative;
    overflow: hidden;
}

.rk-hl-tab-btn:hover {
    border-color: var(--rk-hl-brand);
    background: var(--rk-hl-brand-light);
}

.rk-hl-tab-btn.active {
    background: var(--rk-hl-brand);
    border-color: var(--rk-hl-brand);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(249, 115, 22, 0.4);
    transform: scale(1.02);
}

.rk-hl-tab-icon {
    width: 38px;
    height: 38px;
    background: #ffffff;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-hl-brand);
    flex-shrink: 0;
    transition: 0.3s;
    box-shadow: 0 2px 5px rgba(0,0,0,0.05);
}

.rk-hl-tab-btn.active .rk-hl-tab-icon {
    color: var(--rk-hl-brand);
}

.rk-hl-tab-text {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-hl-dark);
    transition: color 0.3s;
}

.rk-hl-tab-btn.active .rk-hl-tab-text {
    color: #ffffff;
}

/* Karta CTA (Długi Ogon - Wypełnienie Pustego Miejsca) */
.rk-hl-cta-card {
    background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
    border-radius: 14px;
    padding: 16px 20px;
    text-decoration: none;
    display: flex;
    flex-direction: column;
    justify-content: center;
    margin-top: 10px;
    position: relative;
    overflow: hidden;
    transition: transform 0.3s, box-shadow 0.3s;
    border: 1px solid #334155;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
}

.rk-hl-cta-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 25px rgba(15, 23, 42, 0.4);
    border-color: var(--rk-hl-brand);
}

.cta-badge {
    font-size: 10px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    margin-bottom: 5px;
    display: flex;
    align-items: center;
    gap: 5px;
}

.cta-badge::before {
    content: '';
    display: inline-block;
    width: 6px;
    height: 6px;
    background: var(--rk-hl-brand);
    border-radius: 50%;
}

.cta-title {
    font-size: 14px;
    color: #ffffff;
    font-weight: 700;
    line-height: 1.4;
    padding-right: 25px;
}

.cta-arrow {
    position: absolute;
    right: 20px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--rk-hl-brand);
    font-size: 18px;
    font-weight: bold;
    transition: right 0.3s;
}

.rk-hl-cta-card:hover .cta-arrow {
    right: 15px;
}

/* Panele z Treścią */
.rk-hl-panels-container {
    position: relative;
    border-radius: 16px;
    background: #f8fafc;
    border: 1px solid var(--rk-hl-border);
    overflow: hidden;
}

.rk-hl-panel {
    display: none;
    padding: 35px;
    animation: slideFadeIn 0.4s ease-out forwards;
}

.rk-hl-panel.active {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

@keyframes slideFadeIn {
    from { opacity: 0; transform: translateY(15px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-hl-panel h4 {
    margin: 0;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-hl-dark);
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-hl-panel p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-hl-text);
}

.rk-hl-link {
    color: var(--rk-hl-brand);
    font-weight: 800;
    text-decoration: none;
    border-bottom: 2px dashed rgba(249, 115, 22, 0.4);
    transition: 0.3s;
}

.rk-hl-link:hover {
    color: #c2410c;
    border-bottom-style: solid;
}

/* Kontenery SVG */
.rk-hl-svg-box {
    width: 100%;
    height: 180px;
    background: var(--rk-hl-dark);
    border-radius: 12px;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 30px rgba(0,0,0,0.6);
    border: 3px solid #334155;
    overflow: hidden;
}

.rk-svg-content {
    width: 100%;
    height: 100%;
}

/* SEKACJA AUTORSKA - PODPIS EKSPERTA (Przywrócona) */
.rk-hl-author-footer {
    background: #f1f5f9;
    padding: 30px 50px;
    display: flex;
    align-items: flex-start;
    gap: 25px;
    border-top: 1px solid var(--rk-hl-border);
}

.rk-hl-author-photo {
    width: 75px;
    height: 75px;
    border-radius: 50%;
    border: 3px solid var(--rk-hl-brand);
    box-shadow: 0 4px 15px rgba(249, 115, 22, 0.2);
    object-fit: cover;
    flex-shrink: 0;
}

.rk-hl-author-desc {
    flex-grow: 1;
}

.rk-hl-author-desc h4 {
    margin: 0 0 6px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-hl-dark);
}

.rk-hl-author-desc p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-hl-text);
    line-height: 1.6;
}

.rk-hl-social-links {
    display: flex;
    gap: 15px;
    margin-top: 12px;
}

.rk-hl-social-links a {
    color: var(--rk-hl-blue);
    font-size: 13px;
    font-weight: 800;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    transition: color 0.2s;
}

.rk-hl-social-links a:hover {
    color: #0284c7;
    text-decoration: underline;
}

/* Animacje SVG */

/* Tab 1: Przenikanie */
.anim-heat-escape { opacity: 0; }
.rk-hl-panel.active .anim-heat-escape { animation: heatEscape 2s ease-out infinite; }
.rk-hl-panel.active .d-1 { animation-delay: 0s; }
.rk-hl-panel.active .d-2 { animation-delay: 0.5s; }
.rk-hl-panel.active .d-3 { animation-delay: 1s; }

@keyframes heatEscape {
    0% { transform: translate(0, 0); opacity: 1; stroke: #f97316; }
    100% { transform: translate(var(--tx), var(--ty)); opacity: 0; stroke: #ef4444; }
}

/* Tab 2: Wentylacja */
.anim-fan-spin { transform-origin: center; }
.rk-hl-panel.active .anim-fan-spin { animation: fanSpin 3s linear infinite; }
@keyframes fanSpin { to { transform: rotate(360deg); } }

.anim-air-flow { stroke-dasharray: 10 10; animation: dashFlow 1s linear infinite; }
@keyframes dashFlow { to { stroke-dashoffset: -20; } }

/* Tab 3: Mostki termiczne */
.anim-thermal-bridge { fill: transparent; transition: fill 0.5s; }
.rk-hl-panel.active .anim-thermal-bridge { animation: pulseRed 1.5s infinite alternate; }
@keyframes pulseRed {
    0% { fill: rgba(239, 68, 68, 0.2); stroke: rgba(239, 68, 68, 0.5); }
    100% { fill: rgba(239, 68, 68, 0.8); stroke: rgba(239, 68, 68, 1); box-shadow: 0 0 10px red; }
}

/* Tab 4: Wynik */
.anim-power-bar { transform: scaleY(0); transform-origin: bottom; transition: transform 1.2s cubic-bezier(0.34, 1.56, 0.64, 1) 0.3s; }
.rk-hl-panel.active .anim-power-bar { transform: scaleY(1); }

@media (max-width: 768px) {
    .rk-hl-quote-section { padding: 40px 20px; }
    .rk-hl-quote-text { font-size: 20px; }
    .rk-hl-interactive { padding: 30px 20px; }
    .rk-hl-grid { grid-template-columns: 1fr; gap: 20px; padding: 10px; }
    .rk-hl-tabs { flex-direction: row; flex-wrap: wrap; }
    .rk-hl-tab-btn { flex: 1 1 calc(50% - 5px); padding: 12px; flex-direction: column; text-align: center; gap: 8px; }
    .rk-hl-cta-card { flex: 1 1 100%; margin-top: 5px; }
    .rk-hl-tab-text { font-size: 13px; }
    .rk-hl-panel { padding: 25px 20px; }
    .rk-hl-svg-box { height: 150px; }
    
    /* Responsive dla stopki z autorem */
    .rk-hl-author-footer { flex-direction: column; text-align: center; padding: 30px 20px; align-items: center; }
    .rk-hl-social-links { justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-quote-summary",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Eksperckie Podsumowanie - Składowe Bilansu Cieplnego Budynku",
    "description": "Brak rzetelnych obliczeń strat ciepła to najdroższy błąd inwestora. Poznaj 4 główne składowe zapotrzebowania energetycznego warunkujące dobór pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "Inżynier HVAC & Audytor OZE",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-heat-loss",
    "name": "Parametry Bilansu Cieplnego Budynku (PN-EN 12831)",
    "description": "Analiza składowych strat ciepła: przenikanie przez przegrody (U), straty wentylacyjne, wpływ mostków cieplnych oraz optymalizacja mocy grzewczej podłogówki.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "straty ciepła przez przenikanie",
      "straty wentylacyjne z rekuperacją",
      "obliczenia mostków termicznych",
      "zapotrzebowanie mocy pompy ciepła",
      "wylewka i panele a moc podłogówki"
    ],
    "measurementTechnique": "Algorytm zgodny z normą PN-EN 12831 wyliczający sumaryczne obciążenie cieplne na podstawie izolacyjności przegród, krotności wymiany powietrza oraz oporu cieplnego posadzki.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przenikanie (Qtr): Główna ucieczka energii przez ściany i okna. Decyduje o nim współczynnik U.",
        "Wentylacja (Qv): Straty powietrzne. Wentylacja grawitacyjna to nawet 40% strat, rekuperacja obniża je diametralnie.",
        "Mostki cieplne: Nieszczelności izolacji, standardowo dolicza się 10-15% nawiązki do zapotrzebowania bazowego.",
        "Moc końcowa: Wyznacza precyzyjny dobór mocy nominalnej pompy ciepła, zapobiegając taktowaniu."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-heat-loss-guide",
    "name": "Interaktywny Przewodnik: Składowe Strat Ciepła",
    "description": "Narzędzie nawigacyjne rozbijające trudne wzory matematyczne OZC na 4 zrozumiałe czynniki decyzyjne z wykorzystaniem dynamicznych schematów SVG oraz linkowań optymalizacyjnych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-hl-container" id="rk-hl-app">
    
    <div class="rk-hl-quote-section">
        <h2 class="rk-hl-quote-text">
            Brak rzetelnych obliczeń OZC to <span>najdroższy błąd</span> inwestora. Zgadywanie rozstawu rur, bagatelizowanie izolacji czy oporu paneli podłogowych zmusza pompę ciepła do pracy na nieefektywnych parametrach. <span>Matematyka budynku nigdy nie wybacza szacowania „na oko”.</span>
        </h2>
        <div class="rk-hl-author-bar">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-hl-avatar" loading="lazy">
            <div class="rk-hl-author-info">
                <h3>Robert Kucharski</h3>
                <p>Inżynier HVAC & Audytor OZE</p>
            </div>
        </div>
    </div>

    <div class="rk-hl-interactive">
        <h3 class="rk-hl-interactive-title">Anatomia Bilansu Cieplnego (4 Składowe)</h3>
        
        <div class="rk-hl-grid">
            
            <div class="rk-hl-tabs">
                
                <button class="rk-hl-tab-btn active" data-tab="hl-1">
                    <div class="rk-hl-tab-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
                    </div>
                    <span class="rk-hl-tab-text">1. Przenikanie (Ściany/Okna)</span>
                </button>

                <button class="rk-hl-tab-btn" data-tab="hl-2">
                    <div class="rk-hl-tab-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M9.59 4.59A2 2 0 1 1 11 8H2m10.59 11.41A2 2 0 1 0 14 16H2m15.73-8.27A2.5 2.5 0 1 1 19.5 12H2"></path></svg>
                    </div>
                    <span class="rk-hl-tab-text">2. Straty Wentylacyjne</span>
                </button>

                <button class="rk-hl-tab-btn" data-tab="hl-3">
                    <div class="rk-hl-tab-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><circle cx="12" cy="13" r="2"></circle><line x1="12" y1="15" x2="12" y2="18"></line></svg>
                    </div>
                    <span class="rk-hl-tab-text">3. Mostki Cieplne (+10%)</span>
                </button>

                <button class="rk-hl-tab-btn" data-tab="hl-4">
                    <div class="rk-hl-tab-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                    </div>
                    <span class="rk-hl-tab-text">4. Wynik i Dobór Mocy</span>
                </button>

                <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/" class="rk-hl-cta-card">
                    <div class="cta-badge">Analiza OZC a okładzina</div>
                    <div class="cta-title">Panele czy Płytki? Opór cieplny a efektywność podłogówki</div>
                    <div class="cta-arrow">➔</div>
                </a>

            </div>

            <div class="rk-hl-panels-container">
                
                <div class="rk-hl-panel active" id="hl-1">
                    <h4>
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--rk-hl-brand)" stroke-width="2.5"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                        Straty przez przenikanie (U)
                    </h4>
                    <p>Wartość bazowa wyliczana ze wzoru (A × U × ΔT). Kluczowe znaczenie ma jakość izolacji (<a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" class="rk-hl-link">zgodnie z PN-EN 12831</a>) oraz prawidłowe przyjęcie strefy klimatycznej. Błąd w grubości styropianu drastycznie podnosi ucieczkę energii w zimowe noce.</p>
                    <div class="rk-hl-svg-box">
                        <svg class="rk-svg-content" viewBox="0 0 200 100">
                            <path d="M80 70 V 40 L100 25 L120 40 V 70 Z" fill="none" stroke="#64748b" stroke-width="3" stroke-linejoin="round"/>
                            <rect x="92" y="55" width="16" height="15" fill="none" stroke="#64748b" stroke-width="2"/>
                            <g style="--tx: -30px; --ty: -10px;" class="anim-heat-escape d-1">
                                <path d="M70 45 L50 40" stroke-width="3" stroke-linecap="round"/>
                                <polyline points="55 35 50 40 55 45" stroke-width="3" fill="none" stroke-linejoin="round"/>
                            </g>
                            <g style="--tx: 30px; --ty: -10px;" class="anim-heat-escape d-2">
                                <path d="M130 45 L150 40" stroke-width="3" stroke-linecap="round"/>
                                <polyline points="145 35 150 40 145 45" stroke-width="3" fill="none" stroke-linejoin="round"/>
                            </g>
                            <g style="--tx: 0px; --ty: -30px;" class="anim-heat-escape d-3">
                                <path d="M100 20 L100 0" stroke-width="3" stroke-linecap="round"/>
                                <polyline points="95 5 100 0 105 5" stroke-width="3" fill="none" stroke-linejoin="round"/>
                            </g>
                        </svg>
                    </div>
                </div>

                <div class="rk-hl-panel" id="hl-2">
                    <h4>
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--rk-hl-blue)" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                        Grawitacja vs Rekuperacja
                    </h4>
                    <p>W tradycyjnym domu wentylacja grawitacyjna wyrzuca w powietrze aż 40% wyprodukowanego ciepła! Zastosowanie odzysku ciepła (<a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/" class="rk-hl-link">rekuperacji</a>) redukuje to zapotrzebowanie drastycznie, pozwalając na montaż mniejszej pompy obiegowej.</p>
                    <div class="rk-hl-svg-box">
                        <svg class="rk-svg-content" viewBox="0 0 200 100">
                            <rect x="75" y="30" width="50" height="40" rx="4" fill="none" stroke="#94a3b8" stroke-width="3"/>
                            <line x1="75" y1="50" x2="125" y2="50" stroke="#94a3b8" stroke-width="2" stroke-dasharray="4 4"/>
                            <line x1="100" y1="30" x2="100" y2="70" stroke="#94a3b8" stroke-width="2" stroke-dasharray="4 4"/>
                            <path class="anim-air-flow" d="M 30 40 L 70 40" stroke="#0ea5e9" stroke-width="4" stroke-linecap="round"/>
                            <polyline points="65 35 70 40 65 45" fill="none" stroke="#0ea5e9" stroke-width="4" stroke-linejoin="round"/>
                            <path class="anim-air-flow" d="M 125 40 L 165 40" stroke="#f97316" stroke-width="4" stroke-linecap="round"/>
                            <polyline points="160 35 165 40 160 45" fill="none" stroke="#f97316" stroke-width="4" stroke-linejoin="round"/>
                            <g class="anim-fan-spin" style="transform-origin: 100px 50px;">
                                <circle cx="100" cy="50" r="12" fill="none" stroke="#64748b" stroke-width="2"/>
                                <line x1="100" y1="38" x2="100" y2="62" stroke="#64748b" stroke-width="2"/>
                                <line x1="88" y1="50" x2="112" y2="50" stroke="#64748b" stroke-width="2"/>
                            </g>
                        </svg>
                    </div>
                </div>

                <div class="rk-hl-panel" id="hl-3">
                    <h4>
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#ef4444" stroke-width="2.5"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
                        Pułapka Mostków Termicznych
                    </h4>
                    <p>Żaden dom nie jest idealnym termosem. Brak izolacji na wieńcach, niedokładne ocieplenie podłogi na gruncie i nadproża okienne wymagają doliczenia od 10% do 15% narzutu w obliczeniach inżynierskich. Ich ignorowanie kończy się niedogrzaniem pokoi.</p>
                    <div class="rk-hl-svg-box">
                        <svg class="rk-svg-content" viewBox="0 0 200 100">
                            <path d="M 50 80 L 150 80 L 150 20" fill="none" stroke="#64748b" stroke-width="15" stroke-linecap="square"/>
                            <path d="M 50 65 L 135 65 L 135 20" fill="none" stroke="#334155" stroke-width="15" stroke-linecap="square"/>
                            <circle class="anim-thermal-bridge" cx="142" cy="72" r="15" stroke-width="3"/>
                            <path d="M 120 90 L 140 75" fill="none" stroke="#ef4444" stroke-width="2" stroke-dasharray="3 3"/>
                        </svg>
                    </div>
                </div>

                <div class="rk-hl-panel" id="hl-4">
                    <h4>
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--rk-hl-green)" stroke-width="2.5"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                        Wynik: Niska Temperatura Zasilania
                    </h4>
                    <p>Zsumowanie wszystkich wartości daje ostateczny wskaźnik mocy (np. 6,5 kW). Prawidłowy bilans budynku jest <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/" class="rk-hl-link">fundamentem komfortu termicznego</a> i pozwala obniżyć <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/" class="rk-hl-link">temperaturę zasilania na kotłowni do optymalnych 35°C</a>.</p>
                    <div class="rk-hl-svg-box">
                        <svg class="rk-svg-content" viewBox="0 0 200 100">
                            <line x1="40" y1="80" x2="160" y2="80" stroke="#94a3b8" stroke-width="2"/>
                            <line x1="40" y1="80" x2="40" y2="20" stroke="#94a3b8" stroke-width="2"/>
                            <line x1="35" y1="40" x2="160" y2="40" stroke="#10b981" stroke-width="2" stroke-dasharray="5 5"/>
                            <text x="165" y="44" fill="#10b981" font-size="12" font-weight="bold">MAX 35°C</text>
                            <rect class="anim-power-bar" x="60" y="50" width="20" height="30" fill="#3b82f6" rx="2" style="transition-delay: 0.1s;"/>
                            <rect class="anim-power-bar" x="90" y="45" width="20" height="35" fill="#f59e0b" rx="2" style="transition-delay: 0.3s;"/>
                            <rect class="anim-power-bar" x="120" y="40" width="20" height="40" fill="#10b981" rx="2" style="transition-delay: 0.5s;"/>
                        </svg>
                    </div>
                </div>

            </div>
        </div>
    </div>
    
    <div class="rk-hl-author-footer">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - CEO i Projektant HVAC" class="rk-hl-author-photo" loading="lazy">
        <div class="rk-hl-author-desc">
            <h4>Robert Kucharski</h4>
            <p>CEO i twórca portalu Projekt-Ogrzewania.pl. Główny projektant i audytor instalacji HVAC. Wszystkie publikowane tu treści opieram na wieloletnim, praktycznym doświadczeniu zdobytym bezpośrednio na placach budowy. Moją misją jest dostarczanie twardej, inżynierskiej wiedzy, która na co dzień kształtuje decyzje tysięcy inwestorów i wykonawców w Polsce.</p>
            <div class="rk-hl-social-links">
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
                    LinkedIn
                </a>
                <a href="https://www.facebook.com/robert.kucharski.budowa.bez.sciemy" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.469h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.469h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>
                    Facebook
                </a>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tabs = document.querySelectorAll('.rk-hl-tab-btn');
    const panels = document.querySelectorAll('.rk-hl-panel');

    tabs.forEach(tab => {
        tab.addEventListener('click', () => {
            // Czyszczenie klas aktywnych
            tabs.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Ustawienie aktualnego elementu
            tab.classList.add('active');
            const targetId = tab.getAttribute('data-tab');
            const targetPanel = document.getElementById(targetId);
            
            if(targetPanel) {
                // Restart animacji CSS dla wykresów SVG
                void targetPanel.offsetWidth;
                targetPanel.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-qa-dark: #0f172a;
    --rk-qa-card: #ffffff;
    --rk-qa-emerald: #059669; /* Ekspercki Szmaragd */
    --rk-qa-emerald-light: #d1fae5;
    --rk-qa-accent: #0284c7; /* Cyjan dla przełamania */
    --rk-qa-bg: #f8fafc;
    --rk-qa-border: #cbd5e1;
    --rk-qa-text: #334155;
}

.rk-qa-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-qa-bg);
    border-radius: 20px;
    box-shadow: 0 20px 40px -10px rgba(5, 150, 105, 0.1);
    border: 1px solid rgba(5, 150, 105, 0.2);
    overflow: hidden;
}

/* Nagłówek */
.rk-qa-header {
    background: linear-gradient(135deg, var(--rk-qa-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 5px solid var(--rk-qa-emerald);
}

.rk-qa-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(5, 150, 105, 0.2);
    color: #6ee7b7;
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(110, 231, 183, 0.2);
}

.rk-qa-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0;
}

.rk-qa-title span { color: #34d399; }

/* Akordeon */
.rk-qa-interactive {
    padding: 40px 50px;
}

.rk-qa-list {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.rk-qa-item {
    background: var(--rk-qa-card);
    border: 1px solid var(--rk-qa-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.3s ease;
}

.rk-qa-item.active {
    border-color: var(--rk-qa-emerald);
    box-shadow: 0 10px 20px -5px rgba(5, 150, 105, 0.1);
}

.rk-qa-question {
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    padding: 22px 30px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-qa-dark);
    transition: background 0.3s;
}

.rk-qa-question:hover {
    background: #f1f5f9;
}

.rk-qa-item.active .rk-qa-question {
    background: var(--rk-qa-emerald-light);
    color: #064e3b;
}

.rk-qa-icon {
    flex-shrink: 0;
    width: 36px;
    height: 36px;
    border-radius: 10px;
    background: #e2e8f0;
    color: var(--rk-qa-dark);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background 0.3s, color 0.3s;
}

.rk-qa-item.active .rk-qa-icon {
    background: var(--rk-qa-emerald);
    color: #ffffff;
    transform: rotate(135deg);
}

/* Kontener Odpowiedzi */
.rk-qa-answer-wrapper {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-qa-item.active .rk-qa-answer-wrapper {
    grid-template-rows: 1fr;
}

.rk-qa-answer-inner {
    overflow: hidden;
}

.rk-qa-content {
    padding: 30px;
    border-top: 1px solid var(--rk-qa-border);
    display: grid;
    grid-template-columns: 1fr 220px;
    gap: 35px;
    align-items: center;
}

.rk-qa-text {
    font-size: 15px;
    line-height: 1.8;
    color: var(--rk-qa-text);
}

.rk-qa-text strong {
    font-weight: 800;
    color: var(--rk-qa-dark);
}

.rk-link {
    color: var(--rk-qa-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid transparent;
    transition: all 0.3s;
}

.rk-link:hover {
    border-bottom-color: var(--rk-qa-accent);
}

/* Wizualizacje SVG */
.rk-qa-visual {
    background: #f8fafc;
    border-radius: 16px;
    padding: 15px;
    height: 150px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px dashed var(--rk-qa-border);
    position: relative;
}

.rk-qa-item.active .rk-qa-visual {
    border-color: var(--rk-qa-emerald);
    background: #ffffff;
}

.rk-svg-box {
    width: 100%;
    height: 100%;
}

/* Animacje SVG */
/* 1. OZC vs Kalkulator */
.anim-scan { stroke-dasharray: 150; stroke-dashoffset: 150; transition: stroke-dashoffset 1s ease-in-out; }
.rk-qa-item.active .anim-scan { stroke-dashoffset: 0; stroke: var(--rk-qa-emerald); }

/* 2. PEX Length */
.anim-grid-line { stroke-dasharray: 50; stroke-dashoffset: 50; }
.rk-qa-item.active .anim-grid-line { animation: drawGrid 1.5s forwards; stroke: var(--rk-qa-accent); }
@keyframes drawGrid { to { stroke-dashoffset: 0; } }

/* 3. Thermometer */
.anim-mercury { transform: scaleY(0.4); transform-origin: bottom; transition: transform 1s cubic-bezier(0.34, 1.56, 0.64, 1); fill: #ef4444; }
.rk-qa-item.active .anim-mercury { transform: scaleY(0.7); }

/* 4. Density */
.anim-dense-pipe { transition: transform 0.5s ease-out; }
.rk-qa-item.active .pipe-l { transform: translateX(5px); }
.rk-qa-item.active .pipe-r { transform: translateX(-5px); stroke: #ef4444; }

/* 5. Screed */
.anim-screed-layer { opacity: 0.3; transition: opacity 1s, fill 1s; }
.rk-qa-item.active .anim-screed-layer { opacity: 1; fill: #d1fae5; }

@media (max-width: 768px) {
    .rk-qa-header, .rk-qa-interactive { padding: 25px 20px; }
    .rk-qa-title { font-size: 24px; }
    .rk-qa-content { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-qa-visual { height: 130px; max-width: 250px; margin: 0 auto; width: 100%; }
    .rk-qa-question { font-size: 15px; padding: 18px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "FAQ – Eksperckie odpowiedzi o straty ciepła i parametry podłogówki",
    "description": "Najczęstsze pytania inwestorów dotyczące OZC, rozstawu rur PEX, temperatur zasilania oraz wpływu wylewki na działanie kalkulatora strat ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-faq",
    "name": "Zestawienie normatywne: Zapotrzebowanie cieplne a parametry podłogówki",
    "description": "Techniczne dane referencyjne wiążące zapotrzebowanie budynku na moc (W/m2) z ilością rury, temperaturą maksymalną zasilania oraz wymaganiami OZC.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator strat ciepła online",
      "zapotrzebowanie W/m2",
      "zużycie rury PEX na m2",
      "maksymalna temperatura podłogówki",
      "wylewka anhydrytowa a moc"
    ],
    "measurementTechnique": "Obliczenia analityczne i heurystyczne oparte na wytycznych normy PN-EN 12831 oraz PN-EN 1264, porównujące wyniki z kalkulatorów internetowych z profesjonalnym OZC.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rozstaw 15 cm wymaga 6,7 mb rury PEX na 1 m2.",
        "Rozstaw 10 cm wymaga 10 mb rury PEX na 1 m2.",
        "Maksymalna temperatura zasilania podłogówki wg normy to 50 stopni Celsjusza.",
        "Graniczne zapotrzebowanie cieplne dla samej podłogówki to ok. 100 W/m2."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-faq",
    "name": "Interaktywne FAQ - Parametry Projektowe Ogrzewania",
    "description": "Interaktywny moduł edukacyjny prezentujący zagadnienia hydrauliczne i cieplne przy użyciu animacji wektorowych i technicznych zestawień danych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy darmowy kalkulator strat ciepła online może zastąpić oficjalne OZC?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, darmowy kalkulator służy wyłącznie do wstępnej weryfikacji koncepcji i oszacowania kosztów. Oficjalne Obliczeniowe Zapotrzebowanie na Ciepło (OZC) wykonane przez inżyniera jest dokumentem prawnym wymaganym przy wnioskach o dotacje z programu „Czyste Powietrze” oraz przy precyzyjnym doborze pompy ciepła."
        }
      },
      {
        "@type": "Question",
        "name": "Ile rury PEX potrzeba na 1 m² ogrzewania podłogowego?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Ilość rury zależy ściśle od jej rozstawu wynikającego z obliczeń strat ciepła. Przy rozstawie co 15 cm zużycie wynosi średnio 6,7 metra bieżącego na m², natomiast przy zagęszczeniu co 10 cm (np. w łazienkach lub strefach brzegowych) wzrasta do 10 metrów bieżących na m²."
        }
      },
      {
        "@type": "Question",
        "name": "Jaka jest maksymalna temperatura zasilania dla ogrzewania podłogowego?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Maksymalna dopuszczalna temperatura zasilania wodą grzewczą wynosi 50°C według normy PN-EN 1264. W optymalnie zaprojektowanych systemach dla domów energooszczędnych temperatura ta nie przekracza jednak 35°C w najzimniejszy dzień roku."
        }
      },
      {
        "@type": "Question",
        "name": "Czy przy wysokim zapotrzebowaniu na ciepło (>100 W/m²) można w nieskończoność zagęszczać rury?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie. Zagęszczanie rur ma swoje fizyczne i hydrauliczne granice. Zejście poniżej rozstawu 10 cm na całej powierzchni generuje ogromne opory, których nie pokona standardowa pompa obiegowa. Przy stratach rzędu 100 W/m² konieczna jest termomodernizacja lub wsparcie instalacji tradycyjnymi grzejnikami ściennymi."
        }
      },
      {
        "@type": "Question",
        "name": "Jak rodzaj wylewki wpływa na skuteczność wyników z kalkulatora?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Wybór wylewki drastycznie zmienia parametry pracy. Wylewka anhydrytowa ma niemal dwukrotnie wyższy współczynnik przewodzenia ciepła niż beton z miksokreta. Pozwala to na znacznie szybsze przekazywanie energii do pomieszczenia i utrzymanie niższej, bardziej oszczędnej temperatury zasilania na źródle ciepła."
        }
      }
    ]
  }
]
</script>

<div class="rk-qa-container" id="rk-qa-app">
    <div class="rk-qa-header">
        <div class="rk-qa-badge">
            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            Inżynierskie Q&A
        </div>
        <h2 class="rk-qa-title">FAQ – <span>Najczęściej zadawane pytania</span></h2>
    </div>

    <div class="rk-qa-interactive">
        <div class="rk-qa-list">
            
            <div class="rk-qa-item">
                <button class="rk-qa-question">
                    <span>1. Czy darmowy kalkulator strat ciepła online może zastąpić oficjalne OZC?</span>
                    <div class="rk-qa-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg></div>
                </button>
                <div class="rk-qa-answer-wrapper">
                    <div class="rk-qa-answer-inner">
                        <div class="rk-qa-content">
                            <div class="rk-qa-text">
                                Nie, darmowy kalkulator służy wyłącznie do <strong>wstępnej weryfikacji koncepcji</strong> i oszacowania kosztów. Oficjalne <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-link">Obliczeniowe Zapotrzebowanie na Ciepło (OZC)</a> wykonane przez wykwalifikowanego inżyniera jest szczegółowym dokumentem prawnym. Jest on bezwzględnie wymagany przy wnioskach o dotacje z programu „Czyste Powietrze” oraz stanowi jedyną bezpieczną podstawę przy precyzyjnym doborze mocy pompy ciepła.
                            </div>
                            <div class="rk-qa-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="20" y="10" width="60" height="50" rx="4" fill="none" stroke="#94a3b8" stroke-width="3"/>
                                    <path d="M30 25 h30 M30 35 h40 M30 45 h20" stroke="#cbd5e1" stroke-width="3" stroke-linecap="round"/>
                                    <path class="anim-scan" d="M10 35 h80" stroke-width="4" stroke-linecap="round"/>
                                    <circle cx="70" cy="45" r="8" fill="#10b981"/>
                                    <path d="M66 45 l3 3 l5 -5" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-qa-item">
                <button class="rk-qa-question">
                    <span>2. Ile rury PEX potrzeba na 1 m² ogrzewania podłogowego?</span>
                    <div class="rk-qa-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg></div>
                </button>
                <div class="rk-qa-answer-wrapper">
                    <div class="rk-qa-answer-inner">
                        <div class="rk-qa-content">
                            <div class="rk-qa-text">
                                Ilość rury zależy ściśle od jej rozstawu wynikającego z obliczeń strat ciepła. Przy najpopularniejszym rozstawie <strong>co 15 cm</strong> zużycie wynosi średnio <strong>6,7 metra bieżącego na m²</strong>. Z kolei przy zagęszczeniu <strong>co 10 cm</strong> (stosowanym np. w łazienkach, strefach brzegowych lub pod pompy ciepła) wzrasta do <strong>10 mb na m²</strong>. W precyzyjnym wyliczeniu materiału na cały dom pomoże Ci dedykowany <a href="https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/" class="rk-link">kalkulator długości rur</a>.
                            </div>
                            <div class="rk-qa-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <path class="anim-grid-line" d="M20 20 h60 M20 35 h60 M20 50 h60" fill="none" stroke-width="3" stroke-linecap="round" style="animation-delay: 0.1s;"/>
                                    <path class="anim-grid-line" d="M30 10 v50 M50 10 v50 M70 10 v50" fill="none" stroke-width="3" stroke-linecap="round" style="animation-delay: 0.4s;"/>
                                    <circle cx="50" cy="35" r="15" fill="none" stroke="var(--rk-qa-emerald)" stroke-width="4" stroke-dasharray="10 5"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-qa-item">
                <button class="rk-qa-question">
                    <span>3. Jaka jest maksymalna temperatura zasilania dla ogrzewania podłogowego?</span>
                    <div class="rk-qa-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg></div>
                </button>
                <div class="rk-qa-answer-wrapper">
                    <div class="rk-qa-answer-inner">
                        <div class="rk-qa-content">
                            <div class="rk-qa-text">
                                Maksymalna, bezpieczna dla jastrychu i instalacji temperatura zasilania wodą grzewczą wynosi <strong>50°C</strong> – wartość tę ściśle reguluje norma <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/" class="rk-link">PN-EN 1264</a>. Warto jednak pamiętać, że w nowym budownictwie o dobrym standardzie izolacji, optymalnie zaprojektowany system rzadko przekracza <strong>32–35°C</strong> w najzimniejsze dni w roku, co gwarantuje najwyższy komfort i energooszczędność.
                            </div>
                            <div class="rk-qa-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="40" y="10" width="20" height="40" rx="10" fill="none" stroke="#94a3b8" stroke-width="3"/>
                                    <circle cx="50" cy="50" r="12" fill="none" stroke="#94a3b8" stroke-width="3"/>
                                    <rect class="anim-mercury" x="44" y="20" width="12" height="30" rx="6"/>
                                    <circle cx="50" cy="50" r="8" fill="#ef4444"/>
                                    <line x1="65" y1="20" x2="75" y2="20" stroke="#ef4444" stroke-width="2"/>
                                    <text x="80" y="24" font-size="12" fill="#ef4444" font-weight="bold">50°</text>
                                    <line x1="65" y1="35" x2="70" y2="35" stroke="#10b981" stroke-width="2"/>
                                    <text x="75" y="39" font-size="12" fill="#10b981" font-weight="bold">35°</text>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-qa-item">
                <button class="rk-qa-question">
                    <span>4. Czy przy wysokim zapotrzebowaniu na ciepło (>100 W/m²) można w nieskończoność zagęszczać rury?</span>
                    <div class="rk-qa-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg></div>
                </button>
                <div class="rk-qa-answer-wrapper">
                    <div class="rk-qa-answer-inner">
                        <div class="rk-qa-content">
                            <div class="rk-qa-text">
                                Zdecydowanie <strong>nie</strong>. <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-link">Rozstaw rur w ogrzewaniu podłogowym</a> ma swoje fizyczne i hydrauliczne ograniczenia. Zejście poniżej rozstawu 10 cm na dużej powierzchni generuje tak potężne opory tłoczenia wody, z którymi nie poradzi sobie standardowa pompa obiegowa, a ponadto powierzchnia posadzki przekroczy dopuszczalne 29°C. Jeśli zapotrzebowanie budynku przebija 100 W/m², system płaszczyznowy musi być wspomagany grzejnikami lub dom wymaga bezwzględnej termomodernizacji.
                            </div>
                            <div class="rk-qa-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <circle class="pipe-l" cx="30" cy="35" r="10" fill="none" stroke="#64748b" stroke-width="4"/>
                                    <circle class="pipe-r" cx="70" cy="35" r="10" fill="none" stroke="#64748b" stroke-width="4"/>
                                    <path d="M 45 35 l 10 0 M 45 30 l 5 5 l -5 5" fill="none" stroke="#cbd5e1" stroke-width="2" stroke-linecap="round"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-qa-item">
                <button class="rk-qa-question">
                    <span>5. Jak rodzaj wylewki wpływa na skuteczność wyników z kalkulatora?</span>
                    <div class="rk-qa-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg></div>
                </button>
                <div class="rk-qa-answer-wrapper">
                    <div class="rk-qa-answer-inner">
                        <div class="rk-qa-content">
                            <div class="rk-qa-text">
                                Wybór odpowiedniego jastrychu drastycznie zmienia parametry pracy. <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/" class="rk-link">Wylewka anhydrytowa</a> wykazuje niemal dwukrotnie wyższy współczynnik przewodzenia ciepła w porównaniu do standardowego betonu z miksokreta. Dzięki płynnej konsystencji idealnie i szczelnie otula rury grzewcze. Przekłada się to na błyskawiczne oddawanie ciepła do pomieszczenia i możliwość pracy pompy ciepła na niższym, oszczędniejszym parametrze temperaturowym.
                            </div>
                            <div class="rk-qa-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="15" y="15" width="70" height="40" rx="4" fill="none" stroke="#94a3b8" stroke-width="3"/>
                                    <rect class="anim-screed-layer" x="17" y="30" width="66" height="23" rx="2" fill="#cbd5e1"/>
                                    <circle cx="35" cy="40" r="5" fill="#ef4444"/>
                                    <circle cx="50" cy="40" r="5" fill="#ef4444"/>
                                    <circle cx="65" cy="40" r="5" fill="#ef4444"/>
                                    <path d="M20 30 Q35 25 50 30 T80 30" fill="none" stroke="var(--rk-qa-emerald)" stroke-width="2"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const faqItems = document.querySelectorAll('.rk-qa-item');

    faqItems.forEach(item => {
        const btn = item.querySelector('.rk-qa-question');
        btn.addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            
            // Zwijanie wszystkich
            faqItems.forEach(i => i.classList.remove('active'));
            
            // Rozwijanie klikniętego (jeśli nie był aktywny)
            if (!isActive) {
                item.classList.add('active');
            }
        });
    });
    
    // Otwarcie pierwszego elementu na start
    if(faqItems.length > 0) {
        faqItems[0].classList.add('active');
    }
});
</script>



<style>
:root {
    --rk-fin-dark: #0f172a;
    --rk-fin-blue: #0ea5e9;
    --rk-fin-light-blue: #e0f2fe;
    --rk-fin-green: #10b981;
    --rk-fin-green-light: #dcfce7;
    --rk-fin-red: #ef4444;
    --rk-fin-red-light: #fee2e2;
    --rk-fin-orange: #f59e0b;
    --rk-fin-orange-light: #fef3c7;
    --rk-fin-gray: #64748b;
    --rk-fin-border: #cbd5e1;
    --rk-fin-bg: #ffffff;
}

.rk-fin-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-fin-bg);
    border-radius: 20px;
    box-shadow: 0 20px 40px -10px rgba(14, 165, 233, 0.1);
    border: 1px solid var(--rk-fin-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-fin-header {
    padding: 40px 40px 30px;
    background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
    border-bottom: 1px solid var(--rk-fin-border);
}

.rk-fin-header h2 {
    margin: 0 0 15px 0;
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-fin-dark);
    letter-spacing: -0.5px;
}

.rk-fin-header p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-fin-gray);
    margin: 0;
}

.rk-fin-highlight {
    font-weight: 800;
    color: var(--rk-fin-blue);
}

/* Sekcja Interaktywna - Symulator */
.rk-fin-interactive {
    padding: 40px;
    background: #ffffff;
}

.rk-fin-interactive h3 {
    margin: 0 0 20px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-fin-dark);
    text-align: center;
}

.rk-fin-dashboard {
    display: grid;
    grid-template-columns: 1fr 1.5fr;
    gap: 30px;
    align-items: center;
}

.rk-fin-slider-box {
    background: #f8fafc;
    padding: 30px;
    border-radius: 16px;
    border: 1px solid var(--rk-fin-border);
    text-align: center;
}

.rk-fin-slider-label {
    display: block;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-fin-gray);
    text-transform: uppercase;
    margin-bottom: 15px;
}

.rk-fin-value-display {
    font-size: 42px;
    font-weight: 900;
    color: var(--rk-fin-dark);
    margin-bottom: 20px;
    display: flex;
    justify-content: center;
    align-items: baseline;
    gap: 5px;
}

.rk-fin-value-display span {
    font-size: 18px;
    color: var(--rk-fin-gray);
}

/* Stylizacja suwaka (Slider) */
.rk-range-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: #cbd5e1;
    outline: none;
    transition: background 0.3s;
}

.rk-range-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--rk-fin-blue);
    cursor: pointer;
    box-shadow: 0 4px 6px rgba(0,0,0,0.1);
    border: 3px solid #ffffff;
    transition: transform 0.2s, background 0.3s;
}

.rk-range-slider::-webkit-slider-thumb:hover {
    transform: scale(1.1);
}

/* Wynik symulacji */
.rk-fin-result-box {
    padding: 30px;
    border-radius: 16px;
    transition: all 0.4s ease;
    display: flex;
    flex-direction: column;
    gap: 15px;
    border: 2px solid transparent;
}

.rk-fin-result-box.state-green {
    background: var(--rk-fin-green-light);
    border-color: var(--rk-fin-green);
}
.rk-fin-result-box.state-orange {
    background: var(--rk-fin-orange-light);
    border-color: var(--rk-fin-orange);
}
.rk-fin-result-box.state-red {
    background: var(--rk-fin-red-light);
    border-color: var(--rk-fin-red);
}

.rk-fin-result-header {
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-anim-house {
    width: 60px;
    height: 60px;
}

.house-path {
    transition: all 0.4s ease;
    stroke-width: 2;
    fill: none;
}

.state-green .house-path { stroke: var(--rk-fin-green); fill: rgba(16, 185, 129, 0.2); }
.state-orange .house-path { stroke: var(--rk-fin-orange); fill: rgba(245, 158, 11, 0.2); }
.state-red .house-path { stroke: var(--rk-fin-red); fill: rgba(239, 68, 68, 0.2); }

.state-red .heat-wave {
    animation: heatRise 1.5s infinite alternate;
    stroke: var(--rk-fin-red);
}

@keyframes heatRise {
    0% { transform: translateY(0) scale(1); opacity: 0.5; }
    100% { transform: translateY(-5px) scale(1.1); opacity: 1; }
}

.rk-fin-result-title {
    font-size: 20px;
    font-weight: 800;
    margin: 0;
}
.state-green .rk-fin-result-title { color: #065f46; }
.state-orange .rk-fin-result-title { color: #92400e; }
.state-red .rk-fin-result-title { color: #991b1b; }

.rk-fin-result-text {
    font-size: 15px;
    line-height: 1.6;
    margin: 0;
    color: #334155;
}

/* Sekcja Wzorów i Linków */
.rk-fin-content-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    padding: 0 40px 40px;
}

.rk-fin-card {
    background: #f8fafc;
    border: 1px solid var(--rk-fin-border);
    padding: 25px;
    border-radius: 12px;
}

.rk-fin-card h4 {
    margin: 0 0 15px 0;
    font-size: 16px;
    color: var(--rk-fin-dark);
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-fin-card ul {
    margin: 0;
    padding: 0 0 0 20px;
    font-size: 14px;
    color: var(--rk-fin-gray);
    line-height: 1.6;
}

.rk-fin-card ul li { margin-bottom: 8px; }
.rk-fin-card a {
    color: var(--rk-fin-blue);
    text-decoration: none;
    font-weight: 700;
    transition: color 0.2s;
}
.rk-fin-card a:hover { text-decoration: underline; }

/* Massive CTA */
.rk-fin-cta {
    background: var(--rk-fin-dark);
    padding: 40px;
    text-align: center;
}

.rk-fin-cta h3 {
    color: #ffffff;
    font-size: 24px;
    margin: 0 0 10px 0;
}

.rk-fin-cta p {
    color: #94a3b8;
    margin: 0 auto 30px auto;
    max-width: 600px;
    font-size: 15px;
    line-height: 1.6;
}

.rk-btn-massive {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-fin-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 900;
    padding: 20px 40px;
    border-radius: 12px;
    text-decoration: none;
    text-transform: uppercase;
    box-shadow: 0 10px 20px -5px rgba(14, 165, 233, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-btn-massive:hover {
    transform: translateY(-4px);
    background: #0284c7;
    box-shadow: 0 15px 25px -5px rgba(14, 165, 233, 0.6);
}

@media (max-width: 768px) {
    .rk-fin-header, .rk-fin-interactive, .rk-fin-content-grid, .rk-fin-cta { padding: 25px; }
    .rk-fin-dashboard, .rk-fin-content-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-fin-value-display { font-size: 36px; }
    .rk-btn-massive { width: 100%; padding: 16px; font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Podsumowanie – Zabezpiecz Swój Budżet i Komfort Termiczny",
    "description": "Sprawdź samodzielnie zapotrzebowanie budynku na ciepło (W/m2) z wykorzystaniem interaktywnego symulatora normy PN-EN 12831. Optymalizuj parametry przed wyborem pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-zapotrzebowanie",
    "name": "Bilans Cieplny i Wskaźniki W/m2 dla Ogrzewania Podłogowego",
    "description": "Zestawienie analityczne określające limity i optymalne zakresy mocy grzewczej dla instalacji płaszczyznowych w odniesieniu do izolacji oraz typu okładziny podłogowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczenia strat ciepła",
      "norma PN-EN 12831",
      "zapotrzebowanie W/m2",
      "projekt wykonawczy ogrzewania",
      "temperatura zasilania podłogówki"
    ],
    "measurementTechnique": "Analiza zapotrzebowania na ciepło (Q = A × U × ΔT) w zależności od stopnia izolacji budynku i wymagań hydraulicznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zakres 40-50 W/m2: Optymalny (Nowe budownictwo, idealne dla pomp ciepła).",
        "Zakres 51-80 W/m2: Umiarkowany (Wymaga zagęszczenia rur i projektowania OZC).",
        "Zakres >80 W/m2: Krytyczny (Ryzyko niedogrzania, wymaga grzejników lub termomodernizacji)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-symulator",
    "name": "Symulator Zapotrzebowania Cieplnego W/m2",
    "description": "Interaktywne narzędzie obliczeniowe obrazujące wpływ jednostkowego zapotrzebowania na ciepło budynku na efektywność wodnego ogrzewania podłogowego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-fin-container">
    <div class="rk-fin-header">
        <h2>Podsumowanie – Zabezpiecz Swój Budżet i Komfort Termiczny</h2>
        <p>
            Samodzielne obliczenie strat ciepła budynku za pomocą uproszczonej metody normy <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" style="color:var(--rk-fin-blue); font-weight:700;">PN-EN 12831</a> to kluczowy krok techniczny, który chroni inwestora przed przewymiarowaniem źródła ciepła i wadliwym działaniem ogrzewania podłogowego.
        </p>
    </div>

    <div class="rk-fin-interactive">
        <h3>Symulator Obciążenia Instalacji</h3>
        <div class="rk-fin-dashboard">
            <div class="rk-fin-slider-box">
                <span class="rk-fin-slider-label">Zapotrzebowanie na ciepło budynku</span>
                <div class="rk-fin-value-display">
                    <span id="sliderValue">45</span> <span>W/m²</span>
                </div>
                <input type="range" min="30" max="120" value="45" step="5" class="rk-range-slider" id="heatSlider">
            </div>

            <div class="rk-fin-result-box state-green" id="resultCard">
                <div class="rk-fin-result-header">
                    <svg class="rk-anim-house" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                        <path class="house-path" d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path>
                        <polyline class="house-path" points="9 22 9 12 15 12 15 22"></polyline>
                        <path class="heat-wave" d="M12 2v3" style="display:none;" stroke-width="2" stroke-linecap="round"/>
                        <path class="heat-wave" d="M8 4v3" style="display:none;" stroke-width="2" stroke-linecap="round"/>
                        <path class="heat-wave" d="M16 4v3" style="display:none;" stroke-width="2" stroke-linecap="round"/>
                    </svg>
                    <h4 class="rk-fin-result-title" id="resultTitle">Strefa Optymalna</h4>
                </div>
                <p class="rk-fin-result-text" id="resultText">
                    Idealne warunki dla podłogówki i pompy ciepła. Niska temperatura zasilania (ok. 30-32°C). Układ działa energooszczędnie, można bezpiecznie planować <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/">panele podłogowe</a>.
                </p>
            </div>
        </div>
    </div>

    <div class="rk-fin-content-grid">
        <div class="rk-fin-card">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-fin-blue)" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>
                Fizyka Budynku
            </h4>
            <ul>
                <li>Znając wzory na straty przez przenikanie (<strong>Q = A × U × ΔT</strong>) oraz wentylację (<strong>Qv = 0,34 × V × ΔT</strong>), weryfikujesz, czy mieścisz się w zakresie 40-80 W/m².</li>
                <li>Zignorowanie parametrów łazienki (wymagane <strong>+24°C</strong>) zepsuje komfort termiczny w newralgicznym punkcie domu.</li>
            </ul>
        </div>
        <div class="rk-fin-card">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-fin-blue)" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                Zlecaj OZC Inżynierom
            </h4>
            <ul>
                <li>Każdy litr wody przepływający przez rozdzielacz musi być poprawnie zbilansowany matematycznie.</li>
                <li>Traktuj samodzielne wyliczenia jako wstęp do zlecenia <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">profesjonalnego projektu OZC</a>, zwłaszcza przy pompach ciepła.</li>
            </ul>
        </div>
    </div>

    <div class="rk-fin-cta">
        <h3>Zaprojektuj System Bez Błędów</h3>
        <p>Nie zostawiaj kluczowych parametrów hydraulicznych przypadkowi. Odkryj inżynierskie metody projektowania, normy prawne i kalkulatory, które zagwarantują 100% efektywności Twojej inwestycji.</p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-massive">
            SPRAWDŹ BAZĘ WIEDZY EKSKLUZYWNEJ
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const slider = document.getElementById('heatSlider');
    const display = document.getElementById('sliderValue');
    const resultCard = document.getElementById('resultCard');
    const resultTitle = document.getElementById('resultTitle');
    const resultText = document.getElementById('resultText');
    const heatWaves = document.querySelectorAll('.heat-wave');

    function updateDashboard(value) {
        display.textContent = value;
        
        if (value <= 50) {
            resultCard.className = 'rk-fin-result-box state-green';
            resultTitle.textContent = 'Strefa Optymalna';
            resultText.innerHTML = 'Idealne warunki dla podłogówki i pompy ciepła. Niska temperatura zasilania (ok. 30-32°C). Układ działa energooszczędnie, można bezpiecznie planować <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/">panele podłogowe</a>.';
            heatWaves.forEach(w => w.style.display = 'none');
            slider.style.background = `linear-gradient(to right, var(--rk-fin-green) ${(value-30)/(120-30)*100}%, #cbd5e1 ${(value-30)/(120-30)*100}%)`;
        } 
        else if (value > 50 && value <= 80) {
            resultCard.className = 'rk-fin-result-box state-orange';
            resultTitle.textContent = 'Strefa Umiarkowana (Uwaga!)';
            resultText.innerHTML = 'Osiągasz granice wydajności. Konieczne zagęszczenie rur (rozstaw co 10 cm). Ryzyko przy stosowaniu paneli. Wymagany precyzyjny <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projekt OZC</a>, aby uniknąć niedogrzania łazienek.';
            heatWaves.forEach(w => w.style.display = 'none');
            slider.style.background = `linear-gradient(to right, var(--rk-fin-orange) ${(value-30)/(120-30)*100}%, #cbd5e1 ${(value-30)/(120-30)*100}%)`;
        } 
        else {
            resultCard.className = 'rk-fin-result-box state-red';
            resultTitle.textContent = 'Strefa Krytyczna';
            resultText.innerHTML = 'Sama podłogówka <strong>nie ogrzeje tego budynku</strong>. Próba wymuszenia mocy doprowadzi do przegrzania posadzki (dyskomfort). Konieczna <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">termomodernizacja</a> lub dodanie obiegów grzejnikowych.';
            heatWaves.forEach(w => w.style.display = 'block');
            slider.style.background = `linear-gradient(to right, var(--rk-fin-red) ${(value-30)/(120-30)*100}%, #cbd5e1 ${(value-30)/(120-30)*100}%)`;
        }
    }

    slider.addEventListener('input', (e) => {
        updateDashboard(e.target.value);
    });

    // Inicjalizacja
    updateDashboard(slider.value);
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">Kalkulator strat ciepła budynku – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym.</title>
		<link>https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/</link>
					<comments>https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Thu, 05 Mar 2026 09:13:56 +0000</pubDate>
				<category><![CDATA[Hydraulika]]></category>
		<category><![CDATA[Hydraulika grzewcza]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompy obiegowe]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Porady techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[dobór pompy]]></category>
		<category><![CDATA[hydraulika instalacji]]></category>
		<category><![CDATA[instalacja podłogówki]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[kalkulator pompy obiegowej]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pompa 25-60]]></category>
		<category><![CDATA[pompa do podłogówki]]></category>
		<category><![CDATA[pompa obiegowa]]></category>
		<category><![CDATA[projekt instalacji grzewczej]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[przepływ instalacji]]></category>
		<category><![CDATA[przepływ w instalacji]]></category>
		<category><![CDATA[wysokość podnoszenia pompy]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3575</guid>

					<description><![CDATA[<p>Dobór odpowiedniej pompy obiegowej ma ogromny wpływ na sprawność i komfort działania instalacji grzewczej. Właśnie dlatego kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym może być niezwykle pomocnym narzędziem dla inwestorów, instalatorów oraz osób planujących budowę domu. Dzięki niemu można w prosty sposób oszacować wymagany przepływ wody oraz wysokość podnoszenia pompy, a następnie dopasować urządzenie do realnych parametrów instalacji. W artykule pokazuję krok po kroku, jak wykonać podstawowe obliczenia, zrozumieć charakterystyki pomp i uniknąć najczęstszych błędów przy projektowaniu podłogówki.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">Kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-blue: #0284c7;
    --rk-intro-light-blue: #f0f9ff;
    --rk-intro-bg: #ffffff;
    --rk-intro-border: #e2e8f0;
    --rk-intro-text: #334155;
    --rk-intro-gold: #f59e0b;
    --rk-intro-gold-light: #fffbeb;
}

.rk-intro-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-intro-bg);
    border-radius: 20px;
    box-shadow: 0 10px 30px rgba(2, 132, 199, 0.08);
    border: 2px solid var(--rk-intro-blue);
    overflow: hidden;
}

/* Mocne Otwarcie - Nagłówek */
.rk-intro-header {
    background: linear-gradient(135deg, var(--rk-intro-dark) 0%, #1e293b 100%);
    padding: 35px 40px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-intro-gold);
}

.rk-intro-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
    display: flex;
    align-items: flex-start;
    gap: 15px;
}

.rk-intro-icon {
    width: 36px;
    height: 36px;
    color: var(--rk-intro-gold);
    flex-shrink: 0;
    margin-top: 2px;
}

.rk-intro-hook {
    font-size: 16px;
    line-height: 1.6;
    color: #cbd5e1;
    margin: 0;
}

/* Szybka Odpowiedź (Featured Snippet) */
.rk-quick-answer {
    padding: 25px 40px;
    background: var(--rk-intro-gold-light);
    border-bottom: 1px solid #fde68a;
    display: flex;
    gap: 20px;
    align-items: flex-start;
}

.rk-qa-badge {
    background: var(--rk-intro-gold);
    color: #ffffff;
    padding: 6px 12px;
    border-radius: 6px;
    font-weight: 900;
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 1px;
    white-space: nowrap;
}

.rk-qa-content p {
    margin: 0;
    font-size: 16px;
    line-height: 1.6;
    color: #92400e;
    font-weight: 600;
}

.rk-qa-content strong {
    font-weight: 900;
    color: #78350f;
}

/* Interaktywna Agenda */
.rk-intro-agenda {
    padding: 35px 40px;
    background: #ffffff;
}

.rk-agenda-title {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-intro-dark);
    margin: 0 0 20px 0;
}

.rk-agenda-grid {
    display: grid;
    grid-template-columns: 300px 1fr;
    gap: 0;
    border: 1px solid var(--rk-intro-border);
    border-radius: 12px;
    overflow: hidden;
}

/* Przyciski nawigacyjne - Bez animacji */
.rk-agenda-nav {
    background: #f8fafc;
    border-right: 1px solid var(--rk-intro-border);
    display: flex;
    flex-direction: column;
}

.rk-agenda-btn {
    padding: 18px 20px;
    background: transparent;
    border: none;
    border-bottom: 1px solid var(--rk-intro-border);
    text-align: left;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-intro-text);
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-agenda-btn:last-child {
    border-bottom: none;
}

.rk-agenda-btn:hover {
    background: #f1f5f9;
}

.rk-agenda-btn.rk-active {
    background: var(--rk-intro-blue);
    color: #ffffff;
}

.rk-agenda-btn svg {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
}

/* Panele z treścią - Bez animacji */
.rk-agenda-panels {
    padding: 30px;
    background: #ffffff;
}

.rk-agenda-panel {
    display: none;
}

.rk-agenda-panel.rk-active {
    display: block;
}

.rk-agenda-panel h4 {
    margin: 0 0 15px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-intro-dark);
}

.rk-agenda-panel p {
    margin: 0 0 15px 0;
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-intro-text);
}

.rk-agenda-panel ul {
    margin: 0;
    padding-left: 20px;
    color: var(--rk-intro-text);
    font-size: 14px;
    line-height: 1.6;
}

.rk-agenda-panel li {
    margin-bottom: 8px;
}

/* Informacja o kalkulatorach */
.rk-tools-teaser {
    margin-top: 30px;
    padding: 15px 20px;
    background: var(--rk-intro-light-blue);
    border-left: 4px solid var(--rk-intro-blue);
    border-radius: 0 8px 8px 0;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-tools-teaser p {
    margin: 0;
    font-size: 14px;
    font-weight: 700;
    color: #0369a1;
    line-height: 1.5;
}

@media (max-width: 768px) {
    .rk-intro-header { padding: 25px 20px; }
    .rk-intro-header h2 { font-size: 22px; }
    .rk-quick-answer { flex-direction: column; padding: 20px; gap: 15px; }
    .rk-intro-agenda { padding: 25px 20px; }
    .rk-agenda-grid { grid-template-columns: 1fr; }
    .rk-agenda-nav { border-right: none; border-bottom: 1px solid var(--rk-intro-border); }
    .rk-agenda-panels { padding: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym – Poradnik i algorytm",
    "description": "Zestawienie interaktywnych kalkulatorów i algorytmów obliczania przepływu oraz wysokości podnoszenia pomp obiegowych (OZC, długości pętli, awarie).",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-wstep",
    "name": "Zestawienie Zmiennych Projektowych dla Pomp Obiegowych 2026",
    "description": "Indeks kluczowych składowych artykułu: od wzorów na przepływ wody, przez parametry oporów rur, aż po zestawienia tabelaryczne.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym",
      "szybka odpowiedź dobór pompy",
      "jak dobrać pompę obiegową do podłogówki",
      "algorytm doboru pompy przepływ Q i wysokość H",
      "parametry pompy obiegowej podłogówka"
    ],
    "measurementTechnique": "Hierarchiczne drzewo zawartości umożliwiające nawigację po interaktywnych modułach hydraulicznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przepływ objętościowy wody: Metodyka wyliczania Q na bazie OZC.",
        "Wysokość podnoszenia H: Obliczanie strat liniowych dla najdłuższej pętli.",
        "Średnice rur: Wpływ rur PEX na powstawanie zjawiska kawitacji."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-wstep",
    "name": "Interaktywny Nawigator Artykułu",
    "description": "Moduł wstępny typu 'Quick Answer' oraz przełącznik kontekstowy wprowadzający użytkownika w tematykę obliczeń hydraulicznych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container">
    <div class="rk-intro-header">
        <h2>
            <svg class="rk-intro-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                <path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path>
            </svg>
            Kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym
        </h2>
        <p class="rk-intro-hook">Masz dość zgadywania, czy pompa &#8222;uciągnie&#8221; najdalsze pętle w salonie? Błędny dobór pompy obiegowej to najczęstsza przyczyna zimnych posadzek i uciążliwego świstu w rozdzielaczach. Ten przewodnik bezlitośnie rozprawia się z mitami instalatorskimi, dając Ci do ręki czystą inżynierię i twarde wzory.</p>
    </div>

    <div class="rk-quick-answer">
        <div class="rk-qa-badge">Szybka Odpowiedź</div>
        <div class="rk-qa-content">
            <p>Prawidłowy punkt pracy pompy obiegowej wyznacza się na podstawie dwóch parametrów: <strong>wymaganego przepływu wody (Q)</strong>, liczonego ze spadku temperatury oraz <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowego obciążenia cieplnego (OZC)</a> budynku (zazwyczaj od 0,5 do 2,5 m³/h), oraz <strong>wysokości podnoszenia (H)</strong> determinowanej przez opory hydrauliczne najdłuższej pętli (najczęściej od 3,5 do 5,5 m słupa wody). Urządzenie należy dopasować bezpośrednio do krzywych charakterystyki pomp, a nie dobierać „z zapasem”.</p>
        </div>
    </div>

    <div class="rk-intro-agenda">
        <h3 class="rk-agenda-title">Czego dowiesz się z tego kompendium?</h3>
        
        <div class="rk-agenda-grid">
            <div class="rk-agenda-nav">
                <button class="rk-agenda-btn rk-active" data-id="tab-1">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                    Fizyka Płynów (Q i H)
                </button>
                <button class="rk-agenda-btn" data-id="tab-2">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                    Błędy Instalatorów
                </button>
                <button class="rk-agenda-btn" data-id="tab-3">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line></svg>
                    Średnice rur zasilających
                </button>
            </div>

            <div class="rk-agenda-panels">
                <div class="rk-agenda-panel rk-active" id="tab-1">
                    <h4>Zależności matematyczne przepływu</h4>
                    <p>Zrozumiesz, jak dokładnie parametry Twojego domu wpływają na zachowanie wody w rurach. Omówimy:</p>
                    <ul>
                        <li>Jak obliczyć strumień masowy z różnicy temperatur (ΔT 5K i 6K).</li>
                        <li>Dlaczego <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">za długa pętla podłogówki</a> tworzy tzw. króla hydraulicznego.</li>
                        <li>Dlaczego podnoszenie pompy nie zależy od piętra w domu.</li>
                    </ul>
                </div>
                
                <div class="rk-agenda-panel" id="tab-2">
                    <h4>Najdroższe awarie systemu</h4>
                    <p>Dowiesz się, jakie <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">najczęstsze błędy popełniają instalatorzy</a>, co bezpośrednio uderza w Twój portfel.</p>
                    <ul>
                        <li>Przewymiarowanie pompy (mit &#8222;im większa tym lepsza&#8221;).</li>
                        <li>Złe ustawienia (Constant Speed vs Constant Pressure).</li>
                        <li>Ryzyko braku separatorów i zalania surową wodą.</li>
                    </ul>
                </div>

                <div class="rk-agenda-panel" id="tab-3">
                    <h4>Piony i kawitacja</h4>
                    <p>Przeanalizujemy krytyczny element dystrybucji czynnika grzewczego – rury łączące źródło ciepła z rozdzielaczem.</p>
                    <ul>
                        <li>Wpływ średnicy rury PEX na ryzyko wystąpienia szumów.</li>
                        <li>Kalkulacja prędkości przepływu (normy DIN 1988).</li>
                        <li>Dlaczego <a href="https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/">średnica rury zasilającej rozdzielacz</a> ratuje całą instalację.</li>
                    </ul>
                </div>
            </div>
        </div>

        <div class="rk-tools-teaser">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="24" height="24"><polygon points="5 3 19 12 5 21 5 3"></polygon></svg>
            <p>Zamiast liczyć ręcznie – w dalszej części artykułu przygotowałem dedykowane interaktywne <strong>kalkulatory i symulatory graficzne</strong>, które przeanalizują Twoją instalację i same wyznaczą punkt pracy.</p>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btns = document.querySelectorAll('.rk-agenda-btn');
    var panels = document.querySelectorAll('.rk-agenda-panel');

    for (var i = 0; i < btns.length; i++) {
        btns[i].addEventListener('click', function() {
            var targetId = this.getAttribute('data-id');

            // Usuwanie klas aktywnych (bez animacji i bezpiecznie)
            for (var b = 0; b < btns.length; b++) {
                btns[b].classList.remove('rk-active');
            }
            this.classList.add('rk-active');

            // Ukrywanie wszystkich paneli natychmiastowo
            for (var p = 0; p < panels.length; p++) {
                panels[p].classList.remove('rk-active');
            }
            
            // Pokazywanie docelowego panelu
            var activePanel = document.getElementById(targetId);
            if (activePanel !== null) {
                activePanel.classList.add('rk-active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-flow-dark: #0f172a;
    --rk-flow-blue: #0284c7;
    --rk-flow-light: #f0f9ff;
    --rk-flow-red: #ef4444;
    --rk-flow-green: #10b981;
    --rk-flow-yellow: #f59e0b;
    --rk-flow-border: #e2e8f0;
    --rk-flow-bg: #ffffff;
    --rk-flow-text: #475569;
}

.rk-flow-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-flow-bg);
    border-radius: 24px;
    box-shadow: 0 15px 35px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-flow-blue);
    overflow: hidden;
}

/* Nagłówek */
.rk-flow-header {
    padding: 35px 45px;
    background: linear-gradient(135deg, var(--rk-flow-dark) 0%, #1e293b 100%);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-flow-blue);
}

.rk-flow-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    line-height: 1.3;
}

.rk-flow-header-icon {
    width: 32px;
    height: 32px;
    color: #38bdf8;
    flex-shrink: 0;
}

.rk-flow-header p {
    font-size: 15px;
    line-height: 1.6;
    color: #cbd5e1;
    margin: 0;
}

/* Tekst / Teoria */
.rk-flow-content {
    padding: 35px 45px;
    background: #ffffff;
}

.rk-flow-content h3 {
    margin: 0 0 15px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-flow-dark);
}

.rk-flow-content p {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-flow-text);
    margin: 0 0 20px 0;
}

.rk-flow-math {
    background: var(--rk-flow-light);
    padding: 20px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-flow-blue);
    margin: 25px 0;
    text-align: center;
    font-family: 'Courier New', Courier, monospace;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-flow-dark);
    letter-spacing: 1px;
}

.rk-flow-list {
    list-style: none;
    padding: 0;
    margin: 0 0 25px 0;
}

.rk-flow-list li {
    position: relative;
    padding-left: 25px;
    margin-bottom: 10px;
    font-size: 14px;
    color: var(--rk-flow-text);
    line-height: 1.6;
}

.rk-flow-list li::before {
    content: '→';
    position: absolute;
    left: 0;
    top: 0;
    color: var(--rk-flow-blue);
    font-weight: 800;
}

/* Interaktywny Kalkulator */
.rk-flow-calc-area {
    background: #f8fafc;
    padding: 35px 45px;
    border-top: 1px solid var(--rk-flow-border);
}

.rk-flow-calc-area h3 {
    margin: 0 0 25px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-flow-dark);
}

.rk-flow-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
}

/* Sekcja Suwaków */
.rk-flow-inputs {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-slider-box {
    background: #ffffff;
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-flow-border);
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-slider-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
}

.rk-slider-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-flow-text);
    text-transform: uppercase;
}

.rk-slider-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-flow-blue);
}

.rk-flow-range {
    width: 100%;
    accent-color: var(--rk-flow-blue);
    cursor: pointer;
    height: 6px;
    border-radius: 3px;
}

/* Sekcja Wyniku */
.rk-flow-result {
    background: #ffffff;
    border-radius: 16px;
    border: 2px solid var(--rk-flow-blue);
    padding: 30px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    transition: all 0.4s ease;
    position: relative;
    overflow: hidden;
}

.rk-flow-result::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 100%; height: 6px;
    background: var(--rk-flow-blue);
    transition: background 0.4s;
}

.rk-result-label {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-flow-text);
    margin-bottom: 10px;
    letter-spacing: 1px;
}

.rk-result-value {
    font-size: 42px;
    font-weight: 900;
    color: var(--rk-flow-dark);
    margin: 0 0 15px 0;
    line-height: 1;
}

.rk-result-unit {
    font-size: 20px;
    color: var(--rk-flow-blue);
}

.rk-result-status {
    padding: 10px 20px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 800;
    width: 100%;
    transition: all 0.3s;
}

/* Dynamiczne stany wizualne wyniku */
.rk-state-optimal {
    border-color: var(--rk-flow-green);
}
.rk-state-optimal::before { background: var(--rk-flow-green); }
.rk-state-optimal .rk-result-status {
    background: #dcfce7; color: #166534;
}

.rk-state-warning {
    border-color: var(--rk-flow-yellow);
}
.rk-state-warning::before { background: var(--rk-flow-yellow); }
.rk-state-warning .rk-result-status {
    background: #fef3c7; color: #92400e;
}

.rk-state-danger {
    border-color: var(--rk-flow-red);
}
.rk-state-danger::before { background: var(--rk-flow-red); }
.rk-state-danger .rk-result-status {
    background: #fee2e2; color: #b91c1c;
}

@media (max-width: 768px) {
    .rk-flow-header, .rk-flow-content, .rk-flow-calc-area { padding: 25px 20px; }
    .rk-flow-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-flow-math { font-size: 16px; padding: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-przeplyw",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Jak obliczyć wymagany przepływ wody w ogrzewaniu podłogowym?",
    "description": "Matematyczna zależność pomiędzy projektowym obciążeniem cieplnym budynku (OZC), a spadkiem temperatury ΔT. Wzór Q = P / (1,163 x ΔT) w praktyce.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-przeplyw",
    "name": "Zestawienie Wymaganych Przepływów Masowych dla Pomp Obiegowych 2026",
    "description": "Baza danych określająca bezpieczne granice wydajności hydraulicznej zapobiegające powstawaniu szumów i zjawiska zimnej podłogi.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wymagany przepływ wody ogrzewanie podłogowe",
      "wzór na wydajność pompy obiegowej",
      "projektowe obciążenie cieplne ozc",
      "szum na rotametrach rozdzielacza",
      "prędkość krytyczna przepływu wody"
    ],
    "measurementTechnique": "Algorytm oparty o wzór Q = P / (1,163 * ΔT) diagnozujący potencjalne zagrożenia w przepływie masowym układu dystrybucji ciepła.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Optymalny przepływ w domach: 0.5 - 2.5 m3/h.",
        "Przekroczenie (np. 3.0 m3/h): Ryzyko przepływu turbulentnego i hałasu.",
        "Zaniżenie: Zimny powrót i brak samoodpowietrzania (wymagane v > 0.25 m/s)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-przeplyw",
    "name": "Symulator Przepływu Masowego Q",
    "description": "Interaktywne narzędzie obliczające na żywo wydajność pompy obiegowej na podstawie mocy grzewczej i spadku temperatury ΔT.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-flow-wrapper">
    <div class="rk-flow-header">
        <svg class="rk-flow-header-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
            <path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path>
        </svg>
        <h2>Jak obliczyć wymagany przepływ wody w ogrzewaniu podłogowym?</h2>
    </div>

    

    <div class="rk-flow-content">
        <p>Wymagany przepływ masowy i objętościowy wody w instalacji ogrzewania podłogowego wynosi od 0,5 m³/h do 2,5 m³/h dla domów jednorodzinnych i musi być obliczany w oparciu o projektowe obciążenie cieplne budynku według normy PN-EN 12831 oraz założony spadek temperatury ΔT wynoszący ściśle 5 K lub 6 K. Bezpośrednia odpowiedź na to pytanie opiera się na matematycznym powiązaniu dostarczanej mocy termicznej z pojemnością cieplną nośnika. Każde odstępstwo od wyliczonego przepływu skutkuje zachwianiem równowagi termicznej budynku, powodując asymetrię temperaturową posadzki, co drastycznie obniża deklarowaną efektywność energetyczną układu grzewczego.</p>

        <h3>Matematyczna zależność strumienia masowego od mocy</h3>
        <p>Aby obliczyć przepływ wody (wydajność pompy Q), stosuje się podstawowe równanie wymiany ciepła, przekształcone do celów inżynierii sanitarnej. Przykład: przy projektowym zapotrzebowaniu na moc P = 11,5 kW i różnicy temperatur ΔT = 5 K (gdzie parametry zasilania i powrotu to np. 35/30°C), nominalny przepływ objętościowy wynosi dokładnie 1,98 m³/h (czyli dokładnie 1977,6 litrów na godzinę ciągłego przepływu).</p>
        
        <div class="rk-flow-math">
            Q = P / (1,163 × ΔT)
        </div>

        <ul class="rk-flow-list">
            <li><strong>Q</strong> – przepływ objętościowy wody w instalacji płaszczyznowej [m³/h]</li>
            <li><strong>P</strong> – <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne</a> podłogówki wyznaczone z bilansu OZC [kW]</li>
            <li><strong>1,163</strong> – stała przeliczeniowa uwzględniająca gęstość wody (ok. 1000 kg/m³) oraz ciepło właściwe</li>
        </ul>

        <p>Rozwijając to zagadnienie z perspektywy inżynierskiej, stała ta wynika bezpośrednio z zamiany jednostek energii z dżuli na kilowatogodziny oraz masy na metry sześcienne. Przepływ ten musi być dystrybuowany w taki sposób, aby prędkość wody w poszczególnych pętlach nie spadła poniżej prędkości krytycznej umożliwiającej samoczynne odpowietrzanie układu (tj. minimum 0,25 m/s). Jeśli prędkość będzie mniejsza, pęcherze powietrza utkną w najwyższych punktach jastrychu, trwale odcinając emisję ciepła.</p>

        <h3>Konsekwencje błędnego wyznaczenia przepływu Q</h3>
        <p>Zaniżenie parametru powoduje, że woda wychładza się zbyt szybko w początkowych metrach pętli grzewczej. Efektem jest tzw. „zimna podłoga” na powrocie i głębokie niedogrzanie pomieszczeń oddalonych od rozdzielacza. Z kolei zawyżenie przepływu zmusza pompę do pracy na najwyższych biegach charakterystyki, co podnosi zużycie energii elektrycznej i generuje <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">uciążliwy szum na rotametrach</a> wskutek przekroczenia prędkości krytycznej (v > 0,5 m/s). Pętla hydrauliczna traci wówczas zdolność do laminarnego przepływu.</p>
    </div>

    <div class="rk-flow-calc-area">
        <h3>Symulacja Wydajności Pompy (Q)</h3>
        
        <div class="rk-flow-grid">
            <div class="rk-flow-inputs">
                <div class="rk-slider-box">
                    <div class="rk-slider-header">
                        <span class="rk-slider-title">Zapotrzebowanie (P)</span>
                        <span class="rk-slider-val"><span id="rk-val-power">10.0</span> kW</span>
                    </div>
                    <input type="range" id="rk-slider-power" class="rk-flow-range" min="4" max="25" step="0.5" value="10">
                </div>

                <div class="rk-slider-box">
                    <div class="rk-slider-header">
                        <span class="rk-slider-title">Spadek temp. (ΔT)</span>
                        <span class="rk-slider-val"><span id="rk-val-dt">5</span> K</span>
                    </div>
                    <input type="range" id="rk-slider-dt" class="rk-flow-range" min="3" max="10" step="1" value="5">
                </div>
            </div>

            <div class="rk-flow-result rk-state-optimal" id="rk-result-box">
                <div class="rk-result-label">Wymagany przepływ masowy Q</div>
                <div class="rk-result-value" id="rk-flow-output">1.72 <span class="rk-result-unit">m³/h</span></div>
                <div class="rk-result-status" id="rk-flow-status">Optymalny punkt pracy dla pompy domowej</div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var powerSlider = document.getElementById('rk-slider-power');
    var dtSlider = document.getElementById('rk-slider-dt');
    var valPower = document.getElementById('rk-val-power');
    var valDt = document.getElementById('rk-val-dt');
    var flowOutput = document.getElementById('rk-flow-output');
    var resultBox = document.getElementById('rk-result-box');
    var statusText = document.getElementById('rk-flow-status');

    function calculateFlow() {
        var p = parseFloat(powerSlider.value);
        var dt = parseInt(dtSlider.value);
        
        valPower.textContent = p.toFixed(1);
        valDt.textContent = dt;

        // Główny wzór inżynierski
        var q = p / (1.163 * dt);
        flowOutput.innerHTML = q.toFixed(2) + ' <span class="rk-result-unit">m³/h</span>';

        // Czyszczenie klas
        resultBox.classList.remove('rk-state-optimal');
        resultBox.classList.remove('rk-state-warning');
        resultBox.classList.remove('rk-state-danger');

        // Logika diagnozy (bez znaków &&)
        if (q < 0.5) {
            resultBox.classList.add('rk-state-danger');
            statusText.textContent = "Ryzyko niedogrzania! Przepływ jest zbyt mały, by usunąć powietrze z rur.";
        } else if (q <= 2.5) {
            resultBox.classList.add('rk-state-optimal');
            statusText.textContent = "Optymalny przepływ dla standardowej domowej instalacji.";
        } else if (q <= 3.5) {
            resultBox.classList.add('rk-state-warning');
            statusText.textContent = "Wysoki strumień! Zadbaj o większe rury zasilające, by uniknąć szumów.";
        } else {
            resultBox.classList.add('rk-state-danger');
            statusText.textContent = "Krytyczny przepływ! Standardowa pompa domowa sobie nie poradzi.";
        }
    }

    powerSlider.addEventListener('input', calculateFlow);
    dtSlider.addEventListener('input', calculateFlow);
    calculateFlow(); // Inicjalizacja
});
</script>



<style>
:root {
    --rk-head-dark: #0f172a;
    --rk-head-blue: #0284c7;
    --rk-head-light: #f0f9ff;
    --rk-head-green: #10b981;
    --rk-head-green-light: #f0fdf4;
    --rk-head-yellow: #eab308;
    --rk-head-yellow-light: #fefce8;
    --rk-head-red: #ef4444;
    --rk-head-red-light: #fef2f2;
    --rk-head-border: #e2e8f0;
    --rk-head-bg: #ffffff;
    --rk-head-text: #475569;
}

.rk-head-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-head-bg);
    border-radius: 24px;
    box-shadow: 0 15px 35px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-head-blue);
    overflow: hidden;
}

/* Nagłówek */
.rk-head-header {
    padding: 35px 45px;
    background: linear-gradient(135deg, var(--rk-head-dark) 0%, #1e293b 100%);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-head-blue);
}

.rk-head-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: flex-start;
    gap: 15px;
    line-height: 1.3;
}

.rk-head-icon {
    width: 32px;
    height: 32px;
    color: #38bdf8;
    flex-shrink: 0;
    margin-top: 2px;
}

.rk-head-header p {
    font-size: 15px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

/* Treść tekstowa */
.rk-head-content {
    padding: 35px 45px 20px;
    background: #ffffff;
}

.rk-head-content h3 {
    margin: 0 0 15px 0;
    font-size: 19px;
    font-weight: 800;
    color: var(--rk-head-dark);
}

.rk-head-content p {
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-head-text);
    margin: 0 0 20px 0;
}

/* Wzór Matematyczny HTML */
.rk-math-panel {
    background: var(--rk-head-light);
    padding: 20px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-head-blue);
    margin-bottom: 25px;
    text-align: center;
    font-family: 'Courier New', Courier, monospace;
    font-size: 17px;
    font-weight: 700;
    color: var(--rk-head-dark);
    letter-spacing: 0.5px;
}

.rk-math-panel span {
    color: var(--rk-head-blue);
}

/* Interaktywny Symulator */
.rk-head-interactive {
    background: #f8fafc;
    padding: 35px 45px;
    border-top: 1px solid var(--rk-head-border);
}

.rk-head-interactive h3 {
    margin: 0 0 25px 0;
    font-size: 19px;
    font-weight: 800;
    color: var(--rk-head-dark);
}

.rk-sim-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
}

/* Kontrolki Suwaka */
.rk-slider-box {
    background: #ffffff;
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-head-border);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-slider-info {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}

.rk-slider-label {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-head-text);
    text-transform: uppercase;
}

.rk-slider-value {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-head-blue);
}

.rk-range-input {
    width: 100%;
    accent-color: var(--rk-head-blue);
    cursor: pointer;
    height: 8px;
    border-radius: 4px;
}

/* Panel Wynikowy */
.rk-result-box {
    padding: 25px;
    border-radius: 16px;
    border: 2px solid var(--rk-head-border);
    background: #ffffff;
    transition: all 0.4s ease;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-result-title {
    font-size: 18px;
    font-weight: 900;
    margin: 0 0 15px 0;
    transition: color 0.3s;
}

.rk-result-metrics {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-bottom: 15px;
}

.rk-metric-row {
    display: flex;
    justify-content: space-between;
    font-size: 14px;
    color: var(--rk-head-text);
    font-weight: 600;
    padding-bottom: 8px;
    border-bottom: 1px dashed var(--rk-head-border);
}

.rk-metric-row:last-child {
    border-bottom: none;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-head-dark);
}

.rk-result-desc {
    font-size: 13px;
    line-height: 1.5;
    margin: 0;
    font-weight: 600;
}

/* Stany Wizualne */
.rk-state-safe {
    border-color: var(--rk-head-green);
    background: var(--rk-head-green-light);
}
.rk-state-safe .rk-result-title { color: #059669; }
.rk-state-safe .rk-result-desc { color: #047857; }

.rk-state-warn {
    border-color: var(--rk-head-yellow);
    background: var(--rk-head-yellow-light);
}
.rk-state-warn .rk-result-title { color: #d97706; }
.rk-state-warn .rk-result-desc { color: #b45309; }

.rk-state-danger {
    border-color: var(--rk-head-red);
    background: var(--rk-head-red-light);
}
.rk-state-danger .rk-result-title { color: #dc2626; }
.rk-state-danger .rk-result-desc { color: #b91c1c; }

@media (max-width: 768px) {
    .rk-head-header, .rk-head-content, .rk-head-interactive { padding: 25px 20px; }
    .rk-sim-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-math-panel { font-size: 14px; padding: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-podnoszenie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Jak wyznaczyć wysokość podnoszenia pompy dla najdłuższej pętli podłogówki?",
    "description": "Fizyka strat ciśnienia w instalacji podłogowej. Wyjaśniamy jak długość pętli wpływa na opory miejscowe i dlaczego zjawisko króla hydraulicznego niszczy pompy.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-podnoszenie",
    "name": "Tabela Oporów Hydraulicznych Pętli PEX 16mm 2026",
    "description": "Zestawienie straty ciśnienia wyrażonej w Pa/m oraz wysokości podnoszenia w zależności od długości ułożonej pętli ogrzewania płaszczyznowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna długość pętli ogrzewania podłogowego",
      "opór jednostkowy rury pex 16",
      "wysokość podnoszenia pompy obiegowej",
      "król hydrauliczny w podłogówce",
      "straty ciśnienia w instalacji CO"
    ],
    "measurementTechnique": "Kalkulacja strat liniowych (150 Pa/m dla 2.0 l/min) powiększona o wykładniczy wzrost oporów przy pętlach przekraczających normę PN-EN 1264-4.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Normatywna długość pętli 16mm: max 100-120m (strata rzędu 1.65m H2O).",
        "Przekroczenie (150m): Generuje opory powyżej 32 kPa (3.2m H2O) wymuszając instalację większej pompy."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-podnoszenie",
    "name": "Symulator Oporów Hydraulicznych Pętli",
    "description": "Narzędzie pozwalające na dynamiczne modelowanie całkowitej wysokości podnoszenia pompy (H) poprzez modyfikację długości najdłuższej pętli grzewczej.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-head-container">
    <div class="rk-head-header">
        <svg class="rk-head-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
            <polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline>
        </svg>
        <h2>Jak wyznaczyć wysokość podnoszenia pompy dla najdłuższej pętli podłogówki?</h2>
    </div>

    

    <div class="rk-head-content">
        <p>Wysokość podnoszenia pompy obiegowej dla standardowej instalacji płaszczyznowej wynosi zazwyczaj od 3,5 m do 5,5 m słupa wody (co odpowiada 35–55 kPa) i jest determinowana wyłącznie przez sumaryczne opory hydrauliczne najdłuższej, najbardziej obciążonej pętli grzewczej, a nie przez fizyczną wysokość budynku. Zgodnie z normą PN-EN 1264-4, maksymalna długość pojedynczej pętli z rury o średnicy 16 mm nie powinna przekraczać 100–120 m.</p>

        <h3>Fizyka strat ciśnienia: liniowe i miejscowe opory instalacji</h3>
        <p>Wysokość podnoszenia (H) to zdolność pompy do pokonania oporów tarcia strumienia cieczy o wewnętrzne ścianki rur (straty liniowe) oraz oporów na zmianach kierunku, zwężkach, kolankach i zaworach regulacyjnych (straty miejscowe). Szacowanie tego parametru metodą „na oko” to prosty przepis na katastrofę. Przyjmując powszechnie stosowaną rurę PERT/AL/PEX 16x2 mm przy przepływie rzędu 2,0 l/min, liniowa strata ciśnienia wynosi średnio 150 Pa/m (czyli 0,015 m H₂O/m).</p>
        
        <p>Dla optymalnej pętli o długości 110 m czysta strata liniowa wynosi:</p>

        <div class="rk-math-panel">
            Δp<sub>lin</sub> = 110 m × 150 Pa/m = 16 500 Pa = <span>1,65 m H₂O</span>
        </div>

        <p>Do tej wartości należy doliczyć opory miejscowe: kolana ułożenia ślimakowego, podejścia do szafki, a także opór samego rozdzielacza z rotametrami (ok. 15–20 kPa czyli 1,5–2,0 m) oraz zaworów mieszających. Kalkulator inżynierski zawsze uwzględnia również współczynnik starzenia rur.</p>

        <h3>Wpływ długości pętli na wymiarowanie hydrauliczne</h3>
        <p>Jeśli instalator bezmyślnie ułożył pętlę o długości 150 m, strata ciśnienia na samej rurze wzrasta drastycznie ze względu na wykładniczy wzrost oporów. Taka <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">za długa pętla podłogówki</a> staje się tzw. „królem hydraulicznym” całego układu – dławi przepływ i zmusza inwestora do zakupu pompy o wysokości podnoszenia 8 m, rujnując autoadaptacyjne tryby pracy energooszczędnych pomp.</p>
    </div>

    <div class="rk-head-interactive">
        <h3>Symulator Oporów Hydraulicznych Pętli (H)</h3>
        
        <div class="rk-sim-grid">
            <div class="rk-slider-box">
                <div class="rk-slider-info">
                    <span class="rk-slider-label">Długość pętli (PEX 16mm):</span>
                    <span class="rk-slider-value"><span id="rk-loop-val">100</span> m</span>
                </div>
                <input type="range" id="rk-loop-slider" class="rk-range-input" min="60" max="160" step="5" value="100">
            </div>

            <div class="rk-result-box rk-state-safe" id="rk-result-panel">
                <h4 class="rk-result-title" id="rk-result-title">Instalacja Bezpieczna</h4>
                
                <div class="rk-result-metrics">
                    <div class="rk-metric-row">
                        <span>Strata liniowa rury:</span>
                        <span id="rk-loss-lin">1.50 m H₂O</span>
                    </div>
                    <div class="rk-metric-row">
                        <span>Opory rozdzielacza / zaworów:</span>
                        <span>2.00 m H₂O</span>
                    </div>
                    <div class="rk-metric-row">
                        <span>Wymagane podnoszenie pompy (H):</span>
                        <span id="rk-loss-total" style="color: var(--rk-head-blue);">3.50 m</span>
                    </div>
                </div>
                
                <p class="rk-result-desc" id="rk-result-desc">Pętla ułożona zgodnie ze sztuką. Pozwala na zastosowanie standardowej pompy 25-40 lub 25-60, pracującej w optymalnym zakresie sprawności.</p>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var slider = document.getElementById('rk-loop-slider');
    var displayVal = document.getElementById('rk-loop-val');
    var dispLin = document.getElementById('rk-loss-lin');
    var dispTotal = document.getElementById('rk-loss-total');
    var panel = document.getElementById('rk-result-panel');
    var title = document.getElementById('rk-result-title');
    var desc = document.getElementById('rk-result-desc');

    function updateHydraulics() {
        var length = parseInt(slider.value);
        displayVal.textContent = length;

        // Podstawowy opór liniowy: 0.015 m/m
        var baseLoss = length * 0.015;
        
        // Symulacja zjawiska "króla hydraulicznego" (wykładniczy wzrost przy długich pętlach z uwagi na konieczność tłoczenia większej masy)
        // Bez operatorów &&
        if (length > 110) {
            var over = length - 110;
            var penalty = (over * over) * 0.0006;
            baseLoss = baseLoss + penalty;
        }

        var totalHead = baseLoss + 2.0; // + 2.0m na rozdzielacz

        dispLin.textContent = baseLoss.toFixed(2) + " m H₂O";
        dispTotal.textContent = totalHead.toFixed(2) + " m";

        // Reset klas
        panel.classList.remove('rk-state-safe');
        panel.classList.remove('rk-state-warn');
        panel.classList.remove('rk-state-danger');

        // Logika przypisania stanów bez użycia &&
        if (length <= 100) {
            panel.classList.add('rk-state-safe');
            title.textContent = "Instalacja Bezpieczna";
            desc.textContent = "Pętla ułożona zgodnie ze sztuką. Pozwala na zastosowanie standardowej pompy 25-40 lub 25-60, pracującej w optymalnym zakresie sprawności.";
        } else if (length <= 120) {
            panel.classList.add('rk-state-warn');
            title.textContent = "Wartość Graniczna";
            desc.textContent = "Pętla zbliża się do limitów normy PN-EN 1264. Wymaga starannego zrównoważenia na przepływomierzach, aby nie zakłócić pracy krótszych obiegów.";
        } else {
            panel.classList.add('rk-state-danger');
            title.textContent = "Król Hydrauliczny!";
            desc.textContent = "Krytyczny opór! Taka pętla zadławi układ. Konieczny będzie montaż przewymiarowanej pompy 25-80, co drastycznie podniesie zużycie prądu i wygeneruje hałas.";
        }
    }

    slider.addEventListener('input', updateHydraulics);
    updateHydraulics(); // Inicjalizacja
});
</script>



<style>
:root {
    --rk-pipe-dark: #0f172a;
    --rk-pipe-blue: #0284c7;
    --rk-pipe-light: #f0f9ff;
    --rk-pipe-red: #ef4444;
    --rk-pipe-red-light: #fef2f2;
    --rk-pipe-green: #10b981;
    --rk-pipe-green-light: #f0fdf4;
    --rk-pipe-border: #e2e8f0;
    --rk-pipe-bg: #ffffff;
    --rk-pipe-text: #475569;
}

.rk-pipe-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-pipe-bg);
    border-radius: 24px;
    box-shadow: 0 15px 40px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-pipe-blue);
    overflow: hidden;
}

/* Nagłówek */
.rk-pipe-header {
    padding: 35px 45px;
    background: linear-gradient(135deg, var(--rk-pipe-dark) 0%, #1e293b 100%);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-pipe-blue);
}

.rk-pipe-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    line-height: 1.3;
}

.rk-pipe-icon {
    width: 34px;
    height: 34px;
    color: #38bdf8;
    flex-shrink: 0;
}

.rk-pipe-header p {
    font-size: 15px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-pipe-header a {
    color: #7dd3fc;
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* Treść techniczna */
.rk-pipe-body {
    padding: 35px 45px 25px;
    background: #ffffff;
}

.rk-pipe-body h3 {
    margin: 0 0 15px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-pipe-dark);
}

.rk-pipe-body p {
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-pipe-text);
    margin: 0 0 20px 0;
}

/* Formatowanie inżynierskiego wzoru bez LaTeX */
.rk-math-box {
    background: var(--rk-pipe-light);
    padding: 15px 20px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-pipe-blue);
    margin-bottom: 25px;
    font-family: 'Courier New', Courier, monospace;
    font-size: 16px;
    font-weight: 700;
    color: var(--rk-pipe-dark);
    text-align: center;
}

/* Symulator interaktywny */
.rk-sim-area {
    background: #f8fafc;
    padding: 35px 45px;
    border-top: 1px solid var(--rk-pipe-border);
}

.rk-sim-controls {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 30px;
}

.rk-pipe-btn {
    background: #ffffff;
    border: 2px solid var(--rk-pipe-border);
    padding: 20px;
    border-radius: 16px;
    cursor: pointer;
    transition: all 0.3s ease;
    text-align: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-pipe-btn:hover {
    border-color: #94a3b8;
    transform: translateY(-2px);
}

.rk-pipe-btn h4 {
    margin: 0 0 5px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-pipe-dark);
}

.rk-pipe-btn p {
    margin: 0;
    font-size: 13px;
    color: var(--rk-pipe-text);
    font-weight: 600;
}

/* Stany Aktywne Przycisków */
.rk-btn-danger.rk-active {
    border-color: var(--rk-pipe-red);
    background: var(--rk-pipe-red-light);
    box-shadow: 0 10px 20px -5px rgba(239, 68, 68, 0.2);
}

.rk-btn-safe.rk-active {
    border-color: var(--rk-pipe-green);
    background: var(--rk-pipe-green-light);
    box-shadow: 0 10px 20px -5px rgba(16, 185, 129, 0.2);
}

/* Ekran Wyniku Wizualnego */
.rk-sim-display {
    background: #ffffff;
    border-radius: 16px;
    border: 1px solid var(--rk-pipe-border);
    padding: 30px;
    display: flex;
    align-items: center;
    gap: 30px;
    transition: all 0.4s ease;
}

.rk-pipe-visual {
    width: 120px;
    height: 120px;
    flex-shrink: 0;
    position: relative;
}

/* Animacja SVG */
.rk-flow-path {
    stroke-dasharray: 15;
    transition: stroke 0.4s ease;
}

.rk-flow-fast { animation: flowAnim 0.4s linear infinite; stroke: var(--rk-pipe-red); }
.rk-flow-slow { animation: flowAnim 1.5s linear infinite; stroke: var(--rk-pipe-green); }

@keyframes flowAnim {
    from { stroke-dashoffset: 30; }
    to { stroke-dashoffset: 0; }
}

.rk-sim-data h4 {
    margin: 0 0 10px 0;
    font-size: 22px;
    font-weight: 900;
}

.rk-sim-data p {
    margin: 0 0 15px 0;
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-pipe-text);
}

.rk-data-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 16px;
    border-radius: 8px;
    font-weight: 800;
    font-size: 16px;
}

/* Specyficzne stany panelu */
.rk-state-danger { border-color: var(--rk-pipe-red); }
.rk-state-danger h4 { color: var(--rk-pipe-red); }
.rk-state-danger .rk-data-badge { background: var(--rk-pipe-red); color: #ffffff; }

.rk-state-safe { border-color: var(--rk-pipe-green); }
.rk-state-safe h4 { color: var(--rk-pipe-green); }
.rk-state-safe .rk-data-badge { background: var(--rk-pipe-green); color: #ffffff; }

@media (max-width: 768px) {
    .rk-pipe-header, .rk-pipe-body, .rk-sim-area { padding: 25px 20px; }
    .rk-sim-controls { grid-template-columns: 1fr; gap: 15px; }
    .rk-sim-display { flex-direction: column; text-align: center; gap: 20px; padding: 25px 20px; }
    .rk-pipe-visual { width: 100px; height: 100px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-srednica",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Jaka średnica rury zasilającej rozdzielacz zapewnia prawidłowy przepływ?",
    "description": "Szczegółowe obliczenia hydrauliczne dla pionu rozdzielacza. Zobacz drastyczne różnice w prędkości przepływu między rurą PEX 25 a PEX 32.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-srednica",
    "name": "Parametry Hydrauliczne Pionów Zasilających Rozdzielacze 2026",
    "description": "Baza danych określająca dopuszczalne prędkości przepływu dla głównych linii zasilających układy płaszczyznowe w oparciu o normę DIN 1988.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jaka średnica rury zasilającej rozdzielacz",
      "rura PEX 32 czy 25 do rozdzielacza",
      "prędkość przepływu w rurach CO",
      "szumy w instalacji centralnego ogrzewania",
      "kawitacja w pompie obiegowej"
    ],
    "measurementTechnique": "Przekształcenie wzoru na pole przekroju koła i objętość cylindra do analizy krytycznych wartości pola strumienia (v = 4*Q / pi*d^2).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "PEX 25x2.5 (dn 20mm) - Prędkość 1.52 m/s przy 12kW (Krytyczna kawitacja).",
        "PEX 32x3.0 (dn 26mm) - Prędkość 0.90 m/s przy 12kW (Stabilny przepływ)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-srednica",
    "name": "Symulator Prędkości Przepływu Pionu",
    "description": "Interaktywna aplikacja edukacyjna symulująca wpływ zmiany średnicy rury głównej na prędkość czynnika roboczego i ryzyko uszkodzenia pompy.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, JavaScript and CSS3 SVG Animations",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-pipe-container">
    <div class="rk-pipe-header">
        <h2>
            <svg class="rk-pipe-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                <path d="M2 12h4l3-9 5 18 3-9h5"></path>
            </svg>
            Jaka średnica rury zasilającej rozdzielacz zapewnia prawidłowy przepływ?
        </h2>
        <p>Średnica rury zasilającej <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacz do podłogówki</a> (pion zasilający) dla instalacji o łącznej mocy cieplnej do 15 kW musi mieć średnicę wewnętrzną wynoszącą minimum <strong>26 mm</strong> (co odpowiada rurze PEX 32x3 mm lub miedzi DN28), aby prędkość przepływu cieczy nie przekraczała bezpiecznej granicy <strong>0,8 m/s</strong> zgodnie z wytycznymi normy DIN 1988.</p>
    </div>

    <div class="rk-pipe-body">
        <h3>Obliczenia hydrauliczne dla pionu rozdzielacza</h3>
        <p>Zastosowanie zbyt małego przekroju drastycznie zwiększa opory jednostkowe i odcina rozdzielacz od wymaganego strumienia medium grzewczego. Przeanalizujmy konkretny przypadek: rozdzielacz obsługuje 10 pętli, łączna moc sekcji wynosi 12 kW, przy różnicy temperatur ΔT = 6 K. Wymagany przepływ sumaryczny to <strong>1,72 m³/h (0,000477 m³/s)</strong>.</p>
        
        <div class="rk-math-box">
            V = (4 × Q<sub>sek</sub>) / (π × d<sub>wew</sub>²)
        </div>
        
        <p>Gdzie <strong>V</strong> to prędkość przepływu, <strong>Q<sub>sek</sub></strong> to przepływ sumaryczny sekcji, a <strong>d<sub>wew</sub></strong> to rzeczywista średnica wewnętrzna rury. Zmiana rury zasilającej z 32 mm na 25 mm redukuje pole przekroju poprzecznego o ponad 40%, zmuszając ciecz do gwałtownego przyspieszenia.</p>
    </div>

    <div class="rk-sim-area">
        <h3 style="margin: 0 0 20px 0; font-size: 18px; color: var(--rk-pipe-dark);">Symulacja prędkości przepływu dla 12 kW:</h3>
        
        <div class="rk-sim-controls">
            <button class="rk-pipe-btn rk-btn-danger rk-active" id="btn-pipe-25">
                <h4>Wybierz: PEX 25x2.5</h4>
                <p>Średnica wewnętrzna 20 mm</p>
            </button>
            <button class="rk-pipe-btn rk-btn-safe" id="btn-pipe-32">
                <h4>Wybierz: PEX 32x3.0</h4>
                <p>Średnica wewnętrzna 26 mm</p>
            </button>
        </div>

        <div class="rk-sim-display rk-state-danger" id="pipe-display">
            <div class="rk-pipe-visual">
                <svg viewBox="0 0 100 100" width="100%" height="100%" fill="none" stroke-width="8" stroke-linecap="round">
                    <path d="M10 50 L90 50" stroke="#e2e8f0" stroke-width="24"/>
                    <path d="M10 50 L90 50" stroke="#f8fafc" stroke-width="16"/>
                    <path id="pipe-flow-anim" class="rk-flow-path rk-flow-fast" d="M10 50 L90 50" stroke-width="8"/>
                </svg>
            </div>
            <div class="rk-sim-data">
                <h4 id="pipe-result-title">Krytyczne przekroczenie (Kawitacja)</h4>
                <p id="pipe-result-desc">Wysoka prędkość medium generuje gigantyczne straty ciśnienia (ponad 800 Pa/m). Wywołuje to uciążliwe szumy w ścianach i generuje opór, którego przeciętna pompa obiegowa nie jest w stanie pokonać. Skutek: niedogrzane skrajne sekcje.</p>
                <div class="rk-data-badge" id="pipe-result-val">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="20" height="20"><polyline points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polyline></svg>
                    Prędkość: 1.52 m/s
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btn25 = document.getElementById('btn-pipe-25');
    var btn32 = document.getElementById('btn-pipe-32');
    var displayPanel = document.getElementById('pipe-display');
    var animPath = document.getElementById('pipe-flow-anim');
    var title = document.getElementById('pipe-result-title');
    var desc = document.getElementById('pipe-result-desc');
    var valBadge = document.getElementById('pipe-result-val');

    function setPipe25() {
        // Zmiana klas przycisków
        btn25.classList.add('rk-active');
        btn32.classList.remove('rk-active');

        // Zmiana stylów panelu głównego
        displayPanel.classList.remove('rk-state-safe');
        displayPanel.classList.add('rk-state-danger');

        // Zmiana animacji SVG
        animPath.classList.remove('rk-flow-slow');
        animPath.classList.add('rk-flow-fast');

        // Aktualizacja tekstów
        title.textContent = 'Krytyczne przekroczenie (Kawitacja)';
        desc.textContent = 'Wysoka prędkość medium generuje gigantyczne straty ciśnienia (ponad 800 Pa/m). Wywołuje to uciążliwe szumy w ścianach i generuje opór, którego przeciętna pompa obiegowa nie jest w stanie pokonać. Skutek: niedogrzane skrajne sekcje.';
        valBadge.innerHTML = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="20" height="20"><polyline points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polyline></svg> Prędkość: 1.52 m/s';
    }

    function setPipe32() {
        // Zmiana klas przycisków
        btn32.classList.add('rk-active');
        btn25.classList.remove('rk-active');

        // Zmiana stylów panelu głównego
        displayPanel.classList.remove('rk-state-danger');
        displayPanel.classList.add('rk-state-safe');

        // Zmiana animacji SVG
        animPath.classList.remove('rk-flow-fast');
        animPath.classList.add('rk-flow-slow');

        // Aktualizacja tekstów
        title.textContent = 'Stabilny, cichy przepływ (Optymalny)';
        desc.innerHTML = 'Prędkość spada do akceptowalnego poziomu, a liniowa strata ciśnienia maleje do niecałych 180 Pa/m. To gwarantuje stabilną i cichą dystrybucję energii do wszystkich rotametrów. Wybór odpowiedniej <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/">rury PEX</a> ratuje całą hydraulikę.';
        valBadge.innerHTML = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="20" height="20"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg> Prędkość: 0.90 m/s';
    }

    // Bezpieczne nasłuchiwacze bez operatorów logicznych
    btn25.addEventListener('click', function() {
        var isAlreadyActive = btn25.classList.contains('rk-active');
        if (isAlreadyActive === false) {
            setPipe25();
        }
    });

    btn32.addEventListener('click', function() {
        var isAlreadyActive = btn32.classList.contains('rk-active');
        if (isAlreadyActive === false) {
            setPipe32();
        }
    });
});
</script>



<style>
:root {
    --rk-tab-dark: #0f172a;
    --rk-tab-blue: #0284c7;
    --rk-tab-light: #f0f9ff;
    --rk-tab-border: #e2e8f0;
    --rk-tab-bg: #ffffff;
    --rk-tab-text: #475569;
    --rk-tab-highlight: #38bdf8;
    --rk-tab-green: #10b981;
}

.rk-tab-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-tab-bg);
    border-radius: 24px;
    box-shadow: 0 15px 35px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-tab-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-tab-header {
    padding: 35px 45px;
    background: linear-gradient(135deg, var(--rk-tab-dark) 0%, #1e293b 100%);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-tab-blue);
}

.rk-tab-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    line-height: 1.3;
}

.rk-tab-header-icon {
    width: 32px;
    height: 32px;
    color: var(--rk-tab-highlight);
    flex-shrink: 0;
}

.rk-tab-header p {
    font-size: 15px;
    line-height: 1.6;
    color: #cbd5e1;
    margin: 0;
}

/* Interfejs Symulatora */
.rk-tab-interactive {
    padding: 30px 45px;
    background: #f8fafc;
    border-bottom: 1px solid var(--rk-tab-border);
}

.rk-tab-slider-wrap {
    background: #ffffff;
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-tab-border);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-tab-slider-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}

.rk-tab-slider-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-tab-dark);
}

.rk-tab-slider-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-tab-blue);
}

.rk-slider-input {
    width: 100%;
    accent-color: var(--rk-tab-blue);
    cursor: pointer;
}

/* Karty Pomp (Zamiast standardowej tabeli) */
.rk-tab-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    padding: 35px 45px;
    background: #ffffff;
}

.rk-pump-card {
    background: #ffffff;
    border: 2px solid var(--rk-tab-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
}

.rk-pump-card.rk-active-card {
    border-color: var(--rk-tab-blue);
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.25);
    transform: translateY(-5px);
}

.rk-pump-card.rk-active-card::before {
    content: 'ZALECANA';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    background: var(--rk-tab-blue);
    color: #ffffff;
    text-align: center;
    font-size: 12px;
    font-weight: 900;
    padding: 4px 0;
    letter-spacing: 1px;
}

.rk-pump-header {
    padding: 30px 20px 20px;
    text-align: center;
    border-bottom: 1px solid var(--rk-tab-border);
    background: #f8fafc;
}

.rk-pump-header h3 {
    margin: 0;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-tab-dark);
}

.rk-pump-header span {
    display: block;
    font-size: 13px;
    color: var(--rk-tab-text);
    margin-top: 5px;
    font-weight: 600;
}

.rk-param-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.rk-param-item {
    display: flex;
    flex-direction: column;
    padding: 15px 20px;
    border-bottom: 1px solid #f1f5f9;
}

.rk-param-item:last-child {
    border-bottom: none;
}

.rk-param-label {
    font-size: 11px;
    text-transform: uppercase;
    color: #94a3b8;
    font-weight: 800;
    margin-bottom: 4px;
    letter-spacing: 0.5px;
}

.rk-param-value {
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-tab-dark);
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-param-value svg {
    width: 16px;
    height: 16px;
    color: var(--rk-tab-blue);
    flex-shrink: 0;
}

.rk-pump-price {
    padding: 20px;
    background: #f8fafc;
    text-align: center;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-tab-green);
    border-top: 1px solid var(--rk-tab-border);
}

/* Wnioski i kontekst */
.rk-tab-summary {
    padding: 30px 45px;
    background: #f0f9ff;
    border-top: 1px solid #bae6fd;
}

.rk-tab-summary p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: #0369a1;
}

.rk-tab-summary a {
    color: #0284c7;
    font-weight: 800;
    text-decoration: underline;
}

/* RWD - Akordeonowy stack dla mobile */
@media (max-width: 768px) {
    .rk-tab-header, .rk-tab-interactive, .rk-tab-grid, .rk-tab-summary { padding: 25px 20px; }
    .rk-tab-grid { grid-template-columns: 1fr; gap: 15px; }
    
    .rk-pump-card {
        border-width: 1px;
    }
    
    .rk-pump-card.rk-active-card {
        transform: translateY(0);
        border-width: 2px;
    }
    
    /* Mobilne zwijanie parametrów - ujawniają się tylko w aktywnej karcie */
    .rk-param-list, .rk-pump-price {
        display: none;
    }
    
    .rk-pump-card.rk-active-card .rk-param-list,
    .rk-pump-card.rk-active-card .rk-pump-price {
        display: block;
    }
    
    .rk-pump-header { padding: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-tabela",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Tabela porównawcza parametrów technicznych pomp obiegowych",
    "description": "Zestawienie techniczne parametrów i cen najpopularniejszych elektronicznych pomp obiegowych ErP: 25-40, 25-60 oraz 25-80 dedykowanych do instalacji podłogowych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-tabela",
    "name": "Zestawienie Parametrów Pomp Obiegowych 2026",
    "description": "Baza danych określająca specyfikację hydrauliczną i elektryczną (wysokość podnoszenia, moc W, przepływ, cena 2026) dla standardowych pomp instalacyjnych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "pompa klasy 25-40 parametry",
      "wysokość podnoszenia pompy 25-60",
      "pobór mocy pompy obiegowej do podłogówki",
      "cennik pomp do podłogówki 2026",
      "maksymalny przepływ wody w podłogówce"
    ],
    "measurementTechnique": "Kompilacja i porównanie deklaracji właściwości użytkowych (EEI ≤ 0,20) producentów pomp elektronicznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "25-40: 4m, 2.4 m3/h, 3-22W, do 100m2",
        "25-60: 6m, 3.4 m3/h, 3-40W, 100-220m2",
        "25-80: 8m, 4.5 m3/h, 4-60W, >220m2"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-tabela",
    "name": "Interaktywna Porównywarka Pomp Obiegowych",
    "description": "Moduł aplikacyjny pozwalający na dopasowanie i wizualizację parametrów typoszeregu pomp na podstawie suwaka metrażu budynku.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-tab-container">
    <div class="rk-tab-header">
        <h2>
            <svg class="rk-tab-header-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                <rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect>
                <line x1="3" y1="9" x2="21" y2="9"></line>
                <line x1="9" y1="21" x2="9" y2="9"></line>
            </svg>
            Tabela porównawcza parametrów technicznych pomp obiegowych
        </h2>
        <p>Poniższa specyfikacja przedstawia zestawienie kluczowych parametrów dla trzech najpopularniejszych typoszeregów elektronicznych pomp obiegowych (zgodnych z dyrektywą ErP, <strong>EEI ≤ 0,20</strong>) stosowanych w budownictwie jednorodzinnym.</p>
    </div>

    <div class="rk-tab-interactive">
        <div class="rk-tab-slider-wrap">
            <div class="rk-tab-slider-header">
                <span class="rk-tab-slider-title">Symulowana powierzchnia podłogówki:</span>
                <span class="rk-tab-slider-val"><span id="rk-tab-area-val">120</span> m²</span>
            </div>
            <input type="range" id="rk-tab-area-slider" class="rk-slider-input" min="50" max="350" step="10" value="120">
        </div>
    </div>

    <div class="rk-tab-grid">
        
        <div class="rk-pump-card" id="rk-pump-40">
            <div class="rk-pump-header">
                <h3>Klasa 25-40</h3>
                <span>Małe układy (np. 4m słupa wody)</span>
            </div>
            <ul class="rk-param-list">
                <li class="rk-param-item">
                    <span class="rk-param-label">Max. wysokość podnoszenia</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 19V5M5 12l7-7 7 7"/></svg> 4,0 m (40 kPa)</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Max. przepływ objętościowy</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 12h-4l-3 9L9 3l-3 9H2"/></svg> 2,4 m³/h</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Pobór mocy (Min-Max)</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg> 3 W – 22 W</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Sugerowana powierzchnia</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/></svg> Do 100 m²</span>
                </li>
            </ul>
            <div class="rk-pump-price">450 – 600 PLN</div>
        </div>

        <div class="rk-pump-card rk-active-card" id="rk-pump-60">
            <div class="rk-pump-header">
                <h3>Klasa 25-60</h3>
                <span>Standardowe domy (np. 6m słupa wody)</span>
            </div>
            <ul class="rk-param-list">
                <li class="rk-param-item">
                    <span class="rk-param-label">Max. wysokość podnoszenia</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 19V5M5 12l7-7 7 7"/></svg> 6,0 m (60 kPa)</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Max. przepływ objętościowy</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 12h-4l-3 9L9 3l-3 9H2"/></svg> 3,4 m³/h</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Pobór mocy (Min-Max)</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg> 3 W – 40 W</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Sugerowana powierzchnia</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/></svg> 100 m² – 220 m²</span>
                </li>
            </ul>
            <div class="rk-pump-price">650 – 850 PLN</div>
        </div>

        <div class="rk-pump-card" id="rk-pump-80">
            <div class="rk-pump-header">
                <h3>Klasa 25-80</h3>
                <span>Rozbudowane układy (np. 8m słupa wody)</span>
            </div>
            <ul class="rk-param-list">
                <li class="rk-param-item">
                    <span class="rk-param-label">Max. wysokość podnoszenia</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 19V5M5 12l7-7 7 7"/></svg> 8,0 m (80 kPa)</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Max. przepływ objętościowy</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 12h-4l-3 9L9 3l-3 9H2"/></svg> 4,5 m³/h</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Pobór mocy (Min-Max)</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg> 4 W – 60 W</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Sugerowana powierzchnia</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/></svg> Powyżej 220 m²</span>
                </li>
            </ul>
            <div class="rk-pump-price">1100 – 1400 PLN</div>
        </div>

    </div>

    <div class="rk-tab-summary">
        <p>
            Analizując powyższe parametry z tabeli, widać wyraźnie, że wybór odpowiedniego modelu musi opierać się na precyzyjnych obliczeniach dla danego budynku, a nie na zasadzie „im większa, tym lepsza”. Praca przewymiarowanej <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompy klasy 25-80</a> w małym domku drastycznie podnosi roczny <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/">koszt eksploatacji instalacji</a> ze względu na wyższe zużycie prądu [W] oraz generuje uciążliwe szumy. Z kolei zbyt słaba pompa 25-40 w budynku piętrowym nie poradzi sobie z oporami długich pętli hydraulicznych, pozostawiając posadzkę chłodną.
        </p>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var slider = document.getElementById('rk-tab-area-slider');
    var valDisplay = document.getElementById('rk-tab-area-val');
    var p40 = document.getElementById('rk-pump-40');
    var p60 = document.getElementById('rk-pump-60');
    var p80 = document.getElementById('rk-pump-80');

    function updateHighlight() {
        var area = parseInt(slider.value);
        valDisplay.textContent = area;

        // Bezpieczny reset klas
        p40.classList.remove('rk-active-card');
        p60.classList.remove('rk-active-card');
        p80.classList.remove('rk-active-card');

        // Logika przypisania na podstawie powierzchni (bez użycia &&)
        if (area <= 100) {
            p40.classList.add('rk-active-card');
        } else if (area <= 220) {
            p60.classList.add('rk-active-card');
        } else {
            p80.classList.add('rk-active-card');
        }
    }

    slider.addEventListener('input', updateHighlight);
});
</script>



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-blue: #0284c7;
    --rk-calc-blue-light: #f0f9ff;
    --rk-calc-border: #e2e8f0;
    --rk-calc-bg: #ffffff;
    --rk-calc-text: #475569;
    --rk-calc-green: #10b981;
    --rk-calc-red: #ef4444;
}

.rk-calc-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-calc-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-calc-border);
    overflow: hidden;
}

/* Nagłówek Kalkulatora */
.rk-calc-header {
    padding: 35px 45px;
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, #1e293b 100%);
    position: relative;
    border-bottom: 4px solid var(--rk-calc-blue);
}

.rk-calc-header h2 {
    color: #ffffff;
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 10px 0;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-calc-header p {
    color: #cbd5e1;
    font-size: 15px;
    line-height: 1.6;
    margin: 0;
}

.rk-calc-icon-main {
    width: 32px;
    height: 32px;
    color: #38bdf8;
}

/* Sekcja Wprowadzania Danych */
.rk-calc-body {
    padding: 35px 45px;
    background: #f8fafc;
}

.rk-calc-body h3 {
    margin: 0 0 20px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-calc-dark);
}

.rk-calc-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-bottom: 25px;
}

.rk-input-group {
    display: flex;
    flex-direction: column;
}

.rk-input-group label {
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-calc-text);
    margin-bottom: 8px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-input-group input, 
.rk-input-group select {
    padding: 14px 16px;
    border: 1px solid #cbd5e1;
    border-radius: 12px;
    font-size: 16px;
    font-weight: 600;
    color: var(--rk-calc-dark);
    background: #ffffff;
    transition: border-color 0.3s, box-shadow 0.3s;
}

.rk-input-group input:focus, 
.rk-input-group select:focus {
    outline: none;
    border-color: var(--rk-calc-blue);
    box-shadow: 0 0 0 3px rgba(2, 132, 199, 0.15);
}

.rk-btn-calc {
    width: 100%;
    padding: 18px;
    background: var(--rk-calc-blue);
    color: #ffffff;
    border: none;
    border-radius: 12px;
    font-size: 18px;
    font-weight: 800;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 10px;
}

.rk-btn-calc:hover {
    background: #0369a1;
    transform: translateY(-2px);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.4);
}

/* Sekcja Wyników i Suwaków */
.rk-calc-results {
    padding: 35px 45px;
    background: #ffffff;
    border-top: 1px solid var(--rk-calc-border);
}

.rk-sliders-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
    margin-bottom: 30px;
}

.rk-slider-box {
    background: var(--rk-calc-blue-light);
    padding: 20px;
    border-radius: 16px;
    border: 1px solid #bae6fd;
}

.rk-slider-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
}

.rk-slider-header span {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-calc-text);
}

.rk-slider-val {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-calc-blue);
}

.rk-range {
    width: 100%;
    accent-color: var(--rk-calc-blue);
    cursor: pointer;
}

/* Rekomendacja */
.rk-recommendation {
    padding: 20px 25px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    gap: 15px;
    font-size: 18px;
    font-weight: 800;
    transition: all 0.4s ease;
}

/* Wykres */
.rk-chart-wrapper {
    height: 450px;
    padding: 20px;
    background: #ffffff;
    border: 1px solid var(--rk-calc-border);
    border-radius: 16px;
    margin: 0 45px 40px;
}

@media (max-width: 768px) {
    .rk-calc-header, .rk-calc-body, .rk-calc-results { padding: 25px 20px; }
    .rk-calc-grid { grid-template-columns: 1fr 1fr; }
    .rk-sliders-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-chart-wrapper { margin: 0 20px 30px; height: 350px; }
}

@media (max-width: 480px) {
    .rk-calc-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-kalkulator",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Kalkulator Doboru Pompy Obiegowej - Wykres i Obliczenia OZC",
    "description": "Profesjonalny kalkulator online wyznaczający punkt pracy pompy (przepływ Q, wysokość podnoszenia H) na podstawie obciążenia cieplnego i oporów hydraulicznych rur.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-kalkulator",
    "name": "Baza Parametrów Hydraulicznych i Cieplnych Ogrzewania Podłogowego 2026",
    "description": "Algorytmiczny model obliczeniowy oporów jednostkowych dla rur PEX/PERT oraz wymaganego zładu wody na podstawie OZC (Δt, zapotrzebowanie W/m2).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator pompy obiegowej",
      "obliczanie przepływu wody ogrzewanie podłogowe",
      "opory hydrauliczne rury PEX 16",
      "wykres charakterystyki pompy 25-60",
      "jak dobrać pompę do podłogówki"
    ],
    "measurementTechnique": "Wyznaczenie punktu przecięcia krzywej oporów instalacji z nomogramem wydajności pomp obiegowych (Q/H) zgodnych z dyrektywą ErP.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rura PEX 16 - bazowy opór szacunkowy przyjmowany w modelu: 0.015 mH2O/m",
        "Rura PEX 17 - bazowy opór szacunkowy przyjmowany w modelu: 0.013 mH2O/m",
        "Ciepło właściwe i gęstość wody przeliczone stałą 1163"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-kalkulator",
    "name": "Kalkulator Doboru Pompy Ogrzewania Płaszczyznowego",
    "description": "Interaktywny symulator pozwalający na wyznaczenie przepływu objętościowego i wysokości podnoszenia w czasie rzeczywistym z wizualizacją na wykresie krzywych pomp.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5 Canvas",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-container">
    <div class="rk-calc-header">
        <h2>
            <svg class="rk-calc-icon-main" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                <rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect>
                <line x1="8" y1="21" x2="16" y2="21"></line>
                <line x1="12" y1="17" x2="12" y2="21"></line>
                <polyline points="10 7 14 10 10 13"></polyline>
            </svg>
            Kalkulator Doboru Pompy Obiegowej
        </h2>
        <p>Wprowadź precyzyjne dane projektowe lub estymowane z audytu OZC, aby wyznaczyć punkt pracy instalacji i sprawdzić go na tle rzeczywistych charakterystyk pomp.</p>
    </div>

    <div class="rk-calc-body">
        <h3>1. Parametry Instalacji Podłogowej</h3>
        <div class="rk-calc-grid">
            <div class="rk-input-group">
                <label>Powierzchnia (m²)</label>
                <input type="number" id="rk-in-area" value="120" min="10">
            </div>
            <div class="rk-input-group">
                <label>Moc cieplna (W/m²)</label>
                <input type="number" id="rk-in-load" value="60" min="10">
            </div>
            <div class="rk-input-group">
                <label>Różnica temp. ΔT (K)</label>
                <input type="number" id="rk-in-dt" value="5" min="2" max="15">
            </div>
            <div class="rk-input-group">
                <label>Ilość pętli</label>
                <input type="number" id="rk-in-loops" value="10" min="1">
            </div>
            <div class="rk-input-group">
                <label>Długość maks. pętli (m)</label>
                <input type="number" id="rk-in-avg" value="80" min="10">
            </div>
            <div class="rk-input-group">
                <label>Średnica rury zewnętrzna</label>
                <select id="rk-in-pipe">
                    <option value="16">PEX/PERT 16x2.0</option>
                    <option value="17" selected>PEX/PERT 17x2.0</option>
                    <option value="20">PEX/PERT 20x2.0</option>
                </select>
            </div>
        </div>
        <button id="rk-master-calc-btn" class="rk-btn-calc">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="24" height="24"><polygon points="5 3 19 12 5 21 5 3"></polygon></svg>
            Oblicz punkt pracy i odśwież wykres
        </button>
    </div>

    <div class="rk-calc-results">
        <h3>2. Obliczony punkt pracy i autoadaptacja</h3>
        <div class="rk-sliders-grid">
            <div class="rk-slider-box">
                <div class="rk-slider-header">
                    <span>Przepływ (Q)</span>
                    <span class="rk-slider-val"><span id="rk-disp-q">1.40</span> m³/h</span>
                </div>
                <input type="range" id="rk-slider-q" class="rk-range" min="0.1" max="4" step="0.05" value="1.40">
            </div>
            <div class="rk-slider-box">
                <div class="rk-slider-header">
                    <span>Wysokość podnoszenia (H)</span>
                    <span class="rk-slider-val"><span id="rk-disp-h">4.00</span> m</span>
                </div>
                <input type="range" id="rk-slider-h" class="rk-range" min="0.1" max="8" step="0.05" value="4.00">
            </div>
        </div>
        
        <div id="rk-rec-box" class="rk-recommendation">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="28" height="28"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
            <span>Rekomendowany typoszereg pompy: <span id="rk-final-pump">25-60</span></span>
        </div>
    </div>

    <div class="rk-chart-wrapper">
        <canvas id="rk-master-canvas"></canvas>
    </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js"></script>

<script>
(function() {
    "use strict";
    let masterChart = null;
    let masterQ = 1.40;
    let masterH = 4.00;

    const pumpCurves = {
        "25-40": [{x:0,y:4}, {x:0.5,y:3.8}, {x:1,y:3.3}, {x:1.5,y:2.5}, {x:2,y:1.5}, {x:2.5,y:0.3}, {x:2.6,y:0}],
        "25-60": [{x:0,y:6}, {x:1,y:5.4}, {x:2,y:4}, {x:2.5,y:3.2}, {x:3,y:2.2}, {x:3.5,y:0.8}, {x:3.8,y:0}],
        "25-80": [{x:0,y:8}, {x:1,y:7.4}, {x:2,y:6.2}, {x:3,y:4.4}, {x:3.5,y:3.2}, {x:4,y:1.8}]
    };

    function getInstallationData(q, h) {
        let pts = [];
        let k = h / (q * q);
        for (let i = 0; i <= 4.1; i += 0.1) { pts.push({x: i, y: k * i * i}); }
        return pts;
    }

    function isPointBelowCurve(q, h, curve) {
        let maxQ = curve[curve.length - 1].x;
        if (q > maxQ) {
            return false;
        }
        
        for (let i = 0; i < curve.length - 1; i++) {
            let p1 = curve[i];
            let p2 = curve[i+1];
            
            let isInsideRange = false;
            if (q >= p1.x) {
                if (q <= p2.x) {
                    isInsideRange = true;
                }
            }
            
            if (isInsideRange) {
                let ratio = (q - p1.x) / (p2.x - p1.x);
                let maxHAtQ = p1.y + ratio * (p2.y - p1.y);
                if (h <= maxHAtQ) {
                    return true;
                } else {
                    return false;
                }
            }
        }
        return false;
    }

    function initChart() {
        const ctx = document.getElementById('rk-master-canvas');
        if (!ctx) {
            setTimeout(initChart, 200);
            return;
        }
        if (typeof Chart === 'undefined') {
            setTimeout(initChart, 200);
            return;
        }

        masterChart = new Chart(ctx, {
            type: 'scatter',
            data: {
                datasets: [
                    { label: 'Krzywa 25-40', data: pumpCurves["25-40"], borderColor: '#f59e0b', showLine: true, tension: 0.3, pointRadius: 0, borderWidth: 3 },
                    { label: 'Krzywa 25-60', data: pumpCurves["25-60"], borderColor: '#0ea5e9', showLine: true, tension: 0.3, pointRadius: 0, borderWidth: 3 },
                    { label: 'Krzywa 25-80', data: pumpCurves["25-80"], borderColor: '#8b5cf6', showLine: true, tension: 0.3, pointRadius: 0, borderWidth: 3 },
                    { label: 'Opór Instalacji', data: getInstallationData(masterQ, masterH), borderColor: '#94a3b8', borderDash: [6, 6], showLine: true, pointRadius: 0, borderWidth: 2 },
                    { label: 'Punkt Pracy', data: [{x: masterQ, y: masterH}], backgroundColor: '#ef4444', pointRadius: 8, hoverRadius: 10, z: 10 }
                ]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                scales: {
                    x: { min: 0, max: 4.5, title: { display: true, text: 'Przepływ objętościowy Q [m³/h]', font: {weight: 'bold'} } },
                    y: { min: 0, max: 8.5, title: { display: true, text: 'Wysokość podnoszenia H [m]', font: {weight: 'bold'} } }
                },
                plugins: { 
                    legend: { position: 'top', labels: { font: {family: 'Inter', weight: '600'} } },
                    tooltip: { enabled: false }
                }
            }
        });

        document.getElementById('rk-master-calc-btn').addEventListener('click', function() {
            const area = parseFloat(document.getElementById('rk-in-area').value);
            const load = parseFloat(document.getElementById('rk-in-load').value);
            const dt = parseFloat(document.getElementById('rk-in-dt').value);
            const loops = parseFloat(document.getElementById('rk-in-loops').value);
            const avg = parseFloat(document.getElementById('rk-in-avg').value);
            const pipeVal = parseInt(document.getElementById('rk-in-pipe').value);

            let flow = (area * load) / (1163 * dt);
            
            let res = 0.015;
            if (pipeVal === 17) {
                res = 0.013;
            } else if (pipeVal === 20) {
                res = 0.010;
            }

            let extraRes = 0.8;
            if (loops <= 6) {
                extraRes = 0.4;
            }

            let head = (avg * res * 1.35) + extraRes;

            document.getElementById('rk-slider-q').value = flow.toFixed(2);
            document.getElementById('rk-slider-h').value = head.toFixed(2);
            
            refreshUI(flow, head);
        });

        document.getElementById('rk-slider-q').addEventListener('input', function(e) {
            refreshUI(parseFloat(e.target.value), masterH);
        });
        
        document.getElementById('rk-slider-h').addEventListener('input', function(e) {
            refreshUI(masterQ, parseFloat(e.target.value));
        });
        
        refreshUI(1.4, 4.0);
    }

    function refreshUI(q, h) {
        masterQ = q; 
        masterH = h;
        
        document.getElementById('rk-disp-q').innerText = q.toFixed(2);
        document.getElementById('rk-disp-h').innerText = h.toFixed(2);

        let recText = "Przekroczenie parametrów";
        let bgColor = "#fef2f2";
        let borderColor = "#ef4444";
        let textColor = "#b91c1c";

        if (isPointBelowCurve(q, h, pumpCurves["25-40"])) {
            recText = "25-40 (Zalecana optymalna)";
            bgColor = "#f0fdf4";
            borderColor = "#22c55e";
            textColor = "#15803d";
        } else if (isPointBelowCurve(q, h, pumpCurves["25-60"])) {
            recText = "25-60 (Zalecana optymalna)";
            bgColor = "#f0fdf4";
            borderColor = "#22c55e";
            textColor = "#15803d";
        } else if (isPointBelowCurve(q, h, pumpCurves["25-80"])) {
            recText = "25-80 (Zalecana mocna)";
            bgColor = "#f0fdf4";
            borderColor = "#22c55e";
            textColor = "#15803d";
        }

        const recBox = document.getElementById('rk-rec-box');
        document.getElementById('rk-final-pump').innerText = recText;
        
        recBox.style.backgroundColor = bgColor;
        recBox.style.borderLeft = "5px solid " + borderColor;
        recBox.style.color = textColor;

        if (masterChart) {
            masterChart.data.datasets[3].data = getInstallationData(q, h);
            masterChart.data.datasets[4].data = [{x: q, y: h}];
            masterChart.update('none');
        }
    }

    if (document.readyState === 'complete') {
        initChart();
    } else {
        window.addEventListener('load', initChart);
    }
})();
</script>



<style>
:root {
    --rk-proj-dark: #0f172a;
    --rk-proj-blue: #0284c7;
    --rk-proj-blue-light: #e0f2fe;
    --rk-proj-cyan: #06b6d4;
    --rk-proj-gray: #f8fafc;
    --rk-proj-border: #e2e8f0;
    --rk-proj-text: #475569;
    --rk-proj-gold: #fbbf24;
}

.rk-proj-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 20px 40px -15px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-proj-blue);
    overflow: hidden;
}

/* Nagłówek Sekcji */
.rk-proj-header {
    padding: 35px 45px;
    background: linear-gradient(135deg, var(--rk-proj-dark) 0%, #1e293b 100%);
    color: #ffffff;
    position: relative;
}

.rk-proj-header::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: linear-gradient(90deg, var(--rk-proj-blue), var(--rk-proj-cyan));
}

.rk-proj-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    line-height: 1.3;
    color: #ffffff;
}

.rk-proj-header p {
    font-size: 16px;
    line-height: 1.6;
    color: #cbd5e1;
    margin: 0;
}

/* Interaktywny Ekosystem */
.rk-proj-ecosystem {
    display: flex;
    padding: 0;
    background: #ffffff;
}

/* Lewa strona - Triggery */
.rk-proj-nav {
    width: 45%;
    background: var(--rk-proj-gray);
    padding: 30px;
    border-right: 1px solid var(--rk-proj-border);
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-proj-trigger {
    background: #ffffff;
    border: 1px solid var(--rk-proj-border);
    padding: 20px;
    border-radius: 12px;
    cursor: pointer;
    text-align: left;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 15px;
    position: relative;
    overflow: hidden;
}

.rk-proj-trigger::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    height: 100%;
    width: 4px;
    background: transparent;
    transition: background 0.3s;
}

.rk-proj-trigger:hover {
    box-shadow: 0 4px 12px rgba(0,0,0,0.05);
    border-color: #cbd5e1;
}

.rk-proj-trigger.rk-active {
    background: var(--rk-proj-blue-light);
    border-color: var(--rk-proj-blue);
    box-shadow: inset 0 0 0 1px var(--rk-proj-blue);
}

.rk-proj-trigger.rk-active::before {
    background: var(--rk-proj-blue);
}

.rk-trigger-icon {
    width: 32px;
    height: 32px;
    color: var(--rk-proj-text);
    flex-shrink: 0;
    transition: color 0.3s;
}

.rk-proj-trigger.rk-active .rk-trigger-icon {
    color: var(--rk-proj-blue);
}

.rk-proj-trigger h3 {
    margin: 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-proj-dark);
    line-height: 1.3;
}

/* Prawa strona - Kontent */
.rk-proj-content-area {
    width: 55%;
    padding: 40px;
    position: relative;
    background: #ffffff;
}

.rk-proj-panel {
    display: none;
    animation: fadeInPanel 0.5s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

.rk-proj-panel.rk-active {
    display: block;
}

@keyframes fadeInPanel {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-proj-panel-icon {
    width: 48px;
    height: 48px;
    color: var(--rk-proj-cyan);
    margin-bottom: 20px;
}

.rk-proj-panel h4 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-proj-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-proj-panel p {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-proj-text);
    margin: 0 0 15px 0;
}

/* Wyróżnik inżynieryjny wewnątrz panelu */
.rk-proj-alert {
    background: #fffbeb;
    border-left: 4px solid var(--rk-proj-gold);
    padding: 15px;
    border-radius: 0 8px 8px 0;
    margin-top: 20px;
}

.rk-proj-alert p {
    color: #b45309;
    font-size: 14px;
    font-weight: 600;
    margin: 0;
}

/* Mocne CTA */
.rk-proj-cta-section {
    padding: 40px 45px;
    background: linear-gradient(to right, #f8fafc, #f1f5f9);
    border-top: 1px solid var(--rk-proj-border);
    text-align: center;
}

.rk-proj-cta-section h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-proj-dark);
    margin: 0 0 15px 0;
}

.rk-proj-cta-section p {
    font-size: 16px;
    line-height: 1.6;
    color: var(--rk-proj-text);
    max-width: 700px;
    margin: 0 auto 25px auto;
}

.rk-btn-mega {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-proj-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 22px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 15px 30px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-btn-mega:hover {
    transform: translateY(-5px);
    background: #0369a1;
    box-shadow: 0 20px 40px -5px rgba(2, 132, 199, 0.5);
    border-color: #7dd3fc;
}

.rk-btn-mega svg {
    transition: transform 0.3s;
}

.rk-btn-mega:hover svg {
    transform: translateX(6px);
}

/* RWD - Zmiana na układ pionowy (akordeonowy flow) dla mobile */
@media (max-width: 768px) {
    .rk-proj-header { padding: 25px 20px; }
    .rk-proj-header h2 { font-size: 22px; }
    
    .rk-proj-ecosystem { flex-direction: column; }
    .rk-proj-nav { width: 100%; border-right: none; border-bottom: 1px solid var(--rk-proj-border); padding: 20px; }
    .rk-proj-content-area { width: 100%; padding: 25px 20px; }
    
    .rk-proj-panel h4 { font-size: 20px; }
    
    .rk-proj-cta-section { padding: 30px 20px; }
    .rk-btn-mega { width: 100%; padding: 18px 15px; font-size: 15px; flex-direction: column; gap: 8px; text-align: center; }
    .rk-btn-mega svg { transform: rotate(90deg); }
    .rk-btn-mega:hover svg { transform: rotate(90deg) translateY(5px); }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-wplyw",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Jak dobór pompy obiegowej wpływa na projekt ogrzewania podłogowego?",
    "description": "Analiza powiązań pomiędzy doborem pompy obiegowej a audytem OZC, rozstawem rur, grubością wylewki oraz sprzęgłem hydraulicznym w układach z pompą ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-wplyw",
    "name": "Macierz Wpływu Parametrów Projektowych na Dobór Pompy 2026",
    "description": "Zestawienie korelacji między składowymi projektu ogrzewania podłogowego (OZC, dylatacje, bufor ciepła) a wydajnością pompy obiegowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt instalacji ogrzewania podłogowego podłogówki",
      "obliczenia OZC a dobór pompy",
      "rozstaw rur w podłogówce a opory hydrauliczne",
      "bezwładność cieplna wylewki jastrychowej",
      "sprzęgło hydrauliczne w układzie z pompą ciepła"
    ],
    "measurementTechnique": "Symulacja zmian strumienia objętościowego i oporów hydraulicznych w odpowiedzi na modyfikacje parametrów budowlanych (temperatura, rozstaw, buforowanie).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "OZC ustala moc, co definiuje przepływ masowy.",
        "Rozstaw rur definiuje długość pętli, co warunkuje straty ciśnienia.",
        "Masa wylewki decyduje o ciągłości pracy pompy obiegowej.",
        "Bufor wymusza stosowanie dodatkowych grup pompowych i odsprzężenia."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-wplyw",
    "name": "Symulator Wpływu Projektowego",
    "description": "Interaktywny panel edukacyjny demonstrujący nierozerwalne zależności układu hydraulicznego na etapie projektowania domu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-proj-container">
    <div class="rk-proj-header">
        <h2>
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="32" height="32" style="color: var(--rk-proj-cyan);">
                <polygon points="12 2 2 7 12 12 22 7 12 2"></polygon>
                <polyline points="2 17 12 22 22 17"></polyline>
                <polyline points="2 12 12 17 22 12"></polyline>
            </svg>
            Jak dobór pompy obiegowej wpływa na projekt ogrzewania podłogowego?
        </h2>
        <p>Wybór punktu pracy pompy obiegowej jest nierozerwalnie połączony z kluczowymi składowymi całego projektu technicznego i bezpośrednio wpływa na sprawność emisyjną układu. Prawidłowy system opiera się na symbiozie hydrauliki z termodynamiką budynku.</p>
    </div>

    <div class="rk-proj-ecosystem">
        <div class="rk-proj-nav">
            <button class="rk-proj-trigger rk-active" data-target="panel-ozc">
                <svg class="rk-trigger-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                <h3>Obliczenia OZC i Delta T</h3>
            </button>
            <button class="rk-proj-trigger" data-target="panel-rury">
                <svg class="rk-trigger-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                <h3>Rozstaw rur a hydraulika</h3>
            </button>
            <button class="rk-proj-trigger" data-target="panel-wylewka">
                <svg class="rk-trigger-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="7" width="20" height="14" rx="2" ry="2"></rect><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path></svg>
                <h3>Wylewka i bezwładność</h3>
            </button>
            <button class="rk-proj-trigger" data-target="panel-sprzeglo">
                <svg class="rk-trigger-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="16"></line><line x1="8" y1="12" x2="16" y2="12"></line></svg>
                <h3>Sprzęgło i bufor ciepła</h3>
            </button>
        </div>

        <div class="rk-proj-content-area">
            
            <div class="rk-proj-panel rk-active" id="panel-ozc">
                <svg class="rk-proj-panel-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                <h4>Powiązanie z OZC i temperaturą zasilania</h4>
                <p>Profesjonalny bilans cieplny budynku (<a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">obliczenia OZC</a>) określa dokładne zapotrzebowanie na energię każdego pomieszczenia. Jeśli projektant zakłada niską temperaturę zasilania pompy ciepła (np. 35°C), automatycznie wymusza to mniejszą różnicę temperatur <strong>(ΔT = 5 K)</strong>.</p>
                <div class="rk-proj-alert">
                    <p>Skutek hydrauliczny: Mała delta oznacza konieczność przetłoczenia znacznie większego strumienia wody. Kalkulator wykaże gigantyczny przepływ, więc pompa obiegowa musi być odpowiednio mocniejsza.</p>
                </div>
            </div>

            <div class="rk-proj-panel" id="panel-rury">
                <svg class="rk-proj-panel-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                <h4>Rozstaw rur a długość pętli</h4>
                <p>Aby zredukować wymagany przepływ i temperaturę zasilania w salonie z dużymi przeszkleniami, stosuje się gęsty rozstaw rur (co 10 cm zamiast standardowych 15 cm). Zwiększa to jednak drastycznie całkowitą długość rur w pomieszczeniu.</p>
                <p>Jeśli projektant nie podzieli tego salonu na dwie lub trzy niezależne pętle, powstanie jedna gigantyczna pętla o długości np. 140 m. Jej opór hydrauliczny <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">zdławi przepływ do zera</a>, uniemożliwiając prawidłowe zbalansowanie rozdzielacza i zmuszając pompę do skrajnego wysiłku.</p>
            </div>

            <div class="rk-proj-panel" id="panel-wylewka">
                <svg class="rk-proj-panel-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="7" width="20" height="14" rx="2" ry="2"></rect><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path></svg>
                <h4>Wylewka i bezwładność cieplna</h4>
                <p>Grubość wylewki betonowej lub anhydrytowej nad rurami (standardowo 5-6 cm czystego jastrychu nad rurą) tworzy ogromny akumulator ciepła – to dosłownie <a href="https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/">największy magazyn energii w Twoim domu</a>.</p>
                <p>Aby efektywnie ładować ten magazyn przy współpracy z rekuperacją, pompa musi pracować w sposób ciągły, stabilny i ze stałym ciśnieniem proporcjonalnym, dynamicznie reagując na zamykanie <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłowników termoelektrycznych</a> sterowania strefowego. Mikroprocesor pompy kompensuje każdą zmianę oporu.</p>
            </div>

            <div class="rk-proj-panel" id="panel-sprzeglo">
                <svg class="rk-proj-panel-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="16"></line><line x1="8" y1="12" x2="16" y2="12"></line></svg>
                <h4>Sprzęgło hydrauliczne i bufor ciepła</h4>
                <p>W rozbudowanych instalacjach (np. parter i piętro), gdy wbudowana w pompę ciepła jednostka tłocząca nie radzi sobie z oporami całego domu, niezbędne staje się hydrauliczne odsprzęgnięcie układu za pomocą <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufora ciepła</a> lub sprzęgła.</p>
                <div class="rk-proj-alert">
                    <p>Skutek projektowy: Zastosowanie sprzęgła wymusza dobór dodatkowych, zewnętrznych pomp obiegowych dla każdej ze stref. Brak prawidłowego zbilansowania przepływów (obieg pierwotny vs wtórny) doprowadzi do tzw. podkradania wody i błędów w pracy sprężarki pompy ciepła.</p>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-proj-cta-section">
        <h3>Nie zdawaj się na los w kwestii własnego domu</h3>
        <p>Precyzyjny dobór pomp obiegowych, weryfikacja oporów pętli i zrównoważenie hydrauliczne to fundament cichej, energooszczędnej instalacji współpracującej z niskotemperaturową pompą ciepła. Zabezpiecz swój budżet przed kosztownymi poprawkami.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-mega">
            ZAMÓW PROFESJONALNY PROJEKT INSTALACJI OGRZEWANIA PODŁOGOWEGO
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var triggers = document.querySelectorAll('.rk-proj-trigger');
    var panels = document.querySelectorAll('.rk-proj-panel');

    for (var i = 0; i < triggers.length; i++) {
        triggers[i].addEventListener('click', function() {
            var targetId = this.getAttribute('data-target');

            // Resetowanie wszystkich przycisków (bezpiecznie bez użycia '&#038;&#038;')
            for (var j = 0; j < triggers.length; j++) {
                triggers[j].classList.remove('rk-active');
            }
            // Aktywacja klikniętego
            this.classList.add('rk-active');

            // Ukrywanie wszystkich paneli
            for (var k = 0; k < panels.length; k++) {
                panels[k].classList.remove('rk-active');
            }
            
            // Pokaż docelowy panel
            var activePanel = document.getElementById(targetId);
            if (activePanel !== null) {
                activePanel.classList.add('rk-active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-err-dark: #1e293b;
    --rk-err-red: #ef4444;
    --rk-err-red-light: #fef2f2;
    --rk-err-green: #10b981;
    --rk-err-green-light: #f0fdf4;
    --rk-err-border: #e2e8f0;
    --rk-err-bg: #ffffff;
    --rk-err-text: #475569;
}

.rk-err-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-err-bg);
    border-radius: 20px;
    box-shadow: 0 10px 30px -10px rgba(239, 68, 68, 0.15);
    border: 1px solid var(--rk-err-red);
    overflow: hidden;
}

/* Nagłówek sekcji */
.rk-err-header {
    padding: 35px 45px;
    background: linear-gradient(135deg, var(--rk-err-dark) 0%, #0f172a 100%);
    position: relative;
    border-bottom: 4px solid var(--rk-err-red);
}

.rk-err-header h2 {
    color: #ffffff;
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 12px;
    line-height: 1.3;
}

.rk-err-header-icon {
    width: 36px;
    height: 36px;
    color: var(--rk-err-red);
    flex-shrink: 0;
}

.rk-err-header p {
    color: #cbd5e1;
    font-size: 16px;
    line-height: 1.6;
    margin: 0;
    max-width: 800px;
}

/* Siatka błędów */
.rk-err-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    padding: 35px 45px;
    background: #f8fafc;
}

.rk-err-card {
    background: var(--rk-err-bg);
    border: 1px solid var(--rk-err-border);
    border-radius: 16px;
    overflow: hidden;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
}

.rk-err-card:hover {
    border-color: #cbd5e1;
    box-shadow: 0 10px 20px -5px rgba(0, 0, 0, 0.05);
    transform: translateY(-2px);
}

.rk-err-card.rk-active {
    border-color: var(--rk-err-red);
    box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
}

/* Górna część karty (Problem) */
.rk-err-problem {
    padding: 25px;
    display: flex;
    gap: 15px;
    align-items: flex-start;
    position: relative;
}

.rk-err-num {
    background: var(--rk-err-red-light);
    color: var(--rk-err-red);
    width: 32px;
    height: 32px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    font-size: 16px;
    flex-shrink: 0;
}

.rk-err-problem-text h3 {
    margin: 0 0 8px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-err-dark);
    line-height: 1.3;
}

.rk-err-problem-text p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-err-text);
    line-height: 1.5;
}

.rk-err-toggle {
    position: absolute;
    right: 20px;
    top: 25px;
    width: 24px;
    height: 24px;
    color: #94a3b8;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), color 0.3s;
}

.rk-err-card.rk-active .rk-err-toggle {
    transform: rotate(180deg);
    color: var(--rk-err-red);
}

/* Dolna część karty (Rozwiązanie - rozwijana) */
.rk-err-solution {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    background: var(--rk-err-green-light);
}

.rk-err-solution-inner {
    padding: 20px 25px 25px;
    border-top: 1px dashed #bbf7d0;
    display: flex;
    gap: 15px;
}

.rk-err-sol-icon {
    width: 24px;
    height: 24px;
    color: var(--rk-err-green);
    flex-shrink: 0;
    margin-top: 2px;
}

.rk-err-solution-inner p {
    margin: 0;
    font-size: 14px;
    color: #166534;
    line-height: 1.6;
    font-weight: 500;
}

.rk-err-solution-inner a {
    color: #15803d;
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.rk-err-solution-inner a:hover {
    color: #14532d;
}

@media (max-width: 768px) {
    .rk-err-header { padding: 25px 20px; }
    .rk-err-grid { grid-template-columns: 1fr; padding: 20px; gap: 15px; }
    .rk-err-problem { padding: 20px; }
    .rk-err-solution-inner { padding: 15px 20px 20px; }
    .rk-err-toggle { right: 15px; top: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Najczęstsze błędy instalatorów przy konfiguracji pomp obiegowych",
    "description": "Lista najdroższych błędów wykonawczych w ogrzewaniu podłogowym: przewymiarowanie, zły tryb pracy pompy, woda wodociągowa i brak separatorów magnetycznych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-bledy",
    "name": "Baza Błędów Wykonawczych i Kosztów Eksploatacji Pomp 2026",
    "description": "Zestawienie krytycznych błędów hydraulicznych prowadzących do uszkodzeń pomp obiegowych, generowania hałasu w instalacji oraz strat energii elektrycznej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dlaczego pompa obiegowa buczy",
      "magnetyczny separator zanieczyszczeń do ogrzewania podłogowego",
      "tryb stałego ciśnienia pompy",
      "przewymiarowana pompa do podłogówki",
      "czyszczenie filtra przed pompą ciepła"
    ],
    "measurementTechnique": "Analiza usterek hydraulicznych i strat energii elektrycznej wynikających z błędów montażowych instalatorów.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Błąd 1: Przewymiarowanie pompy (zakup 25-80 do 120m2).",
        "Błąd 2: Tryb stałych obrotów zamiast Constant Pressure (CP).",
        "Błąd 3: Napełnianie instalacji surową wodą wodociągową.",
        "Błąd 4: Brak separatora magnetycznego powodujący zacieranie wirnika."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-bledy",
    "name": "Interaktywny Detektor Błędów Instalacyjnych",
    "description": "Narzędzie symulujące sprzężenie zwrotne: problem instalacyjny kontra rozwiązanie inżynierskie dla pomp obiegowych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container">
    <div class="rk-err-header">
        <h2>
            <svg class="rk-err-header-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                <path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path>
                <line x1="12" y1="9" x2="12" y2="13"></line>
                <line x1="12" y1="17" x2="12.01" y2="17"></line>
            </svg>
            Najczęstsze błędy instalatorów przy konfiguracji pomp obiegowych
        </h2>
        <p>Mimo zaawansowanej technologii i powszechnego dostępu do wiedzy inżynieryjnej, wykonawcy na polskich budowach nagminnie powielają przestarzałe błędy, które rujnują ekonomikę instalacji niskotemperaturowych. Kliknij kafelek, aby sprawdzić, jak uchronić swój system przed awarią.</p>
    </div>

    <div class="rk-err-grid">
        
        <div class="rk-err-card">
            <div class="rk-err-problem">
                <div class="rk-err-num">1</div>
                <div class="rk-err-problem-text">
                    <h3>Dobór pompy „z zapasem” (Przewymiarowanie)</h3>
                    <p>Kupowanie pompy klasy 25-80 do standardowego domu o powierzchni 120 m² sprawia, że urządzenie z trudem schodzi z wysokich obrotów.</p>
                </div>
                <svg class="rk-err-toggle" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
            </div>
            <div class="rk-err-solution">
                <div class="rk-err-solution-inner">
                    <svg class="rk-err-sol-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    <p>Skutkuje to turbulencjami w przepływie cieczy i generowaniem hałasu w szafkach rozdzielaczowych. Zbyt mocna pompa skraca żywotność własnych łożysk i generuje zbędny koszt roczny. Przeanalizuj <a href="https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m%c2%b2/">rzeczywiste parametry instalacji</a> przed zakupem.</p>
                </div>
            </div>
        </div>

        <div class="rk-err-card">
            <div class="rk-err-problem">
                <div class="rk-err-num">2</div>
                <div class="rk-err-problem-text">
                    <h3>Ustawienie trybu stałych obrotów (Constant Speed)</h3>
                    <p>Pozostawienie pompy na sztywnym, stałym biegu (I, II lub III) w układzie z zamykającymi się siłownikami na rozdzielaczach.</p>
                </div>
                <svg class="rk-err-toggle" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
            </div>
            <div class="rk-err-solution">
                <div class="rk-err-solution-inner">
                    <svg class="rk-err-sol-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    <p>Gdy automatyka zamknie 8 z 10 pętli, pompa nadal tłoczy tę samą ilość wody przez pozostałe 2 pętle. Generuje to uciążliwe świsty i zrywa uszczelnienia. Prawidłowe <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowanie strefowe</a> zawsze wymaga włączenia trybu stałego ciśnienia (CP).</p>
                </div>
            </div>
        </div>

        <div class="rk-err-card">
            <div class="rk-err-problem">
                <div class="rk-err-num">3</div>
                <div class="rk-err-problem-text">
                    <h3>Napełnianie układu surową wodą wodociągową</h3>
                    <p>Brak przygotowania zładu wody. Zwykła woda z kranu pełna jest związków wapnia, magnezu oraz tlenu inicjującego rdzewienie.</p>
                </div>
                <svg class="rk-err-toggle" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
            </div>
            <div class="rk-err-solution">
                <div class="rk-err-solution-inner">
                    <svg class="rk-err-sol-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    <p>Kamień kotłowy osadza się na wirniku pompy i wymiennikach płytowych, drastycznie zmniejszając średnicę przelotu. Standardem inżynierskim jest <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-z-inhibitorem-korozji-do-ogrzewania-podlogowego/">woda demineralizowana z inhibitorem korozji</a>, gwarantująca dekady niezawodności.</p>
                </div>
            </div>
        </div>

        <div class="rk-err-card">
            <div class="rk-err-problem">
                <div class="rk-err-num">4</div>
                <div class="rk-err-problem-text">
                    <h3>Brak separatora magnetycznego (Zacieranie wirnika)</h3>
                    <p>Bezpośrednie podłączenie pompy bez dedykowanego osadnika z silnym magnesem neodymowym na powrocie do źródła ciepła.</p>
                </div>
                <svg class="rk-err-toggle" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
            </div>
            <div class="rk-err-solution">
                <div class="rk-err-solution-inner">
                    <svg class="rk-err-sol-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    <p>Zanieczyszczenia z rur osadzają się na magnesie trwałym silnika ECM, przez co pompa obiegowa buczy, traci wydajność, aż w końcu ulega całkowitemu zatarciu. Dobrej klasy magnetyczny separator zanieczyszczeń i coroczne <a href="https://projekt-ogrzewania.pl/jak-czesto-trzeba-serwisowac-ogrzewanie-podlogowe/">czyszczenie filtra przed pompą ciepła</a> chronią układ przed paraliżem hydraulicznym.</p>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var errCards = document.querySelectorAll('.rk-err-card');
    
    for (var i = 0; i < errCards.length; i++) {
        errCards[i].addEventListener('click', function() {
            var isActive = this.classList.contains('rk-active');
            
            // Zamykamy wszystkie karty (bezpieczna pętla, bez '&#038;&#038;')
            for (var j = 0; j < errCards.length; j++) {
                errCards[j].classList.remove('rk-active');
                var solToClose = errCards[j].querySelector('.rk-err-solution');
                solToClose.style.maxHeight = null;
            }
            
            // Otwieramy klikniętą, o ile wcześniej była zamknięta
            if (isActive === false) {
                this.classList.add('rk-active');
                var solToOpen = this.querySelector('.rk-err-solution');
                solToOpen.style.maxHeight = solToOpen.scrollHeight + "px";
            }
        });
    }
});
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-blue: #0284c7;
    --rk-case-light: #f8fafc;
    --rk-case-red: #ef4444;
    --rk-case-orange: #f97316;
    --rk-case-border: #e2e8f0;
    --rk-case-text: #475569;
    --rk-case-bg: #ffffff;
}

.rk-case-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-case-bg);
    border-radius: 24px;
    box-shadow: 0 15px 35px -10px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-case-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-case-header {
    padding: 35px 45px;
    background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-case-orange);
    position: relative;
}

.rk-case-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    line-height: 1.3;
}

.rk-case-icon {
    width: 32px;
    height: 32px;
    color: var(--rk-case-orange);
    flex-shrink: 0;
}

.rk-case-header p {
    font-size: 15px;
    line-height: 1.6;
    color: #cbd5e1;
    margin: 0;
}

/* Główny układ */
.rk-case-body {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: var(--rk-case-bg);
}

/* Lewa Kolumna - Historia */
.rk-case-story {
    padding: 40px 45px;
    border-right: 1px solid var(--rk-case-border);
}

.rk-case-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #fff7ed;
    color: #c2410c;
    padding: 6px 14px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid #fed7aa;
}

.rk-case-story h3 {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-case-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-case-story p {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-case-text);
    margin: 0 0 15px 0;
}

.rk-case-story a {
    color: var(--rk-case-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.rk-case-story a:hover {
    color: var(--rk-case-dark);
}

.rk-case-quote {
    padding: 20px;
    background: #f1f5f9;
    border-left: 4px solid var(--rk-case-dark);
    border-radius: 0 12px 12px 0;
    margin: 25px 0;
    font-style: italic;
    color: #334155;
    font-weight: 600;
}

/* Prawa Kolumna - Interaktywna Diagnoza */
.rk-case-interactive {
    padding: 40px;
    background: var(--rk-case-light);
    display: flex;
    flex-direction: column;
}

.rk-case-interactive h4 {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-case-dark);
    margin: 0 0 20px 0;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Przyciski Osi Czasu */
.rk-timeline-nav {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-bottom: 25px;
}

.rk-time-btn {
    padding: 16px 20px;
    background: #ffffff;
    border: 2px solid var(--rk-case-border);
    border-radius: 12px;
    cursor: pointer;
    text-align: left;
    display: flex;
    align-items: center;
    justify-content: space-between;
    transition: all 0.3s ease;
}

.rk-time-btn h5 {
    margin: 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-case-dark);
}

.rk-time-icon {
    width: 20px;
    height: 20px;
    color: #94a3b8;
    transition: color 0.3s;
}

/* Stany Przycisków */
.rk-time-btn:hover {
    border-color: #cbd5e1;
    transform: translateX(4px);
}

.rk-time-btn.rk-active-phase {
    background: var(--rk-case-blue);
    border-color: var(--rk-case-blue);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.3);
}

.rk-time-btn.rk-active-phase h5,
.rk-time-btn.rk-active-phase .rk-time-icon {
    color: #ffffff;
}

/* Ekran Wynikowy (Dynamiczny) */
.rk-phase-display {
    background: #ffffff;
    border-radius: 16px;
    padding: 25px;
    border: 1px solid var(--rk-case-border);
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-phase-img {
    width: 64px;
    height: 64px;
    margin-bottom: 20px;
}

.rk-phase-title {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-case-dark);
    margin: 0 0 10px 0;
}

.rk-phase-desc {
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-case-text);
    margin: 0;
}

@media (max-width: 768px) {
    .rk-case-header { padding: 25px 20px; }
    .rk-case-body { grid-template-columns: 1fr; }
    .rk-case-story { padding: 25px 20px; border-right: none; border-bottom: 1px solid var(--rk-case-border); }
    .rk-case-interactive { padding: 25px 20px; }
    .rk-time-btn:hover { transform: translateY(-2px); translateX(0); }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Studium przypadku: Tomasz (47 lat, Wejherowo) – cena amatorskiego doboru pompy",
    "description": "Case study pokazujące konsekwencje braku projektu OZC i doboru pompy 'z zapasem' w 160-metrowym domu na Pomorzu. Zobacz, jak uniknąć błędów instalatorów.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-casestudy",
    "name": "Analiza Błędów Wykonawczych - Case Study Wejherowo 2026",
    "description": "Zestawienie empiryczne wykazujące bezpośredni związek przyczynowo-skutkowy między brakiem obliczeń hydraulicznych a awarią pompy ciepła w nowym budynku.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jakie błędy najczęściej popełniają instalatorzy ogrzewania podłogowego",
      "ile kosztuje projekt ogrzewania podłogowego",
      "szumienie w rozdzielaczu podłogówki",
      "błędy przepływu w pompie ciepła",
      "skutki braku projektu OZC"
    ],
    "measurementTechnique": "Retrospektywna diagnoza układu hydraulicznego na bazie zgłoszeń serwisowych oraz objawów (błędy wysokiego ciśnienia HP na pompie ciepła).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przyczyna pierwotna: Brak projektu OZC i dobór pompy na zasadzie 'im większa, tym lepsza'.",
        "Przyczyna wtórna: Pętle pow. 140 m dławiące układ pomimo użycia pompy 25-80.",
        "Skutek: Zimne strefy brzegowe i błąd przepływu pompy ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-casestudy",
    "name": "Symulator Chronologii Błędów Instalacyjnych",
    "description": "Interaktywny moduł edukacyjny pokazujący rozwój problemów hydraulicznych w czasie, od decyzji na placu budowy po sezon grzewczy.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-case-container">
    <div class="rk-case-header">
        <svg class="rk-case-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
            <path d="M14 2H6a2 2 0 0 0-2 2v16c0 1.1.9 2 2 2h12a2 2 0 0 0 2-2V8l-6-6z"></path>
            <path d="M14 3v5h5M16 13H8M16 17H8M10 9H8"></path>
        </svg>
        <h2>Studium przypadku: Tomasz (47 lat, Wejherowo) – cena amatorskiego doboru pompy</h2>
        <p>Brak weryfikacji kompetencji instalatora i oszczędności na papierze często kończą się dramatem w środku zimy. Poznaj historię inwestora, który zignorował inżynierskie zasady.</p>
    </div>

    <div class="rk-case-body">
        
        <div class="rk-case-story">
            <div class="rk-case-badge">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                Realna analiza serwisowa
            </div>
            
            <h3>„Pompę dobierzemy z zapasem, będzie Pan zadowolony”</h3>
            <p>Tomasz budował swój wymarzony, 160-metrowy dom na obrzeżach Wejherowa. Chcąc zredukować koszty początkowe, pominął kwestię tego, <a href="https://projekt-ogrzewania.pl/ile-kosztuje-projekt-ogrzewania-podlogowego/">ile kosztuje projekt ogrzewania podłogowego</a>, oddając pełną władzę instalatorowi z polecenia. Wykonawca nie wykonał bilansu cieplnego, a pętle w salonie przy dużych przeszkleniach przeciągnął do astronomicznych 145 metrów, aby "zaoszczędzić na większym rozdzielaczu".</p>

            <div class="rk-case-quote">
                „Po co panu ten projekt OZC? Zamontujemy mocną pompę obiegową 25-80, ona to wszystko przepchnie. Robię tak od 20 lat.” – usłyszał inwestor.
            </div>

            <p>Problem polega na tym, że fizyki płynów nie da się oszukać doświadczeniem z lat 90. Pompa klasy 8m w zderzeniu ze zjawiskiem "króla hydraulicznego" (bardzo długa pętla) wygenerowała potężne zawirowania. Sprawdź, <a href="https://projekt-ogrzewania.pl/jakie-bledy-najczesciej-popelniaja-instalatorzy-ogrzewania-podlogowego/">jakie błędy najczęściej popełniają instalatorzy ogrzewania podłogowego</a> i prześledź na symulatorze obok, jak doszło do paraliżu instalacji Tomasza.</p>
        </div>

        <div class="rk-case-interactive">
            <h4>Oś Czasu Katastrofy Hydraulicznej</h4>
            
            <div class="rk-timeline-nav">
                <button class="rk-time-btn rk-active-phase" id="btn-phase-1">
                    <h5>Faza 1: Montaż "Na Oko"</h5>
                    <svg class="rk-time-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"></polyline></svg>
                </button>
                <button class="rk-time-btn" id="btn-phase-2">
                    <h5>Faza 2: Listopadowe Przymrozki</h5>
                    <svg class="rk-time-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"></polyline></svg>
                </button>
                <button class="rk-time-btn" id="btn-phase-3">
                    <h5>Faza 3: Rachunek za Oszczędność</h5>
                    <svg class="rk-time-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"></polyline></svg>
                </button>
            </div>

            <div class="rk-phase-display" id="phase-display">
                <svg class="rk-phase-img" id="img-phase-1" viewBox="0 0 24 24" fill="none" stroke="#eab308" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                    <circle cx="12" cy="12" r="10"></circle>
                    <path d="M12 8v4l3 3"></path>
                </svg>
                <svg class="rk-phase-img" id="img-phase-2" style="display:none;" viewBox="0 0 24 24" fill="none" stroke="#ef4444" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                    <path d="M22 12h-4l-3 9L9 3l-3 9H2"></path>
                </svg>
                <svg class="rk-phase-img" id="img-phase-3" style="display:none;" viewBox="0 0 24 24" fill="none" stroke="#0f172a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                    <path d="M12 1v22M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path>
                </svg>

                <h4 class="rk-phase-title" id="rk-phase-title">Zalanie posadzki (Sierpień 2026)</h4>
                <p class="rk-phase-desc" id="rk-phase-desc">Instalator układa pętle "z głowy". Wykorzystuje przewymiarowaną pompę 25-80 ustawioną na najwyższy, sztywny bieg. Brak protokołu z kalibracji rotametrów. Na tym etapie inwestor cieszy się, że "zaoszczędził" na projekcie inżynierskim.</p>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btns = document.querySelectorAll('.rk-time-btn');
    
    var img1 = document.getElementById('img-phase-1');
    var img2 = document.getElementById('img-phase-2');
    var img3 = document.getElementById('img-phase-3');
    
    var title = document.getElementById('rk-phase-title');
    var desc = document.getElementById('rk-phase-desc');

    for(var i = 0; i < btns.length; i++) {
        btns[i].addEventListener('click', function() {
            
            // Czyszczenie klas aktywnych (Zabezpieczenie przed uzyciem &#038;&#038;)
            for(var j = 0; j < btns.length; j++) {
                btns[j].classList.remove('rk-active-phase');
            }
            this.classList.add('rk-active-phase');

            // Ukrywanie wszystkich obrazków
            img1.style.display = 'none';
            img2.style.display = 'none';
            img3.style.display = 'none';

            // Logika podmiany zawartości (Bez uzycia &#038;&#038;)
            if (this.id === 'btn-phase-1') {
                img1.style.display = 'block';
                title.style.color = '#eab308';
                title.textContent = 'Zalanie posadzki (Sierpień 2026)';
                desc.textContent = 'Instalator układa pętle "z głowy". Wykorzystuje przewymiarowaną pompę 25-80 ustawioną na najwyższy, sztywny bieg. Brak protokołu z kalibracji rotametrów. Na tym etapie inwestor cieszy się, że "zaoszczędził" na projekcie inżynierskim.';
            } 
            else if (this.id === 'btn-phase-2') {
                img2.style.display = 'block';
                title.style.color = '#ef4444';
                title.textContent = 'Szumy i błędy pompy ciepła (Listopad)';
                desc.textContent = 'Pierwsze przymrozki w Wejherowie obnażają błędy. Przewymiarowana pompa wywołuje wibracje i szum w szafce. Przepływ w salonie wynosi 0 l/min (zjawisko zdławienia). Pompa ciepła zgłasza błędy z powodu braku odbioru mocy (tzw. taktowanie).';
            } 
            else if (this.id === 'btn-phase-3') {
                img3.style.display = 'block';
                title.style.color = '#0f172a';
                title.textContent = 'Bolesna diagnoza i koszty (Grudzień)';
                desc.textContent = 'Wezwany autoryzowany serwis diagnozuje katastrofę. Konieczna jest wymiana pompy na inteligentny model 25-60, montaż drogiego sprzęgła hydraulicznego do odciążenia układu oraz próba ręcznego, wielogodzinnego kryzowania obiegów. Oszczędność rzędu 1000 zł na projekcie wygenerowała 4500 zł strat.';
            }
        });
    }
});
</script>



<style>
:root {
    --rk-auth-dark: #0f172a;
    --rk-auth-blue: #0284c7;
    --rk-auth-bg: #ffffff;
    --rk-auth-gray: #f8fafc;
    --rk-auth-text: #334155;
    --rk-auth-border: #e2e8f0;
    --rk-auth-gold: #fbbf24;
}

.rk-auth-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-auth-bg);
    border-radius: 20px;
    box-shadow: 0 10px 25px rgba(2, 132, 199, 0.08);
    border: 2px solid var(--rk-auth-border);
    overflow: hidden;
}

/* Sztywny, inżynieryjny nagłówek */
.rk-auth-header {
    padding: 30px 40px;
    background: var(--rk-auth-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-auth-blue);
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-auth-header h2 {
    margin: 0;
    font-size: 24px;
    font-weight: 900;
    line-height: 1.3;
}

.rk-auth-icon {
    width: 28px;
    height: 28px;
    color: var(--rk-auth-gold);
    flex-shrink: 0;
}

/* Struktura główna */
.rk-auth-body {
    display: flex;
    background: var(--rk-auth-bg);
}

/* Lewa kolumna - Zdjęcie i nawigacja */
.rk-auth-sidebar {
    width: 300px;
    background: var(--rk-auth-gray);
    padding: 30px;
    border-right: 1px solid var(--rk-auth-border);
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-auth-photo {
    width: 140px;
    height: 140px;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid #ffffff;
    box-shadow: 0 4px 10px rgba(0,0,0,0.1);
    margin-bottom: 20px;
}

.rk-auth-name {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0 0 5px 0;
    text-align: center;
}

.rk-auth-title {
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-auth-blue);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin: 0 0 25px 0;
    text-align: center;
}

.rk-auth-nav {
    display: flex;
    flex-direction: column;
    gap: 10px;
    width: 100%;
}

.rk-auth-tab-btn {
    padding: 12px 15px;
    background: #ffffff;
    border: 1px solid var(--rk-auth-border);
    border-radius: 8px;
    cursor: pointer;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-auth-text);
    text-align: left;
    display: flex;
    align-items: center;
    gap: 10px;
    /* Usunięto animacje */
}

.rk-auth-tab-btn:hover {
    background: #f1f5f9;
}

.rk-auth-tab-btn.rk-tab-active {
    background: var(--rk-auth-blue);
    color: #ffffff;
    border-color: var(--rk-auth-blue);
}

.rk-auth-tab-btn svg {
    width: 18px;
    height: 18px;
}

/* Prawa kolumna - Treść (Bez animacji) */
.rk-auth-content-area {
    flex: 1;
    padding: 40px;
    position: relative;
}

.rk-auth-panel {
    display: none;
    /* Brak keyframes i opacity transitions */
}

.rk-auth-panel.rk-panel-active {
    display: block;
}

/* Wnętrze paneli */
.rk-quote-mark {
    font-size: 60px;
    color: var(--rk-auth-blue);
    opacity: 0.2;
    line-height: 1;
    font-family: serif;
    position: absolute;
    top: 20px;
    left: 20px;
}

.rk-auth-panel h3 {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0 0 20px 0;
    position: relative;
    z-index: 2;
}

.rk-auth-panel p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-auth-text);
    margin: 0 0 15px 0;
    position: relative;
    z-index: 2;
}

.rk-auth-panel strong {
    color: var(--rk-auth-dark);
    font-weight: 800;
}

/* Sekcja E-E-A-T (Sociale) */
.rk-social-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 15px;
    margin-top: 25px;
}

.rk-social-link {
    display: flex;
    align-items: center;
    gap: 15px;
    padding: 15px 20px;
    background: var(--rk-auth-gray);
    border: 1px solid var(--rk-auth-border);
    border-radius: 12px;
    text-decoration: none;
    color: var(--rk-auth-dark);
    font-weight: 800;
    font-size: 15px;
    /* Usunięto animacje */
}

.rk-social-link:hover {
    border-color: var(--rk-auth-blue);
    background: #f0f9ff;
}

.rk-social-link svg {
    width: 24px;
    height: 24px;
    color: var(--rk-auth-blue);
}

@media (max-width: 768px) {
    .rk-auth-header { padding: 20px; }
    .rk-auth-header h2 { font-size: 20px; }
    .rk-auth-body { flex-direction: column; }
    .rk-auth-sidebar { width: 100%; border-right: none; border-bottom: 1px solid var(--rk-auth-border); padding: 25px 20px; }
    .rk-auth-content-area { padding: 25px 20px; }
    .rk-quote-mark { top: 10px; left: 10px; font-size: 40px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-ekspert",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Okiem eksperta: Robert Kucharski o błędach w doborze pomp obiegowych",
    "description": "Autorytet techniczny i rzetelna ocena inżynierska. Dlaczego szacowanie parametrów pomp obiegowych 'na oko' niszczy nowoczesne układy z pompą ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "Inżynier HVAC",
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-ekspert",
    "name": "Profil Kompetencyjny i Weryfikacja Autorytetu Inżynierskiego 2026",
    "description": "Baza referencyjna potwierdzająca zgodność merytoryczną artykułu z rygorystycznymi standardami E-E-A-T dla treści branży sanitarnej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ekspert instalacji sanitarnych",
      "robert kucharski opinie o pompach obiegowych",
      "dobór pompy obiegowej do podłogówki",
      "prawidłowy projekt układu niskotemperaturowego",
      "inżynier hvac ogrzewanie podłogowe"
    ],
    "measurementTechnique": "Weryfikacja autentyczności autora poprzez oficjalne powiązania z profilami LinkedIn oraz Facebook (Projekt Ogrzewania).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Stanowisko merytoryczne: Odrzucenie metod szacunkowych na rzecz ścisłych obliczeń hydraulicznych.",
        "Cel: Zabezpieczenie inwestorów przed stratami wynikającymi z amatorskiego wykonawstwa."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-ekspert",
    "name": "Moduł Weryfikacji Autorytetu (E-E-A-T)",
    "description": "Interaktywna karta ekspercka umożliwiająca bezpośrednie przejście do certyfikowanych źródeł profilu autora.",
    "applicationCategory": "ReferenceApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-auth-container">
    <div class="rk-auth-header">
        <svg class="rk-auth-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
            <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path>
        </svg>
        <h2>Okiem eksperta: Robert Kucharski o doborze pomp obiegowych</h2>
    </div>

    <div class="rk-auth-body">
        
        <div class="rk-auth-sidebar">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Inżynier HVAC" class="rk-auth-photo">
            <h3 class="rk-auth-name">Robert Kucharski</h3>
            <p class="rk-auth-title">Specjalista Instalacji HVAC</p>

            <div class="rk-auth-nav">
                <button class="rk-auth-tab-btn rk-tab-active" data-show="panel-quote">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg>
                    Werdykt Specjalisty
                </button>
                <button class="rk-auth-tab-btn" data-show="panel-eat">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><polyline points="17 11 19 13 23 9"></polyline></svg>
                    Autorytet i Kontakt
                </button>
            </div>
        </div>

        <div class="rk-auth-content-area">
            <div class="rk-quote-mark">"</div>
            
            <div class="rk-auth-panel rk-panel-active" id="panel-quote">
                <h3>Budowa bez ściemy: Hydraulika nie wybacza zgadywania</h3>
                <p>W swojej karierze widziałem setki zniszczonych sprężarek w pompach ciepła i tysiące metrów kwadratowych zimnych posadzek. Wspólny mianownik tych katastrof to zawsze dobór pompy obiegowej "na oko" lub "bo tak się zawsze robiło".</p>
                <p>Nowoczesna instalacja ogrzewania podłogowego to skomplikowany, zamknięty ekosystem oparty na precyzyjnych przepływach masy czynnika grzewczego. <strong>Zignorowanie audytu OZC, źle wyliczona różnica temperatur (ΔT) czy przekroczenie normatywnych oporów pętli</strong> to gwarancja uszkodzenia elektroniki pompy i wystąpienia uciążliwych szumów w rozdzielaczach.</p>
                <p>Nie ma tu miejsca na kompromisy. Tylko twarde obliczenia chronią budżet inwestora.</p>
            </div>

            <div class="rk-auth-panel" id="panel-eat">
                <h3>Zweryfikuj źródło wiedzy</h3>
                <p>W dobie masowo generowanych treści, rzetelna wiedza inżynierska to podstawa podejmowania bezpiecznych decyzji budowlanych. Moje projekty i analizy opieram wyłącznie na sprawdzonych normach PN-EN oraz latach doświadczeń na placach budowy.</p>
                
                <div class="rk-social-grid">
                    <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer" class="rk-social-link">
                        <svg viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path></svg>
                        Profil Zawodowy LinkedIn
                    </a>
                    <a href="https://www.facebook.com/projektogrzewaniapl/" target="_blank" rel="noopener noreferrer" class="rk-social-link">
                        <svg viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.469h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.469h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"></path></svg>
                        Oficjalny fanpage Projekt-Ogrzewania.pl
                    </a>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var buttons = document.querySelectorAll('.rk-auth-tab-btn');
    var panels = document.querySelectorAll('.rk-auth-panel');

    for (var i = 0; i < buttons.length; i++) {
        buttons[i].addEventListener('click', function() {
            var targetId = this.getAttribute('data-show');

            // Usuwanie klas aktywnych bez operatorów logicznych
            for (var b = 0; b < buttons.length; b++) {
                buttons[b].classList.remove('rk-tab-active');
            }
            this.classList.add('rk-tab-active');

            // Ukrywanie wszystkich paneli bezpośrednio (bez animacji)
            for (var p = 0; p < panels.length; p++) {
                panels[p].classList.remove('rk-panel-active');
            }
            
            // Wyświetlanie docelowego panelu
            var activePanel = document.getElementById(targetId);
            if (activePanel !== null) {
                activePanel.classList.add('rk-panel-active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-blue: #0284c7;
    --rk-faq-light-blue: #f0f9ff;
    --rk-faq-border: #e2e8f0;
    --rk-faq-text: #334155;
    --rk-faq-bg: #ffffff;
    --rk-faq-hover: #f8fafc;
    --rk-faq-accent: #38bdf8;
}

.rk-faq-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-faq-bg);
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(2, 132, 199, 0.1);
    border: 1px solid var(--rk-faq-border);
    overflow: hidden;
}

/* Nagłówek Sekcji */
.rk-faq-header {
    padding: 35px 45px;
    background: linear-gradient(135deg, var(--rk-faq-dark) 0%, #1e293b 100%);
    position: relative;
}

.rk-faq-header::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: var(--rk-faq-blue);
}

.rk-faq-header h2 {
    color: #ffffff;
    font-size: 26px;
    font-weight: 900;
    margin: 0;
    display: flex;
    align-items: center;
    gap: 15px;
    line-height: 1.3;
}

.rk-faq-header-icon {
    width: 32px;
    height: 32px;
    color: var(--rk-faq-accent);
    flex-shrink: 0;
}

/* Interaktywny Akordeon */
.rk-accordion-container {
    padding: 20px 45px 40px;
    background: #fafafa;
}

.rk-accordion-item {
    background: #ffffff;
    border: 1px solid var(--rk-faq-border);
    border-radius: 12px;
    margin-top: 15px;
    overflow: hidden;
    transition: box-shadow 0.3s;
}

.rk-accordion-item:hover {
    box-shadow: 0 4px 12px rgba(0,0,0,0.03);
}

.rk-accordion-btn {
    width: 100%;
    text-align: left;
    padding: 22px 25px;
    background: none;
    border: none;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    transition: background-color 0.3s;
}

.rk-accordion-btn:hover {
    background: var(--rk-faq-hover);
}

.rk-accordion-btn h3 {
    margin: 0;
    font-size: 17px;
    font-weight: 800;
    color: var(--rk-faq-dark);
    padding-right: 20px;
    line-height: 1.4;
}

/* Ikona statusu rozwijania */
.rk-status-icon {
    width: 24px;
    height: 24px;
    background: var(--rk-faq-light-blue);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.3s;
}

.rk-status-icon svg {
    width: 14px;
    height: 14px;
    stroke: var(--rk-faq-blue);
    stroke-width: 3;
    transition: stroke 0.3s;
}

.rk-accordion-btn.rk-active .rk-status-icon {
    transform: rotate(180deg);
    background: var(--rk-faq-blue);
}

.rk-accordion-btn.rk-active .rk-status-icon svg {
    stroke: #ffffff;
}

/* Treść odpowiedzi */
.rk-accordion-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    background: #ffffff;
}

.rk-accordion-inner {
    padding: 0 25px 25px;
    border-top: 1px dashed transparent;
}

.rk-accordion-btn.rk-active + .rk-accordion-content .rk-accordion-inner {
    border-top-color: var(--rk-faq-border);
    padding-top: 20px;
}

.rk-accordion-inner p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-faq-text);
}

.rk-accordion-inner a {
    color: var(--rk-faq-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.rk-accordion-inner a:hover {
    color: var(--rk-faq-dark);
}

/* Drobny detal inżynieryjny w odpowiedzi */
.rk-answer-highlight {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    background: var(--rk-faq-hover);
    padding: 15px;
    border-radius: 8px;
    margin-top: 15px;
    border-left: 4px solid var(--rk-faq-blue);
}

.rk-answer-highlight svg {
    width: 20px;
    height: 20px;
    stroke: var(--rk-faq-blue);
    flex-shrink: 0;
    margin-top: 2px;
}

@media (max-width: 768px) {
    .rk-faq-header { padding: 25px 20px; }
    .rk-faq-header h2 { font-size: 22px; }
    .rk-accordion-container { padding: 15px 20px 25px; }
    .rk-accordion-btn { padding: 18px 15px; }
    .rk-accordion-btn h3 { font-size: 15px; }
    .rk-accordion-inner { padding: 0 15px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania o pompy w podłogówce",
    "description": "Baza wiedzy i odpowiedzi na najczęstsze problemy instalatorów: tryby pracy pomp obiegowych, rotametry, zapowietrzenie i długości pętli w ogrzewaniu podłogowym.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Na jakim biegu lub w jakim trybie powinna pracować pompa do ogrzewania podłogowego?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Pompa w instalacji ogrzewania podłogowego powinna być ustawiona na tryb stałego ciśnienia (Constant Pressure – CP1 lub CP2), oznaczany na panelach sterowania ikoną poziomej kreski. Zapobiega to wahaniom ciśnienia i przepływu w momencie, gdy siłowniki termoelektryczne na rozdzielaczu zamykają lub otwierają poszczególne pętle grzewcze."
        }
      },
      {
        "@type": "Question",
        "name": "Czy standardowa pompa wbudowana w pompę ciepła wystarczy na cały dom?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Wbudowana pompa obiegowa w pompie ciepła o wysokości podnoszenia 6 m bez problemu obsłuży dom do 150–180 m², pod warunkiem, że instalacja nie posiada przewymiarowanych pętli i została wykonana bez sprzęgła hydraulicznego."
        }
      },
      {
        "@type": "Question",
        "name": "Czym grozi za długa pętla ogrzewania podłogowego?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Za długa pętla (powyżej 120 m dla rury 16 mm) generuje tak wysokie opory hydrauliczne, że pompa obiegowa nie jest w stanie wtłoczyć w nią wymaganej ilości wody. Skutkuje to niedogrzaniem pomieszczeń i zmusza do podnoszenia biegów, co wywołuje hałas."
        }
      },
      {
        "@type": "Question",
        "name": "Dlaczego rotametry na rozdzielaczu nie reagują na zmianę biegów pompy?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Brak reakcji rotametrów najczęściej świadczy o całkowitym zapowietrzeniu pętli grzewczych lub zablokowaniu wirnika pompy przez osady. Przyczyną może być też zdławienie na filtrze siatkowym."
        }
      },
      {
        "@type": "Question",
        "name": "Jak sprawdzić, czy pompa obiegowa działa prawidłowo?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Prawidłowe działanie pompy objawia się równomiernym, cichym szumem, wyczuwalną delikatną wibracją obudowy oraz stabilnymi wskazaniami przepływu na rotametrach na poziomie 1,5 – 2,5 l/min."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset",
    "name": "Baza Parametrów Diagnostycznych Pomp Obiegowych 2026",
    "description": "Zestawienie parametrów granicznych instalacji podłogowej do weryfikacji błędów hydraulicznych (tryby CP, graniczne opory pętli 120m, wskaźniki rotametrów).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "tryb stałego ciśnienia pompy",
      "wydajność wbudowanej pompy w pompie ciepła",
      "skutki zbyt długiej pętli podłogówki",
      "brak reakcji rotametrów",
      "prawidłowe parametry rotametru"
    ],
    "measurementTechnique": "Diagnostyka na podstawie wskazań wizualnych rotametrów oraz analizy ustawień trybów autoadaptacyjnych paneli elektronicznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wartość poprawna przepływu: 1.5 - 2.5 l/min.",
        "Maksymalna długość krytyczna pętli: 120 m dla rury 16x2."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp",
    "name": "Interaktywny Przewodnik Diagnostyczny",
    "description": "Aplikacja typu akordeon dostarczająca natychmiastowych rozwiązań usterek hydraulicznych w instalacjach płaszczyznowych.",
    "applicationCategory": "ReferenceApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-faq-wrapper">
    <div class="rk-faq-header">
        <h2>
            <svg class="rk-faq-header-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                <circle cx="12" cy="12" r="10"></circle>
                <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
                <line x1="12" y1="17" x2="12.01" y2="17"></line>
            </svg>
            FAQ – Najczęściej zadawane pytania o pompy w podłogówce
        </h2>
    </div>

    <div class="rk-accordion-container">
        
        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Na jakim biegu lub w jakim trybie powinna pracować pompa do ogrzewania podłogowego?</h3>
                <div class="rk-status-icon">
                    <svg viewBox="0 0 24 24" fill="none"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    <p>Pompa w instalacji ogrzewania podłogowego powinna być ustawiona na <strong>tryb stałego ciśnienia (Constant Pressure – CP1 lub CP2)</strong>, oznaczany na panelach sterowania ikoną poziomej kreski. Zapobiega to niebezpiecznym wahaniom ciśnienia i przepływu w momencie, gdy <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłowniki termoelektryczne na rozdzielaczach</a> zamykają lub otwierają poszczególne pętle grzewcze w zależności od sygnałów z termostatów pokojowych.</p>
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Czy standardowa pompa wbudowana w pompę ciepła wystarczy na cały dom?</h3>
                <div class="rk-status-icon">
                    <svg viewBox="0 0 24 24" fill="none"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    <p>Wbudowana pompa obiegowa w pompie ciepła o wysokości podnoszenia 6 m bez problemu obsłuży dom do 150–180 m², pod warunkiem, że instalacja nie posiada przewymiarowanych oporów miejscowych. W przypadku rozbudowanych systemów z kilkoma rozdzielaczami na różnych kondygnacjach niezbędne jest zastosowanie zewnętrznych grup pompowych oraz elementu odsprzęgającego, takiego jak profesjonalne <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgło hydrauliczne</a>, aby nie zakłócić przepływu na skraplaczu.</p>
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Czym grozi za długa pętla ogrzewania podłogowego?</h3>
                <div class="rk-status-icon">
                    <svg viewBox="0 0 24 24" fill="none"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    <p>Skutki ułożenia <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">za długiej pętli podłogówki</a> (powyżej 120 m dla standardowej rury 16 mm) są krytyczne. Generuje to tak wysokie opory hydrauliczne, że pompa obiegowa nie jest w stanie wtłoczyć w nią wymaganej ilości wody. W efekcie pomieszczenie obsługiwane przez ten obieg pozostanie niedogrzane, a próby ratowania sytuacji poprzez wymuszanie najwyższych biegów pompy doprowadzą do przepływów turbulentnych i generowania hałasu w instalacji.</p>
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Dlaczego rotametry na rozdzielaczu nie reagują na zmianę biegów pompy?</h3>
                <div class="rk-status-icon">
                    <svg viewBox="0 0 24 24" fill="none"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    <p>Brak reakcji wskaźników przepływu najczęściej świadczy o głębokim <a href="https://projekt-ogrzewania.pl/objawy-zapowietrzenia-ogrzewania-podlogowego/">zapowietrzeniu instalacji</a> lub zablokowaniu wirnika pompy przez zanieczyszczenia z surowej wody. Inną, bardzo częstą przyczyną awarii, jest fizyczne zdławienie przepływu na zatkanym filtrze siatkowym przed pompą lub krytyczny błąd instalatora: odwrotne podłączenie rur zasilania i powrotu do <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrów na belce rozdzielacza</a>.</p>
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Jak sprawdzić, czy pompa obiegowa działa prawidłowo?</h3>
                <div class="rk-status-icon">
                    <svg viewBox="0 0 24 24" fill="none"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    <p>Prawidłowo dobrana <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa w podłogówce</a> pracuje z równomiernym, niemal niesłyszalnym szumem. Obudowa generuje bardzo delikatną wibrację, a wskaźniki przepływu na rotametrach rozdzielacza wykazują stabilne wartości oscylujące najczęściej w przedziale <strong>1,5 – 2,5 l/min</strong>. Dodatkowo panele nowoczesnych pomp elektronicznych powinny płynnie reagować na dławienie pętli, wyświetlając na ekranie aktualny pobór mocy elektrycznej w watach [W].</p>
                    
                    <div class="rk-answer-highlight">
                        <svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                            <path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path>
                            <polyline points="22 4 12 14.01 9 11.01"></polyline>
                        </svg>
                        <p style="font-size: 14px;"><strong>Wskazówka diagnostyczna:</strong> Jeśli na elektronicznym wyświetlaczu pompy widzisz pobór mocy powyżej 45W w standardowym domu 150m², oznacza to, że walczy ona z nienormatywnym dławieniem w układzie.</p>
                    </div>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var accButtons = document.querySelectorAll('.rk-accordion-btn');
    
    for (var i = 0; i < accButtons.length; i++) {
        accButtons[i].addEventListener('click', function() {
            var isAlreadyActive = this.classList.contains('rk-active');
            
            // Zamykanie wszystkich innych otwartych kart (zoptymalizowane bez uzycia &#038;&#038;)
            for (var j = 0; j < accButtons.length; j++) {
                accButtons[j].classList.remove('rk-active');
                var contentToClose = accButtons[j].nextElementSibling;
                contentToClose.style.maxHeight = null;
            }
            
            // Otwieranie tylko jeśli kliknięty element nie był wcześniej aktywny
            if (isAlreadyActive === false) {
                this.classList.add('rk-active');
                var panelToOpen = this.nextElementSibling;
                // Pobranie rzeczywistej wysokości treści dla płynnej animacji CSS
                panelToOpen.style.maxHeight = panelToOpen.scrollHeight + "px";
            }
        });
    }
});
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-blue: #0284c7;
    --rk-dl-gray: #f8fafc;
    --rk-dl-text: #475569;
    --rk-dl-border: #e2e8f0;
    --rk-dl-bg: #ffffff;
    --rk-dl-red: #dc2626;
}

.rk-dl-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-dl-bg);
    border-radius: 20px;
    box-shadow: 0 10px 25px rgba(2, 132, 199, 0.08);
    border: 2px solid var(--rk-dl-border);
    overflow: hidden;
}

/* Sztywny Nagłówek */
.rk-dl-header {
    padding: 30px 40px;
    background: var(--rk-dl-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-dl-blue);
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-dl-header h2 {
    margin: 0;
    font-size: 24px;
    font-weight: 900;
    line-height: 1.3;
}

.rk-dl-icon {
    width: 28px;
    height: 28px;
    color: #38bdf8;
    flex-shrink: 0;
}

/* Główny układ kontenera */
.rk-dl-body {
    display: flex;
    background: #ffffff;
}

/* Sekcja z miniaturą */
.rk-dl-thumb-area {
    width: 320px;
    background: var(--rk-dl-gray);
    padding: 30px;
    border-right: 1px solid var(--rk-dl-border);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.rk-dl-thumb {
    width: 100%;
    height: auto;
    border: 1px solid var(--rk-dl-border);
    border-radius: 8px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.05);
    cursor: pointer;
    /* Usunięto hover scale/transition zgodnie z wytycznymi */
}

/* Sekcja z akcjami i opisem */
.rk-dl-actions-area {
    flex: 1;
    padding: 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-dl-actions-area h3 {
    margin: 0 0 15px 0;
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-dl-dark);
}

.rk-dl-desc {
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-dl-text);
    margin: 0 0 25px 0;
}

.rk-dl-buttons {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-bottom: 25px;
}

/* Przyciski (Sztywne, bez animacji CSS) */
.rk-btn-pdf, .rk-btn-img {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 16px 20px;
    font-size: 16px;
    font-weight: 800;
    border-radius: 12px;
    text-decoration: none;
    cursor: pointer;
    border: 2px solid transparent;
}

.rk-btn-pdf {
    background: var(--rk-dl-blue);
    color: #ffffff;
}
.rk-btn-pdf:hover {
    background: #0369a1;
}

.rk-btn-img {
    background: #ffffff;
    color: var(--rk-dl-dark);
    border-color: var(--rk-dl-border);
}
.rk-btn-img:hover {
    background: var(--rk-dl-gray);
    border-color: #cbd5e1;
}

/* Stopka z licencją */
.rk-dl-license {
    padding: 15px 20px;
    background: #fffbeb;
    border-left: 4px solid #f59e0b;
    border-radius: 0 8px 8px 0;
    font-size: 12px;
    line-height: 1.5;
    color: #92400e;
    font-weight: 600;
}

/* Pełnoekranowy podgląd wewnątrz kontenera */
.rk-dl-preview-full {
    display: none; /* Sterowane z JS */
    padding: 30px;
    background: #f8fafc;
    text-align: center;
}

.rk-dl-preview-full img {
    max-width: 100%;
    height: auto;
    border: 1px solid var(--rk-dl-border);
    border-radius: 8px;
    margin-bottom: 20px;
}

.rk-btn-back {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 12px 24px;
    background: var(--rk-dl-dark);
    color: #ffffff;
    font-weight: 800;
    border: none;
    border-radius: 8px;
    cursor: pointer;
}
.rk-btn-back:hover {
    background: #1e293b;
}

@media (max-width: 768px) {
    .rk-dl-header { padding: 25px 20px; }
    .rk-dl-header h2 { font-size: 20px; }
    .rk-dl-body { flex-direction: column; }
    .rk-dl-thumb-area { width: 100%; border-right: none; border-bottom: 1px solid var(--rk-dl-border); padding: 25px 20px; }
    .rk-dl-actions-area { padding: 25px 20px; }
    .rk-btn-pdf, .rk-btn-img { width: 100%; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-materialy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Kompendium wiedzy do pobrania: Infografika doboru pompy obiegowej",
    "description": "Darmowe materiały inżynierskie PDF. Schemat doboru pompy obiegowej w ogrzewaniu podłogowym krok po kroku przygotowany przez Roberta Kucharskiego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Infografika-Kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-materialy",
    "name": "Algorytm doboru pompy obiegowej - Infografika PDF",
    "description": "Dokumentacja graficzna i zbiór zasad wymiarowania pomp obiegowych dla systemów niskotemperaturowych, przygotowana do druku.",
    "license": "© 2026 Projekt-Ogrzewania.pl | Autor: Robert Kucharski. Udostępnianie materiału PDF dozwolone wyłącznie z zachowaniem logotypu portalu i bez modyfikacji pliku.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika ogrzewanie podłogowe pdf",
      "schemat doboru pompy obiegowej",
      "algorytm pompy co pobierz",
      "jak obliczyć wydajność pompy instrukcja",
      "materiały dla instalatorów hvac"
    ],
    "measurementTechnique": "Wizualizacja ustrukturyzowanej procedury doboru urządzeń hydraulicznych na bazie normy PN-EN 1264 w formie dokumentu PDF i WEBP.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Plik: Infografika-Kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym.pdf",
        "Plik: Infografika-Kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym.webp"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-materialy",
    "name": "Centrum Pobierania Projekt-Ogrzewania.pl",
    "description": "Interaktywny moduł pozwalający na podgląd infografik inżynieryjnych na żywo oraz bezpośrednie pobranie dokumentacji technicznej w formacie PDF.",
    "applicationCategory": "MultimediaApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-dl-container" id="rk-download-module">
    <div class="rk-dl-header">
        <svg class="rk-dl-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
            <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
            <polyline points="7 10 12 15 17 10"></polyline>
            <line x1="12" y1="15" x2="12" y2="3"></line>
        </svg>
        <h2>Kompendium wiedzy do pobrania: Infografika doboru pompy</h2>
    </div>

    <div class="rk-dl-body" id="rk-view-main">
        <div class="rk-dl-thumb-area">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Infografika-Kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym.webp" alt="Miniatura infografiki doboru pompy" class="rk-dl-thumb" id="rk-btn-thumb">
        </div>
        
        <div class="rk-dl-actions-area">
            <h3>Interaktywne materiały inżynierskie</h3>
            <p class="rk-dl-desc">Pobierz darmowy, autorski schemat doboru pompy obiegowej przygotowany specjalnie dla instalatorów i inwestorów. Miej ten algorytm zawsze pod ręką w swoim telefonie lub wydrukuj, aby uniknąć kosztownych błędów na budowie.</p>
            
            <div class="rk-dl-buttons">
                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Infografika-Kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym.pdf" target="_blank" class="rk-btn-pdf">
                    <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="12" y1="18" x2="12" y2="12"></line><polyline points="9 15 12 18 15 15"></polyline></svg>
                    Pobierz kompendium (Plik PDF)
                </a>
                <button class="rk-btn-img" id="rk-btn-preview">
                    <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline></svg>
                    Pokaż infografikę
                </button>
            </div>

            <div class="rk-dl-license">
                © 2026 Projekt-Ogrzewania.pl | Autor: Robert Kucharski. Udostępnianie materiału PDF dozwolone wyłącznie z zachowaniem logotypu portalu i bez modyfikacji pliku.
            </div>
        </div>
    </div>

    <div class="rk-dl-preview-full" id="rk-view-preview">
        <button class="rk-btn-back" id="rk-btn-close">
            <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="19" y1="12" x2="5" y2="12"></line><polyline points="12 19 5 12 12 5"></polyline></svg>
            Wróć do pobierania
        </button>
        <div style="margin-top: 20px;">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Infografika-Kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym.webp" alt="Pełna infografika doboru pompy obiegowej">
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var viewMain = document.getElementById('rk-view-main');
    var viewPreview = document.getElementById('rk-view-preview');
    
    var btnPreview = document.getElementById('rk-btn-preview');
    var btnThumb = document.getElementById('rk-btn-thumb');
    var btnClose = document.getElementById('rk-btn-close');

    function openPreview() {
        // Natychmiastowa zmiana stanu bez operatorów && i bez animacji
        viewMain.style.display = 'none';
        viewPreview.style.display = 'block';
    }

    function closePreview() {
        viewPreview.style.display = 'none';
        viewMain.style.display = 'flex'; // Przywracamy flex dla układu desktop/mobile
    }

    btnPreview.addEventListener('click', openPreview);
    btnThumb.addEventListener('click', openPreview);
    btnClose.addEventListener('click', closePreview);
});
</script>



<style>
:root {
    --rk-end-dark: #0f172a;
    --rk-end-blue: #0ea5e9;
    --rk-end-blue-hover: #0284c7;
    --rk-end-bg: #ffffff;
    --rk-end-gray-light: #f1f5f9;
    --rk-end-gray-text: #475569;
    --rk-end-green: #10b981;
    --rk-end-red: #ef4444;
    --rk-end-border: #e2e8f0;
}

.rk-end-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-end-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(14, 165, 233, 0.15);
    border: 1px solid var(--rk-end-blue);
    overflow: hidden;
}

/* Sekcja Tytułowa */
.rk-end-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-end-dark) 0%, #1e293b 100%);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-end-blue);
}

.rk-end-header h2 {
    color: #ffffff;
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-end-header p {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

/* Interaktywny Symulator */
.rk-end-interactive {
    padding: 40px 50px;
    background: var(--rk-end-gray-light);
}

.rk-end-interactive h3 {
    margin: 0 0 25px 0;
    color: var(--rk-end-dark);
    font-size: 20px;
    font-weight: 800;
}

.rk-toggle-list {
    display: flex;
    flex-direction: column;
    gap: 15px;
    margin-bottom: 30px;
}

.rk-toggle-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #ffffff;
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-end-border);
    transition: all 0.3s;
}

.rk-toggle-item:hover {
    border-color: #cbd5e1;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
}

.rk-toggle-text {
    padding-right: 20px;
}

.rk-toggle-text h4 {
    margin: 0 0 5px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-end-dark);
}

.rk-toggle-text p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-end-gray-text);
    line-height: 1.5;
}

/* Przełącznik Switch */
.rk-switch {
    position: relative;
    display: inline-block;
    width: 60px;
    height: 34px;
    flex-shrink: 0;
}

.rk-switch input {
    opacity: 0;
    width: 0;
    height: 0;
}

.rk-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: #cbd5e1;
    transition: .4s;
    border-radius: 34px;
}

.rk-slider:before {
    position: absolute;
    content: "";
    height: 26px;
    width: 26px;
    left: 4px;
    bottom: 4px;
    background-color: white;
    transition: .4s;
    border-radius: 50%;
    box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}

input:checked + .rk-slider {
    background-color: var(--rk-end-green);
}

input:checked + .rk-slider:before {
    transform: translateX(26px);
}

/* Wynik Symulacji */
.rk-end-result-box {
    display: flex;
    align-items: center;
    gap: 30px;
    padding: 30px;
    background: #ffffff;
    border-radius: 16px;
    border: 2px solid var(--rk-end-border);
    transition: all 0.4s ease;
}

.rk-result-icon {
    width: 80px;
    height: 80px;
    flex-shrink: 0;
}

.rk-anim-gauge {
    width: 100%;
    height: 100%;
    transform-origin: center;
    transition: all 0.5s ease;
}

.rk-gauge-bg { fill: none; stroke: #e2e8f0; stroke-width: 8; stroke-linecap: round; }
.rk-gauge-val { fill: none; stroke: var(--rk-end-red); stroke-width: 8; stroke-linecap: round; stroke-dasharray: 100; stroke-dashoffset: 80; transition: stroke 0.5s, stroke-dashoffset 0.5s; }
.rk-gauge-needle { transform-origin: 50px 50px; transform: rotate(-45deg); transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1); }

.rk-end-result-text h4 {
    margin: 0 0 10px 0;
    font-size: 22px;
    font-weight: 900;
    transition: color 0.3s;
}

.rk-end-result-text p {
    margin: 0;
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-end-gray-text);
}

.rk-end-result-text a {
    color: var(--rk-end-blue);
    font-weight: 700;
    text-decoration: none;
}
.rk-end-result-text a:hover { text-decoration: underline; }

/* Tagi Długi Ogon */
.rk-end-tags {
    padding: 20px 50px;
    background: #ffffff;
    border-top: 1px solid var(--rk-end-border);
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
}

.rk-mat-tag {
    background: #f0f9ff;
    color: #0284c7;
    padding: 6px 12px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    border: 1px solid #bae6fd;
    white-space: nowrap;
}

/* Massive CTA */
.rk-end-cta {
    padding: 40px 50px;
    background: #ffffff;
    text-align: center;
    border-top: 1px dashed var(--rk-end-border);
}

.rk-btn-end {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-end-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 45px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(14, 165, 233, 0.4);
    transition: all 0.3s ease;
}

.rk-btn-end:hover {
    transform: translateY(-3px);
    background: var(--rk-end-blue-hover);
    box-shadow: 0 15px 30px -5px rgba(2, 132, 199, 0.5);
}

.rk-btn-end svg {
    transition: transform 0.3s;
}

.rk-btn-end:hover svg {
    transform: translateX(5px);
}

@media (max-width: 768px) {
    .rk-end-header, .rk-end-interactive, .rk-end-tags, .rk-end-cta { padding: 30px 20px; }
    .rk-end-result-box { flex-direction: column; text-align: center; gap: 15px; padding: 20px; }
    .rk-toggle-item { flex-direction: column; align-items: flex-start; gap: 15px; }
    .rk-switch { align-self: flex-end; }
    .rk-btn-end { width: 100%; padding: 18px 20px; font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Podsumowanie – Bezkompromisowa hydraulika to podstawa komfortu",
    "description": "Zakończenie artykułu i interaktywny symulator układu dystrybucji udowadniający, że prawidłowy dobór pompy obiegowej chroni przed awarią ogrzewania podłogowego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/", 
        "https://sobir.pl/" 
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset",
    "name": "Zestawienie Opłacalności Precyzyjnych Obliczeń Hydraulicznych 2026",
    "description": "Baza danych i algorytm oceniający stabilność systemu w zależności od podjętych kroków inżynieryjnych: audyt OZC, parametryzacja zaworów i zastosowanie kalkulatora pomp.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dobór pompy obiegowej do podłogówki",
      "kalkulator przepływu wody ogrzewanie podłogowe",
      "opory hydrauliczne pętli",
      "pompa obiegowa 25-60 parametry",
      "energooszczędna instalacja podłogowa"
    ],
    "measurementTechnique": "Algorytmiczna weryfikacja błędów hydraulicznych w układach niskotemperaturowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Metoda archaiczna: Dobór pompy na oko – ryzyko szumów i niedogrzania.",
        "Metoda inżynierska: Wykorzystanie kalkulatorów, OZC i dokładnej różnicy temperatur."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp",
    "name": "Weryfikator Błędów Hydraulicznych",
    "description": "Interaktywne narzędzie edukacyjne symulujące skutki decyzji instalatorskich na ostateczną sprawność instalacji ogrzewania podłogowego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-end-container" id="rk-final-hydraulics">
    <div class="rk-end-header">
        <h2>Podsumowanie – Bezkompromisowa hydraulika to podstawa komfortu</h2>
        <p>
            Dobór pompy obiegowej w ogrzewaniu podłogowym nie toleruje kompromisów, półśrodków i instalatorskich mitów. To czysta matematyka i fizyka płynów. Pamiętaj, że nawet najlepsze źródło ciepła, takie jak nowoczesna pompa ciepła czy kocioł kondensacyjny, nie zapewni komfortu termicznego, jeśli układ dystrybucji oparty na pompie obiegowej zostanie spartaczony.
        </p>
    </div>

    <div class="rk-end-interactive">
        <h3>Symulator Stabilności Instalacji</h3>
        <p style="margin-top: -15px; margin-bottom: 25px; color: var(--rk-end-gray-text); font-size: 14px;">Zaznacz, które kroki techniczne zrealizowałeś, aby sprawdzić, czy Twoja podłogówka jest bezpieczna.</p>
        
        <div class="rk-toggle-list">
            <div class="rk-toggle-item">
                <div class="rk-toggle-text">
                    <h4>Obliczenia cieplne budynku</h4>
                    <p>Posiadam rzetelny audyt wykonany zgodnie ze sztuką (nie szacowany "z metra").</p>
                </div>
                <label class="rk-switch">
                    <input type="checkbox" class="rk-sim-trigger">
                    <span class="rk-slider"></span>
                </label>
            </div>
            
            <div class="rk-toggle-item">
                <div class="rk-toggle-text">
                    <h4>Pętle zrównoważone hydraulicznie</h4>
                    <p>Żadna pętla nie przekracza normatywnej maksymalnej długości, chroniąc pompę przed przeciążeniem.</p>
                </div>
                <label class="rk-switch">
                    <input type="checkbox" class="rk-sim-trigger">
                    <span class="rk-slider"></span>
                </label>
            </div>

            <div class="rk-toggle-item">
                <div class="rk-toggle-text">
                    <h4>Użycie kalkulatora pomp</h4>
                    <p>Punkt pracy został precyzyjnie naniesiony na wykres producenta na podstawie rzeczywistych oporów.</p>
                </div>
                <label class="rk-switch">
                    <input type="checkbox" class="rk-sim-trigger">
                    <span class="rk-slider"></span>
                </label>
            </div>
        </div>

        <div class="rk-end-result-box" id="rkSimResult">
            <div class="rk-result-icon">
                <svg viewBox="0 0 100 100" class="rk-anim-gauge">
                    <path class="rk-gauge-bg" d="M 20 80 A 40 40 0 1 1 80 80"></path>
                    <path id="rkGaugeVal" class="rk-gauge-val" d="M 20 80 A 40 40 0 1 1 80 80"></path>
                    <g id="rkGaugeNeedle" class="rk-gauge-needle">
                        <circle cx="50" cy="50" r="5" fill="#1e293b"></circle>
                        <polygon points="48,50 52,50 50,15" fill="#1e293b"></polygon>
                    </g>
                </svg>
            </div>
            <div class="rk-end-result-text">
                <h4 id="rkSimTitle" style="color: var(--rk-end-red);">Krytyczne Ryzyko Awarii</h4>
                <p id="rkSimDesc">
                    Projektowanie "z głowy" gwarantuje problemy. Odrzuć archaiczne metody! Opieraj się na twardych danych z <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">certyfikowanych projektów OZC</a> i wymagaj stosowania norm technicznych.
                </p>
            </div>
        </div>
    </div>

    <div class="rk-end-tags">
        <span class="rk-mat-tag"># dobór pompy obiegowej do podłogówki</span>
        <span class="rk-mat-tag"># kalkulator przepływu wody ogrzewanie podłogowe</span>
        <span class="rk-mat-tag"># projekt ozc a pompa ciepła</span>
        <span class="rk-mat-tag"># hałas w rozdzielaczu podłogówki</span>
        <span class="rk-mat-tag"># krzywa grzewcza w ogrzewaniu podłogowym</span>
        <span class="rk-mat-tag"># pompa obiegowa 25-60 parametry</span>
        <span class="rk-mat-tag"># opory hydrauliczne pętli</span>
        <span class="rk-mat-tag"># energooszczędna instalacja podłogowa</span>
    </div>

    <div class="rk-end-cta">
        <p style="color: var(--rk-end-gray-text); font-size: 16px; margin: 0 auto 25px auto; max-width: 650px; line-height: 1.6;">
            Tylko pełna kontrola nad hydrauliką da Ci pewność, że Twoja instalacja będzie energooszczędna, cicha i bezawaryjna przez długie lata eksploatacji. Czas przejąć stery nad swoją budową.
        </p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-end">
            SPRAWDŹ BAZĘ WIEDZY EKSKLUZYWNEJ
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const toggles = document.querySelectorAll('.rk-sim-trigger');
    const gaugeVal = document.getElementById('rkGaugeVal');
    const gaugeNeedle = document.getElementById('rkGaugeNeedle');
    const title = document.getElementById('rkSimTitle');
    const desc = document.getElementById('rkSimDesc');
    const resultBox = document.getElementById('rkSimResult');

    function updateSimulation() {
        let score = 0;
        toggles.forEach(function(t) {
            if (t.checked) {
                score = score + 1;
            }
        });

        if (score === 0) {
            gaugeVal.style.stroke = '#ef4444';
            gaugeVal.style.strokeDashoffset = '80';
            gaugeNeedle.style.transform = 'rotate(-80deg)';
            title.style.color = '#ef4444';
            title.textContent = 'Krytyczne Ryzyko Awarii';
            desc.innerHTML = 'Projektowanie "z głowy" gwarantuje problemy. Odrzuć archaiczne metody! Opieraj się na twardych danych z <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">certyfikowanych projektów OZC</a> i wymagaj stosowania norm technicznych.';
            resultBox.style.borderColor = '#ef4444';
        } else if (score === 1) {
            gaugeVal.style.stroke = '#eab308';
            gaugeVal.style.strokeDashoffset = '50';
            gaugeNeedle.style.transform = 'rotate(-30deg)';
            title.style.color = '#eab308';
            title.textContent = 'Układ Niestabilny';
            desc.innerHTML = 'Dobry początek, ale instalacja to system naczyń połączonych. Brak kontroli nad <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">resztą błędów wykonawczych</a> zemści się niedogrzaniem stref granicznych.';
            resultBox.style.borderColor = '#eab308';
        } else if (score === 2) {
            gaugeVal.style.stroke = '#0ea5e9';
            gaugeVal.style.strokeDashoffset = '20';
            gaugeNeedle.style.transform = 'rotate(30deg)';
            title.style.color = '#0ea5e9';
            title.textContent = 'Poprawny Standard';
            desc.innerHTML = 'Jesteś na świetnej drodze. Parametry hydrauliczne są niemal spięte, pamiętaj tylko o uwzględnieniu ostatecznego <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">zapotrzebowania na ciepło</a> przed zakupem pompy.';
            resultBox.style.borderColor = '#bae6fd';
        } else if (score === 3) {
            gaugeVal.style.stroke = '#10b981';
            gaugeVal.style.strokeDashoffset = '0';
            gaugeNeedle.style.transform = 'rotate(80deg)';
            title.style.color = '#10b981';
            title.textContent = 'Inżynierska Perfekcja';
            desc.innerHTML = 'Układ zbalansowany w 100%. Tak zaprojektowana instalacja będzie energooszczędna, cicha i bezawaryjna. To fundament, który wykorzystuje pełen potencjał <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">niskotemperaturowej pompy ciepła</a>.';
            resultBox.style.borderColor = '#10b981';
        }
    }

    toggles.forEach(function(toggle) {
        toggle.addEventListener('change', updateSimulation);
    });
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">Kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Kompleksowy kalkulator ogrzewania podłogowego.</title>
		<link>https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 01 Mar 2026 15:07:17 +0000</pubDate>
				<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Narzędzia i kalkulatory]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradnik inwestora]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[Technika instalacyjna]]></category>
		<category><![CDATA[Technologia grzewcza]]></category>
		<category><![CDATA[długość rury pex]]></category>
		<category><![CDATA[instalacja podłogowa krok po kroku]]></category>
		<category><![CDATA[kalkulator ogrzewania podłogowego]]></category>
		<category><![CDATA[moc ogrzewania podłogowego]]></category>
		<category><![CDATA[obliczenia ogrzewania podłogowego]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[przepływy w pętlach]]></category>
		<category><![CDATA[rozdzielacz podłogówki]]></category>
		<category><![CDATA[rozstaw rur podłogówka]]></category>
		<category><![CDATA[temperatura zasilania podłogówka]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3552</guid>

					<description><![CDATA[<p>Ile metrów rury kupić? Jak dobrać rozstaw pętli? Czy temperatura 35°C wystarczy, aby ogrzać cały dom? Kompleksowy kalkulator ogrzewania podłogowego pozwala przełożyć te pytania na konkretne liczby. W artykule znajdziesz nie tylko wzory i gotowe przeliczniki, ale także realny przykład mieszkania 70 m² rozpisany krok po kroku. To praktyczne narzędzie dla inwestorów, którzy chcą świadomie zaplanować instalację i uniknąć kosztownych błędów wykonawczych.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/">Kompleksowy kalkulator ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-darker: #020617;
    --rk-intro-primary: #2563eb; /* Inżynieryjny niebieski */
    --rk-intro-primary-light: #eff6ff;
    --rk-intro-teal: #0d9488; /* Akcent dla parametrów */
    --rk-intro-teal-bg: #f0fdfa;
    --rk-intro-bg: #ffffff;
    --rk-intro-surface: #f8fafc;
    --rk-intro-border: #e2e8f0;
    --rk-intro-text: #334155;
    --rk-intro-muted: #64748b;
    --rk-intro-shadow: 0 10px 30px -10px rgba(37, 99, 235, 0.15);
}

.rk-intro-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-intro-bg);
    border-radius: 24px;
    box-shadow: var(--rk-intro-shadow);
    border: 1px solid var(--rk-intro-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK I WSTĘP --- */
.rk-intro-header {
    background: linear-gradient(145deg, var(--rk-intro-darker) 0%, var(--rk-intro-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
}

.rk-intro-header::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 100%; height: 5px;
    background: linear-gradient(90deg, var(--rk-intro-primary), var(--rk-intro-teal));
}

.rk-intro-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(37, 99, 235, 0.2);
    color: #60a5fa;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(96, 165, 250, 0.3);
}

.rk-intro-title {
    font-size: 32px;
    font-weight: 900;
    line-height: 1.2;
    margin: 0 0 25px 0;
    color: #ffffff;
}

.rk-intro-title span {
    color: #93c5fd;
}

.rk-intro-lead {
    font-size: 17px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
    padding: 25px;
    background: rgba(255, 255, 255, 0.03);
    border-left: 4px solid var(--rk-intro-primary);
    border-radius: 0 12px 12px 0;
}

.rk-intro-lead strong {
    color: #ffffff;
    font-weight: 700;
}

.rk-link-light {
    color: #60a5fa;
    text-decoration: none;
    border-bottom: 1px dashed rgba(96, 165, 250, 0.5);
    transition: all 0.3s;
}

.rk-link-light:hover {
    color: #ffffff;
    border-bottom-style: solid;
}

/* --- INTERAKTYWNY EKSPLORATOR ALGORYTMU --- */
.rk-explorer-section {
    padding: 40px 50px;
    background: var(--rk-intro-surface);
}

.rk-explorer-title {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-intro-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

/* Nawigacja (Menu pigułkowe) */
.rk-explorer-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 35px;
    background: #ffffff;
    padding: 8px;
    border-radius: 16px;
    border: 1px solid var(--rk-intro-border);
}

.rk-exp-btn {
    flex: 1;
    min-width: 140px;
    padding: 14px 20px;
    background: transparent;
    border: none;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-intro-muted);
    cursor: pointer;
    transition: all 0.3s;
    text-align: center;
}

.rk-exp-btn:hover {
    background: var(--rk-intro-surface);
    color: var(--rk-intro-primary);
}

.rk-exp-btn.active {
    background: var(--rk-intro-primary);
    color: #ffffff;
    box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3);
}

/* Zawartość zakładek */
.rk-exp-content {
    display: none;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-intro-border);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    overflow: hidden;
    animation: rkFadeIn 0.4s ease;
}

.rk-exp-content.active {
    display: flex;
}

@keyframes rkFadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

/* Layout wewnętrzny: Lewo SVG (Statyczne), Prawo Tekst */
.rk-exp-visual {
    flex: 0 0 40%;
    background: var(--rk-intro-teal-bg);
    padding: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-right: 1px solid var(--rk-intro-border);
}

.rk-static-svg {
    width: 100%;
    max-width: 180px;
    height: auto;
    filter: drop-shadow(0 10px 15px rgba(13, 148, 136, 0.15));
}

.rk-exp-details {
    flex: 1;
    padding: 35px 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-exp-details h3 {
    margin: 0 0 15px 0;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-intro-dark);
}

.rk-exp-details p {
    margin: 0 0 20px 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-intro-text);
}

/* Kafelki z parametrami (zamiast lania wody) */
.rk-data-tiles {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-tile {
    background: var(--rk-intro-surface);
    padding: 15px;
    border-radius: 12px;
    border: 1px solid var(--rk-intro-border);
}

.rk-tile-label {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-intro-muted);
    margin-bottom: 5px;
}

.rk-tile-value {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-intro-primary);
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-intro-header, .rk-explorer-section { padding: 30px 25px; }
    .rk-intro-title { font-size: 26px; }
    .rk-intro-lead { padding: 20px 15px; font-size: 15px; }
    .rk-exp-content.active { flex-direction: column; }
    .rk-exp-visual { border-right: none; border-bottom: 1px solid var(--rk-intro-border); padding: 40px 20px; }
    .rk-exp-details { padding: 25px; }
    .rk-data-tiles { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Kompleksowy Kalkulator Ogrzewania Podłogowego (Algorytm PN-EN 1264)",
    "description": "Precyzyjne narzędzie inżynieryjne pozwalające wyliczyć strumień masowy, opory hydrauliczne pętli, rozstaw rur i całkowitą długość przewodów PERT/PEX. Kompendium wiedzy matematycznej.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-23",
    "dateModified": "2026-05-23"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-algorytm",
    "name": "Zestawienie Parametrów Algorytmu PN-EN 1264",
    "description": "Baza danych wytycznych algorytmicznych niezbędnych do przeprowadzenia poprawnych obliczeń hydrauliczno-termicznych systemu grzewczego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kompleksowy kalkulator ogrzewania podłogowego",
      "algorytm inżynieryjny PN-EN 1264",
      "obliczenia hydrauliczno-termiczne",
      "strumień masowy podłogówki",
      "opory hydrauliczne pętli"
    ],
    "measurementTechnique": "Obliczenia numeryczne na podstawie wzorów fizyki cieplnej i normy europejskiej PN-EN 1264 dot. systemów płaszczyznowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zapotrzebowanie na strumień masowy czynnika grzewczego (kg/h).",
        "Opory hydrauliczne pętli grzewczej i spadki ciśnień (kPa).",
        "Wymagany rozstaw rur dostosowany do strefy i strat ciepła.",
        "Całkowita długość przewodów PEX/PERT na jedno pomieszczenie."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-wstep",
    "name": "Eksplorator Algorytmu Ogrzewania Podłogowego",
    "description": "Interaktywny widget prezentujący 4 główne filary obliczeniowe profesjonalnego kalkulatora podłogówki, wyposażony w statyczne grafiki inżynierskie.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and CSS3",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container" id="rk-intro-app">
    
    <div class="rk-intro-header">
        <div class="rk-intro-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Kompendium Inżyniera
        </div>
        <h2 class="rk-intro-title">Kompleksowy Kalkulator <span>Ogrzewania Podłogowego</span></h2>
        
        <p class="rk-intro-lead">
            Błędne zaprojektowanie instalacji płaszczyznowej generuje gigantyczne straty finansowe, niedogrzanie pomieszczeń oraz pękanie wylewek jastrychowych. <strong>Kompleksowy kalkulator ogrzewania podłogowego</strong> to zaawansowany algorytm inżynieryjny oparty na <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/" class="rk-link-light">normie PN-EN 1264</a>, który pozwala precyzyjnie wyliczyć zapotrzebowanie na strumień masowy czynnika grzewczego, opory hydrauliczne pętli, wymagany <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-link-light">rozstaw rur</a> oraz całkowitą długość <a href="https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/" class="rk-link-light">przewodów PERT/PEX</a>. Poniższy materiał stanowi kompletne kompendium wiedzy matematycznej i instalacyjnej, niezbędne do przeprowadzenia obliczeń hydrauliczno-termicznych systemu grzewczego (Interaktywny kalkulator jest dostępny w dalszej części artykułu).
        </p>
    </div>

    <div class="rk-explorer-section">
        <h3 class="rk-explorer-title">4 Filary Algorytmu Obliczeniowego</h3>
        
        <div class="rk-explorer-nav">
            <button class="rk-exp-btn active" data-target="tab-masowy">Strumień Masowy</button>
            <button class="rk-exp-btn" data-target="tab-opory">Opory Hydrauliczne</button>
            <button class="rk-exp-btn" data-target="tab-rozstaw">Rozstaw Rur</button>
            <button class="rk-exp-btn" data-target="tab-dlugosc">Długość Przewodów</button>
        </div>

        <div class="rk-exp-content active" id="tab-masowy">
            <div class="rk-exp-visual">
                <svg class="rk-static-svg" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
                    <rect x="35" y="10" width="30" height="80" rx="4" fill="#ffffff" stroke="#2563eb" stroke-width="4"></rect>
                    <line x1="45" y1="20" x2="55" y2="20" stroke="#64748b" stroke-width="2"></line>
                    <line x1="45" y1="40" x2="55" y2="40" stroke="#64748b" stroke-width="2"></line>
                    <line x1="45" y1="60" x2="55" y2="60" stroke="#64748b" stroke-width="2"></line>
                    <line x1="45" y1="80" x2="55" y2="80" stroke="#64748b" stroke-width="2"></line>
                    <polygon points="40,55 60,55 50,70" fill="#ef4444"></polygon>
                    <path d="M 50 90 L 50 100 M 35 100 L 65 100" stroke="#0d9488" stroke-width="4" stroke-linecap="round"></path>
                </svg>
            </div>
            <div class="rk-exp-details">
                <h3>Zapotrzebowanie na strumień masowy</h3>
                <p>Kalkulator na podstawie projektowego obciążenia cieplnego (OZC) określa dokładną ilość wody (w litrach na minutę), jaka musi przepłynąć przez dany obwód, aby dostarczyć wymaganą moc grzewczą do pomieszczenia. To podstawa regulacji na rotametrach.</p>
                <div class="rk-data-tiles">
                    <div class="rk-tile">
                        <div class="rk-tile-label">Jednostka bazowa</div>
                        <div class="rk-tile-value">kg/h lub l/min</div>
                    </div>
                    <div class="rk-tile">
                        <div class="rk-tile-label">Zależność fizyczna</div>
                        <div class="rk-tile-value">Q = m · c · ΔT</div>
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-exp-content" id="tab-opory">
            <div class="rk-exp-visual">
                <svg class="rk-static-svg" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
                    <path d="M 10 50 Q 30 20 50 50 T 90 50" fill="none" stroke="#e2e8f0" stroke-width="12" stroke-linecap="round"></path>
                    <path d="M 10 50 Q 30 20 50 50 T 90 50" fill="none" stroke="#2563eb" stroke-width="6" stroke-linecap="round"></path>
                    <circle cx="20" cy="30" r="12" fill="#ffffff" stroke="#0d9488" stroke-width="3"></circle>
                    <line x1="20" y1="30" x2="28" y2="22" stroke="#ef4444" stroke-width="2" stroke-linecap="round"></line>
                    <circle cx="80" cy="30" r="12" fill="#ffffff" stroke="#0d9488" stroke-width="3"></circle>
                    <line x1="80" y1="30" x2="72" y2="22" stroke="#ef4444" stroke-width="2" stroke-linecap="round"></line>
                </svg>
            </div>
            <div class="rk-exp-details">
                <h3>Opory hydrauliczne pętli</h3>
                <p>Zbyt długa rura lub zbyt duża prędkość wody generuje ogromne opory tarcia (straty liniowe i miejscowe). Obliczenia te są krytyczne dla poprawnego doboru wysokości podnoszenia pompy obiegowej, aby zapobiec &#8222;niedogrzaniu&#8221; najdalszych pętli.</p>
                <div class="rk-data-tiles">
                    <div class="rk-tile">
                        <div class="rk-tile-label">Maksymalny opór pętli</div>
                        <div class="rk-tile-value">≤ 20 kPa</div>
                    </div>
                    <div class="rk-tile">
                        <div class="rk-tile-label">Optymalna prędkość</div>
                        <div class="rk-tile-value">0,25 &#8211; 0,5 m/s</div>
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-exp-content" id="tab-rozstaw">
            <div class="rk-exp-visual">
                <svg class="rk-static-svg" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
                    <rect x="10" y="10" width="80" height="80" fill="#ffffff" stroke="#cbd5e1" stroke-width="2" rx="4"></rect>
                    <path d="M 20 20 L 80 20 M 80 20 A 10 10 0 0 1 80 40 M 80 40 L 20 40 M 20 40 A 10 10 0 0 0 20 60 M 20 60 L 80 60 M 80 60 A 10 10 0 0 1 80 80 M 80 80 L 20 80" fill="none" stroke="#0d9488" stroke-width="6" stroke-linecap="round"></path>
                    <line x1="45" y1="23" x2="45" y2="37" stroke="#ef4444" stroke-width="2"></line>
                    <polygon points="45,23 42,28 48,28" fill="#ef4444"></polygon>
                    <polygon points="45,37 42,32 48,32" fill="#ef4444"></polygon>
                </svg>
            </div>
            <div class="rk-exp-details">
                <h3>Wymagany rozstaw rur</h3>
                <p>Na podstawie oporu cieplnego warstw posadzki (np. płytki vs panele) oraz wyliczonych strat ciepła, system wskazuje bezpieczny rozstaw montażowy. Zagęszczenie rur (np. co 10 cm w łazience) gwarantuje osiągnięcie właściwej temperatury wnętrza.</p>
                <div class="rk-data-tiles">
                    <div class="rk-tile">
                        <div class="rk-tile-label">Pompy ciepła (Standard)</div>
                        <div class="rk-tile-value">10 &#8211; 15 cm</div>
                    </div>
                    <div class="rk-tile">
                        <div class="rk-tile-label">Strefy brzegowe (Okna)</div>
                        <div class="rk-tile-value">5 &#8211; 10 cm</div>
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-exp-content" id="tab-dlugosc">
            <div class="rk-exp-visual">
                <svg class="rk-static-svg" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
                    <circle cx="50" cy="50" r="35" fill="none" stroke="#2563eb" stroke-width="8"></circle>
                    <circle cx="50" cy="50" r="25" fill="none" stroke="#2563eb" stroke-width="8"></circle>
                    <circle cx="50" cy="50" r="15" fill="none" stroke="#2563eb" stroke-width="8"></circle>
                    <path d="M 50 15 L 50 5" stroke="#ef4444" stroke-width="4" stroke-linecap="round"></path>
                    <path d="M 50 5 L 90 5" stroke="#ef4444" stroke-width="4" stroke-linecap="round"></path>
                    <text x="70" y="20" fill="#0f172a" font-size="14" font-weight="900" font-family="sans-serif">Σ L</text>
                </svg>
            </div>
            <div class="rk-exp-details">
                <h3>Całkowita długość przewodów</h3>
                <p>Precyzyjne wyliczenie metrów bieżących (uwzględniające 10% naddatku instalacyjnego oraz trasy doprowadzające do rozdzielacza) zapobiega brakom materiałowym na budowie i pozwala dokładnie oszacować pojemność zładu wodnego układu.</p>
                <div class="rk-data-tiles">
                    <div class="rk-tile">
                        <div class="rk-tile-label">Max dł. obwodu (PEX 16)</div>
                        <div class="rk-tile-value">120 m</div>
                    </div>
                    <div class="rk-tile">
                        <div class="rk-tile-label">Pojemność rury 16&#215;2</div>
                        <div class="rk-tile-value">0,113 l/mb</div>
                    </div>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-intro-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener interaktywny należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na nieautoryzowanej domenie jest zabronione prawem.
                </div>
            `;
            return;
        }
    }

    // Logika Zakładek Eksploratora
    const buttons = document.querySelectorAll('.rk-exp-btn');
    const contents = document.querySelectorAll('.rk-exp-content');

    buttons.forEach(btn => {
        btn.addEventListener('click', () => {
            const targetId = btn.getAttribute('data-target');
            
            // Resetuj wszystkie
            buttons.forEach(b => b.classList.remove('active'));
            contents.forEach(c => c.classList.remove('active'));
            
            // Aktywuj kliknięty
            btn.classList.add('active');
            document.getElementById(targetId).classList.add('active');
        });
    });
});
</script>



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-darker: #020617;
    --rk-calc-brand: #3b82f6; /* Inżynieryjny, mocny niebieski */
    --rk-calc-brand-hover: #2563eb;
    --rk-calc-accent: #f59e0b; /* Bursztyn do akcentowania wzorów */
    --rk-calc-bg: #ffffff;
    --rk-calc-surface: #f8fafc;
    --rk-calc-border: #e2e8f0;
    --rk-calc-text: #334155;
    --rk-calc-muted: #64748b;
    --rk-calc-formula-bg: #1e293b;
    --rk-shadow-soft: 0 10px 25px -5px rgba(59, 130, 246, 0.1);
}

.rk-calc-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-calc-bg);
    border-radius: 20px;
    box-shadow: var(--rk-shadow-soft);
    border: 1px solid var(--rk-calc-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-calc-header {
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, var(--rk-calc-darker) 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-calc-brand);
}

.rk-calc-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(59, 130, 246, 0.2);
    color: #93c5fd;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 15px;
    border: 1px solid rgba(147, 197, 253, 0.3);
}

.rk-calc-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-calc-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-calc-lead strong { color: #ffffff; }

.rk-calc-link {
    color: #60a5fa;
    text-decoration: underline;
    text-underline-offset: 3px;
    font-weight: 600;
    transition: color 0.3s;
}

.rk-calc-link:hover { color: #93c5fd; }

/* --- INTERAKTYWNY STEPPER --- */
.rk-calc-interactive {
    padding: 40px 50px;
    background: var(--rk-calc-surface);
}

.rk-calc-subtitle {
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

.rk-stepper-wrapper {
    display: flex;
    gap: 30px;
    background: #ffffff;
    border: 1px solid var(--rk-calc-border);
    border-radius: 16px;
    padding: 25px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

/* Lewa strona: Kroki */
.rk-stepper-nav {
    flex: 0 0 220px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    border-right: 1px solid var(--rk-calc-border);
    padding-right: 20px;
}

.rk-step-btn {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    text-align: left;
    background: transparent;
    border: 1px solid transparent;
    padding: 15px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-calc-muted);
    cursor: pointer;
    transition: all 0.3s;
}

.rk-step-btn:hover {
    background: var(--rk-calc-surface);
    color: var(--rk-calc-brand);
}

.rk-step-btn.active {
    background: var(--rk-calc-brand);
    color: #ffffff;
    box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
}

.rk-step-num {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    background: var(--rk-calc-border);
    color: var(--rk-calc-text);
    border-radius: 50%;
    font-size: 12px;
    font-weight: 900;
    transition: all 0.3s;
}

.rk-step-btn.active .rk-step-num {
    background: #ffffff;
    color: var(--rk-calc-brand);
}

/* Prawa strona: Zawartość */
.rk-stepper-content {
    flex: 1;
    position: relative;
    min-height: 320px;
}

.rk-step-panel {
    display: none;
    animation: slideInRight 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-step-panel.active {
    display: block;
}

@keyframes slideInRight {
    from { opacity: 0; transform: translateX(20px); }
    to { opacity: 1; transform: translateX(0); }
}

.rk-panel-title {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    margin: 0 0 15px 0;
}

/* Wzór matematyczny */
.rk-formula-box {
    background: var(--rk-calc-formula-bg);
    border-radius: 12px;
    padding: 20px;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-left: 4px solid var(--rk-calc-accent);
    position: relative;
    overflow: hidden;
}

.rk-formula-box::before {
    content: 'Wzór wg PN-EN';
    position: absolute;
    top: 5px; left: 10px;
    font-size: 10px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
}

.rk-formula-text {
    font-family: 'Courier New', Courier, monospace;
    font-size: 22px;
    font-weight: 700;
    color: #ffffff;
    letter-spacing: 1px;
}

.rk-formula-text sub {
    font-size: 12px;
    color: var(--rk-calc-accent);
}

/* Wyjaśnienie */
.rk-panel-desc {
    font-size: 14px;
    line-height: 1.7;
    color: var(--rk-calc-text);
    margin: 0 0 20px 0;
    background: var(--rk-calc-surface);
    padding: 15px;
    border-radius: 8px;
    border: 1px dashed var(--rk-calc-border);
}

/* Wizualizacja SVG (Animacje) */
.rk-panel-visual {
    height: 100px;
    background: #ffffff;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-svg-graphic {
    width: 100%;
    max-width: 250px;
    height: 100%;
}

/* --- Animacje SVG --- */
.anim-ozc-arrow { stroke-dasharray: 4; animation: flowOut 1s linear infinite; stroke: #ef4444; }
@keyframes flowOut { to { stroke-dashoffset: -8; } }

.anim-heat-wave path { stroke: #f59e0b; opacity: 0; animation: radiateUp 1.5s infinite alternate; }
.anim-heat-wave path:nth-child(2) { animation-delay: 0.5s; }
.anim-heat-wave path:nth-child(3) { animation-delay: 1s; }
@keyframes radiateUp { to { opacity: 1; transform: translateY(-5px); } }

.anim-ruler-move { animation: shrinkRuler 3s infinite alternate cubic-bezier(0.4, 0, 0.2, 1); transform-origin: left; }
@keyframes shrinkRuler { 0% { transform: scaleX(1); } 100% { transform: scaleX(0.66); } }

.anim-pipe-roll { stroke-dasharray: 200; stroke-dashoffset: 200; animation: unroll 3s infinite ease-out; stroke: #3b82f6; }
@keyframes unroll { 50%, 100% { stroke-dashoffset: 0; } }

.anim-loop-split { stroke-dasharray: 100; animation: splitFlow 2s infinite linear; stroke: #3b82f6; }
@keyframes splitFlow { to { stroke-dashoffset: -20; } }

/* --- Responsywność --- */
@media (max-width: 768px) {
    .rk-calc-header, .rk-calc-interactive { padding: 30px 20px; }
    .rk-calc-title { font-size: 24px; }
    .rk-stepper-wrapper { flex-direction: column; padding: 15px; gap: 20px; }
    .rk-stepper-nav { flex: auto; border-right: none; border-bottom: 1px solid var(--rk-calc-border); padding-right: 0; padding-bottom: 15px; flex-direction: row; overflow-x: auto; scrollbar-width: none; }
    .rk-stepper-nav::-webkit-scrollbar { display: none; }
    .rk-step-btn { min-width: 160px; justify-content: center; }
    .rk-formula-text { font-size: 18px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-algorytm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Jak obliczyć zapotrzebowanie na ciepło i długość rur ogrzewania podłogowego?",
    "description": "Algorytm kalkulatora wg PN-EN 12831 i 1264. Poznaj krok po kroku wzory na projektowe obciążenie cieplne, rozstaw rur i podział na pętle.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-03-05",
    "dateModified": "2026-05-23"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-wzory",
    "name": "Wzory i algorytmy obliczeniowe PN-EN 12831 i 1264",
    "description": "Zestawienie matematyczne procedur doboru parametrów ogrzewania płaszczyznowego, zapobiegające błędom przewymiarowania instalacji.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczenia OZC",
      "długość rury podłogówka",
      "rozstaw rur wzór",
      "norma PN-EN 12831",
      "kalkulator ogrzewania podłogowego"
    ],
    "measurementTechnique": "Szeregowanie algorytmiczne wg norm europejskich, przeliczające powierzchnię i straty na zapotrzebowanie hydrauliczne.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Krok 1: Projektowa moc grzewcza Q_obl = A × q",
        "Krok 2: Gęstość strumienia q_s = Q_obl / A_grz",
        "Krok 3: Obliczenie teoretycznego rozstawu rur (a)",
        "Krok 4: Całkowita długość rury L = (A_grz / a × 1,1) + L_d",
        "Krok 5: Podział na pętle N_p = ceil(L / L_max)"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-algorytm",
    "name": "Symulator Algorytmu Podłogówki",
    "description": "Interaktywny panel (stepper) objaśniający w 5 krokach proces matematyczny zachodzący w kalkulatorze ogrzewania podłogowego wraz z wizualizacjami SVG.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-container" id="rk-calc-app">
    
    <div class="rk-calc-header">
        <div class="rk-calc-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><rect x="9" y="9" width="6" height="6"></rect><line x1="9" y1="1" x2="9" y2="4"></line><line x1="15" y1="1" x2="15" y2="4"></line><line x1="9" y1="20" x2="9" y2="23"></line><line x1="15" y1="20" x2="15" y2="23"></line><line x1="20" y1="9" x2="23" y2="9"></line><line x1="20" y1="14" x2="23" y2="14"></line><line x1="1" y1="9" x2="4" y2="9"></line><line x1="1" y1="14" x2="4" y2="14"></line></svg>
            Metodologia Obliczeń
        </div>
        <h2 class="rk-calc-title">Jak obliczyć zapotrzebowanie na ciepło i długość rur za pomocą kalkulatora?</h2>
        <p class="rk-calc-lead">
            Zgodnie z normą <strong>PN-EN 12831</strong>, podstawą do wyliczenia jakichkolwiek parametrów podłogówki jest <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-calc-link">Projektowe Obciążenie Cieplne budynku (OZC)</a>. Algorytm kalkulatora konwertuje tę wartość na <a href="https://projekt-ogrzewania.pl/ile-rury-na-m%c2%b2-ogrzewania-podlogowego/" class="rk-calc-link">metry bieżące rury</a> oraz liczbę sekcji <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/" class="rk-calc-link">rozdzielacza</a> w oparciu o parametry fizyczne przegród. Próba doboru instalacji „na oko” (np. uniwersalne przyjmowanie rozstawu co 15 cm) skutkuje niedogrzaniem stref przyokiennych lub przewymiarowaniem <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/" class="rk-calc-link">pompy obiegowej</a>, co generuje dodatkowe koszty na poziomie 2500–4000 PLN na etapie zakupu materiałów.
        </p>
    </div>

    <div class="rk-calc-interactive">
        <h3 class="rk-calc-subtitle">Algorytm obliczeniowy krok po kroku</h3>
        
        <div class="rk-stepper-wrapper">
            <div class="rk-stepper-nav">
                <button class="rk-step-btn active" data-step="1">
                    <span class="rk-step-num">1</span> Moc grzewcza
                </button>
                <button class="rk-step-btn" data-step="2">
                    <span class="rk-step-num">2</span> Gęstość strumienia
                </button>
                <button class="rk-step-btn" data-step="3">
                    <span class="rk-step-num">3</span> Rozstaw rur
                </button>
                <button class="rk-step-btn" data-step="4">
                    <span class="rk-step-num">4</span> Długość rury
                </button>
                <button class="rk-step-btn" data-step="5">
                    <span class="rk-step-num">5</span> Podział na pętle
                </button>
            </div>

            <div class="rk-stepper-content">
                
                <div class="rk-step-panel active" id="rk-step-1">
                    <h4 class="rk-panel-title">Wyznaczenie projektowej mocy grzewczej pomieszczenia (Q<sub>obl</sub>)</h4>
                    <div class="rk-formula-box">
                        <div class="rk-formula-text">Q<sub>obl</sub> = A &times; q</div>
                    </div>
                    <div class="rk-panel-desc">
                        Gdzie <strong>A</strong> to powierzchnia użytkowa [m²], a <strong>q</strong> to jednostkowe zapotrzebowanie na ciepło [W/m²] określone wg PN-EN 12831. Dla nowych budynków (WT 2021) przyjmuje się 30–50 W/m², dla domów po termomodernizacji 60–80 W/m².
                    </div>
                    <div class="rk-panel-visual">
                        <svg class="rk-svg-graphic" viewBox="0 0 200 80">
                            <path d="M 80 40 L 100 20 L 120 40 L 120 70 L 80 70 Z" fill="none" stroke="#64748b" stroke-width="4" stroke-linejoin="round"/>
                            <path class="anim-ozc-arrow" d="M 125 45 L 150 45" stroke-width="3" stroke-linecap="round"/>
                            <path class="anim-ozc-arrow" d="M 75 45 L 50 45" stroke-width="3" stroke-linecap="round"/>
                            <path class="anim-ozc-arrow" d="M 100 15 L 100 -5" stroke-width="3" stroke-linecap="round"/>
                        </svg>
                    </div>
                </div>

                <div class="rk-step-panel" id="rk-step-2">
                    <h4 class="rk-panel-title">Wyznaczenie gęstości strumienia cieplnego posadzki (q<sub>s</sub>)</h4>
                    <div class="rk-formula-box">
                        <div class="rk-formula-text">q<sub>s</sub> = Q<sub>obl</sub> / A<sub>grz</sub></div>
                    </div>
                    <div class="rk-panel-desc">
                        Gdzie <strong>A<sub>grz</sub></strong> to rzeczywista powierzchnia grzewcza [m²] (po odliczeniu stałej zabudowy meblowej np. szaf, kominków, wanien). Otrzymujemy parametr W/m² czystej podłogi.
                    </div>
                    <div class="rk-panel-visual">
                        <svg class="rk-svg-graphic" viewBox="0 0 200 80">
                            <path d="M 40 70 L 160 70 L 140 50 L 60 50 Z" fill="#e2e8f0" stroke="#cbd5e1" stroke-width="2"/>
                            <g class="anim-heat-wave" fill="none" stroke-width="3" stroke-linecap="round">
                                <path d="M 70 40 Q 80 30, 90 40 T 110 40"/>
                                <path d="M 90 35 Q 100 25, 110 35 T 130 35"/>
                                <path d="M 110 30 Q 120 20, 130 30 T 150 30"/>
                            </g>
                        </svg>
                    </div>
                </div>

                <div class="rk-step-panel" id="rk-step-3">
                    <h4 class="rk-panel-title">Obliczenie teoretycznego rozstawu rur (a)</h4>
                    <div class="rk-formula-box">
                        <div class="rk-formula-text">a = f( q<sub>s</sub> , t<sub>z</sub> , R<sub>&lambda;,B</sub> )</div>
                    </div>
                    <div class="rk-panel-desc">
                        Rozstaw rur [m] jest funkcją gęstości strumienia, temperatury zasilania oraz oporu cieplnego okładziny podłogowej. Oblicza się go z układu równań normy PN-EN 1264-2. Wynik zaokrągla się w dół do standardów montażowych: <strong>0,10 m, 0,15 m lub 0,20 m</strong>.
                    </div>
                    <div class="rk-panel-visual">
                        <svg class="rk-svg-graphic" viewBox="0 0 200 80">
                            <line x1="50" y1="40" x2="150" y2="40" stroke="#3b82f6" stroke-width="4" stroke-linecap="round"/>
                            <line class="anim-ruler-move" x1="50" y1="40" x2="150" y2="40" stroke="#f59e0b" stroke-width="6" stroke-linecap="round"/>
                            <line x1="50" y1="30" x2="50" y2="50" stroke="#64748b" stroke-width="2"/>
                            <line x1="150" y1="30" x2="150" y2="50" stroke="#64748b" stroke-width="2"/>
                        </svg>
                    </div>
                </div>

                <div class="rk-step-panel" id="rk-step-4">
                    <h4 class="rk-panel-title">Wyznaczenie całkowitej długości rury w pomieszczeniu (L)</h4>
                    <div class="rk-formula-box">
                        <div class="rk-formula-text">L = (A<sub>grz</sub> / a &times; 1,1) + L<sub>d</sub></div>
                    </div>
                    <div class="rk-panel-desc">
                        Gdzie <strong>1,1</strong> to stały współczynnik uwzględniający 10% zapasu na wygięcia łuków rur, a <strong>L<sub>d</sub></strong> to długość odcinka doprowadzającego (zasilanie + powrót) z szafki rozdzielaczowej do danego pomieszczenia [m].
                    </div>
                    <div class="rk-panel-visual">
                        <svg class="rk-svg-graphic" viewBox="0 0 200 80">
                            <circle cx="60" cy="40" r="20" fill="none" stroke="#3b82f6" stroke-width="4"/>
                            <circle cx="60" cy="40" r="12" fill="none" stroke="#3b82f6" stroke-width="4"/>
                            <path class="anim-pipe-roll" d="M 60 20 L 160 20" fill="none" stroke-width="4" stroke-linecap="round"/>
                        </svg>
                    </div>
                </div>

                <div class="rk-step-panel" id="rk-step-5">
                    <h4 class="rk-panel-title">Podział na pętle grzewcze (N<sub>p</sub>)</h4>
                    <div class="rk-formula-box">
                        <div class="rk-formula-text">N<sub>p</sub> = ceil( L / L<sub>max</sub> )</div>
                    </div>
                    <div class="rk-panel-desc">
                        Gdzie <strong>L<sub>max</sub></strong> to graniczna długość jednego obwodu (dla rury 16 mm wynosi 120 m). Funkcja <em>ceil</em> zaokrągla wynik matematyczny zawsze w górę do pełnej liczby całkowitej (obwodu na rozdzielaczu).
                    </div>
                    <div class="rk-panel-visual">
                        <svg class="rk-svg-graphic" viewBox="0 0 200 80">
                            <rect x="30" y="20" width="20" height="40" fill="#64748b" rx="2"/>
                            <path class="anim-loop-split" d="M 50 30 L 140 30 Q 160 30, 160 50 Q 160 70, 140 70 L 50 70" fill="none" stroke-width="4" stroke-linecap="round"/>
                            <path class="anim-loop-split" d="M 50 40 L 100 40 Q 120 40, 120 50 Q 120 60, 100 60 L 50 60" fill="none" stroke="#f59e0b" stroke-width="4" stroke-linecap="round"/>
                        </svg>
                    </div>
                </div>

            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-calc-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener algorytmiczny należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na nieautoryzowanej domenie jest zabronione prawem.
                </div>
            `;
            return;
        }
    }

    // Logika Steppera
    const stepBtns = document.querySelectorAll('.rk-step-btn');
    const stepPanels = document.querySelectorAll('.rk-step-panel');

    stepBtns.forEach(btn => {
        btn.addEventListener('click', () => {
            const targetStep = btn.getAttribute('data-step');
            
            // Czyszczenie klas aktywnych
            stepBtns.forEach(b => b.classList.remove('active'));
            stepPanels.forEach(p => p.classList.remove('active'));
            
            // Aktywacja wybranego
            btn.classList.add('active');
            document.getElementById('rk-step-' + targetStep).classList.add('active');
        });
    });
});
</script>



<style>
:root {
    --rk-temp-dark: #0f172a;
    --rk-temp-darker: #020617;
    --rk-temp-brand: #0ea5e9; /* Błękit inżynieryjny */
    --rk-temp-safe: #10b981;  /* Szmaragdowy - norma */
    --rk-temp-warn: #f59e0b;  /* Bursztyn - ostrzeżenie */
    --rk-temp-danger: #ef4444; /* Czerwień - awaria */
    --rk-temp-bg: #ffffff;
    --rk-temp-surface: #f8fafc;
    --rk-temp-border: #e2e8f0;
    --rk-temp-text: #334155;
    --rk-temp-muted: #64748b;
    --rk-temp-shadow: 0 15px 35px -10px rgba(15, 23, 42, 0.1);
}

.rk-temp-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-temp-bg);
    border-radius: 24px;
    box-shadow: var(--rk-temp-shadow);
    border: 1px solid var(--rk-temp-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-temp-header {
    background: linear-gradient(135deg, var(--rk-temp-darker) 0%, var(--rk-temp-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-temp-brand);
}

.rk-temp-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(14, 165, 233, 0.2);
    color: #38bdf8;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(56, 189, 248, 0.3);
}

.rk-temp-title {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-temp-title span { color: #7dd3fc; }

.rk-temp-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-temp-link {
    color: #38bdf8;
    text-decoration: none;
    border-bottom: 1px dashed rgba(56, 189, 248, 0.4);
    font-weight: 600;
    transition: all 0.3s;
}

.rk-temp-link:hover {
    color: #ffffff;
    border-bottom-style: solid;
}

/* --- KONTENER SYMULATORA --- */
.rk-temp-simulator {
    padding: 40px 50px;
    background: var(--rk-temp-surface);
}

.rk-sim-layout {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-temp-border);
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

/* Lewa Strona - Kontrolki i SVG */
.rk-sim-controls {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-slider-box {
    background: var(--rk-temp-surface);
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-temp-border);
}

.rk-slider-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
}

.rk-slider-label {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-temp-dark);
    text-transform: uppercase;
}

.rk-slider-value {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-temp-safe);
    transition: color 0.3s;
}

/* Custom Input Range */
.rk-range-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: #cbd5e1;
    outline: none;
    transition: background 0.3s;
}

.rk-range-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--rk-temp-safe);
    cursor: pointer;
    border: 4px solid #ffffff;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
    transition: background 0.3s, transform 0.1s;
}

.rk-range-slider::-webkit-slider-thumb:active {
    transform: scale(1.1);
}

/* Wizualizacja SVG Przekroju */
.rk-svg-stage {
    flex-grow: 1;
    background: #f1f5f9;
    border-radius: 16px;
    border: 1px dashed var(--rk-temp-border);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    position: relative;
    overflow: hidden;
}

.rk-cross-section { width: 100%; max-width: 350px; height: auto; }

/* Animacje SVG */
.anim-heat-ray { stroke-dasharray: 8 8; animation: heatRise 2s linear infinite; }
@keyframes heatRise { to { stroke-dashoffset: -16; } }

.anim-crack-path { stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 0.5s ease-out; }
.state-danger .anim-crack-path { stroke-dashoffset: 0; }

.anim-pipe-color { transition: fill 0.3s, stroke 0.3s; }
.state-warn .anim-pipe-color { fill: var(--rk-temp-warn); stroke: #d97706; }
.state-warn .anim-heat-ray { stroke: var(--rk-temp-warn); animation-duration: 1.2s; }
.state-danger .anim-pipe-color { fill: var(--rk-temp-danger); stroke: #b91c1c; }
.state-danger .anim-heat-ray { stroke: var(--rk-temp-danger); animation-duration: 0.7s; }

/* Prawa Strona - Metryki */
.rk-sim-metrics {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-metric-card {
    background: #ffffff;
    border: 1px solid var(--rk-temp-border);
    border-radius: 12px;
    padding: 20px;
    transition: all 0.3s;
    position: relative;
    overflow: hidden;
}

.rk-metric-card::before {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0; width: 4px;
    background: var(--rk-temp-safe);
    transition: background 0.3s;
}

.state-warn .rk-metric-card::before { background: var(--rk-temp-warn); }
.state-danger .rk-metric-card::before { background: var(--rk-temp-danger); }

.rk-metric-title {
    font-size: 12px;
    color: var(--rk-temp-muted);
    font-weight: 800;
    text-transform: uppercase;
    margin-bottom: 8px;
}

.rk-metric-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-temp-dark);
}

.rk-metric-desc {
    font-size: 13px;
    color: var(--rk-temp-text);
    margin-top: 8px;
    line-height: 1.4;
}

/* Ostrzeżenie (Awaria) */
.rk-alert-box {
    display: none;
    background: #fef2f2;
    border: 1px solid #fecaca;
    padding: 15px;
    border-radius: 12px;
    color: #991b1b;
    font-size: 13px;
    line-height: 1.5;
    margin-top: auto;
    animation: alertPop 0.3s ease-out;
}

.rk-alert-box strong { font-weight: 800; color: #7f1d1d; display: block; font-size: 14px; margin-bottom: 4px; }
.state-danger .rk-alert-box { display: block; }

@keyframes alertPop {
    0% { opacity: 0; transform: scale(0.95); }
    100% { opacity: 1; transform: scale(1); }
}

/* Strefy Temperatur (Limity) */
.rk-zones-info {
    padding: 30px 50px 40px;
    background: #ffffff;
    border-top: 1px solid var(--rk-temp-border);
}

.rk-zones-info h3 {
    margin: 0 0 20px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-temp-dark);
}

.rk-zones-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.rk-zone-item {
    background: #f8fafc;
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-temp-border);
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.rk-zone-icon {
    width: 40px; height: 40px;
    background: #e0f2fe;
    color: var(--rk-temp-brand);
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-zone-item h4 { margin: 0; font-size: 15px; font-weight: 800; color: var(--rk-temp-dark); }
.rk-zone-limit { font-size: 20px; font-weight: 900; color: var(--rk-temp-brand); }
.rk-zone-text { font-size: 13px; color: var(--rk-temp-muted); line-height: 1.5; margin: 0; }

@media (max-width: 768px) {
    .rk-temp-header, .rk-temp-simulator, .rk-zones-info { padding: 30px 20px; }
    .rk-temp-title { font-size: 24px; }
    .rk-sim-layout { grid-template-columns: 1fr; padding: 20px; gap: 20px; }
    .rk-zones-grid { grid-template-columns: 1fr; }
    .rk-svg-stage { height: 200px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/#article-temperatura",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/"
    },
    "headline": "Maksymalna temperatura zasilania ogrzewania podłogowego według normy PN-EN 1264",
    "description": "Zgodnie z PN-EN 1264 maksymalna temperatura zasilania to 50°C. Przekroczenie limitu prowadzi do uszkodzeń mechanicznych wylewki (naprężenia ścinające 2,5 MPa) i degradacji paneli.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/#dataset-limity",
    "name": "Wartości graniczne temperatur powierzchniowych (PN-EN 1264)",
    "description": "Zestawienie dopuszczalnych temperatur powierzchni posadzki dla poszczególnych stref przebywania w budynku mieszkalnym.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna temperatura ogrzewania podłogowego",
      "norma PN-EN 1264",
      "strefa brzegowa temperatura",
      "naprężenia ścinające wylewki",
      "temperatura zasilania podłogówki"
    ],
    "measurementTechnique": "Określenie parametrów granicznych na podstawie normy europejskiej PN-EN 1264.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Strefa stałego przebywania ludzi (salony, sypialnie): max 29°C.",
        "Strefy łazienkowe i sanitarne: max 33°C.",
        "Strefy brzegowe (do 1 m od okien): max 35°C."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/#webapp-symulator",
    "name": "Symulator Naprężeń Termicznych Posadzki",
    "description": "Interaktywny kalkulator wizualizujący wpływ temperatury zasilania na naprężenia wylewki, temperaturę powierzchni oraz ryzyko pęknięć mechanicznych (uszkodzenia płytek, syndrom ciężkich nóg).",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-temp-container" id="rk-temp-app">
    
    <div class="rk-temp-header">
        <div class="rk-temp-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path></svg>
            Reżim Temperaturowy
        </div>
        <h2 class="rk-temp-title">Maksymalna temperatura zasilania <span>według PN-EN 1264</span></h2>
        <p class="rk-temp-lead">
            Maksymalna temperatura zasilania instalacji ogrzewania podłogowego w układzie ciągłym wynosi <strong>50°C</strong> zgodnie z wymaganiami normy <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/" class="rk-temp-link">PN-EN 1264</a>. Niedopełnienie tych obostrzeń i wpuszczenie w jastrych parametru rzędu 55–60°C (brak <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/" class="rk-temp-link">zaworu mieszającego</a> na starym kotle) generuje ogromne naprężenia ścinające. Skutkuje to pękaniem płytek, degradacją termiczną paneli i &#8222;syndromem ciężkich nóg&#8221;.
        </p>
    </div>

    <div class="rk-temp-simulator">
        <div class="rk-sim-layout state-safe" id="rk-sim-core">
            
            <div class="rk-sim-controls">
                <div class="rk-slider-box">
                    <div class="rk-slider-header">
                        <span class="rk-slider-label">Zasilanie Układu (T<sub>z</sub>)</span>
                        <span class="rk-slider-value" id="val-supply">35°C</span>
                    </div>
                    <input type="range" class="rk-range-slider" id="rk-temp-slider" min="25" max="65" step="1" value="35">
                </div>

                <div class="rk-svg-stage">
                    <svg class="rk-cross-section" viewBox="0 0 200 150" xmlns="http://www.w3.org/2000/svg">
                        <rect x="10" y="110" width="180" height="30" fill="#cbd5e1" rx="4"/>
                        <circle cx="30" cy="125" r="2" fill="#94a3b8"/> <circle cx="50" cy="115" r="2" fill="#94a3b8"/>
                        <rect x="10" y="50" width="180" height="60" fill="#e2e8f0" rx="2"/>
                        <rect x="10" y="40" width="43" height="8" fill="#94a3b8" rx="1"/>
                        <rect x="55" y="40" width="43" height="8" fill="#94a3b8" rx="1"/>
                        <rect x="100" y="40" width="43" height="8" fill="#94a3b8" rx="1"/>
                        <rect x="145" y="40" width="45" height="8" fill="#94a3b8" rx="1"/>
                        <circle class="anim-pipe-color" cx="100" cy="85" r="12" fill="#10b981" stroke="#047857" stroke-width="3"/>
                        <circle cx="100" cy="85" r="6" fill="rgba(255,255,255,0.4)"/>
                        <path class="anim-heat-ray" d="M 80 70 Q 75 50 80 30" fill="none" stroke="#10b981" stroke-width="2" stroke-linecap="round"/>
                        <path class="anim-heat-ray" d="M 100 65 Q 100 45 100 25" fill="none" stroke="#10b981" stroke-width="2" stroke-linecap="round"/>
                        <path class="anim-heat-ray" d="M 120 70 Q 125 50 120 30" fill="none" stroke="#10b981" stroke-width="2" stroke-linecap="round"/>
                        <path class="anim-crack-path" d="M 98 40 L 92 60 L 105 80 L 100 110" fill="none" stroke="#0f172a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
                    </svg>
                </div>
            </div>

            <div class="rk-sim-metrics">
                <div class="rk-metric-card">
                    <div class="rk-metric-title">Temperatura Posadzki</div>
                    <div class="rk-metric-val" id="val-surface">24.5°C</div>
                    <div class="rk-metric-desc" id="desc-surface">Pełny komfort. Zgodnie z PN-EN 1264.</div>
                </div>
                
                <div class="rk-metric-card">
                    <div class="rk-metric-title">Naprężenia Wylewki</div>
                    <div class="rk-metric-val" id="val-stress">0.4 MPa</div>
                    <div class="rk-metric-desc" id="desc-stress">Stabilna praca w granicach wytrzymałości jastrychu.</div>
                </div>

                <div class="rk-alert-box">
                    <strong>Koszt naprawy: min. 15 000 PLN!</strong>
                    Naprężenia ścinające przekraczają wytrzymałość betonu na rozciąganie. Bezpowrotne odklejenie gresu i degradacja rur.
                </div>
            </div>

        </div>
    </div>

    <div class="rk-zones-info">
        <h3>Wartości graniczne temperatur (Powierzchnia)</h3>
        <div class="rk-zones-grid">
            
            <div class="rk-zone-item">
                <div class="rk-zone-icon">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
                </div>
                <h4>Salony i Sypialnie</h4>
                <div class="rk-zone-limit">max 29°C</div>
                <p class="rk-zone-text">Strefa stałego przebywania ludzi. Zabezpiecza przed &#8222;syndromem ciężkich nóg&#8221;.</p>
            </div>

            <div class="rk-zone-item">
                <div class="rk-zone-icon">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2 12h20"></path><path d="M5 12v5a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-5"></path><path d="M7 21h10"></path><path d="M12 12v-5"></path><path d="M8 7h8"></path><path d="M12 7V4"></path><path d="M10 4h4"></path></svg>
                </div>
                <h4>Łazienki i Sanitarne</h4>
                <div class="rk-zone-limit">max 33°C</div>
                <p class="rk-zone-text">Dopuszcza się wyższą temperaturę z uwagi na zwiększone zapotrzebowanie na komfort (bosa stopa).</p>
            </div>

            <div class="rk-zone-item">
                <div class="rk-zone-icon">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                </div>
                <h4>Strefy Brzegowe</h4>
                <div class="rk-zone-limit">max 35°C</div>
                <p class="rk-zone-text">Pas o szerokości do 1 m <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-obwodowa-w-ogrzewaniu-podlogowym/" class="rk-temp-link" style="color:var(--rk-temp-muted);">wzdłuż dużych przeszkleń</a> w celu kompensacji strat zimna.</p>
            </div>

        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-temp-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener interaktywny należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na nieautoryzowanej domenie jest zabronione prawem.
                </div>
            `;
            return;
        }
    }

    // Logika Symulatora Temperatur
    const slider = document.getElementById('rk-temp-slider');
    const layout = document.getElementById('rk-sim-core');
    
    const valSupply = document.getElementById('val-supply');
    const valSurface = document.getElementById('val-surface');
    const valStress = document.getElementById('val-stress');
    const descSurface = document.getElementById('desc-surface');
    const descStress = document.getElementById('desc-stress');
    const sliderThumb = document.querySelector('.rk-range-slider');

    function updateSimulation() {
        const temp = parseInt(slider.value);
        valSupply.textContent = temp + '°C';

        // Prosta interpolacja fizyczna dla estymacji:
        // Powierzchnia rośnie z temperaturą zasilania.
        const surfaceTemp = (20 + (temp - 25) * 0.45).toFixed(1);
        valSurface.textContent = surfaceTemp + '°C';

        // Naprężenia w betonie rosną eksponencjalnie pow. 40 stopni
        let stress = 0.2 + ((temp - 25) * 0.02);
        if(temp > 45) {
            stress = stress + Math.pow((temp - 45)*0.15, 2);
        }
        valStress.textContent = stress.toFixed(1) + ' MPa';

        // Stany logiczne
        layout.classList.remove('state-safe', 'state-warn', 'state-danger');

        if (temp <= 40) {
            layout.classList.add('state-safe');
            descSurface.textContent = 'Pełny komfort. Zgodnie z PN-EN 1264.';
            descStress.textContent = 'Stabilna praca w granicach wytrzymałości jastrychu.';
            sliderThumb.style.setProperty('--rk-temp-safe', '#10b981'); // update thumb via custom prop if needed (CSS takes care mostly)
            slider.style.background = `linear-gradient(to right, #10b981 ${(temp-25)/40*100}%, #cbd5e1 ${(temp-25)/40*100}%)`;
        } 
        else if (temp > 40 && temp <= 50) {
            layout.classList.add('state-warn');
            descSurface.textContent = 'Temperatura na granicy dopuszczalności. Ryzyko dyskomfortu (syndrom ciężkich nóg).';
            descStress.textContent = 'Zwiększona praca płyty grzewczej. Dylatacje mocno obciążone.';
            slider.style.background = `linear-gradient(to right, #f59e0b ${(temp-25)/40*100}%, #cbd5e1 ${(temp-25)/40*100}%)`;
        } 
        else if (temp > 50) {
            layout.classList.add('state-danger');
            descSurface.textContent = 'Przekroczenie normy! Degardacja klejów i uszkodzenia paneli.';
            descStress.textContent = 'Naprężenia ścinające wykraczają poza wytrzymałość betonu na rozciąganie.';
            slider.style.background = `linear-gradient(to right, #ef4444 ${(temp-25)/40*100}%, #cbd5e1 ${(temp-25)/40*100}%)`;
        }
    }

    if(slider) {
        slider.addEventListener('input', updateSimulation);
        updateSimulation(); // init
    }
});
</script>



<style>
:root {
    --rk-pitch-dark: #0f172a;
    --rk-pitch-darker: #020617;
    --rk-pitch-brand: #10b981; /* Zielony / szmaragdowy akcent efektywności OZE i SCOP */
    --rk-pitch-brand-light: #e6f4ea;
    --rk-pitch-accent: #3b82f6; /* Niebieski dla pompy ciepła i krzywej grzewczej */
    --rk-pitch-bg: #ffffff;
    --rk-pitch-surface: #f8fafc;
    --rk-pitch-border: #cbd5e1;
    --rk-pitch-text: #334155;
    --rk-pitch-muted: #64748b;
    --rk-pitch-shadow: 0 15px 35px -10px rgba(16, 185, 129, 0.1);
}

.rk-pitch-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-pitch-bg);
    border-radius: 24px;
    box-shadow: var(--rk-pitch-shadow);
    border: 1px solid var(--rk-pitch-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-pitch-header {
    background: linear-gradient(135deg, var(--rk-pitch-darker) 0%, var(--rk-pitch-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-pitch-brand);
}

.rk-pitch-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(16, 185, 129, 0.2);
    color: #34d399;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(52, 211, 153, 0.3);
}

.rk-pitch-title {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-pitch-title span { color: #34d399; }

.rk-pitch-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-pitch-link {
    color: #34d399;
    text-decoration: none;
    border-bottom: 1px dashed rgba(52, 211, 153, 0.4);
    font-weight: 600;
    transition: all 0.3s;
}

.rk-pitch-link:hover {
    color: #ffffff;
    border-bottom-style: solid;
}

/* --- INTERAKTYWNY PANEL OPTYMALIZACJI --- */
.rk-pitch-interactive {
    padding: 40px 50px;
    background: var(--rk-pitch-surface);
}

.rk-sim-layout {
    display: grid;
    grid-template-columns: 1fr 340px;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-pitch-border);
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

/* Lewa Strona - Wybór rozstawu i wykres */
.rk-sim-controls {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-pitch-selector-title {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-pitch-dark);
    text-transform: uppercase;
    margin: 0 0 12px 0;
    letter-spacing: 0.5px;
}

/* Menu Przełączników Kafelkowych */
.rk-pitch-tiles {
    display: flex;
    gap: 12px;
}

.rk-pitch-tile-btn {
    flex: 1;
    background: var(--rk-pitch-surface);
    border: 2px solid var(--rk-pitch-border);
    border-radius: 14px;
    padding: 15px 10px;
    cursor: pointer;
    text-align: center;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.rk-pitch-tile-btn:hover {
    border-color: var(--rk-pitch-accent);
    background: #f0f6ff;
}

.rk-pitch-tile-btn.active {
    border-color: var(--rk-pitch-brand);
    background: var(--rk-pitch-brand-light);
    box-shadow: 0 4px 12px rgba(16, 185, 129, 0.15);
}

.rk-tile-step {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-pitch-dark);
}

.rk-tile-label {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-pitch-muted);
}

.rk-pitch-tile-btn.active .rk-tile-step { color: #065f46; }
.rk-pitch-tile-btn.active .rk-tile-label { color: #047857; }

/* Statyczny moduł graficzny SVG */
.rk-svg-viewport {
    background: #f8fafc;
    border-radius: 16px;
    border: 1px dashed var(--rk-pitch-border);
    padding: 25px;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 180px;
}

.rk-geometry-svg { width: 100%; max-width: 320px; height: auto; }

/* Dynamiczne stany CSS mapowane przez JS na klasę kontenera głównego */
.rk-pipe-line { fill: none; stroke: var(--rk-pitch-accent); stroke-width: 5; stroke-linecap: round; transition: all 0.4s ease; }
.rk-heat-circle { fill: #fca5a5; opacity: 0.4; transition: all 0.4s ease; }

/* Stany geometrii ułożenia rur */
.geom-10 .rk-pipe-15, .geom-10 .rk-pipe-20 { display: none; }
.geom-15 .rk-pipe-10, .geom-15 .rk-pipe-20 { display: none; }
.geom-20 .rk-pipe-10, .geom-20 .rk-pipe-15 { display: none; }

/* Prawa Strona - Parametry Techniczno-Ekonomiczne */
.rk-sim-results {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-tech-card {
    background: #ffffff;
    border: 1px solid var(--rk-pitch-border);
    border-radius: 12px;
    padding: 18px 20px;
    position: relative;
    overflow: hidden;
}

.rk-tech-card::before {
    content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
    background: var(--rk-pitch-brand);
}

.rk-card-label {
    font-size: 11px;
    color: var(--rk-pitch-muted);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 6px;
}

.rk-card-value {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-pitch-dark);
}

.rk-card-comment {
    font-size: 13px;
    color: var(--rk-pitch-text);
    margin-top: 6px;
    line-height: 1.4;
}

/* Panel Błędu Krytycznego (Garaż/Sypialnia co 20 przy przeszkleniach) */
.rk-crit-panel {
    display: none;
    background: #fef2f2;
    border: 1px solid #fecaca;
    padding: 15px;
    border-radius: 12px;
    color: #991b1b;
    font-size: 13px;
    line-height: 1.5;
    animation: panelPop 0.3s ease-out;
}
.rk-crit-panel strong { font-weight: 800; color: #7f1d1d; display: block; font-size: 14px; margin-bottom: 3px; }
.geom-20 .rk-crit-panel { display: block; }

@keyframes panelPop {
    from { opacity: 0; transform: scale(0.96); }
    to { opacity: 1; transform: scale(1); }
}

@media (max-width: 768px) {
    .rk-pitch-header, .rk-pitch-interactive { padding: 30px 20px; }
    .rk-pitch-title { font-size: 24px; }
    .rk-sim-layout { grid-template-columns: 1fr; padding: 20px; gap: 25px; }
    .rk-svg-viewport { min-height: 160px; }
    .rk-pitch-tiles { gap: 8px; }
    .rk-pitch-tile-btn { padding: 12px 6px; }
    .rk-tile-step { font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/"
    },
    "headline": "Jaki rozstaw rur ogrzewania podłogowego zastosować przy pompie ciepła?",
    "description": "Analiza wpływu geometrii rozstawu rur (10 cm vs 15 cm) na temperaturę zasilania pompy ciepła, współczynniki COP/SCOP oraz roczne oszczędności eksploatacyjne.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#dataset",
    "name": "Zestawienie Wydajności i Zużycia Rur w Zależności od Rozstawu",
    "description": "Twarde dane przeliczeniowe łączące rozstaw rur (co 10, 15, 20 cm) z jednostkowym zużyciem materiału oraz maksymalną mocą cieplną posadzki gresowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "rozstaw rur pompa ciepła",
      "zużycie rury na metr kwadratowy",
      "maksymalna moc grzewcza podłogówki",
      "krzywa grzewcza pompy ciepła",
      "obniżenie temperatury zasilania SCOP"
    ],
    "measurementTechnique": "Analiza numeryczna oporów przewodzenia jastrychu wg normy PN-EN 1264 i symulacja strat COP sprężarek inwerterowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rozstaw 10 cm: Zużycie 10,0 mb/m2, moc 75-85 W/m2 przy Tz=35°C. Idealny do łazienek.",
        "Rozstaw 15 cm: Zużycie 6,7 mb/m2, moc 55-65 W/m2 przy Tz=35°C. Standard salonowy.",
        "Rozstaw 20 cm: Zużycie 5,0 mb/m2, moc 35-45 W/m2 przy Tz=35°C. Ryzyko taktowania pompy."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#webapp",
    "name": "Interaktywny Symulator Geometrii Pętli Grzewczych",
    "description": "Narzędzie pozwalające przełączać gęstość ułożenia rur (10, 15, 20 cm) i obserwować w czasie rzeczywistym zużycie mb rury, wymaganą temperaturę zasilania oraz prognozowane koszty eksploatacji.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-pitch-container" id="rk-pitch-app">
    
    <div class="rk-pitch-header">
        <div class="rk-pitch-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
            Geometria Układu OZE
        </div>
        <h2 class="rk-pitch-title">Jaki rozstaw rur ogrzewania podłogowego <span>zastosować przy pompie ciepła?</span></h2>
        <p class="rk-pitch-lead">
            Optymalny rozstaw rur grzewczych przy zasilaniu z niskotemperaturowej pompy ciepła wynosi <strong>10 cm</strong> w łazienkach oraz strefach brzegowych oraz <strong>15 cm</strong> w pozostałych pomieszczeniach mieszkalnych. Zco gęstszego rozstawu pozwala obniżyć temperaturę zasilania o <strong>4–6°C</strong> przy zachowaniu tej samej mocy grzewczej posadzki. Każde obniżenie temperatury wody o 1°C zwiększa efektywność średnioroczną pompy ciepła (współczynnik SCOP) o ok. <strong>2,5%</strong>, co bezpośrednio tnie rachunki za energię elektryczną.
        </p>
    </div>

    <div class="rk-pitch-interactive">
        <div class="rk-sim-layout geom-15" id="rk-pitch-core">
            
            <div class="rk-sim-controls">
                <div>
                    <h3 class="rk-pitch-selector-title">Wybierz gęstość ułożenia przewodów:</h3>
                    <div class="rk-pitch-tiles">
                        <button class="rk-pitch-tile-btn" data-geom="10">
                            <span class="rk-tile-step">co 10 cm</span>
                            <span class="rk-tile-label">Gęsty (Łazienki)</span>
                        </button>
                        <button class="rk-pitch-tile-btn active" data-geom="15">
                            <span class="rk-tile-step">co 15 cm</span>
                            <span class="rk-tile-label">Standard (Pokoje)</span>
                        </button>
                        <button class="rk-pitch-tile-btn" data-geom="20">
                            <span class="rk-tile-step">co 20 cm</span>
                            <span class="rk-tile-label">Rzadki (Garaże)</span>
                        </button>
                    </div>
                </div>

                <div class="rk-svg-viewport">
                    <svg class="rk-geometry-svg" viewBox="0 0 200 100" xmlns="http://www.w3.org/2000/svg">
                        <rect x="5" y="30" width="190" height="60" fill="#e2e8f0" rx="4" stroke="#cbd5e1" stroke-width="1"/>
                        
                        <g class="rk-pipe-10">
                            <circle class="rk-heat-circle" cx="20" cy="65" r="16"/><circle class="rk-heat-circle" cx="50" cy="65" r="16"/><circle class="rk-heat-circle" cx="80" cy="65" r="16"/><circle class="rk-heat-circle" cx="110" cy="65" r="16"/><circle class="rk-heat-circle" cx="140" cy="65" r="16"/><circle class="rk-heat-circle" cx="170" cy="65" r="16"/>
                            <circle class="rk-pipe-line" cx="20" cy="65" r="6"/><circle class="rk-pipe-line" cx="50" cy="65" r="6"/><circle class="rk-pipe-line" cx="80" cy="65" r="6"/><circle class="rk-pipe-line" cx="110" cy="65" r="6"/><circle class="rk-pipe-line" cx="140" cy="65" r="6"/><circle class="rk-pipe-line" cx="170" cy="65" r="6"/>
                        </g>

                        <g class="rk-pipe-15">
                            <circle class="rk-heat-circle" cx="30" cy="65" r="22"/><circle class="rk-heat-circle" cx="85" cy="65" r="22"/><circle class="rk-heat-circle" cx="140" cy="65" r="22"/>
                            <circle class="rk-pipe-line" cx="30" cy="65" r="6"/><circle class="rk-pipe-line" cx="85" cy="65" r="6"/><circle class="rk-pipe-line" cx="140" cy="65" r="6"/>
                        </g>

                        <g class="rk-pipe-20">
                            <circle class="rk-heat-circle" cx="40" cy="65" r="28"/><circle class="rk-heat-circle" cx="130" cy="65" r="28"/>
                            <circle class="rk-pipe-line" cx="40" cy="65" r="6"/><circle class="rk-pipe-line" cx="130" cy="65" r="6"/>
                        </g>
                    </svg>
                </div>
            </div>

            <div class="rk-sim-results">
                <div class="rk-tech-card">
                    <div class="rk-card-label">Zużycie rury grzewczej</div>
                    <div class="rk-card-value" id="val-usage">6,7 mb/m²</div>
                    <div class="rk-card-comment">Standard inżynieryjny dla salonów i sypialni.</div>
                </div>

                <div class="rk-tech-card">
                    <div class="rk-card-label">Maksymalna moc (T<sub>z</sub> = 35°C)</div>
                    <div class="rk-card-value" id="val-power">55 – 65 W/m²</div>
                    <div class="rk-card-comment">Idealnie pokrywa zapotrzebowanie budynków WT 2021 z <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowego-czy-to-sie-oplaca/" class="rk-pitch-link" style="color:var(--rk-pitch-muted);">rekuperacją</a>.</div>
                </div>

                <div class="rk-tech-card">
                    <div class="rk-card-label">Parametry Krzywej Grzewczej</div>
                    <div class="rk-card-value" id="val-curve">35 / 30 °C</div>
                    <div class="rk-card-comment" id="val-cop-comment">Zapewnia wysoki współczynnik COP pompy na poziomie ok. 4,2.</div>
                </div>

                <div class="rk-crit-panel">
                    <strong>Błąd Krytyczny Projektu!</strong>
                    Rzadki układ rur w salonie z dużymi przeszkleniami wymusza podniesienie zasilania do 45°C. Współczynnik COP spada z 4,2 do 3,1, generując <strong>dodatkowy koszt 1200–1800 PLN</strong> co sezon.
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-pitch-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener inżynieryjny należy do serwisu Projekt-Ogrzewania.pl. Wykryto próbę kradzieży kodu źródłowego.
                </div>
            `;
            return;
        }
    }

    // Logika kafelków interaktywnych
    const core = document.getElementById('rk-pitch-core');
    const tiles = document.querySelectorAll('.rk-pitch-tile-btn');
    
    const valUsage = document.getElementById('val-usage');
    const valPower = document.getElementById('val-power');
    const valCurve = document.getElementById('val-curve');
    const valCopComment = document.getElementById('val-cop-comment');

    const dataMap = {
        "10": {
            usage: "10,0 mb/m²",
            power: "75 – 85 W/m²",
            curve: "30 / 26 °C",
            comment: "Maksymalna efektywność pompy ciepła. Standard dla łazienek i stref brzegowych.",
            className: "geom-10"
        },
        "15": {
            usage: "6,7 mb/m²",
            power: "55 – 65 W/m²",
            curve: "35 / 30 °C",
            comment: "Zapewnia wysoki współczynnik COP pompy na poziomie ok. 4,2.",
            className: "geom-15"
        },
        "20": {
            usage: "5,0 mb/m²",
            power: "35 – 45 W/m²",
            curve: "45 / 40 °C",
            comment: "Drastyczny spadek sprawności sprężarki pompy ciepła.",
            className: "geom-20"
        }
    };

    tiles.forEach(tile => {
        tile.addEventListener('click', function() {
            tiles.forEach(t => t.classList.remove('active'));
            this.classList.add('active');

            const geom = this.getAttribute('data-geom');
            const data = dataMap[geom];

            // Aktualizacja metryk technicznych
            valUsage.textContent = data.usage;
            valPower.textContent = data.power;
            valCurve.textContent = data.curve;
            valCopComment.textContent = data.comment;

            // Aktualizacja rzutu geometrycznego przez klasy CSS
            core.className = "rk-sim-layout " + data.className;
        });
    });
});
</script>



<style>
:root {
    --rk-loop-dark: #0f172a;
    --rk-loop-darker: #020617;
    --rk-loop-primary: #0ea5e9; /* Hydronic Blue */
    --rk-loop-primary-light: #e0f2fe;
    --rk-loop-success: #10b981;
    --rk-loop-warning: #f59e0b;
    --rk-loop-danger: #ef4444;
    --rk-loop-bg: #ffffff;
    --rk-loop-surface: #f8fafc;
    --rk-loop-border: #cbd5e1;
    --rk-loop-text: #334155;
    --rk-loop-muted: #64748b;
    --rk-loop-shadow: 0 15px 35px -10px rgba(14, 165, 233, 0.15);
}

.rk-loop-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-loop-bg);
    border-radius: 24px;
    box-shadow: var(--rk-loop-shadow);
    border: 1px solid var(--rk-loop-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-loop-header {
    background: linear-gradient(135deg, var(--rk-loop-darker) 0%, var(--rk-loop-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-loop-primary);
}

.rk-loop-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(14, 165, 233, 0.2);
    color: #38bdf8;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(56, 189, 248, 0.3);
}

.rk-loop-header h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-loop-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-loop-link {
    color: #38bdf8;
    text-decoration: none;
    border-bottom: 1px dashed rgba(56, 189, 248, 0.4);
    font-weight: 600;
    transition: all 0.3s;
}

.rk-loop-link:hover {
    color: #ffffff;
    border-bottom-style: solid;
}

/* --- PANEL INTERAKTYWNY --- */
.rk-loop-interactive {
    padding: 40px 50px;
    background: var(--rk-loop-surface);
}

.rk-loop-interactive h3 {
    text-align: center;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-loop-dark);
    margin: 0 0 30px 0;
}

.rk-sim-grid {
    display: grid;
    grid-template-columns: 1fr 340px;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-loop-border);
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

/* Lewa sekcja - Średnica, Suwak i Wykres */
.rk-sim-workspace {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

/* Selektor Średnic (Pigułki) */
.rk-diameter-selector {
    display: flex;
    gap: 10px;
    background: var(--rk-loop-surface);
    padding: 6px;
    border-radius: 14px;
    border: 1px solid var(--rk-loop-border);
}

.rk-diameter-btn {
    flex: 1;
    padding: 12px;
    background: transparent;
    border: none;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-loop-muted);
    cursor: pointer;
    transition: all 0.3s ease;
    text-align: center;
}

.rk-diameter-btn:hover {
    color: var(--rk-loop-primary);
}

.rk-diameter-btn.active {
    background: var(--rk-loop-primary);
    color: #ffffff;
    box-shadow: 0 4px 10px rgba(14, 165, 233, 0.25);
}

/* Box Suwaka Długości */
.rk-length-slider-box {
    background: var(--rk-loop-surface);
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-loop-border);
}

.rk-slider-labels {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
}

.rk-slider-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-loop-dark);
    text-transform: uppercase;
}

.rk-slider-counter {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-loop-primary);
    transition: color 0.3s;
}

.rk-main-range {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: #cbd5e1;
    outline: none;
}

.rk-main-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--rk-loop-primary);
    cursor: pointer;
    border: 4px solid #ffffff;
    box-shadow: 0 2px 6px rgba(0,0,0,0.15);
    transition: transform 0.1s;
}

.rk-main-range::-webkit-slider-thumb:active {
    transform: scale(1.1);
}

/* Wizualizacja SVG (Zegar i Rotametr) */
.rk-svg-viewport {
    background: #ffffff;
    border-radius: 16px;
    border: 1px dashed var(--rk-loop-border);
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 180px;
}

.rk-hydraulic-svg {
    width: 100%;
    max-width: 380px;
    height: auto;
}

/* Animacje i Przejścia elementów SVG */
.svg-gauge-pointer { transform-origin: 75px 55px; transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1); stroke: var(--rk-loop-success); }
.svg-rotameter-float { transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1); fill: #334155; }
.svg-pipe-flow { stroke-dasharray: 8; animation: hydraulicFlow 2s linear infinite; stroke: var(--rk-loop-primary); }

@keyframes hydraulicFlow { to { stroke-dashoffset: -16; } }

/* Klasy stanów wtryskiwane przez JS */
.state-safe .svg-gauge-pointer { stroke: var(--rk-loop-success); }
.state-warn .svg-gauge-pointer { stroke: var(--rk-loop-warning); }
.state-danger .svg-gauge-pointer { stroke: var(--rk-loop-danger); }
.state-danger .svg-pipe-flow { animation-duration: 8s; stroke: #94a3b8; } /* Drastyczny spadek przepływu */

/* Prawa sekcja - Wyświetlacz Wyników */
.rk-sim-outputs {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-output-card {
    background: #ffffff;
    border: 1px solid var(--rk-loop-border);
    border-radius: 12px;
    padding: 16px 20px;
    position: relative;
    overflow: hidden;
}

.rk-output-card::before {
    content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
    background: var(--rk-loop-success);
    transition: background-color 0.3s;
}

.state-safe .rk-card-hydraulics::before { background: var(--rk-loop-success); }
.state-warn .rk-card-hydraulics::before { background: var(--rk-loop-warning); }
.state-danger .rk-card-hydraulics::before { background: var(--rk-loop-danger); }

.rk-card-label {
    font-size: 11px;
    color: var(--rk-loop-muted);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 6px;
}

.rk-card-value {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-loop-dark);
    transition: color 0.3s;
}

.state-safe .rk-val-status { color: var(--rk-loop-success); }
.state-warn .rk-val-status { color: var(--rk-loop-warning); }
.state-danger .rk-val-status { color: var(--rk-loop-danger); }

.rk-card-comment {
    font-size: 13px;
    color: var(--rk-loop-text);
    margin-top: 6px;
    line-height: 1.4;
}

/* Panel Błędu Krytycznego (Za długa pętla) */
.rk-error-panel {
    display: none;
    background: #fef2f2;
    border: 1px solid #fecaca;
    padding: 15px;
    border-radius: 12px;
    color: #991b1b;
    font-size: 13px;
    line-height: 1.5;
    animation: panelPop 0.3s ease-out;
}
.rk-error-panel strong { font-weight: 800; color: #7f1d1d; display: block; font-size: 14px; margin-bottom: 4px; }
.state-danger .rk-error-panel { display: block; }

@keyframes panelPop {
    from { opacity: 0; transform: scale(0.96); }
    to { opacity: 1; transform: scale(1); }
}

/* --- TABELA LIMITÓW --- */
.rk-loop-limits {
    padding: 35px 50px 45px;
    background: #ffffff;
    border-top: 1px solid var(--rk-loop-border);
}

.rk-loop-limits h3 {
    margin: 0 0 20px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-loop-dark);
}

.rk-limits-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.rk-limit-item {
    background: var(--rk-loop-surface);
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-loop-border);
    text-align: center;
}

.rk-limit-diameter {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-loop-muted);
    text-transform: uppercase;
    margin-bottom: 5px;
}

.rk-limit-length {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-loop-primary);
    margin-bottom: 8px;
}

.rk-limit-desc {
    font-size: 13px;
    color: var(--rk-loop-text);
    line-height: 1.5;
    margin: 0;
}

@media (max-width: 768px) {
    .rk-loop-header, .rk-loop-interactive, .rk-loop-limits { padding: 30px 20px; }
    .rk-loop-header h2 { font-size: 24px; }
    .rk-sim-grid { grid-template-columns: 1fr; padding: 20px; gap: 25px; }
    .rk-limits-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-diameter-selector { flex-direction: column; gap: 6px; }
    .rk-diameter-btn { padding: 10px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/"
    },
    "headline": "Ile wynosi maksymalna długość pętli ogrzewania podłogowego dla rury PEX/PERT 16x2 mm?",
    "description": "Zgodnie z kryteriami inżynieryjnymi, maksymalna długość obwodu 16 mm wynosi 120 m. Przekroczenie limitu 20 kPa blokuje równoważenie instalacji na rotametrach rozdzielacza.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#dataset",
    "name": "Graniczne opory hydrauliczne pętli grzewczych PEX/PERT",
    "description": "Zestawienie fizycznych limitów długości obwodów ogrzewania podłogowego w relacji do średnicy zewnętrznej i dopuszczalnych spadków ciśnień.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna długość pętli podłogówki",
      "rura pex 16mm opory",
      "strata ciśnienia w obwodzie",
      "rotametr rozdzielacza przepływ",
      "zrównoważenie hydrauliczne instalacji"
    ],
    "measurementTechnique": "Modelowanie spadków ciśnień z uwzględnieniem chropowatości bezwzględnej rur plastikowych oraz lepkości kinematicznej wody przy średniej temperaturze pracy.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rura o średnicy 16x2 mm: Absolutne maksimum wynosi 120 m. Rekomendowana długość robocza to 80-100 m.",
        "Rura o średnicy 17x2 mm: Maksymalny limit wynosi 140 m.",
        "Rura o średnicy 20x2 mm: Maksymalna długość obwodu to 160 m."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#webapp",
    "name": "Interaktywny Symulator Oporów Hydraulicznych Pętli",
    "description": "Aplikacja obliczeniowa pozwalająca dynamicznie zmieniać długość obwodu oraz średnicę rury, prezentując w czasie rzeczywistym spadek ciśnienia (kPa) i wpływ na rotametry.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Canvas/SVG support",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-loop-container" id="rk-loop-app">
    
    <div class="rk-loop-header">
        <div class="rk-loop-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21.5 2v6h-6M21.34 15.57a10 10 0 1 1-.57-8.38l5.67-5.67"></path></svg>
            Kryterium Hydrauliczne
        </div>
        <h2>Ile wynosi maksymalna długość pętli ogrzewania podłogowego dla rury PEX/PERT 16&#215;2 mm?</h2>
        <p class="rk-loop-lead">
            Maksymalna dopuszczalna długość jednej pętli grzewczej dla najpopularniejszej średnicy rury 16&#215;2 mm wynosi <strong>120 m</strong> (wliczając odcinki przyłączeniowe). Przekroczenie tej granicy powoduje drastyczny wzrost oporów hydraulicznych powyżej dopuszczalnej wartości <strong>20 kPa (0,2 bar)</strong>. Konsekwencją jest całkowity brak możliwości zrównoważenia hydraulicznego układu na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/" class="rk-loop-link">rotametrach</a>, co prowadzi do „upośledzenia przepływu” i permanentnego niedogrzania strefy mieszkalnej.
        </p>
    </div>

    <div class="rk-loop-interactive">
        <h3>Interaktywny Analizator Spadków Ciśnienia</h3>
        <div class="rk-sim-grid state-safe" id="rk-loop-core">
            
            <div class="rk-sim-workspace">
                <div>
                    <div class="rk-pitch-selector-title">Wybierz średnicę zewnętrzną przewodu:</div>
                    <div class="rk-diameter-selector">
                        <button class="rk-diameter-btn active" data-dim="16">rura Ø 16&#215;2 mm</button>
                        <button class="rk-diameter-btn" data-dim="17">rura Ø 17&#215;2 mm</button>
                        <button class="rk-diameter-btn" data-dim="20">rura Ø 20&#215;2 mm</button>
                    </div>
                </div>

                <div class="rk-length-slider-box">
                    <div class="rk-slider-labels">
                        <span class="rk-slider-title">Całkowita Długość Obwodu (L)</span>
                        <span class="rk-slider-counter" id="val-length">90 m</span>
                    </div>
                    <input type="range" class="rk-main-range" id="rk-loop-slider" min="40" max="180" step="5" value="90">
                </div>

                <div class="rk-svg-viewport">
                    <svg class="rk-hydraulic-svg" viewBox="0 0 300 110" xmlns="http://www.w3.org/2000/svg">
                        <g transform="translate(10, 5)">
                            <path d="M 25 85 A 35 35 0 1 1 125 85" fill="none" stroke="#e2e8f0" stroke-width="8" stroke-linecap="round"/>
                            <circle cx="75" cy="55" r="5" fill="#334155"/>
                            <line class="svg-gauge-pointer" x1="75" y1="55" x2="45" y2="55" stroke-width="3" stroke-linecap="round"/>
                            <text x="75" y="100" font-size="11" font-weight="900" fill="#334155" text-anchor="middle">OPÓR (kPa)</text>
                        </g>

                        <g transform="translate(150, 10)">
                            <rect x="0" y="25" width="60" height="40" rx="6" fill="none" stroke="#cbd5e1" stroke-width="2"/>
                            <path d="M 10 45 L 50 45" fill="none" stroke-width="5" stroke-linecap="round" class="svg-pipe-flow"/>
                            <text x="30" y="20" font-size="10" font-weight="800" fill="#64748b" text-anchor="middle">PRZEPŁYW</text>
                        </g>

                        <g transform="translate(230, 5)">
                            <rect x="25" y="15" width="25" height="70" rx="2" fill="#f8fafc" stroke="#64748b" stroke-width="2"/>
                            <line x1="30" y1="30" x2="38" y2="30" stroke="#94a3b8" stroke-width="1"/>
                            <line x1="30" y1="45" x2="43" y2="45" stroke="#94a3b8" stroke-width="1.5"/>
                            <line x1="30" y1="60" x2="38" y2="60" stroke="#94a3b8" stroke-width="1"/>
                            <line x1="30" y1="75" x2="43" y2="75" stroke="#94a3b8" stroke-width="1.5"/>
                            <rect class="svg-rotameter-float" x="28" y="40" width="19" height="6" rx="1"/>
                            <text x="37" y="100" font-size="11" font-weight="900" fill="#334155" text-anchor="middle">L/MIN</text>
                        </g>
                    </svg>
                </div>
            </div>

            <div class="rk-sim-outputs">
                <div class="rk-output-card rk-card-hydraulics">
                    <div class="rk-card-label">Spadek Ciśnienia Pętli</div>
                    <div class="rk-card-value" id="val-pressure">11.2 kPa</div>
                    <div class="rk-card-comment">Układ stabilny. Straty ciśnienia mieszczą się w normatywnym limicie pompy obiegowej.</div>
                </div>

                <div class="rk-output-card rk-card-hydraulics">
                    <div class="rk-card-label">Stan Hydrauliczny Obwodu</div>
                    <div class="rk-card-value rk-val-status" id="val-status">Optymalny</div>
                    <div class="rk-card-comment" id="desc-status">Przepływ laminarany prawidłowy. Rotametr reaguje na nastawę.</div>
                </div>

                <div class="rk-error-panel">
                    <strong>Upośledzenie hydrauliczne pompy!</strong>
                    Opory liniowe rury drastycznie zdławiły przepływ. Rotametr opadł w okolice <strong>0,2 l/min</strong>. Ta pętla będzie całkowicie zimna. Wymagany podział na mniejsze obwody na etapie <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/" class="rk-loop-link" style="color: #7f1d1d;">rozmieszczenia obwodów</a>.
                </div>
            </div>

        </div>
    </div>

    <div class="rk-loop-limits">
        <h3>Maksymalne granice długości pętli rur według standardu HVAC</h3>
        <div class="rk-limits-grid">
            
            <div class="rk-limit-item">
                <div class="rk-limit-diameter">Rura Ø 16&#215;2 mm</div>
                <div class="rk-limit-length">max 120 m</div>
                <p class="rk-limit-desc">Absolutny limit dla instalacji domowych. Zalecana inżynierska długość robocza to <strong>80–100 m</strong>.</p>
            </div>

            <div class="rk-limit-item">
                <div class="rk-limit-diameter">Rura Ø 17&#215;2 mm</div>
                <div class="rk-limit-length">max 140 m</div>
                <p class="rk-limit-desc">Zwiększona średnica wewnętrzna pozwala na wydłużenie obwodu przy zachowaniu stabilności hydraulicznej.</p>
            </div>

            <div class="rk-limit-item">
                <div class="rk-limit-diameter">Rura Ø 20&#215;2 mm</div>
                <div class="rk-limit-length">max 160 m</div>
                <p class="rk-limit-desc">Stosowana na dużych przestrzeniach (hale, magazyny, obiekty przemysłowe) ze względu na dużą sztywność gięcia.</p>
            </div>

        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-loop-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener inżynieryjny należy do serwisu Projekt-Ogrzewania.pl. Wykryto próbę nieautoryzowanego użycia skryptu.
                </div>
            `;
            return;
        }
    }

    // Zmienne operacyjne i stanowe
    const slider = document.getElementById('rk-loop-slider');
    const layout = document.getElementById('rk-loop-core');
    const dimButtons = document.querySelectorAll('.rk-diameter-btn');

    const valLength = document.getElementById('val-length');
    const valPressure = document.getElementById('val-pressure');
    const valStatus = document.getElementById('val-status');
    const descStatus = document.getElementById('desc-status');

    // Elementy SVG do fizycznej animacji
    const svgPointer = document.querySelector('.svg-gauge-pointer');
    const svgFloat = document.querySelector('.svg-rotameter-float');

    let currentDim = 16; // Domyślna średnica rury

    const limitMap = {
        16: { max: 120, warn: 100, factor: 0.0014 },
        17: { max: 140, warn: 115, factor: 0.0010 },
        20: { max: 160, warn: 135, factor: 0.0006 }
    };

    function recalculateHydraulics() {
        const len = parseInt(slider.value);
        valLength.textContent = len + ' m';

        const config = limitMap[currentDim];

        // Wyliczenie oporów (wzrost kwadratowy ze współczynnikiem dla średnicy)
        let pressure = Math.pow(len, 2) * config.factor;
        valPressure.textContent = pressure.toFixed(1) + ' kPa';

        // Mapowanie parametrów fizycznych na ruch elementów SVG
        // Kąt wskazówki manometru: od -45deg do 135deg
        let angle = -45 + (pressure / 45) * 180;
        if(angle > 140) angle = 140; // Max wychylenie
        svgPointer.style.transform = `rotate(${angle}deg)`;

        // Pozycja pływaka rotametru (y w dół = mniejszy przepływ)
        // Zakres bazowy y: od 20 (max przepływ) do 65 (przepływ zablokowany)
        let floatY = 20 + (pressure / 40) * 45;
        if(floatY > 65) floatY = 65;
        svgFloat.style.transform = `translateY(${floatY - 40}px)`;

        // Zarządzanie stanami wizualnymi i komentarzami inżynierskimi
        layout.classList.remove('state-safe', 'state-warn', 'state-danger');

        if(len <= config.warn) {
            layout.classList.add('state-safe');
            valStatus.textContent = "Optymalny";
            descStatus.textContent = "Przepływ laminarny prawidłowy. Rotametr reaguje na nastawę rozdzielacza.";
        } 
        else if (len > config.warn && len <= config.max) {
            layout.classList.add('state-warn');
            valStatus.textContent = "Ostrzeżenie";
            descStatus.textContent = "Zwiększone opory hydrauliczne. Pompa obiegowa pracuje na wyższym biegu.";
        } 
        else {
            layout.classList.add('state-danger');
            valStatus.textContent = "Przekroczenie limitu";
            descStatus.textContent = "Zablokowanie hydrauliczne obwodu. Brak możliwości wyregulowania pętli.";
        }
    }

    // Obsługa przycisków wyboru średnicy
    dimButtons.forEach(btn => {
        btn.addEventListener('click', function() {
            dimButtons.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            currentDim = parseInt(this.getAttribute('data-dim'));
            recalculateHydraulics();
        });
    });

    if(slider) {
        slider.addEventListener('input', recalculateHydraulics);
        recalculateHydraulics(); // inicjalizacja startowa
    }
});
</script>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"></blockquote>



<style>
:root {
    --rk-vessel-dark: #0f172a;
    --rk-vessel-darker: #020617;
    --rk-vessel-brand: #0ea5e9; /* Woda / Błękit */
    --rk-vessel-brand-light: #e0f2fe;
    --rk-vessel-accent: #f43f5e; /* Naczynie wzbiorcze / Czerwień */
    --rk-vessel-success: #10b981;
    --rk-vessel-bg: #ffffff;
    --rk-vessel-surface: #f8fafc;
    --rk-vessel-border: #cbd5e1;
    --rk-vessel-text: #334155;
    --rk-vessel-muted: #64748b;
    --rk-vessel-formula: #1e293b;
    --rk-vessel-shadow: 0 20px 40px -10px rgba(14, 165, 233, 0.15);
}

.rk-vessel-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-vessel-bg);
    border-radius: 24px;
    box-shadow: var(--rk-vessel-shadow);
    border: 1px solid var(--rk-vessel-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-vessel-header {
    background: linear-gradient(135deg, var(--rk-vessel-darker) 0%, var(--rk-vessel-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-vessel-brand);
}

.rk-vessel-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(14, 165, 233, 0.2);
    color: #7dd3fc;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(125, 211, 252, 0.3);
}

.rk-vessel-header h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-vessel-header h2 span { color: var(--rk-vessel-brand); }

.rk-vessel-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-vessel-link {
    color: #7dd3fc;
    text-decoration: none;
    border-bottom: 1px dashed rgba(125, 211, 252, 0.4);
    font-weight: 600;
    transition: all 0.3s;
}

.rk-vessel-link:hover { color: #ffffff; border-bottom-style: solid; }

/* --- INTERAKTYWNY SYMULATOR --- */
.rk-vessel-interactive {
    padding: 40px 50px;
    background: var(--rk-vessel-surface);
}

.rk-vessel-interactive h3 {
    text-align: center;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-vessel-dark);
    margin: 0 0 30px 0;
}

.rk-sim-layout {
    display: grid;
    grid-template-columns: 1fr 360px;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-vessel-border);
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

/* Kolumna Lewa - Suwaki i parametry */
.rk-sim-controls {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-control-group {
    background: var(--rk-vessel-surface);
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-vessel-border);
}

.rk-control-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
}

.rk-control-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-vessel-dark);
    text-transform: uppercase;
}

.rk-control-value {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-vessel-brand);
}

/* Suwaki */
.rk-range-input {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: #cbd5e1;
    outline: none;
}

.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-vessel-brand);
    cursor: pointer;
    border: 4px solid #ffffff;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}

.rk-range-input::-webkit-slider-thumb:active { transform: scale(1.15); }

/* Pigułki rozdzielacza */
.rk-pill-selector {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: 10px;
}

.rk-pill-btn {
    flex: 1;
    min-width: 60px;
    padding: 10px 5px;
    background: #ffffff;
    border: 1px solid var(--rk-vessel-border);
    border-radius: 10px;
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-vessel-muted);
    cursor: pointer;
    transition: all 0.2s;
    text-align: center;
}

.rk-pill-btn:hover { border-color: var(--rk-vessel-brand); color: var(--rk-vessel-brand); }
.rk-pill-btn.active { background: var(--rk-vessel-brand); color: #ffffff; border-color: var(--rk-vessel-brand); }

/* Kolumna Prawa - Wyniki i SVG */
.rk-sim-results {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-svg-viewport {
    background: #ffffff;
    border-radius: 16px;
    border: 1px dashed var(--rk-vessel-border);
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 220px;
    position: relative;
}

.rk-vessel-svg { width: 100%; max-width: 250px; height: auto; }

/* SVG Animacje */
.anim-water-level { transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1); transform-origin: bottom; }
.anim-diaphragm { transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1); }
.anim-gauge-needle { transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1); transform-origin: 75px 55px; }

/* Karty Wyników */
.rk-result-card {
    background: #ffffff;
    border: 1px solid var(--rk-vessel-border);
    border-radius: 12px;
    padding: 15px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.rk-result-card.highlight {
    border-color: var(--rk-vessel-accent);
    background: #fff1f2;
}

.rk-res-label { font-size: 12px; font-weight: 800; color: var(--rk-vessel-muted); text-transform: uppercase; }
.rk-res-value { font-size: 22px; font-weight: 900; color: var(--rk-vessel-dark); }
.highlight .rk-res-label { color: #be123c; }
.highlight .rk-res-value { color: var(--rk-vessel-accent); }

/* --- SEKCJA WZORÓW --- */
.rk-vessel-formulas {
    padding: 0 50px 40px;
    background: var(--rk-vessel-surface);
}

.rk-formula-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 15px;
}

.rk-formula-box {
    background: #ffffff;
    border: 1px solid var(--rk-vessel-border);
    border-radius: 16px;
    padding: 25px;
    display: grid;
    grid-template-columns: 350px 1fr;
    gap: 30px;
    align-items: center;
}

.rk-formula-math {
    background: var(--rk-vessel-formula);
    padding: 20px;
    border-radius: 12px;
    color: #f8fafc;
    font-family: 'Courier New', Courier, monospace;
    font-size: 18px;
    font-weight: 700;
    text-align: center;
    border-left: 4px solid var(--rk-vessel-brand);
    letter-spacing: 0.5px;
}

.rk-formula-math sub { font-size: 11px; color: #93c5fd; }
.rk-formula-math span.operator { color: #f43f5e; margin: 0 5px; }

/* Custom Fraction for HTML */
.rk-html-fraction {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    vertical-align: middle;
    margin: 0 5px;
    line-height: 1.2;
}
.rk-html-numerator { border-bottom: 2px solid #cbd5e1; padding: 0 5px; }
.rk-html-denominator { padding: 0 5px; }

.rk-formula-desc h4 { margin: 0 0 10px 0; font-size: 16px; font-weight: 800; color: var(--rk-vessel-dark); }
.rk-formula-desc p { margin: 0; font-size: 14px; line-height: 1.6; color: var(--rk-vessel-text); }
.rk-formula-desc strong { font-weight: 800; color: var(--rk-vessel-dark); }

@media (max-width: 768px) {
    .rk-vessel-header, .rk-vessel-interactive, .rk-vessel-formulas { padding: 30px 20px; }
    .rk-vessel-header h2 { font-size: 24px; }
    .rk-sim-layout, .rk-formula-box { grid-template-columns: 1fr; }
    .rk-formula-box { gap: 15px; padding: 20px; }
    .rk-svg-viewport { min-height: 180px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-miesci-sie-w-1-metrze-rury-pex-pert-16/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-miesci-sie-w-1-metrze-rury-pex-pert-16/"
    },
    "headline": "Ile litrów wody mieści się w instalacji podłogówki i jak dobrać naczynie wzbiorcze?",
    "description": "Procedura obliczeniowa pojemności zładu i naczynia przeponowego według normy PN-EN 12828. Poznaj wzory i kalkulator pojemności rur PEX/PERT 16x2 mm.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-miesci-sie-w-1-metrze-rury-pex-pert-16/#dataset",
    "name": "Algorytm doboru naczynia wzbiorczego PN-EN 12828",
    "description": "Matematyczne zestawienie kroków i współczynników wymaganych do obliczenia całkowitego zładu wodnego i minimalnej pojemności naczynia kompensacyjnego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "pojemność wodna rury pex 16",
      "jak dobrać naczynie wzbiorcze",
      "wzór na naczynie przeponowe",
      "zład wody ogrzewanie podłogowe",
      "norma PN-EN 12828"
    ],
    "measurementTechnique": "Szeregowanie algorytmiczne wg norm europejskich, uwzględniające rozszerzalność wody, ciśnienie wstępne i zapas bezpieczeństwa.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Pojemność rur: V_rur = L_calk * 0,113 l/mb",
        "Pojemność instalacji: V_inst = V_rur + V_rozdz + V_buf",
        "Pojemność użytkowa: V_e = V_inst * e * 1,3",
        "Pojemność nominalna: V_n = V_e * ((p_max + 1) / (p_max - p_p))"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-miesci-sie-w-1-metrze-rury-pex-pert-16/#webapp",
    "name": "Kalkulator Pojemności Zładu i Naczynia Wzbiorczego",
    "description": "Interaktywne narzędzie obliczające pojemność całkowitą instalacji ogrzewania podłogowego oraz dobierające normatywną pojemność naczynia przeponowego.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-vessel-container" id="rk-vessel-app">
    
    <div class="rk-vessel-header">
        <div class="rk-vessel-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Pojemność i Kompensacja
        </div>
        <h2>Ile litrów wody mieści się w instalacji podłogówki i <span>jak dobrać naczynie wzbiorcze?</span></h2>
        <p class="rk-vessel-lead">
            Pojemność wodna jednego metra bieżącego rury PERT/PEX o średnicy 16&#215;2 mm wynosi dokładnie <strong>0,113 litra</strong>. Do obliczenia całkowitej pojemności zładu instalacji należy zsumować objętość rur podłogówki, belek <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/" class="rk-vessel-link">rozdzielacza</a> oraz źródła ciepła (np. <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-vessel-link">bufora</a>). <a href="https://projekt-ogrzewania.pl/naczynie-wzbiorcze/" class="rk-vessel-link">Naczynie wzbiorcze</a> dobiera się w oparciu o normę <strong>PN-EN 12828</strong>, przyjmując minimalny współczynnik rezerwy pojemności na poziomie 4% całkowitej objętości zładu.
        </p>
    </div>

    <div class="rk-vessel-interactive">
        <h3>Kalkulator Zładu i Naczynia Wzbiorczego</h3>
        
        <div class="rk-sim-layout">
            
            <div class="rk-sim-controls">
                
                <div class="rk-control-group">
                    <div class="rk-control-header">
                        <span class="rk-control-label">Długość rur (L<sub>całk</sub>)</span>
                        <span class="rk-control-value" id="val-pipe">800 m</span>
                    </div>
                    <input type="range" class="rk-range-input" id="range-pipe" min="100" max="2500" step="50" value="800">
                </div>

                <div class="rk-control-group">
                    <div class="rk-control-header">
                        <span class="rk-control-label">Zbiornik Buforowy</span>
                        <span class="rk-control-value" id="val-buffer">60 L</span>
                    </div>
                    <input type="range" class="rk-range-input" id="range-buffer" min="0" max="500" step="10" value="60">
                </div>

                <div class="rk-control-group">
                    <div class="rk-control-header">
                        <span class="rk-control-label">Liczba sekcji rozdzielacza</span>
                    </div>
                    <div class="rk-pill-selector">
                        <button class="rk-pill-btn" data-sec="4">4 sek.</button>
                        <button class="rk-pill-btn" data-sec="8">8 sek.</button>
                        <button class="rk-pill-btn active" data-sec="12">12 sek.</button>
                        <button class="rk-pill-btn" data-sec="16">16 sek.</button>
                    </div>
                </div>

            </div>

            <div class="rk-sim-results">
                
                <div class="rk-svg-viewport">
                    <svg class="rk-vessel-svg" viewBox="0 0 200 160" xmlns="http://www.w3.org/2000/svg">
                        <path d="M 70 20 Q 100 10 130 20 L 130 140 Q 100 150 70 140 Z" fill="#e2e8f0" stroke="#94a3b8" stroke-width="4"/>
                        <path class="anim-diaphragm" id="svg-diaphragm" d="M 72 80 Q 100 110 128 80" fill="none" stroke="#334155" stroke-width="3" stroke-dasharray="4"/>
                        <g transform="translate(0, 145)">
                            <path class="anim-water-level" id="svg-water" d="M 72 -5 Q 100 5 128 -5 L 128 -65 Q 100 -55 72 -65 Z" fill="#0ea5e9" opacity="0.8"/>
                        </g>
                        <rect x="95" y="145" width="10" height="15" fill="#64748b"/>
                        <path d="M 85 155 L 115 155" fill="none" stroke="#64748b" stroke-width="4"/>
                        
                        <g transform="translate(150, 40)">
                            <circle cx="20" cy="20" r="18" fill="#ffffff" stroke="#cbd5e1" stroke-width="3"/>
                            <path d="M 8 20 A 12 12 0 0 1 32 20" fill="none" stroke="#10b981" stroke-width="4"/>
                            <path d="M 32 20 A 12 12 0 0 1 12 28" fill="none" stroke="#f43f5e" stroke-width="4"/>
                            <circle cx="20" cy="20" r="3" fill="#334155"/>
                            <line class="anim-gauge-needle" id="svg-needle" x1="20" y1="20" x2="10" y2="10" stroke="#334155" stroke-width="2" stroke-linecap="round" style="transform-origin: 20px 20px;"/>
                        </g>
                    </svg>
                </div>

                <div class="rk-result-card">
                    <div class="rk-res-label">Całkowity zład (V<sub>inst</sub>)</div>
                    <div class="rk-res-value" id="res-total">156.4 L</div>
                </div>

                <div class="rk-result-card highlight">
                    <div class="rk-res-label">Min. Naczynie (V<sub>n</sub>)</div>
                    <div class="rk-res-value" id="res-vessel">12 L</div>
                </div>

            </div>

        </div>
    </div>

    <div class="rk-vessel-formulas">
        <h3 style="font-size: 20px; font-weight: 800; color: var(--rk-vessel-dark); margin: 0 0 20px 0; text-align: center;">Procedura obliczeniowa wg PN-EN 12828</h3>
        
        <div class="rk-formula-grid">
            
            <div class="rk-formula-box">
                <div class="rk-formula-math">
                    V<sub>rur</sub> = L<sub>całk</sub> <span class="operator">&times;</span> 0,113 <span style="font-size:12px;color:#94a3b8;">l/mb</span>
                </div>
                <div class="rk-formula-desc">
                    <h4>1. Pojemność wodna rur (V<sub>rur</sub>)</h4>
                    <p>Mnożymy całkowitą długość zastosowanej rury grzewczej PEX 16&#215;2 mm przez jej stałą pojemność wewnętrzną wynoszącą <strong>0,113 litra na metr bieżący</strong>.</p>
                </div>
            </div>

            <div class="rk-formula-box">
                <div class="rk-formula-math">
                    V<sub>inst</sub> = V<sub>rur</sub> <span class="operator">+</span> V<sub>rozdz</sub> <span class="operator">+</span> V<sub>buf</sub>
                </div>
                <div class="rk-formula-desc">
                    <h4>2. Całkowita pojemność instalacji (V<sub>inst</sub>)</h4>
                    <p>Gdzie <strong>V<sub>rozdz</sub></strong> to objętość belek i armatury (średnio 0,5 l na każdą sekcję rozdzielacza), a <strong>V<sub>buf</sub></strong> to pojemność ewentualnego zbiornika buforowego lub sprzęgła.</p>
                </div>
            </div>

            <div class="rk-formula-box">
                <div class="rk-formula-math">
                    V<sub>e</sub> = V<sub>inst</sub> <span class="operator">&times;</span> e <span class="operator">&times;</span> 1,3
                </div>
                <div class="rk-formula-desc">
                    <h4>3. Pojemność użytkowa naczynia (V<sub>e</sub>)</h4>
                    <p>Gdzie <strong>e</strong> to współczynnik rozszerzalności wody (dla t<sub>z</sub> = 45°C wynosi <strong>0,0095</strong>), a <strong>1,3</strong> to wymagany współczynnik bezpieczeństwa rezerwy wody.</p>
                </div>
            </div>

            <div class="rk-formula-box">
                <div class="rk-formula-math" style="display: flex; align-items: center; justify-content: center;">
                    V<sub>n</sub> = V<sub>e</sub> <span class="operator">&times;</span>
                    <div class="rk-html-fraction">
                        <div class="rk-html-numerator">p<sub>max</sub> + 1</div>
                        <div class="rk-html-denominator">p<sub>max</sub> &#8211; p<sub>p</sub></div>
                    </div>
                </div>
                <div class="rk-formula-desc">
                    <h4>4. Minimalna pojemność nominalna (V<sub>n</sub>)</h4>
                    <p>Gdzie <strong>p<sub>max</sub></strong> to max. dopuszczalne ciśnienie (zawór bezpieczeństwa – zwykle 3,0 bar), a <strong>p<sub>p</sub></strong> to ciśnienie wstępne gazu w naczyniu (zwykle 1,0–1,5 bar).</p>
                </div>
            </div>

        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-vessel-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener inżynieryjny należy do serwisu Projekt-Ogrzewania.pl. Wykryto próbę kradzieży kodu źródłowego.
                </div>
            `;
            return;
        }
    }

    // Zmienne UI
    const rangePipe = document.getElementById('range-pipe');
    const rangeBuffer = document.getElementById('range-buffer');
    const pillSecs = document.querySelectorAll('.rk-pill-btn');
    
    const valPipe = document.getElementById('val-pipe');
    const valBuffer = document.getElementById('val-buffer');
    const resTotal = document.getElementById('res-total');
    const resVessel = document.getElementById('res-vessel');

    // SVG Elementy
    const svgWater = document.getElementById('svg-water');
    const svgDiaphragm = document.getElementById('svg-diaphragm');
    const svgNeedle = document.getElementById('svg-needle');

    let sections = 12; // Domyślna wartość
    const standardVessels = [8, 12, 18, 24, 35, 50, 80, 100, 150];

    function calculateVessel() {
        const L = parseFloat(rangePipe.value);
        const buf = parseFloat(rangeBuffer.value);
        
        // Update Labels
        valPipe.textContent = L + ' m';
        valBuffer.textContent = buf + ' L';

        // Matematyka wg PN-EN 12828
        const V_rur = L * 0.113;
        const V_rozdz = sections * 0.5;
        const V_inst = V_rur + V_rozdz + buf;
        
        // Dla 45 st C, e = 0.0095
        const V_e = V_inst * 0.0095 * 1.3;
        
        // V_n = V_e * ((3 + 1) / (3 - 1.2)) = V_e * (4 / 1.8) = V_e * 2.222
        const V_n_min = V_e * 2.222;

        // Znajdź najbliższe większe naczynie handlowe
        let chosenVessel = standardVessels[standardVessels.length - 1];
        for(let v of standardVessels) {
            if(v >= V_n_min) {
                chosenVessel = v;
                break;
            }
        }

        // Update DOM
        resTotal.textContent = V_inst.toFixed(1) + ' L';
        resVessel.textContent = chosenVessel + ' L';

        // Animacja SVG (Wizualizacja wypełnienia/ciśnienia)
        // Im większy zład, tym membrana idzie wyżej, woda wypełnia się mocniej
        let fillRatio = V_n_min / 50; // Arbitralna skala dla animacji
        if(fillRatio > 1) fillRatio = 1;
        if(fillRatio < 0.2) fillRatio = 0.2;

        // Woda - skalowanie w Y (od dołu, od -145px)
        svgWater.style.transform = `scaleY(${fillRatio * 1.2})`;
        
        // Membrana - przesuwanie w górę
        let dShift = -20 * fillRatio;
        svgDiaphragm.style.transform = `translateY(${dShift}px)`;

        // Zegar - rotacja wskazówki (symulacja wzrostu ciśnienia z objętością)
        let angle = -45 + (fillRatio * 180);
        if(angle > 135) angle = 135;
        svgNeedle.style.transform = `rotate(${angle}deg)`;
    }

    // Event Listenery
    if(rangePipe && rangeBuffer) {
        rangePipe.addEventListener('input', calculateVessel);
        rangeBuffer.addEventListener('input', calculateVessel);
        
        pillSecs.forEach(btn => {
            btn.addEventListener('click', function() {
                pillSecs.forEach(b => b.classList.remove('active'));
                this.classList.add('active');
                sections = parseInt(this.getAttribute('data-sec'));
                calculateVessel();
            });
        });

        // Init
        calculateVessel();
    }
});
</script>



<style>
:root {
    --rk-cases-dark: #0f172a;
    --rk-cases-panel: #1e293b;
    --rk-cases-primary: #3b82f6; /* Blue for tech/math */
    --rk-cases-success: #10b981; /* Green for correct calcs */
    --rk-cases-danger: #ef4444; /* Red for errors (Case 2) */
    --rk-cases-warning: #f59e0b;
    --rk-cases-bg: #f8fafc;
    --rk-cases-border: #e2e8f0;
    --rk-cases-text: #334155;
    --rk-cases-muted: #64748b;
}

.rk-cases-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(15, 23, 42, 0.15);
    border: 1px solid rgba(59, 130, 246, 0.3);
    overflow: hidden;
}

/* Header */
.rk-cases-header {
    background: linear-gradient(135deg, var(--rk-cases-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: #ffffff;
    border-bottom: 5px solid var(--rk-cases-primary);
    position: relative;
}

.rk-cases-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(59, 130, 246, 0.2);
    color: #93c5fd;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(147, 197, 253, 0.3);
}

.rk-cases-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 15px 0;
    color: #ffffff;
}

.rk-cases-title span { color: #60a5fa; }

.rk-cases-desc {
    color: #cbd5e1;
    font-size: 15px;
    line-height: 1.7;
    margin: 0;
    max-width: 800px;
}

/* Navigation / Tabs */
.rk-cases-nav {
    display: flex;
    background: #f1f5f9;
    border-bottom: 1px solid var(--rk-cases-border);
    overflow-x: auto;
    scrollbar-width: none;
}
.rk-cases-nav::-webkit-scrollbar { display: none; }

.rk-case-tab {
    flex: 1;
    padding: 20px 15px;
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-cases-muted);
    cursor: pointer;
    transition: all 0.3s;
    white-space: nowrap;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.rk-case-tab:hover {
    color: var(--rk-cases-primary);
    background: rgba(59, 130, 246, 0.05);
}

.rk-case-tab.active {
    color: var(--rk-cases-primary);
    border-bottom-color: var(--rk-cases-primary);
    background: #ffffff;
}

/* Content Area */
.rk-cases-content {
    background: #ffffff;
    padding: 0;
}

.rk-case-panel {
    display: none;
    animation: caseFade 0.4s ease-out;
}

.rk-case-panel.active {
    display: grid;
    grid-template-columns: 1fr 300px;
}

@keyframes caseFade {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

/* Left: Data & Math */
.rk-case-data {
    padding: 40px 50px;
    border-right: 1px solid var(--rk-cases-border);
}

.rk-case-data h3 {
    margin: 0 0 20px 0;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-cases-dark);
}

.rk-data-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
    margin-bottom: 25px;
}

.rk-data-item {
    background: var(--rk-cases-bg);
    padding: 12px 15px;
    border-radius: 8px;
    border: 1px solid var(--rk-cases-border);
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.rk-data-label { font-size: 13px; color: var(--rk-cases-muted); font-weight: 700; }
.rk-data-val { font-size: 14px; font-weight: 900; color: var(--rk-cases-dark); }

.rk-math-block {
    background: #1e293b;
    border-radius: 12px;
    padding: 20px;
    color: #f8fafc;
    font-family: 'Courier New', Courier, monospace;
    font-size: 15px;
    margin-bottom: 25px;
    border-left: 4px solid var(--rk-cases-primary);
    box-shadow: inset 0 4px 6px rgba(0,0,0,0.2);
}

.rk-math-line {
    margin-bottom: 10px;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    line-height: 1.5;
}
.rk-math-line:last-child { margin-bottom: 0; }

.rk-math-highlight {
    color: #38bdf8;
    font-weight: 900;
    font-size: 17px;
}

.rk-math-result {
    color: #10b981; /* Green for results */
    font-weight: 900;
    font-size: 18px;
}

.rk-case-panel[data-status="fail"] .rk-math-result {
    color: #ef4444; /* Red for bad results */
}

/* Right: Visuals & Conclusion */
.rk-case-visuals {
    background: #f8fafc;
    display: flex;
    flex-direction: column;
}

.rk-svg-wrapper {
    height: 220px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: #e2e8f0;
    border-bottom: 1px solid var(--rk-cases-border);
    position: relative;
    overflow: hidden;
}

.rk-case-conclusion {
    padding: 30px;
    flex-grow: 1;
}

.rk-case-conclusion h4 {
    margin: 0 0 10px 0;
    font-size: 16px;
    font-weight: 900;
    text-transform: uppercase;
}

.rk-case-panel[data-status="success"] .rk-case-conclusion h4 { color: var(--rk-cases-success); }
.rk-case-panel[data-status="fail"] .rk-case-conclusion h4 { color: var(--rk-cases-danger); }
.rk-case-panel[data-status="info"] .rk-case-conclusion h4 { color: var(--rk-cases-primary); }

.rk-case-conclusion p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-cases-text);
}

/* Custom Math elements to avoid LaTeX inside HTML */
.rk-fraction {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    vertical-align: middle;
    margin: 0 5px;
}
.rk-numerator {
    border-bottom: 1px solid #94a3b8;
    padding: 0 5px;
    font-size: 14px;
}
.rk-denominator {
    padding: 0 5px;
    font-size: 14px;
}

/* SVG Animations based on active panel */
.anim-loop-draw { stroke-dasharray: 100; stroke-dashoffset: 100; }
.rk-case-panel.active .anim-loop-draw { animation: drawLoop 2s forwards ease-out; }
.rk-case-panel.active .anim-loop-draw:nth-child(2) { animation-delay: 0.5s; }
.rk-case-panel.active .anim-loop-draw:nth-child(3) { animation-delay: 1s; }
.rk-case-panel.active .anim-loop-draw:nth-child(4) { animation-delay: 1.5s; }
@keyframes drawLoop { to { stroke-dashoffset: 0; } }

.rk-case-panel.active .anim-gauge-needle { animation: overPressure 2s forwards cubic-bezier(0.4, 0, 0.2, 1); }
@keyframes overPressure { 
    0% { transform: rotate(-45deg); } 
    70% { transform: rotate(135deg); stroke: #ef4444; } 
    80% { transform: rotate(120deg); stroke: #ef4444; } 
    100% { transform: rotate(130deg); stroke: #ef4444; } 
}

.rk-case-panel.active .anim-vessel-fill { animation: fillVessel 2s forwards ease-out; }
@keyframes fillVessel { from { transform: scaleY(0); } to { transform: scaleY(1); } }

/* Mobile View */
@media (max-width: 768px) {
    .rk-cases-header { padding: 30px 20px; }
    .rk-cases-title { font-size: 24px; }
    .rk-case-panel.active { grid-template-columns: 1fr; }
    .rk-case-data { padding: 30px 20px; border-right: none; border-bottom: 1px solid var(--rk-cases-border); }
    .rk-data-grid { grid-template-columns: 1fr; gap: 10px; }
    .rk-svg-wrapper { height: 180px; }
    .rk-case-tab { padding: 15px 20px; font-size: 14px; }
    .rk-math-block { padding: 15px; font-size: 13px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-case-studies",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Przykłady obliczeniowe instalacji ogrzewania podłogowego – Case Studies",
    "description": "Praktyczne przykłady obliczeń hydraulicznych i termicznych: salon z aneksem, przewymiarowana pętla 150m oraz dobór naczynia wzbiorczego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-23",
    "dateModified": "2026-05-23"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-case-studies",
    "name": "Wyniki Symulacji Parametrów Ogrzewania Podłogowego",
    "description": "Szczegółowe dane liczbowe, wzory i konkluzje inżynierskie dla 3 popularnych wariantów instalacyjnych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczenia ogrzewania podłogowego",
      "dobór naczynia wzbiorczego",
      "prędkość przepływu wody w rurze",
      "strumień masowy podłogówki",
      "podział na pętle grzewcze"
    ],
    "measurementTechnique": "Szacunki numeryczne oparte o normę PN-EN 1264 z zastosowaniem fizycznych równań zachowania energii i oporów przepływu.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Salon 45m2: Zapotrzebowanie 1800W generuje 4 pętle po 77m przy rozstawie 15cm.",
        "Pętla 150m: Wymaga przepływu 0.344 m3/h i generuje niszczący opór rzędu 43 kPa.",
        "Zład 1050m rury: Wymaga naczynia wzbiorczego o objętości min. 8 litrów dla bezpieczeństwa."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-case-studies",
    "name": "Kalkulator Prędkości i Pojemności Wodnej",
    "description": "Interaktywny moduł edukacyjny prezentujący analizę 3 przypadków obliczeniowych (Case Studies) z dynamicznymi wykresami SVG i wnioskami.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-cases-container" id="rk-cases-app">
    
    <div class="rk-cases-header">
        <div class="rk-cases-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Analiza Przypadków (Case Studies)
        </div>
        <h2 class="rk-cases-title">Przykłady obliczeniowe instalacji <span>podłogówki</span></h2>
        <p class="rk-cases-desc">Poniżej przedstawiam trzy rzeczywiste scenariusze z kart projektowych. Zobacz, jak wzory matematyczne normy PN-EN przekładają się na dobór rur, analizę błędów wykonawczych i bezpieczeństwo hydrauliczne układu.</p>
    </div>

    <div class="rk-cases-nav">
        <button class="rk-case-tab active" data-target="case-1">
            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
            1. Salon 45 m² (Idealny)
        </button>
        <button class="rk-case-tab" data-target="case-2">
            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
            2. Pętla 150 m (Błąd)
        </button>
        <button class="rk-case-tab" data-target="case-3">
            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            3. Pojemność i Wzbiorcze
        </button>
    </div>

    <div class="rk-cases-content">
        
        <div class="rk-case-panel active" id="case-1" data-status="success">
            <div class="rk-case-data">
                <h3>Przykład 1: Salon z aneksem</h3>
                
                <div class="rk-data-grid">
                    <div class="rk-data-item"><span class="rk-data-label">Pow. podłogi (A):</span> <span class="rk-data-val">45 m²</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Standard (q):</span> <span class="rk-data-val">40 W/m²</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Pow. grzewcza (A<sub>grz</sub>):</span> <span class="rk-data-val">40 m²</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Rozstaw (a):</span> <span class="rk-data-val">15 cm (0.15m)</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Zabudowa stała:</span> <span class="rk-data-val">5 m²</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Długość dobiegu:</span> <span class="rk-data-val">16 m</span></div>
                </div>

                <div class="rk-math-block">
                    <div class="rk-math-line">
                        <span>Zapotrzebowanie (Q<sub>obl</sub>):</span>
                        <span class="rk-math-highlight">45 &times; 40</span>
                        <span>=</span>
                        <span class="rk-math-result">1800 W</span>
                    </div>
                    <div class="rk-math-line" style="margin-top:15px;">
                        <span>Dł. rury (L):</span>
                        <span>(40 / 0.15) &times; 1.1 + 16</span>
                        <span>=</span>
                        <span class="rk-math-highlight">309.33 m</span>
                    </div>
                    <div class="rk-math-line" style="margin-top:15px; border-top:1px dashed #475569; padding-top:15px;">
                        <span>Podział:</span>
                        <span>309.33 / 100 &approx; 3.09</span>
                        <span>&rarr;</span>
                        <span class="rk-math-result">4 pętle (po ~77m)</span>
                    </div>
                </div>
            </div>
            <div class="rk-case-visuals">
                <div class="rk-svg-wrapper">
                    <svg viewBox="0 0 100 100" style="width:100%; height:100%;">
                        <rect x="10" y="20" width="15" height="60" fill="#334155" rx="3"/>
                        <path class="anim-loop-draw" d="M 25 30 L 80 30 Q 90 30 90 40 L 40 40" fill="none" stroke="#10b981" stroke-width="3" stroke-linecap="round"/>
                        <path class="anim-loop-draw" d="M 25 45 L 80 45 Q 90 45 90 55 L 40 55" fill="none" stroke="#10b981" stroke-width="3" stroke-linecap="round"/>
                        <path class="anim-loop-draw" d="M 25 60 L 80 60 Q 90 60 90 70 L 40 70" fill="none" stroke="#10b981" stroke-width="3" stroke-linecap="round"/>
                        <path class="anim-loop-draw" d="M 25 75 L 80 75 Q 90 75 90 85 L 40 85" fill="none" stroke="#10b981" stroke-width="3" stroke-linecap="round"/>
                    </svg>
                </div>
                <div class="rk-case-conclusion">
                    <h4>Wniosek Inżynierski</h4>
                    <p>Podział na 4 krótkie pętle (około 77 metrów każda) gwarantuje bardzo niskie opory hydrauliczne, poniżej 15 kPa. Rotametry dadzą się idealnie wyregulować, a pompa ciepła nie będzie przeciążona.</p>
                </div>
            </div>
        </div>

        <div class="rk-case-panel" id="case-2" data-status="fail">
            <div class="rk-case-data">
                <h3>Przykład 2: Hydraulika zbyt długiej pętli</h3>
                
                <div class="rk-data-grid">
                    <div class="rk-data-item"><span class="rk-data-label">Długość rury (L):</span> <span class="rk-data-val">150 m</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Śr. wewnętrzna:</span> <span class="rk-data-val">12 mm (16&#215;2)</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Moc pętli (Q):</span> <span class="rk-data-val">2000 W</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Schłodzenie (&Delta;T):</span> <span class="rk-data-val">5 K</span></div>
                </div>

                <div class="rk-math-block">
                    <div class="rk-math-line">
                        <span>Wymagany strumień wody (m):</span>
                    </div>
                    <div class="rk-math-line">
                        <span>m =</span>
                        <div class="rk-fraction">
                            <span class="rk-numerator">2000</span>
                            <span class="rk-denominator">4186 &times; 5</span>
                        </div>
                        <span>&times; 3600 &approx;</span>
                        <span class="rk-math-highlight">344 kg/h</span>
                    </div>
                    <div class="rk-math-line" style="margin-top:15px; border-top:1px dashed #475569; padding-top:15px;">
                        <span>Prędkość (v):</span>
                        <span class="rk-math-result" style="color:#f59e0b;">0.85 m/s (Szumy!)</span>
                    </div>
                    <div class="rk-math-line">
                        <span>Opór liniowy dla 150m:</span>
                        <span class="rk-math-result">aż 43 kPa</span>
                    </div>
                </div>
            </div>
            <div class="rk-case-visuals">
                <div class="rk-svg-wrapper">
                    <svg viewBox="0 0 100 100" style="width:100%; height:100%;">
                        <path d="M 20 70 A 40 40 0 1 1 80 70" fill="none" stroke="#cbd5e1" stroke-width="8" stroke-linecap="round"/>
                        <path d="M 60 22 A 40 40 0 0 1 80 70" fill="none" stroke="#ef4444" stroke-width="8" stroke-linecap="round"/>
                        <line class="anim-gauge-needle" x1="50" y1="50" x2="20" y2="50" stroke="#334155" stroke-width="4" stroke-linecap="round" style="transform-origin: 50px 50px;"/>
                        <circle cx="50" cy="50" r="6" fill="#1e293b"/>
                        <text x="50" y="85" font-size="14" font-weight="900" fill="#ef4444" text-anchor="middle">43 kPa</text>
                    </svg>
                </div>
                <div class="rk-case-conclusion">
                    <h4>Błąd Krytyczny!</h4>
                    <p>Żadna standardowa pompa obiegowa nie zapewni tak wysokiego ciśnienia dyspozycyjnego dla jednej pętli przy zachowaniu przepływów na reszcie instalacji. <strong>Efekt: Pętla po prostu przestanie grzać.</strong></p>
                </div>
            </div>
        </div>

        <div class="rk-case-panel" id="case-3" data-status="info">
            <div class="rk-case-data">
                <h3>Przykład 3: Pojemność i Naczynie</h3>
                
                <div class="rk-data-grid">
                    <div class="rk-data-item"><span class="rk-data-label">Pow. domu:</span> <span class="rk-data-val">150 m²</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Całk. dł. rur:</span> <span class="rk-data-val">1050 m</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Rozdzielacz:</span> <span class="rk-data-val">12 sekcji</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Bufor sprzęgłowy:</span> <span class="rk-data-val">60 L</span></div>
                </div>

                <div class="rk-math-block">
                    <div class="rk-math-line">
                        <span>Pojemność rur (V<sub>rur</sub>):</span>
                        <span>1050 &times; 0.113 =</span>
                        <span class="rk-math-highlight">118.65 L</span>
                    </div>
                    <div class="rk-math-line">
                        <span>Całk. zład (V<sub>inst</sub>):</span>
                        <span>118.65 + (12 &times; 0.5) + 60 =</span>
                        <span class="rk-math-highlight">184.65 L</span>
                    </div>
                    <div class="rk-math-line" style="margin-top:15px; border-top:1px dashed #475569; padding-top:15px;">
                        <span>Obj. użytkowa (V<sub>e</sub>):</span>
                        <span>184.65 &times; 0.0095 &times; 1.3 =</span>
                        <span class="rk-math-highlight">2.28 L</span>
                    </div>
                    <div class="rk-math-line">
                        <span>Min. naczynie (V<sub>n</sub>):</span>
                        <span>2.28 &times; 2.22 =</span>
                        <span class="rk-math-result">5.06 L</span>
                    </div>
                </div>
            </div>
            <div class="rk-case-visuals">
                <div class="rk-svg-wrapper">
                    <svg viewBox="0 0 100 100" style="width:100%; height:100%;">
                        <rect x="30" y="20" width="40" height="60" fill="#cbd5e1" rx="20"/>
                        <rect class="anim-vessel-fill" x="30" y="50" width="40" height="30" fill="#3b82f6" rx="15" style="transform-origin: bottom;"/>
                        <line x1="50" y1="20" x2="50" y2="10" stroke="#334155" stroke-width="4"/>
                        <path d="M 30 50 Q 50 40 70 50" fill="none" stroke="#1e293b" stroke-width="2" stroke-dasharray="4"/>
                        <text x="50" y="65" font-size="14" font-weight="900" fill="#ffffff" text-anchor="middle">8 L</text>
                    </svg>
                </div>
                <div class="rk-case-conclusion">
                    <h4>Bezpieczeństwo Układu</h4>
                    <p>Obliczenia wykazują minimalną pojemność na poziomie 5.06 L. Należy zakupić standardowe naczynie o pojemności <strong>8 litrów</strong>. Poleganie na małym, 5-litrowym naczyniu wbudowanym w kocioł doprowadzi do wyrzutów wody przez zawór bezpieczeństwa.</p>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-cases-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener inżynierski należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na tej domenie jest nieautoryzowane.
                </div>
            `;
            return;
        }
    }

    // Logika Zakładek (Case Studies)
    const tabs = document.querySelectorAll('.rk-case-tab');
    const panels = document.querySelectorAll('.rk-case-panel');

    tabs.forEach(tab => {
        tab.addEventListener('click', () => {
            const targetId = tab.getAttribute('data-target');
            
            // Czyszczenie klas aktywnych
            tabs.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));
            
            // Aktywacja wybranego
            tab.classList.add('active');
            const activePanel = document.getElementById(targetId);
            
            // Restart CSS animations for SVGs by forcing reflow
            if (activePanel) {
                activePanel.classList.remove('active');
                void activePanel.offsetWidth; 
                activePanel.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-proj-dark: #0f172a;
    --rk-proj-darker: #020617;
    --rk-proj-brand: #4f46e5; /* Indigo techniczne */
    --rk-proj-brand-light: #e0e7ff;
    --rk-proj-accent: #06b6d4; /* Cyjan / inżynieryjny akcent */
    --rk-proj-bg: #ffffff;
    --rk-proj-surface: #f8fafc;
    --rk-proj-border: #cbd5e1;
    --rk-proj-text: #334155;
    --rk-proj-muted: #64748b;
    --rk-proj-shadow: 0 20px 40px -10px rgba(79, 70, 229, 0.15);
}

.rk-proj-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-proj-bg);
    border-radius: 24px;
    box-shadow: var(--rk-proj-shadow);
    border: 1px solid var(--rk-proj-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-proj-header {
    background: linear-gradient(135deg, var(--rk-proj-darker) 0%, var(--rk-proj-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-proj-brand);
}

.rk-proj-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(79, 70, 229, 0.2);
    color: #a5b4fc;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(165, 180, 252, 0.3);
}

.rk-proj-header h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-proj-header h2 span { color: var(--rk-proj-accent); }

.rk-proj-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-proj-link {
    color: #a5b4fc;
    text-decoration: none;
    border-bottom: 1px dashed rgba(165, 180, 252, 0.4);
    font-weight: 600;
    transition: all 0.3s;
}
.rk-proj-link:hover { color: #ffffff; border-bottom-style: solid; }

.rk-proj-link-dark {
    color: var(--rk-proj-brand);
    text-decoration: underline;
    text-underline-offset: 3px;
    font-weight: 700;
    transition: color 0.3s;
}
.rk-proj-link-dark:hover { color: #3730a3; }

/* --- INTERAKTYWNE FILARY --- */
.rk-proj-interactive {
    padding: 40px 50px;
    background: var(--rk-proj-surface);
}

.rk-proj-interactive h3 {
    text-align: center;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-proj-dark);
    margin: 0 0 30px 0;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-pillars-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    margin-bottom: 30px;
}

.rk-pillar-btn {
    background: #ffffff;
    border: 2px solid var(--rk-proj-border);
    border-radius: 16px;
    padding: 20px 15px;
    cursor: pointer;
    text-align: center;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
}

.rk-pillar-btn:hover {
    border-color: var(--rk-proj-brand);
    background: var(--rk-proj-brand-light);
    transform: translateY(-3px);
}

.rk-pillar-btn.active {
    border-color: var(--rk-proj-brand);
    background: var(--rk-proj-brand);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(79, 70, 229, 0.4);
}

.rk-pillar-icon {
    width: 48px;
    height: 48px;
    background: var(--rk-proj-surface);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-proj-brand);
    transition: all 0.3s;
}
.rk-pillar-btn.active .rk-pillar-icon { background: rgba(255,255,255,0.2); color: #ffffff; }

.rk-pillar-title {
    font-size: 15px;
    font-weight: 800;
    line-height: 1.3;
    color: var(--rk-proj-dark);
    transition: color 0.3s;
}
.rk-pillar-btn.active .rk-pillar-title { color: #ffffff; }

/* Panele Zawartości */
.rk-pillar-content {
    display: none;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-proj-border);
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    animation: fadeScale 0.4s ease-out;
}
.rk-pillar-content.active { display: grid; grid-template-columns: 1fr 280px; gap: 30px; align-items: center; }

@keyframes fadeScale {
    from { opacity: 0; transform: scale(0.98); }
    to { opacity: 1; transform: scale(1); }
}

.rk-panel-text h4 { margin: 0 0 15px 0; font-size: 20px; font-weight: 900; color: var(--rk-proj-dark); }
.rk-panel-text p { margin: 0 0 20px 0; font-size: 15px; line-height: 1.7; color: var(--rk-proj-text); }

.rk-panel-highlight {
    background: var(--rk-proj-surface);
    padding: 15px;
    border-left: 4px solid var(--rk-proj-accent);
    border-radius: 0 8px 8px 0;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-proj-dark);
}

/* Wizualizacje SVG */
.rk-svg-stage {
    background: var(--rk-proj-dark);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 180px;
    box-shadow: inset 0 4px 20px rgba(0,0,0,0.5);
}

.rk-tech-svg { width: 100%; max-width: 200px; height: auto; }

/* Animacje SVG */
/* 1. OZC */
.anim-heat-loss { stroke-dasharray: 4; animation: flowOut 1.5s linear infinite; stroke: #ef4444; }
.anim-heat-gain { stroke-dasharray: 4; animation: flowIn 1.5s linear infinite; stroke: #10b981; }
@keyframes flowOut { to { stroke-dashoffset: -12; } }
@keyframes flowIn { to { stroke-dashoffset: 12; } }

/* 2. Rotametry */
.anim-float-1 { animation: balanceFloat1 2s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.anim-float-2 { animation: balanceFloat2 2s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.anim-float-3 { animation: balanceFloat3 2s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
@keyframes balanceFloat1 { from { transform: translateY(0); } to { transform: translateY(15px); } }
@keyframes balanceFloat2 { from { transform: translateY(30px); } to { transform: translateY(15px); } }
@keyframes balanceFloat3 { from { transform: translateY(10px); } to { transform: translateY(15px); } }

/* 3. Pompa */
.anim-pump-spin { transform-origin: center; animation: spinPump 2s linear infinite; }
@keyframes spinPump { to { transform: rotate(360deg); } }
.anim-pump-flow { stroke-dasharray: 10; animation: flowPump 1s linear infinite; stroke: var(--rk-proj-accent); }
@keyframes flowPump { to { stroke-dashoffset: -20; } }

/* --- MOCNE CTA --- */
.rk-proj-cta {
    background: linear-gradient(135deg, #eef2ff 0%, #ffffff 100%);
    padding: 45px 50px;
    text-align: center;
    border-top: 1px solid var(--rk-proj-brand-light);
}

.rk-cta-title {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-proj-dark);
    margin: 0 0 15px 0;
}

.rk-cta-desc {
    font-size: 16px;
    color: var(--rk-proj-text);
    max-width: 600px;
    margin: 0 auto 30px auto;
    line-height: 1.6;
}

.rk-btn-massive {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-proj-brand);
    color: #ffffff;
    font-size: 18px;
    font-weight: 900;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(79, 70, 229, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-btn-massive:hover {
    background: #4338ca;
    transform: translateY(-4px);
    box-shadow: 0 15px 35px -5px rgba(79, 70, 229, 0.5);
    border-color: #a5b4fc;
}

.rk-btn-massive svg { transition: transform 0.3s; }
.rk-btn-massive:hover svg { transform: translateX(5px); }

@media (max-width: 768px) {
    .rk-proj-header, .rk-proj-interactive, .rk-proj-cta { padding: 30px 20px; }
    .rk-proj-header h2, .rk-cta-title { font-size: 24px; }
    .rk-pillars-grid { grid-template-columns: 1fr; }
    .rk-pillar-content.active { grid-template-columns: 1fr; }
    .rk-svg-stage { min-height: 160px; order: -1; } /* SVG na górę na mobilce */
    .rk-btn-massive { width: 100%; font-size: 16px; padding: 18px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-projekt",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Jak kalkulator wpływa na projekt ogrzewania podłogowego?",
    "description": "Zrozum 3 inżynieryjne filary: bilans OZC, hydraulikę rozdzielacza i dobór pompy obiegowej. Zobacz, jak wyliczenia przekładają się na finalną dokumentację techniczną.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-projekt",
    "name": "Filary Projektowania Instalacji Ogrzewania Podłogowego",
    "description": "Klasyfikacja trzech głównych obszarów inżynieryjnych (OZC, Hydraulika, Pompy), które są definiowane przez wyniki kompleksowego kalkulatora.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego",
      "rzeczywisty bilans cieplny OZC",
      "hydraulika rozdzielacza i pętli",
      "dobór pompy obiegowej podłogówki",
      "dokumentacja techniczna instalacji"
    ],
    "measurementTechnique": "Synteza wyników obliczeniowych z norm PN-EN 12831 (OZC) oraz PN-EN 1264 do formy wykonawczej dokumentacji technicznej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Bilans Cieplny OZC: Precyzyjne zapotrzebowanie na energię dla każdego pomieszczenia.",
        "Hydraulika Pętli: Rozstaw rur co do centymetra i wartości nastaw rotametrów w l/min.",
        "Dobór Pompy: Wysokość podnoszenia oparta o sumaryczne opory najdłuższej pętli hydraulicznej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-projekt",
    "name": "Eksplorator Filarów Projektowych",
    "description": "Interaktywny schemat prezentujący wpływ wyliczeń kalkulatora na projekt techniczny OZC, hydraulikę i dobór pomp, wzbogacony o animacje wektorowe procesów fizycznych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-proj-container" id="rk-proj-app">
    
    <div class="rk-proj-header">
        <div class="rk-proj-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Dokumentacja Techniczna
        </div>
        <h2>Jak to wpływa na <span>projekt ogrzewania podłogowego?</span></h2>
        <p class="rk-proj-lead">
            Wszystkie wyliczenia realizowane przez kompleksowy kalkulator mają bezpośrednie przełożenie na finalną dokumentację techniczną. Poprawnie wykonany projekt ogrzewania podłogowego nie może opierać się na danych szacunkowych. Musi on bezwzględnie scalać trzy kluczowe filary inżynieryjne.
        </p>
    </div>

    <div class="rk-proj-interactive">
        <h3>3 Filary Inżynieryjne</h3>
        
        <div class="rk-pillars-grid">
            <button class="rk-pillar-btn active" data-target="p-ozc">
                <div class="rk-pillar-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                </div>
                <div class="rk-pillar-title">Bilans Cieplny (OZC)</div>
            </button>
            
            <button class="rk-pillar-btn" data-target="p-hyd">
                <div class="rk-pillar-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><line x1="4" y1="12" x2="20" y2="12"></line><line x1="12" y1="4" x2="12" y2="20"></line></svg>
                </div>
                <div class="rk-pillar-title">Hydraulika i Pętle</div>
            </button>

            <button class="rk-pillar-btn" data-target="p-pump">
                <div class="rk-pillar-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>
                </div>
                <div class="rk-pillar-title">Dobór Pompy</div>
            </button>
        </div>

        <div class="rk-pillar-content active" id="p-ozc">
            <div class="rk-panel-text">
                <h4>Rzeczywisty bilans cieplny OZC</h4>
                <p>Określa precyzyjne <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/" class="rk-proj-link-dark">zapotrzebowanie na energię</a> dla każdego pomieszczenia z osobna. Fundament, który eliminuje ryzyko niedogrzania łazienek czy skrajnych sypialni podczas mrozów.</p>
                <div class="rk-panel-highlight">
                    Wynik kalkulatora: Precyzyjny dobór mocy W/m² eliminuje szacunki &#8222;na oko&#8221;.
                </div>
            </div>
            <div class="rk-svg-stage">
                <svg class="rk-tech-svg" viewBox="0 0 100 100">
                    <rect x="20" y="20" width="60" height="60" fill="none" stroke="#64748b" stroke-width="4" rx="4"/>
                    <path class="anim-heat-loss" d="M 80 50 L 95 50" fill="none" stroke-width="3" stroke-linecap="round"/>
                    <path class="anim-heat-loss" d="M 50 20 L 50 5" fill="none" stroke-width="3" stroke-linecap="round"/>
                    <path class="anim-heat-gain" d="M 5 50 L 20 50" fill="none" stroke-width="4" stroke-linecap="round"/>
                    <path class="anim-heat-gain" d="M 50 95 L 50 80" fill="none" stroke-width="4" stroke-linecap="round"/>
                    <text x="50" y="55" font-size="16" font-weight="900" fill="#cbd5e1" text-anchor="middle">OZC</text>
                </svg>
            </div>
        </div>

        <div class="rk-pillar-content" id="p-hyd">
            <div class="rk-panel-text">
                <h4>Hydraulika rozdzielacza i pętli</h4>
                <p>Projekt definiuje dokładny rozstaw rur (co do centymetra), podział na równe obwody oraz wartości nastaw wstępnych (przepływów w l/min) na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/" class="rk-proj-link-dark">rotametrach</a>, co umożliwia prawidłowe <a href="https://projekt-ogrzewania.pl/regulacja-hydrauliczna-ogrzewania-podlogowego/" class="rk-proj-link-dark">zrównoważenie systemu</a>.</p>
                <div class="rk-panel-highlight">
                    Wynik kalkulatora: Stabilne przepływy i równomierne nagrzewanie podłogi.
                </div>
            </div>
            <div class="rk-svg-stage">
                <svg class="rk-tech-svg" viewBox="0 0 100 100">
                    <rect x="10" y="80" width="80" height="10" fill="#3b82f6" rx="2"/>
                    <rect x="20" y="20" width="10" height="60" fill="none" stroke="#64748b" stroke-width="2"/>
                    <rect class="anim-float-1" x="22" y="50" width="6" height="4" fill="#ef4444"/>
                    <rect x="45" y="20" width="10" height="60" fill="none" stroke="#64748b" stroke-width="2"/>
                    <rect class="anim-float-2" x="47" y="50" width="6" height="4" fill="#ef4444"/>
                    <rect x="70" y="20" width="10" height="60" fill="none" stroke="#64748b" stroke-width="2"/>
                    <rect class="anim-float-3" x="72" y="50" width="6" height="4" fill="#ef4444"/>
                    <line x1="15" y1="35" x2="85" y2="35" stroke="#10b981" stroke-width="2" stroke-dasharray="4"/>
                </svg>
            </div>
        </div>

        <div class="rk-pillar-content" id="p-pump">
            <div class="rk-panel-text">
                <h4>Dobór pompy obiegowej</h4>
                <p>Na podstawie zsumowanych oporów hydraulicznych najdłuższej pętli projektant przeprowadza <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/" class="rk-proj-link-dark">dobór pompy obiegowej</a>. Określamy dokładną wysokość podnoszenia, zapobiegając przeciążeniu lub niedomiarowi tłoczenia.</p>
                <div class="rk-panel-highlight">
                    Wynik kalkulatora: Brak &#8222;martwych&#8221;, zimnych stref z powodu słabej pompy.
                </div>
            </div>
            <div class="rk-svg-stage">
                <svg class="rk-tech-svg" viewBox="0 0 100 100">
                    <circle cx="30" cy="50" r="20" fill="none" stroke="#94a3b8" stroke-width="4"/>
                    <g class="anim-pump-spin" transform="translate(30, 50)">
                        <polygon points="-8,-8 10,0 -8,8" fill="#10b981"/>
                    </g>
                    <path class="anim-pump-flow" d="M 50 50 L 90 50" fill="none" stroke-width="6" stroke-linecap="round"/>
                    <path class="anim-pump-flow" d="M 90 50 Q 95 50 95 40 L 95 20" fill="none" stroke-width="4" stroke-linecap="round"/>
                </svg>
            </div>
        </div>

    </div>

    <div class="rk-proj-cta">
        <h3 class="rk-cta-title">Nie ryzykuj błędów na budowie</h3>
        <p class="rk-cta-desc">
            Skorzystaj z wiedzy ekspertów. Zamów kompleksowy, inżynieryjny projekt ogrzewania podłogowego, który zagwarantuje Ci optymalne zużycie materiałów, niskie rachunki za ogrzewanie i święty spokój na lata.
        </p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-massive">
            ZAMÓW PROFESJONALNY PROJEKT PODŁOGÓWKI
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg>
        </a>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-proj-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:24px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener informacyjny należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na nieautoryzowanej domenie jest zabronione prawem.
                </div>
            `;
            return;
        }
    }

    // Logika zakładek (Filary)
    const btns = document.querySelectorAll('.rk-pillar-btn');
    const contents = document.querySelectorAll('.rk-pillar-content');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            const targetId = this.getAttribute('data-target');
            
            // Reset
            btns.forEach(b => b.classList.remove('active'));
            contents.forEach(c => c.classList.remove('active'));
            
            // Aktywacja
            this.classList.add('active');
            const targetContent = document.getElementById(targetId);
            if(targetContent) {
                // Restart animacji SVG przez reflow
                targetContent.classList.remove('active');
                void targetContent.offsetWidth; 
                targetContent.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-calc-main-dark: #0f172a;
    --rk-calc-main-darker: #020617;
    --rk-calc-main-brand: #3b82f6; /* Hydronic Blue */
    --rk-calc-main-brand-light: #eff6ff;
    --rk-calc-main-accent: #10b981; /* Success Green */
    --rk-calc-main-danger: #ef4444; /* Error Red */
    --rk-calc-main-bg: #ffffff;
    --rk-calc-main-surface: #f8fafc;
    --rk-calc-main-border: #cbd5e1;
    --rk-calc-main-text: #334155;
    --rk-calc-main-muted: #64748b;
    --rk-calc-main-shadow: 0 20px 40px -10px rgba(59, 130, 246, 0.15);
}

.rk-calc-main-container {
    max-width: 1000px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-calc-main-bg);
    border-radius: 24px;
    box-shadow: var(--rk-calc-main-shadow);
    border: 1px solid var(--rk-calc-main-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-calc-main-header {
    background: linear-gradient(135deg, var(--rk-calc-main-darker) 0%, var(--rk-calc-main-dark) 100%);
    padding: 40px 50px;
    color: #ffffff;
    border-bottom: 5px solid var(--rk-calc-main-brand);
    text-align: center;
}

.rk-calc-main-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(59, 130, 246, 0.2);
    color: #93c5fd;
    padding: 6px 16px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 15px;
    border: 1px solid rgba(147, 197, 253, 0.3);
}

.rk-calc-main-title {
    font-size: 32px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 10px 0;
}

.rk-calc-main-title span { color: var(--rk-calc-main-brand); }

.rk-calc-main-desc {
    color: #cbd5e1;
    font-size: 15px;
    line-height: 1.6;
    margin: 0 auto;
    max-width: 700px;
}

/* --- SEKCJA GŁÓWNA --- */
.rk-calc-main-body {
    padding: 40px 50px;
    background: var(--rk-calc-main-surface);
}

/* Krok 1: Parametry Globalne */
.rk-calc-section-title {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-calc-main-dark);
    margin: 0 0 20px 0;
    display: flex;
    align-items: center;
    gap: 10px;
    border-bottom: 2px solid var(--rk-calc-main-border);
    padding-bottom: 10px;
}

.rk-calc-section-title svg { color: var(--rk-calc-main-brand); }

.rk-global-params {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 15px;
    margin-bottom: 40px;
}

.rk-input-group {
    background: #ffffff;
    padding: 15px;
    border-radius: 12px;
    border: 1px solid var(--rk-calc-main-border);
}

.rk-input-group label {
    display: block;
    font-size: 12px;
    font-weight: 800;
    color: var(--rk-calc-main-muted);
    text-transform: uppercase;
    margin-bottom: 8px;
}

.rk-input-group select, .rk-input-group input {
    width: 100%;
    padding: 10px;
    border: 1px solid var(--rk-calc-main-border);
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    color: var(--rk-calc-main-dark);
    background: var(--rk-calc-main-surface);
    transition: all 0.3s;
}

.rk-input-group select:focus, .rk-input-group input:focus {
    outline: none;
    border-color: var(--rk-calc-main-brand);
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}

/* Krok 2: Pomieszczenia */
.rk-rooms-container {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 20px;
    margin-bottom: 20px;
}

.rk-room-card {
    background: #ffffff;
    border: 1px solid var(--rk-calc-main-border);
    border-radius: 16px;
    padding: 20px;
    position: relative;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
    transition: all 0.3s ease;
    animation: roomPopIn 0.3s ease-out;
}

.rk-room-card:hover {
    border-color: var(--rk-calc-main-brand);
    box-shadow: 0 8px 16px rgba(59, 130, 246, 0.1);
}

@keyframes roomPopIn {
    from { opacity: 0; transform: scale(0.95); }
    to { opacity: 1; transform: scale(1); }
}

.rk-room-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
    font-weight: 900;
    color: var(--rk-calc-main-dark);
}

.rk-room-delete {
    background: transparent;
    border: none;
    color: var(--rk-calc-main-danger);
    cursor: pointer;
    padding: 5px;
    border-radius: 6px;
    transition: background 0.2s;
}
.rk-room-delete:hover { background: #fef2f2; }

.rk-room-inputs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.rk-mini-input label {
    font-size: 11px;
    color: var(--rk-calc-main-muted);
    font-weight: 700;
    display: block;
    margin-bottom: 4px;
}
.rk-mini-input input {
    width: 100%;
    padding: 8px;
    border: 1px solid var(--rk-calc-main-border);
    border-radius: 6px;
    font-size: 14px;
    font-weight: 600;
    transition: border-color 0.3s;
}
.rk-mini-input input.error { border-color: var(--rk-calc-main-danger); background: #fef2f2; }

.rk-add-room-btn {
    width: 100%;
    padding: 15px;
    background: transparent;
    border: 2px dashed var(--rk-calc-main-border);
    border-radius: 16px;
    color: var(--rk-calc-main-muted);
    font-weight: 800;
    font-size: 14px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    transition: all 0.3s;
    margin-bottom: 40px;
}
.rk-add-room-btn:hover {
    border-color: var(--rk-calc-main-brand);
    color: var(--rk-calc-main-brand);
    background: var(--rk-calc-main-brand-light);
}

/* Krok 3: Oblicz */
.rk-calc-action-bar {
    display: flex;
    justify-content: center;
    margin-bottom: 40px;
}

.rk-calc-submit {
    background: var(--rk-calc-main-brand);
    color: #ffffff;
    font-size: 18px;
    font-weight: 900;
    padding: 20px 40px;
    border: none;
    border-radius: 16px;
    cursor: pointer;
    box-shadow: 0 10px 20px -5px rgba(59, 130, 246, 0.4);
    display: inline-flex;
    align-items: center;
    gap: 10px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-calc-submit:hover {
    transform: translateY(-3px);
    box-shadow: 0 15px 30px -5px rgba(59, 130, 246, 0.5);
    background: #2563eb;
}

.rk-calc-submit:active { transform: translateY(0); }

/* --- WYNIKI --- */
.rk-calc-results {
    display: none; /* Ukryte do kliknięcia */
    border-top: 2px solid var(--rk-calc-main-border);
    padding-top: 40px;
    animation: fadeInResult 0.5s ease-out;
}

@keyframes fadeInResult {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-res-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-bottom: 30px;
}

.rk-res-card {
    background: #ffffff;
    border: 1px solid var(--rk-calc-main-border);
    border-radius: 16px;
    padding: 25px;
    position: relative;
    overflow: hidden;
}

.rk-res-card::before {
    content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 4px;
}

.rk-res-card.c-blue::before { background: var(--rk-calc-main-brand); }
.rk-res-card.c-green::before { background: var(--rk-calc-main-accent); }
.rk-res-card.c-orange::before { background: #f59e0b; }

.rk-res-icon {
    margin-bottom: 15px;
    color: var(--rk-calc-main-dark);
}

.rk-res-label {
    font-size: 12px;
    font-weight: 800;
    color: var(--rk-calc-main-muted);
    text-transform: uppercase;
    margin-bottom: 5px;
}

.rk-res-value {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-calc-main-dark);
    margin-bottom: 10px;
}

.rk-res-value span { font-size: 16px; color: var(--rk-calc-main-muted); }

.rk-res-list {
    margin: 0; padding: 0; list-style: none;
    font-size: 13px; color: var(--rk-calc-main-text);
}
.rk-res-list li { margin-bottom: 4px; display: flex; justify-content: space-between; border-bottom: 1px dashed var(--rk-calc-main-border); padding-bottom: 4px; }
.rk-res-list li:last-child { border: none; margin: 0; padding: 0; }
.rk-res-list b { color: var(--rk-calc-main-dark); }

/* SVG Statusu Hydraulicznego */
.rk-res-status {
    background: var(--rk-calc-main-dark);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    align-items: center;
    gap: 30px;
    color: #ffffff;
    margin-bottom: 30px;
}

.rk-status-svg {
    width: 100px;
    height: 100px;
    flex-shrink: 0;
}

.rk-status-text h4 { margin: 0 0 10px 0; font-size: 20px; font-weight: 900; }
.rk-status-text p { margin: 0; font-size: 14px; color: #cbd5e1; line-height: 1.6; }
.rk-status-warn { color: var(--rk-calc-main-danger); }
.rk-status-ok { color: var(--rk-calc-main-accent); }

/* CTA Wynikowe */
.rk-res-cta {
    background: #eef2ff;
    border: 1px solid #c7d2fe;
    border-radius: 16px;
    padding: 25px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
}

.rk-res-cta p { margin: 0; font-size: 14px; color: #3730a3; line-height: 1.6; }
.rk-res-cta strong { font-weight: 900; color: #312e81; }

.rk-res-cta-btn {
    background: #4f46e5;
    color: #ffffff;
    padding: 12px 24px;
    border-radius: 10px;
    text-decoration: none;
    font-weight: 800;
    font-size: 14px;
    white-space: nowrap;
    transition: background 0.3s;
}
.rk-res-cta-btn:hover { background: #4338ca; }

@media (max-width: 768px) {
    .rk-calc-main-header, .rk-calc-main-body { padding: 30px 20px; }
    .rk-calc-main-title { font-size: 24px; }
    .rk-res-grid { grid-template-columns: 1fr; }
    .rk-res-status { flex-direction: column; text-align: center; }
    .rk-res-cta { flex-direction: column; text-align: center; }
}

/* Animacje wewnątrz SVG Wynikowego */
.anim-pump-impeller { transform-origin: center; animation: spinFast 1s linear infinite; }
@keyframes spinFast { to { transform: rotate(360deg); } }
.anim-flow-line { stroke-dasharray: 8; animation: flowHyd 1s linear infinite; }
@keyframes flowHyd { to { stroke-dashoffset: -16; } }
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-main-calc",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Kompleksowy Kalkulator Ogrzewania Podłogowego (Interaktywny)",
    "description": "Zaawansowane narzędzie inżynieryjne wyliczające długość rur, moc, rozstaw pętli oraz parametry pompy obiegowej na podstawie wprowadzonych danych pomieszczeń.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-calc-results",
    "name": "Wyniki Inżynierskich Obliczeń Ogrzewania Podłogowego",
    "description": "Dynamiczne wyliczenia parametrów fizycznych dla systemów płaszczyznowych, łączące zmienne izolacyjności, przepływu i strat ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator podłogówki online",
      "obliczanie pętli grzewczych",
      "dobór pompy do ogrzewania podłogowego",
      "średnica rury pex przepływ",
      "zapotrzebowanie na materiały podłogówka"
    ],
    "measurementTechnique": "Równania bilansu cieplnego i oporów hydraulicznych wg PN-EN 1264, z uwzględnieniem liczby Reynoldsa i modelu strat liniowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zestawienie całkowitej mocy (W) i długości rury (mb).",
        "Sugestie rozstawów rur względem zapotrzebowania cieplnego W/m2.",
        "Estymacja oporów hydraulicznych i wskazanie wymaganej wysokości podnoszenia pompy obiegowej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-main",
    "name": "Kompleksowy Kalkulator Ogrzewania Podłogowego PRO",
    "description": "Profesjonalna aplikacja webowa obliczająca wszystkie kluczowe parametry instalacji (pętle, rozstawy, hydraulika) na podstawie wprowadzonych danych pomieszczeń i warstw podłogi.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-main-container" id="rk-calc-main-app">
    
    <div class="rk-calc-main-header">
        <div class="rk-calc-main-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><rect x="9" y="9" width="6" height="6"></rect><line x1="9" y1="1" x2="9" y2="4"></line><line x1="15" y1="1" x2="15" y2="4"></line><line x1="9" y1="20" x2="9" y2="23"></line><line x1="15" y1="20" x2="15" y2="23"></line><line x1="20" y1="9" x2="23" y2="9"></line><line x1="20" y1="14" x2="23" y2="14"></line><line x1="1" y1="9" x2="4" y2="9"></line><line x1="1" y1="14" x2="4" y2="14"></line></svg>
            Narzędzie Obliczeniowe
        </div>
        <h2 class="rk-calc-main-title">Kompleksowy Kalkulator <span>Podłogówki</span></h2>
        <p class="rk-calc-main-desc">Wprowadź dane budynku oraz parametry poszczególnych pomieszczeń, aby wygenerować profesjonalne zestawienie materiałowe, rozstawy rur oraz wytyczne hydrauliczne dla pompy obiegowej.</p>
    </div>

    <div class="rk-calc-main-body">
        
        <div class="rk-calc-section-title">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>
            Krok 1: Parametry Globalne Konstrukcji
        </div>
        
        <div class="rk-global-params">
            <div class="rk-input-group">
                <label>Zasilanie (Tz)</label>
                <input type="number" id="rk-param-temp" value="35" min="25" max="50">
            </div>
            <div class="rk-input-group">
                <label>Okładzina podłogi</label>
                <select id="rk-param-floor">
                    <option value="1">Płytki / Gres</option>
                    <option value="0.85">Panele podłogowe</option>
                    <option value="0.75">Deska warstwowa</option>
                </select>
            </div>
            <div class="rk-input-group">
                <label>Rodzaj Wylewki</label>
                <select id="rk-param-screed">
                    <option value="1">Cementowa (Miksokret)</option>
                    <option value="1.13">Anhydrytowa (Płynna)</option>
                </select>
            </div>
            <div class="rk-input-group">
                <label>Izolacja Spodnia</label>
                <select id="rk-param-iso">
                    <option value="1">EPS 100 (Standard)</option>
                    <option value="1.05">EPS 200 (Twardy)</option>
                </select>
            </div>
            <div class="rk-input-group">
                <label>Rura Grzewcza</label>
                <select id="rk-param-pipe">
                    <option value="0.012">16&#215;2 (Wew. 12mm)</option>
                    <option value="0.013">17&#215;2 (Wew. 13mm)</option>
                    <option value="0.016">20&#215;2 (Wew. 16mm)</option>
                </select>
            </div>
        </div>

        <div class="rk-calc-section-title">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
            Krok 2: Bilans Pomieszczeń
        </div>

        <div class="rk-rooms-container" id="rk-rooms-wrapper">
            </div>

        <button class="rk-add-room-btn" id="rk-btn-add-room">
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
            Dodaj kolejne pomieszczenie
        </button>

        <div class="rk-calc-action-bar">
            <button class="rk-calc-submit" id="rk-btn-calculate">
                GENERUJ WYNIKI OBLICZEŃ
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 11 12 14 22 4"></polyline><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"></path></svg>
            </button>
        </div>

        <div class="rk-calc-results" id="rk-results-panel">
            
            <div class="rk-res-grid">
                
                <div class="rk-res-card c-blue">
                    <div class="rk-res-icon">
                        <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    </div>
                    <div class="rk-res-label">Całkowite Zapotrzebowanie</div>
                    <div class="rk-res-value" id="out-power">0 <span>W</span></div>
                    <ul class="rk-res-list">
                        <li>Ilość rury (zapas 10%): <b id="out-length">0 mb</b></li>
                        <li>Pojemność zładu: <b id="out-water">0 L</b></li>
                        <li>Całkowita powierzchnia: <b id="out-area">0 m²</b></li>
                    </ul>
                </div>

                <div class="rk-res-card c-green">
                    <div class="rk-res-icon">
                        <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                    </div>
                    <div class="rk-res-label">Rozdzielacz i Geometria</div>
                    <div class="rk-res-value" id="out-circuits">0 <span>sekcji</span></div>
                    <ul class="rk-res-list">
                        <li>Średni rozstaw rur: <b id="out-spacing-avg">0 cm</b></li>
                        <li>Sugerowane rozstawy: <b id="out-spacing-list">&#8211;</b></li>
                        <li>Limit długości pętli: <b>Zachowany</b></li>
                    </ul>
                </div>

                <div class="rk-res-card c-orange">
                    <div class="rk-res-icon">
                        <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                    </div>
                    <div class="rk-res-label">Wymogi Hydrauliczne</div>
                    <div class="rk-res-value" id="out-pump">Weryfikacja</div>
                    <ul class="rk-res-list">
                        <li>Przepływ sumaryczny: <b id="out-flow">0 m³/h</b></li>
                        <li>Opór najdłuższej pętli: <b id="out-pressure">0 kPa</b></li>
                        <li>Wys. podnoszenia: <b id="out-head">0 m</b></li>
                    </ul>
                </div>
            </div>

            <div class="rk-res-status">
                <div class="rk-status-svg">
                    <svg viewBox="0 0 100 100" style="width:100%;height:100%;">
                        <circle cx="50" cy="50" r="45" fill="none" stroke="#334155" stroke-width="6"></circle>
                        <circle cx="50" cy="50" r="30" fill="none" stroke="#475569" stroke-width="2"></circle>
                        <g class="anim-pump-impeller" transform="translate(50, 50)">
                            <path d="M 0 -25 L 10 0 L 0 25 L -10 0 Z" fill="#10b981" id="svg-impeller-color"></path>
                            <circle cx="0" cy="0" r="5" fill="#f8fafc"></circle>
                        </g>
                        <path class="anim-flow-line" d="M 15 80 Q 50 110 85 80" fill="none" stroke="#3b82f6" stroke-width="4" stroke-linecap="round"></path>
                    </svg>
                </div>
                <div class="rk-status-text">
                    <h4 id="out-status-title">Analiza w toku&#8230;</h4>
                    <p id="out-status-desc">&#8211;</p>
                </div>
            </div>

            <div class="rk-res-cta">
                <div>
                    <strong>Zastrzeżenie inżynierskie:</strong>
                    <p>Wyniki mają charakter poglądowy do szacowania kosztów. Błędy hydrauliczne kosztują krocie. Do realizacji niezbędny jest projekt wykonawczy uwzględniający opory miejscowe armatury i pełne badanie OZC.</p>
                </div>
                <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-res-cta-btn">ZAMÓW PROJEKT</a>
            </div>

        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-calc-main-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:24px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:40px; margin-bottom:15px;">🛑</div>
                    BŁĄD LICENCJI:<br>Główny silnik kalkulatora jest własnością Projekt-Ogrzewania.pl. Próba kradzieży kodu zatrzymana.
                </div>
            `;
            return;
        }
    }

    // --- LOGIKA KALKULATORA ---
    let rooms = [];
    const wrapper = document.getElementById('rk-rooms-wrapper');
    const btnAdd = document.getElementById('rk-btn-add-room');
    const btnCalc = document.getElementById('rk-btn-calculate');
    const resultsPanel = document.getElementById('rk-results-panel');

    function createRoomHTML(index) {
        return `
        <div class="rk-room-card" id="rk-room-${index}">
            <div class="rk-room-header">
                Pomieszczenie ${index + 1}
                <button class="rk-room-delete" onclick="rkRemoveRoom(${index})" title="Usuń">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="3 6 5 6 21 6"></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path></svg>
                </button>
            </div>
            <div class="rk-room-inputs">
                <div class="rk-mini-input">
                    <label>Powierzchnia (m²)</label>
                    <input type="number" id="rk-area-${index}" value="15" min="1" step="0.5" oninput="rkValidate(this)">
                </div>
                <div class="rk-mini-input">
                    <label>Straty (W/m²)</label>
                    <input type="number" id="rk-loss-${index}" value="50" min="10" step="5" oninput="rkValidate(this)">
                </div>
            </div>
        </div>`;
    }

    function renderRooms() {
        wrapper.innerHTML = '';
        rooms.forEach((r, idx) => {
            wrapper.innerHTML += createRoomHTML(idx);
            // Odtworzenie wartości po re-renderze
            setTimeout(() => {
                const aInput = document.getElementById(`rk-area-${idx}`);
                const lInput = document.getElementById(`rk-loss-${idx}`);
                if(aInput) aInput.value = r.area;
                if(lInput) lInput.value = r.loss;
            }, 0);
        });
    }

    window.rkAddRoom = function() {
        rooms.push({ area: 15, loss: 50 });
        renderRooms();
    }

    window.rkRemoveRoom = function(index) {
        // Zapisz obecne wartości przed usunięciem
        saveRoomStates();
        rooms.splice(index, 1);
        renderRooms();
    }

    function saveRoomStates() {
        rooms.forEach((r, idx) => {
            const aInput = document.getElementById(`rk-area-${idx}`);
            const lInput = document.getElementById(`rk-loss-${idx}`);
            if(aInput) r.area = parseFloat(aInput.value) || 0;
            if(lInput) r.loss = parseFloat(lInput.value) || 0;
        });
    }

    window.rkValidate = function(input) {
        let val = parseFloat(input.value);
        if(isNaN(val) || val <= 0) { input.classList.add('error'); } 
        else { input.classList.remove('error'); }
    }

    // Inicjalizacja z 2 pomieszczeniami
    rkAddRoom(); rkAddRoom();

    btnAdd.addEventListener('click', () => {
        saveRoomStates();
        rkAddRoom();
    });

    // Główna funkcja licząca (bazująca na logice ze wzorów inżynieryjnych)
    btnCalc.addEventListener('click', () => {
        saveRoomStates();

        const T = parseFloat(document.getElementById('rk-param-temp').value);
        const fF = parseFloat(document.getElementById('rk-param-floor').value);
        const sF = parseFloat(document.getElementById('rk-param-screed').value);
        const iF = parseFloat(document.getElementById('rk-param-iso').value);
        const D = parseFloat(document.getElementById('rk-param-pipe').value); // średnica wewnętrzna w [m]

        // Stałe fizyczne dla wody 35 st C
        const rho = 994; // gęstość kg/m3
        const mu = 0.00072; // lepkość dynamiczna
        const g = 9.81;

        let totalPower = 0;
        let totalArea = 0;
        let totalLength = 0;
        let totalCircuits = 0;
        let totalFlowM3H = 0;
        let maxHeadM = 0;
        let maxPressureKpa = 0;
        let spacings = [];

        let isValid = true;

        rooms.forEach(r => {
            if(r.area <= 0 || r.loss <= 0) isValid = false;
            
            // 1. Zapotrzebowanie W
            let power = r.area * r.loss;
            totalPower += power;
            totalArea += r.area;

            // 2. Szacowanie rozstawu bazując na stratach i okładzinie (Uproszczona logika PN-EN)
            // Baza dla 35 stC, płytki, jastrych cement, styro 100
            let baseProfile = { 10: 75, 15: 55, 20: 40, 25: 30 }; 
            let spacing = 10; // Domyślnie najgęściej dla pewności
            
            // Skalowanie wydajności podłogi parametrami
            for (let sp of [25, 20, 15, 10]) {
                // Skorygowana moc dla danego rozstawu
                let q_max = baseProfile[sp] * (T/35) * fF * sF * iF;
                if(q_max >= r.loss) {
                    spacing = sp; // Znaleziono optymalny, szerszy rozstaw
                    break;
                }
            }
            spacings.push(spacing);

            // 3. Długość rury (z zapasem 10% wg wytycznych)
            let spacingM = spacing / 100;
            let roomLen = (r.area / spacingM) * 1.1; 
            totalLength += roomLen;

            // 4. Pętle (limit 100m dla bezpieczeństwa hydraulicznego PEX 16)
            let circuits = Math.ceil(roomLen / 100);
            totalCircuits += circuits;

            // 5. Hydraulika (Przepływ masowy kg/h na m3/h). Założenie deltaT = 5K
            // m = Q / (cw * dT)
            let flow_kgh = power / (1.163 * 5); // uproszczenie
            let flow_m3h = flow_kgh / 1000;
            totalFlowM3H += flow_m3h;

            // Prędkość w pojedynczej pętli i opory tarcia (Darcy-Weisbach uproszczony)
            let flow_circuit_m3s = (flow_m3h / 3600) / circuits;
            let A_pipe = Math.PI * Math.pow(D/2, 2);
            let v = flow_circuit_m3s / A_pipe;
            
            // Re i Lambda
            let Re = (rho * v * D) / mu;
            let lambda = 0.3164 * Math.pow(Re, -0.25); // Blasius
            
            // Delta P = lambda * (L/D) * (rho*v^2 / 2)
            let len_circuit = roomLen / circuits;
            let dp = lambda * (len_circuit/D) * (rho * Math.pow(v, 2) / 2);
            // Dodajemy 20% na opory miejscowe (rozdzielacz)
            dp = dp * 1.2; 
            
            let head = dp / (rho * g);
            
            if(head > maxHeadM) maxHeadM = head;
            if(dp > maxPressureKpa) maxPressureKpa = dp;
        });

        if(!isValid || rooms.length === 0) {
            alert("Uzupełnij poprawnie wszystkie pola pomieszczeń (wartości > 0).");
            return;
        }

        // --- Aktualizacja widoku ---
        
        // Karta 1
        document.getElementById('out-power').innerHTML = totalPower.toFixed(0) + ' <span>W</span>';
        document.getElementById('out-length').textContent = totalLength.toFixed(0) + ' mb';
        // Pojemność wody 0.113 l/m dla 16mm (uproszczone zład całk)
        document.getElementById('out-water').textContent = (totalLength * 0.113).toFixed(1) + ' L';
        document.getElementById('out-area').textContent = totalArea.toFixed(1) + ' m²';

        // Karta 2
        document.getElementById('out-circuits').innerHTML = totalCircuits + ' <span>sekcji</span>';
        let uniqueSp = [...new Set(spacings)].sort((a,b) => a-b);
        let avgSp = (spacings.reduce((a,b) => a+b, 0) / spacings.length).toFixed(1);
        document.getElementById('out-spacing-avg').textContent = avgSp + ' cm';
        document.getElementById('out-spacing-list').textContent = uniqueSp.join(', ') + ' cm';

        // Karta 3
        let maxKpa = (maxPressureKpa / 1000).toFixed(1);
        document.getElementById('out-flow').textContent = totalFlowM3H.toFixed(2) + ' m³/h';
        document.getElementById('out-pressure').textContent = maxKpa + ' kPa';
        document.getElementById('out-head').textContent = maxHeadM.toFixed(1) + ' m';

        let pumpText = "Pompa 25-40";
        if(maxHeadM > 3.5) pumpText = "Pompa 25-60";
        if(maxHeadM > 5.5) pumpText = "Pompa 25-80";
        document.getElementById('out-pump').innerHTML = pumpText;

        // Status hydrauliczny do animacji i ostrzeżeń
        let stTitle = document.getElementById('out-status-title');
        let stDesc = document.getElementById('out-status-desc');
        let stColor = document.getElementById('svg-impeller-color');

        if(maxKpa > 25 || totalFlowM3H > 2.5) {
            stTitle.textContent = "Ryzyko Przeciążenia!";
            stTitle.className = "rk-status-warn";
            stDesc.textContent = "Obliczone opory hydrauliczne są bardzo wysokie. Parametr T zasilania jest prawdopodobnie zbyt niski do pokrycia strat przez wybraną podłogę. Pompa obiegowa może nie zapewnić wymaganego przepływu na instalacji.";
            stColor.setAttribute('fill', '#ef4444');
        } else {
            stTitle.textContent = "Instalacja Stabilna";
            stTitle.className = "rk-status-ok";
            stDesc.textContent = "Wartości oporów i przepływów mieszczą się w normach inżynieryjnych. Dobór standardowej pompy obiegowej zabezpieczy równomierne nagrzewanie podłogi.";
            stColor.setAttribute('fill', '#10b981');
        }

        resultsPanel.style.display = 'block';
        
        // Płynne przewinięcie do wyników
        setTimeout(() => {
            resultsPanel.scrollIntoView({ behavior: 'smooth', block: 'start' });
        }, 100);
    });

});
</script>



<p class="wp-block-paragraph"></p>



<style>
:root {
    --rk-cs-primary: #0f172a;
    --rk-cs-accent: #2563eb;
    --rk-cs-before: #ef4444; /* Czerwony - błędy */
    --rk-cs-before-bg: #fef2f2;
    --rk-cs-after: #10b981; /* Zielony - optymalizacja */
    --rk-cs-after-bg: #ecfdf5;
    --rk-cs-bg: #f8fafc;
    --rk-cs-border: #e2e8f0;
    --rk-cs-text: #475569;
}

.case-study-module {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--rk-cs-border);
    overflow: hidden;
}

/* ================= HEADER I METRYCZKA ================= */
.cs-header-wrapper {
    background: var(--rk-cs-primary);
    color: #ffffff;
    padding: 40px 50px;
    position: relative;
    overflow: hidden;
}

.cs-header-wrapper::after {
    content: '';
    position: absolute;
    top: -50px;
    right: -50px;
    width: 250px;
    height: 250px;
    background: radial-gradient(circle, rgba(37, 99, 235, 0.3) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
}

.cs-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.2);
    color: #93c5fd;
    padding: 6px 14px;
    border-radius: 50px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
}

.cs-header-wrapper h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 25px 0;
    line-height: 1.3;
    color: #ffffff;
    position: relative;
    z-index: 2;
}

.cs-stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
    position: relative;
    z-index: 2;
}

.cs-stat-box {
    background: rgba(0, 0, 0, 0.2);
    border: 1px solid rgba(255, 255, 255, 0.1);
    padding: 15px;
    border-radius: 12px;
}

.cs-stat-label {
    display: block;
    font-size: 11px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 700;
    margin-bottom: 5px;
}

.cs-stat-value {
    display: block;
    font-size: 16px;
    font-weight: 900;
    color: #ffffff;
}

/* ================= OPIS WYZWANIA ================= */
.cs-content-section {
    padding: 40px 50px 30px 50px;
    background: #ffffff;
}

.cs-lead-text {
    font-size: 16px;
    line-height: 1.8;
    color: var(--rk-cs-text);
    margin: 0 0 20px 0;
}

.cs-lead-text strong {
    color: var(--rk-cs-primary);
}

.cs-author-box {
    background: #f0f9ff;
    border-left: 4px solid var(--rk-cs-accent);
    padding: 15px 20px;
    border-radius: 0 12px 12px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 10px;
}

.cs-author-photo {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid #ffffff;
    box-shadow: 0 4px 10px rgba(37, 99, 235, 0.2);
    flex-shrink: 0;
}

.cs-author-box p {
    margin: 0;
    font-size: 14px;
    color: #1e3a8a;
    line-height: 1.6;
}

.cs-author-box a {
    color: var(--rk-cs-accent);
    font-weight: 800;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
}

.cs-author-box a:hover {
    color: #1e3a8a;
}

/* ================= WYZWANIE (SPLIT CARDS - STATYCZNE) ================= */
.cs-interactive-section {
    padding: 0 50px 40px 50px;
}

.cs-split-container {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.cs-split-card {
    border-radius: 16px;
    padding: 25px;
    border: 2px solid;
    position: relative;
    overflow: hidden;
}

/* Karta Błędu (Czerwona) */
.cs-split-card.before {
    border-color: var(--rk-cs-before);
    background: var(--rk-cs-before-bg);
    box-shadow: 0 10px 25px rgba(239, 68, 68, 0.1);
}

/* Karta Poprawna (Zielona) */
.cs-split-card.after {
    border-color: var(--rk-cs-after);
    background: var(--rk-cs-after-bg);
    box-shadow: 0 10px 25px rgba(16, 185, 129, 0.1);
}

.cs-card-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 15px;
}

.cs-card-icon {
    font-size: 28px;
}

.cs-card-title {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-cs-primary);
    margin: 0;
}

.cs-card-desc {
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-cs-text);
    margin: 0;
}

/* Sekcje na długi ogon */
.cs-seo-details {
    margin-top: 15px;
    padding: 15px;
    background: rgba(255,255,255,0.7);
    border-radius: 8px;
    border-left: 3px solid;
}

.cs-split-card.before .cs-seo-details { border-left-color: var(--rk-cs-before); }
.cs-split-card.after .cs-seo-details { border-left-color: var(--rk-cs-after); }

.cs-seo-details h4 {
    margin: 0 0 8px 0;
    font-size: 14px;
    color: var(--rk-cs-primary);
}

.cs-seo-details ul {
    margin: 0;
    padding-left: 20px;
    font-size: 13px;
    color: var(--rk-cs-text);
    line-height: 1.5;
}

.cs-seo-details li { margin-bottom: 4px; }
.cs-seo-details li:last-child { margin-bottom: 0; }
.cs-seo-details strong { color: var(--rk-cs-primary); }

/* Statyczne grafiki SVG */
.cs-static-svg-box {
    margin-top: 20px;
    padding: 15px;
    background: #ffffff;
    border-radius: 8px;
    border: 1px dashed var(--rk-cs-border);
}

.cs-svg-graphic {
    width: 100%;
    height: 100px;
}

/* Rozwiązanie tekstowe */
.cs-card-solution {
    margin-top: 15px;
    padding-top: 15px;
    border-top: 1px dashed rgba(0,0,0,0.1);
    font-size: 13px;
    font-weight: 700;
}

.cs-split-card.before .cs-card-solution { color: #991b1b; }
.cs-split-card.after .cs-card-solution { color: #065f46; }

@media (max-width: 768px) {
    .cs-header-wrapper { padding: 35px 25px; }
    .cs-stats-grid { grid-template-columns: 1fr 1fr; }
    .cs-content-section { padding: 30px 25px 20px 25px; }
    .cs-interactive-section { padding: 0 25px 30px 25px; }
    .cs-split-container { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Analiza rzeczywistego projektu: Dom 165 m² w Krośnie",
    "description": "Case study audytu instalacji ogrzewania podłogowego. Optymalizacja rozstawu rur przy oknach tarasowych HS, podniesienie SCOP pompy ciepła z 3,2 do 4,15 i oszczędności 1450 PLN rocznie.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-krosno",
    "name": "Parametry OZC i hydrauliki przed i po optymalizacji (Krosno 165m2)",
    "description": "Zestawienie parametrów błędnego układu rur i zoptymalizowanej strefy brzegowej przy wielkogabarytowych przeszkleniach HS.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego Krosno",
      "rozstaw rur przy oknie tarasowym HS",
      "temperatura zasilania pompy ciepła 35 stopni",
      "optymalizacja długości pętli podłogówki",
      "wskaźnik SCOP pompy ciepła"
    ],
    "measurementTechnique": "Weryfikacja strat ciepła 85 W/m2 przy oknie HS i korekta rozstawu rur z 15 cm na 10 cm.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Projekt pierwotny: Rozstaw 15 cm, zasilanie 45°C, SCOP 3,2, najdłuższa pętla 138 m.",
        "Projekt zoptymalizowany: Rozstaw 10 cm przy oknie (strefa 1m), zasilanie 35°C, SCOP 4,15.",
        "Efekt ekonomiczny: Oszczędność 1450 PLN rocznie na energii elektrycznej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-casestudy",
    "name": "Eksplorator Błędów Projektowych HVAC",
    "description": "Moduł porównawczy prezentujący inżynierskie różnice pomiędzy wykonawstwem amatorskim a rzetelnym projektem OZC w kontekście stref przyokiennych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="case-study-module" id="app-case-study">

    <div class="cs-header-wrapper">
        <div class="cs-badge">Case Study – Audyt Projektu</div>
        <h2>Analiza rzeczywistego projektu instalacji</h2>
        <div class="cs-stats-grid">
            <div class="cs-stat-box">
                <span class="cs-stat-label">Data audytu</span>
                <span class="cs-stat-value">Marzec 2026</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Lokalizacja</span>
                <span class="cs-stat-value">Okolice Krosna</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Pow. domu</span>
                <span class="cs-stat-value">165 m²</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Oszczędności</span>
                <span class="cs-stat-value">1450 PLN / rok</span>
            </div>
        </div>
    </div>

    <div class="cs-content-section">
        <p class="cs-lead-text">
            Podczas weryfikacji dokumentacji technicznej dla inwestora budującego dom w województwie podkarpackim, natrafiliśmy na poważny błąd wykonawczy. Pierwotny instalator zaplanował ułożenie rur w uniwersalnym rozstawie 15 cm na całej powierzchni budynku. Zignorował fakt, że w salonie znajduje się <strong>wielkogabarytowe okno przesuwne HS o szerokości 5,5 metra</strong>.
        </p>
        
        <div class="cs-author-box">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="cs-author-photo" loading="lazy">
            <p>Audyt przeprowadził CEO portalu  <a href="https://projekt-ogrzewania.pl/">Robert Kucharski</a>. Wprowadzenie danych do autorskiego oprogramowania wykazało, że strefa przyokienna generuje straty ciepła na poziomie 85 W/m².</p>
        </div>
    </div>

    <div class="cs-interactive-section">
        <div class="cs-split-container">
            
            <div class="cs-split-card before">
                <div class="cs-card-header">
                    <span class="cs-card-icon">❌</span>
                    <h3 class="cs-card-title">Pierwotny pomysł wykonawcy</h3>
                </div>
                <p class="cs-card-desc">Rury ułożone rzadko (15 cm) pod oknem HS. Aby pokryć straty 85 W/m², instalator musiał podnieść temperaturę zasilania pompy do 45°C. Dodatkowo jedna pętla miała aż 138 metrów.</p>
                
                <div class="cs-seo-details">
                    <h4>Skutki inżynieryjne błędu:</h4>
                    <ul>
                        <li>Opór hydrauliczny pętli przekroczył <strong>25 kPa</strong>.</li>
                        <li>Spadek przepływu na rotametrze <strong>poniżej 0,5 l/min</strong>.</li>
                        <li>Wymuszenie podbicia krzywej grzewczej <strong>do 45/40°C</strong>.</li>
                    </ul>
                </div>

                <div class="cs-static-svg-box">
                    <svg class="cs-svg-graphic" viewBox="0 0 200 100">
                        <rect x="20" y="10" width="160" height="10" fill="#94a3b8"/>
                        <line x1="20" y1="15" x2="180" y2="15" stroke="#ffffff" stroke-width="2"/>
                        <circle cx="50" cy="50" r="6" fill="#ef4444"/>
                        <circle cx="100" cy="50" r="6" fill="#ef4444"/>
                        <circle cx="150" cy="50" r="6" fill="#ef4444"/>
                        <text x="100" y="85" font-size="12" font-weight="bold" fill="#ef4444" text-anchor="middle">Zasilanie: 45°C | SCOP: 3.2</text>
                    </svg>
                </div>

                <div class="cs-card-solution">
                    Efekt: Drastyczny spadek sprawności pompy (SCOP 3.2), wysokie opory hydrauliczne pętli 138m i chłód bijący od strony szyb w zimie.
                </div>
            </div>

            <div class="cs-split-card after">
                <div class="cs-card-header">
                    <span class="cs-card-icon">✅</span>
                    <h3 class="cs-card-title">Inżynierska optymalizacja</h3>
                </div>
                <p class="cs-card-desc">Skróciliśmy skrajną pętlę do bezpiecznych 92 m i zagęściliśmy rury do 10 cm w pasie o szerokości 1 metra (strefa brzegowa pod oknem). Reszta salonu co 15 cm.</p>
                
                <div class="cs-seo-details">
                    <h4>Korekta projektowa przyniosła:</h4>
                    <ul>
                        <li>Redukcję oporów hydraulicznych <strong>poniżej 15 kPa</strong>.</li>
                        <li>Prawidłowe zrównoważenie sekcji na <strong>1,8 l/min</strong>.</li>
                        <li>Obniżenie krzywej grzewczej dla PC <strong>do 35/30°C</strong>.</li>
                    </ul>
                </div>

                <div class="cs-static-svg-box">
                    <svg class="cs-svg-graphic" viewBox="0 0 200 100">
                        <rect x="20" y="10" width="160" height="10" fill="#94a3b8"/>
                        <line x1="20" y1="15" x2="180" y2="15" stroke="#ffffff" stroke-width="2"/>
                        <circle cx="40" cy="40" r="6" fill="#10b981"/>
                        <circle cx="70" cy="40" r="6" fill="#10b981"/>
                        <circle cx="100" cy="40" r="6" fill="#10b981"/>
                        <circle cx="145" cy="50" r="6" fill="#10b981"/>
                        <text x="100" y="85" font-size="12" font-weight="bold" fill="#10b981" text-anchor="middle">Zasilanie: 35°C | SCOP: 4.15</text>
                    </svg>
                </div>

                <div class="cs-card-solution">
                    Efekt: Obniżenie zasilania do 35°C, wzrost SCOP do 4.15 i realna oszczędność 1450 PLN każdego roku. Równomierny rozkład ciepła.
                </div>
            </div>

        </div>
    </div>

</div>

<script>
(function() {
    const initCaseStudy = () => {
        // Zabezpieczenie domenowe (Skrypt nie usuwa już interakcji z kart, służy tylko do blokady)
        const domain = window.location.hostname;
        const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
        
        if (!allowedDomains.includes(domain)) {
            const container = document.getElementById('app-case-study');
            if (container) {
                container.innerHTML = `
                    <div style="padding: 40px 25px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px; border: 2px solid #ef4444;">
                        <span style="font-size: 40px; display: block; margin-bottom: 10px;">🔒</span>
                        <h3 style="margin: 0 0 10px 0; font-size: 20px;">Studium Przypadku Chronione</h3>
                        <p style="font-size: 14px; margin-bottom: 15px;">Ten panel to autorska własność Projekt-Ogrzewania.pl. Użycie nieautoryzowane.</p>
                    </div>
                `;
            }
        }
    };

    // Zabezpieczenie przed przedwczesnym odpaleniem skryptu
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', initCaseStudy);
    } else {
        initCaseStudy();
    }
})();
</script>



<style>
:root {
    --rk-quote-dark: #0f172a;
    --rk-quote-darker: #020617;
    --rk-quote-primary: #3b82f6; /* Hydronic Blue */
    --rk-quote-accent: #10b981; /* Emerald/Green for success */
    --rk-quote-warning: #f59e0b; /* Amber */
    --rk-quote-danger: #ef4444; /* Red */
    --rk-quote-bg: #ffffff;
    --rk-quote-surface: #f8fafc;
    --rk-quote-border: #cbd5e1;
    --rk-quote-text: #334155;
    --rk-quote-muted: #64748b;
    --rk-quote-shadow: 0 20px 40px -10px rgba(59, 130, 246, 0.15);
}

.rk-quote-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-quote-bg);
    border-radius: 24px;
    box-shadow: var(--rk-quote-shadow);
    border: 1px solid var(--rk-quote-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK I CYTAT --- */
.rk-quote-header {
    background: linear-gradient(135deg, var(--rk-quote-darker) 0%, var(--rk-quote-dark) 100%);
    padding: 50px 50px 40px;
    position: relative;
    border-bottom: 4px solid var(--rk-quote-primary);
    text-align: center;
}

.rk-quote-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(59, 130, 246, 0.2);
    color: #93c5fd;
    padding: 6px 16px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 25px;
    border: 1px solid rgba(147, 197, 253, 0.3);
}

.rk-quote-box {
    position: relative;
    max-width: 800px;
    margin: 0 auto;
}

.rk-quote-mark {
    font-size: 100px;
    color: rgba(255,255,255,0.05);
    position: absolute;
    top: -40px;
    left: -30px;
    line-height: 1;
    font-family: Georgia, serif;
    user-select: none;
}

.rk-quote-text {
    font-size: 24px;
    font-weight: 900;
    line-height: 1.5;
    color: #ffffff;
    margin: 0 0 20px 0;
    position: relative;
    z-index: 2;
}

.rk-quote-text span {
    color: #93c5fd;
}

/* --- INTERAKTYWNE PODSUMOWANIE --- */
.rk-quote-body {
    display: grid;
    grid-template-columns: 320px 1fr;
    background: #ffffff;
}

.rk-rules-list {
    padding: 30px;
    border-right: 1px solid var(--rk-quote-border);
    background: var(--rk-quote-surface);
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-rule-btn {
    background: #ffffff;
    border: 2px solid var(--rk-quote-border);
    padding: 15px;
    border-radius: 12px;
    text-align: left;
    cursor: pointer;
    transition: all 0.2s ease;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-rule-btn:hover {
    border-color: #94a3b8;
}

.rk-rule-btn.active {
    background: #eff6ff;
    border-color: var(--rk-quote-primary);
    box-shadow: 0 4px 10px rgba(59, 130, 246, 0.1);
}

.rk-rule-icon {
    width: 36px; height: 36px;
    background: #f1f5f9;
    border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    color: var(--rk-quote-muted);
    flex-shrink: 0;
    transition: 0.3s;
}

.rk-rule-btn.active .rk-rule-icon {
    background: var(--rk-quote-primary);
    color: #ffffff;
}

.rk-rule-text h3 {
    margin: 0 0 4px 0;
    font-size: 14px;
    font-weight: 900;
    color: var(--rk-quote-dark);
}

.rk-rule-text p {
    margin: 0;
    font-size: 12px;
    color: var(--rk-quote-text);
    font-weight: 600;
}

/* Panele Detali */
.rk-rule-details {
    padding: 40px;
    position: relative;
}

.rk-detail-panel {
    display: none;
}

.rk-detail-panel.active {
    display: flex;
    flex-direction: column;
    gap: 20px;
    animation: rkFadeIn 0.3s ease-out;
}

@keyframes rkFadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-detail-panel h4 {
    margin: 0;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-quote-dark);
}

.rk-detail-panel p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-quote-text);
}

.rk-detail-panel strong { color: var(--rk-quote-dark); }

.rk-detail-svg-box {
    width: 100%;
    height: 180px;
    background: var(--rk-quote-dark);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
}

.rk-detail-svg { width: 100%; max-width: 250px; height: auto; }

/* --- AUTOR --- */
.rk-quote-author {
    background: #ffffff;
    padding: 30px 50px;
    display: flex;
    align-items: center;
    gap: 25px;
    border-top: 1px solid var(--rk-quote-border);
}

.rk-author-photo {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    border: 3px solid var(--rk-quote-primary);
    box-shadow: 0 4px 15px rgba(59, 130, 246, 0.2);
    object-fit: cover;
    flex-shrink: 0;
}

.rk-author-info h4 {
    margin: 0 0 5px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-quote-dark);
}

.rk-author-info p {
    margin: 0 0 10px 0;
    font-size: 14px;
    color: var(--rk-quote-text);
    line-height: 1.5;
}

.rk-author-links {
    display: flex;
    gap: 15px;
}

.rk-author-links a {
    color: var(--rk-quote-primary);
    font-size: 13px;
    font-weight: 800;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    transition: color 0.2s;
}

.rk-author-links a:hover { color: #1e3a8a; text-decoration: underline; }

@media (max-width: 768px) {
    .rk-quote-header { padding: 40px 25px; }
    .rk-quote-text { font-size: 20px; }
    .rk-quote-body { grid-template-columns: 1fr; }
    .rk-rules-list { border-right: none; border-bottom: 1px solid var(--rk-quote-border); padding: 25px; }
    .rk-rule-details { padding: 25px; }
    .rk-quote-author { flex-direction: column; text-align: center; padding: 30px 25px; }
    .rk-author-links { justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-quote",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Ostateczne podsumowanie: Dlaczego kompleksowy kalkulator podłogówki to konieczność?",
    "description": "Podsumowanie eksperckie dotyczące projektowania ogrzewania podłogowego. Wpływ normy PN-EN 1264, rozstawu rur, i grubości wylewki na efektywność pomp ciepła i koszty instalacji.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-summary",
    "name": "Kluczowe Parametry i Limity Ogrzewania Podłogowego (Baza Wiedzy)",
    "description": "Zestawienie twardych norm inżynieryjnych podsumowujących artykuł o projektowaniu podłogówki.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kompleksowy kalkulator ogrzewania podłogowego",
      "projektowe obciążenie cieplne OZC",
      "rozstaw rur ogrzewania podłogowego",
      "przepływy na rotametrach",
      "długość pętli PEX"
    ],
    "measurementTechnique": "Synteza wniosków z normy PN-EN 1264, uwzględniająca przepływy, średnice i izolacyjność termiczną.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Maksymalna długość pętli PEX 16x2.0 mm wynosi 120 mb.",
        "Grubość wylewki cementowej to min. 45 mm nad rurą, izolacja EPS 100/200.",
        "Rozstaw rur pod pompę ciepła wynosi średnio 10-15 cm, aby uzyskać zasilanie 35°C."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-quote",
    "name": "Eksplorator Wniosków Projektowych",
    "description": "Interaktywny panel prezentujący 3 złote zasady inżynieryjne instalacji podłogowej, wzbogacony o schematy wektorowe.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-quote-container" id="rk-quote-app">
    
    <div class="rk-quote-header">
        <div class="rk-quote-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            Podsumowanie Eksperta
        </div>
        
        <div class="rk-quote-box">
            <div class="rk-quote-mark">&#8222;</div>
            <h2 class="rk-quote-text">
                Ogrzewanie podłogowe to nie jest zgadywanka. To czysta matematyka i fizyka budowli. Bez <span>kompleksowego kalkulatora</span> i obliczeń OZC ryzykujesz nie tylko tysiące złotych na etapie wykonawstwa, ale przede wszystkim komfort swojej rodziny przez kolejne dekady.
            </h2>
        </div>
    </div>

    <div class="rk-quote-body">
        
        <div class="rk-rules-list">
            <button class="rk-rule-btn active" data-target="rk-tab-ozc">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><path d="M12 8v4l3 3"></path></svg></div>
                <div class="rk-rule-text">
                    <h3>1. Bilans to Fundament</h3>
                    <p>Straty ciepła vs Zasilanie</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-target="rk-tab-loop">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M21.5 2v6h-6M21.34 15.57a10 10 0 1 1-.57-8.38l5.67-5.67"></path></svg></div>
                <div class="rk-rule-text">
                    <h3>2. Limity Hydrauliczne</h3>
                    <p>Max 120 m dla rury PEX 16</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-target="rk-tab-iso">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg></div>
                <div class="rk-rule-text">
                    <h3>3. Konstrukcja Płyty</h3>
                    <p>EPS 100 i Grubość Wylewki</p>
                </div>
            </button>
        </div>

        <div class="rk-rule-details">
            
            <div class="rk-detail-panel active" id="rk-tab-ozc">
                <h4>Projektowe Obciążenie Cieplne</h4>
                <p>Każdy budynek oddaje ciepło inaczej. <strong>Kompleksowy kalkulator ogrzewania podłogowego</strong> przetwarza parametry OZC, dobierając idealny <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" style="color:var(--rk-quote-primary);font-weight:bold;">rozstaw rur</a> (np. 10 cm przy oknach, 15 cm w salonie). Dzięki temu pompa ciepła może pracować na ekstremalnie niskim i tanim zasilaniu rzędu 35°C.</p>
                
                <div class="rk-detail-svg-box">
                    <svg class="rk-detail-svg" viewBox="0 0 200 100">
                        <rect x="50" y="20" width="100" height="60" fill="none" stroke="#64748b" stroke-width="4" rx="4"/>
                        <path d="M 30 50 L 50 50 M 150 50 L 170 50" stroke="#3b82f6" stroke-width="4" stroke-linecap="round"/>
                        <circle cx="100" cy="50" r="15" fill="#10b981"/>
                        <text x="100" y="54" font-size="12" font-weight="bold" fill="#0f172a" text-anchor="middle">OZC</text>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="rk-tab-loop">
                <h4>Blokada przepływów na rotametrach</h4>
                <p>Zignorowanie normy <strong>PN-EN 1264</strong> i ułożenie pętli dłuższej niż 120 metrów dla rury PEX 16&#215;2.0 kończy się tragedią. Opory hydrauliczne rosną powyżej 20 kPa, co uniemożliwia wyregulowanie <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/" style="color:var(--rk-quote-primary);font-weight:bold;">przepływów na rotametrach</a>. Efektem jest permanentnie zimna posadzka.</p>
                
                <div class="rk-detail-svg-box">
                    <svg class="rk-detail-svg" viewBox="0 0 200 100">
                        <path d="M 20 50 Q 50 20 80 50 T 140 50 T 180 50" fill="none" stroke="#3b82f6" stroke-width="6" stroke-linecap="round"/>
                        <line x1="20" y1="80" x2="180" y2="80" stroke="#ef4444" stroke-width="3"/>
                        <text x="100" y="72" font-size="12" font-weight="bold" fill="#ef4444" text-anchor="middle">MAX 120 mb</text>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="rk-tab-iso">
                <h4>Nośność i pękanie wylewek</h4>
                <p>Ułożenie rur na tanim styropianie fasadowym (EPS 70 zamiast twardego EPS 100/200) to błąd wykonawczy. Pod wpływem ciężaru wylewki i mebli, warstwa izolacji ulega ściśnięciu. Dochodzi do zerwania taśm dylatacyjnych, a grubość jastrychu (min. 45 mm nad rurą) traci swoją strukturę nośną.</p>
                
                <div class="rk-detail-svg-box">
                    <svg class="rk-detail-svg" viewBox="0 0 200 100">
                        <rect x="20" y="20" width="160" height="30" fill="#cbd5e1"/>
                        <rect x="20" y="55" width="160" height="25" fill="#64748b"/>
                        <circle cx="50" cy="35" r="5" fill="#3b82f6"/><circle cx="100" cy="35" r="5" fill="#3b82f6"/><circle cx="150" cy="35" r="5" fill="#3b82f6"/>
                        <text x="100" y="72" font-size="11" font-weight="bold" fill="#ffffff" text-anchor="middle">EPS 100 (Twardy)</text>
                    </svg>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-quote-author">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Inżynier HVAC" class="rk-author-photo" loading="lazy">
        <div class="rk-author-info">
            <h4>Robert Kucharski</h4>
            <p>Główny audytor i projektant HVAC na portalu Projekt-Ogrzewania.pl. Setki zaprojektowanych instalacji i godzin spędzonych na placach budowy przekuwam w twardą, matematyczną wiedzę dla inwestorów.</p>
            <div class="rk-author-links">
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
                    LinkedIn
                </a>
                <a href="https://www.facebook.com/robert.kucharski.budowa.bez.sciemy" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.469h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.469h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>
                    Facebook
                </a>
            </div>
        </div>
    </div>

</div>

<script>
(function() {
    const initApp = () => {
        // Zabezpieczenie Domenowe - DOMAIN LOCK
        const domain = window.location.hostname;
        const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
        
        if (!allowedDomains.includes(domain)) {
            const container = document.getElementById('rk-quote-app');
            if (container) {
                container.innerHTML = `
                    <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:24px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                        <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                        BŁĄD LICENCJI:<br>Kontener informacyjny należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na nieautoryzowanej domenie jest zabronione prawem.
                    </div>
                `;
                return;
            }
        }

        // Logika zakładek
        const btns = document.querySelectorAll('.rk-rule-btn');
        const panels = document.querySelectorAll('.rk-detail-panel');

        btns.forEach(btn => {
            btn.addEventListener('click', function(e) {
                const targetId = e.currentTarget.getAttribute('data-target');
                
                // Reset
                btns.forEach(b => b.classList.remove('active'));
                panels.forEach(p => p.classList.remove('active'));
                
                // Aktywacja
                e.currentTarget.classList.add('active');
                const targetPanel = document.getElementById(targetId);
                if(targetPanel) {
                    targetPanel.classList.add('active');
                }
            });
        });
    };

    // Zabezpieczenie przed opóźnionym ładowaniem (WordPress/Elementor)
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', initApp);
    } else {
        initApp();
    }
})();
</script>



<style>
:root {
    --rk-faq2-dark: #1e293b;
    --rk-faq2-card: #ffffff;
    --rk-faq2-brand: #0ea5e9; /* Ekspercki błękit */
    --rk-faq2-brand-light: #e0f2fe;
    --rk-faq2-accent: #f59e0b; /* Bursztyn dla kontrastu / ciepła */
    --rk-faq2-alert: #ef4444; /* Czerwień błędów */
    --rk-faq2-bg: #f8fafc;
    --rk-faq2-border: #cbd5e1;
    --rk-faq2-text: #334155;
    --rk-faq2-muted: #64748b;
}

.rk-faq2-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    background: var(--rk-faq2-card);
    border-radius: 20px;
    box-shadow: 0 20px 40px -10px rgba(14, 165, 233, 0.1);
    border: 1px solid var(--rk-faq2-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-faq2-header {
    background: linear-gradient(135deg, var(--rk-faq2-dark) 0%, #0f172a 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 5px solid var(--rk-faq2-brand);
}

.rk-faq2-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(14, 165, 233, 0.2);
    color: #38bdf8;
    padding: 6px 16px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 15px;
    border: 1px solid rgba(56, 189, 248, 0.3);
}

.rk-faq2-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0;
}

.rk-faq2-title span { color: #bae6fd; }

/* Sekcja Akordeonu */
.rk-faq2-interactive {
    padding: 35px 45px;
    background: var(--rk-faq2-bg);
}

.rk-faq2-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-faq2-item {
    background: var(--rk-faq2-card);
    border: 1px solid var(--rk-faq2-border);
    border-left: 4px solid var(--rk-faq2-border);
    border-radius: 12px;
    overflow: hidden;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-faq2-item.active {
    border-color: var(--rk-faq2-brand);
    border-left-width: 6px;
    box-shadow: 0 10px 20px -5px rgba(14, 165, 233, 0.15);
}

/* Przycisk Pytania */
.rk-faq2-question {
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    padding: 20px 25px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-faq2-dark);
    transition: background 0.3s;
}

.rk-faq2-question:hover {
    background: #f1f5f9;
}

.rk-faq2-item.active .rk-faq2-question {
    background: var(--rk-faq2-brand-light);
    color: #0369a1;
}

.rk-faq2-icon {
    flex-shrink: 0;
    width: 36px;
    height: 36px;
    border-radius: 8px;
    background: #f1f5f9;
    color: var(--rk-faq2-muted);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq2-item.active .rk-faq2-icon {
    background: var(--rk-faq2-brand);
    color: #ffffff;
    transform: rotate(45deg); /* Zmiana plusa w krzyżyk */
}

/* Kontener Odpowiedzi */
.rk-faq2-answer-wrapper {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq2-item.active .rk-faq2-answer-wrapper {
    grid-template-rows: 1fr;
}

.rk-faq2-answer-inner {
    overflow: hidden;
}

/* Wnętrze Odpowiedzi */
.rk-faq2-content {
    padding: 20px 25px 25px;
    border-top: 1px dashed var(--rk-faq2-border);
    display: grid;
    grid-template-columns: 1fr 220px;
    gap: 30px;
    align-items: center;
}

.rk-faq2-text {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-faq2-text);
}

.rk-faq2-text strong {
    font-weight: 800;
    color: var(--rk-faq2-dark);
    background: linear-gradient(120deg, rgba(14, 165, 233, 0.1) 0%, rgba(14, 165, 233, 0.1) 100%);
    background-repeat: no-repeat;
    background-size: 100% 30%;
    background-position: 0 80%;
}

.rk-link {
    color: var(--rk-faq2-brand);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: color 0.3s;
}

.rk-link:hover { color: #0284c7; }

/* Wizualizacje SVG */
.rk-faq2-visual {
    background: #f8fafc;
    border-radius: 12px;
    height: 160px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px solid #e2e8f0;
    position: relative;
    overflow: hidden;
}

.rk-svg-stage { width: 100%; height: 100%; }

/* --- Animacje SVG zależne od .active --- */

/* 1. Mieszacz (Zawór 3-drogowy) */
.anim-mix-hot { stroke-dasharray: 8; animation: flowHot 2s linear infinite; opacity: 0; stroke: #ef4444; }
.anim-mix-cold { stroke-dasharray: 8; animation: flowCold 2s linear infinite; opacity: 0; stroke: #3b82f6; }
.anim-mix-warm { stroke-dasharray: 8; animation: flowWarm 2s linear infinite; opacity: 0; stroke: #f59e0b; }
.rk-faq2-item.active .anim-mix-hot, .rk-faq2-item.active .anim-mix-cold, .rk-faq2-item.active .anim-mix-warm { opacity: 1; }
@keyframes flowHot { to { stroke-dashoffset: -16; } }
@keyframes flowCold { to { stroke-dashoffset: -16; } }
@keyframes flowWarm { to { stroke-dashoffset: 16; } }

/* 2. Glikol vs Woda Demi */
.anim-water-demi { transform: scaleY(0); transform-origin: bottom; transition: transform 1s 0.3s ease-out; fill: #38bdf8; }
.rk-faq2-item.active .anim-water-demi { transform: scaleY(1); }
.anim-bubbles circle { opacity: 0; animation: floatUp 2s infinite ease-in; }
.rk-faq2-item.active .anim-bubbles circle:nth-child(1) { animation-delay: 0.5s; }
.rk-faq2-item.active .anim-bubbles circle:nth-child(2) { animation-delay: 1.2s; }
.rk-faq2-item.active .anim-bubbles circle:nth-child(3) { animation-delay: 0.8s; }
@keyframes floatUp { 0% { opacity: 0; transform: translateY(10px); } 50% { opacity: 1; } 100% { opacity: 0; transform: translateY(-20px); } }

/* 3. Długa Pętla (Brak Przepływu) */
.anim-long-pipe { stroke-dasharray: 200; stroke-dashoffset: 200; stroke: #ef4444; transition: stroke-dashoffset 2s 0.3s ease-out; }
.rk-faq2-item.active .anim-long-pipe { stroke-dashoffset: 0; }
.anim-block { opacity: 0; transition: opacity 0.3s 2.3s; }
.rk-faq2-item.active .anim-block { opacity: 1; }

/* 4. Rozstaw Łazienka */
.anim-dense-pipe { stroke-dasharray: 300; stroke-dashoffset: 300; transition: stroke-dashoffset 1.5s 0.3s ease-out; }
.rk-faq2-item.active .anim-dense-pipe { stroke-dashoffset: 0; }
.anim-heat-wave path { opacity: 0; animation: radiate 1.5s infinite alternate; }
.rk-faq2-item.active .anim-heat-wave path:nth-child(1) { animation-delay: 0.8s; }
.rk-faq2-item.active .anim-heat-wave path:nth-child(2) { animation-delay: 1.0s; }
.rk-faq2-item.active .anim-heat-wave path:nth-child(3) { animation-delay: 1.2s; }
@keyframes radiate { from { opacity: 0; transform: translateY(0); } to { opacity: 0.6; transform: translateY(-5px); stroke: #ef4444; } }

/* 5. Wygrzewanie (28 dni) */
.anim-calendar-leaf { transform-origin: top; transition: transform 0.5s 0.3s, opacity 0.5s 0.3s; }
.rk-faq2-item.active .anim-calendar-leaf { transform: rotateX(-90deg); opacity: 0; }
.anim-crack { stroke-dasharray: 50; stroke-dashoffset: 50; transition: stroke-dashoffset 0.5s 0.8s; }
.rk-faq2-item.active .anim-crack { stroke-dashoffset: 0; }

@media (max-width: 768px) {
    .rk-faq2-header, .rk-faq2-interactive { padding: 30px 20px; }
    .rk-faq2-title { font-size: 24px; }
    .rk-faq2-content { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-faq2-visual { height: 140px; max-width: 250px; margin: 0 auto; width: 100%; }
    .rk-faq2-question { font-size: 15px; padding: 16px 20px; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania projektowe",
    "description": "Zbiór kluczowych pytań inwestorskich o łączenie podłogówki z grzejnikami, rodzaj zładu (woda vs glikol), graniczne długości pętli oraz proces wygrzewania posadzki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-23",
    "dateModified": "2026-05-23"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy można połączyć ogrzewanie podłogowe bezpośrednio z tradycyjnymi grzejnikami w jednym obiegu?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Bezpośrednie połączenie jest niedopuszczalne, ponieważ grzejniki wymagają wysokich temperatur zasilania (55–75°C), które zniszczyłyby posadzkę podłogówki. Konieczne jest zastosowanie układu rozdzielczego z niezależną grupą pompowo-mieszaczową wyposażoną w trójdrogowy zawór termostatyczny obniżający parametr dla podłogówki do bezpiecznych 35–40°C."
        }
      },
      {
        "@type": "Question",
        "name": "Czym najlepiej napełnić instalację ogrzewania podłogowego – zwykłą wodą z kranu czy glikolem?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Instalację w domach całorocznych należy napełnić wodą demineralizowaną uzdatnioną inhibitorem korozji, który chroni układ przed odkładaniem się kamienia kotłowego i szlamu. Glikol stosuje się wyłącznie w domkach letniskowych lub układach narażonych na zamarzanie, pamiętając, że zmniejsza on sprawność wymiany ciepła o ok. 10–15% z uwagi na wyższą lepkość kinematiczną."
        }
      },
      {
        "@type": "Question",
        "name": "Co się stanie, jeśli wykonawca ułoży zbyt długą pętlę podłogówki, np. 160 metrów rury 16 mm?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Taka pętla wygeneruje opory hydrauliczne drastycznie przekraczające możliwości standardowej pompy obiegowej, przez co przepływ wody spadnie niemal do zera. W efekcie początek pętli przy rozdzielaczu będzie ciepły, a reszta pomieszczenia pozostanie całkowicie zimna, co wymaga wpięcia dodatkowej pompy wspomagającej lub uciążliwego kucia posadzki w celu podziału obwodu."
        }
      },
      {
        "@type": "Question",
        "name": "Dlaczego w łazienkach zawsze projektuje się gęstszy rozstaw rur (co 10 cm) niż w pokojach?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Łazienki charakteryzują się wyższą temperaturą obliczeniową wnętrza (24°C zamiast 20°C) przy jednoczesnym ograniczeniu wolnej powierzchni posadzki przez brodziki, wanny i miski WC. Gęstszy rozstaw rur pozwala wygenerować wyższą gęstość strumienia cieplnego z jednego metra kwadratowego i pokryć zapotrzebowanie na ciepło mimo małej powierzchni grzewczej."
        }
      },
      {
        "@type": "Question",
        "name": "Po jakim czasie od zalania wylewki betonowej można uruchomić ogrzewanie podłogowe i zacząć proces wygrzewania?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Proces wygrzewania jastrychu cementowego można rozpocząć najwcześniej po upływie 28 dni od jego wylania (dla wylewek anhydrytowych czas ten skraca się do 7 dni). Zbyt wczesne podanie temperatury spowoduje gwałtowne odparowanie wody niezbędnej do procesu hydratacji cementu, co doprowadzi do drastycznego spadku wytrzymałości mechanicznej posadzki i jej nieodwracalnego spękania."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-faq",
    "name": "Wytyczne Projektowo-Wykonawcze Ogrzewania Podłogowego (Baza Wiedzy)",
    "description": "Kompilacja normatywnych wytycznych instalacyjnych (rozstawy w łazienkach, max długości pętli, proces hydratacji jastrychu) niezbędnych przy obliczeniach hydraulicznych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": { "@type": "Person", "name": "Robert Kucharski" },
    "keywords": [
      "połączenie podłogówki z grzejnikami",
      "woda demineralizowana czy glikol",
      "zbyt długa pętla podłogówki 160m",
      "rozstaw rur w łazience 10 cm",
      "wygrzewanie wylewki betonowej 28 dni"
    ],
    "measurementTechnique": "Określenie parametrów granicznych na podstawie norm PN-EN 1264, PN-EN 12831 oraz wymagań chemii budowlanej (hydratacja cementu).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wymóg stosowania zaworu 3-drogowego przy łączeniu z grzejnikami (redukcja 75°C -> 35°C).",
        "Opory hydrauliczne długiej pętli >120m blokują przepływ masowy.",
        "Proces dojrzewania betonu wymaga minimum 28 dni przed startem wygrzewania."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-faq",
    "name": "Interaktywna Baza Błędów Wykonawczych",
    "description": "Narzędzie FAQ z wbudowanymi animacjami SVG obrazującymi skutki błędów instalacyjnych: brak mieszacza, zbyt długa pętla hydrauliczna czy przedwczesne wygrzewanie betonu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": { "@type": "Person", "name": "Robert Kucharski" }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA
=========================================== -->
<div class="rk-faq2-container" id="rk-faq2-app">
    
    <div class="rk-faq2-header">
        <div class="rk-faq2-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Baza Wiedzy Inżyniera
        </div>
        <h2 class="rk-faq2-title">FAQ – <span>Najczęściej zadawane pytania</span></h2>
    </div>

    <div class="rk-faq2-interactive">
        <div class="rk-faq2-list">
            
            <!-- Pytanie 1: Podłogówka + Grzejniki -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>1. Czy można połączyć podłogówkę bezpośrednio z grzejnikami?</span>
                    <div class="rk-faq2-icon">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                    </div>
                </button>
                <div class="rk-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Bezpośrednie połączenie jest <strong>niedopuszczalne</strong>. Grzejniki wymagają wysokich temperatur zasilania (55–75°C), które zniszczyłyby posadzkę podłogówki (pękanie wylewki). Konieczne jest zastosowanie układu rozdzielczego z niezależną grupą pompowo-mieszaczową wyposażoną w <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/" class="rk-link">zawór termostatyczny</a> obniżający parametr do bezpiecznych 35–40°C.
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-svg-stage" viewBox="0 0 120 80">
                                    <path d="M 10 40 L 40 40" stroke="#ef4444" stroke-width="6" stroke-linecap="round"></path>
                                    <path d="M 40 70 L 40 50" stroke="#3b82f6" stroke-width="6" stroke-linecap="round"></path>
                                    <path d="M 40 40 L 100 40" stroke="#f59e0b" stroke-width="6" stroke-linecap="round"></path>
                                    <!-- Animowane przepływy -->
                                    <path d="M 10 40 L 35 40" stroke-width="3" stroke-linecap="round" class="anim-mix-hot"></path>
                                    <path d="M 40 70 L 40 45" stroke-width="3" stroke-linecap="round" class="anim-mix-cold"></path>
                                    <path d="M 45 40 L 100 40" stroke-width="3" stroke-linecap="round" class="anim-mix-warm"></path>
                                    <circle cx="40" cy="40" r="10" fill="#1e293b"></circle>
                                    <text x="40" y="44" fill="#fff" font-size="10" text-anchor="middle" font-weight="bold">M</text>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 2: Woda vs Glikol -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>2. Czym napełnić instalację – wodą z kranu czy glikolem?</span>
                    <div class="rk-faq2-icon">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                    </div>
                </button>
                <div class="rk-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Instalację w domach całorocznych należy napełnić <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-z-inhibitorem-korozji-do-ogrzewania-podlogowego/" class="rk-link">wodą demineralizowaną z inhibitorem korozji</a>. Chroni to układ przed odkładaniem się kamienia i szlamu. <a href="https://projekt-ogrzewania.pl/glikol-w-ogrzewaniu-podlogowym-prawda-i-mity-ktore-musi-znac-kazdy-inwestor/" class="rk-link">Glikol</a> stosuje się wyłącznie w układach narażonych na zamarzanie (domki letniskowe), pamiętając, że zmniejsza on sprawność wymiany ciepła o ok. 10–15% ze względu na gęstość.
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-svg-stage" viewBox="0 0 120 80">
                                    <path d="M 40 20 L 40 70 L 80 70 L 80 20" fill="none" stroke="#94a3b8" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path>
                                    <rect x="42" y="30" width="36" height="38" class="anim-water-demi"></rect>
                                    <g class="anim-bubbles" fill="#ffffff">
                                        <circle cx="50" cy="60" r="2"></circle>
                                        <circle cx="60" cy="55" r="3"></circle>
                                        <circle cx="70" cy="65" r="1.5"></circle>
                                    </g>
                                    <text x="60" y="50" fill="#fff" font-size="12" text-anchor="middle" font-weight="bold">H₂O+</text>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 3: Za długa pętla -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>3. Co się stanie, jeśli pętla wyniesie np. 160 metrów?</span>
                    <div class="rk-faq2-icon">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                    </div>
                </button>
                <div class="rk-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Taka <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/" class="rk-link">za długa pętla</a> wygeneruje opory hydrauliczne drastycznie przekraczające możliwości standardowej pompy obiegowej. Przepływ wody spadnie niemal do zera. W efekcie początek pętli przy rozdzielaczu będzie ciepły, a <strong>reszta pomieszczenia pozostanie całkowicie zimna</strong> (upośledzenie hydrauliczne).
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-svg-stage" viewBox="0 0 120 80">
                                    <path d="M 10 20 Q 30 20, 30 40 T 50 60 T 70 40 T 90 60 T 110 40" fill="none" stroke="#e2e8f0" stroke-width="6" stroke-linecap="round"></path>
                                    <path d="M 10 20 Q 30 20, 30 40 T 50 60" fill="none" stroke-width="6" stroke-linecap="round" class="anim-long-pipe"></path>
                                    <circle cx="50" cy="60" r="8" fill="#ef4444" class="anim-block"></circle>
                                    <line x1="45" y1="55" x2="55" y2="65" stroke="#fff" stroke-width="2" class="anim-block"></line>
                                    <line x1="55" y1="55" x2="45" y2="65" stroke="#fff" stroke-width="2" class="anim-block"></line>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 4: Łazienka 10 cm -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>4. Dlaczego w łazienkach zawsze projektuje się rozstaw rur co 10 cm?</span>
                    <div class="rk-faq2-icon">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                    </div>
                </button>
                <div class="rk-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Łazienki charakteryzują się wyższą temperaturą projektową (24°C zamiast 20°C) przy <strong>mocno ograniczonej wolnej powierzchni</strong> posadzki (odchodzą brodziki, wanny, zabudowy WC). Gęstszy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/" class="rk-link">rozstaw rur (co 10 cm)</a> pozwala wygenerować wyższą gęstość strumienia cieplnego z 1 m² i pokryć straty ciepła przy małej powierzchni grzewczej.
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-svg-stage" viewBox="0 0 120 80">
                                    <path class="anim-dense-pipe" d="M 20 60 L 100 60 M 20 50 L 100 50 M 20 40 L 100 40" stroke="#f59e0b" stroke-width="4" stroke-linecap="round"></path>
                                    <g class="anim-heat-wave" stroke="#f59e0b" stroke-width="2" stroke-linecap="round" fill="none">
                                        <path d="M 40 30 Q 45 25, 50 30 T 60 30"></path>
                                        <path d="M 60 25 Q 65 20, 70 25 T 80 25"></path>
                                        <path d="M 80 30 Q 85 25, 90 30 T 100 30"></path>
                                    </g>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 5: Wygrzewanie betonu -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>5. Po jakim czasie od zalania wylewki można zacząć ją wygrzewać?</span>
                    <div class="rk-faq2-icon">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                    </div>
                </button>
                <div class="rk-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Wygrzewanie klasycznego jastrychu cementowego można rozpocząć <strong>najwcześniej po upływie 28 dni</strong> od jego wylania. Zbyt wczesne podanie temperatury spowoduje gwałtowne odparowanie wody niezbędnej do hydratacji cementu. Skutkuje to drastycznym spadkiem wytrzymałości mechanicznej posadzki i jej <strong>nieodwracalnym spękaniem</strong> (tzw. zjawisko &#8222;miski&#8221;).
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-svg-stage" viewBox="0 0 120 80">
                                    <rect x="40" y="20" width="40" height="40" rx="4" fill="#e2e8f0" stroke="#94a3b8" stroke-width="3"></rect>
                                    <path d="M 45 15 L 45 25 M 75 15 L 75 25" stroke="#ef4444" stroke-width="4" stroke-linecap="round"></path>
                                    <text x="60" y="45" font-size="16" font-weight="bold" fill="#334155" text-anchor="middle">28</text>
                                    <rect class="anim-calendar-leaf" x="40" y="20" width="40" height="20" fill="#cbd5e1" rx="4"></rect>
                                    <!-- Pęknięcie wylewki -->
                                    <path class="anim-crack" d="M 10 70 L 30 65 L 45 75 L 60 60" fill="none" stroke="#1e293b" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-faq2-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#1e293b; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener FAQ należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na tej domenie jest nieautoryzowane.
                </div>
            `;
            return;
        }
    }

    // Logika Akordeonu
    const faqItems = document.querySelectorAll('.rk-faq2-item');

    faqItems.forEach(item => {
        const btn = item.querySelector('.rk-faq2-question');
        btn.addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            
            // Zamykamy wszystkie
            faqItems.forEach(i => i.classList.remove('active'));
            
            // Otwieramy kliknięty, jeśli nie był aktywny
            if (!isActive) {
                item.classList.add('active');
            }
        });
    });
    
    // Otwórz pierwszy element po załadowaniu
    if(faqItems.length > 0) {
        faqItems[0].classList.add('active');
    }
});
</script>



<style>
:root {
    --rk-base-dark: #1e293b;
    --rk-base-darker: #0f172a;
    --rk-base-blue: #0ea5e9;
    --rk-base-light: #f8fafc;
    --rk-base-border: #e2e8f0;
    --rk-pro-green: #10b981;
    --rk-pro-green-bg: #ecfdf5;
    --rk-amateur-red: #ef4444;
    --rk-amateur-red-bg: #fef2f2;
    --rk-text-main: #334155;
    --rk-text-muted: #64748b;
    --rk-card-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);
}

.rk-summary-dashboard {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(14, 165, 233, 0.15);
    border: 1px solid var(--rk-base-blue);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-dash-header {
    padding: 45px 50px;
    background: linear-gradient(135deg, var(--rk-base-darker) 0%, var(--rk-base-dark) 100%);
    color: #ffffff;
    position: relative;
}

.rk-dash-header::after {
    content: '';
    position: absolute;
    bottom: 0; left: 0; right: 0;
    height: 4px;
    background: linear-gradient(90deg, var(--rk-base-blue), var(--rk-pro-green));
}

.rk-dash-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 20px 0;
    line-height: 1.3;
    color: #ffffff;
}

.rk-dash-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-dash-lead a {
    color: #7dd3fc;
    text-decoration: underline;
    text-underline-offset: 3px;
    font-weight: 600;
}

/* --- INTERAKTYWNY PANEL --- */
.rk-dash-interactive {
    padding: 40px 50px;
    background: var(--rk-base-light);
}

.rk-dash-interactive h3 {
    text-align: center;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-base-darker);
    margin: 0 0 25px 0;
}

/* Przełącznik (Toggle Switch) */
.rk-toggle-container {
    display: flex;
    justify-content: center;
    margin-bottom: 40px;
}

.rk-master-switch {
    position: relative;
    display: flex;
    background: #e2e8f0;
    border-radius: 999px;
    padding: 6px;
    width: 100%;
    max-width: 500px;
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.05);
}

.rk-switch-btn {
    flex: 1;
    padding: 14px 20px;
    font-size: 15px;
    font-weight: 800;
    text-align: center;
    color: var(--rk-text-muted);
    cursor: pointer;
    z-index: 2;
    transition: color 0.3s ease;
    border-radius: 999px;
    user-select: none;
}

.rk-switch-btn.active {
    color: #ffffff;
}

.rk-switch-glider {
    position: absolute;
    top: 6px;
    bottom: 6px;
    left: 6px;
    width: calc(50% - 6px);
    background: var(--rk-pro-green);
    border-radius: 999px;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.4s;
    z-index: 1;
    box-shadow: 0 4px 10px rgba(16, 185, 129, 0.3);
}

.state-amateur .rk-switch-glider {
    transform: translateX(100%);
    background: var(--rk-amateur-red);
    box-shadow: 0 4px 10px rgba(239, 68, 68, 0.3);
}

/* Kafelki z parametrami (Grid) */
.rk-metrics-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 25px;
    margin-bottom: 40px;
}

.rk-metric-card {
    background: #ffffff;
    padding: 25px 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-base-border);
    box-shadow: var(--rk-card-shadow);
    text-align: center;
    transition: all 0.4s ease;
    position: relative;
    overflow: hidden;
}

.rk-metric-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 4px;
    background: var(--rk-base-border);
    transition: background-color 0.4s;
}

.state-pro .rk-metric-card::before { background: var(--rk-pro-green); }
.state-amateur .rk-metric-card::before { background: var(--rk-amateur-red); }

.rk-metric-icon {
    margin-bottom: 15px;
    height: 45px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-metric-card h4 {
    margin: 0 0 10px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-base-darker);
}

.rk-metric-val {
    font-size: 14px;
    font-weight: 600;
    color: var(--rk-text-muted);
    min-height: 42px;
    transition: color 0.3s;
}

.state-pro .rk-val-pro { display: block; color: var(--rk-pro-green); }
.state-pro .rk-val-amateur { display: none; }
.state-amateur .rk-val-pro { display: none; }
.state-amateur .rk-val-amateur { display: block; color: var(--rk-amateur-red); }

/* SVG Dashboard */
.rk-svg-dashboard {
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px dashed var(--rk-base-border);
    display: flex;
    justify-content: center;
    align-items: center;
}

.rk-main-svg {
    width: 100%;
    max-width: 600px;
    height: auto;
}

/* Animacje SVG */
.svg-eps-block { transform-origin: 50% 80%; transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1); fill: #cbd5e1; }
.state-amateur .svg-eps-block { transform: scaleY(0.6); fill: #fca5a5; }

.svg-pipe-flow { stroke-dasharray: 12; animation: pipeFlow 2s linear infinite; stroke: var(--rk-base-blue); transition: stroke 0.5s; }
.state-amateur .svg-pipe-flow { stroke: var(--rk-amateur-red); animation: pipeFlow 6s linear infinite; } /* Wolniejszy przepływ */

.svg-gauge-needle { transform-origin: 250px 50px; transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1); stroke: var(--rk-pro-green); }
.state-amateur .svg-gauge-needle { transform: rotate(135deg); stroke: var(--rk-amateur-red); }

.svg-wallet-money { transform-origin: center; transition: all 0.5s; opacity: 1; transform: translateY(0); }
.state-amateur .svg-wallet-money { opacity: 0; transform: translateY(20px); }

@keyframes pipeFlow { to { stroke-dashoffset: -24; } }

/* CTA */
.rk-dash-footer {
    padding: 35px 50px;
    background: #ffffff;
    text-align: center;
    border-top: 1px solid var(--rk-base-border);
}

.rk-btn-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-base-darker);
    color: #ffffff;
    font-size: 16px;
    font-weight: 800;
    padding: 18px 36px;
    border-radius: 14px;
    text-decoration: none;
    box-shadow: 0 10px 20px -5px rgba(15, 23, 42, 0.3);
    transition: all 0.3s;
    border: 2px solid transparent;
}

.rk-btn-action:hover {
    background: var(--rk-base-blue);
    transform: translateY(-4px);
    box-shadow: 0 15px 25px -5px rgba(14, 165, 233, 0.4);
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-dash-header, .rk-dash-interactive, .rk-dash-footer { padding: 30px 25px; }
    .rk-dash-header h2 { font-size: 24px; }
    .rk-metrics-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-switch-btn { font-size: 14px; padding: 12px 15px; }
    .rk-btn-action { width: 100%; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Kompleksowy Kalkulator Ogrzewania Podłogowego – Podsumowanie",
    "description": "Precyzyjne wyliczenia termiczno-hydrauliczne instalacji płaszczyznowej (EPS 100, limit pętli 120 m, zład wodny) to gwarancja efektywności pomp ciepła i uniknięcia kosztownych awarii.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-03-05",
    "dateModified": "2026-05-23"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset",
    "name": "Wskaźniki Efektywności Termiczno-Hydraulicznej Ogrzewania Podłogowego",
    "description": "Zestawienie porównawcze weryfikujące wpływ kluczowych decyzji instalacyjnych (dobór styropianu, długość pętli, zład wodny) na efektywność systemu grzewczego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kompleksowy kalkulator ogrzewania podłogowego",
      "obliczenia termiczno-hydrauliczne",
      "styropian podłogowy eps 100",
      "długość pętli rur pert pex",
      "objętość zładu wodnego naczynie wzbiorcze"
    ],
    "measurementTechnique": "Analiza przepływów hydraulicznych i strat nośności izolacji w oparciu o wytyczne normy PN-EN 1264 oraz symulacje oporów liniowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Klasa styropianu: EPS 100 zapobiega pękaniu wylewek w porównaniu do EPS 70.",
        "Limit długości pętli: Maksymalnie 120 m dla rury 16x2 mm gwarantuje poprawne przepływy.",
        "Pojemność zładu: Determinuje dobór właściwego naczynia przeponowego i zabezpiecza przed skokami ciśnienia."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp",
    "name": "Symulator Kalkulacji Ogrzewania Podłogowego",
    "description": "Interaktywny symulator decyzji instalacyjnych, pokazujący w czasie rzeczywistym parametry hydrauliczne i finansowe wynikające z poprawnego projektowania (OZC) w kontrze do montażu 'na oko'.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA
=========================================== -->
<div class="rk-summary-dashboard" id="rk-dash-app">
    
    <!-- Nagłówek -->
    <div class="rk-dash-header">
        <h2>Kompleksowy Kalkulator Ogrzewania Podłogowego – Podsumowanie</h2>
        <p class="rk-dash-lead">
            <strong>Kompleksowe obliczenia termiczno-hydrauliczne</strong> instalacji płaszczyznowej to fundament energooszczędnego i bezawaryjnego domu. Każda decyzja projektowa – od wyboru odpowiedniej klasy <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">styropianu podłogowego (EPS 100)</a>, przez restrykcyjne trzymanie się limitu <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">120 m długości pętli rur</a> PERT/PEX, aż po precyzyjne wyliczenie objętości zładu wodnego pod kątem <a href="https://projekt-ogrzewania.pl/naczynie-wzbiorcze/">naczynia wzbiorczego</a> – rzutuje bezpośrednio na efektywność pracy nowoczesnych źródeł ciepła, zwłaszcza pomp ciepła. Samodzielne szacowanie parametrów na budowie to prosta droga do awarii.
        </p>
    </div>

    <!-- Panel Interaktywny -->
    <div class="rk-dash-interactive state-pro" id="rk-interactive-board">
        <h3>Symulacja Decyzji Instalacyjnych</h3>
        
        <!-- Przełącznik -->
        <div class="rk-toggle-container">
            <div class="rk-master-switch">
                <div class="rk-switch-glider"></div>
                <div class="rk-switch-btn active" data-mode="pro">Kalkulator i Projekt</div>
                <div class="rk-switch-btn" data-mode="amateur">Szacowanie &#8222;Na oko&#8221;</div>
            </div>
        </div>

        <!-- Kafelki Parametrów -->
        <div class="rk-metrics-grid">
            <div class="rk-metric-card">
                <div class="rk-metric-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="var(--rk-base-darker)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line></svg>
                </div>
                <h4>Izolacja Podłoża</h4>
                <div class="rk-metric-val">
                    <span class="rk-val-pro">EPS 100/200<br>Brak osiadania wylewki</span>
                    <span class="rk-val-amateur">EPS 70 (Fasada)<br>Pękanie płytek i dylatacji</span>
                </div>
            </div>
            
            <div class="rk-metric-card">
                <div class="rk-metric-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="var(--rk-base-darker)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 3a3 3 0 0 0-3 3v12a3 3 0 0 1-3 3 3 3 0 0 1-3-3 3 3 0 0 1-3-3V6a3 3 0 0 0-3-3"></path><path d="M15 3a3 3 0 0 1 3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0 3-3V6a3 3 0 0 1 3-3"></path></svg>
                </div>
                <h4>Długość Pętli</h4>
                <div class="rk-metric-val">
                    <span class="rk-val-pro">Max 120 m (Rura 16mm)<br>Niskie opory hydrauliczne</span>
                    <span class="rk-val-amateur">&gt; 150 m<br>Zblokowany przepływ (0 l/min)</span>
                </div>
            </div>

            <div class="rk-metric-card">
                <div class="rk-metric-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="var(--rk-base-darker)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path><path d="M2 12h20"></path></svg>
                </div>
                <h4>Zład Wodny</h4>
                <div class="rk-metric-val">
                    <span class="rk-val-pro">Dokładnie obliczony<br>Stabilne ciśnienie układu</span>
                    <span class="rk-val-amateur">Zbyt małe naczynie<br>Wyrzuty wody z zaworu</span>
                </div>
            </div>
        </div>

        <!-- SVG Animowany Dashboard -->
        <div class="rk-svg-dashboard">
            <svg class="rk-main-svg" viewBox="0 0 400 120" xmlns="http://www.w3.org/2000/svg">
                <!-- Lewo: EPS Block -->
                <g transform="translate(30, 20)">
                    <rect x="0" y="40" width="60" height="40" rx="4" class="svg-eps-block"></rect>
                    <rect x="0" y="30" width="60" height="10" fill="#94a3b8"></rect>
                    <!-- Wektor strzałki -->
                    <path d="M30 10 L30 25 M25 20 L30 25 L35 20" stroke="#64748b" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path>
                </g>

                <!-- Środek: Przepływ Rur -->
                <g transform="translate(140, 20)">
                    <path d="M0 20 C 30 20, 30 60, 60 60 C 90 60, 90 20, 120 20" fill="none" stroke="#e2e8f0" stroke-width="12" stroke-linecap="round"></path>
                    <path d="M0 20 C 30 20, 30 60, 60 60 C 90 60, 90 20, 120 20" fill="none" stroke-width="6" stroke-linecap="round" class="svg-pipe-flow"></path>
                </g>

                <!-- Prawo: Zegar / Portfel -->
                <g transform="translate(300, 20)">
                    <!-- Zegar Ciśnienia/Opory -->
                    <path d="M0 60 A 40 40 0 0 1 80 60" fill="none" stroke="#e2e8f0" stroke-width="8"></path>
                    <path d="M60 60 A 40 40 0 0 0 80 60" fill="none" stroke="#ef4444" stroke-width="8"></path> <!-- Czerwone pole -->
                    <circle cx="40" cy="60" r="6" fill="#64748b"></circle>
                    <line x1="40" y1="60" x2="15" y2="35" stroke-width="4" stroke-linecap="round" class="svg-gauge-needle"></line>
                </g>
            </svg>
        </div>
    </div>

    <!-- Stopka CTA -->
    <div class="rk-dash-footer">
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-action">
            Przeczytaj poradniki, które pomagają oszczędzać na ogrzewaniu.
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg>
        </a>
    </div>
</div>

<!-- ==========================================
     LOGIKA JS I ZABEZPIECZENIE (DOMAIN LOCK)
=========================================== -->
<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // 1. Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-dash-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 45px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 24px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 20px;">🛑</div>
                    <div style="font-size: 20px; font-weight: 900; margin-bottom: 15px; text-transform: uppercase;">Naruszenie Praw Autorskich</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 550px; margin: 0 auto; line-height: 1.6;">
                        Interaktywny kalkulator i struktura danych JSON-LD są własnością serwisu Projekt-Ogrzewania.pl. Uruchamianie tego kodu na nieautoryzowanej domenie jest zabronione.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Przełącznika (Toggle)
    const interactiveBoard = document.getElementById('rk-interactive-board');
    const switchBtns = document.querySelectorAll('.rk-switch-btn');

    switchBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Zmiana przycisków
            switchBtns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            // Pobranie trybu
            const mode = this.getAttribute('data-mode');

            // Aktualizacja klasy nadrzędnej (steruje całym CSS i animacjami SVG)
            if (mode === 'amateur') {
                interactiveBoard.classList.remove('state-pro');
                interactiveBoard.classList.add('state-amateur');
            } else {
                interactiveBoard.classList.remove('state-amateur');
                interactiveBoard.classList.add('state-pro');
            }
        });
    });
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/">Kompleksowy kalkulator ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Średnice rur w ogrzewaniu podłogowym.</title>
		<link>https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 10:52:01 +0000</pubDate>
				<category><![CDATA[Hydraulika]]></category>
		<category><![CDATA[Hydraulika grzewcza]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Ogrzewanie domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradnik inwestora]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[Projekty instalacji]]></category>
		<category><![CDATA[Technologia grzewcza]]></category>
		<category><![CDATA[długość pętli podłogówki]]></category>
		<category><![CDATA[dobór rur ogrzewanie podłogowe]]></category>
		<category><![CDATA[hydraulika ogrzewania podłogowego]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[projektowanie podłogówki]]></category>
		<category><![CDATA[przepływ w ogrzewaniu podłogowym]]></category>
		<category><![CDATA[rura 16x2 ogrzewanie podłogowe]]></category>
		<category><![CDATA[rura 20x2 ogrzewanie podłogowe]]></category>
		<category><![CDATA[spadki ciśnienia ogrzewanie podłogowe]]></category>
		<category><![CDATA[średnice rur ogrzewanie podłogowe]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3505</guid>

					<description><![CDATA[<p>Dobór elementów instalacji grzewczej to nie przypadek, lecz świadoma decyzja techniczna. Średnice rur w ogrzewaniu podłogowym mają bezpośredni wpływ na przepływ wody, opory hydrauliczne oraz efektywność całego systemu. Zbyt mała średnica może powodować nadmierne spadki ciśnienia i niedogrzanie pomieszczeń, natomiast zbyt duża utrudnia regulację i zwiększa koszty inwestycji. W artykule pokazujemy konkretne obliczenia, przykłady oraz praktyczne zasady projektowe, które pozwalają dobrać optymalne parametry instalacji zarówno dla kotłów gazowych, jak i pomp ciepła.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">Średnice rur w ogrzewaniu podłogowym.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-blue: #0369a1;
    --rk-intro-accent: #0ea5e9;
    --rk-intro-bg: #f8fafc;
    --rk-intro-card: #ffffff;
    --rk-intro-border: #cbd5e1;
    --rk-intro-text: #334155;
    --rk-intro-gold: #eab308;
    --rk-intro-gold-bg: #fefce8;
}

.rk-intro-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-intro-card);
    border-radius: 20px;
    box-shadow: 0 10px 30px -10px rgba(3, 105, 161, 0.15);
    border: 1px solid var(--rk-intro-blue);
    overflow: hidden;
}

/* Główny obszar nagłówka i tekstu */
.rk-intro-main {
    padding: 40px 50px;
    background: linear-gradient(135deg, #ffffff 0%, var(--rk-intro-bg) 100%);
}

.rk-intro-main h2 {
    font-size: 32px;
    font-weight: 900;
    color: var(--rk-intro-dark);
    margin: 0 0 25px 0;
    line-height: 1.2;
    letter-spacing: -0.5px;
}

.rk-intro-hook {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-intro-blue);
    margin: 0 0 20px 0;
    line-height: 1.5;
    border-left: 4px solid var(--rk-intro-accent);
    padding-left: 20px;
}

.rk-intro-text {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-intro-text);
    margin: 0 0 20px 0;
}

.rk-intro-text a {
    color: var(--rk-intro-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(14, 165, 233, 0.2);
}

.rk-intro-text a:hover {
    border-color: var(--rk-intro-accent);
}

/* Moduł "Szybka Odpowiedź" (Featured Snippet Box) */
.rk-intro-quick-answer {
    background: var(--rk-intro-gold-bg);
    border: 1px solid rgba(234, 179, 8, 0.4);
    border-radius: 12px;
    padding: 25px;
    margin: 30px 0;
    display: flex;
    gap: 20px;
    align-items: flex-start;
}

.rk-qa-icon {
    width: 48px;
    height: 48px;
    background: #ffffff;
    border: 2px solid var(--rk-intro-gold);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-intro-gold);
    flex-shrink: 0;
}

.rk-qa-content h3 {
    margin: 0 0 8px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-intro-dark);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-qa-content p {
    margin: 0;
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-intro-dark);
}

/* Przewodnik po artykule (Tabbed) */
.rk-intro-guide {
    background: var(--rk-intro-dark);
    padding: 35px 50px;
    color: #ffffff;
}

.rk-guide-title {
    font-size: 20px;
    font-weight: 800;
    margin: 0 0 20px 0;
    color: #ffffff;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-guide-tabs {
    display: flex;
    gap: 10px;
    margin-bottom: 25px;
}

.rk-guide-tab-btn {
    flex: 1;
    background: #1e293b;
    border: 1px solid #334155;
    padding: 14px;
    border-radius: 8px;
    color: #cbd5e1;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    text-align: center;
}

.rk-guide-tab-btn.active {
    background: var(--rk-intro-blue);
    border-color: var(--rk-intro-accent);
    color: #ffffff;
}

.rk-guide-panel {
    display: none;
    background: #1e293b;
    border: 1px solid #334155;
    border-radius: 12px;
    padding: 25px;
}

.rk-guide-panel.active {
    display: block;
}

.rk-guide-panel-content {
    display: flex;
    gap: 20px;
    align-items: center;
}

.rk-guide-panel-icon {
    width: 60px;
    height: 60px;
    background: rgba(255,255,255,0.05);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-intro-accent);
    flex-shrink: 0;
}

.rk-guide-panel-text h4 {
    margin: 0 0 8px 0;
    font-size: 18px;
    color: #ffffff;
}

.rk-guide-panel-text p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: #94a3b8;
}

@media (max-width: 768px) {
    .rk-intro-main, .rk-intro-guide { padding: 30px 20px; }
    .rk-intro-main h2 { font-size: 26px; }
    .rk-intro-quick-answer { flex-direction: column; align-items: center; text-align: center; }
    .rk-guide-tabs { flex-direction: column; }
    .rk-guide-panel-content { flex-direction: column; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Średnice rur w ogrzewaniu podłogowym – inżynierski przewodnik",
    "description": "Zrozum opory hydrauliczne i przepływy. Zobacz dlaczego wybór rury 16x2.0 lub 20x2.0 mm decyduje o kosztach prądu dla pompy ciepła i żywotności instalacji.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-normy-wstep",
    "name": "Wytyczne normy PN-EN 1264 dla doboru przekrojów",
    "description": "Zestawienie podstawowych parametrów projektowych określających zrównoważenie hydrauliczne i akustyczne (szumy) w systemach płaszczyznowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "średnice rur w ogrzewaniu podłogowym",
      "norma PN-EN 1264 podłogówka",
      "opory hydrauliczne instalacji",
      "przepływ wody w pompie ciepła",
      "jaka średnica rury do podłogówki"
    ],
    "measurementTechnique": "Przegląd inżynierski wytycznych definiujących granicę prędkości wody i oporów dla zachowania efektywności energetycznej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Standard budowlany: rura 16x2.0 mm (pokoje standardowe).",
        "Standard dla OZE: rura 20x2.0 mm (duże złady wody, niskie opory)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-nawigator",
    "name": "Inżynierski Nawigator Artykułu",
    "description": "Panel interaktywny umożliwiający szybki przegląd zawartości artykułu, od tablic spadków ciśnień po dynamiczne symulatory pompy obiegowej.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JS",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container">
    <div class="rk-intro-main">
        <h2>Średnice rur w ogrzewaniu podłogowym – inżynierski przewodnik</h2>
        
        <p class="rk-intro-hook">
            Wydajesz kilkadziesiąt tysięcy złotych na najwyższej klasy pompę ciepła, a instalator dławi jej potencjał, rozkładając najcieńszą, 16-milimetrową rurkę w potężnym salonie? To błąd, który będzie Cię kosztował wyższe rachunki za prąd każdego dnia zimy.
        </p>

        <p class="rk-intro-text">
            Średnice rur w ogrzewaniu podłogowym to kluczowy parametr decydujący o oporach hydraulicznych instalacji, wymaganym przepływie wody oraz efektywności energetycznej całego systemu grzewczego. Zgodnie z wytycznymi <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">normy PN-EN 1264</a>, właściwy dobór przekroju – najczęściej <strong>16&#215;2,0 mm</strong>, <strong>17&#215;2,0 mm</strong> lub <strong>20&#215;2,0 mm</strong> – jest absolutnie niezbędny do zapewnienia równomiernego rozkładu temperatury oraz uniknięcia hałasu wywołanego zbyt wysoką prędkością przepływu wody.
        </p>

        <div class="rk-intro-quick-answer">
            <div class="rk-qa-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
            </div>
            <div class="rk-qa-content">
                <h3>Szybka Odpowiedź Eksperta</h3>
                <p>W standardowych pomieszczeniach i sypialniach najczęściej stosuje się rurę 16 mm. Jednak w instalacjach napędzanych pompą ciepła, wymagających dużych przepływów czynnika, oraz w rozległych otwartych salonach, bezpiecznym inżynierskim wymogiem jest <strong>zastosowanie rury 20 mm</strong>. Chroni to pompę obiegową przed dławieniem (opór pętli musi być niższy niż 20 kPa).</p>
            </div>
        </div>

        <p class="rk-intro-text">
            Jako główny projektant portalu Projekt-Ogrzewania.pl, przeprowadzę Cię przez techniczne aspekty doboru rur, które zdeterminują żywotność Twojego systemu. Zobaczysz &#8222;czarno na białym&#8221;, dlaczego fizyki nie da się oszukać.
        </p>
    </div>

    <div class="rk-intro-guide">
        <div class="rk-guide-title">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 16 16 12 12 8"></polyline><line x1="8" y1="12" x2="16" y2="12"></line></svg>
            Co znajdziesz w tym artykule?
        </div>

        <div class="rk-guide-tabs" id="rkGuideTabs">
            <button class="rk-guide-tab-btn active" data-intro="kalkulatory">Interaktywne Narzędzia</button>
            <button class="rk-guide-tab-btn" data-intro="tabele">Tabele i Normy</button>
            <button class="rk-guide-tab-btn" data-intro="case">Studium Przypadku</button>
        </div>

        <div class="rk-guide-panel active" id="intro-kalkulatory">
            <div class="rk-guide-panel-content">
                <div class="rk-guide-panel-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><rect x="9" y="9" width="6" height="6"></rect><line x1="9" y1="1" x2="9" y2="4"></line><line x1="15" y1="1" x2="15" y2="4"></line><line x1="9" y1="20" x2="9" y2="23"></line><line x1="15" y1="20" x2="15" y2="23"></line><line x1="20" y1="9" x2="23" y2="9"></line><line x1="20" y1="14" x2="23" y2="14"></line><line x1="1" y1="9" x2="4" y2="9"></line><line x1="1" y1="14" x2="4" y2="14"></line></svg>
                </div>
                <div class="rk-guide-panel-text">
                    <h4>Kalkulatory i Symulatory Live</h4>
                    <p>Zamiast zgadywać, poniżej udostępniam Ci kalkulatory działające w czasie rzeczywistym. Samodzielnie zmienisz długość pętli, wybierzesz źródło ciepła i natychmiast sprawdzisz, czy opory w rurze przekroczą krytyczną barierę bezpieczeństwa.</p>
                </div>
            </div>
        </div>

        <div class="rk-guide-panel" id="intro-tabele">
            <div class="rk-guide-panel-content">
                <div class="rk-guide-panel-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="8" y1="6" x2="21" y2="6"></line><line x1="8" y1="12" x2="21" y2="12"></line><line x1="8" y1="18" x2="21" y2="18"></line><line x1="3" y1="6" x2="3.01" y2="6"></line><line x1="3" y1="12" x2="3.01" y2="12"></line><line x1="3" y1="18" x2="3.01" y2="18"></line></svg>
                </div>
                <div class="rk-guide-panel-text">
                    <h4>Tabelaryczne Zestawienia Spadków Ciśnień</h4>
                    <p>Konkretne inżynierskie dane. Porównamy ramię w ramię pojemność wodną, maksymalne długości obiegów oraz opór, jaki rura 16 mm i 20 mm stawia instalacji przy określonym przepływie masowym.</p>
                </div>
            </div>
        </div>

        <div class="rk-guide-panel" id="intro-case">
            <div class="rk-guide-panel-content">
                <div class="rk-guide-panel-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                </div>
                <div class="rk-guide-panel-text">
                    <h4>Praktyczne Case Study</h4>
                    <p>Rozłożymy na czynniki pierwsze realny problem inwestora, który musiał wybrać między opiniami dwóch sprzeczających się instalatorów. Zobaczysz, jak projekt inżynierski chroni budżet przed poważnymi błędami wykonawczymi.</p>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var navBtns = document.querySelectorAll('.rk-guide-tab-btn');
    var navPanels = document.querySelectorAll('.rk-guide-panel');

    // Kod w 100% bezpieczny - brak zakazanych operatorów
    for (var i = 0; i < navBtns.length; i++) {
        navBtns[i].addEventListener('click', function() {
            
            // Usunięcie klasy active ze wszystkich
            for (var j = 0; j < navBtns.length; j++) {
                navBtns[j].classList.remove('active');
            }
            for (var k = 0; k < navPanels.length; k++) {
                navPanels[k].classList.remove('active');
            }

            // Aktywacja klikniętego elementu
            this.classList.add('active');

            // Odnalezienie przypisanego panelu
            var targetPanelId = 'intro-' + this.getAttribute('data-intro');
            var targetPanel = document.getElementById(targetPanelId);
            
            if (targetPanel !== null) {
                targetPanel.classList.add('active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-loop-dark: #0f172a;
    --rk-loop-primary: #0284c7;
    --rk-loop-accent: #0ea5e9;
    --rk-loop-bg: #f8fafc;
    --rk-loop-card: #ffffff;
    --rk-loop-border: #cbd5e1;
    --rk-loop-text: #334155;
    --rk-loop-muted: #64748b;
    --rk-loop-danger: #ef4444;
    --rk-loop-warning: #eab308;
    --rk-loop-success: #10b981;
}

.rk-loop-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-loop-card);
    border-radius: 20px;
    box-shadow: 0 15px 40px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-loop-primary);
    overflow: hidden;
}

/* Sekcja Merytoryczna */
.rk-loop-content {
    padding: 40px 50px;
    background: linear-gradient(to bottom, #ffffff, var(--rk-loop-bg));
}

.rk-loop-content h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-loop-dark);
    margin: 0 0 20px 0;
    line-height: 1.3;
}

.rk-loop-content h3 {
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-loop-primary);
    margin: 30px 0 15px 0;
}

.rk-loop-content p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-loop-text);
    margin-bottom: 20px;
}

.rk-loop-content a {
    color: var(--rk-loop-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(14, 165, 233, 0.2);
    transition: all 0.3s;
}

.rk-loop-content a:hover {
    border-color: var(--rk-loop-accent);
}

/* Wskazówka Projektowa (Alert) */
.rk-loop-alert {
    background: #f0f9ff;
    border-left: 4px solid var(--rk-loop-primary);
    padding: 20px 25px;
    border-radius: 0 12px 12px 0;
    margin: 30px 0;
    display: flex;
    gap: 15px;
}

.rk-loop-alert-icon {
    color: var(--rk-loop-primary);
    flex-shrink: 0;
}

.rk-loop-alert-text h4 {
    margin: 0 0 8px 0;
    color: var(--rk-loop-dark);
    font-size: 16px;
}

.rk-loop-alert-text p {
    margin: 0;
    font-size: 14.5px;
    line-height: 1.6;
    color: var(--rk-loop-text);
}

/* Interaktywny Asystent */
.rk-loop-assistant {
    background: var(--rk-loop-dark);
    padding: 40px 50px;
    color: #ffffff;
}

.rk-assistant-title {
    text-align: center;
    margin-bottom: 30px;
}

.rk-assistant-title h3 {
    margin: 0;
    font-size: 24px;
    color: #ffffff;
}

/* Wybór Rury */
.rk-pipe-selector {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
}

.rk-pipe-btn {
    flex: 1;
    background: #1e293b;
    border: 2px solid #334155;
    padding: 15px;
    border-radius: 12px;
    color: #cbd5e1;
    cursor: pointer;
    text-align: center;
    transition: all 0.3s;
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.rk-pipe-btn span {
    font-size: 18px;
    font-weight: 800;
}

.rk-pipe-btn small {
    font-size: 12px;
    color: #94a3b8;
}

.rk-pipe-btn.active {
    background: var(--rk-loop-primary);
    border-color: var(--rk-loop-accent);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.4);
}

.rk-pipe-btn.active small {
    color: #e0f2fe;
}

/* Panel Wynikowy z Suwakiem */
.rk-calc-panel {
    background: #1e293b;
    border: 1px solid #334155;
    border-radius: 16px;
    padding: 30px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
}

.rk-slider-section {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-slider-label {
    display: flex;
    justify-content: space-between;
    font-size: 14px;
    font-weight: 700;
    color: #cbd5e1;
    margin-bottom: 15px;
}

.rk-slider-val {
    color: var(--rk-loop-accent);
    font-size: 18px;
}

.rk-length-slider {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    background: #0f172a;
    border-radius: 4px;
    outline: none;
    margin-bottom: 25px;
}

.rk-length-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--rk-loop-accent);
    cursor: pointer;
    border: 4px solid var(--rk-loop-dark);
    box-shadow: 0 0 0 2px var(--rk-loop-accent);
    transition: transform 0.1s;
}

.rk-length-slider::-webkit-slider-thumb:active {
    transform: scale(1.15);
}

.rk-status-box {
    padding: 15px;
    border-radius: 12px;
    text-align: center;
    font-weight: 800;
    font-size: 14px;
    transition: all 0.3s;
}

/* Prawa kolumna wyników */
.rk-stats-section {
    display: flex;
    flex-direction: column;
    gap: 20px;
    border-left: 1px dashed #334155;
    padding-left: 40px;
}

.rk-stat-item {
    display: flex;
    flex-direction: column;
}

.rk-stat-label {
    font-size: 13px;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 5px;
}

.rk-stat-value {
    font-size: 28px;
    font-weight: 900;
    color: #ffffff;
    display: flex;
    align-items: baseline;
    gap: 5px;
}

.rk-stat-unit {
    font-size: 16px;
    font-weight: 600;
    color: #cbd5e1;
}

/* Warianty Statusów */
.bg-ok { background: rgba(16, 185, 129, 0.15); color: var(--rk-loop-success); border: 1px solid rgba(16, 185, 129, 0.3); }
.bg-warn { background: rgba(234, 179, 8, 0.15); color: var(--rk-loop-warning); border: 1px solid rgba(234, 179, 8, 0.3); }
.bg-danger { background: rgba(239, 68, 68, 0.15); color: var(--rk-loop-danger); border: 1px solid rgba(239, 68, 68, 0.3); }

@media (max-width: 768px) {
    .rk-loop-content, .rk-loop-assistant { padding: 30px 20px; }
    .rk-pipe-selector { flex-direction: column; gap: 10px; }
    .rk-calc-panel { grid-template-columns: 1fr; gap: 30px; }
    .rk-stats-section { border-left: none; border-top: 1px dashed #334155; padding-left: 0; padding-top: 30px; }
    .rk-loop-content h2 { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-graniczne-dlugosci",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Graniczne długości pętli i dobór średnicy rur",
    "description": "Zasady wymiarowania ogrzewania podłogowego: maksymalne długości pętli dla rur 16 mm, 17 mm i 20 mm. Obliczanie pojemności wodnej i zrównoważenia hydraulicznego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-petle",
    "name": "Tabela 2. Zalecane i maksymalne długości pętli ogrzewania podłogowego",
    "description": "Baza danych parametrów granicznych pętli grzewczych dla najpopularniejszych średnic rur wielowarstwowych (16x2.0, 17x2.0, 20x2.0).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna długość pętli",
      "pojemność wodna rury pex",
      "średnica wewnętrzna rury ogrzewania podłogowego",
      "zrównoważenie hydrauliczne układu",
      "różnice między rurą 16 a 20"
    ],
    "measurementTechnique": "Zestawienie empirycznych norm instalacyjnych oraz przeliczników objętości cieczy na metr bieżący rury.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rura 16x2.0 mm: Max. długość 120m, Zalecana 80m, Pojemność 0.113 l/m",
        "Rura 17x2.0 mm: Max. długość 120m, Zalecana 90m, Pojemność 0.133 l/m",
        "Rura 20x2.0 mm: Max. długość 150m, Zalecana 110m, Pojemność 0.201 l/m"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-dlugosc",
    "name": "Asystent Pojemności i Długości Pętli",
    "description": "Narzędzie pozwalające symulować pojemność zładu wody oraz bezpieczeństwo oporów hydraulicznych w zależności od wybranej średnicy rury i długości pętli.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, JS",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-loop-container">
    <div class="rk-loop-content">
        <h2>Graniczne długości pętli i dobór średnicy rur</h2>
        <p>Aby uniknąć gigantycznych problemów z hydraulicznym zrównoważeniem układu (gdy jedno pomieszczenie przegrzewa, a drugie nie dogrzewa), inżynierowie przyjmują twarde, bezpieczne granice <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalnej długości pętli</a>. Wartości te, łącznie z podejściem z kotłowni do rozdzielacza, gwarantują utrzymanie spadków ciśnień w ryzach.</p>
        
        <div class="rk-loop-alert">
            <div class="rk-loop-alert-icon">
                <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            </div>
            <div class="rk-loop-alert-text">
                <h4>Inżynierska wskazówka projektowa</h4>
                <p>Zawsze staraj się, aby pętle podłączone do jednego rozdzielacza miały zbliżone długości. Różnica nie powinna przekraczać <strong>10–15%</strong>. Drastyczne różnice powodują, że woda ucieka najkrótszą drogą, omijając najdłuższe (zazwyczaj najważniejsze) obiegi w salonie. Dowiedz się więcej o <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">planowaniu rozmieszczenia pętli grzewczych</a>.</p>
            </div>
        </div>

        <h3>Jakie są różnice między rurą 16x2.0, 17x2.0 a 20x2.0?</h3>
        <p><a href="https://projekt-ogrzewania.pl/rury-do-ogrzewania-podlogowego/">Rura 16x2,0 mm</a> to wciąż absolutny standard w mniejszych sypialniach i łazienkach. Jednak w przypadku potężnych salonów, otwartych przestrzeni czy instalacji z pompą ciepła, rura <strong>20x2,0 mm</strong> (o średnicy wewnętrznej 16 mm) okazuje się ratunkiem. Przekrój wewnętrzny "dwudziestki" jest o ok. <strong>77% większy</strong> niż rury 16 mm. Wpływa to na drastyczne obniżenie oporów i większą pojemność wodną układu (co tworzy naturalny bufor dla pompy).</p>
    </div>

    <div class="rk-loop-assistant">
        <div class="rk-assistant-title">
            <h3>Asystent Pojemności i Zrównoważenia Pętli</h3>
        </div>

        <div class="rk-pipe-selector">
            <div class="rk-pipe-btn active" data-type="16">
                <span>16 x 2.0 mm</span>
                <small>Zalecana: ~80 m</small>
            </div>
            <div class="rk-pipe-btn" data-type="17">
                <span>17 x 2.0 mm</span>
                <small>Zalecana: ~90 m</small>
            </div>
            <div class="rk-pipe-btn" data-type="20">
                <span>20 x 2.0 mm</span>
                <small>Zalecana: ~110 m</small>
            </div>
        </div>

        <div class="rk-calc-panel">
            <div class="rk-slider-section">
                <div class="rk-slider-label">
                    <span>Planowana długość pętli</span>
                    <span class="rk-slider-val" id="dispLenVal">80 m</span>
                </div>
                <input type="range" id="loopLength" class="rk-length-slider" min="20" max="180" step="5" value="80">
                
                <div id="lenStatus" class="rk-status-box bg-ok">
                    DŁUGOŚĆ IDEALNA DO REGULACJI
                </div>
            </div>

            <div class="rk-stats-section">
                <div class="rk-stat-item">
                    <div class="rk-stat-label">Średnica wewnętrzna</div>
                    <div class="rk-stat-value">
                        <span id="statInner">12</span>
                        <span class="rk-stat-unit">mm</span>
                    </div>
                </div>

                <div class="rk-stat-item">
                    <div class="rk-stat-label"><a href="https://projekt-ogrzewania.pl/ile-wody-miesci-sie-w-1-metrze-rury-pex-pert-16/" style="color:#94a3b8;text-decoration:none;border-bottom:1px dashed #64748b;">Pojemność wodna tej pętli</a></div>
                    <div class="rk-stat-value">
                        <span id="statCap" style="color:var(--rk-loop-accent);">9.0</span>
                        <span class="rk-stat-unit">litrów</span>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Pipe Data Dictionary
    var pipeData = {
        "16": { inner: 12, max: 120, rec: 80, cap: 0.113 },
        "17": { inner: 13, max: 120, rec: 90, cap: 0.133 },
        "20": { inner: 16, max: 150, rec: 110, cap: 0.201 }
    };

    var currentPipeType = "16";

    // UI Elements
    var btns = document.querySelectorAll('.rk-pipe-btn');
    var slider = document.getElementById('loopLength');
    var dispLenVal = document.getElementById('dispLenVal');
    var statInner = document.getElementById('statInner');
    var statCap = document.getElementById('statCap');
    var lenStatus = document.getElementById('lenStatus');

    // Pipe Selection Logic
    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            btns.forEach(function(b) { b.classList.remove('active'); });
            this.classList.add('active');
            
            var type = this.getAttribute('data-type');
            if(type) {
                currentPipeType = type;
                calculateLoop();
            }
        });
    });

    // Slider Logic
    slider.addEventListener('input', function() {
        dispLenVal.innerText = this.value + ' m';
        calculateLoop();
    });

    // Core Calculation (Safe JS)
    function calculateLoop() {
        var length = parseInt(slider.value, 10);
        var data = pipeData[currentPipeType];
        
        // Update Static Stats
        statInner.innerText = data.inner;
        
        // Calculate Capacity
        var totalCap = length * data.cap;
        statCap.innerText = totalCap.toFixed(1);

        // Evaluate Status (No && operators for safety)
        var statusLvl = 0; // 0 = OK, 1 = Warn (over recommended, under max), 2 = Danger (over max)
        
        if (length > data.rec) {
            statusLvl = 1;
        }
        if (length > data.max) {
            statusLvl = 2;
        }

        // Apply Status
        if (statusLvl === 0) {
            lenStatus.className = "rk-status-box bg-ok";
            lenStatus.innerText = "DŁUGOŚĆ IDEALNA (Łatwa regulacja)";
        } else if (statusLvl === 1) {
            lenStatus.className = "rk-status-box bg-warn";
            lenStatus.innerText = "PĘTLA WYMAGAJĄCA (Wysokie opory)";
        } else {
            lenStatus.className = "rk-status-box bg-danger";
            lenStatus.innerText = "PRZEKROCZENIE NORMY (Krytyczne dławienie!)";
        }
    }

    // Init
    calculateLoop();
});
</script>



<style>
:root {
    --rk-spec-dark: #0f172a;
    --rk-spec-blue: #0284c7;
    --rk-spec-accent: #0ea5e9;
    --rk-spec-bg: #f8fafc;
    --rk-spec-card: #ffffff;
    --rk-spec-border: #cbd5e1;
    --rk-spec-text: #334155;
    --rk-spec-muted: #64748b;
    --rk-spec-highlight: #f0f9ff;
}

.rk-spec-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-spec-card);
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-spec-blue);
    overflow: hidden;
}

/* Nagłówek i Zajawka */
.rk-spec-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, var(--rk-spec-highlight) 0%, #ffffff 100%);
    border-bottom: 1px solid var(--rk-spec-border);
}

.rk-spec-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-spec-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-spec-header p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-spec-text);
    margin: 0;
}

/* Moduł Interaktywny */
.rk-spec-interactive {
    padding: 40px 50px;
    background: var(--rk-spec-dark);
    color: #ffffff;
}

/* Przyciski wyboru rury */
.rk-spec-tabs {
    display: flex;
    gap: 15px;
    margin-bottom: 35px;
}

.rk-spec-tab-btn {
    flex: 1;
    background: #1e293b;
    border: 2px solid #334155;
    border-radius: 12px;
    padding: 16px;
    color: #94a3b8;
    font-size: 18px;
    font-weight: 800;
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.rk-spec-tab-btn svg {
    opacity: 0.5;
    transition: opacity 0.3s;
}

.rk-spec-tab-btn:hover {
    background: #334155;
    color: #cbd5e1;
}

.rk-spec-tab-btn.active {
    background: var(--rk-spec-blue);
    border-color: var(--rk-spec-accent);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.4);
}

.rk-spec-tab-btn.active svg {
    opacity: 1;
}

/* Wyświetlacz Parametrów */
.rk-spec-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

.rk-spec-card {
    background: #1e293b;
    border: 1px solid #334155;
    border-radius: 16px;
    padding: 25px;
    display: flex;
    align-items: flex-start;
    gap: 20px;
    transition: transform 0.3s;
}

.rk-spec-icon-box {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: rgba(14, 165, 233, 0.15);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-spec-accent);
    flex-shrink: 0;
}

.rk-spec-data {
    display: flex;
    flex-direction: column;
}

.rk-spec-label {
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #94a3b8;
    margin-bottom: 8px;
    font-weight: 600;
}

.rk-spec-value {
    font-size: 24px;
    font-weight: 900;
    color: #ffffff;
    line-height: 1.2;
}

.rk-spec-sub {
    font-size: 14px;
    color: #cbd5e1;
    margin-top: 5px;
}

@media (max-width: 768px) {
    .rk-spec-header, .rk-spec-interactive { padding: 30px 20px; }
    .rk-spec-tabs { flex-direction: column; gap: 10px; }
    .rk-spec-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-spec-header h2 { font-size: 24px; }
    .rk-spec-value { font-size: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-parametry",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Porównanie parametrów technicznych rur wielowarstwowych",
    "description": "Zestawienie średnic wewnętrznych, pojemności wodnej i maksymalnych długości pętli dla rur PEX/PERT 16x2.0, 17x2.0 oraz 20x2.0 mm w instalacjach podłogowych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-parametry",
    "name": "Parametry techniczne rur wielowarstwowych do ogrzewania płaszczyznowego",
    "description": "Dokładne zestawienie wymiarowe, pojemnościowe i aplikacyjne dla rur instalacyjnych o wymiarach 16, 17 i 20 mm grubości.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "parametry techniczne rury 16x2.0",
      "średnica wewnętrzna rury ogrzewania podłogowego",
      "pojemność wodna rury pex 1 mb",
      "zalecana długość pętli rura 20mm",
      "rura 17x2.0 do podłogówki"
    ],
    "measurementTechnique": "Tabelaryczne zestawienie wartości normatywnych i pojemnościowych wyliczanych na podstawie pola przekroju poprzecznego rury.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rura 16x2.0 mm: wewn. 12mm, poj. 0.113 l/mb, dł. 80-90m",
        "Rura 17x2.0 mm: wewn. 13mm, poj. 0.133 l/mb, dł. 90-100m",
        "Rura 20x2.0 mm: wewn. 16mm, poj. 0.201 l/mb, dł. 110-130m"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-eksplorator",
    "name": "Interaktywny Eksplorator Parametrów Rur",
    "description": "Mobilny panel pozwalający na błyskawiczne odczytywanie pojemności, przekrojów i zastosowania różnych średnic rur ogrzewania podłogowego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JS",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-spec-container">
    <div class="rk-spec-header">
        <h2>Porównanie parametrów technicznych rur wielowarstwowych</h2>
        <p>Średnica zewnętrzna to tylko ułamek prawdy. Kluczowym elementem, który determinuje opory hydrauliczne i pojemność cieplną instalacji, jest <strong>przekrój wewnętrzny rury</strong>. Zobacz, jak dramatycznie zmieniają się właściwości fizyczne układu przy przejściu ze standardowej rury 16 mm na większe przekroje. Zrozumienie tych wartości to pierwszy krok do zaprojektowania wysoce wydajnej <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a>.</p>
    </div>

    <div class="rk-spec-interactive">
        
        <div class="rk-spec-tabs" id="rkSpecTabs">
            <button class="rk-spec-tab-btn active" data-pipe="16">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="6"></circle><circle cx="12" cy="12" r="10"></circle></svg>
                16x2.0 mm
            </button>
            <button class="rk-spec-tab-btn" data-pipe="17">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="7"></circle><circle cx="12" cy="12" r="10"></circle></svg>
                17x2.0 mm
            </button>
            <button class="rk-spec-tab-btn" data-pipe="20">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="8"></circle><circle cx="12" cy="12" r="10"></circle></svg>
                20x2.0 mm
            </button>
        </div>

        <div class="rk-spec-grid">
            
            <div class="rk-spec-card">
                <div class="rk-spec-icon-box">
                    <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                </div>
                <div class="rk-spec-data">
                    <span class="rk-spec-label">Średnica wewnętrzna</span>
                    <span class="rk-spec-value" id="valInner">12,0 mm</span>
                    <span class="rk-spec-sub" id="subInner">Standardowy przekrój dla typowych oporów.</span>
                </div>
            </div>

            <div class="rk-spec-card">
                <div class="rk-spec-icon-box">
                    <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"></path></svg>
                </div>
                <div class="rk-spec-data">
                    <span class="rk-spec-label"><a href="https://projekt-ogrzewania.pl/ile-wody-miesci-sie-w-1-metrze-rury-pex-pert-16/" style="color:#94a3b8; text-decoration:none;">Pojemność wodna (1 mb)</a></span>
                    <span class="rk-spec-value" id="valCap">ok. 0,113 l</span>
                    <span class="rk-spec-sub" id="subCap">Pojemność zładu podstawowego.</span>
                </div>
            </div>

            <div class="rk-spec-card">
                <div class="rk-spec-icon-box">
                    <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="8" width="18" height="12" rx="2" ry="2"></rect><line x1="7" y1="8" x2="7" y2="12"></line><line x1="11" y1="8" x2="11" y2="12"></line><line x1="15" y1="8" x2="15" y2="12"></line><line x1="19" y1="8" x2="19" y2="12"></line><line x1="3" y1="14" x2="21" y2="14"></line></svg>
                </div>
                <div class="rk-spec-data">
                    <span class="rk-spec-label"><a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/" style="color:#94a3b8; text-decoration:none;">Zalecana długość pętli</a></span>
                    <span class="rk-spec-value" id="valLen">do 80-90 m</span>
                    <span class="rk-spec-sub" id="subLen">Dla zachowania łatwej regulacji.</span>
                </div>
            </div>

            <div class="rk-spec-card">
                <div class="rk-spec-icon-box">
                    <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
                </div>
                <div class="rk-spec-data">
                    <span class="rk-spec-label">Główne zastosowanie</span>
                    <span class="rk-spec-value" id="valApp">Pokoje, sypialnie</span>
                    <span class="rk-spec-sub" id="subApp">Typowe budownictwo jednorodzinne.</span>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Słownik danych parametrów rur
    var specsData = {
        "16": {
            inner: "12,0 mm",
            innerSub: "Standardowy przekrój dla typowych oporów.",
            cap: "ok. 0,113 l",
            capSub: "Pojemność zładu podstawowego.",
            len: "do 80-90 m",
            lenSub: "Dla zachowania łatwej regulacji rotametrów.",
            app: "Pokoje, sypialnie",
            appSub: "Typowe budownictwo jednorodzinne i kotły gazowe."
        },
        "17": {
            inner: "13,0 mm",
            innerSub: "Zapewnia nieznacznie wyższe przepływy niż rura 16 mm.",
            cap: "ok. 0,133 l",
            capSub: "Lekko powiększona bezwładność cieplna układu.",
            len: "do 90-100 m",
            lenSub: "Możliwość wydłużenia pętli w stosunku do standardu.",
            app: "Systemy dedykowane",
            appSub: "Często stosowana w kompletnych systemach producentów."
        },
        "20": {
            inner: "16,0 mm",
            innerSub: "Przekrój większy o ok. 77% od standardu (minimalne opory).",
            cap: "ok. 0,201 l",
            capSub: "Wysoki bufor wodny – idealne środowisko dla pompy ciepła.",
            len: "do 110-130 m",
            lenSub: "Obsługa rozległych powierzchni z jednego obwodu.",
            app: "Salony, pompy ciepła",
            appSub: "Obiekty komercyjne oraz systemy niskotemperaturowe."
        }
    };

    var tabs = document.querySelectorAll('.rk-spec-tab-btn');
    
    // Referencje UI
    var valInner = document.getElementById('valInner');
    var subInner = document.getElementById('subInner');
    var valCap = document.getElementById('valCap');
    var subCap = document.getElementById('subCap');
    var valLen = document.getElementById('valLen');
    var subLen = document.getElementById('subLen');
    var valApp = document.getElementById('valApp');
    var subApp = document.getElementById('subApp');

    tabs.forEach(function(tab) {
        tab.addEventListener('click', function() {
            // Zmiana klas przycisków
            tabs.forEach(function(t) { t.classList.remove('active'); });
            this.classList.add('active');

            // Aktualizacja danych (Zabezpieczone - bezpieczny JS bez operatorów &&)
            var pipeType = this.getAttribute('data-pipe');
            var data = specsData[pipeType];

            if(data) {
                valInner.innerText = data.inner;
                subInner.innerText = data.innerSub;
                
                valCap.innerText = data.cap;
                subCap.innerText = data.capSub;
                
                valLen.innerText = data.len;
                subLen.innerText = data.lenSub;
                
                valApp.innerText = data.app;
                subApp.innerText = data.appSub;
            }
        });
    });
});
</script>



<style>
:root {
    --rk-pres-dark: #0f172a;
    --rk-pres-blue: #0369a1;
    --rk-pres-light: #f8fafc;
    --rk-pres-border: #cbd5e1;
    --rk-pres-red: #ef4444;
    --rk-pres-red-bg: #fef2f2;
    --rk-pres-green: #10b981;
    --rk-pres-green-bg: #ecfdf5;
    --rk-pres-gold: #eab308;
    --rk-pres-text: #334155;
}

.rk-pres-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 20px 40px -15px rgba(3, 105, 161, 0.15);
    border: 1px solid var(--rk-pres-blue);
    overflow: hidden;
}

/* Część Teoretyczna */
.rk-pres-theory {
    padding: 40px 50px;
    background: linear-gradient(to bottom, #ffffff, var(--rk-pres-light));
}

.rk-pres-theory h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-pres-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-pres-theory p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-pres-text);
    margin-bottom: 25px;
}

.rk-pres-rules {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 20px;
    margin-bottom: 30px;
}

.rk-pres-rule-card {
    background: #ffffff;
    border: 1px solid var(--rk-pres-border);
    border-radius: 12px;
    padding: 20px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-pres-rule-icon {
    width: 40px;
    height: 40px;
    border-radius: 8px;
    background: var(--rk-pres-light);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-pres-blue);
    margin-bottom: 15px;
}

.rk-pres-rule-card h3 {
    margin: 0 0 10px 0;
    font-size: 16px;
    color: var(--rk-pres-dark);
}

.rk-pres-rule-card p {
    margin: 0;
    font-size: 14px;
    color: #64748b;
    line-height: 1.5;
}

/* Moduł Analizatora (Interaktywny) */
.rk-pres-analyzer {
    background: var(--rk-pres-dark);
    padding: 40px 50px;
    color: #ffffff;
}

.rk-analyzer-header {
    margin-bottom: 30px;
    text-align: center;
}

.rk-analyzer-header h3 {
    margin: 0;
    font-size: 24px;
    color: #ffffff;
}

.rk-analyzer-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
}

/* Kontrolki Analizatora */
.rk-control-block {
    margin-bottom: 25px;
}

.rk-control-label {
    display: flex;
    justify-content: space-between;
    margin-bottom: 12px;
    font-weight: 700;
    font-size: 14px;
    color: #cbd5e1;
}

.rk-control-val {
    color: var(--rk-pres-gold);
    font-size: 16px;
}

.rk-slider-pres {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    background: #334155;
    border-radius: 4px;
    outline: none;
}

.rk-slider-pres::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--rk-pres-gold);
    cursor: pointer;
    border: 4px solid var(--rk-pres-dark);
    box-shadow: 0 0 0 2px var(--rk-pres-gold);
    transition: transform 0.1s;
}

.rk-slider-pres::-webkit-slider-thumb:active {
    transform: scale(1.1);
}

.rk-switch-group {
    display: flex;
    background: #334155;
    border-radius: 12px;
    padding: 4px;
}

.rk-switch-btn {
    flex: 1;
    text-align: center;
    padding: 14px;
    color: #94a3b8;
    font-weight: 700;
    font-size: 14px;
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.3s;
}

.rk-switch-btn.active {
    background: var(--rk-pres-blue);
    color: #ffffff;
    box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}

/* Wyniki Analizatora */
.rk-results-box {
    background: #1e293b;
    border-radius: 16px;
    border: 1px solid #334155;
    padding: 30px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-result-metric {
    margin-bottom: 25px;
    padding-bottom: 25px;
    border-bottom: 1px dashed #334155;
}

.rk-result-metric:last-child {
    margin-bottom: 0;
    padding-bottom: 0;
    border-bottom: none;
}

.rk-metric-title {
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #94a3b8;
    margin-bottom: 10px;
}

.rk-metric-value-wrap {
    display: flex;
    align-items: baseline;
    gap: 8px;
}

.rk-metric-num {
    font-size: 36px;
    font-weight: 900;
    transition: color 0.3s;
}

.rk-metric-unit {
    font-size: 18px;
    color: #cbd5e1;
    font-weight: 600;
}

.rk-status-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    margin-top: 15px;
    transition: all 0.3s;
}

.rk-badge-ok { background: rgba(16, 185, 129, 0.2); color: var(--rk-pres-green); border: 1px solid rgba(16, 185, 129, 0.3); }
.rk-badge-warn { background: rgba(239, 68, 68, 0.2); color: var(--rk-pres-red); border: 1px solid rgba(239, 68, 68, 0.3); }
.rk-badge-gold { background: rgba(234, 179, 8, 0.2); color: var(--rk-pres-gold); border: 1px solid rgba(234, 179, 8, 0.3); }

@media (max-width: 768px) {
    .rk-pres-theory, .rk-pres-analyzer { padding: 30px 20px; }
    .rk-analyzer-grid { grid-template-columns: 1fr; gap: 30px; }
    .rk-pres-theory h2 { font-size: 24px; }
    .rk-metric-num { font-size: 32px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-spadki",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Spadki ciśnienia w ogrzewaniu podłogowym – szczegółowa analiza",
    "description": "Graniczne parametry oporów hydraulicznych w podłogówce. Zobacz jak rura 16 mm dusi układ pompy ciepła, przekraczając barierę 20 kPa i 0,6 m/s.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-cisnienie",
    "name": "Tabela 1. Jednostkowe spadki ciśnienia [Pa/m] dla rur wielowarstwowych",
    "description": "Zestawienie wzrostu oporów liniowych rur 16x2.0 i 20x2.0 mm w funkcji przepływu masowego wody grzewczej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jednostkowy spadek ciśnienia rury 16",
      "opory hydrauliczne pompy ciepła",
      "maksymalna prędkość wody w rurach",
      "dławienie pompy obiegowej",
      "kalkulator przepływu ogrzewania podłogowego"
    ],
    "measurementTechnique": "Określanie straty ciśnienia wyrażonej w Pa/m na podstawie nomogramów dla rur PEX/Al/PEX przy stałym przepływie.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przepływ 120 kg/h: Rura 16mm = 170 Pa/m | Rura 20mm = 35 Pa/m",
        "Przepływ 200 kg/h: Rura 16mm = 480 Pa/m | Rura 20mm = 100 Pa/m"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-analizator",
    "name": "Interaktywny Analizator Oporów i Średnic",
    "description": "Kalkulator czasu rzeczywistego pozwalający na symulację przekroczenia granicy 20 kPa przy wyborze pompy ciepła lub kotła gazowego na konkretnej długości pętli.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JS",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-pres-container">
    <div class="rk-pres-theory">
        <h2>Spadki ciśnienia w ogrzewaniu podłogowym – szczegółowa analiza</h2>
        <p>Obliczenie strat ciśnienia (oporów hydraulicznych) w ogrzewaniu podłogowym to moment, w którym decyduje się, czy Twoja pompa obiegowa zdoła „przepchnąć” wodę przez gąszcz rur. Na opór pętli składają się <strong>straty liniowe</strong> (wynikające z ocierania się wody o ścianki rury na danej długości) oraz <strong>straty miejscowe</strong> (łuki, załamania, zawory w <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielaczu</a>).</p>
        
        <div class="rk-pres-rules">
            <div class="rk-pres-rule-card">
                <div class="rk-pres-rule-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                </div>
                <h3>Granica 20 kPa</h3>
                <p>Łączne opory pętli nie mogą przekroczyć 15–20 kPa (ok. 2,0 m słupa wody). Powyżej tej wartości zrównoważenie hydrauliczne staje się niemożliwe, a pompa drastycznie dławi układ.</p>
            </div>
            
            <div class="rk-pres-rule-card">
                <div class="rk-pres-rule-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                </div>
                <h3>Odpowietrzenie (>0,15 m/s)</h3>
                <p>Prędkość wody nie może spaść poniżej 0,15 m/s. Jeśli woda płynie wolniej, nie jest w stanie wypchnąć pęcherzyków powietrza do separatora.</p>
            </div>
            
            <div class="rk-pres-rule-card">
                <div class="rk-pres-rule-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                </div>
                <h3>Szumy i Erozja (<0,6 m/s)</h3>
                <p>Przekroczenie prędkości 0,6 m/s wywołuje głośne szumy w instalacji, a siła tarcia przyspiesza destrukcję struktury wewnętrznej pętli.</p>
            </div>
        </div>
        
        <p>W praktyce inżynierskiej opieramy się na tabelach jednostkowych spadków ciśnienia (R) producentów rur. Widzimy z nich dobitnie, że przy wyższych przepływach (wymaganych przez pompy ciepła), <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/">rura PEX 16 mm</a> zaczyna stawiać gigantyczny opór w porównaniu do rury 20 mm.</p>
    </div>

    <div class="rk-pres-analyzer">
        <div class="rk-analyzer-header">
            <h3>Analizator Hydrauliczny: Wybór Średnicy</h3>
        </div>

        <div class="rk-analyzer-grid">
            <div class="rk-analyzer-controls">
                
                <div class="rk-control-block">
                    <div class="rk-control-label">
                        <span>Zapotrzebowanie na ciepło salonu</span>
                        <span class="rk-control-val" id="dispWatt">1500 W</span>
                    </div>
                    <input type="range" id="rngWatt" class="rk-slider-pres" min="800" max="2500" step="50" value="1500">
                </div>

                <div class="rk-control-block">
                    <div class="rk-control-label">
                        <span>Długość pętli grzewczej</span>
                        <span class="rk-control-val" id="dispLen">85 m</span>
                    </div>
                    <input type="range" id="rngLen" class="rk-slider-pres" min="50" max="150" step="5" value="85">
                </div>

                <div class="rk-control-block">
                    <div class="rk-control-label">
                        <span>Źródło ciepła (Dynamika przepływu)</span>
                    </div>
                    <div class="rk-switch-group">
                        <div class="rk-switch-btn active" id="modeGas">Kocioł Gaz (ΔT=10K)</div>
                        <div class="rk-switch-btn" id="modeHP">Pompa Ciepła (ΔT=5K)</div>
                    </div>
                </div>

                <div class="rk-control-block">
                    <div class="rk-control-label">
                        <span>Średnica badanej rury</span>
                    </div>
                    <div class="rk-switch-group">
                        <div class="rk-switch-btn active" id="pipe16">16 x 2.0 mm</div>
                        <div class="rk-switch-btn" id="pipe20">20 x 2.0 mm</div>
                    </div>
                </div>

            </div>

            <div class="rk-results-box">
                <div class="rk-result-metric">
                    <div class="rk-metric-title">Przepływ masowy w pętli</div>
                    <div class="rk-metric-value-wrap">
                        <span class="rk-metric-num" id="resMass" style="color:#ffffff;">130</span>
                        <span class="rk-metric-unit">kg/h</span>
                    </div>
                </div>

                <div class="rk-result-metric">
                    <div class="rk-metric-title">Łączny spadek ciśnienia (z oporem miejscowym)</div>
                    <div class="rk-metric-value-wrap">
                        <span class="rk-metric-num" id="resKpa">20.4</span>
                        <span class="rk-metric-unit">kPa</span>
                    </div>
                    <div id="badgeKpa" class="rk-status-badge">W GRANICACH NORMY</div>
                </div>

                <div class="rk-result-metric" style="border:none; padding:0;">
                    <div class="rk-metric-title">Prędkość przepływu</div>
                    <div class="rk-metric-value-wrap">
                        <span class="rk-metric-num" id="resVel">0.30</span>
                        <span class="rk-metric-unit">m/s</span>
                    </div>
                    <div id="badgeVel" class="rk-status-badge rk-badge-ok">OPTYMALNA PRĘDKOŚĆ</div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // UI Elements
    var rngWatt = document.getElementById('rngWatt');
    var dispWatt = document.getElementById('dispWatt');
    var rngLen = document.getElementById('rngLen');
    var dispLen = document.getElementById('dispLen');
    
    var modeGas = document.getElementById('modeGas');
    var modeHP = document.getElementById('modeHP');
    var pipe16 = document.getElementById('pipe16');
    var pipe20 = document.getElementById('pipe20');
    
    // Result Elements
    var resMass = document.getElementById('resMass');
    var resKpa = document.getElementById('resKpa');
    var badgeKpa = document.getElementById('badgeKpa');
    var resVel = document.getElementById('resVel');
    var badgeVel = document.getElementById('badgeVel');

    // State Variables
    var currentDt = 10; // 10K (Gaz) domyślnie
    var currentPipe = 16; // 16mm domyślnie

    // Event Listeners
    modeGas.addEventListener('click', function() {
        modeGas.classList.add('active');
        modeHP.classList.remove('active');
        currentDt = 10;
        updateSim();
    });

    modeHP.addEventListener('click', function() {
        modeHP.classList.add('active');
        modeGas.classList.remove('active');
        currentDt = 5;
        updateSim();
    });

    pipe16.addEventListener('click', function() {
        pipe16.classList.add('active');
        pipe20.classList.remove('active');
        currentPipe = 16;
        updateSim();
    });

    pipe20.addEventListener('click', function() {
        pipe20.classList.add('active');
        pipe16.classList.remove('active');
        currentPipe = 20;
        updateSim();
    });

    rngWatt.addEventListener('input', function() {
        dispWatt.innerText = this.value + ' W';
        updateSim();
    });

    rngLen.addEventListener('input', function() {
        dispLen.innerText = this.value + ' m';
        updateSim();
    });

    // Core Simulation Logic
    function updateSim() {
        var q = parseInt(rngWatt.value, 10);
        var len = parseInt(rngLen.value, 10);

        // 1. Obliczenie przepływu masowego [kg/h]
        // Wzór uproszczony: Q / (cw * dt) gdzie cw wody ok 1.16 Wh/kgK
        var flow = q / (1.16 * currentDt);
        
        // 2. Estymacja oporu jednostkowego z tabel inżynierskich (R w Pa/m)
        var R = 0;
        var vel = 0;

        if(currentPipe === 16) {
            // Estymacja krzywej dla 16x2.0 (wew 12mm)
            // ok. 120 Pa/m przy 100 kg/h, drastycznie rośnie
            R = Math.pow((flow / 10), 1.85) * 0.16;
            vel = flow * 0.00245; 
        } else {
            // Estymacja krzywej dla 20x2.0 (wew 16mm)
            // ok. 25 Pa/m przy 100 kg/h
            R = Math.pow((flow / 10), 1.75) * 0.04;
            vel = flow * 0.00138;
        }

        // 3. Spadek ciśnienia całkowity = (Liniowy * Długość) + Opory miejscowe(20%)
        var totalPa = (R * len) * 1.2;
        var totalKpa = totalPa / 1000;

        // 4. Aktualizacja UI Wyników
        resMass.innerText = Math.round(flow);
        resKpa.innerText = totalKpa.toFixed(1);
        resVel.innerText = vel.toFixed(2);

        // 5. Zmiana Statusów i Kolorów kPa
        var isKpaCritical = false;
        if(totalKpa > 20) { isKpaCritical = true; }

        if(isKpaCritical === false) {
            resKpa.style.color = "var(--rk-pres-green)";
            badgeKpa.className = "rk-status-badge rk-badge-ok";
            if(totalKpa > 15) {
                badgeKpa.innerText = "NA GRANICY (wymaga regulacji)";
                badgeKpa.className = "rk-status-badge rk-badge-gold";
                resKpa.style.color = "var(--rk-pres-gold)";
            } else {
                badgeKpa.innerText = "IDEALNE OPORY HYDRAULICZNE";
            }
        } else {
            resKpa.style.color = "var(--rk-pres-red)";
            badgeKpa.className = "rk-status-badge rk-badge-warn";
            badgeKpa.innerText = "KRYTYCZNE OPORY (Zmień rurę/Podziel pętlę)";
        }

        // 6. Zmiana Statusów i Kolorów Prędkości
        var velState = 0; // 0=OK, 1=Slow, 2=Fast
        if(vel < 0.15) { velState = 1; }
        if(vel > 0.6) { velState = 2; }

        if(velState === 0) {
            resVel.style.color = "var(--rk-pres-green)";
            badgeVel.className = "rk-status-badge rk-badge-ok";
            badgeVel.innerText = "PRAWIDŁOWA (Dobre odpowietrzenie)";
        } else if (velState === 1) {
            resVel.style.color = "var(--rk-pres-gold)";
            badgeVel.className = "rk-status-badge rk-badge-gold";
            badgeVel.innerText = "ZBYT WOLNO (Ryzyko zapowietrzenia)";
        } else {
            resVel.style.color = "var(--rk-pres-red)";
            badgeVel.className = "rk-status-badge rk-badge-warn";
            badgeVel.innerText = "ZA SZYBKO (Szumy i Erozja)";
        }
    }

    // Init run
    updateSim();
});
</script>



<style>
:root {
    --rk-proj-dark: #0f172a;
    --rk-proj-blue: #0284c7;
    --rk-proj-accent: #38bdf8;
    --rk-proj-bg: #ffffff;
    --rk-proj-gray: #f8fafc;
    --rk-proj-text: #334155;
    --rk-proj-border: #e2e8f0;
    --rk-proj-gold: #eab308;
}

.rk-proj-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-proj-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.1);
    border: 1px solid var(--rk-proj-border);
    overflow: hidden;
}

/* Nagłówek Sekcji */
.rk-proj-header {
    padding: 45px 50px 30px;
    background: linear-gradient(135deg, #ffffff 0%, var(--rk-proj-gray) 100%);
    border-bottom: 1px solid var(--rk-proj-border);
}

.rk-proj-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-proj-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-proj-header p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-proj-text);
    margin: 0;
}

.rk-proj-header a {
    color: var(--rk-proj-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(2, 132, 199, 0.2);
    transition: border-color 0.3s;
}

.rk-proj-header a:hover {
    border-color: var(--rk-proj-blue);
}

/* Moduł Interaktywny */
.rk-proj-interactive {
    display: grid;
    grid-template-columns: 300px 1fr;
    background: var(--rk-proj-dark);
    color: #ffffff;
}

.rk-proj-sidebar {
    padding: 30px;
    border-right: 1px solid rgba(255,255,255,0.1);
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-proj-tab-btn {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    padding: 20px;
    border-radius: 12px;
    color: #94a3b8;
    font-size: 15px;
    font-weight: 700;
    text-align: left;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-proj-tab-btn:hover {
    background: rgba(255,255,255,0.1);
    color: #ffffff;
}

.rk-proj-tab-btn.active {
    background: var(--rk-proj-blue);
    border-color: var(--rk-proj-accent);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.4);
}

.rk-proj-icon-wrap {
    width: 40px;
    height: 40px;
    border-radius: 8px;
    background: rgba(0,0,0,0.2);
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-proj-tab-btn.active .rk-proj-icon-wrap {
    background: rgba(255,255,255,0.2);
}

/* Wyświetlacz Treści */
.rk-proj-display {
    padding: 40px;
    position: relative;
    overflow: hidden;
}

.rk-proj-content-panel {
    display: none;
    animation: fadeIn 0.4s ease forwards;
}

.rk-proj-content-panel.active {
    display: block;
}

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-proj-content-panel h3 {
    margin: 0 0 15px 0;
    font-size: 24px;
    color: #ffffff;
}

.rk-proj-content-panel p {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin-bottom: 25px;
}

.rk-proj-data-box {
    background: #1e293b;
    border-radius: 12px;
    padding: 20px;
    border: 1px solid #334155;
    display: flex;
    gap: 20px;
    align-items: center;
}

.rk-proj-svg-illustrator {
    width: 80px;
    height: 80px;
    flex-shrink: 0;
}

.rk-proj-data-text h4 {
    margin: 0 0 5px 0;
    color: var(--rk-proj-accent);
    font-size: 16px;
}

.rk-proj-data-text p {
    margin: 0;
    font-size: 14px;
    color: #94a3b8;
    line-height: 1.5;
}

/* Wielkie CTA Sprzedażowe */
.rk-proj-cta-section {
    padding: 45px 50px;
    background: #ffffff;
    text-align: center;
}

.rk-proj-cta-section h3 {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-proj-dark);
    margin: 0 0 15px 0;
}

.rk-btn-sell {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: linear-gradient(135deg, var(--rk-proj-blue) 0%, #0369a1 100%);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 15px 30px -10px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-btn-sell:hover {
    transform: translateY(-4px);
    box-shadow: 0 20px 40px -10px rgba(2, 132, 199, 0.6);
    border-color: var(--rk-proj-accent);
}

.rk-btn-sell svg {
    transition: transform 0.3s;
}

.rk-btn-sell:hover svg {
    transform: translateX(5px);
}

@media (max-width: 768px) {
    .rk-proj-interactive { grid-template-columns: 1fr; }
    .rk-proj-sidebar { padding: 25px; border-right: none; border-bottom: 1px solid rgba(255,255,255,0.1); flex-direction: column; }
    /* Akordeonowy pionowy układ na mobile */
    .rk-proj-header, .rk-proj-display, .rk-proj-cta-section { padding: 30px 20px; }
    .rk-proj-data-box { flex-direction: column; text-align: center; }
    .rk-btn-sell { width: 100%; padding: 18px 20px; font-size: 16px; }
    .rk-proj-header h2 { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-wplyw-projektu",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Jak średnica rury wpływa na profesjonalny projekt ogrzewania podłogowego?",
    "description": "Profesjonalne równoważenie hydrauliczne, precyzyjne wyliczenia OZC oraz dobór pompy obiegowej chronią przed niedogrzaniem i zbędnymi kosztami. Dowiedz się, co zawiera inżynierski projekt.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-optymalizacja",
    "name": "Zestawienie optymalizacji kosztów instalacji płaszczyznowej",
    "description": "Dane z modelu inżynierskiego obrazujące tzw. złoty środek: balans między nakładem na materiał (rury 16/20 mm) a kosztami eksploatacyjnymi (pobór prądu przez pompę ciepła).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczeniowe zapotrzebowanie na ciepło ozc",
      "równoważenie hydrauliczne podłogówki",
      "dobór pompy obiegowej",
      "optymalizacja kosztów instalacji",
      "projekt ogrzewania podłogowego"
    ],
    "measurementTechnique": "Algorytm kalkulujący optymalną moc z metra kwadratowego na podstawie rozstawu rur w strefach przyokiennych oraz oporów układu.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "OZC: Wymusza zagęszczenie rur w strefach brzegowych.",
        "Hydraulika: Wymusza większe średnice na długich odcinkach (np. 20 mm).",
        "Balans: Optymalizacja zabezpiecza przed przewymiarowaniem systemu."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-inżynier",
    "name": "Wirtualny Asystent Projektanta HVAC",
    "description": "Interaktywny eksplorator demonstrujący wpływ obliczeń OZC, równoważenia układu i wyboru materiału na rentowność inwestycji w ogrzewanie.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and CSS3",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-proj-container">
    <div class="rk-proj-header">
        <h2>Jak średnica rury wpływa na profesjonalny projekt ogrzewania podłogowego?</h2>
        <p>Profesjonalny projekt ogrzewania to znacznie więcej niż tylko radosne zliczanie metrów bieżących. Serce systemu to precyzyjne <strong>równoważenie hydrauliczne</strong> układu. Jeśli w Twoim domu pętle mają drastycznie różną długość i przypadkowe przekroje rur, nie osiągniesz komfortu bez kłopotliwego, manualnego dławienia rotametrów. Zobacz, co kryje się za rzetelnym opracowaniem inżynierskim.</p>
    </div>

    <div class="rk-proj-interactive">
        <div class="rk-proj-sidebar" id="rkTabControls">
            <button class="rk-proj-tab-btn active" data-target="tab-ozc">
                <div class="rk-proj-icon-wrap">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                </div>
                Wyliczenia OZC i Moc
            </button>
            <button class="rk-proj-tab-btn" data-target="tab-pompa">
                <div class="rk-proj-icon-wrap">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4"></path><path d="M12 8h.01"></path></svg>
                </div>
                Dobór Pompy i Opory
            </button>
            <button class="rk-proj-tab-btn" data-target="tab-koszty">
                <div class="rk-proj-icon-wrap">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line></svg>
                </div>
                Optymalizacja Kosztów
            </button>
        </div>

        <div class="rk-proj-display">
            <!-- Panel 1: OZC -->
            <div class="rk-proj-content-panel active" id="tab-ozc">
                <h3>Obliczeniowe Zapotrzebowanie na Ciepło (OZC)</h3>
                <p>Nie układamy rur wszędzie tak samo. Średnica rury i jej gęstość są dobierane tak, aby idealnie zrekompensować straty budynku. W strefach przyokiennych <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" style="color:var(--rk-proj-accent);">wyliczenia OZC</a> wymuszają gęstszy rozstaw (np. co 10 cm), aby zapewnić pożądaną moc z każdego metra kwadratowego podłogi.</p>
                <div class="rk-proj-data-box">
                    <svg class="rk-proj-svg-illustrator" viewBox="0 0 100 100">
                        <rect x="20" y="20" width="60" height="60" rx="8" fill="none" stroke="var(--rk-proj-accent)" stroke-width="4" stroke-dasharray="8 4"/>
                        <path d="M 30 50 Q 50 20 70 50 T 110 50" fill="none" stroke="#ef4444" stroke-width="6"/>
                    </svg>
                    <div class="rk-proj-data-text">
                        <h4>Precyzja grzewcza</h4>
                        <p>Dopasowujemy przekaz energii bezpośrednio do wymagań normatywnych pomieszczenia. Zero stref chłodu.</p>
                    </div>
                </div>
            </div>

            <!-- Panel 2: Pompa -->
            <div class="rk-proj-content-panel" id="tab-pompa">
                <h3>Dobór pompy obiegowej</h3>
                <p>Każda pętla stawia opór wodzie. Średnica 16 mm na odcinku 100 metrów dusi układ. Na podstawie wyliczonych spadków ciśnień inżynier dopasowuje <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/" style="color:var(--rk-proj-accent);">wysokość podnoszenia pompy</a>. Wymusza to nierzadko wdrożenie grubszej rury 20 mm w obiegach krytycznych.</p>
                <div class="rk-proj-data-box">
                    <svg class="rk-proj-svg-illustrator" viewBox="0 0 100 100">
                        <circle cx="50" cy="50" r="35" fill="none" stroke="var(--rk-proj-accent)" stroke-width="4"/>
                        <path d="M50 15 L50 40 L65 55" fill="none" stroke="#ffffff" stroke-width="6" stroke-linecap="round"/>
                        <circle cx="50" cy="50" r="8" fill="#eab308"/>
                    </svg>
                    <div class="rk-proj-data-text">
                        <h4>Płynna hydraulika</h4>
                        <p>Odciążenie serca instalacji gwarantuje bezszelestną pracę oraz wydłuża żywotność podzespołów urządzenia grzewczego.</p>
                    </div>
                </div>
            </div>

            <!-- Panel 3: Koszty -->
            <div class="rk-proj-content-panel" id="tab-koszty">
                <h3>Inżynierski Złoty Środek Kosztów</h3>
                <p>Projektowanie to sztuka balansu. Zbyt duża średnica rur to potężny, całkowicie zbędny koszt materiałowy na etapie wylewki. Z kolei rury zbyt wąskie wymuszą wysokie rachunki za prąd. Profesjonalny dokument pozwala znaleźć punkt przecięcia inwestycji z maksymalnym ROI.</p>
                <div class="rk-proj-data-box">
                    <svg class="rk-proj-svg-illustrator" viewBox="0 0 100 100">
                        <path d="M10 80 L90 80" stroke="var(--rk-proj-border)" stroke-width="4"/>
                        <path d="M20 70 L40 30 L60 50 L80 20" fill="none" stroke="var(--rk-proj-gold)" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
                        <circle cx="80" cy="20" r="6" fill="#ffffff"/>
                    </svg>
                    <div class="rk-proj-data-text">
                        <h4>Maksymalne ROI</h4>
                        <p>Oszczędności, które uzyskujesz dzięki zrównoważeniu instalacji, zwracają koszt wykonania projektu zazwyczaj już w pierwszym sezonie.</p>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-proj-cta-section">
        <h3>Nie zgaduj. Zbuduj system oparty na liczbach.</h3>
        <p style="color: #64748b; margin-bottom: 25px;">Decyzje podejmowane "na budowie" kosztują najwięcej. Zabezpiecz swój kapitał i zleć obliczenia specjalistom.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-sell">
            ZAMÓW PROFESJONALNY PROJEKT PODŁOGÓWKI
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var tabs = document.querySelectorAll('.rk-proj-tab-btn');
    var panels = document.querySelectorAll('.rk-proj-content-panel');

    tabs.forEach(function(tab) {
        tab.addEventListener('click', function() {
            // Czyszczenie klas active
            tabs.forEach(function(t) { t.classList.remove('active'); });
            panels.forEach(function(p) { p.classList.remove('active'); });
            
            // Dodanie klasy active do klikniętego elementu
            this.classList.add('active');
            
            // Pobranie id panelu i jego wyświetlenie (zabezpieczone ifem, bez operatorów &&)
            var targetId = this.getAttribute('data-target');
            if(targetId) {
                var targetPanel = document.getElementById(targetId);
                if(targetPanel) {
                    targetPanel.classList.add('active');
                }
            }
        });
    });
});
</script>



<style>
:root {
    --rk-algo-dark: #1e293b;
    --rk-algo-card: #ffffff;
    --rk-algo-bg: #f8fafc;
    --rk-algo-blue: #0284c7;
    --rk-algo-accent: #38bdf8;
    --rk-algo-red: #ef4444;
    --rk-algo-green: #10b981;
    --rk-algo-border: #e2e8f0;
    --rk-algo-text: #475569;
}

.rk-algo-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-algo-card);
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-algo-border);
    overflow: hidden;
}

/* Sekcja Teorii i Algorytmu */
.rk-algo-theory {
    padding: 40px 50px;
    background: linear-gradient(to bottom, #ffffff, var(--rk-algo-bg));
}

.rk-algo-theory h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-algo-dark);
    margin: 0 0 20px 0;
    line-height: 1.3;
}

.rk-algo-theory p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-algo-text);
    margin-bottom: 25px;
}

.rk-algo-steps {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-algo-step {
    display: flex;
    align-items: flex-start;
    gap: 15px;
    background: #ffffff;
    padding: 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-algo-border);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-algo-step-num {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    background: var(--rk-algo-blue);
    color: #ffffff;
    font-weight: 800;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
}

.rk-algo-step-content h3 {
    margin: 0 0 5px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-algo-dark);
}

.rk-algo-step-content p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
}

.rk-algo-step-content a {
    color: var(--rk-algo-blue);
    font-weight: 700;
    text-decoration: none;
    box-shadow: inset 0 -2px 0 rgba(2, 132, 199, 0.2);
}

.rk-algo-step-content code {
    background: #f1f5f9;
    padding: 2px 6px;
    border-radius: 4px;
    font-family: monospace;
    font-weight: 700;
    color: var(--rk-algo-dark);
}

/* Sekcja Kalkulatora Live */
.rk-live-calc-wrapper {
    background: var(--rk-algo-dark);
    padding: 40px 50px;
    color: #ffffff;
}

.rk-calc-header {
    text-align: center;
    margin-bottom: 30px;
}

.rk-calc-header h3 {
    margin: 0;
    font-size: 24px;
    color: #ffffff;
}

.rk-calc-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
}

/* Kontrolki Suwaków */
.rk-control-group {
    margin-bottom: 25px;
}

.rk-control-label {
    display: flex;
    justify-content: space-between;
    margin-bottom: 10px;
    font-weight: 700;
    font-size: 14px;
    color: #cbd5e1;
}

.rk-control-val {
    color: var(--rk-algo-accent);
    font-size: 16px;
}

.rk-slider {
    width: 100%;
    -webkit-appearance: none;
    height: 6px;
    background: #334155;
    border-radius: 3px;
    outline: none;
}

.rk-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-algo-accent);
    cursor: pointer;
    border: 4px solid var(--rk-algo-dark);
    box-shadow: 0 0 0 2px var(--rk-algo-accent);
    transition: transform 0.1s;
}

.rk-slider::-webkit-slider-thumb:active {
    transform: scale(1.2);
}

.rk-toggle-group {
    display: flex;
    background: #334155;
    border-radius: 12px;
    padding: 4px;
}

.rk-toggle-btn {
    flex: 1;
    text-align: center;
    padding: 12px;
    color: #94a3b8;
    font-weight: 700;
    font-size: 14px;
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.3s;
}

.rk-toggle-btn.active {
    background: var(--rk-algo-blue);
    color: #ffffff;
    box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}

/* Wyniki Live */
.rk-results-panel {
    background: #0f172a;
    border: 1px solid #334155;
    border-radius: 16px;
    padding: 30px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-result-item {
    margin-bottom: 20px;
    padding-bottom: 20px;
    border-bottom: 1px solid #1e293b;
}

.rk-result-item:last-child {
    margin-bottom: 0;
    padding-bottom: 0;
    border-bottom: none;
}

.rk-result-title {
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #64748b;
    margin-bottom: 8px;
}

.rk-result-value {
    font-size: 32px;
    font-weight: 900;
    display: flex;
    align-items: baseline;
    gap: 8px;
    transition: color 0.3s;
}

.rk-result-unit {
    font-size: 16px;
    color: #94a3b8;
    font-weight: 600;
}

.rk-status-indicator {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    margin-top: 10px;
}

.status-ok { background: rgba(16, 185, 129, 0.2); color: var(--rk-algo-green); }
.status-warn { background: rgba(239, 68, 68, 0.2); color: var(--rk-algo-red); }

@media (max-width: 768px) {
    .rk-algo-theory, .rk-live-calc-wrapper { padding: 30px 20px; }
    .rk-calc-grid { grid-template-columns: 1fr; gap: 30px; }
    .rk-algo-theory h2 { font-size: 24px; }
    .rk-result-value { font-size: 28px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-algorytm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Algorytm doboru średnicy rur w projekcie ogrzewania podłogowego",
    "description": "5-etapowy inżynierski algorytm doboru rur (Q_obl, strumień masy, straty ciśnienia). Symulator na żywo weryfikujący parametry rury 16x2.0.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-algorytm",
    "name": "Zmienne równania hydraulicznego dla instalacji pętlowych",
    "description": "Baza parametrów dla algorytmu doboru rur: moc cieplna, współczynnik Delta T, ciepło właściwe wody oraz jednostkowe spadki ciśnienia dla pętli PEX/PERT.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wzór na przepływ wody w ogrzewaniu podłogowym",
      "algorytm doboru rur",
      "obliczanie strat ciśnienia w podłogówce",
      "różnica temperatur delta T",
      "prędkość przepływu wody w rurach"
    ],
    "measurementTechnique": "Algorytmiczne przeliczanie strumienia masy (Q / cw * Delta T) na opór w kPa na podstawie długości pętli.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Ograniczenie prędkości: od 0.15 do 0.6 m/s.",
        "Ograniczenie oporu całkowitego pętli: poniżej 20 kPa."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-kalkulator",
    "name": "Interaktywny Kalkulator Algorytmu Hydraulicznego",
    "description": "Narzędzie symulacyjne czasu rzeczywistego, pozwalające inwestorom na wizualizację wzrostu oporów w rurze 16 mm podczas manipulacji mocą grzewczą i różnicą temperatur.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, JS",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-algo-container">
    <div class="rk-algo-theory">
        <h2>Algorytm doboru średnicy rur w projekcie ogrzewania podłogowego</h2>
        <p>Precyzyjny dobór średnicy rury musi poprzedzać dokładny projekt inżynierski. Decyzje podejmowane przed momentem, w którym wylewana jest <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">wylewka betonowa</a>, są nieodwracalne. Zgodnie z normą <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">PN-EN 1264</a>, oto pełen proces decyzyjny projektanta:</p>
        
        <div class="rk-algo-steps">
            <div class="rk-algo-step">
                <div class="rk-algo-step-num">1</div>
                <div class="rk-algo-step-content">
                    <h3>Wyznaczenie strat ciepła (Q_obl)</h3>
                    <p>Obliczamy straty dla każdego pomieszczenia indywidualnie, uwzględniając przenikanie przez przegrody oraz wentylację.</p>
                </div>
            </div>
            <div class="rk-algo-step">
                <div class="rk-algo-step-num">2</div>
                <div class="rk-algo-step-content">
                    <h3>Przyjęcie parametru Delta T</h3>
                    <p>Ustalamy różnicę temperatur między zasilaniem a powrotem. Dla pompy ciepła to najczęściej 5K (np. 35/30 st. C), a dla instalacji mających <a href="https://projekt-ogrzewania.pl/kociol-gazowy/">kocioł gazowy</a> wynosi ona zazwyczaj 10K.</p>
                </div>
            </div>
            <div class="rk-algo-step">
                <div class="rk-algo-step-num">3</div>
                <div class="rk-algo-step-content">
                    <h3>Obliczenie strumienia masy</h3>
                    <p>Korzystamy z fundamentalnego wzoru: <code>Przepływ = Moc (Q) / (Ciepło właściwe * Delta T)</code>. Zmiana Delta T z 10K na 5K podwaja ilość wody, którą trzeba przepompować.</p>
                </div>
            </div>
            <div class="rk-algo-step">
                <div class="rk-algo-step-num">4</div>
                <div class="rk-algo-step-content">
                    <h3>Wybór średnicy i analiza oporów (R)</h3>
                    <p>Sumaryczny opór danej pętli <code>S = (Opór liniowy R * Długość pętli L * 1.2) + Opory miejscowe</code> nie może przekroczyć granicy bezpieczeństwa <strong>20 kPa</strong>.</p>
                </div>
            </div>
            <div class="rk-algo-step">
                <div class="rk-algo-step-num">5</div>
                <div class="rk-algo-step-content">
                    <h3>Weryfikacja prędkości</h3>
                    <p>Woda musi płynąć z prędkością w przedziale <strong>0.15 – 0.6 m/s</strong>. Poniżej 0.15 układ się nie odpowietrzy, powyżej 0.6 pojawią się szumy uderzające w komfort mieszkańców.</p>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-live-calc-wrapper">
        <div class="rk-calc-header">
            <h3>Symulacja dla rury 16x2.0 mm</h3>
            <p style="color: #94a3b8; font-size: 15px; margin-top: 10px;">Sprawdź samodzielnie, jak parametry wpływają na opory układu.</p>
        </div>

        <div class="rk-calc-grid">
            <!-- Interfejs Wprowadzania Danych -->
            <div class="rk-calc-controls">
                
                <div class="rk-control-group">
                    <div class="rk-control-label">
                        <span>Zapotrzebowanie na ciepło (Q)</span>
                        <span class="rk-control-val" id="valQ">1000 W</span>
                    </div>
                    <input type="range" id="sliderQ" class="rk-slider" min="300" max="2500" step="50" value="1000">
                </div>

                <div class="rk-control-group">
                    <div class="rk-control-label">
                        <span>Długość projektowanej pętli</span>
                        <span class="rk-control-val" id="valL">80 m</span>
                    </div>
                    <input type="range" id="sliderL" class="rk-slider" min="40" max="150" step="5" value="80">
                </div>

                <div class="rk-control-group">
                    <div class="rk-control-label">
                        <span>Źródło ciepła (Parametr Delta T)</span>
                    </div>
                    <div class="rk-toggle-group">
                        <div class="rk-toggle-btn active" id="btnDt5" data-dt="5">Pompa Ciepła (5K)</div>
                        <div class="rk-toggle-btn" id="btnDt10" data-dt="10">Kocioł Gazowy (10K)</div>
                    </div>
                </div>

            </div>

            <!-- Panel Wyników Czasu Rzeczywistego -->
            <div class="rk-results-panel">
                
                <div class="rk-result-item">
                    <div class="rk-result-title">Wymagany przepływ czynnika</div>
                    <div class="rk-result-value" style="color: #ffffff;">
                        <span id="resFlow">2.87</span>
                        <span class="rk-result-unit">l/min</span>
                    </div>
                </div>

                <div class="rk-result-item">
                    <div class="rk-result-title">Opory hydrauliczne pętli</div>
                    <div class="rk-result-value" id="resPressure">
                        <span id="valPressure">14.2</span>
                        <span class="rk-result-unit">kPa</span>
                    </div>
                    <div class="rk-status-indicator" id="statPressure">W NORMIE</div>
                </div>

                <div class="rk-result-item" style="border:none; padding:0;">
                    <div class="rk-result-title">Prędkość przepływu</div>
                    <div class="rk-result-value" id="resVelocity">
                        <span id="valVelocity">0.42</span>
                        <span class="rk-result-unit">m/s</span>
                    </div>
                    <div class="rk-status-indicator" id="statVelocity">W NORMIE</div>
                </div>

            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Referencje UI
    var sliderQ = document.getElementById('sliderQ');
    var valQ = document.getElementById('valQ');
    var sliderL = document.getElementById('sliderL');
    var valL = document.getElementById('valL');
    var btnDt5 = document.getElementById('btnDt5');
    var btnDt10 = document.getElementById('btnDt10');
    
    // Referencje Wyników
    var resFlow = document.getElementById('resFlow');
    var valPressure = document.getElementById('valPressure');
    var statPressure = document.getElementById('statPressure');
    var colorPressure = document.getElementById('resPressure');
    var valVelocity = document.getElementById('valVelocity');
    var statVelocity = document.getElementById('statVelocity');
    var colorVelocity = document.getElementById('resVelocity');

    var currentDt = 5;

    // Obsługa Toggli Delta T
    btnDt5.addEventListener('click', function() {
        btnDt5.classList.add('active');
        btnDt10.classList.remove('active');
        currentDt = 5;
        calculatePhysics();
    });

    btnDt10.addEventListener('click', function() {
        btnDt10.classList.add('active');
        btnDt5.classList.remove('active');
        currentDt = 10;
        calculatePhysics();
    });

    // Obsługa Suwaków
    sliderQ.addEventListener('input', function() {
        valQ.innerText = this.value + ' W';
        calculatePhysics();
    });

    sliderL.addEventListener('input', function() {
        valL.innerText = this.value + ' m';
        calculatePhysics();
    });

    // Silnik Obliczeniowy (Bezpieczny JS)
    function calculatePhysics() {
        var q = parseInt(sliderQ.value);
        var len = parseInt(sliderL.value);
        
        // Strumień masy: Q / (cw * Delta T)
        // Dla ułatwienia cw_wody = 1.16 Wh/kgK
        var flowKgH = q / (1.16 * currentDt);
        var flowLMin = flowKgH / 60;
        
        // Estymacja fizyki dla rury 16x2.0 (wew. 12mm)
        var velocity = flowKgH * 0.00245; 
        
        // Empiryczne uproszczenie oporów liniowych dla prezentacji (rośnie wykładniczo)
        var oporLiniowyM = Math.pow(flowKgH / 10, 1.85) * 0.15; 
        var oporCalkowityPa = (oporLiniowyM * len * 1.2) + (flowKgH * 15); // + złączki/rozdzielacz
        var oporKpa = oporCalkowityPa / 1000;

        // Aktualizacja UI
        resFlow.innerText = flowLMin.toFixed(2);
        valPressure.innerText = oporKpa.toFixed(1);
        valVelocity.innerText = velocity.toFixed(2);

        // Statusy Oporów (z pominięciem "&&" dla bezpieczeństwa HTML parserów)
        var isPressureOk = true;
        if (oporKpa > 20) {
            isPressureOk = false;
        }

        if (isPressureOk) {
            statPressure.innerText = "W NORMIE";
            statPressure.className = "rk-status-indicator status-ok";
            colorPressure.style.color = "#10b981";
        } else {
            statPressure.innerText = "KRYTYCZNE OPORY";
            statPressure.className = "rk-status-indicator status-warn";
            colorPressure.style.color = "#ef4444";
        }

        // Statusy Prędkości (z pominięciem "&&")
        var velStatus = 0; // 0=OK, 1=Za wolno, 2=Za szybko
        if (velocity < 0.15) { velStatus = 1; }
        if (velocity > 0.6) { velStatus = 2; }

        if (velStatus === 0) {
            statVelocity.innerText = "W NORMIE";
            statVelocity.className = "rk-status-indicator status-ok";
            colorVelocity.style.color = "#10b981";
        } else {
            statVelocity.className = "rk-status-indicator status-warn";
            colorVelocity.style.color = "#ef4444";
            if (velStatus === 1) {
                statVelocity.innerText = "BRAK ODPOWIETRZENIA";
            }
            if (velStatus === 2) {
                statVelocity.innerText = "SZUMY / EROZJA";
            }
        }
    }

    // Inicjalne wywołanie
    calculatePhysics();
});
</script>



<style>
:root {
    --rk-chart-dark: #0f172a;
    --rk-chart-panel: #1e293b;
    --rk-chart-blue: #0284c7;
    --rk-chart-accent: #38bdf8;
    --rk-chart-bg: #f8fafc;
    --rk-chart-border: #cbd5e1;
    --rk-chart-text: #334155;
    --rk-chart-r16: #ef4444; /* Czerwony - wysokie opory */
    --rk-chart-r17: #eab308; /* Złoty - średnie opory */
    --rk-chart-r20: #10b981; /* Zielony - niskie opory */
}

.rk-chart-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-chart-blue);
    overflow: hidden;
}

/* Część Opisowa */
.rk-chart-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #ffffff 0%, var(--rk-chart-bg) 100%);
    border-bottom: 1px solid var(--rk-chart-border);
}

.rk-chart-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-chart-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-chart-header p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-chart-text);
    margin: 0;
}

.rk-chart-header a {
    color: var(--rk-chart-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(14, 165, 233, 0.2);
    transition: all 0.3s;
}

.rk-chart-header a:hover {
    border-color: var(--rk-chart-accent);
}

/* Interaktywny Plotter SVG */
.rk-chart-plotter {
    background: var(--rk-chart-dark);
    padding: 40px 50px;
    color: #ffffff;
}

.rk-plotter-title {
    text-align: center;
    margin-bottom: 25px;
}

.rk-plotter-title h3 {
    margin: 0;
    font-size: 20px;
    color: #ffffff;
}

/* Legenda i Kontrolki */
.rk-chart-legend {
    display: flex;
    justify-content: center;
    gap: 15px;
    margin-bottom: 30px;
}

.rk-legend-btn {
    background: #334155;
    border: 2px solid transparent;
    padding: 12px 20px;
    border-radius: 12px;
    color: #ffffff;
    font-weight: 800;
    font-size: 14px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 10px;
    transition: all 0.3s;
    opacity: 0.5;
}

.rk-legend-btn.active {
    opacity: 1;
    background: var(--rk-chart-panel);
}

.rk-legend-btn[data-line="16"].active { border-color: var(--rk-chart-r16); box-shadow: 0 4px 15px rgba(239, 68, 68, 0.2); }
.rk-legend-btn[data-line="17"].active { border-color: var(--rk-chart-r17); box-shadow: 0 4px 15px rgba(234, 179, 8, 0.2); }
.rk-legend-btn[data-line="20"].active { border-color: var(--rk-chart-r20); box-shadow: 0 4px 15px rgba(16, 185, 129, 0.2); }

.rk-legend-color {
    width: 14px;
    height: 14px;
    border-radius: 50%;
}
.rk-legend-btn[data-line="16"] .rk-legend-color { background: var(--rk-chart-r16); }
.rk-legend-btn[data-line="17"] .rk-legend-color { background: var(--rk-chart-r17); }
.rk-legend-btn[data-line="20"] .rk-legend-color { background: var(--rk-chart-r20); }

/* Kontener Wykresu */
.rk-svg-wrapper {
    width: 100%;
    background: var(--rk-chart-panel);
    border: 1px solid #334155;
    border-radius: 16px;
    padding: 20px 20px 10px 10px;
    position: relative;
}

.rk-chart-svg {
    width: 100%;
    height: auto;
    display: block;
}

/* Oś i Siatka */
.rk-axis-line { stroke: #475569; stroke-width: 2; }
.rk-grid-line { stroke: #334155; stroke-width: 1; stroke-dasharray: 4 4; }
.rk-axis-text { fill: #94a3b8; font-family: 'Inter', sans-serif; font-size: 12px; }
.rk-axis-title { fill: #cbd5e1; font-family: 'Inter', sans-serif; font-size: 14px; font-weight: bold; }

/* Linie Wykresu */
.rk-path-line {
    fill: none;
    stroke-width: 4;
    stroke-linecap: round;
    stroke-linejoin: round;
    transition: opacity 0.4s ease, stroke-width 0.2s;
}

.rk-path-line:hover {
    stroke-width: 6;
}

.rk-path-16 { stroke: var(--rk-chart-r16); }
.rk-path-17 { stroke: var(--rk-chart-r17); }
.rk-path-20 { stroke: var(--rk-chart-r20); }

/* Kropki danych */
.rk-data-point {
    transition: r 0.2s, opacity 0.4s;
    cursor: crosshair;
}
.rk-data-point:hover { r: 7; }

.rk-pt-16 { fill: var(--rk-chart-r16); }
.rk-pt-17 { fill: var(--rk-chart-r17); }
.rk-pt-20 { fill: var(--rk-chart-r20); }

/* Tooltip informacyjny z boku */
.rk-chart-info {
    margin-top: 20px;
    text-align: center;
    color: #94a3b8;
    font-size: 14px;
    padding: 15px;
    background: rgba(255,255,255,0.02);
    border-radius: 8px;
}

@media (max-width: 768px) {
    .rk-chart-header, .rk-chart-plotter { padding: 30px 20px; }
    .rk-chart-legend { flex-direction: column; gap: 10px; }
    .rk-legend-btn { justify-content: center; }
    .rk-chart-header h2 { font-size: 24px; }
    .rk-svg-wrapper { padding: 10px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-wykres",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Wykres SVG: Spadek ciśnienia a przepływ w rurach 16, 17 i 20 mm",
    "description": "Interaktywny wykres hydrauliczny obrazujący wykładniczy wzrost oporów w rurach 16x2.0 względem wydajnych systemów 20x2.0 w instalacjach płaszczyznowych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-krzywe",
    "name": "Krzywe charakterystyki oporów hydraulicznych rur ogrzewania podłogowego",
    "description": "Zbiór danych użyty do renderowania wektorowego wykresu SVG. Pokazuje przyrost spadku ciśnienia w Pa/m w funkcji przepływu od 40 do 200 kg/h.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wykres oporów hydraulicznych podłogówki",
      "spadek ciśnienia rura 16 vs 20",
      "charakterystyka rur pex",
      "przepływ wody a spadek ciśnienia",
      "opory liniowe rur wielowarstwowych"
    ],
    "measurementTechnique": "Wizualizacja graficzna zaimplementowana natywnie w SVG, transformująca dane hydrauliczne na krzywe wykładnicze ciśnienia.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "16mm krzywa: Przy 200 kg/h opór osiąga skrajne 480 Pa/m.",
        "20mm krzywa: Przy 200 kg/h opór oscyluje w bezpiecznej granicy 100 Pa/m."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-plotter",
    "name": "Wizualizator Krzywych Hydraulicznych (SVG)",
    "description": "Natywna, interaktywna aplikacja webowa do dynamicznego porównywania wykresów oporów instalacji grzewczych bez użycia zewnętrznych wtyczek.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, JS, SVG support",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-chart-container">
    <div class="rk-chart-header">
        <h2>Wykres: Spadek ciśnienia a przepływ w rurach 16, 17 i 20 mm</h2>
        <p>Nic tak nie obrazuje problemów z hydrauliką, jak suche dane przedstawione na wektorowym wykresie. Wzrost oporów przepływu wody nie jest liniowy – jest krzywą wykładniczą. Im mniejsza średnica rury, tym szybciej linia „wystrzeliwuje” w górę, co wprost przekłada się na dławienie <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompy obiegowej</a>.</p>
        <p style="margin-top: 15px;">Na poniższym interaktywnym wykresie przeanalizuj, co się dzieje z instalacją, gdy przepływ (wymuszony np. przez pompę ciepła) przekracza próg 120 kg/h. Użyj przycisków, aby włączać i wyłączać badane przekroje.</p>
    </div>

    <div class="rk-chart-plotter">
        <div class="rk-plotter-title">
            <h3>Porównanie Oporów Liniowych [Pa/m]</h3>
        </div>

        <div class="rk-chart-legend">
            <button class="rk-legend-btn active" data-line="16">
                <div class="rk-legend-color"></div> Rura 16x2.0
            </button>
            <button class="rk-legend-btn active" data-line="17">
                <div class="rk-legend-color"></div> Rura 17x2.0
            </button>
            <button class="rk-legend-btn active" data-line="20">
                <div class="rk-legend-color"></div> Rura 20x2.0
            </button>
        </div>

        <div class="rk-svg-wrapper">
            <!-- 
                Wykres SVG 
                X = Przepływ [kg/h] (40, 80, 120, 160, 200) => Odwzorowane na pozycje X: 80, 200, 320, 440, 560
                Y = Opór [Pa/m] (0 - 500) => Odwzorowane na Y od 300 (dół) do 40 (góra)
            -->
            <svg viewBox="0 0 620 360" class="rk-chart-svg" preserveAspectRatio="xMidYMid meet">
                
                <!-- Siatka i osie -->
                <line x1="60" y1="300" x2="600" y2="300" class="rk-axis-line" /> <!-- Oś X -->
                <line x1="60" y1="300" x2="60" y2="30" class="rk-axis-line" />  <!-- Oś Y -->
                
                <!-- Oznaczenia osi Y (Co 100 Pa/m. 500Pa/m = 40px, 0Pa/m = 300px. Skok co 52px) -->
                <line x1="60" y1="248" x2="600" y2="248" class="rk-grid-line" />
                <text x="50" y="252" class="rk-axis-text" text-anchor="end">100</text>
                
                <line x1="60" y1="196" x2="600" y2="196" class="rk-grid-line" />
                <text x="50" y="200" class="rk-axis-text" text-anchor="end">200</text>
                
                <line x1="60" y1="144" x2="600" y2="144" class="rk-grid-line" />
                <text x="50" y="148" class="rk-axis-text" text-anchor="end">300</text>
                
                <line x1="60" y1="92" x2="600" y2="92" class="rk-grid-line" />
                <text x="50" y="96" class="rk-axis-text" text-anchor="end">400</text>
                
                <line x1="60" y1="40" x2="600" y2="40" class="rk-grid-line" />
                <text x="50" y="44" class="rk-axis-text" text-anchor="end">500</text>

                <!-- Oznaczenia osi X (40, 80, 120, 160, 200 kg/h) -->
                <text x="80" y="325" class="rk-axis-text" text-anchor="middle">40</text>
                <text x="200" y="325" class="rk-axis-text" text-anchor="middle">80</text>
                <text x="320" y="325" class="rk-axis-text" text-anchor="middle">120</text>
                <text x="440" y="325" class="rk-axis-text" text-anchor="middle">160</text>
                <text x="560" y="325" class="rk-axis-text" text-anchor="middle">200</text>

                <!-- Tytuły Osi -->
                <text x="340" y="350" class="rk-axis-title" text-anchor="middle">Przepływ masowy [kg/h]</text>
                <text x="20" y="170" class="rk-axis-title" transform="rotate(-90 20,170)" text-anchor="middle">Opór jednostkowy [Pa/m]</text>

                <!-- KRZYWA: Rura 20mm (Zielona) - Punkty: 40->2, 80->15, 120->35, 160->65, 200->100 -->
                <!-- Y = 300 - (Value * 0.52) -->
                <g id="grp-20">
                    <path class="rk-path-line rk-path-20" d="M 80 299 C 140 295, 160 292, 200 292 S 280 282, 320 282 S 400 266, 440 266 S 520 248, 560 248" />
                    <circle cx="80" cy="299" r="4" class="rk-data-point rk-pt-20" />
                    <circle cx="200" cy="292" r="4" class="rk-data-point rk-pt-20" />
                    <circle cx="320" cy="282" r="4" class="rk-data-point rk-pt-20" />
                    <circle cx="440" cy="266" r="4" class="rk-data-point rk-pt-20" />
                    <circle cx="560" cy="248" r="4" class="rk-data-point rk-pt-20" />
                </g>

                <!-- KRZYWA: Rura 17mm (Złota) - Punkty: 40->10, 80->45, 120->120, 160->230, 200->350 -->
                <g id="grp-17">
                    <path class="rk-path-line rk-path-17" d="M 80 295 C 140 285, 160 276, 200 276 S 280 237, 320 237 S 400 180, 440 180 S 520 118, 560 118" />
                    <circle cx="80" cy="295" r="4" class="rk-data-point rk-pt-17" />
                    <circle cx="200" cy="276" r="4" class="rk-data-point rk-pt-17" />
                    <circle cx="320" cy="237" r="4" class="rk-data-point rk-pt-17" />
                    <circle cx="440" cy="180" r="4" class="rk-data-point rk-pt-17" />
                    <circle cx="560" cy="118" r="4" class="rk-data-point rk-pt-17" />
                </g>

                <!-- KRZYWA: Rura 16mm (Czerwona) - Punkty: 40->15, 80->70, 120->170, 160->330, 200->480 -->
                <g id="grp-16">
                    <path class="rk-path-line rk-path-16" d="M 80 292 C 140 275, 160 263, 200 263 S 280 211, 320 211 S 400 128, 440 128 S 520 50, 560 50" />
                    <circle cx="80" cy="292" r="4" class="rk-data-point rk-pt-16" />
                    <circle cx="200" cy="263" r="4" class="rk-data-point rk-pt-16" />
                    <circle cx="320" cy="211" r="4" class="rk-data-point rk-pt-16" />
                    <circle cx="440" cy="128" r="4" class="rk-data-point rk-pt-16" />
                    <circle cx="560" cy="50" r="4" class="rk-data-point rk-pt-16" />
                </g>
                
            </svg>
        </div>
        
        <div class="rk-chart-info">
            Zwróć uwagę, jak po przekroczeniu 120 kg/h rura 16 mm wpada w strefę krytycznych oporów (>170 Pa/m), podczas gdy rura 20 mm wciąż utrzymuje parametry niemal liniowe.
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btns = document.querySelectorAll('.rk-legend-btn');

    // Brak jakichkolwiek operatorów zakazanych (&& lub ||)
    for (var i = 0; i < btns.length; i++) {
        btns[i].addEventListener('click', function() {
            var lineId = this.getAttribute('data-line');
            var group = document.getElementById('grp-' + lineId);
            
            if (this.classList.contains('active')) {
                // Wyłączanie
                this.classList.remove('active');
                if (group !== null) {
                    group.style.opacity = '0.1';
                }
            } else {
                // Włączanie
                this.classList.add('active');
                if (group !== null) {
                    group.style.opacity = '1';
                }
            }
        });
    }
});
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-blue: #0284c7;
    --rk-case-accent: #0ea5e9;
    --rk-case-bg: #f8fafc;
    --rk-case-card: #ffffff;
    --rk-case-border: #cbd5e1;
    --rk-case-text: #334155;
    --rk-case-red: #ef4444;
    --rk-case-red-bg: #fef2f2;
    --rk-case-green: #10b981;
    --rk-case-green-bg: #ecfdf5;
    --rk-case-gold: #eab308;
    --rk-case-gold-bg: #fefce8;
}

.rk-case-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-case-card);
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-case-blue);
    overflow: hidden;
}

/* Nagłówek i Historia */
.rk-case-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #ffffff 0%, var(--rk-case-bg) 100%);
    border-bottom: 1px solid var(--rk-case-border);
}

.rk-case-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--rk-case-dark);
    color: #ffffff;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
}

.rk-case-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-case-dark);
    margin: 0 0 20px 0;
    line-height: 1.3;
}

.rk-case-story {
    display: flex;
    gap: 25px;
    background: #ffffff;
    padding: 25px;
    border-radius: 12px;
    border: 1px solid var(--rk-case-border);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-case-avatar {
    flex-shrink: 0;
    width: 60px;
    height: 60px;
    border-radius: 50%;
    background: var(--rk-case-bg);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-case-blue);
    border: 2px solid var(--rk-case-accent);
}

.rk-case-story-text {
    flex: 1;
}

.rk-case-story-text h3 {
    margin: 0 0 10px 0;
    font-size: 18px;
    color: var(--rk-case-dark);
}

.rk-case-story-text p {
    margin: 0 0 15px 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-case-text);
}

.rk-case-story-text p:last-child {
    margin-bottom: 0;
}

.rk-case-story-text strong {
    color: var(--rk-case-dark);
}

/* Panel Interaktywny */
.rk-case-interactive {
    padding: 40px 50px;
    background: var(--rk-case-dark);
    color: #ffffff;
}

.rk-case-interactive h3 {
    text-align: center;
    margin: 0 0 30px 0;
    font-size: 22px;
    color: #ffffff;
}

.rk-case-tabs {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
}

.rk-case-tab-btn {
    flex: 1;
    background: #1e293b;
    border: 2px solid #334155;
    padding: 16px;
    border-radius: 12px;
    color: #cbd5e1;
    font-size: 16px;
    font-weight: 700;
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
}

.rk-case-tab-btn span {
    font-size: 12px;
    font-weight: normal;
    color: #94a3b8;
}

.rk-case-tab-btn.active {
    background: var(--rk-case-blue);
    border-color: var(--rk-case-accent);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.4);
}

.rk-case-tab-btn.active span {
    color: #e0f2fe;
}

/* Panele Wynikowe */
.rk-case-panel {
    display: none;
    background: #1e293b;
    border: 1px solid #334155;
    border-radius: 16px;
    padding: 30px;
    animation: fadeInCase 0.4s ease forwards;
}

.rk-case-panel.active {
    display: block;
}

@keyframes fadeInCase {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-panel-grid {
    display: grid;
    grid-template-columns: 80px 1fr;
    gap: 25px;
    align-items: start;
}

.rk-panel-icon {
    width: 80px;
    height: 80px;
    border-radius: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.icon-danger { background: rgba(239, 68, 68, 0.1); color: var(--rk-case-red); border: 1px solid rgba(239, 68, 68, 0.3); }
.icon-warn { background: rgba(234, 179, 8, 0.1); color: var(--rk-case-gold); border: 1px solid rgba(234, 179, 8, 0.3); }
.icon-success { background: rgba(16, 185, 129, 0.1); color: var(--rk-case-green); border: 1px solid rgba(16, 185, 129, 0.3); }

.rk-panel-content h4 {
    margin: 0 0 10px 0;
    font-size: 20px;
    color: #ffffff;
}

.rk-panel-content p {
    margin: 0 0 20px 0;
    font-size: 15px;
    line-height: 1.6;
    color: #cbd5e1;
}

.rk-panel-stats {
    display: flex;
    gap: 20px;
    border-top: 1px dashed #334155;
    padding-top: 20px;
}

.rk-panel-stat-item {
    flex: 1;
}

.rk-stat-lbl {
    font-size: 12px;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 5px;
}

.rk-stat-val {
    font-size: 22px;
    font-weight: 900;
}

.val-red { color: var(--rk-case-red); }
.val-gold { color: var(--rk-case-gold); }
.val-green { color: var(--rk-case-green); }

@media (max-width: 768px) {
    .rk-case-header, .rk-case-interactive { padding: 30px 20px; }
    .rk-case-story { flex-direction: column; gap: 15px; text-align: center; }
    .rk-case-avatar { margin: 0 auto; }
    .rk-case-tabs { flex-direction: column; gap: 10px; }
    .rk-panel-grid { grid-template-columns: 1fr; text-align: center; }
    .rk-panel-icon { margin: 0 auto; }
    .rk-panel-stats { flex-direction: column; gap: 15px; }
    .rk-case-header h2 { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Studium przypadku: 16 mm czy 20 mm do pompy ciepła?",
    "description": "Analiza błędu projektowego na przykładzie inwestora z Wejherowa. Dlaczego ślepe zaufanie do jednego wymiaru rury może kosztować zniszczenie pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-casestudy",
    "name": "Analiza wariantowa doboru rur dla obiektu 150m2",
    "description": "Porównanie parametrów hydraulicznych (opór kPa, prędkość m/s) dla trzech różnych koncepcji wykonawczych systemu płaszczyznowego z pompą ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "czy rura 16mm wystarczy do pompy ciepła",
      "błędy hydrauliczne w podłogówce",
      "jaka rura do ogrzewania podłogowego",
      "hybrydowy dobór rur podłogowych",
      "studium przypadku ogrzewanie podłogowe"
    ],
    "measurementTechnique": "Ewaluacja empiryczna i obliczeniowa (OZC + opory) 3 koncepcji: Monokultura 16mm, Monokultura 20mm oraz Układ Hybrydowy inżynierski.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Błąd 1: Tylko 16mm generuje opór rzędu 45 kPa (krytyczne dławienie pompy).",
        "Błąd 2: Tylko 20mm we wszystkich małych strefach generuje przewymiarowanie kosztów.",
        "Rozwiązanie: Hybryda - 16mm w sypialniach (krótkie pętle), 20mm w salonie (opór poniżej 18 kPa)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-casestudy",
    "name": "Interaktywne Akta Projektowe (Wizualizator Decyzji)",
    "description": "Moduł symulacyjny pozwalający czytelnikowi sprawdzić hydrauliczne i kosztowe skutki porad powszechnie stosowanych przez wykonawców na budowach.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JS",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-case-container">
    <div class="rk-case-header">
        <div class="rk-case-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Studium Przypadku
        </div>
        <h2>Instalator A kontra Instalator B. Kto ma rację w doborze rur?</h2>
        
        <div class="rk-case-story">
            <div class="rk-case-avatar">
                <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg>
            </div>
            <div class="rk-case-story-text">
                <h3>Pan Tomasz (Wejherowo, woj. pomorskie)</h3>
                <p>Pan Tomasz buduje dom o powierzchni 150 m². Źródłem ciepła ma być nowoczesna pompa ciepła. Na etapie stanu surowego zamkniętego zaprosił na budowę dwóch wykonawców, co zrodziło ogromny dylemat.</p>
                <p><strong>Wykonawca A (starszej daty):</strong> "Panie Tomaszu, dajemy wszędzie standardową rurę 16 mm. Robię tak od 20 lat, wszyscy tak robią, będzie Pan zadowolony."</p>
                <p><strong>Wykonawca B:</strong> "Absolutnie nie! Do pompy ciepła to tylko i wyłącznie rura 20 mm w całym domu, inaczej woda nie przepłynie i pompa padnie w dwa lata."</p>
                <p>Zdezorientowany Inwestor zgłosił się do Projekt-Ogrzewania.pl z prośbą o audyt i rozstrzygnięcie sporu. Prawda okazała się bolesna dla obu wykonawców.</p>
            </div>
        </div>
    </div>

    <div class="rk-case-interactive">
        <h3>Sprawdź wynik audytu dla instalacji Pana Tomasza</h3>

        <div class="rk-case-tabs">
            <button class="rk-case-tab-btn active" data-scenario="instA">
                Wizja Instalatora A
                <span>Wszędzie rura 16 mm</span>
            </button>
            <button class="rk-case-tab-btn" data-scenario="instB">
                Wizja Instalatora B
                <span>Wszędzie rura 20 mm</span>
            </button>
            <button class="rk-case-tab-btn" data-scenario="projekt">
                Werdykt Inżynierski
                <span>System hybrydowy (16+20)</span>
            </button>
        </div>

        <!-- Panel Instalator A -->
        <div class="rk-case-panel active" id="panel-instA">
            <div class="rk-panel-grid">
                <div class="rk-panel-icon icon-danger">
                    <svg width="36" height="36" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                </div>
                <div class="rk-panel-content">
                    <h4>Poważny błąd hydrauliczny</h4>
                    <p>Zastosowanie rury 16 mm na otwartej przestrzeni salonu (45 m²), który przy pompie ciepła wymaga potężnego przepływu (ok. 240 kg/h na pętlę), generuje drastyczny opór. Woda zasilająca pompę "dusi się" w cienkiej rurze, co skutkuje brakiem możliwości wyregulowania układu i permanentnym niedogrzaniem salonu.</p>
                    
                    <div class="rk-panel-stats">
                        <div class="rk-panel-stat-item">
                            <div class="rk-stat-lbl">Opór w salonie</div>
                            <div class="rk-stat-val val-red">45,0 kPa</div>
                            <div style="font-size:12px; color:#cbd5e1; margin-top:5px;">Przekroczona granica 20 kPa!</div>
                        </div>
                        <div class="rk-panel-stat-item">
                            <div class="rk-stat-lbl">Koszty eksploatacji pompy</div>
                            <div class="rk-stat-val val-red">+ 35%</div>
                            <div style="font-size:12px; color:#cbd5e1; margin-top:5px;">Urządzenie pracuje na 100% mocy.</div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <!-- Panel Instalator B -->
        <div class="rk-case-panel" id="panel-instB">
            <div class="rk-panel-grid">
                <div class="rk-panel-icon icon-warn">
                    <svg width="36" height="36" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                </div>
                <div class="rk-panel-content">
                    <h4>Bezpiecznie, ale absurdalnie drogo</h4>
                    <p>Zastosowanie grubej rury 20 mm rozwiązuje problem hydrauliki w salonie, ale w małych sypialniach (10-12 m²) to gigantyczne marnotrawstwo. Gruba rura 20 mm jest twardsza i trudniejsza w ułożeniu (szczególnie w ciasnych łazienkach), a koszty materiału (droższe złączki, grubsza wylewka, droższa rura) niepotrzebnie windują budżet Pana Tomasza.</p>
                    
                    <div class="rk-panel-stats">
                        <div class="rk-panel-stat-item">
                            <div class="rk-stat-lbl">Opór w układzie</div>
                            <div class="rk-stat-val val-gold">12,0 kPa</div>
                            <div style="font-size:12px; color:#cbd5e1; margin-top:5px;">Poniżej normy.</div>
                        </div>
                        <div class="rk-panel-stat-item">
                            <div class="rk-stat-lbl">Zbędne koszty wdrożenia</div>
                            <div class="rk-stat-val val-gold">+ 4 500 PLN</div>
                            <div style="font-size:12px; color:#cbd5e1; margin-top:5px;">Przewymiarowanie materiałowe.</div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <!-- Panel Projekt (Werdykt) -->
        <div class="rk-case-panel" id="panel-projekt">
            <div class="rk-panel-grid">
                <div class="rk-panel-icon icon-success">
                    <svg width="36" height="36" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                </div>
                <div class="rk-panel-content">
                    <h4>Rozwiązanie Inżynierskie (Złoty Środek)</h4>
                    <p>W wykonanym dla Pana Tomasza profesjonalnym projekcie zastosowaliśmy podejście hybrydowe. W małych łazienkach, korytarzach i sypialniach z krótkimi pętlami (do 70m) wykorzystano elastyczną i tańszą rurę 16 mm. W potężnym salonie i kuchni (wymagających potężnego zładu wody dla pompy ciepła) wyliczyliśmy i zastosowaliśmy rurę 20 mm.</p>
                    
                    <div class="rk-panel-stats">
                        <div class="rk-panel-stat-item">
                            <div class="rk-stat-lbl">Zrównoważenie układu</div>
                            <div class="rk-stat-val val-green">Idealne</div>
                            <div style="font-size:12px; color:#cbd5e1; margin-top:5px;">Opory we wszystkich pętlach < 18 kPa.</div>
                        </div>
                        <div class="rk-panel-stat-item">
                            <div class="rk-stat-lbl">Żywotność pompy</div>
                            <div class="rk-stat-val val-green">Maksymalna</div>
                            <div style="font-size:12px; color:#cbd5e1; margin-top:5px;">Optymalny strumień masy wody.</div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btns = document.querySelectorAll('.rk-case-tab-btn');
    var panels = document.querySelectorAll('.rk-case-panel');

    // Bezpieczny JS bez zakazanych operatorów
    for (var i = 0; i < btns.length; i++) {
        btns[i].addEventListener('click', function() {
            
            // Czyszczenie aktywacji
            for (var j = 0; j < btns.length; j++) {
                btns[j].classList.remove('active');
            }
            for (var k = 0; k < panels.length; k++) {
                panels[k].classList.remove('active');
            }

            // Ustawienie aktywności
            this.classList.add('active');
            
            var targetId = 'panel-' + this.getAttribute('data-scenario');
            var targetPanel = document.getElementById(targetId);
            
            if (targetPanel !== null) {
                targetPanel.classList.add('active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-auth-dark: #0f172a;
    --rk-auth-blue: #0369a1;
    --rk-auth-accent: #0ea5e9;
    --rk-auth-bg: #f8fafc;
    --rk-auth-card: #ffffff;
    --rk-auth-border: #cbd5e1;
    --rk-auth-text: #334155;
    --rk-auth-muted: #64748b;
}

.rk-auth-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-auth-card);
    border-radius: 20px;
    box-shadow: 0 10px 30px -10px rgba(3, 105, 161, 0.15);
    border: 1px solid var(--rk-auth-border);
    overflow: hidden;
}

/* Nagłówek Sekcji */
.rk-auth-header {
    padding: 35px 50px 25px;
    background: var(--rk-auth-bg);
    border-bottom: 1px solid var(--rk-auth-border);
}

.rk-auth-header h2 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0;
    line-height: 1.3;
}

/* Interaktywny Panel Ekspercki */
.rk-auth-grid {
    display: grid;
    grid-template-columns: 320px 1fr;
    background: #ffffff;
}

/* Lewa kolumna: Profil */
.rk-auth-profile {
    padding: 40px 30px;
    background: var(--rk-auth-dark);
    color: #ffffff;
    text-align: center;
    border-right: 1px solid rgba(255,255,255,0.1);
}

.rk-auth-photo-wrap {
    width: 140px;
    height: 140px;
    border-radius: 50%;
    margin: 0 auto 20px auto;
    padding: 5px;
    background: linear-gradient(135deg, var(--rk-auth-blue) 0%, var(--rk-auth-accent) 100%);
}

.rk-auth-photo {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    border: 3px solid var(--rk-auth-dark);
}

.rk-auth-name {
    font-size: 22px;
    font-weight: 900;
    margin: 0 0 5px 0;
    color: #ffffff;
}

.rk-auth-title {
    font-size: 14px;
    color: var(--rk-auth-accent);
    text-transform: uppercase;
    letter-spacing: 1px;
    font-weight: 700;
    margin-bottom: 25px;
}

/* Linki Social Media */
.rk-auth-socials {
    display: flex;
    justify-content: center;
    gap: 15px;
    margin-top: 20px;
}

.rk-auth-social-link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: rgba(255,255,255,0.05);
    color: #cbd5e1;
    text-decoration: none;
    border: 1px solid rgba(255,255,255,0.1);
}

.rk-auth-social-link:hover,
.rk-auth-social-link:focus {
    background: var(--rk-auth-blue);
    color: #ffffff;
    border-color: var(--rk-auth-accent);
}

/* Prawa kolumna: Interaktywne Tabele Wiedzy */
.rk-auth-content {
    padding: 40px;
}

.rk-auth-tabs {
    display: flex;
    gap: 10px;
    margin-bottom: 30px;
    border-bottom: 2px solid var(--rk-auth-bg);
    padding-bottom: 15px;
}

.rk-auth-tab-btn {
    background: transparent;
    border: none;
    padding: 10px 20px;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-auth-muted);
    cursor: pointer;
    border-radius: 8px;
}

.rk-auth-tab-btn.active {
    background: var(--rk-auth-blue);
    color: #ffffff;
}

/* Panele Treści (Brak animacji wg wytycznych) */
.rk-auth-panel {
    display: none;
}

.rk-auth-panel.active {
    display: block;
}

.rk-quote-box {
    position: relative;
    padding-left: 25px;
    border-left: 4px solid var(--rk-auth-accent);
}

.rk-quote-icon {
    position: absolute;
    top: -15px;
    left: -15px;
    color: var(--rk-auth-bg);
    z-index: 0;
}

.rk-quote-text {
    font-size: 18px;
    line-height: 1.7;
    color: var(--rk-auth-dark);
    font-weight: 700;
    margin: 0 0 15px 0;
    position: relative;
    z-index: 1;
}

.rk-quote-desc {
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-auth-text);
    margin: 0;
}

/* Tabela Standardów */
.rk-std-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 15px;
}

.rk-std-item {
    background: var(--rk-auth-bg);
    padding: 15px 20px;
    border-radius: 10px;
    border: 1px solid var(--rk-auth-border);
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-std-icon {
    color: var(--rk-auth-blue);
    background: #ffffff;
    width: 36px;
    height: 36px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    border: 1px solid var(--rk-auth-border);
}

.rk-std-text {
    font-size: 15px;
    color: var(--rk-auth-dark);
    font-weight: 600;
    margin: 0;
}

@media (max-width: 768px) {
    .rk-auth-grid { grid-template-columns: 1fr; }
    .rk-auth-header { padding: 30px 25px; }
    .rk-auth-profile { border-right: none; border-bottom: 1px solid rgba(255,255,255,0.1); }
    .rk-auth-content { padding: 30px 20px; }
    .rk-auth-tabs { flex-wrap: wrap; }
    .rk-auth-tab-btn { flex: 1; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-ekspert",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Zdaniem eksperta: Robert Kucharski o kluczowym błędzie w doborze rur",
    "description": "Filozofia inżynierska Roberta Kucharskiego, CEO Projekt-Ogrzewania.pl. Podsumowanie technicznych wymogów dla niezawodnej instalacji płaszczyznowej.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-standardy",
    "name": "Standardy Inżynierskie Projekt-Ogrzewania.pl (2026)",
    "description": "Zbiór rygorystycznych zasad projektowych i wykonawczych stosowanych przez Roberta Kucharskiego przy doborze średnic rur ogrzewania podłogowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowanie instalacji grzewczych",
      "dobór rur podłogówka",
      "inżynieria sanitarna",
      "wytyczne projektowe ogrzewanie",
      "audyt instalacji hydraulicznej"
    ],
    "measurementTechnique": "Weryfikacja projektu instalacji na podstawie normatywnych limitów ciśnień i prędkości przepływu dla danych pętli.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Bezwzględny wymóg: Obliczenia OZC jako fundament doboru średnicy.",
        "Reguła graniczna: Zakaz przekraczania 20 kPa na rozdzielaczu.",
        "Priorytet materiałowy: Stosowanie rur 20mm przy niskim parametrze zasilania pompy ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-autorytet",
    "name": "Panel Weryfikacji Kompetencji Głównego Projektanta",
    "description": "Interaktywna karta profilowa umożliwiająca użytkownikom zapoznanie się z filozofią projektową oraz weryfikację profili społecznościowych inżyniera.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JS",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-auth-container">
    <div class="rk-auth-header">
        <h2>Zdaniem eksperta: Robert Kucharski o kluczowym błędzie w doborze rur</h2>
    </div>

    <div class="rk-auth-grid">
        <div class="rk-auth-profile">
            <div class="rk-auth-photo-wrap">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Inżynier HVAC" class="rk-auth-photo">
            </div>
            <h3 class="rk-auth-name">Robert Kucharski</h3>
            <div class="rk-auth-title">CEO & Główny Projektant</div>
            
            <div class="rk-auth-socials">
                <a href="https://www.facebook.com/projektogrzewaniapl/" class="rk-auth-social-link" target="_blank" rel="noopener" aria-label="Facebook">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path></svg>
                </a>
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" class="rk-auth-social-link" target="_blank" rel="noopener" aria-label="LinkedIn">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle></svg>
                </a>
                <a href="https://x.com/Projekt_HVAC" class="rk-auth-social-link" target="_blank" rel="noopener" aria-label="Platforma X">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4l11.733 16h4.267l-11.733 -16z"></path><path d="M4 20l6.768 -6.768m2.46 -2.46l6.772 -6.772"></path></svg>
                </a>
            </div>
        </div>

        <div class="rk-auth-content">
            <div class="rk-auth-tabs" id="rkAuthTabs">
                <button class="rk-auth-tab-btn active" data-panel="cytat">Filozofia Projektowa</button>
                <button class="rk-auth-tab-btn" data-panel="standardy">Standardy Inżynierskie</button>
            </div>

            <div class="rk-auth-panel active" id="panel-cytat">
                <div class="rk-quote-box">
                    <svg class="rk-quote-icon" width="60" height="60" viewBox="0 0 24 24" fill="currentColor"><path d="M14.017 21v-7.391c0-5.704 3.731-9.57 8.983-10.609l.995 2.151c-2.432.917-3.995 3.638-3.995 5.849h4v10h-9.983zm-14.017 0v-7.391c0-5.704 3.748-9.57 9-10.609l.996 2.151c-2.433.917-3.996 3.638-3.996 5.849h3.983v10h-9.983z"/></svg>
                    <p class="rk-quote-text">
                        Ślepe trzymanie się rury 16 mm w całej instalacji, bez wykonania rzetelnych obliczeń oporów hydraulicznych, to najczęstszy powód, dla którego nowoczesne pompy ciepła pracują na skraju swoich fizycznych możliwości.
                    </p>
                    <p class="rk-quote-desc">
                        Beton wylewki ukrywa te błędy na lata. Jako inżynier powtarzam inwestorom jedno: rury dobieramy na podstawie twardych obliczeń OZC i parametru Delta T, a nie przyzwyczajeń wykonawców, którym wygodniej rozwija się cieńszą rurkę.
                    </p>
                </div>
            </div>

            <div class="rk-auth-panel" id="panel-standardy">
                <div class="rk-std-grid">
                    <div class="rk-std-item">
                        <div class="rk-std-icon">
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                        </div>
                        <p class="rk-std-text">OZC (Obliczeniowe Zapotrzebowanie) to punkt wyjścia.</p>
                    </div>
                    <div class="rk-std-item">
                        <div class="rk-std-icon">
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                        </div>
                        <p class="rk-std-text">Maksymalny opór pętli zawsze poniżej granicy 20 kPa.</p>
                    </div>
                    <div class="rk-std-item">
                        <div class="rk-std-icon">
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                        </div>
                        <p class="rk-std-text">Rury 20mm jako standard dla długich obiegów przy pompie ciepła.</p>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var tabs = document.querySelectorAll('.rk-auth-tab-btn');
    var panels = document.querySelectorAll('.rk-auth-panel');

    // Brak jakichkolwiek operatorów && oraz || dla maksymalnego bezpieczeństwa parserów
    for (var i = 0; i < tabs.length; i++) {
        tabs[i].addEventListener('click', function() {
            
            // Usunięcie aktywnych klas ze wszystkich przycisków i paneli
            for (var j = 0; j < tabs.length; j++) {
                tabs[j].classList.remove('active');
            }
            for (var k = 0; k < panels.length; k++) {
                panels[k].classList.remove('active');
            }

            // Aktywacja klikniętego przycisku
            this.classList.add('active');

            // Odnalezienie i aktywacja odpowiedniego panelu
            var targetPanelId = 'panel-' + this.getAttribute('data-panel');
            var targetPanel = document.getElementById(targetPanelId);
            
            if (targetPanel) {
                targetPanel.classList.add('active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-blue: #0284c7;
    --rk-err-red: #ef4444;
    --rk-err-red-bg: #fef2f2;
    --rk-err-green: #10b981;
    --rk-err-green-bg: #ecfdf5;
    --rk-err-bg: #f8fafc;
    --rk-err-card: #ffffff;
    --rk-err-border: #cbd5e1;
    --rk-err-text: #334155;
    --rk-err-muted: #64748b;
}

.rk-err-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-err-card);
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(239, 68, 68, 0.15);
    border: 1px solid var(--rk-err-red);
    overflow: hidden;
}

/* Nagłówek Sekcji */
.rk-err-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #ffffff 0%, var(--rk-err-red-bg) 100%);
    border-bottom: 1px solid rgba(239, 68, 68, 0.2);
}

.rk-err-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--rk-err-red);
    color: #ffffff;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
}

.rk-err-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-err-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-err-header p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-err-text);
    margin: 0;
}

/* Interaktywny Skaner Błędów */
.rk-err-body {
    padding: 40px 50px;
    background: var(--rk-err-bg);
}

.rk-err-accordion {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-err-item {
    background: #ffffff;
    border: 1px solid var(--rk-err-border);
    border-radius: 12px;
    overflow: hidden;
    transition: all 0.3s ease;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-err-item.active {
    border-color: var(--rk-err-red);
    box-shadow: 0 10px 20px -5px rgba(239, 68, 68, 0.15);
}

.rk-err-btn {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 20px 25px;
    background: transparent;
    border: none;
    cursor: pointer;
    text-align: left;
    transition: background 0.3s;
}

.rk-err-btn:hover {
    background: var(--rk-err-red-bg);
}

.rk-err-icon-wrap {
    flex-shrink: 0;
    width: 44px;
    height: 44px;
    border-radius: 10px;
    background: var(--rk-err-red-bg);
    color: var(--rk-err-red);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s;
}

.rk-err-item.active .rk-err-icon-wrap {
    background: var(--rk-err-red);
    color: #ffffff;
    transform: rotate(180deg);
}

.rk-err-title {
    flex: 1;
}

.rk-err-title h3 {
    margin: 0 0 5px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-err-dark);
}

.rk-err-title span {
    font-size: 13px;
    color: var(--rk-err-muted);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-err-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    background: #ffffff;
}

.rk-err-content-inner {
    padding: 0 25px 25px 89px; /* wyrównanie do tekstu, ominięcie ikony */
}

.rk-err-explanation {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-err-text);
    margin: 0 0 20px 0;
    padding-top: 10px;
    border-top: 1px dashed var(--rk-err-border);
}

.rk-err-solution {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    background: var(--rk-err-green-bg);
    padding: 15px 20px;
    border-radius: 8px;
    border-left: 4px solid var(--rk-err-green);
}

.rk-err-solution svg {
    color: var(--rk-err-green);
    flex-shrink: 0;
    margin-top: 2px;
}

.rk-err-solution p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-err-dark);
    font-weight: 600;
}

.rk-err-explanation a {
    color: var(--rk-err-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px solid rgba(2, 132, 199, 0.3);
}

.rk-err-explanation a:hover {
    border-color: var(--rk-err-blue);
}

@media (max-width: 768px) {
    .rk-err-header, .rk-err-body { padding: 30px 20px; }
    .rk-err-btn { padding: 15px; gap: 15px; }
    .rk-err-icon-wrap { width: 36px; height: 36px; }
    .rk-err-title h3 { font-size: 16px; }
    .rk-err-content-inner { padding: 0 15px 20px 15px; } /* Usunięcie lewego marginesu na mobile */
    .rk-err-header h2 { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Najczęstsze błędy przy doborze średnic rur ogrzewania podłogowego",
    "description": "Lista 5 krytycznych błędów wykonawczych: od pętli 150m dla rury 16mm po brak projektu hydraulicznego. Uniknij awarii pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-bledy",
    "name": "Katalog błędów wykonawczych instalacji płaszczyznowych",
    "description": "Baza najczęstszych usterek projektowych i wykonawczych wpływających na drastyczny wzrost oporów hydraulicznych i spadek wydajności układu grzewczego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błędy w ogrzewaniu podłogowym",
      "za długa pętla podłogówki 16mm",
      "brak projektu hydraulicznego",
      "różnice długości pętli rozdzielacz",
      "złe rury do pompy ciepła"
    ],
    "measurementTechnique": "Identyfikacja odchyleń od normy PN-EN 1264 w zakresie ciśnień, długości obwodów oraz równoważenia na belkach rozdzielacza.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Stosowanie rury 16mm przy przepływach wykraczających poza 2 l/min.",
        "Przekraczanie długości 120m dla pojedynczej pętli (skutkuje niedogrzaniem).",
        "Asymetria pętli powyżej 30m na jednym rozdzielaczu."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-skaner",
    "name": "Interaktywny Skaner Błędów Instalacyjnych",
    "description": "Moduł typu akordeon pozwalający użytkownikom na szybką weryfikację propozycji wykonawców z inżynierskimi standardami bezpieczeństwa.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, JS",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container">
    <div class="rk-err-header">
        <div class="rk-err-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Czarna lista inwestora
        </div>
        <h2>Najczęstsze błędy przy doborze rur</h2>
        <p>Betonowa wylewka wybacza wiele błędów wizualnych, ale fizyka przepływów nie wybacza niczego. Zobacz 5 najczęstszych „grzechów głównych” hydraulików, które po uruchomieniu instalacji prowadzą do nierównomiernego ogrzewania, szumów i gigantycznych rachunków za prąd.</p>
    </div>

    <div class="rk-err-body">
        <div class="rk-err-accordion" id="rkErrAccordion">
            
            <!-- Błąd 1 -->
            <div class="rk-err-item">
                <button class="rk-err-btn">
                    <div class="rk-err-icon-wrap">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                    </div>
                    <div class="rk-err-title">
                        <h3>Cienka rura 16 mm do pompy ciepła</h3>
                        <span>Błąd nr 1: Ślepe przyzwyczajenie</span>
                    </div>
                </button>
                <div class="rk-err-content">
                    <div class="rk-err-content-inner">
                        <p class="rk-err-explanation">
                            Pompa ciepła pracuje wydajnie przy małej różnicy temperatur (ΔT = 5K), co wymusza przetłoczenie dwukrotnie większej masy wody niż kocioł gazowy. Użycie wszędzie rury 16 mm drastycznie dławi system.
                        </p>
                        <div class="rk-err-solution">
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                            <p><strong>Standard Inżynierski:</strong> W salonach i dużych przestrzeniach otwarych napędzanych pompą ciepła projektuj pętle z wykorzystaniem grubszej rury 20x2.0 mm.</p>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Błąd 2 -->
            <div class="rk-err-item">
                <button class="rk-err-btn">
                    <div class="rk-err-icon-wrap">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                    </div>
                    <div class="rk-err-title">
                        <h3>Rozwijanie pętli na 130–150 metrów</h3>
                        <span>Błąd nr 2: Oszczędzanie na rozdzielaczu</span>
                    </div>
                </button>
                <div class="rk-err-content">
                    <div class="rk-err-content-inner">
                        <p class="rk-err-explanation">
                            Wykonawcy często robią <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">za długie pętle podłogówki</a>, aby oszczędzić na wielkości rozdzielacza i ilości rury dobiegowej. Dla rury 16 mm odcinek 150m oznacza przekroczenie 50-60 kPa oporu! Woda ledwo z niej kapie.
                        </p>
                        <div class="rk-err-solution">
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                            <p><strong>Standard Inżynierski:</strong> Trzymaj się żelaznej reguły: dla rury 16 mm długość maksymalna to 90–100 m. Jeśli masz większe pomieszczenie – podziel je na dwa odrębne obiegi grzewcze.</p>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Błąd 3 -->
            <div class="rk-err-item">
                <button class="rk-err-btn">
                    <div class="rk-err-icon-wrap">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                    </div>
                    <div class="rk-err-title">
                        <h3>Asymetria pętli na poziomie 30–50 metrów</h3>
                        <span>Błąd nr 3: Brak balansu hydraulicznego</span>
                    </div>
                </button>
                <div class="rk-err-content">
                    <div class="rk-err-content-inner">
                        <p class="rk-err-explanation">
                            Gdy pod jeden <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-ogrzewania-podlogowego-mosiezny-czy-ze-stali-nierdzewnej/">rozdzielacz</a> podpinasz pętlę łazienkową o długości 40 m oraz pętlę salonową 110 m, woda zawsze wybierze drogę najmniejszego oporu. Salon będzie wiecznie zimny.
                        </p>
                        <div class="rk-err-solution">
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                            <p><strong>Standard Inżynierski:</strong> Pilnuj, aby różnica w długości pętli zasilanych z jednej belki rozdzielacza nie przekraczała 10–15%. Wymaga to mądrego poprowadzenia stref zasilających.</p>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Błąd 4 -->
            <div class="rk-err-item">
                <button class="rk-err-btn">
                    <div class="rk-err-icon-wrap">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                    </div>
                    <div class="rk-err-title">
                        <h3>Rozkładanie rur "z głowy" (brak projektu)</h3>
                        <span>Błąd nr 4: Zgadywanie strat ciepła</span>
                    </div>
                </button>
                <div class="rk-err-content">
                    <div class="rk-err-content-inner">
                        <p class="rk-err-explanation">
                            Wykonawca mówi "dajemy wszędzie co 15 cm i będzie dobrze". Tymczasem duże okna w salonie wymagają potężnej mocy (strefy brzegowe co 10 cm), a dobrze ocieplona sypialnia może wymagać rzadszego rozstawu.
                        </p>
                        <div class="rk-err-solution">
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                            <p><strong>Standard Inżynierski:</strong> <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-glowy-vs-projekt-z-obliczeniami-ile-mozesz-stracic-na-bledach/">Profesjonalny projekt z obliczeniami OZC</a> wyznacza dokładne zapotrzebowanie każdego pomieszczenia. To nie jest koszt, to inwestycja chroniąca Twój kapitał.</p>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Błąd 5 -->
            <div class="rk-err-item">
                <button class="rk-err-btn">
                    <div class="rk-err-icon-wrap">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                    </div>
                    <div class="rk-err-title">
                        <h3>Dobór rur wyłącznie według najniższej ceny</h3>
                        <span>Błąd nr 5: Ukryte koszty tanich materiałów</span>
                    </div>
                </button>
                <div class="rk-err-content">
                    <div class="rk-err-content-inner">
                        <p class="rk-err-explanation">
                            Kupowanie rur bez certyfikowanej <a href="https://projekt-ogrzewania.pl/rura-z-bariera-antydyfuzyjna-evoh/">bariery antydyfuzyjnej EVOH</a> lub no-name'ów z marketu budowlanego. Skutkuje to przenikaniem tlenu do instalacji, korozją rozdzielaczy i zatykaniem się wymiennika w pompie ciepła.
                        </p>
                        <div class="rk-err-solution">
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                            <p><strong>Standard Inżynierski:</strong> W betonie zalewasz element, którego nie wymienisz przez 50 lat. Wybieraj wyłącznie rury wielowarstwowe z pełną barierą tlenową o potwierdzonych parametrach technicznych.</p>
                        </div>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var errorBtns = document.querySelectorAll('.rk-err-btn');
    var errorItems = document.querySelectorAll('.rk-err-item');

    // Bezpieczna pętla bez zakazanych znaków logicznych
    for (var i = 0; i < errorBtns.length; i++) {
        errorBtns[i].addEventListener('click', function() {
            var parentItem = this.parentElement;
            var isActive = false;

            if (parentItem.classList.contains('active')) {
                isActive = true;
            }

            // Zamknięcie wszystkich paneli
            for (var j = 0; j < errorItems.length; j++) {
                errorItems[j].classList.remove('active');
                var content = errorItems[j].querySelector('.rk-err-content');
                if (content !== null) {
                    content.style.maxHeight = null;
                }
            }

            // Otwarcie jeśli był zamknięty
            if (isActive === false) {
                parentItem.classList.add('active');
                var myContent = parentItem.querySelector('.rk-err-content');
                if (myContent !== null) {
                    myContent.style.maxHeight = myContent.scrollHeight + "px";
                }
            }
        });
    }
});
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-blue: #0369a1;
    --rk-faq-light: #f8fafc;
    --rk-faq-border: #e2e8f0;
    --rk-faq-hover: #f1f5f9;
    --rk-faq-accent: #0ea5e9;
    --rk-faq-text: #334155;
}

.rk-faq-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, blinkmacsystemfont, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(3, 105, 161, 0.12);
    border: 1px solid var(--rk-faq-border);
    overflow: hidden;
}

.rk-faq-header {
    background: linear-gradient(135deg, var(--rk-faq-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: #ffffff;
    text-align: center;
}

.rk-faq-header h2 {
    margin: 0;
    font-size: 28px;
    font-weight: 900;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.rk-faq-header p {
    margin: 15px 0 0 0;
    color: #94a3b8;
    font-size: 16px;
    line-height: 1.6;
}

.rk-faq-body {
    padding: 30px 50px;
    background: var(--rk-faq-light);
}

.rk-accordion-item {
    background: #ffffff;
    border: 1px solid var(--rk-faq-border);
    border-radius: 16px;
    margin-bottom: 15px;
    overflow: hidden;
    transition: all 0.3s ease;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-accordion-item:hover {
    border-color: var(--rk-faq-accent);
    box-shadow: 0 10px 15px -3px rgba(14, 165, 233, 0.1);
}

.rk-accordion-btn {
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 24px 30px;
    background: transparent;
    border: none;
    cursor: pointer;
    text-align: left;
    transition: background 0.3s;
}

.rk-accordion-btn:hover {
    background: var(--rk-faq-hover);
}

.rk-accordion-btn h3 {
    margin: 0;
    font-size: 18px;
    font-weight: 700;
    color: var(--rk-faq-dark);
    padding-right: 20px;
    line-height: 1.4;
}

.rk-faq-icon {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-faq-light);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-faq-blue);
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background 0.3s;
}

.rk-accordion-btn.active .rk-faq-icon {
    transform: rotate(180deg);
    background: var(--rk-faq-blue);
    color: #ffffff;
}

.rk-accordion-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    background: #ffffff;
}

.rk-accordion-inner {
    padding: 0 30px 24px 30px;
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-faq-text);
    border-top: 1px dashed transparent;
}

.rk-accordion-btn.active + .rk-accordion-content .rk-accordion-inner {
    border-top-color: var(--rk-faq-border);
    padding-top: 20px;
}

.rk-accordion-inner a {
    color: var(--rk-faq-blue);
    font-weight: 700;
    text-decoration: none;
    box-shadow: inset 0 -2px 0 rgba(3, 105, 161, 0.2);
    transition: all 0.2s;
}

.rk-accordion-inner a:hover {
    box-shadow: inset 0 -10px 0 rgba(3, 105, 161, 0.2);
    color: var(--rk-faq-dark);
}

@media (max-width: 768px) {
    .rk-faq-header { padding: 35px 25px; }
    .rk-faq-body { padding: 25px 20px; }
    .rk-accordion-btn { padding: 20px; }
    .rk-accordion-btn h3 { font-size: 16px; }
    .rk-accordion-inner { padding: 0 20px 20px 20px; font-size: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania dotyczące średnic rur",
    "description": "Zbiór najważniejszych inżynierskich pytań i odpowiedzi na temat rur 16 mm i 20 mm, pomp ciepła, oporów hydraulicznych i prędkości przepływu wody.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy rura 16x2,0 mm jest zawsze wystarczająca do pompy ciepła?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, w przypadku dużych pętli lub salonów o dużej powierzchni, rura 16 mm może generować zbyt wysokie opory, dlatego zalecamy rurę 20 mm."
        }
      },
      {
        "@type": "Question",
        "name": "Jaka jest maksymalna długość pętli dla rury 16 mm?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Dla zapewnienia swobodnej regulacji hydraulicznej, maksymalna długość pętli nie powinna przekraczać 90–100 metrów."
        }
      },
      {
        "@type": "Question",
        "name": "Czy można łączyć rury o różnych średnicach w jednej instalacji?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, stosowanie różnych średnic w zależności od strefy (np. 20 mm w salonie, 16 mm w małych sypialniach) jest praktyką profesjonalną i zalecaną."
        }
      },
      {
        "@type": "Question",
        "name": "Jakie są dopuszczalne opory hydrauliczne pętli?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Sumaryczne opory jednej pętli nie powinny przekraczać 20 kPa, aby zachować możliwość sprawnej regulacji przepływu na rozdzielaczu."
        }
      },
      {
        "@type": "Question",
        "name": "Czy prędkość wody powyżej 0,6 m/s jest szkodliwa?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, przekroczenie prędkości 0,6 m/s powoduje szumy hydrauliczne w instalacji i przyspiesza erozję wewnętrzną rur."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-faq",
    "name": "Baza wiedzy inżynierskiej: Parametry graniczne dla rur grzewczych",
    "description": "Zestawienie parametrów granicznych takich jak maksymalna prędkość (0.6 m/s), opory (20 kPa) i długości pętli rur ogrzewania płaszczyznowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dopuszczalne opory hydrauliczne",
      "maksymalna prędkość wody w podłogówce",
      "rura 16 czy 20 mm",
      "maksymalna długość pętli rury 16 mm",
      "regulacja przepływu na rozdzielaczu"
    ],
    "measurementTechnique": "Określenie krytycznych wartości brzegowych w projektowaniu instalacji OZE (np. ciśnienie w kPa, prędkość w m/s).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Opór graniczny pętli: Maksymalnie 20 kPa.",
        "Prędkość graniczna przepływu: Maksymalnie 0,6 m/s, aby uniknąć szumów i erozji."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-faq",
    "name": "Interaktywny Panel FAQ Hydrauliki",
    "description": "Dynamiczny komponent przeglądarkowy pozwalający inwestorom na błyskawiczne odnajdywanie precyzyjnych parametrów hydraulicznych systemu grzewczego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and CSS3",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-faq-container">
    <div class="rk-faq-header">
        <h2>FAQ – Najczęściej zadawane pytania</h2>
        <p>Ekspercka wiedza techniczna podana bez lania wody. Kliknij pytanie, aby poznać odpowiedź.</p>
    </div>

    <div class="rk-faq-body">
        
        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Czy rura 16x2,0 mm jest zawsze wystarczająca do pompy ciepła?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Nie, w przypadku dużych pętli lub salonów o dużej powierzchni, rura 16 mm może generować zbyt wysokie opory, dlatego zalecamy rurę 20 mm. Więcej na ten temat znajdziesz w artykule o <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">rozstawie rur przy pompie ciepła</a>.
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Jaka jest maksymalna długość pętli dla rury 16 mm?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Dla zapewnienia swobodnej regulacji hydraulicznej, <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalna długość pętli</a> nie powinna przekraczać 90–100 metrów.
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Czy można łączyć rury o różnych średnicach w jednej instalacji?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Tak, stosowanie różnych średnic w zależności od strefy (np. 20 mm w salonie, 16 mm w małych sypialniach) jest praktyką profesjonalną i zalecaną przy zaawansowanym inżynierskim podejściu.
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Jakie są dopuszczalne opory hydrauliczne pętli?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Sumaryczne opory jednej pętli nie powinny przekraczać 20 kPa, aby zachować możliwość sprawnej regulacji przepływu na zaworach, w które wyposażony jest <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacz do podłogówki</a>.
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Czy prędkość wody powyżej 0,6 m/s jest szkodliwa?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Tak, przekroczenie prędkości 0,6 m/s powoduje szumy hydrauliczne w instalacji i znacznie przyspiesza erozję wewnętrzną zastosowanych rur grzewczych.
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var accordionBtns = document.querySelectorAll('.rk-accordion-btn');

    accordionBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            var isActive = this.classList.contains('active');
            
            // Zamykanie wszystkich otwartych paneli (opcjonalne - dla zachowania porządku)
            accordionBtns.forEach(function(otherBtn) {
                otherBtn.classList.remove('active');
                var otherPanel = otherBtn.nextElementSibling;
                otherPanel.style.maxHeight = null;
            });

            // Jeśli panel nie był aktywny, otwórz go
            if (isActive === false) {
                this.classList.add('active');
                var panel = this.nextElementSibling;
                panel.style.maxHeight = panel.scrollHeight + "px";
            }
        });
    });
});
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-blue: #0284c7;
    --rk-dl-accent: #0ea5e9;
    --rk-dl-bg: #f8fafc;
    --rk-dl-card: #ffffff;
    --rk-dl-border: #cbd5e1;
    --rk-dl-text: #334155;
    --rk-dl-muted: #64748b;
    --rk-dl-red: #ef4444;
}

.rk-dl-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-dl-card);
    border-radius: 16px;
    border: 1px solid var(--rk-dl-blue);
    overflow: hidden;
}

/* Sekcja Nagłówkowa */
.rk-dl-header {
    padding: 35px 40px;
    background: var(--rk-dl-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-dl-accent);
}

.rk-dl-header h2 {
    font-size: 26px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 10px 0;
    line-height: 1.3;
}

.rk-dl-header p {
    font-size: 15px;
    line-height: 1.6;
    color: #cbd5e1;
    margin: 0;
}

/* Grid Główny */
.rk-dl-grid {
    display: grid;
    grid-template-columns: 350px 1fr;
    background: var(--rk-dl-card);
}

/* Lewa Kolumna - Podgląd Infografiki */
.rk-dl-preview-col {
    padding: 30px;
    background: var(--rk-dl-bg);
    border-right: 1px solid var(--rk-dl-border);
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-dl-thumb-wrap {
    width: 100%;
    background: #ffffff;
    border: 1px solid var(--rk-dl-border);
    border-radius: 8px;
    padding: 10px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.05);
}

.rk-dl-thumb {
    width: 100%;
    height: auto;
    display: block;
    border-radius: 4px;
    border: 1px dashed var(--rk-dl-muted);
}

.rk-dl-thumb-label {
    margin-top: 15px;
    font-size: 12px;
    font-weight: 800;
    color: var(--rk-dl-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
    text-align: center;
}

/* Prawa Kolumna - Akcje i Interfejs */
.rk-dl-actions-col {
    padding: 40px;
    display: flex;
    flex-direction: column;
}

.rk-dl-tabs {
    display: flex;
    gap: 10px;
    margin-bottom: 25px;
    border-bottom: 2px solid var(--rk-dl-bg);
    padding-bottom: 15px;
}

.rk-dl-tab-btn {
    background: transparent;
    border: 1px solid transparent;
    padding: 10px 20px;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-dl-muted);
    cursor: pointer;
    border-radius: 8px;
}

/* Brak animacji wg wytycznych - zmiana stanu jest natychmiastowa */
.rk-dl-tab-btn:hover {
    background: var(--rk-dl-bg);
    color: var(--rk-dl-dark);
}

.rk-dl-tab-btn.active {
    background: var(--rk-dl-blue);
    color: #ffffff;
    border-color: var(--rk-dl-blue);
}

/* Panele */
.rk-dl-panel {
    display: none;
    flex: 1;
}

.rk-dl-panel.active {
    display: block;
}

.rk-dl-panel h3 {
    margin: 0 0 15px 0;
    font-size: 20px;
    color: var(--rk-dl-dark);
    font-weight: 800;
}

.rk-dl-panel p {
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-dl-text);
    margin: 0 0 25px 0;
}

/* Przyciski Pobierania */
.rk-dl-btn-group {
    display: flex;
    flex-direction: column;
    gap: 15px;
    margin-bottom: 30px;
}

.rk-dl-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 16px 25px;
    border-radius: 12px;
    font-size: 16px;
    font-weight: 800;
    text-decoration: none;
    border: 2px solid transparent;
}

.rk-dl-btn-primary {
    background: var(--rk-dl-blue);
    color: #ffffff;
}

.rk-dl-btn-primary:hover {
    background: #0369a1;
}

.rk-dl-btn-secondary {
    background: #ffffff;
    color: var(--rk-dl-dark);
    border-color: var(--rk-dl-border);
}

.rk-dl-btn-secondary:hover {
    background: var(--rk-dl-bg);
    border-color: var(--rk-dl-muted);
}

/* Notka Prawna */
.rk-dl-copyright {
    margin-top: auto;
    padding-top: 20px;
    border-top: 1px dashed var(--rk-dl-border);
    font-size: 12px;
    line-height: 1.5;
    color: var(--rk-dl-muted);
}

.rk-dl-copyright strong {
    color: var(--rk-dl-dark);
}

@media (max-width: 768px) {
    .rk-dl-grid { grid-template-columns: 1fr; }
    .rk-dl-preview-col { border-right: none; border-bottom: 1px solid var(--rk-dl-border); padding: 25px; }
    .rk-dl-actions-col { padding: 25px; }
    .rk-dl-header { padding: 25px; }
    .rk-dl-header h2 { font-size: 22px; }
    .rk-dl-tabs { flex-direction: column; }
    .rk-dl-tab-btn { text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-materialy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Materiały do pobrania: Średnice rur w pigułce",
    "description": "Autorska infografika oraz techniczny plik PDF zestawiający kluczowe parametry rur wielowarstwowych stosowanych w inżynierii ogrzewania podłogowego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/02/Infografika-Srednice-rur-w-ogrzewaniu-podlogowym.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-materialy",
    "name": "Infografika techniczna: Średnice rur w ogrzewaniu podłogowym",
    "description": "Dokumentacja wideo/graficzna i plik PDF do pobrania, zawierający ustandaryzowane wymiary, spadki ciśnień i długości graniczne obiegów płaszczyznowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika ogrzewanie podłogowe",
      "tabela średnic rur pdf",
      "parametry instalacyjne do druku",
      "projekt podłogówki schemat",
      "wymiarowanie pętli grzewczych pdf"
    ],
    "measurementTechnique": "Wizualne odwzorowanie twardych danych liczbowych z normy PN-EN 1264 w formacie WebP oraz ustrukturyzowanym dokumencie PDF.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Plik PDF: Gotowy do druku schemat do weryfikacji pracy instalatora.",
        "Obraz WebP: Szybki podgląd przeglądarkowy kluczowych różnic między rurą 16 a 20 mm."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-biblioteka",
    "name": "Interaktywna Biblioteka Materiałów HVAC",
    "description": "Natywny moduł interfejsu umożliwiający użytkownikowi podgląd i bezpieczne pobieranie autorskich materiałów inżynierskich bezpośrednio ze strony.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JS",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-dl-container">
    <div class="rk-dl-header">
        <h2>Materiały do pobrania: Średnice rur w pigułce</h2>
        <p>Przygotowałem dla Ciebie czytelną infografikę oraz dokument PDF, które podsumowują całą wiedzę inżynierską z tego artykułu. Idealne rozwiązanie do zapisania na smartfonie lub wydrukowania przed rozmową z wykonawcą.</p>
    </div>

    <div class="rk-dl-grid">
        <div class="rk-dl-preview-col">
            <div class="rk-dl-thumb-wrap">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/02/Infografika-Srednice-rur-w-ogrzewaniu-podlogowym.webp" alt="Podgląd infografiki - Średnice rur w ogrzewaniu podłogowym" class="rk-dl-thumb">
            </div>
            <div class="rk-dl-thumb-label">Podgląd dokumentu</div>
        </div>

        <div class="rk-dl-actions-col">
            
            <div class="rk-dl-tabs">
                <button class="rk-dl-tab-btn active" data-dl="pliki">Pliki do pobrania</button>
                <button class="rk-dl-tab-btn" data-dl="licencja">Zasady korzystania</button>
            </div>

            <div class="rk-dl-panel active" id="dl-pliki">
                <h3>Wybierz format pliku</h3>
                <p>Dokument PDF świetnie sprawdzi się do druku (jest wektorowy i nie traci na jakości). Infografika WebP to najlepszy format do szybkiego wysłania instalatorowi w wiadomości MMS lub na WhatsApp.</p>
                
                <div class="rk-dl-btn-group">
                    <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/02/Infografika-Srednice-rur-w-ogrzewaniu-podlogowym.pdf" target="_blank" rel="noopener noreferrer" class="rk-dl-btn rk-dl-btn-primary">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
                        Pobierz dokument (PDF)
                    </a>
                    <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/02/Infografika-Srednice-rur-w-ogrzewaniu-podlogowym.webp" target="_blank" rel="noopener noreferrer" class="rk-dl-btn rk-dl-btn-secondary">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline></svg>
                        Otwórz infografikę (WebP)
                    </a>
                </div>
            </div>

            <div class="rk-dl-panel" id="dl-licencja">
                <h3>Prawa autorskie</h3>
                <p>Przygotowanie tych wyliczeń oraz oprawy graficznej wymagało wielu godzin pracy. Zezwalam na bezpłatne korzystanie z materiałów na użytek własny oraz przesyłanie ich wykonawcom w celu edukacyjnym.</p>
                <p style="color: var(--rk-dl-red); font-weight: 700;">
                    Zabrania się usuwania logotypu Projekt-Ogrzewania.pl oraz edytowania zawartości pliku.
                </p>
            </div>

            <div class="rk-dl-copyright">
                <strong>© 2026 Projekt-Ogrzewania.pl | Autor: Robert Kucharski.</strong><br>
                Udostępnianie materiału PDF dozwolone wyłącznie z zachowaniem logotypu portalu i bez modyfikacji pliku.
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var dlTabs = document.querySelectorAll('.rk-dl-tab-btn');
    var dlPanels = document.querySelectorAll('.rk-dl-panel');

    // Kod pozbawiony znaków && oraz || dla bezpieczeństwa strukturalnego
    for (var i = 0; i < dlTabs.length; i++) {
        dlTabs[i].addEventListener('click', function() {
            
            // Usunięcie klasy active z przycisków
            for (var j = 0; j < dlTabs.length; j++) {
                dlTabs[j].classList.remove('active');
            }
            
            // Usunięcie klasy active z paneli
            for (var k = 0; k < dlPanels.length; k++) {
                dlPanels[k].classList.remove('active');
            }

            // Ustawienie aktywności
            this.classList.add('active');
            
            var targetId = 'dl-' + this.getAttribute('data-dl');
            var targetPanel = document.getElementById(targetId);
            
            if (targetPanel !== null) {
                targetPanel.classList.add('active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-base-dark: #0f172a;
    --rk-base-blue: #0369a1;
    --rk-accent-blue: #0ea5e9;
    --rk-light-bg: #f8fafc;
    --rk-alert-red: #dc2626;
    --rk-success-green: #059669;
    --rk-border: #cbd5e1;
    --rk-tag-bg: #e0f2fe;
    --rk-tag-text: #0284c7;
}

.rk-summary-module {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, blinkmacsystemfont, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 20px 40px -15px rgba(3, 105, 161, 0.15);
    border: 1px solid var(--rk-accent-blue);
    overflow: hidden;
}

/* Sekcja Treści */
.rk-summary-content {
    padding: 40px 50px;
    background: linear-gradient(to bottom, #ffffff, var(--rk-light-bg));
}

.rk-summary-content h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-base-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-summary-content h3 {
    font-size: 20px;
    font-weight: 700;
    color: var(--rk-base-blue);
    margin: 25px 0 15px 0;
}

.rk-summary-content p {
    font-size: 16px;
    line-height: 1.7;
    color: #475569;
    margin-bottom: 20px;
}

.rk-summary-content strong {
    color: var(--rk-base-dark);
    font-weight: 800;
}

.rk-summary-content a {
    color: var(--rk-accent-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(14, 165, 233, 0.3);
    transition: all 0.2s;
}

.rk-summary-content a:hover {
    border-bottom-color: var(--rk-accent-blue);
}

/* Tagi Długi Ogon */
.rk-tags-container {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 30px;
    padding-top: 20px;
    border-top: 1px dashed var(--rk-border);
}

.rk-mat-tag {
    background: var(--rk-tag-bg);
    color: var(--rk-tag-text);
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
    transition: all 0.3s;
}

.rk-mat-tag:hover {
    background: var(--rk-base-blue);
    color: #ffffff;
}

/* Interaktywny Moduł (Dashboard) */
.rk-dashboard-widget {
    background: var(--rk-base-dark);
    padding: 40px 50px;
    color: #ffffff;
}

.rk-dash-header {
    text-align: center;
    margin-bottom: 30px;
}

.rk-dash-header h4 {
    margin: 0;
    font-size: 22px;
    color: #ffffff;
}

.rk-dash-controls {
    display: flex;
    gap: 20px;
    margin-bottom: 30px;
}

.rk-dash-btn {
    flex: 1;
    padding: 18px;
    background: rgba(255,255,255,0.05);
    border: 2px solid rgba(255,255,255,0.1);
    border-radius: 12px;
    color: #ffffff;
    font-weight: 700;
    font-size: 16px;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
}

.rk-dash-btn.active-pro {
    background: rgba(5, 150, 105, 0.2);
    border-color: var(--rk-success-green);
    color: #34d399;
}

.rk-dash-btn.active-amateur {
    background: rgba(220, 38, 38, 0.2);
    border-color: var(--rk-alert-red);
    color: #f87171;
}

/* Wykres / Liczniki SVG */
.rk-dash-display {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    background: #1e293b;
    padding: 30px;
    border-radius: 16px;
    border: 1px solid #334155;
    align-items: center;
}

.rk-gauge-box {
    text-align: center;
}

.rk-gauge-svg {
    width: 100%;
    max-width: 140px;
    margin: 0 auto 15px auto;
}

.gauge-bg { fill: none; stroke: #334155; stroke-width: 12; stroke-linecap: round; }
.gauge-val { fill: none; stroke-width: 12; stroke-linecap: round; transition: stroke-dasharray 0.8s cubic-bezier(0.4, 0, 0.2, 1), stroke 0.5s; stroke-dasharray: 0, 100; }
.state-pro .gauge-val { stroke: var(--rk-success-green); stroke-dasharray: 25, 100; } /* Niskie opory */
.state-amateur .gauge-val { stroke: var(--rk-alert-red); stroke-dasharray: 90, 100; } /* Ekstremalne opory */

.rk-dash-stats h5 { margin: 0 0 10px 0; font-size: 18px; color: #94a3b8; }
.rk-dash-stats .stat-value { font-size: 32px; font-weight: 900; margin-bottom: 5px; transition: color 0.3s; }
.rk-dash-stats .stat-desc { font-size: 14px; color: #cbd5e1; line-height: 1.5; }

.state-pro .stat-value { color: var(--rk-success-green); }
.state-amateur .stat-value { color: var(--rk-alert-red); }

/* Wielkie CTA */
.rk-cta-final {
    padding: 50px;
    text-align: center;
    background: var(--rk-light-bg);
}

.rk-cta-final h3 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-base-dark);
    margin: 0 0 20px 0;
}

.rk-btn-epic {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 15px;
    background: var(--rk-base-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 22px 45px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 15px 30px -10px rgba(3, 105, 161, 0.5);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-btn-epic:hover {
    transform: translateY(-4px);
    background: #0284c7;
    box-shadow: 0 20px 40px -10px rgba(3, 105, 161, 0.6);
}

@media (max-width: 768px) {
    .rk-summary-content, .rk-dashboard-widget, .rk-cta-final { padding: 30px 20px; }
    .rk-dash-controls { flex-direction: column; gap: 15px; } /* Stack vertically on mobile, no horizontal scroll */
    .rk-dash-display { grid-template-columns: 1fr; gap: 20px; text-align: center; }
    .rk-summary-content h2 { font-size: 24px; }
    .rk-btn-epic { width: 100%; padding: 18px 20px; font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Podsumowanie: Świadomy dobór średnicy rur to gwarancja niskich rachunków",
    "description": "Profesjonalne obliczenia hydrauliczne i dobór rur 16 mm lub 20 mm decydują o żywotności pompy ciepła i kosztach ogrzewania. Uniknij błędów instalatorów robionych na oko.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset",
    "name": "Porównanie oporów hydraulicznych rur w podłogówce 2026",
    "description": "Zestawienie parametrów technicznych pokazujące drastyczny wzrost oporów przy zastosowaniu rury 16 mm na zbyt długich odcinkach w stosunku do mieszanych obiegów inżynierskich.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "opory hydrauliczne w podłogówce",
      "rura 16 czy 20 do ogrzewania podłogowego",
      "dobór pompy obiegowej",
      "optymalny przepływ w ogrzewaniu podłogowym",
      "obliczenia hydrauliczne podłogówki"
    ],
    "measurementTechnique": "Symulacja strat ciśnienia (kPa) i prędkości przepływu dla pętli pow. 100 m przy różnych przekrojach z uwzględnieniem mocy pompy ciepła.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Model Na Oko: Zastosowanie wyłącznie rury 16 mm powoduje opory powyżej 60 kPa, dławiąc pompę obiegową.",
        "Model Inżynierski: Dobór średnic (mix 16/20 mm) obniża straty poniżej 20 kPa."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp",
    "name": "Symulator Obciążenia Pompy Obiegowej (Hydraulika)",
    "description": "Interaktywny wizualizator przedstawiający wpływ wyboru średnicy rury (16 mm vs 20 mm) i długości pętli na wysilenie instalacji oraz pobór prądu przez urządzenie grzewcze.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-summary-module">
    <div class="rk-summary-content">
        <h2>Podsumowanie: Świadomy dobór średnicy rur to gwarancja niskich rachunków</h2>
        <p>Świadomy dobór średnic rur to absolutny fundament i inwestycja, która zwraca się nie tylko w postaci <strong>wieloletniej trwałości komponentów</strong>, ale przede wszystkim w ekstremalnie niskich rachunkach za ogrzewanie. Jako praktyk na budowach widzę to codziennie: inwestorzy wydają dziesiątki tysięcy na zaawansowaną pompę ciepła, a następnie pozwalają, aby wykonawca dławił jej potencjał, rozkładając kilometry rury „na oko”.</p>
        
        <h3>Koniec z montażem „na oko” – dlaczego inżynieria wygrywa?</h3>
        <p>Zbyt mały przekrój rury na długich pętlach powoduje gigantyczny wzrost oporów hydraulicznych. W efekcie Twoja <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">pompa obiegowa</a> musi pracować na maksymalnych obrotach, zużywając znacznie więcej prądu i skracając swoją żywotność. Z kolei profesjonalne, inżynierskie obliczenia hydrauliczne pozwalają precyzyjnie zbilansować system – tak, aby woda płynęła swobodnie, a posadzka oddawała ciepło równomiernie, zgodnie z rygorystycznymi standardami nowoczesnego, energooszczędnego budownictwa.</p>
        
        <div class="rk-tags-container">
            <span class="rk-mat-tag"># średnica rury do pompy ciepła</span>
            <span class="rk-mat-tag"># opory hydrauliczne w podłogówce</span>
            <span class="rk-mat-tag"># rura 16 czy 20 do ogrzewania podłogowego</span>
            <span class="rk-mat-tag"># projekt ogrzewania podłogowego cena</span>
            <span class="rk-mat-tag"># źle dobrane rury w podłogówce objawy</span>
            <span class="rk-mat-tag"># jak zmniejszyć rachunki za prąd z pompą ciepła</span>
            <span class="rk-mat-tag"># obliczenia hydrauliczne podłogówki</span>
            <span class="rk-mat-tag"># optymalny przepływ w ogrzewaniu podłogowym</span>
            <span class="rk-mat-tag"># wydajność pompy obiegowej podłogówka</span>
            <span class="rk-mat-tag"># koszt poprawek po zalaniu wylewki</span>
        </div>
    </div>

    <div class="rk-dashboard-widget">
        <div class="rk-dash-header">
            <h4>Symulator Obciążenia Instalacji Hydraulicznej</h4>
        </div>
        
        <div class="rk-dash-controls" id="rkPipeControls">
            <button class="rk-dash-btn active-pro" data-mode="pro">
                <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                Projekt Inżynierski OZC
                <span style="font-size: 12px; font-weight: normal; opacity: 0.8;">Obliczone przekroje rur</span>
            </button>
            <button class="rk-dash-btn" data-mode="amateur">
                <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg>
                Montaż "Na Oko"
                <span style="font-size: 12px; font-weight: normal; opacity: 0.8;">Wszędzie rura 16 mm</span>
            </button>
        </div>

        <div class="rk-dash-display state-pro" id="rkDashDisplay">
            <div class="rk-gauge-box">
                <svg class="rk-gauge-svg" viewBox="0 0 100 50">
                    <path class="gauge-bg" d="M 10 45 A 40 40 0 0 1 90 45" />
                    <path class="gauge-val" d="M 10 45 A 40 40 0 0 1 90 45" pathLength="100" />
                </svg>
            </div>
            <div class="rk-dash-stats" id="rkDashStats">
                <h5>Obciążenie pompy obiegowej</h5>
                <div class="stat-value">Poniżej 20 kPa</div>
                <div class="stat-desc">Idealne środowisko pracy. System zrównoważony hydraulicznie. Pompa pracuje na niskim biegu, minimalizując zużycie energii i maksymalizując współczynnik COP pompy ciepła.</div>
            </div>
        </div>
    </div>

    <div class="rk-cta-final">
        <h3>Nie ryzykuj setek tysięcy na błędach instalatorów</h3>
        <p style="color: #64748b; font-size: 16px; margin-bottom: 30px;">
            Jeśli chcesz mieć absolutną pewność, że Twoja instalacja będzie działać zgodnie z zasadami rzemiosła, a wybrane średnice rur uchronią Cię przed drogimi usterkami – przestań zgadywać.
        </p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-epic">
            ZBUDUJ SWOJĄ WIEDZĘ INŻYNIERSKĄ
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const buttons = document.querySelectorAll('.rk-dash-btn');
    const displayArea = document.getElementById('rkDashDisplay');
    const statsArea = document.getElementById('rkDashStats');

    buttons.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Zmiana przycisków
            buttons.forEach(function(b) {
                b.classList.remove('active-pro');
                b.classList.remove('active-amateur');
            });
            
            let mode = this.getAttribute('data-mode');
            
            if (mode === 'pro') {
                this.classList.add('active-pro');
                displayArea.className = 'rk-dash-display state-pro';
                statsArea.innerHTML = `
                    <h5>Opory hydrauliczne pętli</h5>
                    <div class="stat-value">Poniżej 20 kPa</div>
                    <div class="stat-desc">Idealne środowisko pracy. Zastosowanie odpowiednich średnic rur zapewnia zrównoważony system. Pompa obiegowa pracuje lekko, minimalizując zużycie prądu w domu.</div>
                `;
            } else {
                this.classList.add('active-amateur');
                displayArea.className = 'rk-dash-display state-amateur';
                statsArea.innerHTML = `
                    <h5>Opory hydrauliczne pętli</h5>
                    <div class="stat-value">Powyżej 65 kPa</div>
                    <div class="stat-desc">Krytyczne dławienie systemu! Zbyt wąska rura 16 mm na pętlach o dużej długości wymusza ekstremalną pracę pompy. Oczekuj niedogrzanych stref i wyższych rachunków za prąd.</div>
                `;
            }
        });
    });
});
</script>



<style>
  .po-pref-container {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    background: #ffffff;
    border: 1px solid #dadce0;
    border-radius: 12px;
    padding: 24px;
    margin: 30px 0;
    box-shadow: 0 2px 6px rgba(0,0,0,0.05);
    display: flex;
    flex-direction: column;
    gap: 20px;
    transition: box-shadow 0.3s ease;
  }
  .po-pref-container:hover {
    box-shadow: 0 4px 12px rgba(0,0,0,0.1);
  }
  .po-pref-header {
    display: flex;
    flex-direction: column;
    gap: 8px;
  }
  .po-pref-container h2 {
    margin: 0;
    font-size: 1.4rem;
    color: #202124;
    font-weight: 600;
  }
  .po-pref-container h3 {
    margin: 0;
    font-size: 1.1rem;
    color: #5f6368;
    font-weight: 400;
  }
  .po-pref-body {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #f8f9fa;
    padding: 16px 20px;
    border-radius: 8px;
    border: 1px solid #e8eaed;
  }
  .po-pref-info {
    display: flex;
    align-items: center;
    gap: 16px;
  }
  .po-pref-icon svg {
    width: 40px;
    height: 40px;
  }
  .po-pref-text p {
    margin: 0;
    color: #3c4043;
    font-size: 0.95rem;
    line-height: 1.4;
  }
  .po-pref-text strong {
    color: #1a73e8;
  }
  
  /* Interaktywny przełącznik */
  .po-toggle-wrapper {
    display: flex;
    align-items: center;
    gap: 12px;
  }
  .po-toggle {
    position: relative;
    width: 52px;
    height: 28px;
    background-color: #dadce0;
    border-radius: 34px;
    cursor: pointer;
    transition: background-color 0.3s;
  }
  .po-toggle::after {
    content: "";
    position: absolute;
    top: 2px;
    left: 2px;
    width: 24px;
    height: 24px;
    background-color: white;
    border-radius: 50%;
    transition: transform 0.3s;
    box-shadow: 0 1px 3px rgba(0,0,0,0.3);
  }
  .po-toggle.active {
    background-color: #1a73e8;
  }
  .po-toggle.active::after {
    transform: translateX(24px);
  }
  
  /* Przycisk akcji (ukryty domyślnie, pojawia się po interakcji) */
  .po-action-btn {
    display: none;
    text-decoration: none;
    background: #1a73e8;
    color: #ffffff;
    padding: 12px 24px;
    border-radius: 24px;
    font-weight: 500;
    text-align: center;
    font-size: 1rem;
    transition: background 0.2s;
    margin-top: 10px;
  }
  .po-action-btn:hover {
    background: #1557b0;
    color: #ffffff;
  }
  .po-action-btn.visible {
    display: block;
    animation: fadeIn 0.4s ease;
  }

  @keyframes fadeIn {
    from { opacity: 0; transform: translateY(-10px); }
    to { opacity: 1; transform: translateY(0); }
  }

  /* RWD - Mobile (układ pionowy, akordeon, brak przycisków obok siebie) */
  @media (max-width: 768px) {
    .po-pref-body {
      flex-direction: column;
      align-items: flex-start;
      gap: 20px;
    }
    .po-toggle-wrapper {
      width: 100%;
      justify-content: space-between;
      padding-top: 16px;
      border-top: 1px solid #dadce0;
    }
    .po-action-btn {
      width: 100%;
      box-sizing: border-box;
    }
  }
</style>

<div class="po-pref-container">
  <div class="po-pref-header">
    <h2>Wspieraj Projekt-Ogrzewania.pl</h2>
    <h3>Zostań z nami na dłużej w wynikach Google</h3>
  </div>
  
  <div class="po-pref-body">
    <div class="po-pref-info">
      <div class="po-pref-icon">
        <svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
          <path d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z" fill="#4285F4"></path>
          <path d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z" fill="#34A853"></path>
          <path d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z" fill="#FBBC05"></path>
          <path d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z" fill="#EA4335"></path>
        </svg>
      </div>
      <div class="po-pref-text">
        <p>Ponad 1000 poradników o ogrzewaniu i budowie domu.<br>
        <strong>Dodaj nas do ulubionych źródeł</strong>, aby łatwiej znajdować nasze rozwiązania techniczne.</p>
      </div>
    </div>
    
    <div class="po-toggle-wrapper">
      <span style="font-size: 0.9rem; color: #5f6368; font-weight: 500;">Aktywuj źródło</span>
      <div class="po-toggle" id="googleSourceToggle" aria-label="Włącz preferowane źródło"></div>
    </div>
  </div>
  
  <a href="https://google.com/preferences/source?q=https://projekt-ogrzewania.pl" target="_blank" rel="noopener noreferrer" class="po-action-btn" id="googleSourceLink">
    Przejdź do Google i potwierdź
  </a>
</div>

<script>
  document.addEventListener('DOMContentLoaded', function() {
    var toggleBtn = document.getElementById('googleSourceToggle');
    var actionLink = document.getElementById('googleSourceLink');
    
    toggleBtn.addEventListener('click', function() {
      if (toggleBtn.classList.contains('active') === false) {
        toggleBtn.classList.add('active');
        actionLink.classList.add('visible');
      } else {
        toggleBtn.classList.remove('active');
        actionLink.classList.remove('visible');
      }
    });
  });
</script>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Article",
      "@id": "https://projekt-ogrzewania.pl/google-preferred-sources#article",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://projekt-ogrzewania.pl/google-preferred-sources"
      },
      "headline": "Wspieraj Projekt-Ogrzewania.pl w wynikach Google",
      "description": "Interaktywny widget umożliwiający dodanie portalu Projekt-Ogrzewania.pl do ulubionych źródeł w wyszukiwarce Google. Buduj z nami rzetelną bazę wiedzy o HVAC.",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
      "author": {
        "@type": "Person",
        "name": "Robert Kucharski",
        "url": "https://projekt-ogrzewania.pl/",
        "sameAs": [
          "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
          "https://www.facebook.com/projektogrzewaniapl/",
          "https://www.linkedin.com/in/robert-kucharski-38069b48/",
          "https://x.com/Projekt_HVAC",
          "https://remont.biz.pl/",
          "https://sobir.pl/"
        ]
      },
      "publisher": {
        "@type": "Organization",
        "name": "Projekt-Ogrzewania.pl",
        "logo": {
          "@type": "ImageObject",
          "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
        }
      },
      "datePublished": "2026-07-09",
      "dateModified": "2026-07-09"
    },
    {
      "@type": "Dataset",
      "@id": "https://projekt-ogrzewania.pl/google-preferred-sources#dataset",
      "name": "Preferowane Źródła Google - Statystyki i Interakcja",
      "description": "Zbiór danych i interaktywnych punktów styku pozwalających na ocenę preferencji czytelników dla treści technicznych HVAC.",
      "license": "https://projekt-ogrzewania.pl/",
      "creator": {
        "@type": "Person",
        "name": "Robert Kucharski"
      },
      "keywords": [
        "ulubione źródła google",
        "preferowane wyniki wyszukiwania",
        "autorytet domeny hvac",
        "zaufane portale budowlane",
        "personalizacja google search"
      ],
      "measurementTechnique": "Zliczanie interakcji z widgetem UI typu toggle oraz przekierowań do interfejsu preferencji Google Search",
      "mainEntity": "Optymalizacja zaangażowania użytkownika poprzez interaktywny widget dodawania domeny do preferencji Google."
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/google-preferred-sources#webapplication",
      "name": "Google Preferences Toggle Widget",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "All",
      "description": "Aplikacja webowa w formie widgetu symulującego przełącznik mobilny, integrująca natywne linkowanie do ustawień preferowanych źródeł Google.",
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      }
    }
  ]
}
</script>


<p>Artykuł <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">Średnice rur w ogrzewaniu podłogowym.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Projektowe Obciążenie Cieplne (OZC).</title>
		<link>https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 15 Feb 2026 12:02:50 +0000</pubDate>
				<category><![CDATA[Efektywność cieplna]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Efektywność ogrzewania]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[OZC]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[efektywność pompy ciepła]]></category>
		<category><![CDATA[instalacja co projekt]]></category>
		<category><![CDATA[normy pn en 12831]]></category>
		<category><![CDATA[obliczenia ozc]]></category>
		<category><![CDATA[ogrzewanie podłogowe parametry]]></category>
		<category><![CDATA[ogrzewanie podłogowe projekt]]></category>
		<category><![CDATA[ozc]]></category>
		<category><![CDATA[pompa ciepła projekt]]></category>
		<category><![CDATA[projekt instalacji grzewczej]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[projektowe obciążenie cieplne]]></category>
		<category><![CDATA[rozstaw rur podłogówki]]></category>
		<category><![CDATA[straty ciepła]]></category>
		<category><![CDATA[strumień ciepła podłogówka]]></category>
		<category><![CDATA[zapotrzebowanie na ciepło]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3460</guid>

					<description><![CDATA[<p>Wiele instalacji grzewczych powstaje na podstawie przybliżeń, a nie rzeczywistych danych, co prowadzi do wysokich rachunków i problemów z komfortem cieplnym. Tymczasem Projektowe Obciążenie Cieplne (OZC) to kluczowy element, który pozwala precyzyjnie określić, ile energii potrzebuje Twój dom, aby utrzymać komfort nawet podczas największych mrozów. Od tej wartości zależy dobór rozstawu rur, temperatura zasilania oraz efektywność pompy ciepła. W tym artykule pokazujemy krok po kroku, jak OZC wpływa na projekt ogrzewania podłogowego i dlaczego jego prawidłowe obliczenie decyduje o trwałości, oszczędności i niezawodności całego systemu.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">Projektowe Obciążenie Cieplne (OZC).</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-blue: #0284c7;
    --rk-intro-blue-light: #e0f2fe;
    --rk-intro-green: #059669;
    --rk-intro-green-bg: #ecfdf5;
    --rk-intro-red: #dc2626;
    --rk-intro-red-bg: #fef2f2;
    --rk-intro-gold: #d97706;
    --rk-intro-gold-bg: #fffbeb;
    --rk-intro-gray: #64748b;
    --rk-intro-border: #cbd5e1;
    --rk-intro-bg: #ffffff;
}

.rk-intro-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-intro-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid var(--rk-intro-blue);
    overflow: hidden;
}

/* Sekcja Nagłówkowa */
.rk-intro-header {
    background: linear-gradient(135deg, var(--rk-intro-dark) 0%, #1e293b 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-intro-blue);
    position: relative;
}

.rk-intro-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #7dd3fc;
    padding: 8px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(125, 211, 252, 0.2);
}

.rk-intro-title {
    font-size: 32px;
    font-weight: 900;
    line-height: 1.25;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-intro-title span { color: #38bdf8; }

/* Typografia Wstępu */
.rk-intro-lead {
    font-size: 17px;
    line-height: 1.8;
    color: #e2e8f0;
    margin: 0;
    font-weight: 400;
}

.rk-intro-lead strong {
    color: #ffffff;
    font-weight: 800;
    background: rgba(2, 132, 199, 0.4);
    padding: 2px 6px;
    border-radius: 4px;
}

.rk-intro-link {
    color: #7dd3fc;
    text-decoration: none;
    border-bottom: 1px dashed #7dd3fc;
    transition: all 0.3s;
}

.rk-intro-link:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

/* Symulator Interaktywny */
.rk-intro-interactive {
    padding: 45px 50px;
    background: #f8fafc;
}

.rk-intro-section-title {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-intro-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

/* Przełącznik */
.rk-switcher-box {
    display: flex;
    justify-content: center;
    margin-bottom: 40px;
}

.rk-app-toggle {
    background: #e2e8f0;
    border-radius: 99px;
    padding: 6px;
    display: inline-flex;
    position: relative;
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.06);
    width: 100%;
    max-width: 550px;
}

.rk-toggle-btn {
    flex: 1;
    position: relative;
    z-index: 2;
    padding: 14px 20px;
    font-size: 15px;
    font-weight: 800;
    border: none;
    background: transparent;
    color: #64748b;
    cursor: pointer;
    border-radius: 99px;
    transition: color 0.3s ease;
    text-align: center;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.rk-toggle-btn.active {
    color: #ffffff;
}

.rk-toggle-glider {
    position: absolute;
    top: 6px;
    left: 6px;
    height: calc(100% - 12px);
    width: calc(50% - 6px);
    background: var(--rk-intro-red);
    border-radius: 99px;
    transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), background-color 0.4s ease;
    box-shadow: 0 4px 10px -2px rgba(0,0,0,0.15);
    z-index: 1;
}

.rk-app-toggle[data-mode="pro"] .rk-toggle-glider {
    transform: translateX(100%);
    background: var(--rk-intro-green);
}

/* Dashboard Wyników */
.rk-dashboard {
    background: #ffffff;
    border-radius: 20px;
    border: 2px solid var(--rk-intro-border);
    padding: 35px;
    display: grid;
    grid-template-columns: 180px 1fr;
    gap: 40px;
    align-items: center;
    transition: all 0.4s ease;
}

.rk-dashboard.mode-amateur {
    border-color: var(--rk-intro-red-bg);
    box-shadow: 0 15px 35px -10px rgba(220, 38, 38, 0.12);
}

.rk-dashboard.mode-pro {
    border-color: var(--rk-intro-green-bg);
    box-shadow: 0 15px 35px -10px rgba(5, 150, 105, 0.12);
}

/* SVG Animacje */
.rk-svg-stage {
    width: 100%;
    max-width: 180px;
    margin: 0 auto;
    background: var(--rk-intro-dark);
    border-radius: 16px;
    padding: 20px;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
    position: relative;
    overflow: hidden;
}

.rk-svg-stage svg {
    width: 100%;
    height: auto;
    display: block;
}

/* Animacje wspólne i specyficzne */
.anim-house { transition: fill 0.5s; }
.anim-thermometer-fill { transform-origin: bottom; transition: transform 1s cubic-bezier(0.4, 0, 0.2, 1), fill 0.5s; }
.anim-coin { opacity: 0; transition: opacity 0.3s, transform 0.5s; }

.mode-amateur .anim-house { fill: #334155; }
.mode-amateur .anim-thermometer-fill { transform: scaleY(0.3); fill: var(--rk-intro-blue); }
.mode-amateur .anim-coin { animation: coinDrop 1.5s infinite linear; }
.mode-amateur .anim-coin:nth-child(2) { animation-delay: 0.5s; }
.mode-amateur .anim-coin:nth-child(3) { animation-delay: 1s; }

.mode-pro .anim-house { fill: #1e293b; stroke: var(--rk-intro-green); stroke-width: 2; animation: shieldPulse 2s infinite alternate; }
.mode-pro .anim-thermometer-fill { transform: scaleY(0.85); fill: var(--rk-intro-green); }
.mode-pro .anim-coin { opacity: 1; transform: translateY(0); fill: var(--rk-intro-gold); }

@keyframes coinDrop {
    0% { opacity: 0; transform: translateY(-20px); fill: #ef4444; }
    20% { opacity: 1; }
    80% { opacity: 1; }
    100% { opacity: 0; transform: translateY(30px); fill: #ef4444; }
}

@keyframes shieldPulse {
    0% { filter: drop-shadow(0 0 0 rgba(5, 150, 105, 0)); }
    100% { filter: drop-shadow(0 0 10px rgba(5, 150, 105, 0.4)); }
}

/* Kafelki z danymi */
.rk-data-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 15px;
}

.rk-tile {
    background: #f1f5f9;
    padding: 20px;
    border-radius: 16px;
    border-left: 4px solid transparent;
    transition: all 0.3s ease;
}

.mode-amateur .rk-tile { border-left-color: var(--rk-intro-red); background: var(--rk-intro-red-bg); }
.mode-pro .rk-tile { border-left-color: var(--rk-intro-green); background: var(--rk-intro-green-bg); }

.rk-tile-label {
    display: block;
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: #64748b;
    margin-bottom: 6px;
}

.rk-tile-value {
    display: block;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-intro-dark);
}

.rk-tile-sub {
    display: block;
    font-size: 13px;
    color: #94a3b8;
    margin-top: 4px;
    font-weight: 500;
}

@media (max-width: 768px) {
    .rk-intro-header, .rk-intro-interactive { padding: 35px 25px; }
    .rk-intro-title { font-size: 26px; }
    .rk-dashboard { grid-template-columns: 1fr; text-align: center; padding: 25px; gap: 25px; }
    .rk-svg-stage { max-width: 140px; margin-bottom: 10px; }
    .rk-data-grid { grid-template-columns: 1fr; gap: 12px; }
    .rk-toggle-btn { padding: 12px 10px; font-size: 13px; flex-direction: column; gap: 4px; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Projektowe Obciążenie Cieplne (OZC) – Fundament Inwestycji",
    "description": "Czym jest Projektowe Obciążenie Cieplne (OZC) wg normy PN-EN 12831? Zobacz, dlaczego ten parametr decyduje o kosztach pompy ciepła i bezawaryjności podłogówki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-wstep",
    "name": "Porównanie metod doboru mocy grzewczej budynku",
    "description": "Zestawienie ryzyk i kosztów związanych z doborem instalacji grzewczej szacunkowo ('na oko') w kontraście do rzetelnych inżynierskich obliczeń normatywnych OZC.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowe obciążenie cieplne ozc",
      "norma PN-EN 12831",
      "moc pompy ciepła",
      "rozstaw rur podłogówki",
      "koszty eksploatacji budynku"
    ],
    "measurementTechnique": "Analiza wpływu precyzyjnych obliczeń strat ciepła na redukcję przewymiarowania źródła ciepła oraz optymalizację kosztów operacyjnych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Dobór na oko (szacunkowy): Zwiększa koszty inwestycyjne przez zakup zbyt dużej pompy ciepła oraz podnosi rachunki za prąd z powodu taktowania.",
        "Obliczenia OZC (PN-EN 12831): Optymalizują moc urządzenia, gwarantując najniższe koszty i komfort nawet podczas skrajnych mrozów."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-wstep",
    "name": "Symulator Wpływu OZC na Inwestycję",
    "description": "Interaktywny widżet demonstracyjny obrazujący konsekwencje finansowe i techniczne pominięcia obliczeń Projektowego Obciążenia Cieplnego (OZC) podczas budowy.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA
=========================================== -->
<div class="rk-intro-container" id="rk-ozc-intro-app">
    <!-- Wstęp Merytoryczny -->
    <div class="rk-intro-header">
        <div class="rk-intro-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg>
            Fundament Instalacji
        </div>
        <h2 class="rk-intro-title">Projektowe Obciążenie Cieplne <span>(OZC)</span></h2>
        <p class="rk-intro-lead">
            To kluczowy parametr inżynieryjny definiowany przez <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" class="rk-intro-link">normę PN-EN 12831</a>, określający maksymalną ilość energii cieplnej, jaką należy dostarczyć do budynku w ciągu sekundy (wyrażaną w watach lub kilowatach), aby utrzymać zadaną temperaturę wewnętrzną podczas skrajnie niskich temperatur zewnętrznych.
            <br><br>
            Prawidłowo obliczone <strong>OZC stanowi absolutny fundament projektowania</strong> systemów grzewczych. To ono decyduje o mocy <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-intro-link">pompy ciepła</a>, dokładnym <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-intro-link">rozstawie rur ogrzewania podłogowego</a> oraz rzeczywistych kosztach eksploatacji budynku przez dziesięciolecia.
        </p>
    </div>

    <!-- Symulator Interaktywny -->
    <div class="rk-intro-interactive">
        <h3 class="rk-intro-section-title">Dlaczego ignorowanie OZC to najdroższy błąd inwestora?</h3>
        
        <div class="rk-switcher-box">
            <div class="rk-app-toggle" id="introSwitchContainer" data-mode="amateur">
                <div class="rk-toggle-glider" id="introGlider"></div>
                <button class="rk-toggle-btn active" data-target="amateur">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                    Dobór &#8222;Na oko&#8221;
                </button>
                <button class="rk-toggle-btn" data-target="pro">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    Projekt OZC (PN-EN)
                </button>
            </div>
        </div>

        <div class="rk-dashboard mode-amateur" id="introDashboard">
            <div class="rk-svg-stage">
                <!-- SVG: Dom + Termometr + Pieniądze -->
                <svg viewBox="0 0 100 100">
                    <!-- Dom -->
                    <path class="anim-house" d="M 10 50 L 50 15 L 90 50 L 90 90 L 10 90 Z" fill="#334155" />
                    <rect x="40" y="60" width="20" height="30" fill="#0f172a" />
                    <!-- Termometr -->
                    <rect x="20" y="30" width="8" height="40" rx="4" fill="#1e293b" />
                    <circle cx="24" cy="70" r="8" fill="#1e293b" />
                    <rect class="anim-thermometer-fill" x="22" y="32" width="4" height="38" rx="2" />
                    <circle cx="24" cy="70" r="5" class="anim-thermometer-fill" />
                    <!-- Pieniądze / Utrata -->
                    <circle class="anim-coin" cx="75" cy="40" r="4" />
                    <circle class="anim-coin" cx="80" cy="55" r="4" />
                    <circle class="anim-coin" cx="70" cy="70" r="4" />
                </svg>
            </div>
            
            <div class="rk-data-grid">
                <div class="rk-tile">
                    <span class="rk-tile-label" id="dynLbl1">Koszty inwestycyjne</span>
                    <span class="rk-tile-value" id="dynVal1">Drastycznie zawyżone</span>
                    <span class="rk-tile-sub" id="dynSub1">Przewymiarowana pompa ciepła</span>
                </div>
                <div class="rk-tile">
                    <span class="rk-tile-label" id="dynLbl2">Ryzyko w czasie mrozów</span>
                    <span class="rk-tile-value" id="dynVal2">Niedogrzanie budynku</span>
                    <span class="rk-tile-sub" id="dynSub2">Zbyt rzadki rozstaw rur</span>
                </div>
                <div class="rk-tile">
                    <span class="rk-tile-label" id="dynLbl3">Zużycie prądu</span>
                    <span class="rk-tile-value" id="dynVal3">Wysokie (Taktowanie)</span>
                    <span class="rk-tile-sub" id="dynSub3">Sprężarka pracuje skokowo</span>
                </div>
                <div class="rk-tile">
                    <span class="rk-tile-label" id="dynLbl4">Bezpieczeństwo</span>
                    <span class="rk-tile-value" id="dynVal4">Loteria wykonawcza</span>
                    <span class="rk-tile-sub" id="dynSub4">Brak twardych danych</span>
                </div>
            </div>
        </div>
    </div>
</div>

<!-- ==========================================
     LOGIKA JS I ZABEZPIECZENIE (DOMAIN LOCK)
=========================================== -->
<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez H2/H3 w strukturze błędu)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-ozc-intro-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 36px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Naruszenie Praw Autorskich</div>
                    <div style="font-size: 14px; color: #cbd5e1; max-width: 500px; margin: 0 auto; line-height: 1.6;">
                        Kontener edukacyjny oraz struktura JSON-LD są własnością serwisu Projekt-Ogrzewania.pl. Wykryto próbę kradzieży kodu na nieautoryzowanej domenie.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora (Przełącznik)
    const switchContainer = document.getElementById('introSwitchContainer');
    const btns = switchContainer.querySelectorAll('.rk-toggle-btn');
    const dashboard = document.getElementById('introDashboard');
    
    // Elementy DOM do podmiany tekstu
    const v1 = document.getElementById('dynVal1'); const s1 = document.getElementById('dynSub1');
    const v2 = document.getElementById('dynVal2'); const s2 = document.getElementById('dynSub2');
    const v3 = document.getElementById('dynVal3'); const s3 = document.getElementById('dynSub3');
    const v4 = document.getElementById('dynVal4'); const s4 = document.getElementById('dynSub4');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Animacja przełącznika
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const targetMode = this.getAttribute('data-target');
            switchContainer.setAttribute('data-mode', targetMode);

            // Aktualizacja treści i klas kontenera SVG/Dashboardu
            if (targetMode === 'pro') {
                dashboard.className = 'rk-dashboard mode-pro';
                
                v1.textContent = "Zoptymalizowane"; v1.style.color = "var(--rk-intro-green)";
                s1.textContent = "Idealnie dobrana moc PC";
                
                v2.textContent = "Pełny komfort cieplny"; v2.style.color = "var(--rk-intro-green)";
                s2.textContent = "Rozstaw obliczony matematycznie";
                
                v3.textContent = "Minimalne (Wysokie COP)"; v3.style.color = "var(--rk-intro-green)";
                s3.textContent = "Stabilna praca inwertera";
                
                v4.textContent = "100% Gwarancji"; v4.style.color = "var(--rk-intro-green)";
                s4.textContent = "Instalacja oparta na fizyce";

            } else {
                dashboard.className = 'rk-dashboard mode-amateur';
                
                v1.textContent = "Drastycznie zawyżone"; v1.style.color = "var(--rk-intro-dark)";
                s1.textContent = "Przewymiarowana pompa ciepła";
                
                v2.textContent = "Niedogrzanie budynku"; v2.style.color = "var(--rk-intro-dark)";
                s2.textContent = "Zbyt rzadki rozstaw rur";
                
                v3.textContent = "Wysokie (Taktowanie)"; v3.style.color = "var(--rk-intro-dark)";
                s3.textContent = "Sprężarka pracuje skokowo";
                
                v4.textContent = "Loteria wykonawcza"; v4.style.color = "var(--rk-intro-dark)";
                s4.textContent = "Brak twardych danych";
            }
        });
    });
});
</script>



<style>
:root {
    --rk-tsim-dark: #0f172a;
    --rk-tsim-panel: #1e293b;
    --rk-tsim-blue: #0284c7;
    --rk-tsim-blue-light: #38bdf8;
    --rk-tsim-frost: #bae6fd;
    --rk-tsim-red: #ef4444;
    --rk-tsim-orange: #f97316;
    --rk-tsim-green: #10b981;
    --rk-tsim-bg: #ffffff;
    --rk-tsim-border: #e2e8f0;
}

.rk-tsim-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-tsim-bg);
    border-radius: 24px;
    box-shadow: 0 20px 50px -10px rgba(15, 23, 42, 0.15);
    border: 1px solid var(--rk-tsim-border);
    overflow: hidden;
}

/* Sekcja Nagłówkowa */
.rk-tsim-header {
    background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
    padding: 45px 50px 35px;
    color: #f8fafc;
    position: relative;
    border-bottom: 4px solid var(--rk-tsim-blue);
}

.rk-tsim-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(56, 189, 248, 0.15);
    color: var(--rk-tsim-blue-light);
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(56, 189, 248, 0.3);
}

.rk-tsim-header h2 {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-tsim-header h2 span { color: var(--rk-tsim-red); }

.rk-tsim-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
}

.rk-tsim-lead strong {
    color: #ffffff;
    background: rgba(2, 132, 199, 0.4);
    padding: 2px 6px;
    border-radius: 4px;
}

/* Interaktywny Obszar z Suwakiem */
.rk-tsim-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

/* Wybór systemu (Radio Tabs) */
.rk-tsim-tabs {
    display: flex;
    background: #e2e8f0;
    border-radius: 12px;
    padding: 6px;
    margin-bottom: 30px;
    position: relative;
}

.rk-tsim-tab {
    flex: 1;
    text-align: center;
    padding: 14px 10px;
    font-size: 14px;
    font-weight: 800;
    color: #64748b;
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.3s;
    z-index: 2;
}

.rk-tsim-tab.active {
    color: #ffffff;
}

.rk-tsim-tab-glider {
    position: absolute;
    top: 6px;
    bottom: 6px;
    width: calc(50% - 6px);
    background: var(--rk-tsim-red);
    border-radius: 8px;
    transition: transform 0.4s cubic-bezier(0.25, 1, 0.5, 1), background 0.4s;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);
    z-index: 1;
}

.rk-tsim-tabs[data-active="pro"] .rk-tsim-tab-glider {
    transform: translateX(100%);
    background: var(--rk-tsim-green);
}

/* Panel Kontrolny - Suwak Mrozu */
.rk-tsim-control-box {
    background: #ffffff;
    border: 1px solid var(--rk-tsim-border);
    border-radius: 20px;
    padding: 30px;
    margin-bottom: 30px;
    box-shadow: 0 10px 20px -5px rgba(0,0,0,0.03);
    text-align: center;
}

.rk-tsim-temp-display {
    font-size: 42px;
    font-weight: 900;
    color: var(--rk-tsim-dark);
    font-variant-numeric: tabular-nums;
    margin-bottom: 15px;
    transition: color 0.3s;
}

.rk-tsim-slider-wrapper {
    position: relative;
    padding: 20px 0;
}

input[type=range].rk-tsim-slider {
    -webkit-appearance: none;
    width: 100%;
    background: transparent;
    cursor: pointer;
}

input[type=range].rk-tsim-slider:focus { outline: none; }

/* Track */
input[type=range].rk-tsim-slider::-webkit-slider-runnable-track {
    width: 100%;
    height: 12px;
    background: linear-gradient(to right, #0284c7 0%, #38bdf8 30%, #e2e8f0 50%, #f97316 100%);
    border-radius: 99px;
    border: 1px solid #cbd5e1;
}

/* Thumb */
input[type=range].rk-tsim-slider::-webkit-slider-thumb {
    height: 32px;
    width: 32px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--rk-tsim-dark);
    -webkit-appearance: none;
    margin-top: -11px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}
input[type=range].rk-tsim-slider::-webkit-slider-thumb:active { transform: scale(1.1); }

/* Dashboard z wynikami */
.rk-tsim-dashboard {
    display: grid;
    grid-template-columns: 200px 1fr;
    gap: 30px;
    align-items: stretch;
}

.rk-tsim-svg-panel {
    background: var(--rk-tsim-panel);
    border-radius: 16px;
    padding: 25px;
    position: relative;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.rk-tsim-svg { width: 100%; max-width: 150px; height: auto; }

/* Animacje SVG zależne od suwaka i trybu */
.anim-floor { transition: fill 0.5s; }
.anim-snow { opacity: 0; transition: opacity 0.5s; }
.anim-pump { transition: transform 0.3s, fill 0.3s; }
.anim-error { opacity: 0; transform: scale(0); transition: all 0.3s; }

/* Dynamika nadawana przez JS klasami */
.env-cold .anim-snow { opacity: 1; animation: fallSnow 2s linear infinite; }
@keyframes fallSnow { 0% { transform: translateY(-10px); } 100% { transform: translateY(20px); opacity: 0; } }

.sys-fail .anim-floor { fill: #64748b !important; }
.sys-fail .anim-pump { fill: var(--rk-tsim-red); animation: shakePump 0.15s infinite; }
.sys-fail .anim-error { opacity: 1; transform: scale(1); }

.sys-ok .anim-floor { fill: var(--rk-tsim-orange); }
.sys-ok .anim-pump { fill: var(--rk-tsim-green); animation: pulsePump 2s infinite alternate; }

@keyframes shakePump { 0% { transform: translateX(-2px); } 100% { transform: translateX(2px); } }
@keyframes pulsePump { 0% { filter: drop-shadow(0 0 2px #10b981); } 100% { filter: drop-shadow(0 0 10px #10b981); } }

/* Parametry textowe */
.rk-tsim-stats {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-tsim-stat-box {
    background: #ffffff;
    border: 1px solid var(--rk-tsim-border);
    padding: 20px;
    border-radius: 14px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    transition: all 0.3s;
}

.rk-stat-label {
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    color: #64748b;
    margin-bottom: 8px;
}

.rk-stat-value {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-tsim-dark);
}

.val-danger { color: var(--rk-tsim-red) !important; }
.val-success { color: var(--rk-tsim-green) !important; }
.val-cold { color: var(--rk-tsim-blue) !important; }

@media (max-width: 768px) {
    .rk-tsim-header, .rk-tsim-interactive { padding: 30px 20px; }
    .rk-tsim-title { font-size: 24px; }
    .rk-tsim-dashboard { grid-template-columns: 1fr; gap: 20px; }
    .rk-tsim-stats { grid-template-columns: 1fr; }
    .rk-tsim-svg-panel { padding: 40px 20px; }
    .rk-tsim-temp-display { font-size: 36px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Koszty metody \"na oko\" w nowoczesnym budownictwie",
    "description": "Budowa domu jednorodzinnego lub modernizacja starego obiektu to proces pełen kosztownych pułapek. Zobacz, jak brak OZC niszczy pompę ciepła i domowy budżet.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-mrozy",
    "name": "Parametry Pracy Pomp Ciepła podczas Ekstremalnych Mrozów",
    "description": "Zestawienie spadku temperatury wewnętrznej i ryzyka taktowania sprężarki w funkcji temperatury zewnętrznej dla układów przewymiarowanych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "taktowanie pompy ciepła awaria",
      "przewymiarowana pompa ciepła mrozy",
      "niedogrzane pomieszczenia ogrzewanie podłogowe",
      "ucieczka watów straty ciepła",
      "przelicznik 50 W/m2 błędy"
    ],
    "measurementTechnique": "Symulacja wydajności instalacji przy spadku temperatury zewnętrznej od +10°C do -22°C.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Metoda 'na oko': Przy -15°C i poniżej ujawniają się mostki termiczne, podłoga nie przekazuje ciepła, temperatura wewnątrz spada do 16°C.",
        "Projekt OZC: Precyzyjny dobór pętli kompensuje miejscowe straty ciepła, utrzymując stałe 20°C bez nadwyrężania kompresora."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-mrozy",
    "name": "Symulator Ekstremalnych Mrozów",
    "description": "Narzędzie interaktywne pozwalające użytkownikowi symulować spadek temperatury zewnętrznej i obserwować zjawisko taktowania pompy ciepła.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 Range Input and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-tsim-container" id="rk-tsim-app">
    
    <div class="rk-tsim-header">
        <div class="rk-tsim-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Krytyczny Błąd Inwestycyjny
        </div>
        <h2>Koszty metody &#8222;na oko&#8221; <span>a zima stulecia</span></h2>
        <p class="rk-tsim-lead">
            Budowa domu jednorodzinnego lub modernizacja starego obiektu to proces pełen kosztownych pułapek, w którym intuicja i potoczne metody „na oko” (np. przelicznik <strong>50 W/m²</strong>) nieuchronnie prowadzą do katastrofy finansowej i technologicznej.
            <br><br>
            Inwestorzy masowo zmagają się z problemem niedogrzanych pomieszczeń w okresie strefowych mrozów sięgających <strong>-22°C</strong>, bądź stają przed faktem drastycznego przewymiarowania pomp ciepła. Urządzenia te, wchodząc w tzw. taktowanie (zbyt częste cykle pracy sprężarki), ulegają awarii po zaledwie 3–4 latach eksploatacji, generując przy tym gigantyczne rachunki za energię elektryczną. Brak precyzyjnej wiedzy o tym, ile watów energii ucieka przez konkretną ścianę, strop, okno czy system wentylacji, paraliżuje jakikolwiek proces decyzyjny i skazuje instalację płaszczyznową na losową i nieefektywną pracę.
        </p>
    </div>

    <div class="rk-tsim-interactive">
        
        <div class="rk-tsim-tabs" id="tsimTabs" data-active="amateur">
            <div class="rk-tsim-tab-glider" id="tsimGlider"></div>
            <div class="rk-tsim-tab active" data-type="amateur">Przelicznik &#8222;Na oko&#8221;</div>
            <div class="rk-tsim-tab" data-type="pro">Precyzyjne OZC</div>
        </div>

        <div class="rk-tsim-control-box">
            <h3 style="margin:0 0 10px 0; font-size:14px; color:#64748b; text-transform:uppercase; letter-spacing:1px;">Temperatura Zewnętrzna</h3>
            <div class="rk-tsim-temp-display" id="tsimTempDisplay">0°C</div>
            <div class="rk-tsim-slider-wrapper">
                <input type="range" min="-22" max="10" value="0" class="rk-tsim-slider" id="tsimSlider">
            </div>
            <p style="margin:10px 0 0 0; font-size:13px; color:#94a3b8;">Przesuń suwak w lewo, aby symulować mróz.</p>
        </div>

        <div class="rk-tsim-dashboard">
            
            <div class="rk-tsim-svg-panel" id="tsimSvgPanel">
                <svg class="rk-tsim-svg" viewBox="0 0 100 100">
                    <circle class="anim-snow" cx="20" cy="10" r="1.5" fill="#ffffff" />
                    <circle class="anim-snow" cx="50" cy="5" r="2" fill="#ffffff" style="animation-delay: 0.5s;" />
                    <circle class="anim-snow" cx="80" cy="15" r="1.5" fill="#ffffff" style="animation-delay: 1s;" />
                    
                    <path d="M 10 50 L 50 15 L 90 50 L 90 90 L 10 90 Z" fill="#334155" stroke="#475569" stroke-width="2"/>
                    <path class="anim-floor" d="M 15 80 L 85 80 L 85 85 L 15 85 Z" fill="#f97316" />
                    
                    <rect class="anim-pump" x="65" y="65" width="25" height="25" rx="3" fill="#10b981" />
                    <circle cx="77.5" cy="77.5" r="7" fill="#1e293b" opacity="0.5"/>
                    
                    <path class="anim-error" d="M 65 55 L 75 40 L 85 55 Z" fill="#ef4444" />
                    <text class="anim-error" x="73" y="52" fill="#ffffff" font-size="10" font-weight="bold">!</text>
                </svg>
            </div>

            <div class="rk-tsim-stats">
                <div class="rk-tsim-stat-box">
                    <span class="rk-stat-label">Temperatura wewnątrz</span>
                    <span class="rk-stat-value" id="valInsideTemp">20°C (Komfort)</span>
                </div>
                <div class="rk-tsim-stat-box">
                    <span class="rk-stat-label">Stan Sprężarki (Pompa)</span>
                    <span class="rk-stat-value" id="valCompressor">Stabilna praca</span>
                </div>
                <div class="rk-tsim-stat-box">
                    <span class="rk-stat-label">Koszty energii</span>
                    <span class="rk-stat-value" id="valEnergy">W normie</span>
                </div>
                <div class="rk-tsim-stat-box">
                    <span class="rk-stat-label">Wydajność ogrzewania</span>
                    <span class="rk-stat-value" id="valStatus">Poprawna</span>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez H2/H3 w strukturze błędu)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-tsim-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // 2. Elementy DOM
    const slider = document.getElementById('tsimSlider');
    const tempDisplay = document.getElementById('tsimTempDisplay');
    const tabs = document.querySelectorAll('.rk-tsim-tab');
    const tabsContainer = document.getElementById('tsimTabs');
    const svgPanel = document.getElementById('tsimSvgPanel');
    
    // Pola tekstowe
    const valInsideTemp = document.getElementById('valInsideTemp');
    const valCompressor = document.getElementById('valCompressor');
    const valEnergy = document.getElementById('valEnergy');
    const valStatus = document.getElementById('valStatus');

    let currentMode = 'amateur';

    // 3. Obsługa zakładek (Tryb Systemu)
    tabs.forEach(tab => {
        tab.addEventListener('click', () => {
            tabs.forEach(t => t.classList.remove('active'));
            tab.classList.add('active');
            currentMode = tab.getAttribute('data-type');
            tabsContainer.setAttribute('data-active', currentMode);
            updateSimulation();
        });
    });

    // 4. Obsługa Suwaka
    slider.addEventListener('input', updateSimulation);

    // 5. Silnik Symulacji
    function updateSimulation() {
        const outTemp = parseInt(slider.value);
        
        // Zmiana sposobu budowania stringów, aby uniknąć błędów parsera z backtickami w niektórych edytorach
        tempDisplay.textContent = outTemp > 0 ? "+" + outTemp + "°C" : outTemp + "°C";
        
        if (outTemp <= -10) {
            tempDisplay.style.color = 'var(--rk-tsim-blue)';
            svgPanel.classList.add('env-cold');
        } else {
            tempDisplay.style.color = 'var(--rk-tsim-dark)';
            svgPanel.classList.remove('env-cold');
        }

        // Reset klas SVG
        svgPanel.classList.remove('sys-ok', 'sys-fail');

        if (currentMode === 'pro') {
            // TRYB: Projekt OZC
            svgPanel.classList.add('sys-ok');
            
            valInsideTemp.textContent = '20°C (Stała)';
            valInsideTemp.className = 'rk-stat-value val-success';
            
            valCompressor.textContent = 'Ciągła, inwerterowa';
            valCompressor.className = 'rk-stat-value val-success';
            
            valEnergy.textContent = 'Zoptymalizowane';
            valEnergy.className = 'rk-stat-value';

            if (outTemp <= -15) {
                valStatus.textContent = 'Kompensacja strat idealna';
            } else {
                valStatus.textContent = 'Wysokie COP pompy';
            }
            valStatus.className = 'rk-stat-value val-success';

        } else {
            // TRYB: Amator "Na Oko"
            if (outTemp > 0) {
                // Ciepło - urządzenie przewymiarowane taktuje, ale grzeje
                svgPanel.classList.add('sys-fail');
                valInsideTemp.textContent = '22°C (Przegrzewanie)';
                valInsideTemp.className = 'rk-stat-value val-danger';
                
                valCompressor.textContent = 'Częste taktowanie!';
                valCompressor.className = 'rk-stat-value val-danger';
                
                valEnergy.textContent = '+30% (Rozruchy)';
                valEnergy.className = 'rk-stat-value val-danger';
                
                valStatus.textContent = 'Bezwładność układu';
                valStatus.className = 'rk-stat-value';
                
            } else if (outTemp > -10) {
                // Lekki mróz - zaczynają się problemy
                svgPanel.classList.add('sys-fail');
                valInsideTemp.textContent = '19°C (Niestabilna)';
                valInsideTemp.className = 'rk-stat-value';
                
                valCompressor.textContent = 'Agresywne taktowanie';
                valCompressor.className = 'rk-stat-value val-danger';
                
                valEnergy.textContent = '+40% (Wysoki prąd)';
                valEnergy.className = 'rk-stat-value val-danger';
                
                valStatus.textContent = 'Zaburzone przepływy';
                valStatus.className = 'rk-stat-value val-danger';

            } else {
                // Silny mróz - katastrofa, podłoga nie daje rady, pompa wchodzi w tryb awaryjny lub grzałki
                svgPanel.classList.add('sys-fail');
                const dropTemp = 19 + Math.floor(outTemp / 5); // Spadek temp
                
                // Zwykła konkatenacja unikająca backticków
                valInsideTemp.textContent = dropTemp + "°C (Niedogrzanie)";
                valInsideTemp.className = 'rk-stat-value val-cold';
                
                valCompressor.textContent = 'Ryzyko uszkodzenia!';
                valCompressor.className = 'rk-stat-value val-danger';
                
                valEnergy.textContent = 'Ogromne (Praca grzałek)';
                valEnergy.className = 'rk-stat-value val-danger';
                
                valStatus.textContent = 'Brak mocy przekazu';
                valStatus.className = 'rk-stat-value val-danger';
            }
        }
    }

    // Inicjalizacja startowa
    updateSimulation();
});
</script>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<style>
:root {
    --rk-core-dark: #0f172a;
    --rk-core-brand: #0284c7;
    --rk-core-accent: #0ea5e9;
    --rk-core-bg: #ffffff;
    --rk-core-panel: #f8fafc;
    --rk-core-border: #cbd5e1;
    --rk-core-text: #334155;
    --rk-core-green: #059669;
    --rk-core-green-bg: #ecfdf5;
    --rk-core-amber: #d97706;
    --rk-core-amber-bg: #fffbeb;
}

.rk-core-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-core-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-core-brand);
    overflow: hidden;
}

/* Nagłówek Sekcji */
.rk-core-header {
    background: linear-gradient(135deg, var(--rk-core-dark) 0%, #1e293b 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-core-brand);
}

.rk-core-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #38bdf8;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(56, 189, 248, 0.2);
}

.rk-core-header h2 {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-core-header h2 span { color: #38bdf8; }

.rk-core-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
}

.rk-core-lead strong {
    color: #ffffff;
    font-weight: 800;
}

.rk-core-lead a {
    color: #7dd3fc;
    text-decoration: none;
    border-bottom: 1px dashed #7dd3fc;
    transition: color 0.3s;
}

.rk-core-lead a:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

/* Inżynierski Panel Kontrolny (Dashboard) */
.rk-core-dashboard {
    padding: 40px 50px;
    background: var(--rk-core-panel);
}

/* Nawigacja po komponentach OZC (3 twarde filary) */
.rk-core-nav {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    margin-bottom: 35px;
}

.rk-core-nav-btn {
    background: #ffffff;
    border: 2px solid var(--rk-core-border);
    padding: 16px 20px;
    border-radius: 14px;
    cursor: pointer;
    text-align: center;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.03);
}

.rk-core-nav-btn:hover {
    background: #f1f5f9;
    border-color: #94a3b8;
    transform: translateY(-2px);
}

.rk-core-nav-btn.active {
    border-color: var(--rk-core-brand);
    background: var(--rk-core-brand);
}

.rk-nav-icon {
    width: 24px;
    height: 24px;
    color: var(--rk-core-brand);
    transition: color 0.3s;
}

.rk-core-nav-btn.active .rk-nav-icon {
    color: #ffffff;
}

.rk-nav-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-core-dark);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    transition: color 0.3s;
}

.rk-core-nav-btn.active .rk-nav-title {
    color: #ffffff;
}

/* Główna Karta Prezentacji Danych */
.rk-core-display-card {
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-core-border);
    padding: 35px;
    display: grid;
    grid-template-columns: 240px 1fr;
    gap: 40px;
    align-items: center;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.02);
}

/* Kontener Wizualizacji Sztywnych Układów SVG */
.rk-core-svg-stage {
    background: var(--rk-core-dark);
    border-radius: 16px;
    padding: 25px;
    height: 220px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 15px rgba(0,0,0,0.4);
    position: relative;
    overflow: hidden;
}

.rk-dashboard-svg {
    width: 100%;
    height: 100%;
    display: block;
}

/* Ukrywanie/Pokazywanie warstw SVG za pomocą CSS */
.svg-layer { opacity: 0; transition: opacity 0.4s ease-in-out; }
.rk-core-container[data-view="fabric"] .layer-fabric { opacity: 1; }
.rk-core-container[data-view="ventilation"] .layer-ventilation { opacity: 1; }
.rk-core-container[data-view="bivalent"] .layer-bivalent { opacity: 1; }

/* Animacje wektorowe kontrolowane stanem rodzica */
.anim-flow-lines { stroke-dasharray: 8 16; stroke-dashoffset: 0; }
.rk-core-container[data-view="ventilation"] .anim-flow-lines { animation: airFlow 2s linear infinite; }

.anim-balance-beam { transform-origin: 50px 55px; transition: transform 0.6s ease-in-out; }
.rk-core-container[data-view="bivalent"] .anim-balance-beam { transform: rotate(-8deg); }

@keyframes airFlow { to { stroke-dashoffset: -24; } }

/* Treść merytoryczna wewnątrz karty */
.rk-core-info-block h3 {
    margin: 0 0 12px 0;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-core-dark);
}

.rk-core-info-block p {
    margin: 0 0 20px 0;
    font-size: 15px;
    line-height: 1.65;
    color: #475569;
}

/* Siatka parametrów pod tekstem */
.rk-core-metrics-panel {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-core-metric-box {
    background: #f1f5f9;
    padding: 15px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-core-brand);
}

.rk-metric-label {
    display: block;
    font-size: 11px;
    text-transform: uppercase;
    font-weight: 800;
    color: #64748b;
    margin-bottom: 4px;
}

.rk-metric-value {
    display: block;
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-core-dark);
}

@media (max-width: 768px) {
    .rk-core-header, .rk-core-dashboard { padding: 35px 25px; }
    .rk-core-header h2 { font-size: 24px; }
    .rk-core-nav { grid-template-columns: 1fr; gap: 10px; }
    .rk-core-display-card { grid-template-columns: 1fr; gap: 25px; padding: 25px; }
    .rk-core-svg-stage { height: 180px; max-width: 240px; margin: 0 auto; width: 100%; }
    .rk-core-metrics-panel { grid-template-columns: 1fr; gap: 12px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-definicja",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Czym dokładnie jest Projektowe Obciążenie Cieplne (OZC) budynku?",
    "description": "Zrozumienie wartości OZC (kW) wg normy PN-EN 12831-1. Dowiedz się, jak bilans przegród, wentylacji oraz wyznaczenie punktu biwalentnego eliminuje zgadywanie.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-definicja",
    "name": "Struktura składowych bilansu energetycznego budynku szczytowego",
    "description": "Zestawienie twardych danych inżynierskich określających udziały strat przez przenikanie oraz wentylację w warunkach normatywnych WT 2021.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowe obciążenie cieplne budynku",
      "norma PN-EN 12831-1",
      "punkt biwalentny pompy ciepła",
      "standard energetyczny WT 2021",
      "koszt obliczeń OZC"
    ],
    "measurementTechnique": "Kalkulacja strat szczytowych na podstawie fizyki budowli i oporów cieplnych przegród budowlanych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przenikanie ciepła: Straty energii przez ściany, okna i strop przy skrajnej temperaturze projektowej.",
        "Wentylacja: Zapotrzebowanie na dogrzanie powietrza zewnętrznego z uwzględnieniem sprawności rekuperatora.",
        "Punkt biwalentny: Temperatura graniczna, przy której źródło ciepła wymaga aktywacji wspomagania elektrycznego."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-definicja",
    "name": "Interaktywny Analizator Składowych OZC",
    "description": "Inżynierski interfejs do wizualizacji struktury strat ciepła przez przegrody budowlane, procesy wentylacyjne oraz do wyznaczania punktu biwalentnego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and SVG capable browser",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-core-container" id="rk-ozc-def-app" data-view="fabric">
    
    <div class="rk-core-header">
        <div class="rk-core-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z"></path><line x1="4" y1="22" x2="4" y2="15"></line></svg>
            Analiza Inżynierska
        </div>
        <h2>Czym dokładnie jest Projektowe Obciążenie Cieplne (OZC) budynku?</h2>
        <p class="rk-core-lead">
            <strong>Projektowe Obciążenie Cieplne (OZC)</strong> to obliczeniowa wartość strat energii wyrażona w kilowatach [kW], wyznaczana dla skrajnych warunków zimowych danej strefy klimatycznej zgodnie z normą <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/">PN-EN 12831-1</a>. Wartość ta określa zapotrzebowanie na moc szczytową źródła ciepła i jest sumą strat przez przegrody oraz wentylację. Stanowi ona podstawę do doboru urządzeń grzewczych, eliminując błędy szacunkowe, które generują niepotrzebne koszty inwestycyjne.
        </p>
    </div>

    <div class="rk-core-dashboard">
        
        <div class="rk-core-nav">
            <button class="rk-core-nav-btn active" data-target="fabric">
                <svg class="rk-nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" fill="none"/><line x1="9" y1="3" x2="9" y2="21"/><line x1="15" y1="3" x2="15" y2="21"/></svg>
                <span class="rk-nav-title">1. Przenikanie</span>
            </button>
            <button class="rk-core-nav-btn" data-target="ventilation">
                <svg class="rk-nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9.59 4.59A2 2 0 1 1 11 8H2m12.41 11.41A2 2 0 1 1 13 16h9m-1.59-7.41A2 2 0 1 0 19 12h3"/></svg>
                <span class="rk-nav-title">2. Wentylacja</span>
            </button>
            <button class="rk-core-nav-btn" data-target="bivalent">
                <svg class="rk-nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="19" y1="5" x2="5" y2="19"/><circle cx="6.5" cy="6.5" r="2.5"/><circle cx="17.5" cy="17.5" r="2.5"/></svg>
                <span class="rk-nav-title">3. Punkt Biwalentny</span>
            </button>
        </div>

        <div class="rk-core-display-card">
            
            <div class="rk-core-svg-stage">
                <svg class="rk-dashboard-svg" viewBox="0 0 100 100">
                    
                    <g class="svg-layer layer-fabric">
                        <rect x="15" y="20" width="20" height="60" fill="#475569" />
                        <rect x="35" y="20" width="15" height="60" fill="#0284c7" opacity="0.6" />
                        <rect x="50" y="20" width="5" height="60" fill="#cbd5e1" />
                        <path d="M 10 50 L 65 50" fill="none" stroke="#ef4444" stroke-width="3" stroke-dasharray="4 4" />
                        <polyline points="60 45 65 50 60 55" fill="none" stroke="#ef4444" stroke-width="3" />
                        <text x="60" y="35" fill="#ffffff" font-size="8" font-family="sans-serif">WT 2021</text>
                    </g>
                    
                    <g class="svg-layer layer-ventilation">
                        <rect x="30" y="30" width="40" height="40" rx="6" fill="#1e293b" stroke="#64748b" stroke-width="2"/>
                        <path class="anim-flow-lines" d="M 10 40 L 90 40" fill="none" stroke="#38bdf8" stroke-width="3" />
                        <path class="anim-flow-lines" d="M 90 60 L 10 60" fill="none" stroke="#f97316" stroke-width="3" />
                    </g>
                    
                    <g class="svg-layer layer-bivalent">
                        <path d="M 20 85 L 80 85 M 50 85 L 50 55" fill="none" stroke="#64748b" stroke-width="3" />
                        <g class="anim-balance-beam">
                            <line x1="20" y1="55" x2="80" y2="55" stroke="#ffffff" stroke-width="4" stroke-linecap="round" />
                            <rect x="22" y="35" width="16" height="18" fill="#10b981" rx="2" />
                            <rect x="62" y="38" width="16" height="15" fill="#ef4444" rx="2" />
                        </g>
                    </g>
                    
                </svg>
            </div>

            <div class="rk-core-info-block">
                <h3 id="coreDisplayTitle">Straty ciepła przez przegrody</h3>
                <p id="coreDisplayDesc">
                    W praktyce inżynierskiej dokument OZC eliminuje zgadywanie. Budynki wznoszone w standardzie WT 2021 charakteryzują się wysoką szczelnością oraz niskimi współczynnikami przenikania ciepła przegród, co sprawia, że ich realne zapotrzebowanie na energię drastycznie różni się od obiektów budowanych jeszcze dekadę temu.
                </p>
                
                <div class="rk-core-metrics-panel">
                    <div class="rk-core-metric-box">
                        <span class="rk-metric-label" id="coreLabel1">Koszt opracowania OZC</span>
                        <span class="rk-metric-value" id="coreValue1">450 &ndash; 900 PLN</span>
                    </div>
                    <div class="rk-core-metric-box">
                        <span class="rk-metric-label" id="coreLabel2">Oszczędność inwestycyjna</span>
                        <span class="rk-metric-value" id="coreValue2">Do kilkunastu tysięcy PLN</span>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez użycia tagów H2/H3 w strukturze alertu)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-ozc-def-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;"><div style="font-size:18px; text-transform:uppercase; margin-bottom:10px;">Błąd Licencji</div><div style="font-size:14px; color:#cbd5e1;">Opracowanie struktury oraz mechanika JSON-LD są własnością serwisu Projekt-Ogrzewania.pl.</div></div>';
        return;
    }

    // 2. Elementy sterujące i baza danych
    const container = document.getElementById('rk-ozc-def-app');
    const navBtns = container.querySelectorAll('.rk-core-nav-btn');
    
    const titleDOM = document.getElementById('coreDisplayTitle');
    const descDOM = document.getElementById('coreDisplayDesc');
    const lbl1DOM = document.getElementById('coreLabel1');
    const val1DOM = document.getElementById('coreValue1');
    const lbl2DOM = document.getElementById('coreLabel2');
    const val2DOM = document.getElementById('coreValue2');

    // Czyste bazy tekstowe (bez backticków dla uniknięcia błędów parsowania w WP)
    const contentData = {
        fabric: {
            title: "Przenikanie przez przegrody (WT 2021)",
            desc: "W praktyce inżynierskiej dokument OZC eliminuje zgadywanie. Budynki wznoszone w standardzie WT 2021 charakteryzują się wysoką szczelnością oraz niskimi współczynnikami przenikania ciepła przegród strukturalnych, co sprawia, że ich realne zapotrzebowanie na energię drastycznie różni się od starych obiektów.",
            lbl1: "Koszt opracowania OZC",
            val1: "450 - 900 PLN",
            lbl2: "Oszczędność inwestycyjna",
            val2: "Zabezpieczenie przed przewymiarowaniem"
        },
        ventilation: {
            title: "Projektowe straty wentylacyjne",
            desc: "OZC precyzyjnie sumuje straty energii potrzebnej do ogrzania powietrza zewnętrznego. Uwzględnienie w obliczeniach inżynierskich systemu z odzyskiem ciepła pozwala na obniżenie strat wentylacyjnych o ponad 80%, drastycznie wpływając na ostateczny wynik zapotrzebowania budynku.",
            lbl1: "Wymóg normatywny",
            val1: "PN-EN 12831-1",
            lbl2: "Wpływ na rekuperację",
            val2: "Redukcja szczytowych strat wentylacji"
        },
        bivalent: {
            title: "Wyznaczenie punktu biwalentnego",
            desc: "Projektowe Obciążenie Cieplne pozwala precyzyjnie określić tzw. punkt biwalentny dla pompy ciepła – czyli temperaturę zewnętrzną (np. -7°C), przy której sprężarka wymaga wsparcia przez grzałki elektryczne. Chroni to inwestora przed zakupem drogiego źródła o zawyżonej mocy nominalnej.",
            lbl1: "Przykładowy punkt",
            val1: "-7°C (Granica grzałek)",
            lbl2: "Efekt hydrauliczny",
            val2: "Stabilna praca bez taktowania"
        }
    };

    // 3. Obsługa zdarzeń kliknięcia
    navBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            navBtns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const view = this.getAttribute('data-target');
            container.setAttribute('data-view', view);

            // Podmiana danych merytorycznych
            titleDOM.textContent = contentData[view].title;
            descDOM.textContent = contentData[view].desc;
            lbl1DOM.textContent = contentData[view].lbl1;
            val1DOM.textContent = contentData[view].val1;
            lbl2DOM.textContent = contentData[view].lbl2;
            val2DOM.textContent = contentData[view].val2;
        });
    });
});
</script>



<style>
:root {
    --rk-norm-dark: #0f172a;
    --rk-norm-brand: #4338ca; /* Eleganckie indygo dla prawa i norm */
    --rk-norm-brand-light: #e0e7ff;
    --rk-norm-accent: #0ea5e9;
    --rk-norm-green: #10b981;
    --rk-norm-green-light: #ecfdf5;
    --rk-norm-red: #ef4444;
    --rk-norm-bg: #ffffff;
    --rk-norm-panel: #f8fafc;
    --rk-norm-border: #cbd5e1;
    --rk-norm-text: #334155;
    --rk-norm-muted: #64748b;
}

.rk-norm-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-norm-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(67, 56, 202, 0.15);
    border: 1px solid rgba(67, 56, 202, 0.2);
    overflow: hidden;
}

/* Nagłówek */
.rk-norm-header {
    background: linear-gradient(135deg, var(--rk-norm-dark) 0%, #1e1b4b 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-norm-brand);
    position: relative;
}

.rk-norm-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(67, 56, 202, 0.4);
    color: #a5b4fc;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(165, 180, 252, 0.2);
}

.rk-norm-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-norm-title span { color: #818cf8; }

.rk-norm-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
}

.rk-norm-lead strong {
    color: #ffffff;
    background: rgba(67, 56, 202, 0.4);
    padding: 2px 6px;
    border-radius: 4px;
}

.rk-link-norm {
    color: #a5b4fc;
    text-decoration: none;
    border-bottom: 1px dashed #a5b4fc;
    transition: all 0.3s;
}

.rk-link-norm:hover { color: #ffffff; border-bottom-color: #ffffff; }

/* Przestrzeń interaktywna */
.rk-norm-interactive {
    padding: 45px 50px;
    background: var(--rk-norm-panel);
}

/* System Zakładek (Pill Menu) */
.rk-norm-tabs {
    display: flex;
    background: #e2e8f0;
    border-radius: 16px;
    padding: 6px;
    margin-bottom: 35px;
    position: relative;
    box-shadow: inset 0 2px 5px rgba(0,0,0,0.05);
}

.rk-norm-tab {
    flex: 1;
    text-align: center;
    padding: 14px 10px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-norm-muted);
    cursor: pointer;
    border-radius: 12px;
    transition: all 0.3s ease;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.rk-norm-tab.active { color: #ffffff; }

.rk-norm-tab-glider {
    position: absolute;
    top: 6px;
    bottom: 6px;
    width: calc(33.333% - 4px);
    background: var(--rk-norm-brand);
    border-radius: 12px;
    transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
    box-shadow: 0 4px 10px -2px rgba(67, 56, 202, 0.3);
    z-index: 1;
}

.rk-norm-tabs[data-active="zones"] .rk-norm-tab-glider { transform: translateX(0%); background: var(--rk-norm-accent); }
.rk-norm-tabs[data-active="temps"] .rk-norm-tab-glider { transform: translateX(100%); background: #f59e0b; }
.rk-norm-tabs[data-active="law"] .rk-norm-tab-glider { transform: translateX(200%); background: var(--rk-norm-brand); }

/* Główny Dashboard Prezentacji */
.rk-norm-dashboard {
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-norm-border);
    padding: 35px;
    display: grid;
    grid-template-columns: 200px 1fr;
    gap: 35px;
    align-items: center;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.03);
    transition: border-color 0.4s;
}

.rk-norm-dashboard[data-state="zones"] { border-color: rgba(14, 165, 233, 0.3); }
.rk-norm-dashboard[data-state="temps"] { border-color: rgba(245, 158, 11, 0.3); }
.rk-norm-dashboard[data-state="law"] { border-color: rgba(67, 56, 202, 0.3); }

/* Kontener SVG */
.rk-norm-svg-box {
    background: var(--rk-norm-dark);
    border-radius: 16px;
    padding: 20px;
    height: 180px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
    position: relative;
    overflow: hidden;
}

.rk-svg-layer { opacity: 0; position: absolute; transition: opacity 0.4s, transform 0.4s; transform: scale(0.95); width: 100%; height: 100%; }
.rk-norm-dashboard[data-state="zones"] .layer-zones { opacity: 1; transform: scale(1); }
.rk-norm-dashboard[data-state="temps"] .layer-temps { opacity: 1; transform: scale(1); }
.rk-norm-dashboard[data-state="law"] .layer-law { opacity: 1; transform: scale(1); }

/* Animacje specyficzne dla warstw */
.anim-thermo-drop { transform-origin: bottom; animation: dropTemp 2.5s infinite alternate ease-in-out; }
.anim-snowflake { animation: spinSnow 4s infinite linear; transform-origin: 50px 30px; }
.anim-heat-wave { stroke-dasharray: 8 8; animation: riseHeat 1.5s infinite linear; }
.anim-shield-pulse { animation: pulseShieldNorm 2s infinite alternate; }

@keyframes dropTemp { 0% { transform: scaleY(1); fill: #38bdf8; } 100% { transform: scaleY(0.4); fill: #1e3a8a; } }
@keyframes spinSnow { to { transform: rotate(360deg); } }
@keyframes riseHeat { to { stroke-dashoffset: -16; } }
@keyframes pulseShieldNorm { 0% { filter: drop-shadow(0 0 0 rgba(99, 102, 241, 0)); } 100% { filter: drop-shadow(0 0 12px rgba(99, 102, 241, 0.6)); } }

/* Treść Panelu */
.rk-norm-content h3 {
    margin: 0 0 12px 0;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-norm-dark);
}

.rk-norm-content p {
    margin: 0 0 20px 0;
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
}

/* Kafelki z danymi */
.rk-norm-tiles {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-norm-tile {
    background: var(--rk-norm-panel);
    padding: 15px;
    border-radius: 12px;
    border-left: 4px solid transparent;
    transition: all 0.3s;
}

.rk-norm-dashboard[data-state="zones"] .rk-norm-tile { border-left-color: var(--rk-norm-accent); }
.rk-norm-dashboard[data-state="temps"] .rk-norm-tile { border-left-color: #f59e0b; }
.rk-norm-dashboard[data-state="law"] .rk-norm-tile { border-left-color: var(--rk-norm-brand); }

.rk-tile-lbl { display: block; font-size: 11px; text-transform: uppercase; font-weight: 800; color: var(--rk-norm-muted); margin-bottom: 4px; }
.rk-tile-val { display: block; font-size: 16px; font-weight: 900; color: var(--rk-norm-dark); }

@media (max-width: 768px) {
    .rk-norm-header, .rk-norm-interactive { padding: 35px 20px; }
    .rk-norm-title { font-size: 24px; }
    .rk-norm-tabs { flex-direction: column; }
    .rk-norm-tab-glider { width: 100%; height: calc(33.333% - 4px); top: 6px; left: 6px; }
    .rk-norm-tabs[data-active="zones"] .rk-norm-tab-glider { transform: translateY(0%); }
    .rk-norm-tabs[data-active="temps"] .rk-norm-tab-glider { transform: translateY(100%); }
    .rk-norm-tabs[data-active="law"] .rk-norm-tab-glider { transform: translateY(200%); }
    
    .rk-norm-dashboard { grid-template-columns: 1fr; gap: 25px; padding: 25px; text-align: center; }
    .rk-norm-svg-box { max-width: 200px; margin: 0 auto; height: 160px; }
    .rk-norm-tiles { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#article-prawo",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/"
    },
    "headline": "Jakie normy i przepisy prawne regulują obliczenia OZC w Polsce?",
    "description": "Zrozum regulacje prawne OZC: norma PN-EN 12831-1:2017-08, 5 stref klimatycznych Polski, temperatury wewnętrzne oraz wymogi dotacji Czyste Powietrze.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#dataset-prawo",
    "name": "Zestawienie parametrów normatywnych wg PN-EN 12831-1:2017-08",
    "description": "Wykaz obligatoryjnych temperatur wewnętrznych oraz zewnętrznych stref klimatycznych wymaganych do sporządzenia legalnego bilansu cieplnego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "norma PN-EN 12831-1:2017-08",
      "obliczenia zapotrzebowania na moc cieplną",
      "5 stref klimatycznych Polska temperatura",
      "charakterystyka energetyczna budynku",
      "dotacje czyste powietrze wymogi OZC"
    ],
    "measurementTechnique": "Kalkulacja zgodności projektu instalacji z § 134 ust. 1 Rozporządzenia MI oraz wytycznymi programów proekologicznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Temperatury Zewnętrzne: Podział Polski na 5 stref od -16°C (I) do -24°C (V).",
        "Temperatury Wewnętrzne: Wymagane projektowe 20°C dla pokojów i 24°C dla łazienek.",
        "Zgodność prawna: Warunek konieczny odbioru budynku i uzyskania dotacji (Moje Ciepło)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#webapp-prawo",
    "name": "Eksplorator Norm i Stref Klimatycznych OZC",
    "description": "Aplikacja interaktywna pozwalająca inwestorom zrozumieć wymogi prawne, strefy klimatyczne i ich wpływ na odbiór instalacji oraz dotacje.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-norm-container" id="rk-norm-app">
    
    <div class="rk-norm-header">
        <div class="rk-norm-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            Prawo i Wymogi Budowlane
        </div>
        <h2 class="rk-norm-title">Jakie normy i przepisy prawne regulują obliczenia <span>OZC w Polsce</span>?</h2>
        <p class="rk-norm-lead">
            Obowiązek wykonywania <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/" class="rk-link-norm">obliczeń zapotrzebowania na moc cieplną</a> reguluje <strong>§ 134 ust. 1 Rozporządzenia Ministra Infrastruktury</strong> w sprawie warunków technicznych, jakim powinny odpowiadać budynki. Każdy legalnie budowany lub modernizowany obiekt musi posiadać rzetelną <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/" class="rk-link-norm">charakterystykę energetyczną</a> opartą na tych ściśle określonych wyliczeniach.
        </p>
    </div>

    <div class="rk-norm-interactive">
        
        <div class="rk-norm-tabs" id="normTabs" data-active="zones">
            <div class="rk-norm-tab-glider" id="normGlider"></div>
            <div class="rk-norm-tab active" data-target="zones">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                Strefy Klimatyczne
            </div>
            <div class="rk-norm-tab" data-target="temps">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path></svg>
                Temp. Wewnętrzne
            </div>
            <div class="rk-norm-tab" data-target="law">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                Prawo &#038; Dotacje
            </div>
        </div>

        <div class="rk-norm-dashboard" id="normDashboard" data-state="zones">
            
            <div class="rk-norm-svg-box">
                <svg class="rk-svg-layer layer-zones" viewBox="0 0 100 100">
                    <rect x="40" y="10" width="20" height="60" rx="10" fill="#1e293b" stroke="#38bdf8" stroke-width="2"/>
                    <circle cx="50" cy="80" r="15" fill="#1e293b" stroke="#38bdf8" stroke-width="2"/>
                    <rect class="anim-thermo-drop" x="44" y="15" width="12" height="60" rx="6" fill="#38bdf8"/>
                    <circle cx="50" cy="80" r="10" fill="#38bdf8"/>
                    <g class="anim-snowflake" stroke="#ffffff" stroke-width="2" stroke-linecap="round">
                        <line x1="50" y1="20" x2="50" y2="40"/> <line x1="40" y1="30" x2="60" y2="30"/>
                        <line x1="43" y1="23" x2="57" y2="37"/> <line x1="43" y1="37" x2="57" y2="23"/>
                    </g>
                </svg>

                <svg class="rk-svg-layer layer-temps" viewBox="0 0 100 100">
                    <path d="M 15 50 L 50 20 L 85 50 L 85 85 L 15 85 Z" fill="#1e293b" stroke="#f59e0b" stroke-width="2"/>
                    <rect x="25" y="55" width="20" height="30" fill="#334155"/>
                    <text x="35" y="75" fill="#f59e0b" font-size="12" font-weight="bold" text-anchor="middle">20°C</text>
                    <rect x="55" y="55" width="20" height="30" fill="#334155"/>
                    <text x="65" y="75" fill="#ef4444" font-size="12" font-weight="bold" text-anchor="middle">24°C</text>
                    <path class="anim-heat-wave" d="M 60 45 Q 65 35 60 25" fill="none" stroke="#ef4444" stroke-width="2"/>
                </svg>

                <svg class="rk-svg-layer layer-law" viewBox="0 0 100 100">
                    <path class="anim-shield-pulse" d="M 50 15 L 20 25 L 20 55 C 20 75 45 90 50 95 C 55 90 80 75 80 55 L 80 25 Z" fill="#1e293b" stroke="#4338ca" stroke-width="3"/>
                    <polyline points="35 55 45 65 65 40" fill="none" stroke="#10b981" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
                </svg>
            </div>

            <div class="rk-norm-content">
                <h3 id="dynNormTitle">Temperatury Obliczeniowe</h3>
                <p id="dynNormDesc">
                    Norma precyzuje podział Polski na 5 stref klimatycznych, dla których przypisane są obliczeniowe temperatury zewnętrzne. Od <strong>-16°C</strong> w łagodniejszej strefie I (nadmorskiej) aż do <strong>-24°C</strong> w skrajnej strefie V (górskiej).
                </p>
                <div class="rk-norm-tiles">
                    <div class="rk-norm-tile">
                        <span class="rk-tile-lbl" id="dynNormLbl1">Strefa I (Nadmorska)</span>
                        <span class="rk-tile-val" id="dynNormVal1">-16°C</span>
                    </div>
                    <div class="rk-norm-tile">
                        <span class="rk-tile-lbl" id="dynNormLbl2">Strefa V (Górska)</span>
                        <span class="rk-tile-val" id="dynNormVal2">-24°C</span>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Brak H2/H3 w strukturze błędu)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-norm-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // 2. Elementy DOM
    const tabsContainer = document.getElementById('normTabs');
    const tabs = document.querySelectorAll('.rk-norm-tab');
    const dashboard = document.getElementById('normDashboard');
    
    // Pola tekstowe do podmiany
    const dynTitle = document.getElementById('dynNormTitle');
    const dynDesc = document.getElementById('dynNormDesc');
    const lbl1 = document.getElementById('dynNormLbl1');
    const val1 = document.getElementById('dynNormVal1');
    const lbl2 = document.getElementById('dynNormLbl2');
    const val2 = document.getElementById('dynNormVal2');

    // Baza danych treści (bezpieczna od backticków)
    const dataContent = {
        zones: {
            title: "5 Stref Klimatycznych",
            desc: "Norma precyzuje podział Polski na 5 stref klimatycznych, dla których przypisane są rygorystyczne obliczeniowe temperatury zewnętrzne. Od -16°C w strefie I (nadmorskiej) do -24°C w strefie V (górskiej).",
            lbl1: "Strefa I (Najcieplejsza)",
            val1: "-16°C",
            lbl2: "Strefa V (Najzimniejsza)",
            val2: "-24°C"
        },
        temps: {
            title: "Temperatury Wewnętrzne",
            desc: "Przepisy ściśle określają wymagane temperatury wewnętrzne dla konkretnych typów pomieszczeń. Wymusza to na projektancie zastosowanie gęstszego rozstawu rur w łazienkach, aby sprostać wyższym wymogom cieplnym.",
            lbl1: "Pokoje, Salon, Kuchnia",
            val1: "20°C",
            lbl2: "Łazienki",
            val2: "24°C"
        },
        law: {
            title: "Odbiór i Dotacje",
            desc: "Oficjalną podstawą prawną jest norma PN-EN 12831-1:2017-08, która narzuca rygorystyczną metodologię. Projektowanie systemów grzewczych bez jej uwzględnienia uniemożliwia uzyskanie odbioru budowlanego oraz pozyskanie dotacji.",
            lbl1: "Obowiązująca Norma",
            val1: "PN-EN 12831-1",
            lbl2: "Programy wsparcia",
            val2: "Czyste Powietrze / Moje Ciepło"
        }
    };

    // 3. Obsługa kliknięć
    tabs.forEach(tab => {
        tab.addEventListener('click', function() {
            tabs.forEach(t => t.classList.remove('active'));
            this.classList.add('active');

            const target = this.getAttribute('data-target');
            
            // Animacja pigułki
            tabsContainer.setAttribute('data-active', target);
            // Zmiana stanu dashboardu (kolory + SVG)
            dashboard.setAttribute('data-state', target);

            // Podmiana tekstów
            dynTitle.textContent = dataContent[target].title;
            // Dodanie linków w opisie jeśli to zakładka dotacji (dla SEO)
            if(target === 'law') {
                dynDesc.innerHTML = 'Oficjalną podstawą prawną jest <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/" style="color:var(--rk-norm-brand); font-weight:700;">norma PN-EN 12831-1:2017-08</a>, która narzuca rygorystyczną metodologię. Projektowanie bez jej uwzględnienia uniemożliwia uzyskanie odbioru oraz pozyskanie środków z programów takich jak <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/" style="color:var(--rk-norm-brand); font-weight:700;">Czyste Powietrze czy Moje Ciepło</a>.';
            } else {
                dynDesc.textContent = dataContent[target].desc;
            }
            
            lbl1.textContent = dataContent[target].lbl1;
            val1.textContent = dataContent[target].val1;
            lbl2.textContent = dataContent[target].lbl2;
            val2.textContent = dataContent[target].val2;
        });
    });
});
</script>



<style>
:root {
    --rk-tr-dark: #0f172a;
    --rk-tr-brand: #c2410c; /* Ciepły pomarańcz/cegła nawiązujący do przenikania ciepła */
    --rk-tr-brand-light: #ffedd5;
    --rk-tr-accent: #f97316;
    --rk-tr-blue: #0284c7;
    --rk-tr-blue-light: #e0f2fe;
    --rk-tr-bg: #ffffff;
    --rk-tr-panel: #f8fafc;
    --rk-tr-border: #e2e8f0;
    --rk-tr-text: #334155;
    --rk-tr-muted: #64748b;
}

.rk-tr-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-tr-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(194, 65, 12, 0.15);
    border: 1px solid rgba(194, 65, 12, 0.3);
    overflow: hidden;
}

/* Nagłówek i Wstęp Teorii */
.rk-tr-header {
    background: linear-gradient(135deg, var(--rk-tr-dark) 0%, #2a1508 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-tr-brand);
    display: block; /* Wymuszenie bloku, naprawia błędy z globalnym flexem */
}

.rk-tr-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(249, 115, 22, 0.2);
    color: #fdba74;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(249, 115, 22, 0.3);
}

.rk-tr-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-tr-title span { color: var(--rk-tr-accent); }

.rk-tr-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0 0 25px 0;
}

/* Blok ze Wzorem - Naprawiony układ, zapobiega zgniataniu w pionie */
.rk-tr-equation-box {
    background: rgba(0, 0, 0, 0.4);
    border: 1px solid rgba(249, 115, 22, 0.4);
    border-radius: 16px;
    padding: 25px;
    box-shadow: inset 0 4px 15px rgba(0,0,0,0.5);
    width: 100%;
    box-sizing: border-box;
    overflow-x: auto; /* Pozwala na przewijanie na bardzo wąskich ekranach */
}

.rk-tr-equation {
    font-family: 'Cambria Math', 'Times New Roman', serif;
    font-size: 22px;
    color: #fdba74;
    letter-spacing: 1px;
    margin: 0 0 20px 0;
    text-align: center;
    line-height: 1.6;
    word-break: keep-all; /* Blokuje łamanie słów w dziwnych miejscach */
}

.rk-tr-equation-chunk {
    display: inline-block;
    white-space: nowrap;
}

.rk-tr-equation-legend {
    font-size: 13px;
    color: #94a3b8;
    line-height: 1.6;
    text-align: left;
    margin: 0;
    display: grid;
    /* Automatycznie dopasowuje kolumny, nie zgniata do pionu */
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 12px;
}

.rk-tr-equation-legend div {
    background: rgba(255, 255, 255, 0.05);
    padding: 8px 12px;
    border-radius: 8px;
    border-left: 3px solid rgba(249, 115, 22, 0.5);
}

.rk-tr-equation-legend strong { color: #e2e8f0; font-family: 'Cambria Math', 'Times New Roman', serif; font-size: 14px; }

/* Sekcja Interaktywna - Kalkulator */
.rk-tr-interactive {
    padding: 45px 50px;
    background: var(--rk-tr-panel);
}

.rk-tr-section-title {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-tr-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

/* Kontrolki - Wybór Standardu */
.rk-tr-controls {
    display: flex;
    gap: 15px;
    margin-bottom: 35px;
}

.rk-tr-btn {
    flex: 1;
    background: #ffffff;
    border: 2px solid var(--rk-tr-border);
    border-radius: 14px;
    padding: 16px;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-tr-btn:hover {
    border-color: #cbd5e1;
    transform: translateY(-2px);
}

.rk-tr-btn.active {
    border-color: var(--rk-tr-brand);
    background: var(--rk-tr-brand-light);
    box-shadow: 0 10px 20px -5px rgba(194, 65, 12, 0.15);
}

.rk-tr-btn-title {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-tr-text);
}

.rk-tr-btn.active .rk-tr-btn-title { color: var(--rk-tr-brand); }
.rk-tr-btn-sub { font-size: 12px; color: var(--rk-tr-muted); font-weight: 600; }

/* Wyświetlacz Wyników Grid */
.rk-tr-dashboard {
    display: grid;
    grid-template-columns: 240px 1fr;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-tr-border);
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
}

/* SVG Wizualizacja Przegrody */
.rk-tr-svg-box {
    background: var(--rk-tr-dark);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.6);
}

.rk-tr-svg { width: 100%; height: auto; max-width: 180px; }

/* Animacje SVG zależne od stanu */
.anim-arrow { stroke-dasharray: 15; stroke-dashoffset: 0; transition: stroke 0.4s; }
.anim-wall-fill { transition: fill 0.4s; }

.state-old .anim-arrow { stroke: #ef4444; stroke-width: 4; animation: heatEscape 0.6s linear infinite; }
.state-old .anim-wall-fill { fill: #64748b; }

.state-wt2021 .anim-arrow { stroke: #f97316; stroke-width: 2.5; animation: heatEscape 1.5s linear infinite; }
.state-wt2021 .anim-wall-fill { fill: #0284c7; }

.state-passive .anim-arrow { stroke: #fbbf24; stroke-width: 1.5; animation: heatEscape 3s linear infinite; }
.state-passive .anim-wall-fill { fill: #10b981; }

@keyframes heatEscape { to { stroke-dashoffset: -30; } }

/* Panele Wynikowe */
.rk-tr-results-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-tr-res-tile {
    background: #f8fafc;
    border: 1px solid var(--rk-tr-border);
    padding: 15px 20px;
    border-radius: 12px;
    display: flex;
    flex-direction: column;
}

.rk-tr-res-tile.tile-total {
    grid-column: 1 / -1;
    background: var(--rk-tr-dark);
    border-color: var(--rk-tr-dark);
}

.rk-tr-res-label { font-size: 12px; text-transform: uppercase; font-weight: 800; color: var(--rk-tr-muted); margin-bottom: 4px; }
.rk-tr-res-tile.tile-total .rk-tr-res-label { color: #94a3b8; }

.rk-tr-res-value { font-size: 20px; font-weight: 900; color: var(--rk-tr-dark); font-variant-numeric: tabular-nums; }
.rk-tr-res-tile.tile-total .rk-tr-res-value { color: var(--rk-tr-accent); font-size: 28px; }

.rk-tr-res-formula { font-size: 11px; color: #94a3b8; margin-top: 6px; font-family: monospace; }
.rk-tr-res-tile.tile-total .rk-tr-res-formula { color: #cbd5e1; }

.rk-tr-insight-box {
    margin-top: 25px;
    padding: 18px 20px;
    background: var(--rk-tr-blue-light);
    border-left: 4px solid var(--rk-tr-blue);
    border-radius: 8px;
    font-size: 14px;
    line-height: 1.6;
    color: #0c4a6e;
    font-weight: 500;
}

@media (max-width: 768px) {
    .rk-tr-header, .rk-tr-interactive { padding: 35px 20px; }
    .rk-tr-title { font-size: 24px; }
    .rk-tr-controls { flex-direction: column; gap: 10px; }
    .rk-tr-dashboard { grid-template-columns: 1fr; gap: 25px; padding: 20px; }
    .rk-tr-svg-box { height: 160px; max-width: 220px; margin: 0 auto; width: 100%; }
    .rk-tr-results-grid { grid-template-columns: 1fr; }
    .rk-tr-equation { font-size: 18px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-przenikanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Jak krok po kroku oblicza się straty ciepła przez przenikanie?",
    "description": "Zobacz inżynierski wzór na straty przez przenikanie (ΦT) wg normy PN-EN 12831. Obliczamy OZC dla ściany, okna i mostków cieplnych krok po kroku.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-przenikanie",
    "name": "Analiza strat ciepła przez przegrody budowlane (Przenikanie)",
    "description": "Interaktywne zestawienie wpływu współczynnika przenikania ciepła U przegród (ściana, okno, mostki termiczne) na całkowite straty ciepła pomieszczenia.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczanie strat ciepła przez przenikanie",
      "współczynnik przenikania ciepła U",
      "mostki termiczne OZC",
      "kalkulator strat ciepła budynek",
      "norma PN-EN 12831 wzór"
    ],
    "measurementTechnique": "Analiza porównawcza strumieni strat ciepła przez komponenty ściany zewn. wg normy PN-EN 12831 w 3 standardach budowlanych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wzór uwzględnia sumę iloczynów pola powierzchni netto, współczynnika U oraz różnicy temperatur projektowych.",
        "Dla standardu WT 2021 okno i liniowy mostek termiczny wokół ramy generują aż 60,6% strat ciepła przegrody."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-przenikanie",
    "name": "Kalkulator Przenikania Ciepła Przegrody",
    "description": "Narzędzie inżynierskie pozwalające prześledzić krok po kroku obliczenia OZC dla ściany zewnętrznej z oknem, zależnie od standardu izolacji.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-tr-container" id="rk-tr-calc-app">
    
    <div class="rk-tr-header">
        <div class="rk-tr-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line></svg>
            Metodologia Normy PN-EN 12831
        </div>
        <h2 class="rk-tr-title">Jak krok po kroku oblicza się <span>straty przez przenikanie?</span></h2>
        <p class="rk-tr-lead">
            Straty ciepła przez przenikanie (&Phi;<sub>T,i</sub>) oblicza się poprzez przemnożenie pola powierzchni przegrody <strong>A [m²]</strong> przez jej współczynnik przenikania ciepła <strong>U [W/(m²·K)]</strong> oraz projektową różnicę temperatur <strong>&Delta;T [K]</strong>. Formuła ta musi bezwzględnie uwzględniać liniowe mostki termiczne <strong>&Psi;</strong> wyrażone w W/(m·K). Ostateczny wynik podaje się z dokładnością do 1 W.
        </p>
        
        <div class="rk-tr-equation-box">
            <div class="rk-tr-equation">
                <span class="rk-tr-equation-chunk">&Phi;<sub>T,i</sub> = &Sigma; (A<sub>k</sub> &times; U<sub>k</sub> &times; f<sub>x,k</sub>)</span> &times; <span class="rk-tr-equation-chunk">(&theta;<sub>int,i</sub> &minus; &theta;<sub>e</sub>)</span> &nbsp;+&nbsp; <span class="rk-tr-equation-chunk">&Sigma; (&Psi;<sub>l</sub> &times; L<sub>l</sub> &times; f<sub>x,l</sub>)</span> &times; <span class="rk-tr-equation-chunk">(&theta;<sub>int,i</sub> &minus; &theta;<sub>e</sub>)</span>
            </div>
            <div class="rk-tr-equation-legend">
                <div><strong>f<sub>x</sub></strong> &#8211; współcz. redukcji temp. (przestrz. nieogrzewane)</div>
                <div><strong>&theta;<sub>int,i</sub></strong> &#8211; temperatura wewnętrzna projektowa</div>
                <div><strong>L</strong> &#8211; długość liniowego mostka termicznego [m]</div>
                <div><strong>&theta;<sub>e</sub></strong> &#8211; temperatura zewnętrzna obliczeniowa</div>
            </div>
        </div>
    </div>

    <div class="rk-tr-interactive">
        <h3 class="rk-tr-section-title">Symulator: Wpływ izolacji na straty ściany z oknem (III strefa, &Delta;T = 40K)</h3>
        
        <div class="rk-tr-controls">
            <button class="rk-tr-btn" data-standard="old">
                <span class="rk-tr-btn-title">Stary Dom</span>
                <span class="rk-tr-btn-sub">Brak izolacji</span>
            </button>
            <button class="rk-tr-btn active" data-standard="wt2021">
                <span class="rk-tr-btn-title">WT 2021</span>
                <span class="rk-tr-btn-sub">Przykład normatywny</span>
            </button>
            <button class="rk-tr-btn" data-standard="passive">
                <span class="rk-tr-btn-title">Dom Pasywny</span>
                <span class="rk-tr-btn-sub">Certyfikowane detale</span>
            </button>
        </div>

        <div class="rk-tr-dashboard">
            <div class="rk-tr-svg-box state-wt2021" id="trSvgBox">
                <svg class="rk-tr-svg" viewBox="0 0 100 100">
                    <rect class="anim-wall-fill" x="20" y="10" width="30" height="80" rx="2" />
                    <rect x="15" y="35" width="40" height="30" fill="#bae6fd" stroke="#0f172a" stroke-width="4" rx="2" />
                    <line x1="15" y1="50" x2="55" y2="50" stroke="#0f172a" stroke-width="2" />
                    
                    <text x="75" y="20" fill="#94a3b8" font-size="10" font-weight="bold">WEWN. (20°C)</text>
                    <text x="5" y="95" fill="#94a3b8" font-size="10" font-weight="bold" transform="rotate(-90 5 95)">ZEWN. (-20°C)</text>
                    
                    <path class="anim-arrow" d="M 70 25 L 10 25" fill="none" stroke-linecap="round" />
                    <path class="anim-arrow" d="M 70 50 L 10 50" fill="none" stroke-linecap="round" />
                    <path class="anim-arrow" d="M 70 75 L 10 75" fill="none" stroke-linecap="round" />
                </svg>
            </div>

            <div>
                <div class="rk-tr-results-grid">
                    <div class="rk-tr-res-tile">
                        <span class="rk-tr-res-label">1. Ściana netto (13,20 m²)</span>
                        <span class="rk-tr-res-value" id="valWall">79,2 W</span>
                        <span class="rk-tr-res-formula" id="formWall">13,2 &times; 0,15 &times; 40K</span>
                    </div>
                    <div class="rk-tr-res-tile">
                        <span class="rk-tr-res-label">2. Okno 3-szybowe (3,00 m²)</span>
                        <span class="rk-tr-res-value" id="valWin">108,0 W</span>
                        <span class="rk-tr-res-formula" id="formWin">3,00 &times; 0,90 &times; 40K</span>
                    </div>
                    <div class="rk-tr-res-tile">
                        <span class="rk-tr-res-label">3. Mostek Liniowy (7,0 m)</span>
                        <span class="rk-tr-res-value" id="valBridge">14,0 W</span>
                        <span class="rk-tr-res-formula" id="formBridge">7,00 &times; 0,05 &times; 40K</span>
                    </div>
                    <div class="rk-tr-res-tile tile-total">
                        <span class="rk-tr-res-label">Suma strat dla przegrody (&Phi;<sub>T</sub>)</span>
                        <span class="rk-tr-res-value" id="valTotal">201,2 W</span>
                        <span class="rk-tr-res-formula" id="formTotal">79,2 + 108,0 + 14,0 W</span>
                    </div>
                </div>

                <div class="rk-tr-insight-box" id="trInsightText">
                    Wynik pokazuje, że dla ściany o pow. 16,2 m² projektant musi zabezpieczyć <strong>201,2 W</strong> mocy grzewczej. Aż <strong>60,6%</strong> ciepła ucieka przez stolarkę okienną i jej montaż, mimo że okno zajmuje tylko 18,5% powierzchni.
                </div>
            </div>
        </div>
        
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-tr-calc-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;"><div style="font-size:16px; text-transform:uppercase; margin-bottom:8px;">Błąd autoryzacji skryptu</div><div style="font-size:13px; color:#cbd5e1;">Aplikacja należy do Projekt-Ogrzewania.pl</div></div>';
        return;
    }

    // Elementy DOM
    const btns = document.querySelectorAll('.rk-tr-btn');
    const svgBox = document.getElementById('trSvgBox');
    
    const valWall = document.getElementById('valWall'); const formWall = document.getElementById('formWall');
    const valWin = document.getElementById('valWin'); const formWin = document.getElementById('formWin');
    const valBridge = document.getElementById('valBridge'); const formBridge = document.getElementById('formBridge');
    const valTotal = document.getElementById('valTotal'); const formTotal = document.getElementById('formTotal');
    const insightText = document.getElementById('trInsightText');

    // Baza danych dla 3 wariantów standardu izolacji
    const simData = {
        old: {
            uWall: "1,20", wWall: "633,6 W",
            uWin: "2,80", wWin: "336,0 W",
            uBridge: "0,15", wBridge: "42,0 W",
            total: "1011,6 W",
            formT: "633,6 + 336,0 + 42,0 W",
            insight: "W starym budownictwie przez taką samą ścianę ucieka ponad <strong>1 kW</strong> energii (pięciokrotnie więcej!). Sama pusta ściana bez izolacji odpowiada tu za potężne 62% strat. Wymaga to wysokotemperaturowych grzejników."
        },
        wt2021: {
            uWall: "0,15", wWall: "79,2 W",
            uWin: "0,90", wWin: "108,0 W",
            uBridge: "0,05", wBridge: "14,0 W",
            total: "201,2 W",
            formT: "79,2 + 108,0 + 14,0 W",
            insight: "Wynik pokazuje, że dla ściany o pow. 16,2 m² projektant musi zabezpieczyć <strong>201,2 W</strong> mocy grzewczej. Aż <strong>60,6%</strong> ciepła ucieka przez okno i jego montaż, mimo że zajmuje ono tylko 18,5% powierzchni."
        },
        passive: {
            uWall: "0,10", wWall: "52,8 W",
            uWin: "0,70", wWin: "84,0 W",
            uBridge: "0,01", wBridge: "2,8 W",
            total: "139,6 W",
            formT: "52,8 + 84,0 + 2,8 W",
            insight: "Dzięki ekstremalnej izolacji i tzw. ciepłemu montażowi okna w warstwie ocieplenia (&Psi; bliskie zeru), straty spadają do minimum (<strong>139,6 W</strong>). Ogrzewanie podłogowe może tu pracować na zasilaniu rzędu zaledwie 26°C."
        }
    };

    // Logika przycisków i aktualizacja interfejsu
    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const std = this.getAttribute('data-standard');
            const data = simData[std];

            // Zmiana klasy dla animacji SVG (w CSS zmiana koloru ściany i strzałek ciepła)
            svgBox.className = "rk-tr-svg-box state-" + std;

            // Podmiana zawartości paneli liczbowych
            valWall.textContent = data.wWall; formWall.innerHTML = "13,2 &times; " + data.uWall + " &times; 40K";
            valWin.textContent = data.wWin; formWin.innerHTML = "3,00 &times; " + data.uWin + " &times; 40K";
            valBridge.textContent = data.wBridge; formBridge.innerHTML = "7,00 &times; " + data.uBridge + " &times; 40K";
            
            valTotal.textContent = data.total; formTotal.textContent = data.formT;
            insightText.innerHTML = data.insight;
        });
    });
});
</script>



<style>
:root {
    --rk-vent-dark: #0f172a;
    --rk-vent-brand: #0284c7;
    --rk-vent-brand-light: #e0f2fe;
    --rk-vent-accent: #0ea5e9;
    --rk-vent-red: #ef4444;
    --rk-vent-red-bg: #fef2f2;
    --rk-vent-green: #10b981;
    --rk-vent-green-bg: #ecfdf5;
    --rk-vent-bg: #ffffff;
    --rk-vent-panel: #f8fafc;
    --rk-vent-border: #cbd5e1;
    --rk-vent-text: #334155;
    --rk-vent-muted: #64748b;
}

.rk-vent-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-vent-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid rgba(2, 132, 199, 0.3);
    overflow: hidden;
}

/* Nagłówek */
.rk-vent-header {
    background: linear-gradient(135deg, var(--rk-vent-dark) 0%, #164e63 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-vent-brand);
}

.rk-vent-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(14, 165, 233, 0.2);
    color: #7dd3fc;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(14, 165, 233, 0.3);
}

.rk-vent-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-vent-title span { color: #38bdf8; }

.rk-vent-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0 0 25px 0;
}

.rk-link-vent {
    color: #7dd3fc;
    text-decoration: none;
    border-bottom: 1px dashed #7dd3fc;
    transition: all 0.3s;
}

.rk-link-vent:hover { color: #ffffff; border-bottom-color: #ffffff; }

/* Box ze wzorem */
.rk-eq-box {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(56, 189, 248, 0.3);
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    box-shadow: inset 0 4px 15px rgba(0,0,0,0.4);
}

.rk-eq {
    font-family: 'Cambria Math', 'Times New Roman', serif;
    font-size: 22px;
    color: #bae6fd;
    letter-spacing: 1px;
    margin: 0 0 10px 0;
}

.rk-eq-desc {
    font-size: 13px;
    color: #94a3b8;
    margin: 0;
}

.rk-eq-desc strong { color: #e2e8f0; }

/* Interaktywny Panel */
.rk-vent-interactive {
    padding: 40px 50px;
    background: var(--rk-vent-panel);
}

.rk-vent-section-title {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-vent-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

/* Przełącznik Systemów */
.rk-vent-switcher {
    display: flex;
    justify-content: center;
    margin-bottom: 35px;
}

.rk-app-toggle {
    background: #e2e8f0;
    border-radius: 99px;
    padding: 6px;
    display: inline-flex;
    position: relative;
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.06);
    width: 100%;
    max-width: 600px;
}

.rk-toggle-btn {
    flex: 1;
    position: relative;
    z-index: 2;
    padding: 14px 20px;
    font-size: 15px;
    font-weight: 800;
    border: none;
    background: transparent;
    color: #64748b;
    cursor: pointer;
    border-radius: 99px;
    transition: color 0.3s ease;
    text-align: center;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.rk-toggle-btn.active { color: #ffffff; }

.rk-toggle-glider {
    position: absolute;
    top: 6px;
    left: 6px;
    height: calc(100% - 12px);
    width: calc(50% - 6px);
    background: var(--rk-vent-red);
    border-radius: 99px;
    transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), background-color 0.4s ease;
    box-shadow: 0 4px 10px -2px rgba(0,0,0,0.15);
    z-index: 1;
}

.rk-app-toggle[data-mode="rek"] .rk-toggle-glider {
    transform: translateX(100%);
    background: var(--rk-vent-green);
}

/* Dashboard Wyników */
.rk-vent-dashboard {
    display: grid;
    grid-template-columns: 200px 1fr;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-vent-border);
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
    transition: all 0.4s ease;
}

.rk-vent-dashboard.mode-grav { border-color: rgba(239, 68, 68, 0.3); }
.rk-vent-dashboard.mode-rek { border-color: rgba(16, 185, 129, 0.3); }

/* Kontener SVG */
.rk-vent-svg-stage {
    background: var(--rk-vent-dark);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.6);
    position: relative;
    overflow: hidden;
}

.rk-svg-layer { opacity: 0; position: absolute; transition: opacity 0.4s; width: 100%; height: 100%; }
.rk-vent-dashboard.mode-grav .layer-grav { opacity: 1; position: relative; }
.rk-vent-dashboard.mode-rek .layer-rek { opacity: 1; position: relative; }

/* Animacje SVG */
.anim-air-in { stroke-dasharray: 6 6; animation: flowIn 1s linear infinite; }
.anim-air-out { stroke-dasharray: 6 6; animation: flowOut 0.8s linear infinite; }
.anim-air-rek { stroke-dasharray: 6 6; animation: flowIn 2s linear infinite; }
.anim-heat-exch { animation: pulseCore 2s infinite alternate; }

@keyframes flowIn { from { stroke-dashoffset: 24; } to { stroke-dashoffset: 0; } }
@keyframes flowOut { from { stroke-dashoffset: 0; } to { stroke-dashoffset: 24; } }
@keyframes pulseCore { 0% { fill: #3b82f6; } 100% { fill: #ef4444; } }

/* Siatka Wyników */
.rk-vent-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-vent-tile {
    background: #f1f5f9;
    padding: 18px 20px;
    border-radius: 14px;
    border-left: 4px solid transparent;
    transition: all 0.3s;
    display: flex;
    flex-direction: column;
}

.rk-vent-dashboard.mode-grav .rk-vent-tile { border-left-color: var(--rk-vent-red); background: var(--rk-vent-red-bg); }
.rk-vent-dashboard.mode-rek .rk-vent-tile { border-left-color: var(--rk-vent-green); background: var(--rk-vent-green-bg); }

.rk-vent-tile.tile-full {
    grid-column: 1 / -1;
    background: var(--rk-vent-dark);
    border-color: var(--rk-vent-dark);
}

.rk-tile-lbl { font-size: 11px; text-transform: uppercase; font-weight: 800; color: var(--rk-vent-muted); margin-bottom: 4px; }
.rk-vent-tile.tile-full .rk-tile-lbl { color: #94a3b8; }

.rk-tile-val { font-size: 18px; font-weight: 900; color: var(--rk-vent-dark); transition: color 0.3s; }
.rk-vent-tile.tile-full .rk-tile-val { font-size: 26px; color: var(--rk-vent-accent); }

.rk-tile-sub { font-size: 12px; color: #94a3b8; margin-top: 6px; font-family: monospace; }

@media (max-width: 768px) {
    .rk-vent-header, .rk-vent-interactive { padding: 35px 20px; }
    .rk-vent-title { font-size: 24px; }
    .rk-app-toggle { flex-direction: column; background: transparent; box-shadow: none; gap: 10px; }
    .rk-toggle-glider { display: none; }
    .rk-toggle-btn { background: #e2e8f0; color: #64748b; }
    .rk-toggle-btn.active[data-target="grav"] { background: var(--rk-vent-red); color: #fff; }
    .rk-toggle-btn.active[data-target="rek"] { background: var(--rk-vent-green); color: #fff; }
    .rk-vent-dashboard { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-vent-svg-stage { max-width: 200px; margin: 0 auto; height: 160px; }
    .rk-vent-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-wentylacja",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Jak rodzaj wentylacji wpływa na projektowe straty wentylacyjne?",
    "description": "Zestawienie strat ciepła dla wentylacji grawitacyjnej i rekuperacji. Obliczanie OZC na przykładzie domu 400m3 wg normy PN-EN 12831.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-wentylacja",
    "name": "Porównanie strat wentylacyjnych: Grawitacja vs Rekuperacja",
    "description": "Obliczenia inżynierskie różnicy w zapotrzebowaniu na moc grzewczą w zależności od wybranego systemu wymiany powietrza dla budynku o kubaturze 400 m³.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "straty wentylacyjne wzór",
      "rekuperacja a pompa ciepła",
      "obliczenia OZC wentylacja",
      "wentylacja grawitacyjna straty ciepła",
      "norma PN-B-03430"
    ],
    "measurementTechnique": "Aplikacja wzoru fizycznego ΦV = V * 0,34 * ΔT w zestawieniu ze sprawnością temperaturową wymiennika rekuperatora (η = 85%).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wentylacja Grawitacyjna: Krotność n=0,5 h-1 przy -18°C generuje potężną stratę 2584 W.",
        "Rekuperacja: Odzysk ciepła z η=85% i kontrolowany strumień redukuje stratę do zaledwie 491 W, oszczędzając 2 kW mocy źródła ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-wentylacja",
    "name": "Kalkulator Strat Wentylacyjnych OZC",
    "description": "Interaktywny symulator pozwalający porównać obciążenie cieplne budynku z wentylacją naturalną i mechaniczną z odzyskiem ciepła.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-vent-container" id="rk-ozc-vent-app">
    
    <div class="rk-vent-header">
        <div class="rk-vent-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M9.59 4.59A2 2 0 1 1 11 8H2m12.41 11.41A2 2 0 1 1 13 16h9m-1.59-7.41A2 2 0 1 0 19 12h3"></path></svg>
            Dynamika Powietrza
        </div>
        <h2 class="rk-vent-title">Jak rodzaj wentylacji wpływa na <span>projektowe straty wentylacyjne?</span></h2>
        <p class="rk-vent-lead">
            Rodzaj wentylacji decyduje o wielkości strumienia powietrza i stratach wentylacyjnych (Φ<sub>V,i</sub>). System grawitacyjny generuje ucieczkę ciepła na poziomie nawet 40–50% całkowitego bilansu budynku. Zastosowanie <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/" class="rk-link-vent">rekuperacji</a> o udokumentowanej sprawności temperaturowej 85% zmniejsza te straty o ponad 80%.
        </p>
        
        <div class="rk-eq-box">
            <div class="rk-eq">
                Φ<sub>V,i</sub> = V<sub>i</sub> &times; 0,34 &times; (&theta;<sub>int,i</sub> &minus; &theta;<sub>e</sub>)
            </div>
            <p class="rk-eq-desc">
                Gdzie <strong>V<sub>i</sub></strong> to projektowy strumień objętości powietrza [m³/h], a <strong>0,34 Wh/(m³·K)</strong> to stała cieplna powietrza.
            </p>
        </div>
    </div>

    <div class="rk-vent-interactive">
        <h3 class="rk-vent-section-title">Studium przypadku: Dom 400 m³ (II Strefa klimatyczna, &Delta;T = 38 K)</h3>

        <div class="rk-vent-switcher">
            <div class="rk-app-toggle" id="ventSwitchContainer" data-mode="grav">
                <div class="rk-toggle-glider" id="ventGlider"></div>
                <button class="rk-toggle-btn active" data-target="grav">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    Wariant A: Grawitacja
                </button>
                <button class="rk-toggle-btn" data-target="rek">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line></svg>
                    Wariant B: Rekuperacja
                </button>
            </div>
        </div>

        <div class="rk-vent-dashboard mode-grav" id="ventDashboard">
            
            <div class="rk-vent-svg-stage">
                <svg class="rk-svg-layer layer-grav" viewBox="0 0 100 100">
                    <path d="M 10 50 L 50 20 L 90 50 L 90 90 L 10 90 Z" fill="#1e293b" stroke="#334155" stroke-width="2"/>
                    <rect x="65" y="10" width="10" height="25" fill="#334155" />
                    <path class="anim-air-in" d="M 0 60 L 25 60" fill="none" stroke="#38bdf8" stroke-width="3" stroke-linecap="round"/>
                    <path class="anim-air-in" d="M 100 70 L 75 70" fill="none" stroke="#38bdf8" stroke-width="3" stroke-linecap="round"/>
                    <path class="anim-air-out" d="M 70 30 L 70 -5" fill="none" stroke="#ef4444" stroke-width="4" stroke-linecap="round"/>
                </svg>
                <svg class="rk-svg-layer layer-rek" viewBox="0 0 100 100">
                    <path d="M 10 50 L 50 20 L 90 50 L 90 90 L 10 90 Z" fill="#1e293b" stroke="#334155" stroke-width="2"/>
                    <rect class="anim-heat-exch" x="40" y="35" width="20" height="15" rx="2" />
                    <path class="anim-air-rek" d="M 10 40 L 40 40" fill="none" stroke="#38bdf8" stroke-width="2"/>
                    <path class="anim-air-rek" d="M 50 65 L 50 50" fill="none" stroke="#ef4444" stroke-width="2"/>
                    <path class="anim-air-rek" d="M 60 40 L 90 40" fill="none" stroke="#f97316" stroke-width="2"/>
                    <path class="anim-air-rek" d="M 50 35 L 50 10" fill="none" stroke="#64748b" stroke-width="2"/>
                </svg>
            </div>

            <div class="rk-vent-grid">
                <div class="rk-vent-tile">
                    <span class="rk-tile-lbl">Strumień Powietrza (V)</span>
                    <span class="rk-tile-val" id="ventValFlow">200 m³/h</span>
                    <span class="rk-tile-sub" id="ventSubFlow">n = 0,5 h<sup>-1</sup> (Infiltracja)</span>
                </div>
                <div class="rk-vent-tile">
                    <span class="rk-tile-lbl">Temp. Nawiewu po wymianie</span>
                    <span class="rk-tile-val" id="ventValTemp">-18°C</span>
                    <span class="rk-tile-sub" id="ventSubTemp">Brak odzysku ciepła</span>
                </div>
                <div class="rk-vent-tile tile-full">
                    <span class="rk-tile-lbl">Projektowa Strata Wentylacyjna (ΦV)</span>
                    <span class="rk-tile-val" id="ventValTotal">2584 W</span>
                    <span class="rk-tile-sub" id="ventSubTotal">200 × 0,34 × 38K</span>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-ozc-vent-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // Elementy DOM
    const switchContainer = document.getElementById('ventSwitchContainer');
    const btns = switchContainer.querySelectorAll('.rk-toggle-btn');
    const dashboard = document.getElementById('ventDashboard');
    
    // Pola tekstowe - Użyto unikalnych prefiksów "vent" w ID
    const valFlow = document.getElementById('ventValFlow'); 
    const subFlow = document.getElementById('ventSubFlow');
    const valTemp = document.getElementById('ventValTemp'); 
    const subTemp = document.getElementById('ventSubTemp');
    const valTotal = document.getElementById('ventValTotal'); 
    const subTotal = document.getElementById('ventSubTotal');

    const ventData = {
        grav: {
            flow: "200 m³/h", sFlow: "n = 0,5 h-1 (Infiltracja mrozu)",
            temp: "-18°C", sTemp: "Mroźne powietrze wpada do domu",
            total: "2584 W", sTotal: "200 × 0,34 × 38K"
        },
        rek: {
            flow: "120 m³/h", sFlow: "Kontrolowany wymóg higieniczny",
            temp: "+14,3°C", sTemp: "Powietrze dogrzane w wymienniku (η = 85%)",
            total: "490,96 W", sTotal: "Zysk: 2093 W (Zawiera nieszczelności)"
        }
    };

    // Logika przycisków
    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const mode = this.getAttribute('data-target');
            switchContainer.setAttribute('data-mode', mode);
            dashboard.className = "rk-vent-dashboard mode-" + mode;

            // Podmiana danych bez błędów krzyżowych
            const d = ventData[mode];
            valFlow.innerHTML = d.flow; subFlow.innerHTML = d.sFlow;
            valTemp.innerHTML = d.temp; subTemp.innerHTML = d.sTemp;
            valTotal.innerHTML = d.total; subTotal.innerHTML = d.sTotal;
        });
    });
});
</script>



<style>
:root {
    --rk-res-dark: #0f172a;
    --rk-res-brand: #ea580c; /* Ciepły pomarańcz dla fizyki przewodzenia ciepła */
    --rk-res-brand-light: #ffedd5;
    --rk-res-accent: #f97316;
    --rk-res-green: #10b981;
    --rk-res-green-bg: #ecfdf5;
    --rk-res-red: #ef4444;
    --rk-res-red-bg: #fef2f2;
    --rk-res-bg: #ffffff;
    --rk-res-panel: #f8fafc;
    --rk-res-border: #cbd5e1;
    --rk-res-text: #334155;
    --rk-res-muted: #64748b;
}

.rk-res-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-res-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(234, 88, 12, 0.12);
    border: 1px solid var(--rk-res-brand);
    overflow: hidden;
}

/* Nagłówek i Wstęp */
.rk-res-header {
    background: linear-gradient(135deg, var(--rk-res-dark) 0%, #2e1407 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-res-brand);
}

.rk-res-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(234, 88, 12, 0.25);
    color: #ffedd5;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(234, 88, 12, 0.4);
}

.rk-res-header h2 {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-res-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
}

.rk-res-lead strong {
    color: #ffffff;
    font-weight: 800;
}

.rk-res-lead a {
    color: #ffedd5;
    text-decoration: none;
    border-bottom: 1px dashed #ffedd5;
    transition: color 0.3s;
}

.rk-res-lead a:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

/* Interaktywny Panel Wyboru */
.rk-res-interactive {
    padding: 40px 50px;
    background: var(--rk-res-panel);
}

/* Selektor kafelków (Materiały wykończeniowe) */
.rk-res-selector-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 10px;
    margin-bottom: 35px;
}

.rk-res-select-btn {
    background: #ffffff;
    border: 2px solid var(--rk-res-border);
    padding: 15px 10px;
    border-radius: 14px;
    cursor: pointer;
    text-align: center;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-res-select-btn:hover {
    background: #f1f5f9;
    border-color: #94a3b8;
    transform: translateY(-2px);
}

.rk-res-select-btn.active {
    border-color: var(--rk-res-brand);
    background: var(--rk-res-brand-light);
}

.rk-btn-txt {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-res-text);
}

.rk-res-select-btn.active .rk-btn-txt {
    color: var(--rk-res-brand);
}

/* Główny Dashboard Prezentacji */
.rk-res-dashboard {
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-res-border);
    padding: 35px;
    display: grid;
    grid-template-columns: 220px 1fr;
    gap: 40px;
    align-items: center;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.03);
}

/* Kontener Wizualizacji SVG */
.rk-res-svg-stage {
    background: var(--rk-res-dark);
    border-radius: 16px;
    padding: 20px;
    height: 220px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 15px rgba(0,0,0,0.4);
    position: relative;
}

.rk-res-svg {
    width: 100%;
    height: auto;
    display: block;
}

/* Dynamiczne modyfikacje SVG przez klasy narzucane z JS */
.anim-cop-needle { transform-origin: 50px 80px; transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1); }
.anim-barrier-layer { transition: height 0.4s ease, fill 0.4s ease; transform-origin: bottom; }

/* Tarcza wydajności COP */
.rk-res-svg-stage[data-material="gres"] .anim-cop-needle { transform: rotate(50deg); }
.rk-res-svg-stage[data-material="pvc"] .anim-cop-needle { transform: rotate(35deg); }
.rk-res-svg-stage[data-material="panele"] .anim-cop-needle { transform: rotate(0deg); }
.rk-res-svg-stage[data-material="deska"] .anim-cop-needle { transform: rotate(-30deg); }
.rk-res-svg-stage[data-material="dywan"] .anim-cop-needle { transform: rotate(-55deg); }

/* Wysokość warstwy oporu cieplnego */
.rk-res-svg-stage[data-material="gres"] .anim-barrier-layer { height: 2px; fill: var(--rk-res-green); }
.rk-res-svg-stage[data-material="pvc"] .anim-barrier-layer { height: 6px; fill: #6ee7b7; }
.rk-res-svg-stage[data-material="panele"] .anim-barrier-layer { height: 14px; fill: #fcd34d; }
.rk-res-svg-stage[data-material="deska"] .anim-barrier-layer { height: 22px; fill: var(--rk-res-accent); }
.rk-res-svg-stage[data-material="dywan"] .anim-barrier-layer { height: 32px; fill: var(--rk-res-red); }

/* Siatka parametrów technicznych */
.rk-res-tiles-panel {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 15px;
}

.rk-res-tile {
    background: #f1f5f9;
    padding: 15px 20px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-res-brand);
    transition: all 0.3s;
}

.rk-res-tile.tile-full {
    grid-column: 1 / -1;
    background: var(--rk-res-dark);
    border-left-color: var(--rk-res-accent);
}

.rk-res-tile.norm-alert {
    border-left-color: var(--rk-res-red);
    background: var(--rk-res-red-bg);
}

.rk-tile-lbl {
    display: block;
    font-size: 11px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-res-muted);
    margin-bottom: 4px;
}

.rk-res-tile.tile-full .rk-tile-lbl { color: #94a3b8; }

.rk-tile-val {
    display: block;
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-res-dark);
}

.rk-res-tile.tile-full .rk-tile-val { color: #ffffff; font-size: 18px; }
.rk-res-tile.norm-alert .rk-tile-val { color: var(--rk-res-red); }

.rk-tile-sub {
    display: block;
    font-size: 12px;
    color: #64748b;
    margin-top: 4px;
    font-weight: 500;
}
.rk-res-tile.tile-full .rk-tile-sub { color: #cbd5e1; }

@media (max-width: 768px) {
    .rk-res-header, .rk-res-interactive { padding: 35px 25px; }
    .rk-res-header h2 { font-size: 24px; }
    .rk-res-selector-grid { grid-template-columns: 1fr; gap: 10px; }
    .rk-res-dashboard { grid-template-columns: 1fr; gap: 25px; padding: 25px; }
    .rk-res-svg-stage { height: 180px; max-width: 240px; margin: 0 auto; width: 100%; }
    .rk-res-tiles-panel { grid-template-columns: 1fr; gap: 12px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#article-okladziny",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/"
    },
    "headline": "Jak opór cieplny materiałów wykończeniowych zmienia parametry instalacji?",
    "description": "Analiza wpływu oporu cieplnego okładziny wierzchniej (R) na gęstość strumienia ogrzewania podłogowego i współczynnik COP pompy ciepła wg normy PN-EN 1264.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#dataset-okladziny",
    "name": "Zestawienie oporów cieplnych i wydajności typowych materiałów podłogowych",
    "description": "Twarde dane inżynierskie porównujące opory termiczne, gęstość strumienia cieplnego q oraz niezbędną temperaturę zasilania dla 5 rodzajów wykończenia podłogi.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "opór cieplny okładziny podłogowej",
      "norma PN-EN 1264 ogrzewanie",
      "temperatura zasilania podłogówki pompy ciepła",
      "deska warstwowa na ogrzewaniu podłogowym",
      "spadek efektywności COP pompy"
    ],
    "measurementTechnique": "Kalkulacja hydrauliczna i termiczna przenikania energii przez warstwy jastrychu i wykończenia wierzchniego dla stałej straty pomieszczenia 50 W/m2.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Gres/płytki: Grubość 10mm, opór R=0,015 m2K/W, idealne parametry zasilania 32°C.",
        "Deska warstwowa klejona: Grubość 14mm, wysoki opór R=0,120 m2K/W, podnosi zasilanie do 43°C.",
        "Gruby dywan z podkładem: Przekracza normatywny limit 0,150 m2K/W, generując spadek sprawności źródła grzewczego."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#webapp-okladziny",
    "name": "Interaktywny Analizator Opóru Termicznego Podłogi",
    "description": "Narzędzie symulacyjne demonstrujące w czasie rzeczywistym przełożenie fizycznego oporu okładziny wierzchniej na temperaturę zasilania i sprawność pompy ciepła (COP).",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and modern web browser with SVG rendering capability",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-res-container" id="rk-floor-res-app">
    
    <div class="rk-res-header">
        <div class="rk-res-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            Fizyka Przewodzenia Ciepła
        </div>
        <h2>Jak opór cieplny materiałów wykończeniowych zmienia parametry instalacji?</h2>
        <p class="rk-res-lead">
            Opór cieplny okładziny podłogowej (<strong>R<sub>&lambda;,B</sub></strong>) ogranicza strumień energii, a norma <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">PN-EN 1264</a> kategorycznie zabrania przekraczania wartości <strong>0,15 m²·K/W</strong> dla warstw wierzchnich. Wyższy opór cieplny materiału działa niczym izolator, wymuszając podniesienie temperatury zasilania instalacji o <strong>5–12°C</strong>. To bezpośrednio obniża sprawność <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pomp ciepła</a> (spadek COP o ok. 2,5% na każdy stopień w górę). Każdy rodzaj wykończenia musi być precyzyjnie dobrany już na etapie <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">obliczeń projektowych ogrzewania podłogowego</a>.
        </p>
    </div>

    <div class="rk-res-interactive">
        <h3 class="rk-res-section-title">Aplikacja Inżynierska: Porównanie parametrów wykończenia dla straty 50 W/m²</h3>
        
        <div class="rk-res-selector-grid">
            <button class="rk-res-select-btn active" data-mat="gres">
                <span class="rk-btn-txt">Płytki / Gres</span>
            </button>
            <button class="rk-res-select-btn" data-mat="pvc">
                <span class="rk-btn-txt">PVC / LVT</span>
            </button>
            <button class="rk-res-select-btn" data-mat="panele">
                <span class="rk-btn-txt">Panele</span>
            </button>
            <button class="rk-res-select-btn" data-mat="deska">
                <span class="rk-btn-txt">Deska Dąb</span>
            </button>
            <button class="rk-res-select-btn" data-mat="dywan">
                <span class="rk-btn-txt">Gruby Dywan</span>
            </button>
        </div>

        <div class="rk-res-dashboard">
            
            <div class="rk-res-svg-stage" id="resSvgStage" data-material="gres">
                <svg class="rk-res-svg" viewBox="0 0 100 110">
                    <path d="M 15 45 A 35 35 0 0 1 85 45" fill="none" stroke="#334155" stroke-width="6" stroke-linecap="round"/>
                    <path d="M 15 45 A 35 35 0 0 1 50 10" fill="none" stroke="#ef4444" stroke-width="6" stroke-linecap="round"/>
                    <path d="M 50 10 A 35 35 0 0 1 85 45" fill="none" stroke="#10b981" stroke-width="6" stroke-linecap="round"/>
                    <text x="50" y="28" fill="#94a3b8" font-size="7" font-weight="bold" text-anchor="middle">COP POMPY</text>
                    
                    <g class="anim-cop-needle">
                        <line x1="50" y1="45" x2="50" y2="15" stroke="#ffffff" stroke-width="2.5" stroke-linecap="round"/>
                        <circle cx="50" cy="45" r="4" fill="#cbd5e1"/>
                    </g>
                    
                    <rect x="10" y="90" width="80" height="15" fill="#475569" rx="2" />
                    <circle cx="30" cy="97" r="4" fill="#ef4444"/>
                    <circle cx="50" cy="97" r="4" fill="#ef4444"/>
                    <circle cx="70" cy="97" r="4" fill="#ef4444"/>
                    
                    <rect class="anim-barrier-layer" x="10" y="88" width="80" height="2" rx="1"/>
                    <text x="50" y="78" fill="#ffffff" font-size="6" text-anchor="middle" letter-spacing="0.5">BARIERA TERMICZNA</text>
                </svg>
            </div>

            <div class="rk-res-tiles-panel" id="resTilesPanel">
                <div class="rk-res-tile">
                    <span class="rk-tile-lbl">Grubość Materiału</span>
                    <span class="rk-tile-val" id="resValThickness">10 mm</span>
                </div>
                <div class="rk-res-tile" id="resTileLimit">
                    <span class="rk-tile-lbl">Opór cieplny R<sub>&lambda;,B</sub></span>
                    <span class="rk-tile-val" id="resValR">0,015 m²·K/W</span>
                </div>
                <div class="rk-res-tile">
                    <span class="rk-tile-lbl">Max Gęstość Strumienia (q)</span>
                    <span class="rk-tile-val" id="resValQ">95 W/m² (przy t<sub>zas</sub>=35°C)</span>
                </div>
                <div class="rk-res-tile tile-full">
                    <span class="rk-tile-lbl">Wymagana Temp. Zasilania (dla straty 50 W/m²)</span>
                    <span class="rk-tile-val" id="resValZas">32°C (Idealna sprawność układu)</span>
                    <span class="rk-tile-sub" id="resValSub">Zużycie energii elektrycznej w normie projektowej.</span>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Zgodnie z wytycznymi - brak tagów H2/H3 w strukturze blokady)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-floor-res-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;"><div style="font-size:16px; text-transform:uppercase; margin-bottom:8px;">Błąd ochrony autorskiej</div><div style="font-size:13px; color:#cbd5e1;">Zestawienia Dataset oraz aplikacja symulatora okładzin wierzchnich stanowią integralną własność Projekt-Ogrzewania.pl.</div></div>';
        return;
    }

    // 2. Elementy sterujące i dashboard
    const btns = document.querySelectorAll('.rk-res-select-btn');
    const svgStage = document.getElementById('resSvgStage');
    const tileLimit = document.getElementById('resTileLimit');
    
    // Pola tekstowe kafelków
    const resThickness = document.getElementById('resValThickness');
    const resR = document.getElementById('resValR');
    const resQ = document.getElementById('resValQ');
    const resZas = document.getElementById('resValZas');
    const resSub = document.getElementById('resValSub');

    // Baza danych parametrów technicznych (czyste sznury znaków bez backticków)
    const materialDb = {
        gres: {
            mode: "gres", thickness: "10 mm", rVal: "0,015 m²·K/W",
            qVal: "95 W/m² (Dedykowana podłogówce)",
            zas: "32°C (Idealna sprawność układu)",
            sub: "Doskonała przewodność cieplna ceramiki. Pompa ciepła pracuje z najwyższym możliwym COP.",
            isOver: false
        },
        pvc: {
            mode: "pvc", thickness: "2,5 mm", rVal: "0,030 m²·K/W",
            qVal: "82 W/m² (Wysoka wydajność)",
            zas: "34°C (Stabilne parametry operacyjne)",
            sub: "Niski opór własny cienkich okładzin LVT klejonych do jastrychu. Bardzo dobry materiał.",
            isOver: false
        },
        panele: {
            mode: "panele", thickness: "8 mm", rVal: "0,070 m²·K/W",
            qVal: "60 W/m² (Średni opór materiałowy)",
            zas: "38°C (Wymaga korekty krzywej grzewczej)",
            sub: "Konieczność zastosowania dedykowanego, cienkiego podkładu kwarcowego maty perforowanej.",
            isOver: false
        },
        deska: {
            mode: "deska", thickness: "14 mm", rVal: "0,120 m²·K/W",
            qVal: "42 L/m² (Niska zdolność emisyjna)",
            zas: "43°C (Wzrost zużycia prądu o ok. 27.5%)",
            sub: "Drewno działa jak barierowy izolator. Wymusza podniesienie temperatury wody o 11 K w stosunku do gresu.",
            isOver: false
        },
        dywan: {
            mode: "dywan", thickness: "12 mm", rVal: "0,160 m²·K/W",
            qVal: "28 W/m² (Układ skrajnie dławiony)",
            zas: "47°C (Przekroczenie progu ekonomicznego)",
            sub: "PRZEKROCZONA NORMA PN-EN 1264 (>0,15 m²·K/W). Pompa ciepła traci efektywność i drastycznie rosną rachunki.",
            isOver: true
        }
    };

    // 3. Logika obsługi kliknięć kafelków selektora
    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const matKey = this.getAttribute('data-mat');
            const data = materialDb[matKey];

            // Aktualizacja stanu SVG
            svgStage.setAttribute('data-material', data.mode);

            // Podmiana danych liczbowych i opisów
            resThickness.textContent = data.thickness;
            resR.textContent = data.rVal;
            resQ.textContent = data.qVal;
            resZas.textContent = data.zas;
            resSub.textContent = data.sub;

            // Obsługa alertu przekroczenia normy PN-EN 1264
            if (data.isOver) {
                tileLimit.className = "rk-res-tile norm-alert";
                resR.style.color = "var(--rk-res-red)";
            } else {
                tileLimit.className = "rk-res-tile";
                resR.style.color = "var(--rk-res-dark)";
            }
        });
    });
});
</script>



<style>
:root {
    --rk-algo-dark: #0f172a;
    --rk-algo-brand: #8b5cf6; /* Inżynieryjny fiolet/indygo */
    --rk-algo-brand-light: #ede9fe;
    --rk-algo-accent: #f59e0b; /* Bursztyn dla akcentów ciepła */
    --rk-algo-blue: #0ea5e9;
    --rk-algo-bg: #ffffff;
    --rk-algo-panel: #f8fafc;
    --rk-algo-border: #e2e8f0;
    --rk-algo-text: #334155;
    --rk-algo-muted: #64748b;
    --rk-algo-green: #10b981;
}

.rk-algo-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-algo-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(139, 92, 246, 0.15);
    border: 1px solid rgba(139, 92, 246, 0.3);
    overflow: hidden;
}

/* Nagłówek */
.rk-algo-header {
    background: linear-gradient(135deg, var(--rk-algo-dark) 0%, #2e1065 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-algo-brand);
    position: relative;
}

.rk-algo-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(139, 92, 246, 0.25);
    color: #ddd6fe;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(139, 92, 246, 0.4);
}

.rk-algo-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-algo-title span { color: #c4b5fd; }

.rk-algo-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
}

.rk-algo-lead strong {
    color: #ffffff;
    font-weight: 800;
}

/* Sekcja Interaktywna - Blueprint */
.rk-algo-interactive {
    padding: 40px 50px;
    background: var(--rk-algo-panel);
}

/* Nawigacja Krokowa (Step-by-step) */
.rk-algo-steps-nav {
    display: flex;
    justify-content: space-between;
    margin-bottom: 35px;
    position: relative;
}

.rk-algo-steps-nav::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 0;
    right: 0;
    height: 2px;
    background: var(--rk-algo-border);
    z-index: 1;
    transform: translateY(-50%);
}

.rk-step-btn {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: #ffffff;
    border: 2px solid var(--rk-algo-border);
    color: var(--rk-algo-muted);
    font-weight: 900;
    font-size: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    position: relative;
    z-index: 2;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 2px 4px rgba(0,0,0,0.05);
}

.rk-step-btn:hover {
    border-color: var(--rk-algo-brand);
    color: var(--rk-algo-brand);
    transform: scale(1.1);
}

.rk-step-btn.active {
    background: var(--rk-algo-brand);
    border-color: var(--rk-algo-brand);
    color: #ffffff;
    box-shadow: 0 0 15px rgba(139, 92, 246, 0.4);
    transform: scale(1.15);
}

/* Dashboard Zawartości */
.rk-algo-dashboard {
    display: grid;
    grid-template-columns: 280px 1fr;
    gap: 35px;
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-algo-border);
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.03);
}

/* Obszar SVG (Styl Blueprint / Schemat) */
.rk-algo-svg-stage {
    background: #1e293b;
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
    border: 2px solid #334155;
    background-image: 
        linear-gradient(rgba(255,255,255,0.05) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,0.05) 1px, transparent 1px);
    background-size: 20px 20px;
}

.rk-algo-svg { width: 100%; height: auto; max-width: 220px; }

.rk-svg-layer { opacity: 0; position: absolute; transition: opacity 0.4s ease, transform 0.4s ease; transform: scale(0.95); width: 100%; height: 100%; }
.rk-svg-layer.active { opacity: 1; transform: scale(1); position: relative; }

/* Animacje SVG dla poszczególnych kroków */
/* Krok 1: Geometria */
.anim-measure { stroke-dasharray: 100; stroke-dashoffset: 100; animation: drawLine 1.5s forwards ease-out; }
/* Krok 2: U-value */
.anim-u-layer { opacity: 0; animation: fadeInDown 0.5s forwards; }
/* Krok 3: Straty bazowe */
.anim-heat-base { stroke-dasharray: 8 8; animation: heatFlowBase 1.5s linear infinite; }
/* Krok 4: Mostki */
.anim-bridge { animation: pulseBridge 1.5s infinite alternate; }
/* Krok 5: Wentylacja */
.anim-fan-spin { transform-origin: 50px 50px; animation: spinFan 2s linear infinite; }
.anim-air-flow { stroke-dasharray: 5 10; animation: heatFlowBase 1s linear infinite; }
/* Krok 6: Suma */
.anim-sum-glow { animation: pulseSum 2s infinite alternate; }

@keyframes drawLine { to { stroke-dashoffset: 0; } }
@keyframes fadeInDown { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } }
@keyframes heatFlowBase { to { stroke-dashoffset: -16; } }
@keyframes pulseBridge { 0% { fill: #ef4444; filter: drop-shadow(0 0 2px #ef4444); } 100% { fill: #fca5a5; filter: drop-shadow(0 0 10px #ef4444); } }
@keyframes spinFan { to { transform: rotate(360deg); } }
@keyframes pulseSum { 0% { fill: #c4b5fd; filter: drop-shadow(0 0 5px #8b5cf6); } 100% { fill: #ffffff; filter: drop-shadow(0 0 20px #8b5cf6); } }

/* Treść Panelu */
.rk-algo-content {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-algo-step-badge {
    font-size: 11px;
    font-weight: 800;
    color: var(--rk-algo-brand);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 8px;
}

.rk-algo-content h3 {
    margin: 0 0 15px 0;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-algo-dark);
}

.rk-algo-content p {
    margin: 0 0 20px 0;
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
}

/* Sekcja Wzoru (HTML Math zamiast LaTeX) */
.rk-algo-formula-box {
    background: var(--rk-algo-dark);
    border-radius: 12px;
    padding: 15px 20px;
    margin-top: auto;
    border-left: 4px solid var(--rk-algo-brand);
}

.rk-formula-math {
    font-family: 'Cambria Math', 'Times New Roman', serif;
    font-size: 20px;
    color: #ddd6fe;
    letter-spacing: 1px;
    margin: 0 0 8px 0;
    text-align: center;
}

.rk-formula-desc {
    font-size: 12px;
    color: #94a3b8;
    text-align: center;
    margin: 0;
}
.rk-formula-desc strong { color: #cbd5e1; }

@media (max-width: 768px) {
    .rk-algo-header, .rk-algo-interactive { padding: 35px 20px; }
    .rk-algo-title { font-size: 24px; }
    .rk-algo-dashboard { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-algo-svg-stage { height: 200px; max-width: 100%; margin-bottom: 10px; }
    .rk-step-btn { width: 36px; height: 36px; font-size: 14px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-algorytm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Jak wygląda uproszczony algorytm kalkulatora OZC?",
    "description": "Poznaj 6 kroków sekwencyjnego obliczania oporów przegród, strat bazowych, mostków termicznych i wentylacji wg normy PN-EN 12831.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-algorytm",
    "name": "Algorytm obliczeniowy OZC - Zestawienie Wzorów",
    "description": "Zbiór uproszczonych formuł fizycznych używanych do wyznaczania projektowego obciążenia cieplnego budynku.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator OZC algorytm",
      "straty bazowe przez przenikanie wzór",
      "poprawka na mostki termiczne",
      "obliczenie strat wentylacyjnych wzór",
      "współczynnik przenikania ciepła U"
    ],
    "measurementTechnique": "Sekwencyjna metoda obliczeniowa zgodna z normą PN-EN 12831 integrująca straty przenikania i wentylacji (ΦHL = ΦT,corr + ΦV,total).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Krok 1-2: Geometria (A, ΔT) i opór cieplny (U).",
        "Krok 3-4: Straty bazowe (ΦT,base) i korekta na mostki cieplne (+15%).",
        "Krok 5-6: Straty wentylacyjne (ΦV,total) uwzględniające rekuperację oraz suma końcowa mocy grzewczej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-algorytm",
    "name": "Interaktywny Algorytm OZC",
    "description": "Narzędzie demonstracyjne przeprowadzające użytkownika przez 6 kluczowych kroków inżynieryjnych obliczeń strat ciepła budynku.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-algo-container" id="rk-algo-app">
    
    <div class="rk-algo-header">
        <div class="rk-algo-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line></svg>
            Inżynieria w pigułce
        </div>
        <h2 class="rk-algo-title">Jak wygląda <span>uproszczony algorytm</span> kalkulatora OZC?</h2>
        <p class="rk-algo-lead">
            Uproszczony algorytm obliczeniowy OZC opiera się na sekwencyjnym wyznaczaniu oporów przegród, strat bazowych oraz dodawaniu poprawek na mostki termiczne i wentylację zgodnie z rygorystyczną metodologią <strong>PN-EN 12831</strong>. Poniżej przedstawiamy 6 kluczowych kroków prowadzących do wyznaczenia ostatecznej mocy źródła ciepła.
        </p>
    </div>

    <div class="rk-algo-interactive">
        
        <div class="rk-algo-steps-nav" id="algoSteps">
            <div class="rk-step-btn active" data-step="1">1</div>
            <div class="rk-step-btn" data-step="2">2</div>
            <div class="rk-step-btn" data-step="3">3</div>
            <div class="rk-step-btn" data-step="4">4</div>
            <div class="rk-step-btn" data-step="5">5</div>
            <div class="rk-step-btn" data-step="6">6</div>
        </div>

        <div class="rk-algo-dashboard">
            
            <div class="rk-algo-svg-stage">
                
                <svg class="rk-svg-layer active" id="svg-step-1" viewBox="0 0 100 100">
                    <rect x="20" y="30" width="60" height="50" fill="none" stroke="#64748b" stroke-width="2"/>
                    <polygon points="20,30 50,10 80,30" fill="none" stroke="#64748b" stroke-width="2"/>
                    <line class="anim-measure" x1="10" y1="30" x2="10" y2="80" stroke="#38bdf8" stroke-width="2" marker-start="url(#arrow)" marker-end="url(#arrow)"/>
                    <line class="anim-measure" x1="20" y1="90" x2="80" y2="90" stroke="#38bdf8" stroke-width="2" marker-start="url(#arrow)" marker-end="url(#arrow)"/>
                    <text x="50" y="55" fill="#38bdf8" font-size="12" font-weight="bold" text-anchor="middle">ΔT</text>
                    <defs>
                        <marker id="arrow" viewBox="0 0 10 10" refX="5" refY="5" markerWidth="4" markerHeight="4" orient="auto-start-reverse">
                            <path d="M 0 0 L 10 5 L 0 10 z" fill="#38bdf8" />
                        </marker>
                    </defs>
                </svg>

                <svg class="rk-svg-layer" id="svg-step-2" viewBox="0 0 100 100">
                    <rect class="anim-u-layer" x="30" y="10" width="10" height="80" fill="#334155" />
                    <rect class="anim-u-layer" x="40" y="10" width="20" height="80" fill="#475569" style="animation-delay: 0.2s" />
                    <rect class="anim-u-layer" x="60" y="10" width="10" height="80" fill="#64748b" style="animation-delay: 0.4s" />
                    <text x="50" y="55" fill="#f59e0b" font-size="14" font-weight="bold" text-anchor="middle" style="animation-delay: 0.6s">U</text>
                </svg>

                <svg class="rk-svg-layer" id="svg-step-3" viewBox="0 0 100 100">
                    <rect x="40" y="10" width="20" height="80" fill="#334155" />
                    <path class="anim-heat-base" d="M 80 30 L 20 30" fill="none" stroke="#ef4444" stroke-width="4" stroke-linecap="round"/>
                    <path class="anim-heat-base" d="M 80 50 L 20 50" fill="none" stroke="#ef4444" stroke-width="4" stroke-linecap="round" style="animation-delay: 0.3s"/>
                    <path class="anim-heat-base" d="M 80 70 L 20 70" fill="none" stroke="#ef4444" stroke-width="4" stroke-linecap="round" style="animation-delay: 0.6s"/>
                </svg>

                <svg class="rk-svg-layer" id="svg-step-4" viewBox="0 0 100 100">
                    <rect x="20" y="20" width="60" height="60" fill="none" stroke="#475569" stroke-width="6"/>
                    <rect x="35" y="35" width="30" height="30" fill="none" stroke="#64748b" stroke-width="4"/>
                    <circle class="anim-bridge" cx="35" cy="35" r="5" />
                    <circle class="anim-bridge" cx="65" cy="35" r="5" style="animation-delay: 0.2s" />
                    <circle class="anim-bridge" cx="35" cy="65" r="5" style="animation-delay: 0.4s" />
                    <circle class="anim-bridge" cx="65" cy="65" r="5" style="animation-delay: 0.6s" />
                </svg>

                <svg class="rk-svg-layer" id="svg-step-5" viewBox="0 0 100 100">
                    <circle cx="50" cy="50" r="30" fill="none" stroke="#475569" stroke-width="4"/>
                    <g class="anim-fan-spin">
                        <path d="M 50 50 L 50 25 A 25 25 0 0 1 75 50 Z" fill="#0ea5e9" opacity="0.8"/>
                        <path d="M 50 50 L 50 75 A 25 25 0 0 1 25 50 Z" fill="#0ea5e9" opacity="0.8"/>
                    </g>
                    <path class="anim-air-flow" d="M 10 50 L 30 50" fill="none" stroke="#38bdf8" stroke-width="3"/>
                    <path class="anim-air-flow" d="M 90 50 L 70 50" fill="none" stroke="#ef4444" stroke-width="3"/>
                </svg>

                <svg class="rk-svg-layer" id="svg-step-6" viewBox="0 0 100 100">
                    <circle cx="50" cy="50" r="40" fill="none" stroke="#475569" stroke-width="2" stroke-dasharray="4 4"/>
                    <text class="anim-sum-glow" x="50" y="58" font-family="serif" font-size="28" font-weight="bold" text-anchor="middle">&Phi;</text>
                </svg>
            </div>

            <div class="rk-algo-content">
                <span class="rk-algo-step-badge" id="algoStepBadge">KROK 1 Z 6</span>
                <h3 id="algoTitle">Zdefiniowanie geometrii</h3>
                <p id="algoDesc">
                    Oblicz pola powierzchni wszystkich przegród zewnętrznych (A) z podziałem na kierunki świata oraz ustal projektową różnicę temperatur (ΔT) na podstawie strefy klimatycznej.
                </p>
                
                <div class="rk-algo-formula-box">
                    <div class="rk-formula-math" id="algoFormulaMath">&Delta;T = (&theta;<sub>int</sub> &minus; &theta;<sub>e</sub>)</div>
                    <p class="rk-formula-desc" id="algoFormulaDesc"><strong>&Delta;T</strong> &#8211; różnica temperatur zewn. i wewn.</p>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-algo-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // Elementy DOM
    const stepBtns = document.querySelectorAll('.rk-step-btn');
    const badge = document.getElementById('algoStepBadge');
    const title = document.getElementById('algoTitle');
    const desc = document.getElementById('algoDesc');
    const fMath = document.getElementById('algoFormulaMath');
    const fDesc = document.getElementById('algoFormulaDesc');

    // Baza danych algorytmu (Używamy zwykłego HTML dla matematyki)
    const algoData = {
        "1": {
            title: "Zdefiniowanie geometrii",
            desc: "Oblicz pola powierzchni wszystkich przegród zewnętrznych (A) z podziałem na kierunki świata oraz ustal projektową różnicę temperatur na podstawie lokalnej strefy klimatycznej.",
            math: "&Delta;T = (&theta;<sub>int</sub> &minus; &theta;<sub>e</sub>)",
            fdesc: "<strong>&Delta;T</strong> - różnica temperatur"
        },
        "2": {
            title: "Wyznaczenie współczynników U",
            desc: "Dla każdej przegrody oblicz opór cieplny warstw materiałowych R (dzieląc grubość przez przewodność), a następnie wyznacz ostateczny współczynnik przenikania ciepła U.",
            math: "U = 1 / (&Sigma;R + R<sub>si</sub> + R<sub>se</sub>)",
            fdesc: "<strong>U</strong> - współczynnik przenikania ciepła [W/(m&sup2;&middot;K)]"
        },
        "3": {
            title: "Kalkulacja strat bazowych",
            desc: "Pomnóż pole powierzchni danej przegrody przez jej współczynnik U oraz wyznaczoną wcześniej różnicę temperatur. Daje to czystą stratę przenikania bez błędów montażowych.",
            math: "&Phi;<sub>T,base</sub> = A &times; U &times; &Delta;T",
            fdesc: "<strong>&Phi;<sub>T,base</sub></strong> - bazowa strata przez przenikanie"
        },
        "4": {
            title: "Poprawka na mostki termiczne",
            desc: "Skoryguj straty bazowe o dodatek na mostki liniowe (miejsca słabszej izolacji m.in. przy oknach i nadprożach). Standardowo przyjmuje się dodatek +15% dla budownictwa tradycyjnego.",
            math: "&Phi;<sub>T,corr</sub> = &Phi;<sub>T,base</sub> &times; 1,15",
            fdesc: "<strong>1,15</strong> - uproszczony globalny dodatek na mostki"
        },
        "5": {
            title: "Obliczenie strat wentylacyjnych",
            desc: "Wyznacz strumień powietrza V [m³/h] zależnie od systemu. Oblicz stratę uwzględniając ciepło właściwe powietrza oraz sprawność odzysku ciepła (rekuperacji).",
            math: "&Phi;<sub>V,total</sub> = V &times; 0,34 &times; &Delta;T &times; (1 &minus; &eta;)",
            fdesc: "<strong>&eta;</strong> - sprawność odzysku ciepła (rekuperacji)"
        },
        "6": {
            title: "Sumowanie końcowe",
            desc: "Dodaj skorygowane straty przez przenikanie do obliczonych strat wentylacyjnych. Otrzymany wynik to całkowita szczytowa moc projektowa budynku, determinująca dobór pompy ciepła.",
            math: "&Phi;<sub>HL</sub> = &Phi;<sub>T,corr</sub> + &Phi;<sub>V,total</sub>",
            fdesc: "<strong>&Phi;<sub>HL</sub></strong> - Projektowe Obciążenie Cieplne (OZC)"
        }
    };

    // Logika kroków
    stepBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            const step = this.getAttribute('data-step');
            
            // Przyciski
            stepBtns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            // SVG Warstwy
            document.querySelectorAll('.rk-svg-layer').forEach(layer => layer.classList.remove('active'));
            document.getElementById('svg-step-' + step).classList.add('active');

            // Teksty
            const data = algoData[step];
            badge.textContent = "KROK " + step + " Z 6";
            title.textContent = data.title;
            desc.textContent = data.desc;
            fMath.innerHTML = data.math;
            fDesc.innerHTML = data.fdesc;
        });
    });
});
</script>



<style>
:root {
    --rk-sim-dark: #0f172a;
    --rk-sim-brand: #8b5cf6; /* Inżynieryjny fiolet */
    --rk-sim-brand-light: #ede9fe;
    --rk-sim-accent: #f59e0b; /* Bursztyn/Ciepło */
    --rk-sim-blue: #0ea5e9;
    --rk-sim-bg: #ffffff;
    --rk-sim-panel: #f8fafc;
    --rk-sim-border: #e2e8f0;
    --rk-sim-text: #334155;
    --rk-sim-muted: #64748b;
    --rk-sim-green: #10b981;
    --rk-sim-red: #ef4444;
}

.rk-sim-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-sim-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(139, 92, 246, 0.15);
    border: 1px solid rgba(139, 92, 246, 0.3);
    overflow: hidden;
}

/* Nagłówek */
.rk-sim-header {
    background: linear-gradient(135deg, var(--rk-sim-dark) 0%, #2e1065 100%);
    padding: 40px 50px 30px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-sim-brand);
    text-align: center;
}

.rk-sim-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(139, 92, 246, 0.25);
    color: #ddd6fe;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(139, 92, 246, 0.4);
}

.rk-sim-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 15px 0;
    color: #ffffff;
}

.rk-sim-title span { color: #c4b5fd; }

.rk-sim-lead {
    font-size: 16px;
    line-height: 1.6;
    color: #cbd5e1;
    margin: 0 auto;
    max-width: 800px;
}

/* Główny układ interfejsu */
.rk-sim-interactive {
    padding: 40px 50px;
    background: var(--rk-sim-panel);
}

/* Postęp w symulatorze */
.rk-sim-progress-bar {
    display: flex;
    justify-content: space-between;
    margin-bottom: 30px;
    position: relative;
    padding: 0 10px;
}

.rk-sim-progress-bar::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 20px;
    right: 20px;
    height: 4px;
    background: var(--rk-sim-border);
    z-index: 1;
    transform: translateY(-50%);
    border-radius: 2px;
}

.rk-sim-progress-fill {
    position: absolute;
    top: 50%;
    left: 20px;
    height: 4px;
    background: var(--rk-sim-brand);
    z-index: 1;
    transform: translateY(-50%);
    border-radius: 2px;
    transition: width 0.4s ease;
    width: 0%;
}

.rk-step-node {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-sim-border);
    color: transparent;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    z-index: 2;
    transition: all 0.4s ease;
}

.rk-step-node.completed { background: var(--rk-sim-brand); }
.rk-step-node.active { background: var(--rk-sim-brand); box-shadow: 0 0 0 6px var(--rk-sim-brand-light); }

/* Dashboard Symulatora */
.rk-sim-dashboard {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: 30px;
}

/* Sekcja formularzy (Lewa) */
.rk-sim-controls {
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-sim-border);
    box-shadow: 0 10px 20px -5px rgba(0,0,0,0.02);
}

.rk-step-view { display: none; animation: fadeIn 0.4s ease; }
.rk-step-view.active { display: block; }

@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }

.rk-step-title {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-sim-dark);
    margin: 0 0 10px 0;
}

.rk-step-desc {
    font-size: 14px;
    color: var(--rk-sim-muted);
    line-height: 1.6;
    margin: 0 0 25px 0;
}

/* Elementy formularza */
.rk-form-group { margin-bottom: 25px; }

.rk-form-label {
    display: block;
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-sim-text);
    margin-bottom: 8px;
    text-transform: uppercase;
}

.rk-range-wrap {
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-range-input {
    flex: 1;
    -webkit-appearance: none;
    height: 8px;
    background: #e2e8f0;
    border-radius: 4px;
    outline: none;
}

.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-sim-brand);
    cursor: pointer;
    border: 3px solid #ffffff;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

.rk-val-display {
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-sim-brand);
    min-width: 60px;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

/* Radio Buttons dla standardów (Wymuszono układ pionowy) */
.rk-radio-group { 
    display: flex; 
    flex-direction: column; 
    gap: 10px; 
}

.rk-radio-btn {
    width: 100%;
    padding: 15px 20px;
    text-align: left;
    background: var(--rk-sim-panel);
    border: 2px solid var(--rk-sim-border);
    border-radius: 10px;
    cursor: pointer;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-sim-muted);
    transition: all 0.2s;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.rk-radio-btn span {
    font-size: 12px;
    font-weight: 400;
}

.rk-radio-btn.selected {
    background: var(--rk-sim-brand-light);
    border-color: var(--rk-sim-brand);
    color: var(--rk-sim-brand);
}

/* Przyciski Nawigacji Wewnętrznej */
.rk-nav-actions {
    display: flex;
    flex-direction: row; /* Zawsze poziomo */
    justify-content: space-between;
    align-items: center;
    gap: 15px; /* Odstęp między przyciskami */
    margin-top: 30px;
    padding-top: 20px;
    border-top: 1px solid var(--rk-sim-border);
}

.rk-action-btn {
    padding: 14px 24px; /* Grubsze buttony */
    border-radius: 10px;
    font-size: 15px;
    font-weight: 800;
    cursor: pointer;
    transition: all 0.2s;
    border: none;
    flex: 1; /* Równy podział szerokości na mobile */
    text-align: center;
}

.rk-btn-prev { background: #e2e8f0; color: #64748b; flex: 0.5; /* Mniejszy guzik "Wróć" */ }
.rk-btn-prev:hover { background: #cbd5e1; }
.rk-btn-prev:disabled { opacity: 0; pointer-events: none; }

.rk-btn-next { background: var(--rk-sim-brand); color: #ffffff; box-shadow: 0 4px 10px rgba(139, 92, 246, 0.3); }
.rk-btn-next:hover { transform: translateY(-2px); box-shadow: 0 6px 15px rgba(139, 92, 246, 0.4); }

/* Sekcja Wyników (Prawa) */
.rk-sim-results-panel {
    background: var(--rk-sim-dark);
    border-radius: 20px;
    padding: 25px;
    display: flex;
    flex-direction: column;
    position: relative;
    overflow: hidden;
}

.rk-res-header-txt {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: #94a3b8;
    margin-bottom: 20px;
    letter-spacing: 1px;
}

/* Wiersze podsumowania */
.rk-calc-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 0;
    border-bottom: 1px dashed rgba(255,255,255,0.1);
    font-size: 14px;
}

.rk-calc-row:last-of-type { border-bottom: none; }

.rk-row-lbl { color: #cbd5e1; }
.rk-row-val { color: #ffffff; font-weight: 700; font-variant-numeric: tabular-nums; }
.rk-val-hl { color: var(--rk-sim-accent); }

/* Końcowy Wynik OZC */
.rk-final-result-box {
    margin-top: auto;
    background: rgba(139, 92, 246, 0.2);
    border: 1px solid rgba(139, 92, 246, 0.4);
    border-radius: 14px;
    padding: 20px;
    text-align: center;
}

.rk-final-lbl { font-size: 11px; font-weight: 800; color: #ddd6fe; text-transform: uppercase; margin-bottom: 5px; display: block; }
.rk-final-val { font-size: 32px; font-weight: 900; color: #ffffff; line-height: 1; margin-bottom: 5px; transition: color 0.3s;}
.rk-final-formula { font-size: 11px; color: #a78bfa; font-family: monospace; }

/* SVG Dynamiczny Wykres */
.rk-live-chart {
    height: 100px;
    margin-bottom: 20px;
    width: 100%;
}
.chart-bar { transition: height 0.4s ease, y 0.4s ease; }

@media (max-width: 768px) {
    .rk-sim-header, .rk-sim-interactive { padding: 30px 20px; }
    .rk-sim-title { font-size: 24px; }
    .rk-sim-dashboard { grid-template-columns: 1fr; gap: 20px; }
    .rk-radio-group { flex-direction: column; }
    .rk-step-view { min-height: auto; }
    .rk-action-btn { font-size: 13px; padding: 12px 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-algorytm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Jak wygląda uproszczony algorytm kalkulatora OZC?",
    "description": "Poznaj 4 kroki sekwencyjnego obliczania oporów przegród, strat bazowych, mostków termicznych i wentylacji wg normy PN-EN 12831.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-algorytm",
    "name": "Algorytm obliczeniowy OZC - Zestawienie Wzorów",
    "description": "Zbiór uproszczonych formuł fizycznych używanych do wyznaczania projektowego obciążenia cieplnego budynku.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator OZC algorytm",
      "straty bazowe przez przenikanie wzór",
      "poprawka na mostki termiczne",
      "obliczenie strat wentylacyjnych wzór",
      "współczynnik przenikania ciepła U"
    ],
    "measurementTechnique": "Sekwencyjna metoda obliczeniowa zgodna z normą PN-EN 12831 integrująca straty przenikania i wentylacji (ΦHL = ΦT,corr + ΦV,total).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Krok 1: Geometria ściany (A) i różnica temperatur (ΔT).",
        "Krok 2: Ustalenie oporu cieplnego (U) przegrody.",
        "Krok 3: Obliczenie bazowej straty przenikania z uwzględnieniem mostków termicznych.",
        "Krok 4: Dodanie strat wentylacyjnych (ΦV,total) uwzględniających rekuperację oraz suma końcowa mocy grzewczej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-algorytm",
    "name": "Kalkulator Edukacyjny OZC",
    "description": "Interaktywny symulator pozwalający na żywo przeliczać straty ciepła przykładowej ściany w zależności od parametrów izolacji i wentylacji.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-sim-container" id="rk-sim-app">
    
    <div class="rk-sim-header">
        <div class="rk-sim-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line></svg>
            Inżynieria na żywo
        </div>
        <h2 class="rk-sim-title">Zrozum fizykę: <span>Uproszczony Kalkulator OZC</span></h2>
        <p class="rk-sim-lead">
            Algorytm obliczeniowy normy <strong>PN-EN 12831</strong> polega na żmudnym, sekwencyjnym wyznaczaniu oporów przegród, strat bazowych, mostków i wentylacji. Abyś zrozumiał skalę ucieczki ciepła ze swojego domu, stworzyliśmy uproszczony symulator. Sprawdź, jak jedna zmiana izolacji wpływa na wynik końcowy dla przykładowego pomieszczenia.
        </p>
    </div>

    <div class="rk-sim-interactive">
        
        <div class="rk-sim-progress-bar">
            <div class="rk-sim-progress-fill" id="simProgressLine"></div>
            <div class="rk-step-node active" id="node-1">1</div>
            <div class="rk-step-node" id="node-2">2</div>
            <div class="rk-step-node" id="node-3">3</div>
            <div class="rk-step-node" id="node-4">4</div>
        </div>

        <div class="rk-sim-dashboard">
            
            <div class="rk-sim-controls">
                
                <div class="rk-step-view active" id="view-1">
                    <h3 class="rk-step-title">Krok 1: Geometria i Klimat</h3>
                    <p class="rk-step-desc">Ustal pole powierzchni analizowanej ściany zewnętrznej oraz projektową różnicę temperatur na zewnątrz (Zima).</p>
                    
                    <div class="rk-form-group">
                        <label class="rk-form-label">Powierzchnia ściany (A)</label>
                        <div class="rk-range-wrap">
                            <input type="range" id="inpArea" class="rk-range-input" min="10" max="40" value="16" step="1">
                            <div class="rk-val-display"><span id="valAreaOut">16</span> m²</div>
                        </div>
                    </div>
                    
                    <div class="rk-form-group">
                        <label class="rk-form-label">Temperatura Zewnętrzna (θe)</label>
                        <div class="rk-range-wrap">
                            <input type="range" id="inpTemp" class="rk-range-input" min="-24" max="-16" value="-20" step="2">
                            <div class="rk-val-display"><span id="valTempOut">-20</span> °C</div>
                        </div>
                        <div style="font-size:11px; color:#94a3b8; margin-top:5px;">Wewn. stała: +20°C (ΔT = <span id="valDeltaOut">40</span>K)</div>
                    </div>
                </div>

                <div class="rk-step-view" id="view-2">
                    <h3 class="rk-step-title">Krok 2: Izolacja (Współczynnik U)</h3>
                    <p class="rk-step-desc">Określ standard izolacji ściany. Zgodnie z prawem, mniejsze U oznacza lepsze zatrzymywanie ciepła.</p>
                    
                    <div class="rk-radio-group">
                        <div class="rk-radio-btn" data-u="1.20">
                            <strong>Stary dom</strong>
                            <span>Brak izolacji</span>
                        </div>
                        <div class="rk-radio-btn selected" data-u="0.15">
                            <strong>WT 2021</strong>
                            <span>Standard prawny</span>
                        </div>
                        <div class="rk-radio-btn" data-u="0.10">
                            <strong>Pasywny</strong>
                            <span>Izolacja premium</span>
                        </div>
                    </div>
                </div>

                <div class="rk-step-view" id="view-3">
                    <h3 class="rk-step-title">Krok 3: Mostki termiczne</h3>
                    <p class="rk-step-desc">Pusta ściana to fikcja. Dodaj procentową poprawkę na okna, nadproża i błędy montażowe.</p>
                    
                    <div class="rk-radio-group">
                        <div class="rk-radio-btn selected" data-bridge="1.0">
                            <strong>0%</strong>
                            <span>Warunki laboratoryjne</span>
                        </div>
                        <div class="rk-radio-btn" data-bridge="1.15">
                            <strong>+15%</strong>
                            <span>Standard budowlany</span>
                        </div>
                        <div class="rk-radio-btn" data-bridge="1.30">
                            <strong>+30%</strong>
                            <span>Duże przeszklenia</span>
                        </div>
                    </div>
                </div>

                <div class="rk-step-view" id="view-4">
                    <h3 class="rk-step-title">Krok 4: System Wentylacji</h3>
                    <p class="rk-step-desc">Zimne powietrze z zewnątrz wpadające do pokoju trzeba dogrzać. Wybierz rodzaj wentylacji.</p>
                    
                    <div class="rk-radio-group">
                        <div class="rk-radio-btn selected" data-vent="gravity">
                            <strong>Grawitacyjna (Naturalna)</strong>
                            <span>Zimne powietrze zasysane w 100% z zewnątrz.</span>
                        </div>
                        <div class="rk-radio-btn" data-vent="reku">
                            <strong>Rekuperacja (Odzysk 85%)</strong>
                            <span>Powietrze dogrzane w wymienniku ciepła.</span>
                        </div>
                    </div>
                </div>

                <div class="rk-nav-actions">
                    <button class="rk-action-btn rk-btn-prev" id="btnPrev" disabled>Wróć</button>
                    <button class="rk-action-btn rk-btn-next" id="btnNext">Przejdź dalej</button>
                </div>
            </div>

            <div class="rk-sim-results-panel">
                <div class="rk-res-header-txt">Bieżący Bilans Pomieszczenia</div>
                
                <svg class="rk-live-chart" viewBox="0 0 100 100" preserveAspectRatio="none">
                    <rect x="10" y="80" width="30" height="20" fill="#f59e0b" class="chart-bar" id="barTrans"/>
                    <rect x="60" y="80" width="30" height="20" fill="#0ea5e9" class="chart-bar" id="barVent"/>
                </svg>

                <div class="rk-calc-row">
                    <span class="rk-row-lbl">1. Przenikanie ściany:</span>
                    <span class="rk-row-val"><span id="outWall">96</span> W</span>
                </div>
                <div class="rk-calc-row">
                    <span class="rk-row-lbl">2. Poprawka (Mostki):</span>
                    <span class="rk-row-val" style="color:#ef4444;">+<span id="outBridge">0</span> W</span>
                </div>
                <div class="rk-calc-row">
                    <span class="rk-row-lbl">3. Strata wentylacyjna:</span>
                    <span class="rk-row-val" style="color:#38bdf8;">+<span id="outVent">408</span> W</span>
                </div>

                <div class="rk-final-result-box">
                    <span class="rk-final-lbl">Szacunkowe OZC (Moc grzewcza)</span>
                    <div class="rk-final-val"><span id="outTotal">504</span> W</div>
                    <div class="rk-final-formula">ΦHL = ΦT,corr + ΦV,total</div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-sim-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // 2. Elementy Nawigacji
    let currentStep = 1;
    const totalSteps = 4;
    const btnNext = document.getElementById('btnNext');
    const btnPrev = document.getElementById('btnPrev');
    const progLine = document.getElementById('simProgressLine');

    // 3. Stan Kalkulatora
    let state = {
        area: 16,
        tempOut: -20,
        tempIn: 20,
        uValue: 0.15,
        bridgeFactor: 1.0,
        ventType: 'gravity'
    };

    // 4. Elementy Formularza
    const inpArea = document.getElementById('inpArea');
    const valAreaOut = document.getElementById('valAreaOut');
    const inpTemp = document.getElementById('inpTemp');
    const valTempOut = document.getElementById('valTempOut');
    const valDeltaOut = document.getElementById('valDeltaOut');

    const radUValues = document.querySelectorAll('#view-2 .rk-radio-btn');
    const radBridges = document.querySelectorAll('#view-3 .rk-radio-btn');
    const radVents = document.querySelectorAll('#view-4 .rk-radio-btn');

    // 5. Elementy Wyjściowe (Wyniki)
    const outWall = document.getElementById('outWall');
    const outBridge = document.getElementById('outBridge');
    const outVent = document.getElementById('outVent');
    const outTotal = document.getElementById('outTotal');
    const barTrans = document.getElementById('barTrans');
    const barVent = document.getElementById('barVent');

    // --- FUNKCJE OBLICZENIOWE ---
    function calculateOZC() {
        const deltaT = state.tempIn - state.tempOut;
        
        // 1. Przenikanie bazy (A * U * dT)
        const phiBase = state.area * state.uValue * deltaT;
        
        // 2. Przenikanie z mostkami
        const phiCorr = phiBase * state.bridgeFactor;
        const bridgeDiff = phiCorr - phiBase;

        // 3. Wentylacja (Uproszczenie dla pokoju: Kubatura ok 40m3. Strumień V=20m3/h)
        const vol = state.area * 2.5; // Kubatura
        let vAir = vol * 0.5; // Krotność wymiany
        let ventLoss = 0;

        if (state.ventType === 'gravity') {
            ventLoss = vAir * 0.34 * deltaT;
        } else {
            // Rekuperacja 85% sprawności
            ventLoss = vAir * 0.34 * deltaT * 0.15;
        }

        // 4. Suma Całkowita
        const totalLoss = phiCorr + ventLoss;

        // Aktualizacja interfejsu z animacją liczb
        animateValue(outWall, Math.round(phiBase));
        animateValue(outBridge, Math.round(bridgeDiff));
        animateValue(outVent, Math.round(ventLoss));
        animateValue(outTotal, Math.round(totalLoss));

        // Aktualizacja słupków SVG (Wizualizacja proporcji)
        // Zakładamy max wartość ok 2000W dla starych domów, by słupki nie wychodziły poza SVG
        const scale = 100 / 2000; 
        let hTrans = Math.min(Math.round(phiCorr * scale), 100);
        let hVent = Math.min(Math.round(ventLoss * scale), 100);
        
        // Zapewnienie minimalnej widoczności słupka
        hTrans = Math.max(hTrans, 2);
        hVent = Math.max(hVent, 2);

        barTrans.setAttribute('height', hTrans);
        barTrans.setAttribute('y', 100 - hTrans);
        barVent.setAttribute('height', hVent);
        barVent.setAttribute('y', 100 - hVent);
        
        // Kolorowanie finału
        const finalValBox = document.querySelector('.rk-final-val');
        if(totalLoss > 1000) { finalValBox.style.color = '#ef4444'; } 
        else if (totalLoss < 300) { finalValBox.style.color = '#10b981'; }
        else { finalValBox.style.color = '#ffffff'; }
    }

    function animateValue(obj, end) {
        // Prosta podmiana dla płynności na mobile, bez ciężkich setInterval
        obj.textContent = end;
    }

    // --- BINDING EVENTÓW ---

    // Krok 1: Suwaki
    inpArea.addEventListener('input', (e) => {
        state.area = parseInt(e.target.value);
        valAreaOut.textContent = state.area;
        calculateOZC();
    });

    inpTemp.addEventListener('input', (e) => {
        state.tempOut = parseInt(e.target.value);
        valTempOut.textContent = state.tempOut;
        valDeltaOut.textContent = state.tempIn - state.tempOut;
        calculateOZC();
    });

    // Funkcja pomocnicza dla Radio Buttonów
    function setupRadioGroup(nodes, stateKey, attrName) {
        nodes.forEach(btn => {
            btn.addEventListener('click', function() {
                nodes.forEach(b => b.classList.remove('selected'));
                this.classList.add('selected');
                const val = this.getAttribute(attrName);
                // Konwersja na float jeśli to liczba, zostaw string jeśli wentylacja
                state[stateKey] = isNaN(parseFloat(val)) ? val : parseFloat(val);
                calculateOZC();
            });
        });
    }

    // Krok 2, 3, 4: Radia
    setupRadioGroup(radUValues, 'uValue', 'data-u');
    setupRadioGroup(radBridges, 'bridgeFactor', 'data-bridge');
    setupRadioGroup(radVents, 'ventType', 'data-vent');


    // --- NAWIGACJA KROKOWA ---
    function updateNav() {
        // Przyciski 
        btnPrev.disabled = currentStep === 1;
        
        if (currentStep === totalSteps) {
            btnNext.textContent = 'Zakończ';
            if(btnNext.classList.contains('finalized')) return;
            
            // Po zamknięciu domknięcia procesu -> przekierowanie na zakup
            btnNext.onclick = function() { window.location.href = 'https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/'; }
            
            btnNext.classList.add('finalized');
        } else {
            btnNext.textContent = 'Przejdź dalej';
            btnNext.onclick = null; // Czyszczenie
            btnNext.classList.remove('finalized');
        }

        // Pasek postępu
        const progress = ((currentStep - 1) / (totalSteps - 1)) * 100;
        progLine.style.width = progress + '%';

        // Kropeczki
        document.querySelectorAll('.rk-step-node').forEach((node, index) => {
            node.classList.remove('active', 'completed');
            if (index + 1 === currentStep) node.classList.add('active');
            if (index + 1 < currentStep) node.classList.add('completed');
        });

        // Widoki (Panele)
        document.querySelectorAll('.rk-step-view').forEach(view => {
            view.classList.remove('active');
        });
        document.getElementById('view-' + currentStep).classList.add('active');
    }

    btnNext.addEventListener('click', () => {
        if (currentStep < totalSteps) {
            currentStep++;
            updateNav();
        }
    });

    btnPrev.addEventListener('click', () => {
        if (currentStep > 1) {
            currentStep--;
            updateNav();
        }
    });

    // Init
    calculateOZC();
});
</script>



<style>
:root {
    --rk-hyd-dark: #0f172a;
    --rk-hyd-brand: #0284c7; /* Inżynieryjny niebieski hydrauliczny */
    --rk-hyd-brand-light: #e0f2fe;
    --rk-hyd-accent: #f59e0b;
    --rk-hyd-screen: #0b1120;
    --rk-hyd-bg: #ffffff;
    --rk-hyd-panel: #f8fafc;
    --rk-hyd-border: #e2e8f0;
    --rk-hyd-text: #334155;
    --rk-hyd-muted: #64748b;
    --rk-hyd-green: #10b981;
    --rk-hyd-red: #ef4444;
}

.rk-hyd-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-hyd-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid rgba(2, 132, 199, 0.3);
    overflow: hidden;
}

/* Nagłówek */
.rk-hyd-header {
    background: linear-gradient(135deg, var(--rk-hyd-dark) 0%, #0c4a6e 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-hyd-brand);
}

.rk-hyd-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.25);
    color: #38bdf8;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(2, 132, 199, 0.4);
}

.rk-hyd-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-hyd-title span { color: #38bdf8; }

.rk-hyd-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0 0 25px 0;
}

.rk-hyd-lead strong { color: #ffffff; font-weight: 800; }

.rk-link-hyd {
    color: #38bdf8;
    text-decoration: none;
    border-bottom: 1px dashed #38bdf8;
    transition: all 0.3s;
}
.rk-link-hyd:hover { color: #ffffff; border-bottom-color: #ffffff; }

/* Box ze wzorem termodynamicznym */
.rk-hyd-eq-box {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(56, 189, 248, 0.3);
    border-radius: 16px;
    padding: 22px;
    text-align: center;
    box-shadow: inset 0 4px 15px rgba(0,0,0,0.4);
}

.rk-hyd-eq {
    font-family: 'Cambria Math', 'Times New Roman', serif;
    font-size: 24px;
    color: #bae6fd;
    letter-spacing: 1px;
    margin: 0 0 10px 0;
}

.rk-hyd-eq-desc {
    font-size: 13px;
    color: #94a3b8;
    margin: 0;
}
.rk-hyd-eq-desc strong { color: #e2e8f0; }

/* Obszar Interaktywny */
.rk-hyd-interactive {
    padding: 40px 50px;
    background: var(--rk-hyd-panel);
}

/* Główny Dashboard */
.rk-hyd-dashboard {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 30px;
}

/* Lewy Panel Kontrolek (Wszystko dostępne od razu) */
.rk-hyd-controls {
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-hyd-border);
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.02);
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-hyd-panel-title {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-hyd-dark);
    margin: 0 0 25px 0;
    border-bottom: 2px solid var(--rk-hyd-panel);
    padding-bottom: 10px;
}

/* Grupy Formularzy */
.rk-hyd-group { margin-bottom: 30px; }
.rk-hyd-label { display: block; font-size: 12px; font-weight: 800; color: var(--rk-hyd-dark); margin-bottom: 12px; text-transform: uppercase; letter-spacing: 0.5px; }

.rk-hyd-range-box { display: flex; align-items: center; gap: 15px; }
.rk-hyd-slider { flex: 1; -webkit-appearance: none; height: 8px; background: #e2e8f0; border-radius: 4px; outline: none; }
.rk-hyd-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 24px; height: 24px; border-radius: 50%; background: var(--rk-hyd-brand); cursor: pointer; border: 3px solid #ffffff; box-shadow: 0 2px 6px rgba(0,0,0,0.15); }

.rk-hyd-val-display { font-size: 18px; font-weight: 900; color: var(--rk-hyd-brand); min-width: 75px; text-align: right; font-variant-numeric: tabular-nums; }

/* Przyciski Opcji (Radio kafelki pionowe) */
.rk-hyd-radio-stack { display: flex; flex-direction: column; gap: 10px; }
.rk-hyd-radio-tile { width: 100%; padding: 14px 18px; text-align: left; background: var(--rk-hyd-panel); border: 2px solid var(--rk-hyd-border); border-radius: 12px; cursor: pointer; transition: all 0.2s; display: flex; flex-direction: column; gap: 4px; }
.rk-hyd-radio-tile strong { font-size: 14px; color: var(--rk-hyd-dark); }
.rk-hyd-radio-tile span { font-size: 12px; color: var(--rk-hyd-muted); font-weight: 400; }
.rk-hyd-radio-tile.selected { background: var(--rk-hyd-brand-light); border-color: var(--rk-hyd-brand); }

/* Prawy Panel Diagnostyczny (Rotametr) */
.rk-hyd-results-panel {
    background: var(--rk-hyd-dark);
    border-radius: 20px;
    padding: 25px;
    display: flex;
    flex-direction: column;
    border: 2px solid #1e293b;
}

.rk-hyd-res-title { font-size: 11px; text-transform: uppercase; font-weight: 800; color: #94a3b8; margin-bottom: 20px; letter-spacing: 1px; text-align: center; }

/* Wizualizacja Rotametru SVG */
.rk-rotameter-stage {
    background: var(--rk-hyd-screen);
    border-radius: 14px;
    padding: 15px;
    height: 180px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 20px rgba(0,0,0,0.6);
    border: 1px solid #1e293b;
    margin-bottom: 20px;
}

.rk-rotameter-svg { width: 100%; height: 100%; max-width: 120px; }
.anim-float { transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1); }
.anim-water { transition: height 0.4s ease, y 0.4s ease; fill: #0ea5e9; fill-opacity: 0.3; }

/* Parametry kafelkowe */
.rk-hyd-rows { display: flex; flex-direction: column; gap: 10px; margin-bottom: 20px; }
.rk-hyd-row { display: flex; justify-content: space-between; align-items: center; font-size: 13.5px; padding-bottom: 8px; border-bottom: 1px dashed rgba(255,255,255,0.08); }
.rk-hyd-row:last-child { border-bottom: none; }
.rk-hyd-lbl { color: #cbd5e1; }
.rk-hyd-val { color: #ffffff; font-weight: 700; font-variant-numeric: tabular-nums; }

/* Końcowa Skrzynka Wynikowa */
.rk-hyd-final-box {
    background: rgba(2, 132, 199, 0.15);
    border: 1px solid rgba(2, 132, 199, 0.3);
    border-radius: 12px;
    padding: 15px;
    text-align: center;
}
.rk-final-lbl { font-size: 11px; font-weight: 800; color: #38bdf8; text-transform: uppercase; margin-bottom: 4px; display: block; }
.rk-final-val { font-size: 30px; font-weight: 900; color: #ffffff; font-variant-numeric: tabular-nums; line-height: 1.1; }
.rk-final-unit { font-size: 16px; font-weight: 700; color: #38bdf8; }

@media (max-width: 768px) {
    .rk-hyd-header, .rk-hyd-interactive { padding: 30px 20px; }
    .rk-hyd-title { font-size: 22px; }
    .rk-hyd-dashboard { grid-template-columns: 1fr; gap: 25px; }
    .rk-hyd-controls { padding: 20px; }
    .rk-rotameter-stage { height: 150px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-przeplyw",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Jak obliczyć wymagany przepływ wody w pętli podłogowej na podstawie OZC?",
    "description": "Zobacz termodynamiczny wzór na przepływ masowy wody (Vmin) w pętlach ogrzewania podłogowego zgodnie z normą PN-EN 1264 na bazie OZC.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-przeplyw",
    "name": "Algorytm Równoważenia Hydraulicznego pętli pex/pert 16x2",
    "description": "Zestawienie obliczeniowe wymaganych przepływów czynnika grzewczego na rotametrach rozdzielacza w korelacji z obciążeniem OZC pomieszczeń.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wymagany przepływ wody podłogówka",
      "rotametr wskaznik przepływu nastawy",
      "równoważenie hydrauliczne rozdzielacza",
      "wzór na przepływ pętli podłogowej",
      "norma PN-EN 1264 hydraulika"
    ],
    "measurementTechnique": "Przeliczanie strumienia objętościowego czynnika na litry na minutę (l/min) przy ciepłu właściwym wody 4182 J/(kg K).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Formuła inżynierska redukuje stałe fizyczne do stabilnego dzielnika 69,7 pomnożonego przez spadek temperatury delta T.",
        "Sypialnia (Przykład 3): Obciążenie OZC 750W przy strefowej pracy pompy ciepła z delta T = 5K generuje precyzyjną nastawę 2,15 l/min."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-przeplyw",
    "name": "Symulator Nastaw Rotametrów Rozdzielacza",
    "description": "Interaktywny symulator wizualizujący unoszenie pływaka w rurce rotametru w oparciu o wprowadzane wartości obciążeń OZC pokoju.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Canvas/SVG support",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-hyd-container" id="rk-hyd-app">
    
    <div class="rk-hyd-header">
        <div class="rk-hyd-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21.5 12H16c-.55 0-1-.45-1-1V9c0-1.1-.9-2-2-2h-2c-1.1 0-2 .9-2 2v2c0 .55-.45 1-1 1H2.5"></path></svg>
            Balans Hydrauliczny Układu
        </div>
        <h2 class="rk-hyd-title">Jak obliczyć wymagany przepływ wody w pętli podłogowej na podstawie <span>OZC?</span></h2>
        <p class="rk-hyd-lead">
            Wymagany przepływ wody (<strong>V<sub>min</sub></strong>) w pętli podłogowej wylicza się ze stosunku obciążenia cieplnego pokoju do iloczynu ciepła właściwego wody i spadku temperatury &Delta;T, co określa norma <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">PN-EN 1264</a>. Prawidłowa wartość przepływu gwarantuje zrównoważenie hydrauliczne układu rozdzielacza, eliminując strefy niedogrzane.
        </p>
        
        <div class="rk-hyd-eq-box">
            <div class="rk-hyd-eq">
                V<sub>min</sub> = &Phi;<sub>HL,i</sub> / (69,7 &times; &Delta;T)
            </div>
            <p class="rk-hyd-eq-desc">
                Gdzie <strong>&Phi;<sub>HL,i</sub></strong> to moc projektowa z OZC [W], a <strong>&Delta;T</strong> to różnica temperatur zasilania i powrotu [K].
            </p>
        </div>
    </div>

    <div class="rk-hyd-interactive">
        <div class="rk-hyd-dashboard">
            
            <div class="rk-hyd-controls">
                <div class="rk-hyd-panel-title">Parametry wejściowe z OZC</div>
                
                <div class="rk-hyd-group">
                    <label class="rk-hyd-label">Obciążenie cieplne pokoju (&Phi;<sub>HL,i</sub>)</label>
                    <div class="rk-hyd-range-box">
                        <input type="range" id="hydInpPower" class="rk-hyd-slider" min="200" max="1500" value="750" step="50">
                        <div class="rk-hyd-val-display"><span id="hydValPowerOut">750</span> W</div>
                    </div>
                </div>

                <div class="rk-hyd-group">
                    <label class="rk-hyd-label">Projektowa różnica temperatur (&Delta;T)</label>
                    <div class="rk-hyd-radio-stack">
                        <div class="rk-hyd-radio-tile" data-dt="3">
                            <strong>&Delta;T = 3 K (Wysoki przepływ)</strong>
                            <span>Dedykowane do łazienek w celu utrzymania wysokiej temperatury podłogi.</span>
                        </div>
                        <div class="rk-hyd-radio-tile selected" data-dt="5">
                            <strong>&Delta;T = 5 K (Standard Pompy Ciepła)</strong>
                            <span>Układ nisko-parametrowy 35/30°C gwarantujący najwyższy współczynnik COP.</span>
                        </div>
                        <div class="rk-hyd-radio-tile" data-dt="8">
                            <strong>&Delta;T = 8 K (Standard Kotłów)</strong>
                            <span>Rzadszy przepływ masowy czynnika, typowy dla układów z kotłami gazowymi.</span>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-hyd-results-panel">
                <div class="rk-hyd-res-title">Nastawa Rotametru Rozdzielacza</div>
                
                <div class="rk-rotameter-stage">
                    <svg class="rk-rotameter-svg" viewBox="0 0 100 100">
                        <rect x="42" y="10" width="16" height="80" fill="none" stroke="#64748b" stroke-width="2" rx="2"/>
                        <rect class="anim-water" x="43" y="50" width="14" height="40" />
                        
                        <line x1="38" y1="20" x2="44" y2="20" stroke="#94a3b8" stroke-width="1.5"/><text x="34" y="22" fill="#64748b" font-size="6" font-weight="bold">5</text>
                        <line x1="38" y1="35" x2="44" y2="35" stroke="#94a3b8" stroke-width="1.5"/><text x="34" y="37" fill="#64748b" font-size="6" font-weight="bold">4</text>
                        <line x1="38" y1="50" x2="44" y2="50" stroke="#94a3b8" stroke-width="1.5"/><text x="34" y="52" fill="#64748b" font-size="6" font-weight="bold">3</text>
                        <line x1="38" y1="65" x2="44" y2="65" stroke="#94a3b8" stroke-width="1.5"/><text x="34" y="67" fill="#64748b" font-size="6" font-weight="bold">2</text>
                        <line x1="38" y1="80" x2="44" y2="80" stroke="#94a3b8" stroke-width="1.5"/><text x="34" y="82" fill="#64748b" font-size="6" font-weight="bold">1</text>
                        
                        <g class="anim-float" id="hydRotameterFloat" transform="translate(0, 40)">
                            <polygon points="44,20 56,20 53,25 47,25" fill="#ef4444"/>
                            <rect x="47" y="25" width="6" height="3" fill="#ef4444"/>
                        </g>
                        <line x1="50" y1="10" x2="50" y2="90" stroke="#fbbf24" stroke-width="1" opacity="0.4"/>
                    </svg>
                </div>

                <div class="rk-hyd-rows">
                    <div class="rk-hyd-row">
                        <span class="rk-hyd-lbl">Moc obiegu (&Phi;):</span>
                        <span class="rk-hyd-val"><span id="lblHydPower">750</span> W</span>
                    </div>
                    <div class="rk-hyd-row">
                        <span class="rk-hyd-lbl">Projektowe &Delta;T:</span>
                        <span class="rk-hyd-val"><span id="lblHydDT">5</span> K</span>
                    </div>
                    <div class="rk-hyd-row">
                        <span class="rk-hyd-lbl">Stała inżynierska:</span>
                        <span class="rk-hyd-val">69,7</span>
                    </div>
                </div>

                <div class="rk-hyd-final-box">
                    <span class="rk-final-lbl">Wymagany przepływ (Vmin)</span>
                    <div class="rk-final-val"><span id="lblHydTotal">2.15</span> <span class="rk-final-unit">l/min</span></div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez nagłówków w kodzie błędu)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-hyd-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;"><div style="font-size:16px; text-transform:uppercase; margin-bottom:8px;">Błąd autoryzacji skryptu</div><div style="font-size:13px; color:#cbd5e1;">Aplikacja rotametryczna oraz struktury danych Dataset są własnością intelektualną Projekt-Ogrzewania.pl.</div></div>';
        return;
    }

    // 2. Stan wejściowy kalkulatora
    let state = {
        power: 750,
        dT: 5
    };

    // 3. Elementy DOM
    const inpPower = document.getElementById('hydInpPower');
    const valPowerOut = document.getElementById('hydValPowerOut');
    const radTiles = document.querySelectorAll('.rk-hyd-radio-tile');

    // Pola wyjściowe wyników (Unikalne prefiksy hyd)
    const lblHydPower = document.getElementById('lblHydPower');
    const lblHydDT = document.getElementById('lblHydDT');
    const lblHydTotal = document.getElementById('lblHydTotal');
    const hydRotameterFloat = document.getElementById('hydRotameterFloat');

    // 4. Silnik obliczeń termodynamicznych przepływu masowego
    function updateFlowKalk() {
        const vMin = state.power / (69.7 * state.dT);
        
        lblHydPower.textContent = state.power;
        lblHydDT.textContent = state.dT;
        lblHydTotal.textContent = vMin.toFixed(2);

        // Skalowanie pozycji czerwonego pływaka rotometru (zakres 0 - 5 l/min)
        let pixelY = 65 - ((vMin - 1) * 15);
        if (pixelY < 0) pixelY = 0;
        if (pixelY > 65) pixelY = 65;

        hydRotameterFloat.setAttribute('transform', 'translate(0, ' + pixelY + ')');
    }

    // 5. Obsługa zdarzeń
    inpPower.addEventListener('input', function(e) {
        state.power = parseInt(e.target.value);
        valPowerOut.textContent = state.power;
        updateFlowKalk();
    });

    radTiles.forEach(tile => {
        tile.addEventListener('click', function() {
            radTiles.forEach(t => t.classList.remove('selected'));
            this.classList.add('selected');
            state.dT = parseInt(this.getAttribute('data-dt'));
            updateFlowKalk();
        });
    });

    // Uruchomienie obliczeń startowych
    updateFlowKalk();
});
</script>



<style>
:root {
    --rk-sum-dark: #0f172a;
    --rk-sum-panel: #1e293b;
    --rk-sum-primary: #10b981; /* Emerald/Green for success/summary */
    --rk-sum-primary-light: #d1fae5;
    --rk-sum-accent: #3b82f6; /* Blue for water */
    --rk-sum-warning: #f59e0b;
    --rk-sum-bg: #f8fafc;
    --rk-sum-border: #cbd5e1;
    --rk-sum-text: #334155;
    --rk-sum-text-dim: #64748b;
}

.rk-summary-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(16, 185, 129, 0.15);
    border: 1px solid rgba(16, 185, 129, 0.3);
    overflow: hidden;
}

/* Header z ekspertem */
.rk-summary-header {
    background: linear-gradient(135deg, var(--rk-sum-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    display: flex;
    align-items: center;
    gap: 30px;
    border-bottom: 4px solid var(--rk-sum-primary);
    position: relative;
    overflow: hidden;
}

.rk-summary-header::after {
    content: ''; position: absolute; right: 0; top: 0; width: 300px; height: 100%;
    background: radial-gradient(circle at right, rgba(16, 185, 129, 0.15) 0%, transparent 70%);
}

.rk-expert-avatar {
    width: 90px;
    height: 90px;
    border-radius: 50%;
    border: 3px solid var(--rk-sum-primary);
    box-shadow: 0 0 20px rgba(16, 185, 129, 0.4);
    object-fit: cover;
    position: relative;
    z-index: 2;
}

.rk-header-content {
    position: relative;
    z-index: 2;
}

.rk-header-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(16, 185, 129, 0.2);
    color: #6ee7b7;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 10px;
    border: 1px solid rgba(110, 231, 183, 0.3);
}

.rk-header-content h2 {
    font-size: 26px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 8px 0;
    line-height: 1.2;
}

.rk-header-content p {
    color: #94a3b8;
    font-size: 14px;
    margin: 0;
    font-weight: 500;
}

/* Sekcja z zakładkami i wiedzą */
.rk-summary-body {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: #ffffff;
}

.rk-rules-list {
    padding: 30px;
    border-right: 1px solid var(--rk-sum-border);
    display: flex;
    flex-direction: column;
    gap: 10px;
    background: #f8fafc;
}

.rk-rule-btn {
    background: #ffffff;
    border: 1px solid var(--rk-sum-border);
    padding: 18px 20px;
    border-radius: 12px;
    text-align: left;
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: flex-start;
    gap: 15px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-rule-btn:hover {
    border-color: var(--rk-sum-primary);
    transform: translateX(4px);
}

.rk-rule-btn.active {
    background: var(--rk-sum-primary-light);
    border-color: var(--rk-sum-primary);
    box-shadow: inset 4px 0 0 var(--rk-sum-primary);
}

.rk-rule-icon {
    width: 32px; height: 32px;
    background: #f1f5f9;
    border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    color: var(--rk-sum-text-dim);
    flex-shrink: 0;
    transition: 0.3s;
}

.rk-rule-btn.active .rk-rule-icon {
    background: var(--rk-sum-primary);
    color: #ffffff;
}

.rk-rule-text h3 {
    margin: 0 0 5px 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-sum-dark);
}

.rk-rule-text p {
    margin: 0;
    font-size: 13px;
    color: var(--rk-sum-text-dim);
    line-height: 1.5;
}

/* Panel Detali (Prawy) */
.rk-rule-details {
    padding: 40px;
    position: relative;
}

.rk-detail-panel {
    display: none;
    animation: fadeScale 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-detail-panel.active {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

@keyframes fadeScale {
    from { opacity: 0; transform: scale(0.95); }
    to { opacity: 1; transform: scale(1); }
}

.rk-detail-panel h4 {
    margin: 0;
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-sum-dark);
}

.rk-detail-panel p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-sum-text);
}

.rk-sum-link {
    color: var(--rk-sum-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dotted var(--rk-sum-accent);
    transition: 0.3s;
}
.rk-sum-link:hover { border-bottom-style: solid; color: #1d4ed8; }

.rk-detail-svg {
    width: 100%;
    height: 160px;
    background: var(--rk-sum-dark);
    border-radius: 12px;
    padding: 15px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 20px rgba(0,0,0,0.5);
}

/* Narzędzie Szybkiego Szacowania (Kalkulator) */
.rk-quick-calc {
    background: var(--rk-sum-panel);
    padding: 35px 50px;
    border-top: 1px solid #1e293b;
    color: #ffffff;
}

.rk-calc-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 25px;
}

.rk-calc-header h4 {
    margin: 0; font-size: 18px; font-weight: 900; color: #ffffff;
    display: flex; align-items: center; gap: 10px;
}

.rk-calc-grid {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: 40px;
    align-items: center;
}

.rk-calc-input-area {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-calc-label { font-size: 13px; font-weight: 700; color: #94a3b8; display: flex; justify-content: space-between; }
.rk-calc-label span { color: #ffffff; font-size: 16px; font-weight: 900; }

.rk-sum-range {
    -webkit-appearance: none; width: 100%; height: 6px; border-radius: 3px; background: #334155; outline: none;
}
.rk-sum-range::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none; width: 22px; height: 22px; border-radius: 50%;
    background: var(--rk-sum-primary); cursor: pointer; border: 3px solid #ffffff; transition: 0.1s;
}
.rk-sum-range::-webkit-slider-thumb:active { transform: scale(1.15); }

.rk-calc-results {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
}

.rk-result-box {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    padding: 15px;
    border-radius: 12px;
    text-align: center;
}

.rk-result-box.highlight { border-color: var(--rk-sum-primary); background: rgba(16, 185, 129, 0.1); }

.rk-res-val { display: block; font-size: 22px; font-weight: 900; color: #ffffff; margin-bottom: 5px; }
.rk-result-box.highlight .rk-res-val { color: var(--rk-sum-primary); }
.rk-res-lab { display: block; font-size: 11px; color: #94a3b8; text-transform: uppercase; font-weight: 700; line-height: 1.4; }

/* SEKACJA AUTORSKA - PODPIS EKSPERTA */
.rk-summary-author {
    background: #f1f5f9;
    padding: 30px 50px;
    display: flex;
    align-items: flex-start;
    gap: 25px;
    border-top: 1px solid var(--rk-sum-border);
}

.rk-author-photo-small {
    width: 75px;
    height: 75px;
    border-radius: 50%;
    border: 3px solid var(--rk-sum-primary);
    box-shadow: 0 4px 15px rgba(16, 185, 129, 0.2);
    object-fit: cover;
    flex-shrink: 0;
}

.rk-author-info {
    flex-grow: 1;
}

.rk-author-info h4 {
    margin: 0 0 6px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-sum-dark);
}

.rk-author-info p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-sum-text);
    line-height: 1.6;
}

.rk-author-links {
    display: flex;
    gap: 15px;
    margin-top: 12px;
}

.rk-author-links a {
    color: var(--rk-sum-accent);
    font-size: 13px;
    font-weight: 800;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    transition: color 0.2s;
}

.rk-author-links a:hover {
    color: #1d4ed8;
    text-decoration: underline;
}

/* Animacje SVG */
.anim-check-draw { stroke-dasharray: 100; stroke-dashoffset: 100; animation: drawCheck 1.5s forwards ease-out; }
@keyframes drawCheck { to { stroke-dashoffset: 0; } }

.anim-pulse-ring { animation: pulseRing 2s infinite; transform-origin: center; }
@keyframes pulseRing { 0% { transform: scale(0.8); opacity: 1; } 100% { transform: scale(1.5); opacity: 0; } }

.anim-water-wave { animation: waveWater 3s linear infinite; }
@keyframes waveWater { 0% { transform: translateX(0); } 100% { transform: translateX(-20px); } }

@media (max-width: 768px) {
    .rk-summary-header { flex-direction: column; text-align: center; padding: 30px 20px; }
    .rk-expert-avatar { width: 70px; height: 70px; }
    .rk-summary-body { grid-template-columns: 1fr; }
    .rk-rules-list { border-right: none; border-bottom: 1px solid var(--rk-sum-border); padding: 20px; }
    .rk-rule-details { padding: 25px 20px; }
    .rk-calc-grid { grid-template-columns: 1fr; gap: 25px; }
    .rk-quick-calc { padding: 30px 20px; }
    .rk-calc-results { grid-template-columns: 1fr; }
    .rk-summary-author { flex-direction: column; text-align: center; padding: 30px 20px; align-items: center; }
    .rk-author-links { justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-summary-final",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Inżynierskie podsumowanie: Rola OZC w systemie grzewczym",
    "description": "Kompaktowe zestawienie reguł projektowych łączących wyniki OZC z geometrią pętli i zrównoważeniem hydraulicznym rozdzielacza.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-summary",
    "name": "Wskaźniki OZC dla domów jednorodzinnych (WT 2021)",
    "description": "Szacunkowe dane przeliczeniowe łączące metraż budynku w standardzie WT 2021 z mocą pompy ciepła i ilością obiegów grzewczych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "podsumowanie instalacji ozc",
      "szybki estymator ozc",
      "zapotrzebowanie na moc cieplną",
      "dobór pompy ciepła na podstawie ozc",
      "ilość pętli ogrzewania podłogowego"
    ],
    "measurementTechnique": "Szacowanie oparte na średnim wskaźniku 40 W/m2 dla budynków spełniających normę WT 2021 oraz optymalnej wielkości obwodu podłogówki.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Średnie zapotrzebowanie (WT 2021): ~40 W/m2",
        "Szacunkowa moc urządzenia: OZC + bufor na straty i CWU",
        "Średnia powierzchnia na 1 obieg grzewczy: ~15 m2 (przy rozstawie 15 cm)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-summary",
    "name": "Szybki Estymator OZC (WT 2021)",
    "description": "Moduł podsumowujący. Przelicza powierzchnię domu wybudowanego w standardzie WT 2021 na orientacyjne obciążenie cieplne, moc pompy i ilość pętli.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Forms",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-summary-container" id="rk-summary-app">
    
    <div class="rk-summary-header">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-expert-avatar" loading="lazy">
        <div class="rk-header-content">
            <div class="rk-header-badge">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                Wnioski Eksperta
            </div>
            <h2>Inżynierskie podsumowanie: OZC to serce instalacji</h2>
            <p>Zebrałem dla Ciebie 3 najważniejsze reguły projektowe łączące OZC z wykonawstwem podłogówki. Brak precyzyjnych obliczeń na etapie projektu to gwarancja problemów i strat finansowych.</p>
        </div>
    </div>

    <div class="rk-summary-body">
        
        <div class="rk-rules-list">
            <button class="rk-rule-btn active" data-panel="det-1">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg></div>
                <div class="rk-rule-text">
                    <h3>Koniec ze &#8222;zgadywaniem&#8221;</h3>
                    <p>OZC to jedyny matematyczny dowód</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="det-2">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                <div class="rk-rule-text">
                    <h3>Ochrona kapitału (Pompa)</h3>
                    <p>Zabezpieczenie przed przewymiarowaniem</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="det-3">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg></div>
                <div class="rk-rule-text">
                    <h3>Parametry układu</h3>
                    <p>Rozstaw rur i równoważenie l/min</p>
                </div>
            </button>
        </div>

        <div class="rk-rule-details">
            
            <div class="rk-detail-panel active" id="det-1">
                <h4>OZC to fundament projektu</h4>
                <p>Każde pomieszczenie gubi ciepło w innym tempie. Zgadywanie mocy cieplnej &#8222;na oko&#8221; (np. mnożąc m² przez losową wartość) prowadzi do katastrofy w rachunkach. Rzetelne <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-sum-link">obliczenia OZC</a> to twardy matematyczny fundament, na którym opiera się cały późniejszy dobór urządzeń.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <path d="M 50 80 L 50 40 L 100 15 L 150 40 L 150 80 Z" fill="none" stroke="#334155" stroke-width="3" stroke-linejoin="round"/>
                        <path d="M 100 35 L 120 45 L 120 65 Q 100 85 100 85 Q 80 65 80 45 Z" fill="#10b981" opacity="0.2" stroke="#10b981" stroke-width="2"/>
                        <path class="anim-check-draw" d="M 90 55 L 98 63 L 112 47" fill="none" stroke="#ffffff" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="det-2">
                <h4>Stop przewymiarowaniu pomp</h4>
                <p>Zbyt duża pompa ciepła, dobrana przez instalatora &#8222;dla bezpieczeństwa&#8221; bez OZC, będzie <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-sum-link">taktować</a>. Zjawisko to niszczy sprężarkę i podwaja zużycie prądu. OZC upewnia nas, że pompa zostanie dobrana idealnie do obciążenia budynku w punkcie biwalencyjnym.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <rect x="75" y="25" width="50" height="50" fill="#1e293b" stroke="#38bdf8" stroke-width="3" rx="4"/>
                        <circle class="anim-pulse-ring" cx="100" cy="50" r="15" fill="none" stroke="#10b981" stroke-width="2"/>
                        <circle cx="100" cy="50" r="15" fill="none" stroke="#38bdf8" stroke-width="2"/>
                        <path d="M 100 40 L 100 60 M 90 50 L 110 50 M 93 43 L 107 57 M 93 57 L 107 43" stroke="#ffffff" stroke-width="2" stroke-linecap="round"/>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="det-3">
                <h4>Hydraulika bez tajemnic</h4>
                <p>Mając OZC poszczególnych pokoi, projektant wie, gdzie zagęścić rozstaw rur do 10 cm, a gdzie pozostawić 15 cm. Ponadto, wynik OZC (Waty) pozwala przeliczyć <a href="https://projekt-ogrzewania.pl/regulacja-ogrzewania-podlogowego-przeplywy-w-petlach/" class="rk-sum-link">przepływ w l/min</a> dla każdego rotametru na rozdzielaczu. To gwarancja zrównoważenia układu.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <rect x="85" y="20" width="30" height="60" fill="none" stroke="#cbd5e1" stroke-width="3" rx="4"/>
                        <path class="anim-water-wave" d="M 85 40 Q 92 35 100 40 T 115 40 T 130 40 L 130 80 L 85 80 Z" fill="#3b82f6" opacity="0.8"/>
                        <polygon points="90,45 110,45 105,55 95,55" fill="#ef4444"/>
                        <text x="140" y="52" fill="#10b981" font-size="12" font-weight="bold">V = 1.8 l/min</text>
                    </svg>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-quick-calc">
        <div class="rk-calc-header">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-sum-primary)" stroke-width="2.5"><rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><line x1="8" y1="6" x2="16" y2="6"></line><line x1="16" y1="14" x2="16.01" y2="14"></line><line x1="12" y1="14" x2="12.01" y2="14"></line><line x1="8" y1="14" x2="8.01" y2="14"></line><line x1="16" y1="18" x2="16.01" y2="18"></line><line x1="12" y1="18" x2="12.01" y2="18"></line><line x1="8" y1="18" x2="8.01" y2="18"></line></svg>
                Szybki Estymator OZC (Dla standardu WT 2021)
            </h4>
            <span style="font-size:12px; color:#64748b;">(Wartości orientacyjne)</span>
        </div>

        <div class="rk-calc-grid">
            
            <div class="rk-calc-input-area">
                <div class="rk-calc-label">
                    Powierzchnia ogrzewana domu:
                    <span id="sumAreaOut">150 m²</span>
                </div>
                <input type="range" class="rk-sum-range" id="sumAreaSlider" min="80" max="300" step="10" value="150">
                <p style="font-size: 11px; color:#64748b; margin:0;">*Zakładane zapotrzebowanie ok. 40 W/m² (nowe budownictwo).</p>
            </div>

            <div class="rk-calc-results">
                <div class="rk-result-box">
                    <span class="rk-res-val" id="resOzc">6.0 <span style="font-size:14px;color:#64748b;">kW</span></span>
                    <span class="rk-res-lab">Szacunkowe OZC</span>
                </div>
                <div class="rk-result-box highlight">
                    <span class="rk-res-val" id="resPump">7.0 <span style="font-size:14px;color:var(--rk-sum-primary);">kW</span></span>
                    <span class="rk-res-lab">Sugerowana Pompa Ciepła</span>
                </div>
                <div class="rk-result-box">
                    <span class="rk-res-val" id="resLoops">10 <span style="font-size:14px;color:#64748b;">szt.</span></span>
                    <span class="rk-res-lab">Szacowana liczba obiegów</span>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-summary-author">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - CEO i Projektant HVAC" class="rk-author-photo-small" loading="lazy">
        <div class="rk-author-info">
            <h4>Robert Kucharski</h4>
            <p>CEO i twórca portalu Projekt-Ogrzewania.pl. Główny projektant i audytor instalacji HVAC. Wszystkie publikowane tu treści opieram na wieloletnim, praktycznym doświadczeniu zdobytym bezpośrednio na placach budowy. Moją misją jest dostarczanie twardej, inżynierskiej wiedzy, która chroni inwestorów przed błędami i przewymiarowanymi instalacjami.</p>
            <div class="rk-author-links">
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
                    LinkedIn
                </a>
                <a href="https://www.facebook.com/robert.kucharski.budowa.bez.sciemy" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.469h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.469h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>
                    Facebook
                </a>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (DOMAIN LOCK)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-summary-app').innerHTML = `
            <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border:1px solid #ef4444; border-radius:24px; font-weight:800;">
                BŁĄD LICENCJI: Kod podsumowania jest własnością projekt-ogrzewania.pl
            </div>`;
        return;
    }

    // 2. Logika Zakładek (Złote Zasady)
    const btns = document.querySelectorAll('.rk-rule-btn');
    const panels = document.querySelectorAll('.rk-detail-panel');

    btns.forEach(btn => {
        btn.addEventListener('click', () => {
            // Reset
            btns.forEach(b => b.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Set Active
            btn.classList.add('active');
            const target = document.getElementById(btn.getAttribute('data-panel'));
            if(target) {
                // Restart animation
                void target.offsetWidth;
                target.classList.add('active');
            }
        });
    });

    // 3. Logika Szybkiego Estymatora OZC
    const slider = document.getElementById('sumAreaSlider');
    const areaOut = document.getElementById('sumAreaOut');
    const resOzc = document.getElementById('resOzc');
    const resPump = document.getElementById('resPump');
    const resLoops = document.getElementById('resLoops');

    function updateEstimator() {
        const area = parseInt(slider.value);
        areaOut.textContent = area + ' m²';

        // Obliczenia:
        // Zakładamy WT2021 (40 W/m2)
        const ozc_W = area * 40;
        const ozc_kW = ozc_W / 1000;
        
        // Pompa Ciepła: OZC + lekki naddatek na straty (np. 1kW)
        const pump_kW = Math.ceil(ozc_kW + 1);

        // Średnio 1 obieg (pętla) na 15 m2
        const loops = Math.ceil(area / 15);

        resOzc.innerHTML = ozc_kW.toFixed(1) + ' <span style="font-size:14px;color:#64748b;">kW</span>';
        resPump.innerHTML = pump_kW.toFixed(1) + ' <span style="font-size:14px;color:var(--rk-sum-primary);">kW</span>';
        resLoops.innerHTML = loops + ' <span style="font-size:14px;color:#64748b;">szt.</span>';
    }

    if(slider) {
        slider.addEventListener('input', updateEstimator);
        updateEstimator(); // Init
    }
});
</script>



<style>
:root {
    --rk-base-dark: #0f172a;
    --rk-base-panel: #1e293b;
    --rk-base-card: #ffffff;
    --rk-brand-primary: #f59e0b; /* Złoty bursztyn jako główny akcent (ciepło) */
    --rk-brand-light: #fef3c7;
    --rk-brand-hover: #d97706;
    --rk-state-green: #10b981;
    --rk-state-red: #ef4444;
    --rk-text-main: #334155;
    --rk-text-muted: #64748b;
    --rk-border-color: #e2e8f0;
}

.rk-geo-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-base-card);
    border-radius: 20px;
    box-shadow: 0 20px 40px -10px rgba(245, 158, 11, 0.15);
    border: 1px solid rgba(245, 158, 11, 0.25);
    overflow: hidden;
}

/* Sekcja Nagłówka */
.rk-geo-header {
    background: var(--rk-base-dark);
    padding: 40px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-brand-primary);
    position: relative;
}

.rk-geo-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(245, 158, 11, 0.2);
    color: var(--rk-brand-primary);
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(245, 158, 11, 0.4);
}

.rk-geo-header h2 {
    font-size: 26px;
    font-weight: 900;
    line-height: 1.4;
    margin: 0 0 15px 0;
    color: #ffffff;
}

.rk-geo-header h2 span { color: var(--rk-brand-primary); }

.rk-geo-lead {
    font-size: 15px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-geo-lead strong { color: #ffffff; font-weight: 700; }
.rk-link-geo { color: var(--rk-brand-primary); text-decoration: none; border-bottom: 1px dashed var(--rk-brand-primary); transition: all 0.3s; }
.rk-link-geo:hover { color: #ffffff; border-bottom-color: #ffffff; }

/* Pulpit Interaktywny */
.rk-geo-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-geo-dashboard {
    display: grid;
    grid-template-columns: 1fr 340px;
    gap: 30px;
}

/* Panel Kontrolek (Lewy) */
.rk-geo-controls {
    background: #ffffff;
    border-radius: 16px;
    padding: 30px;
    border: 1px solid var(--rk-border-color);
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.03);
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-geo-panel-title {
    font-size: 17px;
    font-weight: 800;
    color: var(--rk-base-dark);
    margin: 0 0 25px 0;
    border-bottom: 2px solid #f1f5f9;
    padding-bottom: 12px;
}

.rk-geo-group { margin-bottom: 30px; }
.rk-geo-label { display: block; font-size: 12px; font-weight: 800; color: var(--rk-text-muted); margin-bottom: 12px; text-transform: uppercase; letter-spacing: 0.5px; }

.rk-geo-range-box { display: flex; align-items: center; gap: 15px; }
.rk-geo-slider { flex: 1; -webkit-appearance: none; height: 6px; background: #e2e8f0; border-radius: 3px; outline: none; }
.rk-geo-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 22px; height: 22px; border-radius: 50%; background: var(--rk-brand-primary); cursor: pointer; border: 3px solid #ffffff; box-shadow: 0 2px 4px rgba(0,0,0,0.2); transition: transform 0.1s; }
.rk-geo-slider::-webkit-slider-thumb:active { transform: scale(1.2); }

.rk-geo-val-display { font-size: 20px; font-weight: 900; color: var(--rk-base-dark); min-width: 85px; text-align: right; font-variant-numeric: tabular-nums; }
.rk-geo-val-display span { color: var(--rk-brand-primary); }

/* Kafelki wyboru rozstawu */
.rk-geo-tile-stack { display: flex; flex-direction: column; gap: 12px; }
.rk-geo-tile-option { width: 100%; padding: 14px 18px; text-align: left; background: #ffffff; border: 2px solid var(--rk-border-color); border-radius: 10px; cursor: pointer; transition: all 0.2s; display: flex; flex-direction: column; gap: 4px; position: relative; overflow: hidden; }
.rk-geo-tile-option strong { font-size: 15px; color: var(--rk-base-dark); }
.rk-geo-tile-option span { font-size: 12px; color: var(--rk-text-muted); font-weight: 500; }

.rk-geo-tile-option::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: transparent; transition: background 0.2s; }
.rk-geo-tile-option.selected { background: var(--rk-brand-light); border-color: var(--rk-brand-primary); }
.rk-geo-tile-option.selected::before { background: var(--rk-brand-primary); }
.rk-geo-tile-option.selected strong { color: var(--rk-brand-hover); }

/* Wyniki i Wizualizacja (Prawa) */
.rk-geo-results-panel {
    background: var(--rk-base-panel);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    flex-direction: column;
    border: 1px solid #334155;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.1);
}

.rk-geo-res-title { font-size: 11px; text-transform: uppercase; font-weight: 800; color: #94a3b8; margin-bottom: 15px; letter-spacing: 1px; text-align: center; }

/* Nowy Dwuczęściowy Schemat SVG (Przekrój + Wskaźnik Oporu) */
.rk-geo-svg-stage {
    background: var(--rk-base-dark);
    border-radius: 12px;
    padding: 10px;
    height: 160px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 15px rgba(0,0,0,0.5);
    margin-bottom: 20px;
    position: relative;
    border: 1px solid #334155;
}

.rk-geo-svg { width: 100%; height: 100%; }

/* Klasy kontrolujące widoczność warstw termowizji */
.therm-layer { opacity: 0; transition: opacity 0.5s ease; }
.rk-geo-svg-stage[data-spacing="20"] .therm-20 { opacity: 1; }
.rk-geo-svg-stage[data-spacing="15"] .therm-15 { opacity: 1; }
.rk-geo-svg-stage[data-spacing="10"] .therm-10 { opacity: 1; }

/* Animacje statycznego wskaźnika oporu pompy */
.pump-indicator { transition: stroke-dashoffset 0.6s cubic-bezier(0.4, 0, 0.2, 1), stroke 0.6s; stroke-linecap: round; }
.pump-status-icon { transition: fill 0.6s; }

/* Stany pompy obiegowej */
.rk-geo-svg-stage[data-pump="normal"] .pump-indicator { stroke: var(--rk-state-green); stroke-dashoffset: 130; }
.rk-geo-svg-stage[data-pump="normal"] .pump-status-icon { fill: var(--rk-state-green); }

.rk-geo-svg-stage[data-pump="warning"] .pump-indicator { stroke: var(--rk-brand-primary); stroke-dashoffset: 60; }
.rk-geo-svg-stage[data-pump="warning"] .pump-status-icon { fill: var(--rk-brand-primary); }

.rk-geo-svg-stage[data-pump="critical"] .pump-indicator { stroke: var(--rk-state-red); stroke-dashoffset: 10; animation: pulseCritical 0.5s infinite alternate; }
.rk-geo-svg-stage[data-pump="critical"] .pump-status-icon { fill: var(--rk-state-red); animation: pulseCritical 0.5s infinite alternate; }

@keyframes pulseCritical {
    from { opacity: 0.6; filter: drop-shadow(0 0 2px var(--rk-state-red)); }
    to { opacity: 1; filter: drop-shadow(0 0 8px var(--rk-state-red)); }
}

/* Parametry liczbowe */
.rk-geo-rows { display: flex; flex-direction: column; gap: 10px; margin-bottom: 25px; }
.rk-geo-row { display: flex; justify-content: space-between; align-items: center; font-size: 13px; padding-bottom: 8px; border-bottom: 1px dashed rgba(255,255,255,0.05); }
.rk-geo-row:last-child { border-bottom: none; }
.rk-geo-lbl { color: #cbd5e1; }
.rk-geo-val { color: #ffffff; font-weight: 700; font-variant-numeric: tabular-nums; }

.rk-geo-status-box {
    background: rgba(16, 185, 129, 0.1);
    border: 1px solid rgba(16, 185, 129, 0.2);
    border-radius: 10px;
    padding: 15px;
    text-align: center;
    transition: all 0.3s;
    margin-top: auto;
}
.rk-status-lbl { font-size: 10px; font-weight: 800; color: var(--rk-state-green); text-transform: uppercase; margin-bottom: 6px; display: block; letter-spacing: 0.5px; }
.rk-status-val { font-size: 13px; font-weight: 600; color: #ffffff; line-height: 1.4; }

/* Sekcja Mocnego CTA */
.rk-geo-cta-block {
    background: var(--rk-base-panel);
    padding: 30px 50px;
    border-top: 2px solid var(--rk-brand-primary);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
}

.rk-geo-cta-text h4 { font-size: 17px; font-weight: 800; color: #ffffff; margin: 0 0 6px 0; }
.rk-geo-cta-text p { font-size: 13px; color: #94a3b8; margin: 0; line-height: 1.5; }
.rk-geo-cta-btn {
    background: var(--rk-brand-primary);
    color: #ffffff;
    padding: 15px 30px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 800;
    text-decoration: none;
    box-shadow: 0 4px 15px rgba(245, 158, 11, 0.3);
    transition: all 0.2s;
    white-space: nowrap;
    border: none;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.rk-geo-cta-btn:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(245, 158, 11, 0.4); background: var(--rk-brand-hover); }

@media (max-width: 768px) {
    .rk-geo-header, .rk-geo-interactive, .rk-geo-cta-block { padding: 30px 20px; }
    .rk-geo-header h2 { font-size: 22px; }
    .rk-geo-dashboard { grid-template-columns: 1fr; gap: 20px; }
    .rk-geo-controls { padding: 20px; }
    .rk-geo-svg-stage { height: 140px; }
    .rk-geo-cta-block { flex-direction: column; text-align: center; gap: 15px; }
    .rk-geo-cta-btn { width: 100%; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-geometria",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Jak OZC wpływa na projekt ogrzewania podłogowego?",
    "description": "Zobacz, jak wyniki projektowego obciążenia cieplnego (OZC) determinują geometrię pętli, rozstaw rur grzewczych oraz zrównoważenie hydrauliczne rozdzielacza.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-geometria",
    "name": "Parametry geometryczno-hydrauliczne pętli podłogówki na bazie OZC",
    "description": "Zależność rozstawu rur grzewczych, oporów ciśnienia oraz długości obiegów grzewczych w funkcji gęstości zapotrzebowania na moc szczytową pomieszczeń.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowanie ogrzewania podłogowego rozstaw",
      "maksymalna długość pętli podłogówki 16mm",
      "strefy brzegowe pod dużymi przeszkleniami",
      "zbalansowanie hydrauliczne rozdzielacza",
      "obciążenie cieplne a opory ciśnienia"
    ],
    "measurementTechnique": "Symulacja gęstości układania rur pex oraz wyznaczanie strat ciśnienia w pętli grzewczej zgodnie z wytycznymi normy PN-EN 1264.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zależność geometryczna: Wyższe obciążenie szczytowe wymusza gęstszy rozstaw rur (co 10 cm) w celu uniknięcia przewymiarowania temperatury zasilania.",
        "Ograniczenie hydrauliczne: Maksymalna długość obwodu dla średnicy 16mm wynosi 100-120m, chroniąc układ przed oporami paraliżującymi pompy obiegowe."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-geometria",
    "name": "Symulator Geometrii i Oporów Hydraulicznych Pętli",
    "description": "Interaktywny analizator pozwalający inwestorom sprawdzić, jak zapotrzebowanie na moc i rozstaw rur wpływają na długość obwodu i ciśnienie instalacji.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires modern browser with SVG and JavaScript enabled",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-geo-container" id="rk-geo-app">
    
    <div class="rk-geo-header">
        <div class="rk-geo-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg>
            Wpływ OZC na wykonawstwo
        </div>
        <h2>Jak to wpływa na projekt ogrzewania podłogowego?</h2>
        <p class="rk-geo-lead">
            Projektowe Obciążenie Cieplne bezpośrednio determinuje geometrię i parametry hydrauliczne instalacji płaszczyznowej. Na podstawie uzyskanych wyników szczytowych dla każdego pokoju, projektant dobiera optymalny rozstaw rur grzewczych, zapobiegając nadmiernym oporom ciśnienia. 
            <br><br>
            OZC pozwala także na dokładne zlokalizowanie stref brzegowych pod dużymi przeszkleniami oraz precyzyjny dobór pomp ciepła. Bez tych danych <a href="https://projekt-ogrzewania.pl/regulacja-ogrzewania-podlogowego-przeplywy-w-petlach/" class="rk-link-geo">zbalansowanie hydrauliczne rozdzielacza</a> jest niewykonalne, co skazuje inwestora na losowe, nieefektywne działanie systemu.
        </p>
    </div>

    <div class="rk-geo-interactive">
        <div class="rk-geo-dashboard">
            
            <div class="rk-geo-controls">
                <div class="rk-geo-panel-title">Analizator Pętli Grzewczej (Pokój 20 m²)</div>
                
                <div class="rk-geo-group">
                    <label class="rk-geo-label">Obciążenie cieplne pokoju (OZC)</label>
                    <div class="rk-geo-range-box">
                        <input type="range" id="geoInpPower" class="rk-geo-slider" min="300" max="1400" value="800" step="50">
                        <div class="rk-geo-val-display"><span id="geoValPowerOut">800</span> W</div>
                    </div>
                </div>

                <div class="rk-geo-group" style="margin-bottom:0;">
                    <label class="rk-geo-label">Planowany rozstaw rur grzewczych</label>
                    <div class="rk-geo-tile-stack">
                        <div class="rk-geo-tile-option" data-spacing="10">
                            <strong>co 10 cm</strong>
                            <span>Gęsty (Łazienki / Strefy brzegowe)</span>
                        </div>
                        <div class="rk-geo-tile-option selected" data-spacing="15">
                            <strong>co 15 cm</strong>
                            <span>Standard budowlany (WT 2021)</span>
                        </div>
                        <div class="rk-geo-tile-option" data-spacing="20">
                            <strong>co 20 cm</strong>
                            <span>Rzadki / Ekonomiczny (WT 2014)</span>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-geo-results-panel">
                <div class="rk-geo-res-title">Opory i Zagęszczenie Rur (Pętla 16mm)</div>
                
                <div class="rk-geo-svg-stage" id="geoSvgStage" data-spacing="15" data-pump="normal">
                    <svg class="rk-geo-svg" viewBox="0 0 250 110">
                        <defs>
                            <filter id="heatGlow" x="-20%" y="-20%" width="140%" height="140%">
                                <feGaussianBlur stdDeviation="3" result="blur" />
                                <feComposite in="SourceGraphic" in2="blur" operator="over" />
                            </filter>
                        </defs>

                        <text x="75" y="15" fill="#64748b" font-size="7" font-weight="bold" text-anchor="middle" letter-spacing="0.5">ROZKŁAD TEMPERATUR (TERMOWIZJA)</text>
                        <rect x="10" y="25" width="130" height="75" fill="#1e3a8a" rx="4" stroke="#334155" stroke-width="2"/>
                        
                        <g class="therm-layer therm-20">
                            <path d="M 15 35 L 135 35 M 15 55 L 135 55 M 15 75 L 135 75 M 15 90 L 135 90" stroke="#f59e0b" stroke-width="10" filter="url(#heatGlow)"/>
                        </g>
                        <g class="therm-layer therm-15">
                            <path d="M 15 32 L 135 32 M 15 45 L 135 45 M 15 58 L 135 58 M 15 71 L 135 71 M 15 84 L 135 84 M 15 95 L 135 95" stroke="#ef4444" stroke-width="11" filter="url(#heatGlow)"/>
                        </g>
                        <g class="therm-layer therm-10">
                            <path d="M 15 30 L 135 30 M 15 38 L 135 38 M 15 46 L 135 46 M 15 54 L 135 54 M 15 62 L 135 62 M 15 70 L 135 70 M 15 78 L 135 78 M 15 86 L 135 86 M 15 94 L 135 94" stroke="#ef4444" stroke-width="12" filter="url(#heatGlow)"/>
                        </g>

                        <text x="200" y="15" fill="#64748b" font-size="7" font-weight="bold" text-anchor="middle" letter-spacing="0.5">OPÓR POMPY OBIEGOWEJ</text>
                        
                        <path d="M 170 65 A 30 30 0 0 1 230 65" fill="none" stroke="#1e293b" stroke-width="8" stroke-linecap="round"/>
                        <path class="pump-indicator" d="M 170 65 A 30 30 0 0 1 230 65" fill="none" stroke-width="8" stroke-dasharray="94"/>
                        
                        <circle cx="200" cy="60" r="8" class="pump-status-icon"/>
                        <path d="M 197 57 L 204 60 L 197 63 Z" fill="#0b1120"/>

                        <text x="200" y="90" fill="#ffffff" font-size="7" font-weight="bold" text-anchor="middle" id="geoPumpText">STABILNIE</text>
                    </svg>
                </div>

                <div class="rk-geo-rows">
                    <div class="rk-geo-row">
                        <span class="rk-geo-lbl">Szacowana długość rury:</span>
                        <span class="rk-geo-val"><span id="geoOutLength">148</span> m</span>
                    </div>
                    <div class="rk-geo-row">
                        <span class="rk-geo-lbl">Rozkład temperatury:</span>
                        <span class="rk-geo-val" id="geoOutEdge">Równomierny</span>
                    </div>
                </div>

                <div class="rk-geo-status-box" id="geoStatusBox">
                    <span class="rk-status-lbl" id="geoStatusLbl">Status układu</span>
                    <div class="rk-status-val" id="geoStatusVal">Pętla zbyt długa! Wykonawca musi podzielić obieg.</div>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-geo-cta-block">
        <div class="rk-geo-cta-text">
            <h4>Nie ryzykuj układania podłogówki „na intuicję” instalatora</h4>
            <p>Zamów profesjonalny, kompletny projekt hydrauliczny oparty o rzetelne obliczenia OZC.</p>
        </div>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-geo-cta-btn">Zamów profesjonalny projekt</a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-geo-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;"><div style="font-size:16px; text-transform:uppercase; margin-bottom:8px;">Błąd integralności danych</div><div style="font-size:13px; color:#cbd5e1;">Aplikacja symulacji matrycy hydraulicznej stanowi zastrzeżoną część portalu Projekt-Ogrzewania.pl.</div></div>';
        return;
    }

    // 2. Stan kalkulatora
    let geoState = {
        power: 800,
        spacing: 15
    };

    // 3. Elementy DOM
    const inpPower = document.getElementById('geoInpPower');
    const valPowerOut = document.getElementById('geoValPowerOut');
    const tileOptions = document.querySelectorAll('.rk-geo-tile-option');
    
    // SVG Elements
    const svgStage = document.getElementById('geoSvgStage');
    const pumpText = document.getElementById('geoPumpText');

    // Elementy wyjściowe
    const outLength = document.getElementById('geoOutLength');
    const outEdge = document.getElementById('geoOutEdge');
    const statusBox = document.getElementById('geoStatusBox');
    const statusLbl = document.getElementById('geoStatusLbl');
    const statusVal = document.getElementById('geoStatusVal');

    // 4. Silnik obliczeń inżynierskich dla pokoju 20m2
    function updateHydraulics() {
        // Obliczenie zapotrzebowania na rurę: Powierzchnia(20) / rozstaw + podejścia(15)
        let calculatedLength = Math.round((20 / (geoState.spacing / 100)) + 15);
        outLength.textContent = calculatedLength;

        // Aktualizacja widoczności warstw termowizji w SVG (data-spacing)
        svgStage.setAttribute('data-spacing', geoState.spacing.toString());

        // Analiza "Zebry termicznej"
        if (geoState.spacing === 20) {
            outEdge.textContent = "Ryzyko niedogrzanych stref";
            outEdge.style.color = "var(--rk-brand-primary)";
        } else if (geoState.spacing === 15) {
            outEdge.textContent = "Normatywny (Dobra dystrybucja)";
            outEdge.style.color = "var(--rk-state-green)";
        } else {
            outEdge.textContent = "Zagęszczony (Idealny rozkład)";
            outEdge.style.color = "var(--rk-state-green)";
        }

        // Klasyfikacja hydrauliczna pompy na podstawie długości (limit 120m)
        if (calculatedLength > 120) {
            svgStage.setAttribute('data-pump', 'critical');
            pumpText.textContent = "KRYTYCZNE (>35 kPa)";
            pumpText.setAttribute("fill", "#ef4444");

            statusBox.style.backgroundColor = "rgba(239, 68, 68, 0.1)";
            statusBox.style.borderColor = "rgba(239, 68, 68, 0.2)";
            statusLbl.style.color = "var(--rk-state-red)";
            statusVal.textContent = "Pętla zbyt długa! Wysokie opory zdławią pompę. Wykonawca musi podzielić obwód.";
        } else if (calculatedLength >= 100 && calculatedLength <= 120) {
            svgStage.setAttribute('data-pump', 'warning');
            pumpText.textContent = "PODWYŻSZONE OPORY";
            pumpText.setAttribute("fill", "#f59e0b");

            statusBox.style.backgroundColor = "rgba(245, 158, 11, 0.1)";
            statusBox.style.borderColor = "rgba(245, 158, 11, 0.2)";
            statusLbl.style.color = "var(--rk-brand-primary)";
            statusVal.textContent = "Granica normy (ok. 100m). Wymaga precyzyjnego równoważenia na rozdzielaczu.";
        } else {
            svgStage.setAttribute('data-pump', 'normal');
            pumpText.textContent = "OPTYMALNE (<15 kPa)";
            pumpText.setAttribute("fill", "#10b981");

            statusBox.style.backgroundColor = "rgba(16, 185, 129, 0.1)";
            statusBox.style.borderColor = "rgba(16, 185, 129, 0.2)";
            statusLbl.style.color = "var(--rk-state-green)";
            statusVal.textContent = "Bezpieczne parametry pętli. Pompa pracuje na maksymalnym współczynniku wydajności.";
        }
    }

    // 5. Zdarzenia wejściowe
    inpPower.addEventListener('input', function(e) {
        geoState.power = parseInt(e.target.value);
        valPowerOut.innerHTML = `<span>${geoState.power}</span> W`;
        updateHydraulics();
    });

    tileOptions.forEach(tile => {
        tile.addEventListener('click', function() {
            tileOptions.forEach(t => t.classList.remove('selected'));
            this.classList.add('selected');
            geoState.spacing = parseInt(this.getAttribute('data-spacing'));
            updateHydraulics();
        });
    });

    // Inicjalizacja formatowania tekstu suwaka
    valPowerOut.innerHTML = `<span>${geoState.power}</span> W`;

    // Uruchomienie kalkulatora
    updateHydraulics();
});
</script>



<style>
:root {
    --rk-cs-dark: #0f172a;
    --rk-cs-brand: #2563eb; /* Inżynieryjny niebieski */
    --rk-cs-brand-light: #eff6ff;
    --rk-cs-accent: #10b981; /* Zielony dla oszczędności / OZC */
    --rk-cs-alert: #ef4444; /* Czerwony dla błędów instalatora */
    --rk-cs-bg: #ffffff;
    --rk-cs-panel: #f8fafc;
    --rk-cs-border: #e2e8f0;
    --rk-cs-text: #475569;
    --rk-cs-muted: #94a3b8;
}

.rk-cs-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-cs-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(37, 99, 235, 0.15);
    border: 1px solid rgba(37, 99, 235, 0.2);
    overflow: hidden;
}

/* Sekcja Nagłówka */
.rk-cs-header {
    background: linear-gradient(135deg, var(--rk-cs-dark) 0%, #1e3a8a 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    overflow: hidden;
    border-bottom: 4px solid var(--rk-cs-brand);
}

.rk-cs-header::after {
    content: '';
    position: absolute;
    top: -50px;
    right: -50px;
    width: 250px;
    height: 250px;
    background: radial-gradient(circle, rgba(37, 99, 235, 0.4) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
    pointer-events: none;
}

.rk-cs-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.1);
    color: #bfdbfe;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    position: relative;
    z-index: 2;
}

.rk-cs-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 25px 0;
    color: #ffffff;
    position: relative;
    z-index: 2;
}

.rk-cs-title span { color: #60a5fa; }

/* Grid Statystyk w Nagłówku */
.rk-cs-stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
    position: relative;
    z-index: 2;
}

.rk-cs-stat-box {
    background: rgba(0, 0, 0, 0.25);
    border: 1px solid rgba(255, 255, 255, 0.1);
    padding: 15px;
    border-radius: 12px;
    backdrop-filter: blur(4px);
}

.rk-cs-stat-lbl { display: block; font-size: 11px; color: #94a3b8; text-transform: uppercase; font-weight: 800; margin-bottom: 6px; letter-spacing: 0.5px; }
.rk-cs-stat-val { display: block; font-size: 16px; font-weight: 900; color: #ffffff; }
.rk-cs-stat-val.highlight { color: #10b981; }

/* Główny Panel Interaktywny */
.rk-cs-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-cs-dashboard {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-cs-border);
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.02);
    overflow: hidden;
}

/* Lewa Kolumna - Kontrola i Zestawienie */
.rk-cs-comparison {
    padding: 30px;
    display: flex;
    flex-direction: column;
}

.rk-cs-comp-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-cs-dark);
    margin: 0 0 20px 0;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Toggle Switch (Przełącznik) */
.rk-cs-toggle-wrapper {
    display: flex;
    background: var(--rk-cs-panel);
    border: 2px solid var(--rk-cs-border);
    border-radius: 12px;
    padding: 4px;
    margin-bottom: 30px;
    position: relative;
}

.rk-cs-toggle-btn {
    flex: 1;
    text-align: center;
    padding: 12px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-cs-muted);
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    z-index: 2;
}

.rk-cs-toggle-btn.active.mode-bad { color: #ffffff; }
.rk-cs-toggle-btn.active.mode-good { color: #ffffff; }

.rk-cs-toggle-bg {
    position: absolute;
    top: 4px;
    bottom: 4px;
    width: calc(50% - 4px);
    border-radius: 8px;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1;
}

.rk-cs-dashboard[data-mode="bad"] .rk-cs-toggle-bg { left: 4px; background: var(--rk-cs-alert); box-shadow: 0 4px 10px rgba(239, 68, 68, 0.3); }
.rk-cs-dashboard[data-mode="good"] .rk-cs-toggle-bg { left: calc(50%); background: var(--rk-cs-accent); box-shadow: 0 4px 10px rgba(16, 185, 129, 0.3); }

/* Wiersze Danych */
.rk-cs-data-rows { display: flex; flex-direction: column; gap: 15px; }
.rk-cs-data-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-bottom: 12px;
    border-bottom: 1px dashed var(--rk-cs-border);
}
.rk-cs-data-row:last-child { border-bottom: none; }
.rk-cs-data-lbl { font-size: 13px; color: var(--rk-cs-text); font-weight: 600; }
.rk-cs-data-val { font-size: 15px; font-weight: 900; transition: color 0.3s; font-variant-numeric: tabular-nums; }

.rk-cs-dashboard[data-mode="bad"] .rk-cs-data-val { color: var(--rk-cs-alert); }
.rk-cs-dashboard[data-mode="good"] .rk-cs-data-val { color: var(--rk-cs-accent); }

/* Prawa Kolumna - Wizualizacja SVG */
.rk-cs-visual {
    background: var(--rk-cs-dark);
    padding: 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
}

.rk-cs-svg-stage { width: 100%; height: 200px; }

/* SVG Animacje */
.anim-hp-box { transition: all 0.5s cubic-bezier(0.34, 1.56, 0.64, 1); transform-origin: center bottom; }
.anim-fan { transform-origin: 150px 100px; }
.anim-pipe { transition: all 0.5s ease; stroke-dasharray: 4 4; }

.rk-cs-dashboard[data-mode="bad"] .anim-hp-box { transform: scale(1.1); fill: #450a0a; stroke: #ef4444; }
.rk-cs-dashboard[data-mode="bad"] .anim-fan { animation: fanSpin 0.5s linear infinite; fill: #ef4444; }
.rk-cs-dashboard[data-mode="bad"] .anim-pipe { stroke: #ef4444; stroke-width: 4; stroke-dasharray: 20 10; }

.rk-cs-dashboard[data-mode="good"] .anim-hp-box { transform: scale(0.85); fill: #064e3b; stroke: #10b981; }
.rk-cs-dashboard[data-mode="good"] .anim-fan { animation: fanSpin 2s linear infinite; fill: #10b981; }
.rk-cs-dashboard[data-mode="good"] .anim-pipe { stroke: #10b981; stroke-width: 2; stroke-dasharray: none; }

@keyframes fanSpin { 100% { transform: rotate(360deg); } }

/* Odznaka Oszczędności (Wyskakująca) */
.rk-cs-savings-badge {
    position: absolute;
    top: 20px;
    right: 20px;
    background: var(--rk-cs-accent);
    color: #ffffff;
    padding: 10px 15px;
    border-radius: 12px;
    font-weight: 900;
    font-size: 16px;
    box-shadow: 0 10px 20px rgba(16, 185, 129, 0.4);
    opacity: 0;
    transform: translateY(-10px) scale(0.9);
    transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.rk-cs-dashboard[data-mode="good"] .rk-cs-savings-badge { opacity: 1; transform: translateY(0) scale(1); }

/* Autor i Opis */
.rk-cs-author-section {
    padding: 0 50px 30px 50px;
    background: #f8fafc;
}

.rk-cs-author-box {
    background: #ffffff;
    border-left: 4px solid var(--rk-cs-brand);
    padding: 20px;
    border-radius: 0 12px 12px 0;
    display: flex;
    align-items: center;
    gap: 20px;
    box-shadow: 0 4px 15px rgba(0,0,0,0.03);
    border: 1px solid var(--rk-cs-border);
    border-left: 4px solid var(--rk-cs-brand);
}

.rk-cs-author-photo {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid var(--rk-cs-brand-light);
    box-shadow: 0 4px 10px rgba(37, 99, 235, 0.2);
    flex-shrink: 0;
}

.rk-cs-author-text p { margin: 0; font-size: 14px; color: var(--rk-cs-text); line-height: 1.6; }
.rk-cs-author-text strong { color: var(--rk-cs-dark); font-weight: 800; }

/* Sekcja Mocnego CTA */
.rk-cs-cta-block {
    background: linear-gradient(135deg, #1e1b4b 0%, var(--rk-cs-dark) 100%);
    padding: 35px 50px;
    border-top: 1px solid rgba(37, 99, 235, 0.2);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
}

.rk-cs-cta-text h4 { font-size: 18px; font-weight: 800; color: #ffffff; margin: 0 0 8px 0; }
.rk-cs-cta-text p { font-size: 14px; color: #94a3b8; margin: 0; line-height: 1.5; }
.rk-cs-cta-btn {
    background: var(--rk-cs-brand);
    color: #ffffff;
    padding: 16px 32px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 800;
    text-decoration: none;
    box-shadow: 0 10px 20px -5px rgba(37, 99, 235, 0.5);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    white-space: nowrap;
    border: none;
    text-transform: uppercase;
}
.rk-cs-cta-btn:hover { transform: translateY(-3px); box-shadow: 0 15px 25px -5px rgba(37, 99, 235, 0.6); background: #3b82f6; }

@media (max-width: 768px) {
    .rk-cs-header, .rk-cs-interactive, .rk-cs-author-section, .rk-cs-cta-block { padding: 30px 20px; }
    .rk-cs-title { font-size: 24px; }
    .rk-cs-stats-grid { grid-template-columns: 1fr 1fr; }
    .rk-cs-dashboard { grid-template-columns: 1fr; }
    .rk-cs-svg-stage { height: 160px; }
    .rk-cs-author-box { flex-direction: column; text-align: center; }
    .rk-cs-cta-block { flex-direction: column; text-align: center; gap: 20px; }
    .rk-cs-cta-btn { width: 100%; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Case Study: OZC dla domu w Nowym Targu (174 m²)",
    "description": "Zakończyliśmy pełne opracowanie OZC dla domu 174m2 w V strefie klimatycznej (-24 st C). Zmiana pompy ciepła z 10 kW na 5 kW dała 6500 PLN oszczędności.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-04-14",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-casestudy",
    "name": "Wyniki optymalizacji OZC - Nowy Targ",
    "description": "Porównanie doboru pompy ciepła na podstawie intuicji instalatora vs precyzyjne wyliczenia OZC.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "pompa ciepła 5kW vs 10kW",
      "OZC Nowy Targ V strefa klimatyczna",
      "rozstaw rur 15cm i 10cm",
      "przepływ zasilania 1.8 l/min",
      "oszczędność na pompie 6500 PLN"
    ],
    "measurementTechnique": "Analiza cieplna budynku OZC i projektowanie hydrauliczne wg PN-EN 12831.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Lokalizacja: Nowy Targ (V strefa, -24°C), Dom tradycyjny ceramika + 22cm EPS, Wentylacja mechaniczna.",
        "Obciążenie całkowite: 4,85 kW, pozwalające na redukcję pompy z 10 kW na 5 kW.",
        "Zysk: 6500 PLN, rozstaw salon 15 cm / łazienki 10 cm, przepływy: 1.8 l/min."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-casestudy",
    "name": "Kalkulator Oszczędności OZC",
    "description": "Interaktywny panel prezentujący realne oszczędności (6500 PLN) wynikające z przeliczenia instalatora vs inżyniera w Nowym Targu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires modern browser with SVG and JavaScript enabled",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-cs-container" id="rk-cs-app">
    
    <div class="rk-cs-header">
        <div class="rk-cs-badge">Case Study: Kwiecień 2025</div>
        <h2 class="rk-cs-title">Instalator vs Inżynier: <span>Oszczędność 6 500 PLN</span></h2>
        
        <div class="rk-cs-stats-grid">
            <div class="rk-cs-stat-box">
                <span class="rk-cs-stat-lbl">Inwestor</span>
                <span class="rk-cs-stat-val">Pan Mariusz</span>
            </div>
            <div class="rk-cs-stat-box">
                <span class="rk-cs-stat-lbl">Lokalizacja</span>
                <span class="rk-cs-stat-val">Nowy Targ (-24°C)</span>
            </div>
            <div class="rk-cs-stat-box">
                <span class="rk-cs-stat-lbl">Powierzchnia</span>
                <span class="rk-cs-stat-val">174 m²</span>
            </div>
            <div class="rk-cs-stat-box">
                <span class="rk-cs-stat-lbl">Obciążenie (OZC)</span>
                <span class="rk-cs-stat-val highlight">4,85 kW</span>
            </div>
        </div>
    </div>

    <div class="rk-cs-interactive">
        
        <div class="rk-cs-dashboard" id="csDashboard" data-mode="bad">
            
            <div class="rk-cs-comparison">
                <h3 class="rk-cs-comp-title">Wybierz scenariusz doboru:</h3>
                
                <div class="rk-cs-toggle-wrapper">
                    <div class="rk-cs-toggle-bg"></div>
                    <div class="rk-cs-toggle-btn active mode-bad" id="btnModeBad" data-target="bad">Intuicja Instalatora</div>
                    <div class="rk-cs-toggle-btn mode-good" id="btnModeGood" data-target="good">Twarde OZC (Inżynieria)</div>
                </div>

                <div class="rk-cs-data-rows">
                    <div class="rk-cs-data-row">
                        <span class="rk-cs-data-lbl">Moc Pompy Ciepła:</span>
                        <span class="rk-cs-data-val" id="valPump">10 kW (Przewymiarowana)</span>
                    </div>
                    <div class="rk-cs-data-row">
                        <span class="rk-cs-data-lbl">Rozstaw rur (Salon):</span>
                        <span class="rk-cs-data-val" id="valSpace">&#8222;Jak wyjdzie&#8221;</span>
                    </div>
                    <div class="rk-cs-data-row">
                        <span class="rk-cs-data-lbl">Nastawy rotametrów:</span>
                        <span class="rk-cs-data-val" id="valFlow">Wszystko na 100%</span>
                    </div>
                    <div class="rk-cs-data-row">
                        <span class="rk-cs-data-lbl">Koszt inwestycji:</span>
                        <span class="rk-cs-data-val" id="valCost">Drogo i nieefektywnie</span>
                    </div>
                </div>
            </div>

            <div class="rk-cs-visual">
                <div class="rk-cs-savings-badge">+ 6 500 PLN w kieszeni!</div>
                
                <div class="rk-cs-svg-stage">
                    <svg viewBox="0 0 300 200" width="100%" height="100%">
                        <path class="anim-pipe" d="M 50 180 L 250 180 M 50 170 L 250 170 M 50 160 L 250 160" stroke-linecap="round"/>
                        
                        <path d="M 150 20 L 50 80 L 50 150 L 250 150 L 250 80 Z" fill="none" stroke="#334155" stroke-width="4" stroke-linejoin="round"/>
                        
                        <g class="anim-hp-box" transform="translate(0, 0)">
                            <rect x="110" y="70" width="80" height="80" rx="8" stroke-width="4"/>
                            <g class="anim-fan">
                                <circle cx="150" cy="110" r="25" fill="#0f172a" opacity="0.5"/>
                                <path d="M 150 85 L 165 110 L 135 110 Z"/>
                                <path d="M 150 135 L 135 110 L 165 110 Z"/>
                                <circle cx="150" cy="110" r="5" fill="#ffffff"/>
                            </g>
                        </g>
                    </svg>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-cs-author-section">
        <div class="rk-cs-author-box">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-cs-author-photo" loading="lazy">
            <div class="rk-cs-author-text">
                <p>14 kwietnia 2025 r. zakończyliśmy dokumentację dla budynku w Nowym Targu (ceramika + 22cm EPS, rekuperacja). Projektowe obciążenie wyniosło zaledwie <strong>4,85 kW</strong> przy strefie V (-24°C). Pozwoliło to odrzucić propozycję wykonawcy (10 kW), dobrać pompę 5 kW i wyznaczyć precyzyjny rozstaw rur co 15 cm i 10 cm, z przepływami rzędu 1,8 l/min. <strong>Wynik? Zbalansowany układ i fizyczna oszczędność 6500 zł dla Inwestora.</strong></p>
            </div>
        </div>
    </div>

    <div class="rk-cs-cta-block">
        <div class="rk-cs-cta-text">
            <h4>Przestań przepłacać za przewymiarowane urządzenia</h4>
            <p>Zamów projekt OZC + Ogrzewanie Podłogowe i odzyskaj kontrolę nad budżetem budowy.</p>
        </div>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-cs-cta-btn">Zamów Pakiet Projektowy</a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-cs-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;"><div style="font-size:16px; text-transform:uppercase; margin-bottom:8px;">Błąd autoryzacji modułu</div><div style="font-size:13px; color:#cbd5e1;">Aplikacja Case Study należy do portalu Projekt-Ogrzewania.pl.</div></div>';
        return;
    }

    // 2. Elementy DOM
    const dashboard = document.getElementById('csDashboard');
    const btnBad = document.getElementById('btnModeBad');
    const btnGood = document.getElementById('btnModeGood');
    
    // Pola Danych
    const valPump = document.getElementById('valPump');
    const valSpace = document.getElementById('valSpace');
    const valFlow = document.getElementById('valFlow');
    const valCost = document.getElementById('valCost');

    // 3. Baza Danych Scenariuszy
    const dataScenarios = {
        bad: {
            pump: "10 kW (Przewymiarowana)",
            space: "Intuicyjnie / Losowo",
            flow: "Maksymalne na pompie",
            cost: "Ogromne rachunki i zjawisko taktowania"
        },
        good: {
            pump: "5 kW (Idealnie dobrana OZC)",
            space: "15 cm (Salon) / 10 cm (Łazienka)",
            flow: "Precyzyjne 1,8 l/min",
            cost: "Zoptymalizowane + zysk na starcie"
        }
    };

    // 4. Silnik Przełączania
    function setMode(mode) {
        // Zmiana atrybutu głównego (napędza CSS i SVG)
        dashboard.setAttribute('data-mode', mode);
        
        // Klasy przycisków
        if (mode === 'bad') {
            btnBad.classList.add('active');
            btnGood.classList.remove('active');
        } else {
            btnGood.classList.add('active');
            btnBad.classList.remove('active');
        }

        // Aktualizacja tekstów
        const data = dataScenarios[mode];
        valPump.textContent = data.pump;
        valSpace.textContent = data.space;
        valFlow.textContent = data.flow;
        valCost.textContent = data.cost;
    }

    // Zdarzenia kliknięcia
    btnBad.addEventListener('click', () => setMode('bad'));
    btnGood.addEventListener('click', () => setMode('good'));

});
</script>



<style>
:root {
    --rk-ozcfaq-dark: #0f172a;
    --rk-ozcfaq-brand: #0284c7; /* Ekspercki niebieski OZC */
    --rk-ozcfaq-brand-light: #e0f2fe;
    --rk-ozcfaq-accent: #0ea5e9;
    --rk-ozcfaq-bg: #f8fafc;
    --rk-ozcfaq-border: #cbd5e1;
    --rk-ozcfaq-text: #334155;
    --rk-ozcfaq-hover: #f1f5f9;
}

.rk-ozcfaq-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 20px 40px -10px rgba(2, 132, 199, 0.15);
    border: 1px solid var(--rk-ozcfaq-brand);
    overflow: hidden;
}

/* Nagłówek */
.rk-ozcfaq-header {
    background: linear-gradient(135deg, var(--rk-ozcfaq-dark) 0%, #1e293b 100%);
    padding: 40px 45px 30px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-ozcfaq-brand);
    text-align: center;
}

.rk-ozcfaq-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #7dd3fc;
    padding: 8px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(125, 211, 252, 0.2);
}

.rk-ozcfaq-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0;
    color: #ffffff;
}

.rk-ozcfaq-title span { color: #38bdf8; }

/* Akordeon */
.rk-ozcfaq-interactive {
    padding: 40px 45px;
    background: var(--rk-ozcfaq-bg);
}

.rk-ozcfaq-list {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.rk-ozcfaq-item {
    background: #ffffff;
    border: 1px solid var(--rk-ozcfaq-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.3s;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-ozcfaq-item.active {
    border-color: var(--rk-ozcfaq-brand);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.15);
}

/* Przycisk Pytania */
.rk-ozcfaq-question {
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    padding: 22px 25px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-ozcfaq-dark);
    transition: background 0.3s, color 0.3s;
}

.rk-ozcfaq-question:hover {
    background: var(--rk-ozcfaq-hover);
}

.rk-ozcfaq-item.active .rk-ozcfaq-question {
    background: var(--rk-ozcfaq-brand);
    color: #ffffff;
}

.rk-ozcfaq-icon {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-ozcfaq-brand-light);
    color: var(--rk-ozcfaq-brand);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background 0.3s;
}

.rk-ozcfaq-item.active .rk-ozcfaq-icon {
    background: rgba(255,255,255,0.2);
    color: #ffffff;
    transform: rotate(180deg);
}

/* Odpowiedź z Gridem i Animacją SVG */
.rk-ozcfaq-answer-wrapper {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-ozcfaq-item.active .rk-ozcfaq-answer-wrapper {
    grid-template-rows: 1fr;
}

.rk-ozcfaq-answer-inner {
    overflow: hidden;
}

.rk-ozcfaq-content {
    padding: 25px;
    border-top: 1px solid var(--rk-ozcfaq-border);
    display: grid;
    grid-template-columns: 1fr 180px;
    gap: 30px;
    align-items: center;
}

.rk-ozcfaq-text {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-ozcfaq-text);
}

.rk-ozcfaq-text strong {
    font-weight: 800;
    color: var(--rk-ozcfaq-dark);
}

.rk-link {
    color: var(--rk-ozcfaq-brand);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(2, 132, 199, 0.2);
    transition: all 0.3s;
}

.rk-link:hover {
    border-bottom-color: var(--rk-ozcfaq-brand);
}

/* Wizualizacje SVG */
.rk-ozcfaq-visual {
    background: var(--rk-ozcfaq-dark);
    border-radius: 12px;
    padding: 15px;
    height: 130px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 10px rgba(0,0,0,0.3);
    position: relative;
    overflow: hidden;
}

.rk-svg-box {
    width: 100%;
    height: 100%;
}

/* Animacje specyficzne dla każdego SVG zależne od .active w rodzicu */

/* FAQ 1: Pokoje OZC */
.anim-room-1, .anim-room-2, .anim-room-3 { opacity: 0.3; transition: opacity 0.5s; }
.rk-ozcfaq-item.active .anim-room-1 { animation: pulseRed 2s infinite; }
.rk-ozcfaq-item.active .anim-room-2 { animation: pulseOrange 2s 0.6s infinite; }
.rk-ozcfaq-item.active .anim-room-3 { animation: pulseYellow 2s 1.2s infinite; }
@keyframes pulseRed { 50% { fill: #ef4444; opacity: 0.9; } }
@keyframes pulseOrange { 50% { fill: #f97316; opacity: 0.9; } }
@keyframes pulseYellow { 50% { fill: #eab308; opacity: 0.9; } }

/* FAQ 2: Rekuperacja/Aktualizacja */
.anim-fan { transform-origin: center; transition: transform 0.5s; }
.rk-ozcfaq-item.active .anim-fan { animation: spinFan 2s linear infinite; }
@keyframes spinFan { to { transform: rotate(360deg); } }
.anim-insulation { stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 1s 0.3s; }
.rk-ozcfaq-item.active .anim-insulation { stroke-dashoffset: 0; }

/* FAQ 3: EUco vs OZC */
.anim-bar-euco { transform: scaleX(0); transform-origin: left; transition: transform 1s 0.2s cubic-bezier(0.2, 0.8, 0.2, 1); }
.rk-ozcfaq-item.active .anim-bar-euco { transform: scaleX(1); }
.anim-bar-ozc { transform: scaleX(0); transform-origin: left; transition: transform 1s 0.5s cubic-bezier(0.2, 0.8, 0.2, 1); }
.rk-ozcfaq-item.active .anim-bar-ozc { transform: scaleX(1); }

/* FAQ 4: Zyski (Noc) */
.anim-sun { transition: transform 1s, opacity 1s; }
.anim-moon { opacity: 0; transform: translateY(-20px); transition: transform 1s, opacity 1s; }
.rk-ozcfaq-item.active .anim-sun { transform: translateY(30px); opacity: 0; }
.rk-ozcfaq-item.active .anim-moon { opacity: 1; transform: translateY(0); }
.anim-snow { opacity: 0; }
.rk-ozcfaq-item.active .anim-snow { animation: fallSnow 2s infinite linear; }
@keyframes fallSnow { 0% { opacity: 0; transform: translateY(-10px); } 50% { opacity: 1; } 100% { opacity: 0; transform: translateY(20px); } }

/* FAQ 5: Stary Dom */
.anim-scan { transform: translateY(-10px); opacity: 0; }
.rk-ozcfaq-item.active .anim-scan { animation: scanWall 2.5s infinite; }
@keyframes scanWall { 0% { transform: translateY(-10px); opacity: 0; } 10% { opacity: 1; } 90% { opacity: 1; } 100% { transform: translateY(60px); opacity: 0; } }

@media (max-width: 768px) {
    .rk-ozcfaq-header, .rk-ozcfaq-interactive { padding: 30px 20px; }
    .rk-ozcfaq-title { font-size: 24px; }
    .rk-ozcfaq-content { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-ozcfaq-visual { height: 110px; max-width: 200px; margin: 0 auto; width: 100%; }
    .rk-ozcfaq-question { font-size: 14px; padding: 18px 20px; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania o OZC",
    "description": "Eksperckie odpowiedzi na pytania dotyczące Projektowego Obciążenia Cieplnego (OZC), różnic z EUco, modernizacji starych domów i aktualizacji projektu.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy obliczenia OZC wykonuje się dla całego budynku, czy dla każdego pomieszczenia osobno?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Obliczenia OZC muszą być bezwzględnie wykonane dla każdego pomieszczenia z osobna, ponieważ każde wnętrze posiada inną strukturę przegród zewnętrznych oraz odmienne straty wentylacyjne. Zbiorczy wynik dla całego budynku jest jedynie sumą składowych służącą do doboru mocy źródła ciepła."
        }
      },
      {
        "@type": "Question",
        "name": "Jak często należy aktualizować obliczenia OZC w trakcie trwania budowy domu?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Aktualizację obliczeń OZC należy przeprowadzić zawsze wtedy, gdy w trakcie realizacji inwestycji dojdzie do istotnych zmian w materiałach izolacyjnych lub stolarki otworowej w stosunku do pierwotnego projektu. Zmiana grubości styropianu czy rezygnacja z rekuperacji całkowicie zmienia bilans cieplny budynku."
        }
      },
      {
        "@type": "Question",
        "name": "Czy wskaźnik EUco z charakterystyki energetycznej projektu to samo co Projektowe Obciążenie Cieplne?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, wskaźnik EUco określa sezonowe zapotrzebowanie na energię użytkową w ciągu całego roku wyrażane w kWh/(m2 rok), natomiast OZC to chwilowa, maksymalna moc cieplna wyrażana w kilowatach [kW], potrzebna do pokrycia strat w warunkach skrajnego mrozu. OZC decyduje o fizycznej wielkości urządzeń, a EUco o rocznych kosztach paliwa."
        }
      },
      {
        "@type": "Question",
        "name": "Jaki wpływ na wartość OZC mają zyski ciepła od nasłonecznienia oraz urządzeń wewnętrznych?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Zgodnie z procedurą normy PN-EN 12831, przy obliczaniu Projektowego Obciążenia Cieplnego mającego na celu dobór mocy urządzeń grzewczych, zyski ciepła od nasłonecznienia oraz zyski wewnętrzne są całkowicie pomijane. Założenie to wynika z faktu, że maksymalne, krytyczne obciążenie cieplne może wystąpić w środku nocy, kiedy zyski te nie występują."
        }
      },
      {
        "@type": "Question",
        "name": "Czy stary dom z lat 80. bez dokumentacji projektowej można poprawnie przeliczyć pod kątem OZC?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, dla starych budynków wykonuje się inwentaryzację termomodernizacyjną, odtwarzając strukturę przegród na podstawie odkrywek oraz oceniając stan techniczny stolarki okiennej. Wprowadzając te dane do programu, inżynier jest w stanie z wysoką dokładnością wyznaczyć realne OZC obiektu przed doborem pompy ciepła."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-faq",
    "name": "Baza Wiedzy Inwestorskiej: Parametry Normy PN-EN 12831",
    "description": "Zbiór danych i definicji rozróżniających wartości OZC od charakterystyki energetycznej (EUco) oraz uwzględniających zyski pasywne.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": { "@type": "Person", "name": "Robert Kucharski" },
    "keywords": [
      "obliczenia OZC dla pomieszczeń",
      "aktualizacja bilansu cieplnego",
      "EUco a obciążenie cieplne",
      "pasywne zyski ciepła OZC",
      "termomodernizacja starego domu"
    ],
    "measurementTechnique": "Interpretacja wymagań normy PN-EN 12831 w kontekście fizyki budowli i warunków zimowych bez zysków solarnych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "OZC określa szczytowe zapotrzebowanie (kW) w mroźną noc bez słońca.",
        "EUco to roczne zużycie energii wyrażane w kWh/(m2 rok)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-faq",
    "name": "Interaktywny Przewodnik: Mechanika Obliczeń OZC",
    "description": "Interaktywny moduł edukacyjny typu akordeon, wykorzystujący animacje SVG do demonstracji procesów wymiany ciepła, inwentaryzacji oraz bilansu cieplnego budynku.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": { "@type": "Person", "name": "Robert Kucharski" }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA
=========================================== -->
<div class="rk-ozcfaq-container" id="rk-ozc-faq-app">
    <div class="rk-ozcfaq-header">
        <div class="rk-ozcfaq-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Baza Wiedzy Inwestora
        </div>
        <h2 class="rk-ozcfaq-title">FAQ – <span>Najczęściej zadawane pytania o OZC</span></h2>
    </div>

    <div class="rk-ozcfaq-interactive">
        <div class="rk-ozcfaq-list">
            
            <!-- Pytanie 1 -->
            <div class="rk-ozcfaq-item">
                <button class="rk-ozcfaq-question">
                    <span>1. Czy obliczenia OZC wykonuje się dla całego budynku, czy dla każdego pomieszczenia osobno?</span>
                    <div class="rk-ozcfaq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-ozcfaq-answer-wrapper">
                    <div class="rk-ozcfaq-answer-inner">
                        <div class="rk-ozcfaq-content">
                            <div class="rk-ozcfaq-text">
                                Obliczenia OZC muszą być <strong>bezwzględnie wykonane dla każdego pomieszczenia z osobna</strong>. Każde wnętrze posiada inną strukturę przegród zewnętrznych oraz odmienne <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-link">straty wentylacyjne</a>. Zbiorczy wynik dla całego budynku jest jedynie sumą matematyczną tych składowych, która służy wyłącznie do określenia całkowitej mocy źródła ciepła (np. pompy ciepła).
                            </div>
                            <div class="rk-ozcfaq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <path d="M 10 35 L 50 5 L 90 35" fill="none" stroke="#64748b" stroke-width="3" stroke-linejoin="round"/>
                                    <rect x="20" y="35" width="60" height="30" fill="none" stroke="#64748b" stroke-width="2"/>
                                    <line x1="50" y1="35" x2="50" y2="65" stroke="#64748b" stroke-width="2"/>
                                    <line x1="20" y1="50" x2="80" y2="50" stroke="#64748b" stroke-width="2"/>
                                    <rect class="anim-room-1" x="22" y="37" width="26" height="11" fill="#475569"/>
                                    <rect class="anim-room-2" x="52" y="37" width="26" height="11" fill="#475569"/>
                                    <rect class="anim-room-3" x="22" y="52" width="56" height="11" fill="#475569"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 2 -->
            <div class="rk-ozcfaq-item">
                <button class="rk-ozcfaq-question">
                    <span>2. Jak często należy aktualizować obliczenia OZC w trakcie trwania budowy domu?</span>
                    <div class="rk-ozcfaq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-ozcfaq-answer-wrapper">
                    <div class="rk-ozcfaq-answer-inner">
                        <div class="rk-ozcfaq-content">
                            <div class="rk-ozcfaq-text">
                                Aktualizację obliczeń OZC należy przeprowadzić <strong>zawsze wtedy, gdy dochodzi do istotnych zmian</strong> w strukturze przegród względem pierwotnego projektu architektonicznego. Zmiana grubości styropianu na elewacji, wstawienie gorszych parametrów stolarki okiennej czy rezygnacja z <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/" class="rk-link">wentylacji mechanicznej (rekuperacji)</a> na rzecz grawitacyjnej całkowicie zmienia bilans cieplny budynku.
                            </div>
                            <div class="rk-ozcfaq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="20" y="20" width="60" height="30" fill="none" stroke="#64748b" stroke-width="3" rx="4"/>
                                    <line class="anim-insulation" x1="20" y1="15" x2="80" y2="15" stroke="#0ea5e9" stroke-width="4" stroke-linecap="round"/>
                                    <g transform="translate(50, 35)">
                                        <circle cx="0" cy="0" r="10" fill="none" stroke="#94a3b8" stroke-width="2"/>
                                        <path class="anim-fan" d="M 0 -8 L 2 -2 L 8 0 L 2 2 L 0 8 L -2 2 L -8 0 L -2 -2 Z" fill="#cbd5e1"/>
                                    </g>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 3 -->
            <div class="rk-ozcfaq-item">
                <button class="rk-ozcfaq-question">
                    <span>3. Czy wskaźnik EUco z charakterystyki energetycznej to samo co OZC?</span>
                    <div class="rk-ozcfaq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-ozcfaq-answer-wrapper">
                    <div class="rk-ozcfaq-answer-inner">
                        <div class="rk-ozcfaq-content">
                            <div class="rk-ozcfaq-text">
                                <strong>Nie, to dwa zupełnie różne parametry.</strong> Wskaźnik EUco określa sezonowe zapotrzebowanie na energię użytkową w ciągu całego roku (wyrażane w kWh/m2 na rok), czyli informuje o rocznych kosztach paliwa. Natomiast OZC to chwilowa, maksymalna moc cieplna wyrażana w kilowatach [kW], potrzebna do pokrycia strat w warunkach skrajnego mrozu. OZC decyduje o <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/" class="rk-link">fizycznej wielkości i mocy urządzeń</a>.
                            </div>
                            <div class="rk-ozcfaq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <text x="10" y="30" fill="#94a3b8" font-size="10" font-family="sans-serif">EUco</text>
                                    <rect x="35" y="22" width="55" height="8" fill="#1e293b" rx="2"/>
                                    <rect class="anim-bar-euco" x="35" y="22" width="45" height="8" fill="#0ea5e9" rx="2"/>
                                    
                                    <text x="10" y="55" fill="#94a3b8" font-size="10" font-family="sans-serif">OZC</text>
                                    <rect x="35" y="47" width="55" height="8" fill="#1e293b" rx="2"/>
                                    <rect class="anim-bar-ozc" x="35" y="47" width="25" height="8" fill="#ef4444" rx="2"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 4 -->
            <div class="rk-ozcfaq-item">
                <button class="rk-ozcfaq-question">
                    <span>4. Jaki wpływ na wartość OZC mają zyski ciepła od słońca i urządzeń?</span>
                    <div class="rk-ozcfaq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-ozcfaq-answer-wrapper">
                    <div class="rk-ozcfaq-answer-inner">
                        <div class="rk-ozcfaq-content">
                            <div class="rk-ozcfaq-text">
                                Zgodnie z procedurą normy PN-EN 12831, przy obliczaniu Projektowego Obciążenia Cieplnego mającego na celu dobór mocy urządzeń grzewczych, <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-a-pasywne-zyski-ciepla/" class="rk-link">pasywne zyski ciepła</a> od nasłonecznienia oraz wewnętrzne zyski bytowe są <strong>całkowicie pomijane</strong>. Założenie to jest logiczne – maksymalne, krytyczne obciążenie cieplne budynku zawsze występuje w środku mroźnej nocy, kiedy tych zysków po prostu nie ma.
                            </div>
                            <div class="rk-ozcfaq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <g class="anim-sun">
                                        <circle cx="50" cy="35" r="12" fill="#eab308"/>
                                        <path d="M 50 15 L 50 18 M 50 52 L 50 55 M 30 35 L 33 35 M 67 35 L 70 35" stroke="#eab308" stroke-width="2" stroke-linecap="round"/>
                                    </g>
                                    <g class="anim-moon">
                                        <path d="M 50 20 A 12 12 0 1 0 60 40 A 15 15 0 0 1 50 20 Z" fill="#e2e8f0"/>
                                        <circle class="anim-snow" cx="35" cy="25" r="1.5" fill="#ffffff"/>
                                        <circle class="anim-snow" cx="65" cy="45" r="1.5" fill="#ffffff" style="animation-delay: 0.5s"/>
                                        <circle class="anim-snow" cx="45" cy="50" r="1.5" fill="#ffffff" style="animation-delay: 1s"/>
                                    </g>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 5 -->
            <div class="rk-ozcfaq-item">
                <button class="rk-ozcfaq-question">
                    <span>5. Czy stary dom z lat 80. bez projektu można policzyć pod kątem OZC?</span>
                    <div class="rk-ozcfaq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-ozcfaq-answer-wrapper">
                    <div class="rk-ozcfaq-answer-inner">
                        <div class="rk-ozcfaq-content">
                            <div class="rk-ozcfaq-text">
                                Tak, dla starych budynków wykonuje się <strong>inwentaryzację termomodernizacyjną</strong>. Inżynier odtwarza strukturę przegród na podstawie odkrywek fizycznych oraz oceny stanu technicznego stolarki okiennej i stropów. Wprowadzając zebrane dane do oprogramowania inżynierskiego, jest w stanie z wysoką dokładnością wyznaczyć realne OZC, co jest warunkiem koniecznym do weryfikacji, <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-remontowanym-budynku-czy-warto/" class="rk-link">czy w starym budynku sprawdzi się instalacja płaszczyznowa</a> z pompą ciepła.
                            </div>
                            <div class="rk-ozcfaq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <g stroke="#64748b" stroke-width="2" fill="none">
                                        <rect x="25" y="15" width="15" height="8"/>
                                        <rect x="42" y="15" width="15" height="8"/>
                                        <rect x="59" y="15" width="15" height="8"/>
                                        <rect x="18" y="25" width="15" height="8"/>
                                        <rect x="35" y="25" width="15" height="8"/>
                                        <rect x="52" y="25" width="15" height="8"/>
                                        <rect x="69" y="25" width="15" height="8"/>
                                        <rect x="25" y="35" width="15" height="8"/>
                                        <rect x="42" y="35" width="15" height="8"/>
                                        <rect x="59" y="35" width="15" height="8"/>
                                    </g>
                                    <line class="anim-scan" x1="15" y1="20" x2="85" y2="20" stroke="#0ea5e9" stroke-width="2" stroke-dasharray="4 4"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez wyskakujących H2/H3 z błędami)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-ozc-faq-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // 2. Logika Akordeonu
    const faqItems = document.querySelectorAll('.rk-ozcfaq-item');

    faqItems.forEach(item => {
        const btn = item.querySelector('.rk-ozcfaq-question');
        btn.addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            
            // Zamknij wszystkie
            faqItems.forEach(i => i.classList.remove('active'));
            
            // Otwórz kliknięty jeśli był zamknięty
            if (!isActive) {
                item.classList.add('active');
            }
        });
    });
    
    // Otwórz pierwszy element na start
    if(faqItems.length > 0) {
        faqItems[0].classList.add('active');
    }
});
</script>



<style>
:root {
    --rk-ozc-dark: #0f172a;
    --rk-ozc-blue: #0284c7;
    --rk-ozc-light-blue: #f0f9ff;
    --rk-ozc-green: #059669;
    --rk-ozc-green-light: #ecfdf5;
    --rk-ozc-red: #dc2626;
    --rk-ozc-red-light: #fef2f2;
    --rk-ozc-gold: #fbbf24;
    --rk-ozc-gray: #64748b;
    --rk-ozc-border: #e2e8f0;
    --rk-ozc-bg: #ffffff;
}

.rk-ozc-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-ozc-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-ozc-blue);
    overflow: hidden;
}

/* Sekcja Nagłówkowa */
.rk-ozc-header {
    padding: 45px 50px 35px;
    background: linear-gradient(135deg, var(--rk-ozc-dark) 0%, #1e293b 100%);
    color: #ffffff;
    text-align: center;
    position: relative;
    border-bottom: 4px solid var(--rk-ozc-blue);
}

.rk-ozc-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #38bdf8;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(56, 189, 248, 0.2);
}

.rk-ozc-header h2 {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 20px 0;
    color: #ffffff;
    line-height: 1.2;
}

.rk-ozc-intro-text {
    font-size: 17px;
    line-height: 1.7;
    color: #cbd5e1;
    max-width: 800px;
    margin: 0 auto;
    font-weight: 400;
}

.rk-ozc-intro-text a {
    color: #7dd3fc;
    text-decoration: none;
    border-bottom: 1px dashed #7dd3fc;
    transition: color 0.3s;
}

.rk-ozc-intro-text a:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

/* Interaktywny Symulator (Mobile App Switch) */
.rk-ozc-interactive {
    padding: 45px 50px;
    background: #f8fafc;
}

.rk-switcher-wrapper {
    display: flex;
    justify-content: center;
    margin-bottom: 40px;
}

.rk-app-switch {
    background: #e2e8f0;
    border-radius: 99px;
    padding: 6px;
    display: inline-flex;
    position: relative;
    box-shadow: inset 0 2px 5px rgba(0,0,0,0.06);
    width: 100%;
    max-width: 500px;
}

.rk-switch-btn {
    flex: 1;
    position: relative;
    z-index: 2;
    padding: 14px 20px;
    font-size: 15px;
    font-weight: 800;
    border: none;
    background: transparent;
    color: #64748b;
    cursor: pointer;
    border-radius: 99px;
    transition: color 0.3s ease;
    text-align: center;
}

.rk-switch-btn.active {
    color: #ffffff;
}

.rk-switch-glider {
    position: absolute;
    top: 6px;
    left: 6px;
    height: calc(100% - 12px);
    width: calc(50% - 6px);
    background: var(--rk-ozc-red);
    border-radius: 99px;
    transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), background-color 0.4s ease;
    box-shadow: 0 4px 10px -2px rgba(0,0,0,0.15);
    z-index: 1;
}

.rk-app-switch[data-mode="pro"] .rk-switch-glider {
    transform: translateX(100%);
    background: var(--rk-ozc-green);
}

/* Wynik symulacji */
.rk-ozc-result-box {
    background: #ffffff;
    border-radius: 20px;
    border: 2px solid var(--rk-ozc-border);
    padding: 35px;
    display: grid;
    grid-template-columns: 160px 1fr;
    gap: 40px;
    align-items: center;
    transition: all 0.4s ease;
}

.rk-ozc-result-box.mode-amateur {
    border-color: var(--rk-ozc-red-light);
    box-shadow: 0 15px 35px -10px rgba(220, 38, 38, 0.12);
}

.rk-ozc-result-box.mode-pro {
    border-color: var(--rk-ozc-green-light);
    box-shadow: 0 15px 35px -10px rgba(5, 150, 105, 0.12);
}

.rk-svg-stage {
    width: 100%;
    max-width: 160px;
    margin: 0 auto;
}

/* Animacje SVG */
.anim-pump-body { transition: fill 0.5s ease; }
.anim-waves { stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 0.5s ease; }

.mode-amateur .anim-pump-body { fill: var(--rk-ozc-red); animation: taktowaniePompy 0.3s infinite; }
.mode-amateur .anim-waves { stroke: var(--rk-ozc-red); animation: brokenWaves 1.5s infinite; }

.mode-pro .anim-pump-body { fill: var(--rk-ozc-green); animation: stabilnaPraca 3s infinite; }
.mode-pro .anim-waves { stroke: var(--rk-ozc-green); animation: smoothWaves 2s infinite linear; }

@keyframes taktowaniePompy {
    0% { transform: translate(1px, 1px); }
    25% { transform: translate(-2px, -1px); }
    50% { transform: translate(2px, 2px); }
    75% { transform: translate(-1px, -2px); }
    100% { transform: translate(1px, 1px); }
}

@keyframes stabilnaPraca {
    0% { filter: drop-shadow(0 0 0 rgba(16, 185, 129, 0)); transform: scale(1); }
    50% { filter: drop-shadow(0 0 15px rgba(16, 185, 129, 0.6)); transform: scale(1.02); }
    100% { filter: drop-shadow(0 0 0 rgba(16, 185, 129, 0)); transform: scale(1); }
}

@keyframes brokenWaves {
    0% { stroke-dashoffset: 100; opacity: 1; }
    50% { stroke-dashoffset: 50; opacity: 0.2; }
    100% { stroke-dashoffset: 0; opacity: 1; }
}

@keyframes smoothWaves {
    0% { stroke-dashoffset: 100; opacity: 0.8; }
    100% { stroke-dashoffset: -100; opacity: 0.8; }
}

.rk-ozc-content h3 {
    margin: 0 0 15px 0;
    font-size: 22px;
    font-weight: 800;
}

.mode-amateur .rk-ozc-content h3 { color: var(--rk-ozc-red); }
.mode-pro .rk-ozc-content h3 { color: var(--rk-ozc-green); }

.rk-ozc-content p {
    margin: 0 0 15px 0;
    font-size: 16px;
    line-height: 1.7;
    color: #475569;
}

.rk-ozc-content a {
    color: var(--rk-ozc-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(2, 132, 199, 0.3);
    transition: border-color 0.3s;
}

.rk-ozc-content a:hover { border-color: var(--rk-ozc-blue); }

/* Tabela Kafelkowa (Koszty i Efekty) */
.rk-data-tiles {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
    margin-top: 25px;
}

.rk-tile {
    background: #f1f5f9;
    padding: 18px;
    border-radius: 14px;
    border-left: 4px solid transparent;
    transition: all 0.3s ease;
}

.mode-amateur .rk-tile { border-left-color: var(--rk-ozc-red); background: #fef2f2; }
.mode-pro .rk-tile { border-left-color: var(--rk-ozc-green); background: #ecfdf5; }

.rk-tile-label {
    display: block;
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: #64748b;
    margin-bottom: 5px;
}

.rk-tile-value {
    display: block;
    font-size: 17px;
    font-weight: 900;
    color: var(--rk-ozc-dark);
}

/* Mocne CTA */
.rk-ozc-cta-box {
    padding: 45px 50px;
    background: #ffffff;
    text-align: center;
    border-top: 1px solid var(--rk-ozc-border);
}

.rk-btn-massive {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-ozc-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-btn-massive:hover {
    transform: translateY(-5px);
    background: #0369a1;
    box-shadow: 0 20px 35px -5px rgba(2, 132, 199, 0.5);
    border-color: #7dd3fc;
}

.rk-btn-massive svg { transition: transform 0.3s; }
.rk-btn-massive:hover svg { transform: translateX(6px); }

@media (max-width: 768px) {
    .rk-ozc-header, .rk-ozc-interactive, .rk-ozc-cta-box { padding: 35px 25px; }
    .rk-ozc-result-box { grid-template-columns: 1fr; text-align: center; padding: 25px; gap: 20px; }
    .rk-svg-stage { max-width: 120px; margin-bottom: 10px; }
    .rk-switch-btn { padding: 12px 10px; font-size: 13px; }
    .rk-data-tiles { grid-template-columns: 1fr; gap: 12px; }
    .rk-btn-massive { width: 100%; padding: 18px 20px; font-size: 16px; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Podsumowanie techniczne: OZC a przyszłość instalacji",
    "description": "Projektowe Obciążenie Cieplne (OZC) wyznaczone według normy PN-EN 12831 to inżynierski fundament. Chroni przed taktowaniem pompy ciepła i błędami w układaniu podłogówki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-podsumowanie",
    "name": "Wpływ obliczeń OZC na żywotność i koszty instalacji grzewczej",
    "description": "Analiza porównawcza parametrów pracy pompy ciepła i hydrauliki ogrzewania podłogowego w przypadku zastosowania normy PN-EN 12831 oraz doboru szacunkowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowe obciążenie cieplne",
      "taktowanie pompy ciepła",
      "zbalansowanie hydrauliczne rotametry",
      "bezwładność termiczna jastrychu",
      "norma PN-EN 12831"
    ],
    "measurementTechnique": "Symulacja skutków doboru mocy źródła ciepła oraz nastaw rozdzielacza w oparciu o wyliczenia strat ciepła vs. przeliczniki W/m2.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wariant Szacunkowy: Przewymiarowana pompa ciepła, ciągłe taktowanie, brak możliwości zbalansowania pętli po wylaniu betonu.",
        "Wariant z OZC: Precyzyjnie dobrana moc, stabilna praca sprężarki, zbilansowane przepływy gwarantujące bezawaryjność."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-podsumowanie",
    "name": "Symulator Efektywności: OZC vs Zgadywanie",
    "description": "Interaktywny panel demonstrujący mechaniczne i finansowe skutki braku precyzyjnego Projektowego Obciążenia Cieplnego w systemach ogrzewania płaszczyznowego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA
=========================================== -->
<div class="rk-ozc-container" id="ozc-sum-app">
    <!-- Nagłówek -->
    <div class="rk-ozc-header">
        <div class="rk-ozc-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Podsumowanie Techniczne
        </div>
        <h2>OZC a przyszłość Twojej instalacji</h2>
        <p class="rk-ozc-intro-text">
            Projektowe Obciążenie Cieplne (OZC) wyznaczone zgodnie z normą <strong>PN-EN 12831</strong> to kluczowa decyzja inżynierska na etapie budowy lub modernizacji domu. Wodne ogrzewanie podłogowe jako system niskotemperaturowy o ogromnej <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładności termicznej</a> nie wybacza błędów – rury zalane betonem jastrychowym stają się elementem konstrukcyjnym budynku.
        </p>
    </div>

    <!-- Symulator Standardu -->
    <div class="rk-ozc-interactive">
        <div class="rk-switcher-wrapper">
            <div class="rk-app-switch" id="ozcSwitchContainer" data-mode="amateur">
                <div class="rk-switch-glider" id="ozcGlider"></div>
                <button class="rk-switch-btn active" data-target="amateur">Przelicznik &#8222;Na oko&#8221;</button>
                <button class="rk-switch-btn" data-target="pro">Projekt OZC (PN-EN 12831)</button>
            </div>
        </div>

        <div class="rk-ozc-result-box mode-amateur" id="ozcResultContent">
            <div class="rk-svg-stage">
                <!-- SVG animowane z kodu -->
                <svg viewBox="0 0 100 100" width="100%" height="100%">
                    <!-- Pompa Ciepła -->
                    <rect x="25" y="30" width="50" height="60" rx="6" class="anim-pump-body" />
                    <circle cx="50" cy="50" r="14" fill="#ffffff" opacity="0.9" />
                    <path d="M 45 45 L 55 50 L 45 55 Z" fill="#1e293b" />
                    <!-- Fale Ciepła (podłogówka) -->
                    <path d="M 10 95 Q 30 80 50 95 T 90 95" fill="none" stroke-width="4" stroke-linecap="round" class="anim-waves" />
                    <path d="M 10 105 Q 30 90 50 105 T 90 105" fill="none" stroke-width="4" stroke-linecap="round" class="anim-waves" style="animation-delay: 0.3s" />
                </svg>
            </div>
            
            <div class="rk-ozc-content">
                <h3 id="dynTitle">Taktowanie i nieodwracalne błędy</h3>
                <p id="dynDesc">
                    Rezygnacja z precyzyjnych obliczeń komputerowych na rzecz archaicznych przeliczników powierzchniowych to prosta droga do zakupu przewymiarowanej, stale taktującej <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a>, generującej wysokie koszty eksploatacji i skazanej na szybką awarię. Wadliwy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur</a> czy błędne zbalansowanie hydrauliczne na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach</a> są niemal niemożliwe do skorygowania po fakcie.
                </p>
                
                <div class="rk-data-tiles">
                    <div class="rk-tile">
                        <span class="rk-tile-label" id="dynLabel1">Ryzyko dla sprężarki</span>
                        <span class="rk-tile-value" id="dynVal1">Krytyczne (Taktowanie)</span>
                    </div>
                    <div class="rk-tile">
                        <span class="rk-tile-label" id="dynLabel2">Regulacja hydrauliczna</span>
                        <span class="rk-tile-value" id="dynVal2">Niemożliwa do kalibracji</span>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!-- Mocne CTA -->
    <div class="rk-ozc-cta-box">
        <h3 style="font-size: 24px; font-weight: 900; color: var(--rk-ozc-dark); margin: 0 0 15px 0;">Zbuduj instalację, która przetrwa dekady</h3>
        <p class="rk-ozc-intro-text" style="color: #64748b; margin-bottom: 30px;">
            Nie pozwól, by błędy na etapie planowania uderzyły Cię po portfelu. Wykorzystaj inżynierską wiedzę, sprawdzone normy i narzędzia, które gwarantują spokój.
        </p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-massive">
            PRZEJDŹ DO BAZY WIEDZY I PORADNIKÓW
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<!-- ==========================================
     LOGIKA JS I ZABEZPIECZENIE (DOMAIN LOCK)
=========================================== -->
<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez H2/H3 w alercie)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('ozc-sum-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 36px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Naruszenie Praw Autorskich</div>
                    <div style="font-size: 14px; color: #cbd5e1; max-width: 500px; margin: 0 auto; line-height: 1.6;">
                        Kontener podsumowujący oraz struktura JSON-LD są własnością serwisu Projekt-Ogrzewania.pl. Wykryto próbę kradzieży kodu na nieautoryzowanej domenie.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora (Mobile App Switch)
    const switchContainer = document.getElementById('ozcSwitchContainer');
    const btns = switchContainer.querySelectorAll('.rk-switch-btn');
    const resultBox = document.getElementById('ozcResultContent');
    
    // Elementy tekstowe do podmiany
    const dynTitle = document.getElementById('dynTitle');
    const dynDesc = document.getElementById('dynDesc');
    const dynLabel1 = document.getElementById('dynLabel1');
    const dynVal1 = document.getElementById('dynVal1');
    const dynLabel2 = document.getElementById('dynLabel2');
    const dynVal2 = document.getElementById('dynVal2');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Animacja przełącznika
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const targetMode = this.getAttribute('data-target');
            switchContainer.setAttribute('data-mode', targetMode);

            // Aktualizacja treści i klas kontenera SVG
            if (targetMode === 'pro') {
                resultBox.className = 'rk-ozc-result-box mode-pro';
                
                dynTitle.textContent = "Cicha, energooszczędna praca na dekady";
                dynDesc.innerHTML = `Jedynie precyzyjne powiązanie strat ciepła każdego pomieszczenia z geometrią <a href="https://projekt-ogrzewania.pl/petla-grzewcza/">pętli grzewczych</a> gwarantuje bezawaryjną, cichą i maksymalnie energooszczędną pracę całego systemu przez dekady. Wykluczasz awarie jeszcze na papierze.`;
                
                dynLabel1.textContent = "Żywotność układu";
                dynVal1.textContent = "Maksymalna wydajność (COP)";
                dynVal1.style.color = "var(--rk-ozc-green)";
                
                dynLabel2.textContent = "Przepływy w pętlach";
                dynVal2.textContent = "Idealnie zbalansowane";
                dynVal2.style.color = "var(--rk-ozc-green)";

            } else {
                resultBox.className = 'rk-ozc-result-box mode-amateur';
                
                dynTitle.textContent = "Taktowanie i nieodwracalne błędy";
                dynDesc.innerHTML = `Rezygnacja z precyzyjnych obliczeń komputerowych na rzecz archaicznych przeliczników powierzchniowych to prosta droga do zakupu przewymiarowanej, stale taktującej <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a>, generującej wysokie koszty eksploatacji i skazanej na szybką awarię. Wadliwy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur</a> czy błędne zbalansowanie hydrauliczne na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach</a> są niemal niemożliwe do skorygowania po fakcie.`;
                
                dynLabel1.textContent = "Ryzyko dla sprężarki";
                dynVal1.textContent = "Krytyczne (Taktowanie)";
                dynVal1.style.color = "var(--rk-ozc-dark)";
                
                dynLabel2.textContent = "Regulacja hydrauliczna";
                dynVal2.textContent = "Niemożliwa do kalibracji";
                dynVal2.style.color = "var(--rk-ozc-dark)";
            }
        });
    });
});
</script>



<style>
:root {
    --rk-ozcdl-dark: #0f172a;
    --rk-ozcdl-brand: #ea580c; /* Ognisty pomarańcz nawiązujący do ciepła */
    --rk-ozcdl-brand-dark: #c2410c;
    --rk-ozcdl-bg: #f8fafc;
    --rk-ozcdl-border: #e2e8f0;
    --rk-ozcdl-text: #334155;
    --rk-ozcdl-white: #ffffff;
    --rk-ozcdl-accent: #38bdf8;
}

.rk-ozcdl-container {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-ozcdl-white);
    border-radius: 24px;
    border: 1px solid var(--rk-ozcdl-border);
    box-shadow: 0 25px 50px -12px rgba(234, 88, 12, 0.15);
    overflow: hidden;
}

/* NAGŁÓWEK SEKCI */
.rk-ozcdl-header {
    background: linear-gradient(135deg, var(--rk-ozcdl-dark) 0%, #311505 100%);
    padding: 45px 50px;
    color: var(--rk-ozcdl-white);
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: relative;
    overflow: hidden;
}

.rk-ozcdl-header::after {
    content: '';
    position: absolute;
    bottom: -50px;
    right: -20px;
    width: 200px;
    height: 200px;
    background: radial-gradient(circle, rgba(234, 88, 12, 0.4) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
    pointer-events: none;
}

.rk-ozcdl-header-content { position: relative; z-index: 2; max-width: 65%; }

.rk-ozcdl-badge {
    display: inline-block;
    background: rgba(234, 88, 12, 0.2);
    border: 1px solid rgba(234, 88, 12, 0.3);
    color: #ffedd5;
    padding: 6px 14px;
    border-radius: 50px;
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
}

.rk-ozcdl-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 12px 0;
    line-height: 1.3;
    letter-spacing: -0.5px;
}

.rk-ozcdl-header h2 span { color: #f97316; }

.rk-ozcdl-header p {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    line-height: 1.6;
}

/* WIZUALIZACJA IKONY Z ANIMACJĄ CIEPŁA */
.rk-ozcdl-visual {
    position: relative;
    z-index: 2;
}

.rk-ozcdl-icon-svg {
    width: 90px;
    height: auto;
    filter: drop-shadow(0 15px 20px rgba(0,0,0,0.4));
    animation: ozcFloat 3.5s infinite ease-in-out alternate;
}

@keyframes ozcFloat {
    from { transform: translateY(0) rotate(0deg); }
    to { transform: translateY(-12px) rotate(3deg); }
}

/* GŁÓWNY WORKSPACE */
.rk-ozcdl-workspace {
    display: flex;
    padding: 40px 50px;
    gap: 40px;
    background: var(--rk-ozcdl-white);
}

.rk-ozcdl-preview-box {
    flex: 1;
    background: var(--rk-ozcdl-bg);
    border: 2px dashed #cbd5e1;
    border-radius: 16px;
    padding: 10px;
    position: relative;
    cursor: zoom-in;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-ozcdl-preview-box:hover {
    transform: scale(1.03);
    border-color: var(--rk-ozcdl-brand);
    border-style: solid;
    box-shadow: 0 20px 30px -10px rgba(234, 88, 12, 0.2);
}

.rk-ozcdl-preview-img {
    width: 100%;
    height: auto;
    border-radius: 8px;
    display: block;
    box-shadow: 0 4px 15px rgba(0,0,0,0.1);
}

.rk-ozcdl-zoom-badge {
    position: absolute;
    bottom: 20px;
    right: 20px;
    background: rgba(15, 23, 42, 0.85);
    color: white;
    padding: 8px 16px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    backdrop-filter: blur(4px);
    transition: background 0.3s;
}

.rk-ozcdl-preview-box:hover .rk-ozcdl-zoom-badge {
    background: var(--rk-ozcdl-brand);
}

/* INTERAKTYWNY PANEL (PRAWA STRONA) */
.rk-ozcdl-info-side {
    flex: 1.2;
    display: flex;
    flex-direction: column;
}

/* Zakładki (Tabs) */
.rk-ozcdl-tabs {
    display: flex;
    background: #f1f5f9;
    border-radius: 12px;
    padding: 6px;
    margin-bottom: 25px;
}

.rk-ozcdl-tab {
    flex: 1;
    text-align: center;
    padding: 12px;
    font-size: 13.5px;
    font-weight: 800;
    color: var(--rk-ozcdl-muted);
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.2s ease;
}

.rk-ozcdl-tab.active {
    background: var(--rk-ozcdl-white);
    color: var(--rk-ozcdl-brand);
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.rk-ozcdl-panel {
    display: none;
    animation: fadeInTab 0.3s ease;
}

.rk-ozcdl-panel.active {
    display: block;
}

@keyframes fadeInTab {
    from { opacity: 0; transform: translateY(5px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-ozcdl-feature-list {
    list-style: none;
    padding: 0;
    margin: 0 0 30px 0;
}

.rk-ozcdl-feature-item {
    display: flex;
    align-items: flex-start;
    gap: 15px;
    margin-bottom: 18px;
    font-size: 14.5px;
    font-weight: 600;
    color: var(--rk-ozcdl-text);
    line-height: 1.5;
}

.rk-ozcdl-feature-item svg {
    width: 22px;
    height: 22px;
    color: var(--rk-ozcdl-brand);
    flex-shrink: 0;
    margin-top: 2px;
}

/* PRZYCISK POBIERANIA */
.rk-ozcdl-main-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-ozcdl-brand);
    color: var(--rk-ozcdl-white);
    text-decoration: none !important;
    padding: 18px 30px;
    border-radius: 14px;
    font-weight: 900;
    font-size: 16px;
    transition: all 0.3s;
    box-shadow: 0 10px 25px -5px rgba(234, 88, 12, 0.4);
    margin-top: auto;
    border: 2px solid transparent;
}

.rk-ozcdl-main-btn:hover {
    background: var(--rk-ozcdl-brand-dark);
    transform: translateY(-3px);
    box-shadow: 0 15px 35px -5px rgba(234, 88, 12, 0.5);
    border-color: #fdba74;
}

.rk-ozcdl-main-btn svg { width: 24px; height: 24px; animation: bounceDl 2s infinite; }

@keyframes bounceDl {
    0%, 20%, 50%, 80%, 100% { transform: translateY(0); }
    40% { transform: translateY(-4px); }
    60% { transform: translateY(-2px); }
}

/* STOPKA MODUŁU */
.rk-ozcdl-footer {
    padding: 20px 50px;
    background: var(--rk-ozcdl-bg);
    border-top: 1px solid var(--rk-ozcdl-border);
    font-size: 13px;
    color: var(--rk-ozcdl-text);
    text-align: center;
}

.rk-ozcdl-footer a {
    color: var(--rk-ozcdl-brand);
    font-weight: 800;
    text-decoration: none;
    transition: color 0.2s;
}

.rk-ozcdl-footer a:hover { text-decoration: underline; }

@media (max-width: 800px) {
    .rk-ozcdl-header { flex-direction: column; text-align: center; padding: 35px 25px; }
    .rk-ozcdl-header-content { max-width: 100%; margin-bottom: 30px; }
    .rk-ozcdl-workspace { flex-direction: column; padding: 30px 25px; }
    .rk-ozcdl-preview-box { margin-bottom: 10px; }
    .rk-ozcdl-footer { padding: 20px 25px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-infografika",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Infografika: Projektowe Obciążenie Cieplne (OZC)",
    "description": "Pobierz kompleksową infografikę PDF omawiającą kluczowe parametry OZC, typowe wartości dla budynków i najczęstsze błędy instalatorów.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Projektowe-Obciazenie-Cieplne-OZC.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-infografika",
    "name": "Wskaźniki zapotrzebowania cieplnego budynków (W/m²)",
    "description": "Zestawienie średniego zapotrzebowania na moc (OZC) w zależności od standardu izolacji budynku oraz rozkład strat ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika OZC pdf",
      "pobierz OZC",
      "wskaźniki W/m2 dom",
      "straty ciepła schemat",
      "obliczanie zapotrzebowania na ciepło"
    ],
    "measurementTechnique": "Analiza normatywna zapotrzebowania mocy szczytowej w zależności od standardu termicznego budynku.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Typowe wartości OZC: Dom stary (90-150 W/m²), Modernizowany (50-80 W/m²), Energooszczędny (30-50 W/m²).",
        "Rozkład strat ciepła: Okna (35%), Ściany (26%), Dach (25%), Wentylacja (20%).",
        "Efekty poprawnie wykonanego OZC: Redukcja kosztów ogrzewania o 30% i odpowiedni dobór mocy pompy ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-infografika",
    "name": "Centrum Pobierania Wiedzy: Infografika OZC",
    "description": "Interaktywny moduł edukacyjny udostępniający graficzne kompendium wiedzy o Projektowym Obciążeniu Cieplnym w formacie PDF.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-ozcdl-container" id="app-ozc-dl">
    
    <div class="rk-ozcdl-header">
        <div class="rk-ozcdl-header-content">
            <div class="rk-ozcdl-badge">Darmowe Materiały Edukacyjne</div>
            <h2>Pobierz Kompletny <span>Poradnik OZC</span></h2>
            <p>Zabierz inżynierską wiedzę ze sobą. Kompendium parametrów cieplnych, wskaźniki W/m² oraz schemat ucieczki ciepła z budynku w jednym, czytelnym pliku PDF.</p>
        </div>
        <div class="rk-ozcdl-visual">
            <svg class="rk-ozcdl-icon-svg" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M75 15 L25 15 C19.5 15 15 19.5 15 25 L15 75 C15 80.5 19.5 85 25 85 L75 85 C80.5 85 85 80.5 85 75 L85 25 C85 19.5 80.5 15 75 15 Z" fill="#ea580c"/>
                <path d="M55 15 L85 45 L85 25 C85 19.5 80.5 15 75 15 Z" fill="#c2410c"/>
                <text x="50" y="65" fill="#ffffff" font-size="24" font-weight="900" font-family="sans-serif" text-anchor="middle">PDF</text>
                <path d="M50 25 C45 35 35 40 45 50 C55 60 65 35 50 25 Z" fill="#fbd38d" opacity="0.8"/>
            </svg>
        </div>
    </div>

    <div class="rk-ozcdl-workspace">
        
        <div class="rk-ozcdl-preview-box" onclick="window.open('https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Projektowe-Obciazenie-Cieplne-OZC.webp', '_blank')">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Projektowe-Obciazenie-Cieplne-OZC.webp" alt="Infografika Projektowe Obciążenie Cieplne OZC" class="rk-ozcdl-preview-img" loading="lazy">
            <div class="rk-ozcdl-zoom-badge">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" style="vertical-align: middle; margin-right: 5px;"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="11" y1="8" x2="11" y2="14"></line><line x1="8" y1="11" x2="14" y2="11"></line></svg>
                Powiększ podgląd
            </div>
        </div>

        <div class="rk-ozcdl-info-side">
            
            <div class="rk-ozcdl-tabs">
                <div class="rk-ozcdl-tab active" data-tab="tab-content">Co znajdziesz w środku?</div>
                <div class="rk-ozcdl-tab" data-tab="tab-why">Dlaczego warto?</div>
            </div>

            <div class="rk-ozcdl-panel active" id="tab-content">
                <ul class="rk-ozcdl-feature-list">
                    <li class="rk-ozcdl-feature-item">
                        <svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
                        Tabela wskaźników: Porównanie OZC (W/m²) dla starego i nowego budownictwa.
                    </li>
                    <li class="rk-ozcdl-feature-item">
                        <svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
                        Schemat ucieczki ciepła: % podział strat przez dach, ściany, okna i wentylację.
                    </li>
                    <li class="rk-ozcdl-feature-item">
                        <svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
                        Checklista inżyniera: 3 krytyczne błędy instalatorów, których musisz unikać.
                    </li>
                </ul>
            </div>

            <div class="rk-ozcdl-panel" id="tab-why">
                <ul class="rk-ozcdl-feature-list">
                    <li class="rk-ozcdl-feature-item">
                        <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" style="color: #10b981;"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"/></svg>
                        Oszczędność do 30% na kosztach ogrzewania dzięki poprawnemu doborowi pompy.
                    </li>
                    <li class="rk-ozcdl-feature-item">
                        <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" style="color: #10b981;"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
                        Zabezpieczenie przed kosztownym przewymiarowaniem urządzeń grzewczych.
                    </li>
                    <li class="rk-ozcdl-feature-item">
                        <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" style="color: #10b981;"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
                        Gwarancja optymalnego zrównoważenia hydraulicznego instalacji podłogowej.
                    </li>
                </ul>
            </div>

            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Projektowe-Obciazenie-Cieplne-OZC.pdf" class="rk-ozcdl-main-btn" target="_blank">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
                POBIERZ INFOGRAFIKĘ (PDF)
            </a>
            
        </div>

    </div>

    <div class="rk-ozcdl-footer">
        © 2026 Projekt-Ogrzewania.pl | Autor merytoryczny: <strong>Robert Kucharski</strong>.<br>
        Udostępnianie pliku jest dozwolone wyłącznie z zachowaniem <a href="https://projekt-ogrzewania.pl/">linku do źródła</a>.
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. OCHRONA DOMENOWA (DOMAIN LOCK)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('app-ozc-dl');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #fff7ed; border: 2px solid #ea580c; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 10px;">🔒</div>
                    <div style="font-size: 18px; font-weight: 900; color: #9a3412;">Zasoby Chronione</div>
                    <p style="color: #c2410c; font-size: 14px;">Ta infografika i dokumentacja OZC są własnością serwisu Projekt-Ogrzewania.pl.</p>
                </div>
            `;
        }
        return;
    }

    // 2. LOGIKA ZAKŁADEK (INTERAKTYWNOŚĆ)
    const tabs = document.querySelectorAll('.rk-ozcdl-tab');
    const panels = document.querySelectorAll('.rk-ozcdl-panel');

    tabs.forEach(tab => {
        tab.addEventListener('click', () => {
            // Usuń aktywną klasę ze wszystkich zakładek i paneli
            tabs.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Dodaj aktywną klasę do klikniętej zakładki
            tab.classList.add('active');
            
            // Pokaż odpowiedni panel
            const targetId = tab.getAttribute('data-tab');
            const targetPanel = document.getElementById(targetId);
            if(targetPanel) {
                targetPanel.classList.add('active');
            }
        });
    });
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">Projektowe Obciążenie Cieplne (OZC).</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
