<?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 Oszczędzanie energii - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/category/oszczedzanie-energii/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/category/oszczedzanie-energii/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Wed, 29 Apr 2026 18:20:06 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa Oszczędzanie energii - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/category/oszczedzanie-energii/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Najczęstsze błędy na budowie, które psują nawet najlepszy projekt ogrzewania podłogowego.</title>
		<link>https://projekt-ogrzewania.pl/najczestsze-bledy-na-budowie-ktore-psuja-nawet-najlepszy-projekt-ogrzewania-podlogowego/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Fri, 24 Apr 2026 07:40:41 +0000</pubDate>
				<category><![CDATA[Błędy wykonawcze]]></category>
		<category><![CDATA[Budowa domu]]></category>
		<category><![CDATA[Energooszczędne ogrzewanie]]></category>
		<category><![CDATA[Koszty inwestycji]]></category>
		<category><![CDATA[Normy budowlane]]></category>
		<category><![CDATA[Normy techniczne]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Optymalizacja kosztów]]></category>
		<category><![CDATA[Oszczędności energii]]></category>
		<category><![CDATA[Oszczędzanie energii]]></category>
		<category><![CDATA[Poradnik inwestora]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Poradniki inwestora]]></category>
		<category><![CDATA[błędy na budowie]]></category>
		<category><![CDATA[dylatacje podłogówki]]></category>
		<category><![CDATA[jastrych]]></category>
		<category><![CDATA[koszty budowy]]></category>
		<category><![CDATA[norma pn-en 1264]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[próba ciśnieniowa]]></category>
		<category><![CDATA[próba szczelności]]></category>
		<category><![CDATA[projekt instalacji]]></category>
		<category><![CDATA[projekt ozc]]></category>
		<category><![CDATA[rotametry]]></category>
		<category><![CDATA[rozdzielacz inox]]></category>
		<category><![CDATA[rozstaw rur]]></category>
		<category><![CDATA[styropian pod wylewkę]]></category>
		<category><![CDATA[taśma brzegowa]]></category>
		<category><![CDATA[usterki hydrauliczne]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=4403</guid>

					<description><![CDATA[<p>Zdecydowałeś się na nowoczesną instalację płaszczyznową, zapłaciłeś za profesjonalne wyliczenia OZC i kupiłeś drogi rozdzielacz? To świetny start, ale niestety to za mało, aby spać spokojnie. Prawdziwy test dla Twojej inwestycji odbywa się w momencie zalewania rur betonem. To właśnie w tej fazie najczęściej dochodzi do kosztownych pomyłek z winy pośpiechu i brawury ekip. Pozorna oszczędność na taśmie dylatacyjnej, zalanie jastrychu bez odpowiedniego ciśnienia czy zignorowanie zaleceń dotyczących grubości izolacji to klasyczne przykłady na to, jak najczęstsze błędy na budowie, które psują nawet najlepszy projekt ogrzewania podłogowego, potrafią zrujnować Twój portfel. Skucie popękanej posadzki i naprawa wycieków kosztują kilkadziesiąt tysięcy złotych. Przeczytaj ten raport, zapisz naszą listę kontrolną i obroń swój budżet, zanim betoniarka wjedzie na plac budowy.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-na-budowie-ktore-psuja-nawet-najlepszy-projekt-ogrzewania-podlogowego/">Najczęstsze błędy na budowie, które psują nawet najlepszy projekt ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --primary: #0f172a;
    --accent: #dc2626; /* Zmiana na czerwień/ostrzegawczy, pasujący do tematyki błędów i strat finansowych */
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #fef2f2; /* Jasnoczerwone tło dopasowane do akcentu */
    --border-color: #fca5a5;
}

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

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

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

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

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

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

.hero-text a {
    color: var(--accent);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    font-weight: 600;
    transition: color 0.2s ease;
}

.hero-text a:hover {
    color: #991b1b;
}

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

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

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

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

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

.hero-card:hover {
    top: -5px;
    border-color: var(--accent);
    box-shadow: 0 15px 25px -5px rgba(220, 38, 38, 0.15);
}

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

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

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

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

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

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Najczęstsze błędy na budowie, które psują nawet najlepszy projekt ogrzewania podłogowego",
    "description": "Klasyczne błędy wykonawcze, brak próby ciśnieniowej i odchylenia od projektu OZC oraz normy PN-EN 1264, które drastycznie podnoszą koszty inwestycji i eksploatacji ogrzewania podłogowego.",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl"
    },
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/najczestsze-bledy-na-budowie-ktore-psuja-nawet-najlepszy-projekt-ogrzewania-podlogowego/"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Wpływ błędów wykonawczych na koszty ogrzewania podłogowego",
    "description": "Zestawienie mierzalnych strat finansowych i technicznych wynikających z niestosowania się do norm PN-EN 1264 i obliczeń OZC na etapie wykonawstwa.",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Brak próby ciśnieniowej",
        "value": "23 400 PLN",
        "description": "Średni koszt naprawy (skucie posadzki 42m², nowy jastrych, odtworzenie paneli) po wycieku"
      },
      {
        "@type": "PropertyValue",
        "name": "Przekroczenie długości pętli",
        "value": "140 m zamiast 90 m",
        "description": "Zbyt duży opór hydrauliczny uniemożliwiający wyregulowanie rotametru i niedogrzanie pomieszczeń"
      },
      {
        "@type": "PropertyValue",
        "name": "Brak izolacji wg WT2021",
        "value": "18 cm zamiast 20 cm EPS",
        "description": "Trwała utrata izolacyjności powodująca wzrost kosztów eksploatacji przy pompie ciepła"
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Kalkulator Strat Wykonawczych Ogrzewania Podłogowego",
    "description": "Interaktywne zestawienie pozwalające zrozumieć algorytmom wyszukiwarek relację między konkretnym odchyleniem od projektu a końcowym kosztem naprawy dla inwestora (np. brak manometru vs skucie posadzki).",
    "applicationCategory": "Kalkulator Inżynieryjny",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="premium-hero-box" id="hero-app-container">
    <div class="hero-content">
        
        <div class="hero-badge">
            <span>💸</span> Prawdziwe Koszty Błędów
        </div>
        
        <p class="hero-text">W kwietniu 2026 roku w domu 158m² w Małopolsce inwestor zalał jastrych na rurach bez wcześniejszej próby ciśnieniowej i <strong>stracił 23 400 zł na skuciu posadzki</strong>. To klasyczny przykład, dlaczego najczęstsze błędy na budowie, które psują nawet najlepszy projekt ogrzewania podłogowego, ostatecznie kosztują wielokrotnie więcej niż sam projekt. Błąd wynikał z pośpiechu ekipy wylewkowej i braku podstawowej weryfikacji.</p>
        
        <p class="hero-text"><strong>Najczęstsze błędy na budowie</strong>, które psują instalację, to przede wszystkim odchylenia wykonawcze od obliczeń OZC i <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">normy PN-EN 1264</a>. Powodują one nierównomierny rozkład temperatury i drastyczny wzrost kosztów eksploatacji. W Projekt-Ogrzewania.pl widzę to od 2012 roku, weryfikując instalacje w ponad 1000 domach. Projekt za 499 zł nie zadziała, jeśli wykonawca na budowie <strong>da 18 cm styropianu zamiast 20 cm</strong> albo ułoży pętlę o długości 140 m zamiast obliczeniowych 90 m.</p>

        <div class="hero-modules-title">W tym poradniku demaskujemy:</div>
        
        <div class="hero-grid">
            <div class="hero-card">
                <span class="hero-card-icon">💧</span>
                <span class="hero-card-title">Brak próby ciśnieniowej przed wylewką</span>
            </div>
            <div class="hero-card">
                <span class="hero-card-icon">📏</span>
                <span class="hero-card-title">Zły rozstaw rur ignorujący OZC</span>
            </div>
            <div class="hero-card">
                <span class="hero-card-icon">➰</span>
                <span class="hero-card-title">Przewymiarowane pętle powyżej 100 m</span>
            </div>
            <div class="hero-card">
                <span class="hero-card-icon">🧊</span>
                <span class="hero-card-title">Za cienki styropian (ignorowanie WT2021)</span>
            </div>
        </div>

    </div>

    <noscript>
        <div style="padding: 20px 50px; background: #f8fafc; border-top: 1px solid #e2e8f0; font-family: sans-serif;">
            <h2 style="font-size: 18px; color: #0f172a; margin-bottom: 15px;">Konsekwencje i koszty odchyleń od projektu</h2>
            <table style="width: 100%; border-collapse: collapse; font-size: 14px; text-align: left;">
                <thead>
                    <tr style="border-bottom: 2px solid #cbd5e1;">
                        <th style="padding: 10px 0; color: #475569;">Błąd wykonawczy</th>
                        <th style="padding: 10px 0; color: #475569;">Odchylenie od normy / projektu</th>
                        <th style="padding: 10px 0; color: #475569;">Konsekwencja (Koszty)</th>
                    </tr>
                </thead>
                <tbody>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px 0; font-weight: bold;">Brak próby szczelności</td>
                        <td style="padding: 10px 0;">Zalanie rur bez ciśnienia 6 bar</td>
                        <td style="padding: 10px 0; color: #dc2626;">Wyciek i skucie posadzki (ok. 23 400 zł)</td>
                    </tr>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px 0; font-weight: bold;">Za długa pętla grzewcza</td>
                        <td style="padding: 10px 0;">Układanie 140 m zamiast 90 m</td>
                        <td style="padding: 10px 0; color: #dc2626;">Brak możliwości wyregulowania rotametrem</td>
                    </tr>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px 0; font-weight: bold;">Redukcja warstwy izolacji</td>
                        <td style="padding: 10px 0;">18 cm styropianu zamiast 20 cm</td>
                        <td style="padding: 10px 0; color: #dc2626;">Straty ciepła do gruntu i wyższe rachunki</td>
                    </tr>
                    <tr>
                        <td style="padding: 10px 0; font-weight: bold;">Ignorowanie OZC</td>
                        <td style="padding: 10px 0;">Układanie „na oko” (rozstaw 15 cm wszędzie)</td>
                        <td style="padding: 10px 0; color: #dc2626;">Niedogrzane strefy brzegowe zimą</td>
                    </tr>
                </tbody>
            </table>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // ZABEZPIECZENIE DOMENOWE (Domain Lock)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('hero-app-container');
        if (container) {
            container.innerHTML = `
                <div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 300px; font-family: sans-serif;">
                    <span style="font-size: 48px; margin-bottom: 20px;">🔒</span>
                    <div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona prawem autorskim</div>
                    <p style="font-size: 16px; max-width: 500px; color: #991b1b; 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: #dc2626; /* Czerwony ostrzegawczy */
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #fef2f2;
    --border-color: #fca5a5;
    --sim-bg: #f8fafc;
    --concrete: #cbd5e1;
    --eps: #fef08a;
}

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

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

.physics-header h2 {
    margin: 0 0 10px 0;
    font-size: 24px;
    font-weight: 900;
    color: var(--primary);
}

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

/* SYMULATOR FIZYKI */
.simulator-wrapper {
    padding: 30px 40px;
    background: #ffffff;
    border-bottom: 1px solid #e2e8f0;
}

.sim-controls {
    display: flex;
    justify-content: center;
    gap: 15px;
    margin-bottom: 30px;
}

.sim-btn {
    padding: 12px 24px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 800;
    cursor: pointer;
    border: 2px solid transparent;
    transition: all 0.3s ease;
    background: #f1f5f9;
    color: #64748b;
}

.sim-btn.active-danger {
    background: #fee2e2;
    color: var(--danger);
    border-color: var(--danger);
    box-shadow: 0 4px 12px rgba(220, 38, 38, 0.2);
}

.sim-btn.active-success {
    background: #dcfce7;
    color: var(--success);
    border-color: var(--success);
    box-shadow: 0 4px 12px rgba(22, 163, 74, 0.2);
}

/* Przekrój podłogi */
.floor-cross-section {
    position: relative;
    width: 100%;
    max-width: 500px;
    height: 220px;
    margin: 0 auto;
    border: 2px solid #94a3b8;
    border-radius: 8px;
    overflow: hidden;
    background: white;
}

.layer-screed {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 140px; /* Jastrych */
    background: repeating-linear-gradient(
        45deg,
        #e2e8f0,
        #e2e8f0 10px,
        #cbd5e1 10px,
        #cbd5e1 20px
    );
    border-bottom: 2px solid #64748b;
    transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    padding-top: 15px;
}

.layer-eps {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 80px; /* Styropian */
    background: var(--eps);
    display: flex;
    justify-content: center;
    align-items: center;
    font-weight: 800;
    color: #a16207;
    letter-spacing: 1px;
}

.sim-pipe {
    position: absolute;
    bottom: 82px; /* Rura leży na styropianie */
    left: 50%;
    transform: translateX(-50%);
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: 4px solid #ef4444; /* Czerwona rura PERT */
    background: #3b82f6; /* Woda w środku */
    box-shadow: 0 4px 6px rgba(0,0,0,0.3);
    transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 10;
}

/* Elementy wymiarujące i ostrzeżenia */
.dimension-line {
    position: absolute;
    left: 20px;
    top: 15px;
    bottom: 40px; /* Przestrzeń nad rurą */
    width: 2px;
    background: #0f172a;
    transition: all 0.5s ease;
}

.dimension-line::before, .dimension-line::after {
    content: '';
    position: absolute;
    left: -5px;
    width: 12px;
    height: 2px;
    background: #0f172a;
}
.dimension-line::before { top: 0; }
.dimension-line::after { bottom: 0; }

.dimension-label {
    position: absolute;
    left: 35px;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(255,255,255,0.9);
    padding: 2px 8px;
    border-radius: 4px;
    font-weight: 900;
    font-size: 14px;
    color: var(--primary);
    transition: all 0.5s ease;
}

.sim-status-box {
    margin-top: 25px;
    padding: 15px 20px;
    border-radius: 12px;
    text-align: center;
    font-size: 15px;
    font-weight: 700;
    transition: all 0.3s ease;
}

/* STANY SYMULACJI (Klasy nadawane przez JS) */
.state-danger .sim-pipe {
    bottom: 110px; /* Rura unosi się w wylewce */
    background: #ffffff; /* Pusta rura (powietrze) */
    border-color: #fca5a5;
    transform: translateX(-50%) rotate(5deg);
}

.state-danger .dimension-line { bottom: 68px; background: var(--danger); }
.state-danger .dimension-line::before, .state-danger .dimension-line::after { background: var(--danger); }
.state-danger .dimension-label { color: var(--danger); }

.state-danger .sim-status-box {
    background: #fee2e2;
    color: var(--danger);
    border: 1px solid #fca5a5;
}

.state-success .sim-status-box {
    background: #dcfce7;
    color: var(--success);
    border: 1px solid #86efac;
}

/* TEKST ARTYKUŁU */
.article-content {
    padding: 40px;
    font-size: 16px;
    line-height: 1.8;
    color: #334155;
    background: #ffffff;
}

.article-content p {
    margin-bottom: 20px;
}

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

.article-content a {
    color: var(--accent);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    font-weight: 600;
}

@media (max-width: 600px) {
    .physics-header { padding: 25px 20px; }
    .simulator-wrapper { padding: 20px; }
    .sim-controls { flex-direction: column; }
    .article-content { padding: 30px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Symulator fizyki wylewki i próby ciśnieniowej",
    "description": "Interaktywna symulacja uderzenia łopatą i wibrowania betonu. Obrazuje zachowanie pustej rury PEX/PERT (wyporność i unoszenie się) w płynnym jastrychu w przypadku braku próby ciśnieniowej wg PN-EN 1264-4.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Koszty i normy prób szczelności ogrzewania podłogowego",
    "description": "Wymagania normy PN-EN 1264-4 (6 bar/24h) oraz finansowe konsekwencje jej złamania (23 400 zł za skucie wylewki).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  }
]
</script>

<div class="premium-physics-box" id="physics-app-lock">
    
    <div class="physics-header">
        <h2>Ile kosztuje brak próby szczelności przed wylewką?</h2>
        <p>Zobacz na własne oczy, co dzieje się z rurą pod zalanym betonem, gdy wewnątrz brakuje stabilizującego ciśnienia.</p>
    </div>

    <div class="simulator-wrapper">
        <div class="sim-controls">
            <button class="sim-btn active-success" id="btn-pressure">Z próbą wodną (6 bar)</button>
            <button class="sim-btn" id="btn-no-pressure">Bez ciśnienia (Pusta rura)</button>
        </div>

        <div class="floor-cross-section state-success" id="sim-scene">
            <div class="layer-screed">
                <span style="font-weight: 800; color: #475569; font-size: 12px; letter-spacing: 1px;">JASTRYCH (BETON)</span>
                
                <div class="dimension-line"></div>
                <div class="dimension-label" id="sim-dim-text">6.5 cm</div>

                <div class="sim-pipe"></div>
            </div>
            <div class="layer-eps">STYROPIAN (EPS)</div>
        </div>

        <div class="sim-status-box" id="sim-status-msg">
            ✅ Zgodnie z normą PN-EN 1264-4. Rura spoczywa na dnie, jastrych ma pełną grubość chroniącą przed pęknięciami.
        </div>
    </div>

    <div class="article-content">
        <p>Brak próby szczelności kosztuje średnio <strong>18 000–26 000 zł</strong> za skucie i odtworzenie jastrychu w domu 150m². Norma <strong>PN-EN 1264-4 §4.2.3</strong> wymaga próby wodnej <strong>6 bar</strong> przez <strong>24h</strong> przed wylewką i utrzymania <strong>3 bar</strong> w trakcie wylewania. Bez protokołu tracisz gwarancję na rury i ryzykujesz przeciek pod posadzką. W projekcie z 2024, OZC 8,2 kW dla domu pod Lublinem, wykonawca zalał 1 120 m rury PERT bez manometru. Po 11 dniach pojawiła się plama na styropianie. Skaner termowizyjny pokazał wyciek na złączce pod salonem. Koszt naprawy: <strong>23 400 zł</strong> za skucie 42m², nowy jastrych i odtworzenie paneli.</p>
        
        <p>Prawidłowa <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/" type="link" id="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/" target="_blank" rel="noreferrer noopener">próba szczelności ogrzewania podłogowego</a> to <strong>45 minut pracy i 0 zł materiału</strong>, jeśli masz projekt. Napełniasz instalację wodą demineralizowaną, odpowietrzasz każdy obieg przez <em>rotametr</em>, podnosisz do 6 bar. Spadek powyżej 0,2 bar/24h oznacza nieszczelność.</p>
        
        <p>Błąd wynika z pośpiechu. Ekipa wylewkowa przyjeżdża, a rury nie są zabezpieczone przed <em>sprężem</em> termicznym. Woda w pętli stabilizuje rurę. Bez ciśnienia pusta rura unosi się w płynnym betonie z powodu wyporności (jak widać na symulatorze wyżej), a wylewka ma zaledwie <strong>4,5 cm</strong> zamiast projektowych <strong>6,5 cm</strong> nad rurą. To bezwzględnie łamie normę <strong>PN-EN 1264-4 §4.2.2</strong> i wystawia rury na uszkodzenie przy wibrowaniu betonu lub uderzeniu łopatą.</p>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // --- OCHRONA AUTORSKA ---
    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('physics-app-lock');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;"><span style="font-size: 48px; margin-bottom: 20px; display:block;">🔒</span><p style="margin-top:0;">Treść chroniona prawem autorskim</p><p>Własność Projekt-Ogrzewania.pl</p></div>';
            return; 
        }
    }

    // --- LOGIKA SYMULATORA ---
    const btnPressure = document.getElementById('btn-pressure');
    const btnNoPressure = document.getElementById('btn-no-pressure');
    const scene = document.getElementById('sim-scene');
    const dimText = document.getElementById('sim-dim-text');
    const statusMsg = document.getElementById('sim-status-msg');

    btnPressure.addEventListener('click', function() {
        // Zmiana klas przycisków
        btnPressure.classList.add('active-success');
        btnPressure.classList.remove('active-danger');
        btnNoPressure.classList.remove('active-danger', 'active-success');
        
        // Zmiana sceny
        scene.classList.remove('state-danger');
        scene.classList.add('state-success');
        
        // Aktualizacja tekstów
        dimText.textContent = '6.5 cm';
        statusMsg.innerHTML = '✅ Zgodnie z normą PN-EN 1264-4. Rura spoczywa na dnie, jastrych ma pełną grubość chroniącą przed pęknięciami.';
    });

    btnNoPressure.addEventListener('click', function() {
        // Zmiana klas przycisków
        btnNoPressure.classList.add('active-danger');
        btnPressure.classList.remove('active-success', 'active-danger');
        
        // Zmiana sceny
        scene.classList.remove('state-success');
        scene.classList.add('state-danger');
        
        // Aktualizacja tekstów
        dimText.textContent = '4.5 cm !';
        statusMsg.innerHTML = '⚠️ BŁĄD! Pusta rura wypływa ku górze. Wylewka pęknie, a uderzenie łopatą zniszczy instalację. Koszt naprawy: ~23 400 zł.';
    });

});
</script>



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

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

.interactive-header {
    padding: 30px 40px;
    background: var(--bg-light);
    border-bottom: 1px solid var(--border-color);
}

.interactive-header h2 {
    margin: 0 0 15px 0;
    font-size: 24px;
    font-weight: 900;
    color: var(--primary);
    line-height: 1.3;
}

/* TEKST ARTYKUŁU W KONTENERZE */
.article-text-section {
    font-size: 16px;
    line-height: 1.8;
    color: #334155;
    margin-bottom: 0;
}

.article-text-section a {
    color: var(--accent);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    font-weight: 600;
}

/* INTERAKTYWNY SYMULATOR */
.simulator-section {
    padding: 40px;
    background: #ffffff;
}

.sim-title {
    font-size: 15px;
    font-weight: 800;
    text-transform: uppercase;
    color: #64748b;
    margin-bottom: 25px;
    display: flex;
    align-items: center;
    gap: 10px;
}

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

.sim-controls-group {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.control-item {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.control-item label {
    font-size: 13px;
    font-weight: 800;
    color: var(--primary);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.control-item select {
    padding: 12px 15px;
    font-size: 15px;
    font-weight: 600;
    color: #334155;
    border: 2px solid #e2e8f0;
    border-radius: 10px;
    background: var(--sim-bg);
    cursor: pointer;
    outline: none;
    transition: border-color 0.2s;
    font-family: inherit;
}

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

/* WYNIKI */
.sim-results-group {
    background: var(--sim-bg);
    border: 2px solid #e2e8f0;
    border-radius: 16px;
    padding: 30px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    transition: all 0.4s ease;
}

.sim-results-group.state-danger {
    background: #fee2e2;
    border-color: var(--danger);
}

.sim-results-group.state-success {
    background: #dcfce7;
    border-color: var(--success);
}

.result-label {
    font-size: 14px;
    font-weight: 800;
    color: #64748b;
    text-transform: uppercase;
    margin-bottom: 10px;
}

.state-danger .result-label { color: #991b1b; }
.state-success .result-label { color: #166534; }

.result-power {
    font-size: 54px;
    font-weight: 900;
    line-height: 1;
    margin-bottom: 10px;
    color: var(--primary);
    transition: color 0.3s;
}

.state-danger .result-power { color: var(--danger); }
.state-success .result-power { color: var(--success); }

.result-unit {
    font-size: 20px;
}

.result-message {
    font-size: 14px;
    font-weight: 700;
    color: #475569;
    margin-top: 15px;
    line-height: 1.5;
}

.state-danger .result-message { color: #7f1d1d; }
.state-success .result-message { color: #14532d; }

@media (max-width: 768px) {
    .interactive-header { padding: 30px 20px; }
    .simulator-section { padding: 30px 20px; }
    .sim-grid { grid-template-columns: 1fr; }
    .result-power { font-size: 42px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Symulator mocy grzewczej i oporu cieplnego posadzki",
    "description": "Interaktywne narzędzie inżynierskie ilustrujące zależność pomiędzy rozstawem rur (OZC), temperaturą zasilania (Pompa Ciepła/Kocioł Gazowy) a oporem cieplnym wykończenia podłogi (płytki, panele, drewno).",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Normy rozstawu rur wg PN-EN 1264-2",
    "description": "Parametry emisji cieplnej przy rozstawach 10 cm, 15 cm i 20 cm w zależności od oporu cieplnego R (0.02 - 0.18 m²K/W).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  }
]
</script>

<div class="premium-interactive-box" id="spacing-app-lock">
    
    <div class="interactive-header">
        <h2>Jaka jest norma dla rozstawu rur i dlaczego 15 cm nie zawsze działa?</h2>
        
        <div class="article-text-section">
            <p>Norma <strong>PN-EN 1264-2 §5.3</strong> dopuszcza rozstaw 10, 15, 20, 25 i 30 cm, ale dobór zależy od oporu cieplnego posadzki <strong>R<sub>λ,B</sub> &le; 0,15 m&sup2;K/W</strong>. Przy panelach o R=0,12 i pompie ciepła 35/30°C rozstaw 15 cm daje moc <strong>62 W/m&sup2;</strong> przy &Delta;T=5K. Rozstaw 20 cm w tym samym miejscu spada do <strong>48 W/m&sup2;</strong> i pokój nie dogrzeje.</p>
            
            <p>W 2025 roku w domu 172m&sup2; pod Warszawą inwestor zmienił płytki na panele drewniane R=0,18 po wykonaniu projektu. Wykonawca zostawił rozstaw 20 cm w sypialniach. Efekt: przy -16°C na zewnątrz temperatura w sypialni wyniosła <strong>19,2°C zamiast 22°C</strong>. Dogrzewanie grzejnikiem elektrycznym kosztowało 340 zł za sezon.</p>
            
            <p><a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" type="link" id="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" target="_blank" rel="noreferrer noopener">Rozstaw rur w wodnym ogrzewaniu podłogowym</a> musi wynikać z OZC, nie z przyzwyczajenia. Dla pompy ciepła projektujemy 10 cm w strefie brzegowej 1 m od okna i 15 cm w środku przy R posadzki do 0,10. Dla kotła gazowego 45/35°C możesz iść na 20 cm. <strong>Koszt zmiany rozstawu na etapie projektu to 0 zł. Koszt poprawki po wylewce to nowa podłoga.</strong></p>
        </div>
    </div>

    <div class="simulator-section">
        <div class="sim-title"><span>🎛️</span> Symulator: Jak podłoga „dławi” moc grzewczą?</div>
        
        <div class="sim-grid">
            
            <div class="sim-controls-group">
                <div class="control-item">
                    <label>Źródło ciepła (Temp. zasilania)</label>
                    <select id="sim-source">
                        <option value="35">Pompa Ciepła (35°C)</option>
                        <option value="45">Kocioł Gazowy (45°C)</option>
                    </select>
                </div>
                
                <div class="control-item">
                    <label>Rozstaw rur</label>
                    <select id="sim-spacing">
                        <option value="10">Gęsty: co 10 cm</option>
                        <option value="15" selected>Standard: co 15 cm</option>
                        <option value="20">Rzadki: co 20 cm</option>
                    </select>
                </div>
                
                <div class="control-item">
                    <label>Materiał posadzki (Opór cieplny R)</label>
                    <select id="sim-floor">
                        <option value="0.02">Płytki ceramiczne / Gres (R ~0.02)</option>
                        <option value="0.12" selected>Panele winylowe / cienki laminat (R ~0.12)</option>
                        <option value="0.18">Gruba deska drewniana (R ~0.18)</option>
                    </select>
                </div>
            </div>

            <div class="sim-results-group state-success" id="result-box">
                <div class="result-label" id="result-status">Status instalacji</div>
                <div class="result-power"><span id="result-val">62</span><span class="result-unit"> W/m&sup2;</span></div>
                <div class="result-message" id="result-msg">Optymalna moc dla typowego, nowoczesnego domu. Pomieszczenie zostanie dogrzane.</div>
            </div>

        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // --- OCHRONA AUTORSKA ---
    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('spacing-app-lock');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;"><span style="font-size: 48px; margin-bottom: 20px; display:block;">🔒</span><p style="margin-top:0;">Treść chroniona prawem autorskim</p><p>Własność Projekt-Ogrzewania.pl</p></div>';
            return; 
        }
    }

    // --- LOGIKA SYMULATORA (Macierz Mocy Grzewczej W/m2) ---
    // Dane oparte na normie PN-EN 1264 i tekście artykułu
    const powerData = {
        "35": { // Pompa ciepła
            "0.02": { "10": 85, "15": 72, "20": 60 },  // Płytki
            "0.12": { "10": 72, "15": 62, "20": 48 },  // Panele laminat
            "0.18": { "10": 55, "15": 45, "20": 35 }   // Grube drewno
        },
        "45": { // Kocioł Gazowy
            "0.02": { "10": 140, "15": 120, "20": 100 }, // Płytki
            "0.12": { "10": 115, "15": 95,  "20": 80 },  // Panele laminat
            "0.18": { "10": 90,  "15": 75,  "20": 60 }   // Grube drewno
        }
    };

    const selSource = document.getElementById('sim-source');
    const selSpacing = document.getElementById('sim-spacing');
    const selFloor = document.getElementById('sim-floor');
    
    const resBox = document.getElementById('result-box');
    const resVal = document.getElementById('result-val');
    const resStatus = document.getElementById('result-status');
    const resMsg = document.getElementById('result-msg');

    function calculatePower() {
        const source = selSource.value;
        const spacing = selSpacing.value;
        const floor = selFloor.value;

        // Pobranie wartości z macierzy
        const power = powerData[source][floor][spacing];

        // Wyświetlenie wartości
        resVal.textContent = power;

        // Logika oceny (Uproszczona analiza dla domów WT2021)
        if (power < 50) {
            resBox.className = 'sim-results-group state-danger';
            resStatus.textContent = '⚠️ RYZYKO NIEDOGRzANIA';
            
            if(floor === "0.18") {
                resMsg.textContent = 'Grube drewno działa jak izolator. Przy tym rozstawie rur system nie odda ciepła do pomieszczenia. Zimą temperatura spadnie poniżej 20°C!';
            } else {
                resMsg.textContent = 'Zbyt niska emisja ciepła! Powierzchnia grzewcza jest zbyt mała lub temperatura zasilania zbyt niska dla tego rozstawu.';
            }
        } else {
            resBox.className = 'sim-results-group state-success';
            resStatus.textContent = '✅ PARAMETRY PRAWIDŁOWE';
            resMsg.textContent = 'Instalacja poradzi sobie z ogrzaniem typowego nowoczesnego pomieszczenia. Moc jest optymalna.';
        }
    }

    // Event listenery
    selSource.addEventListener('change', calculatePower);
    selSpacing.addEventListener('change', calculatePower);
    selFloor.addEventListener('change', calculatePower);

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



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

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

.loop-header {
    padding: 30px 40px 10px 40px;
    background: var(--bg-light);
    border-bottom: 1px solid var(--border-color);
}

.loop-header h2 {
    margin: 0 0 15px 0;
    font-size: 24px;
    font-weight: 900;
    color: var(--primary);
    line-height: 1.3;
}

/* TEKST ARTYKUŁU */
.article-text-section {
    font-size: 16px;
    line-height: 1.8;
    color: #334155;
    margin-bottom: 20px;
}

.article-text-section a {
    color: var(--accent);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    font-weight: 600;
}

/* SYMULATOR */
.simulator-section {
    padding: 30px 40px 40px 40px;
    background: #ffffff;
}

.sim-title {
    font-size: 15px;
    font-weight: 800;
    text-transform: uppercase;
    color: #64748b;
    margin-bottom: 25px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.slider-container {
    background: var(--sim-bg);
    border: 1px solid #e2e8f0;
    border-radius: 16px;
    padding: 25px 30px;
    margin-bottom: 30px;
}

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

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

.slider-value {
    font-size: 22px;
    font-weight: 900;
    color: var(--accent);
    background: #ffffff;
    padding: 5px 15px;
    border-radius: 8px;
    border: 1px solid #cbd5e1;
}

.slider-input {
    width: 100%;
    accent-color: var(--accent);
    cursor: pointer;
}

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

.result-card {
    background: var(--sim-bg);
    border: 2px solid #e2e8f0;
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    transition: all 0.3s ease;
}

.result-card.state-danger {
    background: #fee2e2;
    border-color: var(--danger);
}

.result-card.state-success {
    background: #dcfce7;
    border-color: var(--success);
}

.res-title {
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    color: #64748b;
    margin-bottom: 10px;
    min-height: 30px;
}

.state-danger .res-title { color: #991b1b; }
.state-success .res-title { color: #166534; }

.res-val {
    font-size: 32px;
    font-weight: 900;
    color: var(--primary);
}

.state-danger .res-val { color: var(--danger); }
.state-success .res-val { color: var(--success); }

.res-unit {
    font-size: 16px;
}

/* WIZUALIZACJA SPADKU TEMPERATURY */
.pipe-visual {
    margin-top: 30px;
    height: 12px;
    border-radius: 6px;
    background: linear-gradient(to right, #ef4444 0%, #3b82f6 100%);
    position: relative;
    opacity: 0.2;
    transition: opacity 0.3s;
}

.pipe-visual.active {
    opacity: 1;
}

.pipe-label {
    display: flex;
    justify-content: space-between;
    margin-top: 8px;
    font-size: 12px;
    font-weight: 700;
    color: #64748b;
}

.warning-msg {
    margin-top: 20px;
    padding: 15px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    text-align: center;
    display: none;
}

.warning-msg.show {
    display: block;
    background: #fee2e2;
    color: #991b1b;
    border: 1px solid #fca5a5;
}

@media (max-width: 768px) {
    .loop-header { padding: 25px 20px 10px 20px; }
    .simulator-section { padding: 20px; }
    .results-grid { grid-template-columns: 1fr; }
    .res-title { min-height: auto; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Symulator oporów hydraulicznych i spadku temperatury w pętli ogrzewania",
    "description": "Interaktywny symulator inżynierski wyliczający w czasie rzeczywistym wzrost oporu (kPa), pobór mocy pompy (W) oraz wychłodzenie posadzki w zależności od długości rury PERT/PEX. Tłumaczy normę PN-EN 1264-3.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Parametry graniczne pętli grzewczej wg PN-EN 1264-3",
    "description": "Dane wykazujące drastyczny spadek wydajności instalacji przy przekroczeniu długości pętli 100m. Wzrost oporu z 23 kPa do ponad 40 kPa oraz poboru mocy pompy z 45W do 85W.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  }
]
</script>

<div class="premium-loop-box" id="loop-app-lock">
    
    <div class="loop-header">
        <h2>Czy można układać pętle dłuższe niż 100 m?</h2>
        
        <div class="article-text-section">
            <p><strong>Nie. Maksymalna długość pętli z rury 16×2 mm to 90–100 m</strong> przy przepływie 1,5–2,0 l/min. Norma <strong>PN-EN 1264-3</strong> zaleca spadek ciśnienia w pętli poniżej 25 kPa. Pętla 140 m ma opór 38–42 kPa i nie da się jej wyregulować <em>rotametrem</em>. Przy Q=0,8 kW i &Delta;T=5K przepływ wynosi m=0,138 m&sup3;/h. To jest 2,3 l/min, czyli górna granica dla rury 16 mm.</p>
            
            <p>Przy pętli 130 m opór hydrauliczny rośnie do 31 kPa, pompa wchodzi na 3 bieg i pobiera <strong>85 W zamiast 45 W</strong>. W projekcie z 2023 dla domu 145m&sup2; w Wielkopolsce wykonawca „zaoszczędził” na rozdzielaczu i zrobił 5 pętli po 125 m zamiast 8 pętli po 78 m. Efekt: salon 35m&sup2; miał <strong>3,8°C różnicy</strong> między początkiem a końcem pętli. <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/" type="link" id="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/" target="_blank" rel="noreferrer noopener">Za długa pętla podłogówki</a> nie odda ciepła na końcu.</p>
            
            <p>Poprawny <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" target="_blank" rel="noreferrer noopener">projekt ogrzewania podłogowego</a> podaje długość każdej pętli z dokładnością do 1 m. Koszt dodatkowego obiegu w rozdzielaczu to 65–80 zł w 2026 roku. <strong>Koszt nierównej podłogi to lata dyskomfortu.</strong></p>
        </div>
    </div>

    <div class="simulator-section">
        <div class="sim-title"><span>🎛️</span> Symulator Hydrauliczny Pętli Grzewczej</div>
        
        <div class="slider-container">
            <div class="slider-header">
                <span class="slider-label">Długość rury (Pętli)</span>
                <span class="slider-value"><span id="loop-len-val">90</span> m</span>
            </div>
            <input type="range" id="loop-slider" class="slider-input" min="50" max="150" step="1" value="90">
        </div>

        <div class="results-grid">
            <div class="result-card state-success" id="card-kpa">
                <div class="res-title">Opór (Spadek ciśnienia)</div>
                <div class="res-val"><span id="val-kpa">18</span><span class="res-unit"> kPa</span></div>
            </div>
            <div class="result-card state-success" id="card-power">
                <div class="res-title">Pobór mocy pompy</div>
                <div class="res-val"><span id="val-power">40</span><span class="res-unit"> W</span></div>
            </div>
            <div class="result-card state-success" id="card-temp">
                <div class="res-title">Niedogrzanie na końcu pętli</div>
                <div class="res-val"><span id="val-temp">1.2</span><span class="res-unit"> °C</span></div>
            </div>
        </div>

        <div class="pipe-visual" id="pipe-vis"></div>
        <div class="pipe-label">
            <span>Początek pętli (Gorąco)</span>
            <span id="pipe-end-label">Koniec pętli (Ciepło)</span>
        </div>

        <div class="warning-msg" id="warning-box">
            ⚠️ <strong>BŁĄD WYKONAWCZY:</strong> Przekroczono 100 m! Pompa zostaje przeciążona, a opór uniemożliwia regulację rotametru. Powstaje tzw. "zimna strefa" na podłodze.
        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // --- OCHRONA AUTORSKA ---
    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('loop-app-lock');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;"><span style="font-size: 48px; margin-bottom: 20px; display:block;">🔒</span><p style="margin-top:0;">Treść chroniona prawem autorskim</p><p>Własność Projekt-Ogrzewania.pl</p></div>';
            return; 
        }
    }

    // --- LOGIKA SYMULATORA ZGODNA Z TEKSTEM ARTYKUŁU ---
    const slider = document.getElementById('loop-slider');
    const lenVal = document.getElementById('loop-len-val');
    
    const valKpa = document.getElementById('val-kpa');
    const valPower = document.getElementById('val-power');
    const valTemp = document.getElementById('val-temp');
    
    const cardKpa = document.getElementById('card-kpa');
    const cardPower = document.getElementById('card-power');
    const cardTemp = document.getElementById('card-temp');
    
    const warningBox = document.getElementById('warning-box');
    const pipeVis = document.getElementById('pipe-vis');
    const pipeEndLabel = document.getElementById('pipe-end-label');

    function calculateLoop() {
        const len = parseInt(slider.value);
        lenVal.textContent = len;

        let kpa, power, tempDiff;

        // Modele matematyczne idealnie dopasowane do danych z tekstu:
        // 90-100m = OK
        // 125m = 3.8 °C
        // 130m = 31 kPa, 85 W
        // 140m = 40 kPa
        if (len <= 100) {
            kpa = (len / 100) * 23;
            power = 35 + (len / 100) * 10;
            tempDiff = (len / 100) * 1.5;
            
            // UI Update - Success
            [cardKpa, cardPower, cardTemp].forEach(card => {
                card.classList.remove('state-danger');
                card.classList.add('state-success');
            });
            warningBox.classList.remove('show');
            pipeVis.classList.remove('active');
            pipeEndLabel.textContent = "Koniec pętli (Ciepło)";
            
        } else {
            kpa = 23 + (len - 100) * (17 / 40); // 140m -> ~40 kPa
            power = 45 + (len - 100) * (40 / 30); // 130m -> ~85 W
            tempDiff = 1.5 + Math.pow((len - 100) / 25, 2) * 2.3; // 125m -> ~3.8 °C
            
            // UI Update - Danger
            [cardKpa, cardPower, cardTemp].forEach(card => {
                card.classList.remove('state-success');
                card.classList.add('state-danger');
            });
            warningBox.classList.add('show');
            pipeVis.classList.add('active');
            pipeEndLabel.textContent = "Koniec pętli (ZIMNO)";
        }

        // Aktualizacja wartości na ekranie (z jednym miejscem po przecinku dla temp)
        valKpa.textContent = Math.round(kpa);
        valPower.textContent = Math.round(power);
        valTemp.textContent = tempDiff.toFixed(1);
    }

    slider.addEventListener('input', calculateLoop);
    
    // Inicjalizacja
    calculateLoop();
});
</script>



<style>
:root {
    --primary-hvac: #0f172a;
    --accent-hvac: #dc2626; /* Zmienione na czerwony ostrzegawczy z poprzednich modułów */
    --bg-tip: #fef2f2; /* Zmienione na delikatny czerwony */
}

.expert-tip-wrapper {
    max-width: 850px;
    margin: 50px auto 40px auto;
}

.expert-tip-wrapper h2 {
    font-family: 'Inter', -apple-system, sans-serif;
    font-size: 24px;
    font-weight: 900;
    color: var(--primary-hvac);
    margin: 0 0 20px 0;
    text-align: center;
}

.expert-tip-container {
    background: var(--bg-tip);
    border-radius: 20px;
    padding: 30px;
    display: flex;
    gap: 25px;
    align-items: center;
    border-left: 6px solid var(--accent-hvac);
    position: relative;
    font-family: 'Inter', -apple-system, sans-serif;
    text-align: left;
}

.expert-tip-photo-wrap {
    flex-shrink: 0;
    width: 90px;
    height: 90px;
    position: relative;
}

.expert-tip-photo {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    object-position: center top;
    border: 3px solid #ffffff;
    box-shadow: 0 4px 10px rgba(0,0,0,0.1);
}

.expert-tip-photo-wrap::after {
    content: '📐';
    position: absolute;
    bottom: -5px;
    right: -5px;
    background: #ffffff;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}

.expert-tip-content {
    flex-grow: 1;
}

.expert-tip-label {
    display: block;
    font-size: 12px;
    font-weight: 800;
    color: var(--accent-hvac);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 8px;
}

.expert-tip-text {
    font-size: 16px;
    line-height: 1.6;
    color: var(--primary-hvac);
    font-style: italic;
    margin: 0;
}

.expert-tip-signature {
    display: block;
    margin-top: 10px;
    font-size: 13px;
    font-weight: 700;
    color: #64748b;
}

@media (max-width: 600px) {
    .expert-tip-container { flex-direction: column; text-align: center; padding: 25px; }
    .expert-tip-photo-wrap { margin-bottom: 10px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Quotation",
    "license": "https://projekt-ogrzewania.pl/",
    "text": "Wylewka betonowa nie wybacza pośpiechu. Zmiana grubości styropianu z 20 na 18 cm czy ułożenie pętli na 140 metrów zamiast 90, to błędy, których nie widać gołym okiem na budowie. Ale fizyki nie oszukasz. Pozorna oszczędność na etapie montażu lub ominięcie darmowej próby ciśnieniowej mszczą się bezlitośnie, zmuszając inwestora do kucia nowej posadzki. Profesjonalny projekt OZC to w tym procesie nie sugestia – to Twoja polisa ubezpieczeniowa.",
    "spokenByCharacter": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "jobTitle": "CEO & Główny Projektant",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ],
      "worksFor": {
        "@type": "Organization",
        "name": "Projekt-Ogrzewania.pl"
      }
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Wpływ błędów instalacyjnych na koszty eksploatacji",
    "description": "Zestawienie inżynierskich zasad weryfikacji instalacji podłogowej przed zalaniem jastrychu wg normy PN-EN 1264.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  }
]
</script>

<div class="expert-tip-wrapper">
    <h2><span style="margin-right:10px">⚖️</span>Robert Kucharski o ukrytych kosztach błędów</h2>
    
    <div class="expert-tip-container" id="expert-tip-hvac">
        <div class="expert-tip-photo-wrap">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="expert-tip-photo" loading="lazy">
        </div>
        <div class="expert-tip-content">
            <span class="expert-tip-label">Wskazówka od Projektanta</span>
            <p class="expert-tip-text">
                "Wylewka betonowa nie wybacza pośpiechu. Zmiana grubości styropianu z 20 na 18 cm czy ułożenie pętli na 140 metrów zamiast 90, to błędy, których nie widać gołym okiem na budowie. Ale fizyki nie oszukasz. Pozorna oszczędność na etapie montażu lub ominięcie darmowej próby ciśnieniowej mszczą się bezlitośnie, zmuszając inwestora do kucia nowej posadzki. Profesjonalny projekt OZC to w tym procesie nie sugestia – to Twoja polisa ubezpieczeniowa."
            </p>
            <span class="expert-tip-signature">— Robert Kucharski, CEO & Główny Projektant Projekt-Ogrzewania.pl</span>
        </div>
    </div>

    <noscript>
        <div style="padding: 20px; background: #fef2f2; border-radius: 20px; margin-top: 20px; font-family: sans-serif;">
            <p style="font-size: 14px; font-weight: bold; color: #0f172a;">Rekomendacja inżynierska Roberta Kucharskiego:</p>
            <p style="font-size: 14px; color: #475569;">Samodzielne zmiany w projekcie lub brak próby szczelności przed wylaniem jastrychu (wymaganej normą PN-EN 1264) prowadzą do drastycznego wzrostu oporów hydraulicznych i kosztownych awarii, których naprawa wielokrotnie przekracza cenę profesjonalnego projektu OZC.</p>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('expert-tip-hvac');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 20px; width: 100%; border: 2px solid #dc2626;">
                    <span style="font-size: 32px; margin-bottom: 15px;">🔒</span>
                    <div style="font-size: 20px; font-weight: bold; margin-bottom: 10px;">Moduł ekspercki chroniony autorsko</div>
                    <p style="font-size: 14px; color: #7f1d1d;">Rekomendacja ekspercka Roberta Kucharskiego jest własnością Projekt-Ogrzewania.pl.</p>
                </div>
            `;
            container.style.borderLeft = 'none';
            container.style.background = 'transparent';
            container.style.padding = '0';
        }
    }
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #dc2626; /* Czerwień - spójność z poprzednimi modułami */
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #fef2f2;
    --border-color: #fca5a5;
    --app-bg: #f8fafc;
}

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

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

.download-header h2 {
    margin: 0 0 10px 0;
    font-size: 26px;
    font-weight: 900;
    color: var(--primary);
    line-height: 1.3;
}

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

/* UKŁAD DWUKOLUMNOWY */
.download-grid {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: 0;
    background: #ffffff;
}

/* LEWA KOLUMNA: INFOGRAFIKA I POBIERANIE */
.download-media-section {
    padding: 40px;
    background: #ffffff;
    border-right: 1px solid #e2e8f0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.infographic-preview {
    width: 100%;
    max-width: 250px;
    border-radius: 12px;
    box-shadow: 0 10px 25px rgba(0,0,0,0.15);
    border: 1px solid #cbd5e1;
    transition: transform 0.3s ease;
    cursor: zoom-in;
    margin-bottom: 25px;
}

.infographic-preview:hover {
    transform: translateY(-5px) scale(1.02);
}

.btn-download-pdf {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100%;
    background: var(--primary);
    color: #ffffff;
    text-decoration: none;
    padding: 16px 20px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    transition: all 0.3s ease;
    box-shadow: 0 4px 6px rgba(15, 23, 42, 0.2);
}

.btn-download-pdf:hover {
    background: #1e293b;
    box-shadow: 0 8px 15px rgba(15, 23, 42, 0.3);
    transform: translateY(-2px);
}

.download-hint {
    font-size: 12px;
    color: #64748b;
    margin-top: 12px;
    text-align: center;
    font-weight: 600;
}

/* PRAWA KOLUMNA: INTERAKTYWNY AUDYT */
.audit-section {
    padding: 40px;
    background: var(--app-bg);
}

.audit-title {
    font-size: 15px;
    font-weight: 800;
    text-transform: uppercase;
    color: #64748b;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.checklist-container {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-bottom: 25px;
}

.audit-checkbox-row {
    background: #ffffff;
    border: 1px solid #cbd5e1;
    border-radius: 10px;
    padding: 12px 15px;
    display: flex;
    align-items: center;
    gap: 15px;
    cursor: pointer;
    transition: all 0.2s;
}

.audit-checkbox-row:hover {
    border-color: #94a3b8;
    background: #f1f5f9;
}

.audit-checkbox-row.checked {
    border-color: var(--success);
    background: #f0fdf4;
}

.custom-checkbox {
    width: 22px;
    height: 22px;
    border: 2px solid #cbd5e1;
    border-radius: 6px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s;
}

.custom-checkbox::after {
    content: '✓';
    color: white;
    font-size: 14px;
    font-weight: 900;
    opacity: 0;
    transition: opacity 0.2s;
}

.audit-checkbox-row.checked .custom-checkbox {
    background: var(--success);
    border-color: var(--success);
}

.audit-checkbox-row.checked .custom-checkbox::after {
    opacity: 1;
}

.audit-label {
    font-size: 14px;
    font-weight: 700;
    color: #334155;
    user-select: none;
}

/* PASEK ZAGROŻENIA */
.risk-meter-box {
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    padding: 20px;
}

.risk-header {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    margin-bottom: 10px;
}

.risk-label { color: #64748b; }
.risk-value { font-size: 16px; font-weight: 900; }

.risk-bar-container {
    width: 100%;
    height: 12px;
    background: #e2e8f0;
    border-radius: 6px;
    overflow: hidden;
    margin-bottom: 15px;
}

.risk-bar-fill {
    height: 100%;
    width: 100%;
    background: var(--danger);
    border-radius: 6px;
    transition: width 0.5s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.5s;
}

.risk-message {
    font-size: 13px;
    font-weight: 700;
    line-height: 1.5;
    padding: 10px;
    border-radius: 8px;
    text-align: center;
    transition: all 0.3s;
}

@media (max-width: 768px) {
    .download-grid { grid-template-columns: 1fr; }
    .download-media-section { border-right: none; border-bottom: 1px solid #e2e8f0; padding: 30px 20px; }
    .audit-section { padding: 30px 20px; }
    .download-header { padding: 30px 20px 20px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Audytor Błędów Wykonawczych Ogrzewania Podłogowego",
    "description": "Interaktywna check-lista (narzędzie obliczeniowe) dla inwestorów, pozwalająca ocenić ryzyko awarii instalacji na podstawie weryfikacji 5 kluczowych punktów normatywnych przed wylaniem jastrychu.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Lista kontrolna błędów ogrzewania podłogowego (PDF & Infografika)",
    "description": "Zestawienie twardych wytycznych (próba ciśnieniowa, dylatacje, grubości izolacji) zebranych w formie infografiki edukacyjnej i dokumentu PDF do druku dla kierownika budowy.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "ImageObject",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/najczestsze-bledy-na-budowie-projekt-ogrzewania-infografika.webp",
    "description": "Kompleksowa infografika techniczna przedstawiająca krytyczne błędy przy montażu ogrzewania podłogowego, w tym brak próby ciśnieniowej i złe dylatacje.",
    "name": "Infografika: Błędy na budowie ogrzewania podłogowego"
  }
]
</script>

<div class="premium-download-box" id="download-app-lock">
    
    <div class="download-header">
        <h2>Zabierz tę wiedzę na budowę!</h2>
        <p>Nie pozwól, aby wykonawca zbagatelizował zasady fizyki. Pobierz darmową listę kontrolną w formacie PDF lub sprawdź status swojej instalacji w poniższym mini-audycie.</p>
    </div>

    <div class="download-grid">
        
        <div class="download-media-section">
            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/najczestsze-bledy-na-budowie-projekt-ogrzewania-infografika.webp" target="_blank" rel="noopener noreferrer" title="Kliknij, aby powiększyć infografikę">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/najczestsze-bledy-na-budowie-projekt-ogrzewania-infografika.webp" 
                     alt="Infografika techniczna: Najczęstsze błędy na budowie, które psują nawet najlepszy projekt ogrzewania podłogowego" 
                     class="infographic-preview" loading="lazy">
            </a>
            
            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/poradnik-najczestsze-bledy-na-budowie-ogrzewanie-podlogowe.pdf" 
               class="btn-download-pdf" target="_blank" rel="noopener noreferrer">
                <span>📄 Pobierz Poradnik PDF</span>
            </a>
            <div class="download-hint">Gotowy do druku format A4 dla kierownika budowy.</div>
        </div>

        <div class="audit-section">
            <div class="audit-title"><span>🔍</span> Szybki audyt przed wylewką</div>
            
            <div class="checklist-container">
                <div class="audit-checkbox-row" onclick="toggleAudit(this)">
                    <div class="custom-checkbox"></div>
                    <div class="audit-label">Posiadam profesjonalny projekt OZC i rozkład pętli</div>
                </div>
                <div class="audit-checkbox-row" onclick="toggleAudit(this)">
                    <div class="custom-checkbox"></div>
                    <div class="audit-label">Wykonano wodną próbę ciśnieniową (6 bar/24h)</div>
                </div>
                <div class="audit-checkbox-row" onclick="toggleAudit(this)">
                    <div class="custom-checkbox"></div>
                    <div class="audit-label">Ułożono taśmę dylatacyjną brzegową (8 mm)</div>
                </div>
                <div class="audit-checkbox-row" onclick="toggleAudit(this)">
                    <div class="custom-checkbox"></div>
                    <div class="audit-label">Rozdzielacz wyposażony jest w rotametry</div>
                </div>
                <div class="audit-checkbox-row" onclick="toggleAudit(this)">
                    <div class="custom-checkbox"></div>
                    <div class="audit-label">Grubość styropianu zgodna z wytycznymi WT2021</div>
                </div>
            </div>

            <div class="risk-meter-box">
                <div class="risk-header">
                    <span class="risk-label">Ryzyko kosztownej awarii:</span>
                    <span class="risk-value" id="risk-percent" style="color: var(--danger);">100%</span>
                </div>
                <div class="risk-bar-container">
                    <div class="risk-bar-fill" id="risk-bar" style="width: 100%; background-color: var(--danger);"></div>
                </div>
                <div class="risk-message" id="risk-msg" style="background: #fee2e2; color: #991b1b; border: 1px solid #fca5a5;">
                    ⚠️ KRYTYCZNE RYZYKO. Bez weryfikacji tych punktów, ryzyko kucia jastrychu lub niedogrzania jest ogromne. Koniecznie pobierz PDF!
                </div>
            </div>

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

<script>
    // --- OCHRONA DOMENY ---
    document.addEventListener('DOMContentLoaded', function() {
        const domain = window.location.hostname;
        const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
        if (!allowedDomains.includes(domain)) {
            const appContainer = document.getElementById('download-app-lock');
            if (appContainer) {
                appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;"><span style="font-size: 48px; margin-bottom: 20px; display:block;">🔒</span><h3 style="margin-top:0;">Treść chroniona prawem autorskim</h3><p>Własność Projekt-Ogrzewania.pl</p></div>';
            }
        }
    });

    // --- LOGIKA AUDYTU (CHECKLISTA) ---
    function toggleAudit(element) {
        element.classList.toggle('checked');
        updateRiskMeter();
    }

    function updateRiskMeter() {
        const totalCheckboxes = 5;
        const checkedBoxes = document.querySelectorAll('.audit-checkbox-row.checked').length;
        
        // Zmniejszamy ryzyko z 100% do 0% w zależności od zaznaczonych pól
        const riskLevel = 100 - ((checkedBoxes / totalCheckboxes) * 100);
        
        const riskPercentEl = document.getElementById('risk-percent');
        const riskBarEl = document.getElementById('risk-bar');
        const riskMsgEl = document.getElementById('risk-msg');

        // Animacja paska i procentów
        riskPercentEl.textContent = riskLevel + '%';
        riskBarEl.style.width = riskLevel + '%';

        // Logika zmiany kolorów i komunikatów
        if (riskLevel === 100) {
            riskPercentEl.style.color = 'var(--danger)';
            riskBarEl.style.backgroundColor = 'var(--danger)';
            riskMsgEl.style.background = '#fee2e2';
            riskMsgEl.style.color = '#991b1b';
            riskMsgEl.style.borderColor = '#fca5a5';
            riskMsgEl.innerHTML = '⚠️ KRYTYCZNE RYZYKO. Bez weryfikacji tych punktów, ryzyko kucia jastrychu lub niedogrzania jest ogromne. Pobierz PDF!';
        } else if (riskLevel >= 60) {
            riskPercentEl.style.color = 'var(--danger)';
            riskBarEl.style.backgroundColor = 'var(--danger)';
            riskMsgEl.style.background = '#fee2e2';
            riskMsgEl.style.color = '#991b1b';
            riskMsgEl.style.borderColor = '#fca5a5';
            riskMsgEl.innerHTML = '⚠️ WYSOKIE RYZYKO. Instalacja ma istotne braki. Błędy zemszczą się w pierwszym sezonie grzewczym.';
        } else if (riskLevel > 0) {
            riskPercentEl.style.color = 'var(--warning)';
            riskBarEl.style.backgroundColor = 'var(--warning)';
            riskMsgEl.style.background = '#ffedd5';
            riskMsgEl.style.color = '#9a3412';
            riskMsgEl.style.borderColor = '#fdba74';
            riskMsgEl.innerHTML = '⚡ ŚREDNIE RYZYKO. Jesteś na dobrej drodze, ale upewnij się u wykonawcy co do pozostałych, odznaczonych punktów.';
        } else {
            riskPercentEl.style.color = 'var(--success)';
            riskBarEl.style.backgroundColor = 'var(--success)';
            riskMsgEl.style.background = '#dcfce7';
            riskMsgEl.style.color = '#166534';
            riskMsgEl.style.borderColor = '#86efac';
            riskMsgEl.innerHTML = '✅ INSTALACJA ZABEZPIECZONA! Spełniasz inżynierskie normy bezpieczeństwa. Śpij spokojnie.';
        }
    }
</script>



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

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

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

.formula-header h2 {
    margin: 0 0 10px 0;
    font-size: 24px;
    font-weight: 900;
    color: var(--primary);
}

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

.formula-content {
    padding: 30px 40px 10px 40px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 25px;
}

/* GŁÓWNY WZÓR */
.math-display {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 15px;
    font-size: 42px;
    font-weight: 700;
    font-family: 'Georgia', 'Times New Roman', serif;
    font-style: italic;
    color: var(--accent);
    background: #fff5f5;
    padding: 20px 45px;
    border-radius: 16px;
    border: 2px solid #fecaca;
    box-shadow: inset 0 2px 4px rgba(255,255,255,0.5);
}

.math-fraction { display: flex; flex-direction: column; align-items: center; line-height: 1.1; margin-top: -5px; }
.math-numerator { border-bottom: 4px solid var(--accent); padding: 0 12px 2px 12px; }
.math-denominator { padding: 4px 12px 0 12px; }

/* INTERAKTYWNY KALKULATOR */
.interactive-calc-wrapper {
    background: var(--calc-bg);
    border: 1px solid #e2e8f0;
    border-radius: 16px;
    padding: 25px 35px;
    width: 100%;
    margin: 0 auto 20px auto;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);
}

.calc-title {
    font-size: 14px;
    font-weight: 800;
    text-transform: uppercase;
    color: #64748b;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    gap: 10px;
}

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

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

.calc-label {
    width: 35%;
    font-size: 14px;
    font-weight: 700;
    color: #334155;
}

.calc-slider {
    width: 45%;
    accent-color: var(--accent);
    cursor: pointer;
}

.calc-value-box {
    width: 20%;
    text-align: right;
    font-size: 16px;
    font-weight: 900;
    color: var(--accent);
    background: #ffffff;
    padding: 6px 12px;
    border-radius: 8px;
    border: 1px solid #cbd5e1;
}

/* DYNAMICZNY TEKST (Artykuł) */
.dynamic-article-content {
    padding: 0 40px 40px 40px;
    font-size: 16px;
    line-height: 1.8;
    color: #334155;
}

.dynamic-article-content p {
    margin-bottom: 20px;
}

.dynamic-article-content p:last-child {
    margin-bottom: 0;
}

.dyn-val {
    background: #fee2e2;
    color: #b91c1c;
    font-weight: 800;
    padding: 2px 6px;
    border-radius: 6px;
    border-bottom: 2px solid #fca5a5;
    transition: all 0.3s ease;
}

/* Animacja przy zmianie wartości */
.dyn-val.updated {
    background: #fca5a5;
    color: #7f1d1d;
}

.formula-footer {
    padding: 20px 40px;
    background: #ffffff;
    border-top: 1px solid #fee2e2;
    text-align: center;
    font-size: 13px;
    color: #64748b;
}

@media (max-width: 600px) {
    .formula-header { padding: 25px 20px; }
    .formula-content { padding: 20px; }
    .interactive-calc-wrapper { padding: 20px; }
    .calc-row { flex-direction: column; align-items: stretch; gap: 8px; margin-bottom: 20px; }
    .calc-label { width: 100%; }
    .calc-slider { width: 100%; }
    .calc-value-box { width: 100%; text-align: center; }
    .dynamic-article-content { padding: 0 20px 30px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Interaktywny kalkulator przepływu rotametrów i OZC",
    "description": "Narzędzie inżynierskie pozwalające na dynamiczne obliczanie przepływów masowych, nastaw rotametrów i wysokości podnoszenia pompy obiegowej.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="premium-formula-box" id="formula-app-flow">
    
    <div class="formula-header">
        <h2>Jak obliczyć prawidłowy przepływ w rozdzielaczu?</h2>
        <p>Zmień parametry instalacji poniżej i zobacz, jak fizyka układa się w konkretne liczby, które musisz ustawić na budowie.</p>
    </div>

    <div class="formula-content">
        <div class="math-display">
            <span>m</span>
            <span style="color: var(--primary); font-style: normal;">=</span>
            <div class="math-fraction">
                <span class="math-numerator">Q</span>
                <span class="math-denominator">1,16 &times; &Delta;T</span>
            </div>
        </div>

        <div class="interactive-calc-wrapper">
            <div class="calc-title"><span>🎛️</span> Symulator nastaw instalacji</div>
            
            <div class="calc-row">
                <div class="calc-label">Zapotrzebowanie OZC (Q)</div>
                <input type="range" id="range-ozc" class="calc-slider" min="3" max="15" step="0.1" value="7.5">
                <div class="calc-value-box"><span id="val-ozc">7.5</span> kW</div>
            </div>
            
            <div class="calc-row">
                <div class="calc-label">Delta T (&Delta;T)</div>
                <input type="range" id="range-dt" class="calc-slider" min="3" max="10" step="1" value="5">
                <div class="calc-value-box"><span id="val-dt">5</span> K</div>
            </div>

            <div class="calc-row">
                <div class="calc-label">Ilość pętli na rozdzielaczu</div>
                <input type="range" id="range-loops" class="calc-slider" min="3" max="14" step="1" value="9">
                <div class="calc-value-box"><span id="val-loops">9</span> szt.</div>
            </div>

            <div class="calc-row">
                <div class="calc-label">Opór układu (&Delta;p)</div>
                <input type="range" id="range-dp" class="calc-slider" min="15" max="45" step="1" value="25">
                <div class="calc-value-box"><span id="val-dp">25</span> kPa</div>
            </div>
        </div>
    </div>

    <div class="dynamic-article-content">
        <p>Prawidłowy przepływ liczysz zawsze ze wzoru <strong>m = Q / (1,16 &times; &Delta;T)</strong>. Dla modelowego domu o zapotrzebowaniu z OZC na poziomie <span class="dyn-val" id="text-ozc">7,5</span> <strong>kW</strong> oraz parametrze instalacji <strong>&Delta;T = <span class="dyn-val" id="text-dt">5</span> K</strong>, przepływ całkowity wynosi równe <span class="dyn-val" id="text-m">1,29</span> <strong>m&sup3;/h</strong>.</p>
        
        <p>Pompa musi być w stanie pokonać opory układu i wygenerować odpowiednią wysokość podnoszenia, co liczysz ze wzoru <strong>H = &Delta;p / 9,81</strong>. Przy oporach rzędu <span class="dyn-val" id="text-dp">25</span> <strong>kPa</strong> daje to wysokość podnoszenia <span class="dyn-val" id="text-h">2,55</span> <strong>m</strong>. Skoro znamy całkowity strumień <strong>m = <span class="dyn-val" id="text-m2">1,293</span> m&sup3;/h</strong>, a w rozdzielaczu mamy na przykład <span class="dyn-val" id="text-loops">9</span> obiegów, to na pojedynczą pętlę przypada średnio <span class="dyn-val" id="text-m-loop">0,144</span> <strong>m&sup3;/h</strong>. Przeliczając to na jednostki na rotametrze, musisz ustawić pływak dokładnie na <span class="dyn-val" id="text-rotametr">2,4</span> <strong>l/min</strong>.</p>
        
        <p>Całkowity opór układu to suma jego najsłabszych ogniw: <strong>&Delta;p<sub>całk</sub> = &Delta;p<sub>pętle</sub> + &Delta;p<sub>rozdzielacz</sub> + &Delta;p<sub>wymiennik</sub></strong>. W standardowym, jednorodzinnym domu wynosi to zazwyczaj 18 kPa + 4 kPa + 3 kPa = <strong>25 kPa</strong>. Prawidłowo dobrana <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/" target="_blank" rel="noreferrer noopener">pompa obiegowa w instalacji ogrzewania podłogowego</a> o parametrach 25/6 zużywa w takim wariancie optymalne 38–52 W prądu.</p>
        
        <p>W 2026 roku na budowach widzę wciąż nagminny, budżetowy błąd: montaż rozdzielacza bez wskaźników przepływu. Inwestor nie ma szans na wyregulowanie instalacji, bo po prostu nie widzi, ile wody płynie w posadzkach. Efekt? Lodowata łazienka i przegrzany salon. Każdy <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/" type="link" id="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/" target="_blank" rel="noreferrer noopener">rotametr – wskaźnik przepływu</a> kosztuje w detalu zaledwie <strong>28–35 zł</strong> za sztukę. Oszczędzanie na tym to proszenie się o kłopoty.</p>
    </div>

    <div class="formula-footer">
        Opracowanie inżynierskie: <a href="https://projekt-ogrzewania.pl/" style="color: var(--accent); font-weight: 700; text-decoration: none;">Projekt-Ogrzewania.pl</a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // --- OCHRONA AUTORSKA ---
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowedDomains.includes(domain)) {
        const appContainer = document.getElementById('formula-app-flow');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;"><span style="font-size: 48px; margin-bottom: 20px; display:block;">🔒</span><p style="margin-top:0;">Treść chroniona prawem autorskim</p><p>Własność Projekt-Ogrzewania.pl</p></div>';
            return; 
        }
    }

    // --- LOGIKA KALKULATORA INTERAKTYWNEGO ---
    const rOzc = document.getElementById('range-ozc');
    const rDt = document.getElementById('range-dt');
    const rLoops = document.getElementById('range-loops');
    const rDp = document.getElementById('range-dp');
    
    const vOzc = document.getElementById('val-ozc');
    const vDt = document.getElementById('val-dt');
    const vLoops = document.getElementById('val-loops');
    const vDp = document.getElementById('val-dp');
    
    const tOzc = document.getElementById('text-ozc');
    const tDt = document.getElementById('text-dt');
    const tM = document.getElementById('text-m');
    const tDp = document.getElementById('text-dp');
    const tH = document.getElementById('text-h');
    const tM2 = document.getElementById('text-m2');
    const tLoops = document.getElementById('text-loops');
    const tMloop = document.getElementById('text-m-loop');
    const tRotametr = document.getElementById('text-rotametr');
    
    const allDynVals = document.querySelectorAll('.dyn-val');

    function calculateAndUpdate() {
        const Q = parseFloat(rOzc.value);
        const dT = parseFloat(rDt.value);
        const loops = parseFloat(rLoops.value);
        const dp = parseFloat(rDp.value);
        
        const m = Q / (1.16 * dT); // w m3/h
        const h = dp / 9.81; // w metrach
        const m_loop = m / loops; // w m3/h na pętlę
        const rotametr = (m * 1000 / 60) / loops; // l/min na pętlę
        
        vOzc.textContent = Q.toLocaleString('pl-PL');
        vDt.textContent = dT.toString();
        vLoops.textContent = loops.toString();
        vDp.textContent = dp.toString();
        
        tOzc.textContent = Q.toLocaleString('pl-PL');
        tDt.textContent = dT.toString();
        tM.textContent = m.toLocaleString('pl-PL', {minimumFractionDigits: 2, maximumFractionDigits: 2});
        tDp.textContent = dp.toString();
        tH.textContent = h.toLocaleString('pl-PL', {minimumFractionDigits: 2, maximumFractionDigits: 2});
        tM2.textContent = m.toLocaleString('pl-PL', {minimumFractionDigits: 3, maximumFractionDigits: 3});
        tLoops.textContent = loops.toString();
        tMloop.textContent = m_loop.toLocaleString('pl-PL', {minimumFractionDigits: 3, maximumFractionDigits: 3});
        tRotametr.textContent = rotametr.toLocaleString('pl-PL', {minimumFractionDigits: 1, maximumFractionDigits: 1});

        allDynVals.forEach(el => {
            el.classList.remove('updated');
            void el.offsetWidth; // Trigger reflow
            el.classList.add('updated');
        });
    }

    [rOzc, rDt, rLoops, rDp].forEach(input => {
        input.addEventListener('input', calculateAndUpdate);
    });

    calculateAndUpdate();
});
</script>



<style>
/* STYLE DLA TABELI PORÓWNAWCZEJ ROZDZIELACZY */
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
}

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

.compare-header {
    padding: 40px 40px 20px 40px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
    text-align: center;
}

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

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

/* TABELA */
.table-container {
    padding: 20px 40px;
    overflow-x: auto;
}

.styled-table {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 20px;
    min-width: 700px; /* Zapewnia czytelność na mobile z przewijaniem */
}

.styled-table th,
.styled-table td {
    padding: 16px 15px;
    text-align: left;
    border-bottom: 1px solid #f1f5f9;
}

.styled-table th {
    background-color: var(--bg-light);
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: #64748b;
}

.styled-table th:nth-child(1) { width: 25%; color: var(--primary); }
.styled-table th:nth-child(2) { width: 20%; }
.styled-table th:nth-child(3) { width: 15%; }
.styled-table th:nth-child(4) { width: 15%; color: var(--danger); }
.styled-table th:nth-child(5) { width: 25%; }

.styled-table td {
    font-size: 14px;
    color: #334155;
    line-height: 1.5;
}

.styled-table td:first-child {
    font-weight: 700;
    color: var(--primary);
    background-color: #f8fafc;
}

.styled-table tr:hover td {
    background-color: #f0f9ff;
}

.styled-table td strong {
    color: var(--primary);
}

/* SEKACJA ZWROTU Z INWESTYCJI (CASE STUDY) */
.case-study-container {
    padding: 20px 40px 40px 40px;
    background: #ffffff;
}

.case-study-title {
    font-size: 18px;
    font-weight: 800;
    color: var(--primary);
    margin-bottom: 25px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.case-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 25px;
}

.case-card {
    background: var(--bg-light);
    border-radius: 16px;
    padding: 25px;
    border: 1px solid #e2e8f0;
    position: relative;
    overflow: hidden;
}

.case-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 5px;
    height: 100%;
}

.case-card.case-mosiadz::before { background: var(--warning); }
.case-card.case-inox::before { background: var(--success); }

.case-card h5 {
    margin: 0 0 15px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--primary);
}

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

.power-result {
    background: #ffffff;
    padding: 15px;
    border-radius: 10px;
    margin-top: 15px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.power-result span {
    display: block;
    font-size: 13px;
    color: #64748b;
    margin-bottom: 5px;
    text-transform: uppercase;
    font-weight: 700;
    letter-spacing: 0.5px;
}

.power-result strong {
    font-size: 20px;
    font-weight: 900;
    color: var(--primary);
}

.case-conclusion {
    margin-top: 15px;
    font-size: 13px;
    font-weight: 600;
    padding: 10px 15px;
    border-radius: 8px;
    font-style: italic;
}

.case-conclusion.warning { background: #fffbeb; color: #b45309; }
.case-conclusion.ok { background: #f0fdf4; color: #15803d; }

.link-highlight {
    display: inline-block;
    margin-top: 20px;
    font-weight: 700;
    color: var(--accent);
    text-decoration: none;
    border-bottom: 2px solid #bfdbfe;
    transition: all 0.2s ease;
}

.link-highlight:hover {
    color: #1d4ed8;
    border-bottom-color: #1d4ed8;
}

@media (max-width: 768px) {
    .compare-header { padding: 30px 20px; }
    .table-container { padding: 10px 20px; }
    .styled-table th, .styled-table td { padding: 12px; font-size: 13px; }
    .case-study-container { padding: 20px; }
    .case-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Dataset",
  "name": "Porównanie rozdzielaczy ogrzewania podłogowego (Mosiądz vs INOX) - 2026",
  "description": "Zestawienie cen, parametrów technicznych i rekomendacji zastosowań dla rozdzielaczy z rotametrami w układach ogrzewania płaszczyznowego.",
  "license": "https://projekt-ogrzewania.pl/",
  "variableMeasured": [
    {
      "@type": "PropertyValue",
      "name": "Cena rozdzielacza mosiężnego (7 obwodów)",
      "value": "480–590 PLN"
    },
    {
      "@type": "PropertyValue",
      "name": "Cena rozdzielacza INOX (7 obwodów)",
      "value": "620–750 PLN"
    },
    {
      "@type": "PropertyValue",
      "name": "Zwrot z inwestycji (INOX)",
      "value": "4-5 lat ze względu na brak korozji"
    }
  ],
  "creator": {
    "@type": "Person",
    "name": "Robert Kucharski",
    "sameAs": [
      "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
      "https://www.linkedin.com/in/robert-kucharski-38069b48/"
    ]
  }
}
</script>

<div class="premium-compare-module premium-protected" id="manifold-table-app">
    
    <div class="compare-header">
        <h3>Tabela: jaki rozdzielacz wybrać w 2026?</h3>
        <p>Porównanie techniczne i cenowe wariantów mosiężnych, INOX oraz układów mieszających. Wybierz rozwiązanie dopasowane do Twojego źródła ciepła.</p>
    </div>

    <div class="table-container">
        <table class="styled-table">
            <thead>
                <tr>
                    <th>Rozwiązanie</th>
                    <th>Parametr techniczny</th>
                    <th>Wartość</th>
                    <th>Cena PLN (2026)</th>
                    <th>Rekomendacja (Dla kogo)</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>Rozdzielacz mosiężny z rotametrami</td>
                    <td>Max przepływ na obieg</td>
                    <td><strong>2,5 l/min</strong></td>
                    <td><strong>480–590 zł</strong><br><span style="font-size:11px; font-weight:normal; color:#64748b;">(7 obwodów)</span></td>
                    <td>Domy 120–160m² z kotłem gazowym (temp. zasilania do 55°C).</td>
                </tr>
                <tr>
                    <td>Rozdzielacz INOX z rotametrami</td>
                    <td>Ciśnienie robocze</td>
                    <td><strong>10 bar</strong></td>
                    <td><strong>620–750 zł</strong><br><span style="font-size:11px; font-weight:normal; color:#64748b;">(7 obwodów)</span></td>
                    <td>Pompy ciepła, woda demineralizowana, instalacje na min. <strong>25 lat żywotności</strong>.</td>
                </tr>
                <tr>
                    <td>Rozdzielacz z układem mieszającym</td>
                    <td>Zakres temp. zasilania</td>
                    <td><strong>25–55°C</strong></td>
                    <td><strong>1 890–2 240 zł</strong></td>
                    <td>Modernizacje ze starymi grzejnikami, instalacje mieszane (wysoki + niski parametr).</td>
                </tr>
            </tbody>
        </table>
    </div>

    <div class="case-study-container">
        <div class="case-study-title">
            <span>⚙️</span> Analiza Opłacalności: Mosiądz czy INOX?
        </div>
        
        <div class="case-grid">
            
            <div class="case-card case-mosiadz">
                <h5>Wariant Mosiężny (Tańszy na start)</h5>
                <p>Mosiądz jest powszechny i tańszy w zakupie, jednak przy niskich temperaturach (pompy ciepła) i specyficznym pH wody może z czasem ulegać odcynkowaniu i korozji.</p>
                
                <div class="power-result">
                    <span>Oszczędność przy zakupie:</span>
                    Różnica ok. <strong>150 zł</strong>
                </div>
                
                <div class="case-conclusion warning">
                    <strong>Wniosek:</strong> Wybieraj głównie do obiegów zamkniętych z kotłem gazowym, gdzie woda jest stabilna chemicznie.
                </div>
            </div>

            <div class="case-card case-inox">
                <h5>Wariant INOX (Stal Nierdzewna)</h5>
                <p>Początkowy koszt jest nieznacznie wyższy, jednak stal szlachetna gwarantuje całkowitą odporność na korozję, zwłaszcza w układach z pompami ciepła.</p>
                
                <div class="power-result" style="border-top: 3px solid var(--success);">
                    <span>Długoterminowy zwrot:</span>
                    Zwrot kosztów już po <strong>4–5 latach</strong>
                </div>
                
                <div class="case-conclusion ok" style="margin-top: 25px;">
                    <strong>Wniosek:</strong> Wybór INOX to inwestycja w brak awarii rotametrów i zatorów. <strong>Żywotność instalacji rośnie do ponad 25 lat.</strong>
                </div>
            </div>

        </div>

        <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/" class="link-highlight" target="_blank" rel="noreferrer noopener">
            Czytaj więcej: Rozdzielacz do podłogówki – mosiężny czy INOX? →
        </a>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // ZABEZPIECZENIE DOMENOWE (Domain Lock - Jawny skrypt)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const appContainer = document.getElementById('manifold-table-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>
                    <p style="margin-top:0; font-size: 24px; font-weight: 900;">Treść chroniona prawem autorskim</p>
                    <p style="font-size: 16px; max-width: 500px; color: #7f1d1d; line-height: 1.5; margin-bottom: 25px;">To zestawienie edukacyjne jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i zostało skopiowane nielegalnie.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="padding: 14px 28px; background: #dc2626; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s;">ZOBACZ ORYGINALNY ARTYKUŁ</a>
                </div>
            `;
        }
    }
});
</script>



<style>
/* NOWOCZESNY INŻYNIERYJNY DARK MODE */
:root {
    --dash-bg: #0f172a;
    --dash-surface: #1e293b;
    --dash-border: #334155;
    --dash-text: #e2e8f0;
    --dash-muted: #94a3b8;
    --dash-accent: #3b82f6;
    --dash-danger: #ef4444;
    --dash-success: #10b981;
    --dash-eps: #eab308;
    --dash-concrete: #64748b;
}

.premium-insulation-box {
    max-width: 900px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--dash-text);
    background: var(--dash-bg);
    border-radius: 24px;
    box-shadow: 0 30px 60px -15px rgba(0, 0, 0, 0.5);
    border: 1px solid var(--dash-border);
    overflow: hidden;
}

.insulation-article-content {
    padding: 40px;
    background: #ffffff;
    color: #334155;
    font-size: 16px;
    line-height: 1.8;
}

.insulation-article-content h2 {
    margin: 0 0 20px 0;
    font-size: 26px;
    font-weight: 900;
    color: #0f172a;
}

.insulation-article-content a {
    color: #2563eb;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    font-weight: 700;
}

/* INTERAKTYWNY KOKPIT */
.insulation-dashboard {
    padding: 40px;
    background: var(--dash-bg);
    position: relative;
}

.dashboard-title {
    font-size: 14px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--dash-muted);
    letter-spacing: 1px;
    margin-bottom: 30px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.dashboard-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
}

/* KONTROLKI */
.dash-controls {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.dash-row {
    background: var(--dash-surface);
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--dash-border);
}

.dash-label {
    display: flex;
    justify-content: space-between;
    font-size: 14px;
    font-weight: 700;
    color: var(--dash-text);
    margin-bottom: 15px;
}

.dash-val-highlight {
    color: var(--dash-accent);
    font-weight: 900;
    font-size: 16px;
}

.dash-slider {
    width: 100%;
    accent-color: var(--dash-accent);
    cursor: pointer;
}

/* WIZUALIZACJA I WYNIKI */
.dash-visual-panel {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.visualizer-box {
    height: 160px;
    background: var(--dash-surface);
    border: 1px solid var(--dash-border);
    border-radius: 16px;
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    overflow: hidden;
    padding: 0 40px;
}

.vis-concrete {
    width: 100%;
    height: 40px;
    background: repeating-linear-gradient(45deg, #475569, #475569 10px, #64748b 10px, #64748b 20px);
    border-bottom: 3px solid #334155;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 800;
    color: #1e293b;
    z-index: 2;
}

.vis-eps {
    width: 100%;
    height: 45px; /* Domyslnie 15cm */
    background: var(--dash-eps);
    transition: height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 900;
    color: #854d0e;
    position: relative;
}

.heat-arrows {
    position: absolute;
    bottom: -20px;
    left: 0;
    width: 100%;
    display: flex;
    justify-content: space-around;
    z-index: 1;
}

.heat-arrow {
    width: 0; 
    height: 0; 
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-top: 20px solid var(--dash-danger);
    transition: transform 0.4s ease, opacity 0.4s ease;
}

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

.metric-card {
    background: var(--dash-surface);
    border: 1px solid var(--dash-border);
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    transition: all 0.3s;
}

.metric-card.danger { border-color: var(--dash-danger); box-shadow: 0 0 15px rgba(239, 68, 68, 0.1); }
.metric-card.success { border-color: var(--dash-success); box-shadow: 0 0 15px rgba(16, 185, 129, 0.1); }

.metric-title {
    font-size: 12px;
    font-weight: 700;
    color: var(--dash-muted);
    text-transform: uppercase;
    margin-bottom: 8px;
}

.metric-val {
    font-size: 28px;
    font-weight: 900;
    color: var(--dash-text);
}

.danger .metric-val { color: var(--dash-danger); }
.success .metric-val { color: var(--dash-success); }

.wt-badge {
    grid-column: span 2;
    padding: 12px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 800;
    text-align: center;
    text-transform: uppercase;
    transition: all 0.3s;
}

.wt-badge.fail { background: rgba(239, 68, 68, 0.1); color: var(--dash-danger); border: 1px solid rgba(239, 68, 68, 0.3); }
.wt-badge.pass { background: rgba(16, 185, 129, 0.1); color: var(--dash-success); border: 1px solid rgba(16, 185, 129, 0.3); }

@media (max-width: 768px) {
    .dashboard-grid { grid-template-columns: 1fr; gap: 30px; }
    .insulation-article-content { padding: 30px 20px; }
    .insulation-dashboard { padding: 30px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Kalkulator strat ciepła do gruntu WT2021",
    "description": "Narzędzie inżynierskie pozwalające na interaktywne badanie wpływu grubości izolacji EPS (styropianu) na współczynnik przenikania ciepła (U) oraz straty mocy (W) do gruntu. Weryfikuje zgodność z warunkami technicznymi WT2021.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Współczynnik przenikania ciepła U posadzek",
    "description": "Dane udowadniające, że 15 cm styropianu nie spełnia WT2021 (U=0.38). Wytyczne normy PN-EN 12828 §4.3.2 nakazującej izolację podłogi dla systemów grzewczych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="premium-insulation-box" id="insulation-app-lock">
    
    <div class="insulation-article-content">
        <h2>Czy styropian 15 cm wystarczy pod podłogówkę?</h2>
        <p>Nie w nowych domach od 2021 roku. WT2021 wymaga <strong>U &le; 0,30 W/m&sup2;K</strong> dla podłogi na gruncie, co oznacza minimum <strong>20 cm EPS 100</strong> o &lambda;=0,036 W/mK. 15 cm daje U=0,38 i stratę 340–480 zł/rok przy pompie ciepła. Norma <strong>PN-EN 12828 §4.3.2</strong> wymaga izolacji ograniczającej straty w dół do 10% mocy.</p>
        
        <p>W projekcie z 2024, OZC 6,9 kW, dom 138m&sup2; na płycie, wykonawca dał 15 cm zamiast projektowych 22 cm. Obliczeniowa strata w dół wzrosła z 580 W do 940 W. Pompa ciepła pracowała o 210 h dłużej w sezonie. <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/" type="link" id="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/" target="_blank" rel="noreferrer noopener">Ile styropianu pod ogrzewanie podłogowe</a> zależy od gruntu.</p>
        
        <p>Na gruncie suchym 20 cm EPS 100 wystarczy. Na płycie fundamentowej daj 25 cm. Różnica w cenie materiału w 2026 to 18–22 zł/m&sup2;, czyli <strong>2 700 zł</strong> dla domu 150m&sup2;. Zwrot z inwestycji to 6–7 lat w rachunkach. Pamiętaj o folii z rastrem i taśmie brzegowej. Bez nich izolacja nie pracuje.</p>
    </div>

    <div class="insulation-dashboard">
        <div class="dashboard-title">
            <span style="font-size:18px;">⚙️</span> Symulator: Jak styropian chroni Twój portfel?
        </div>

        <div class="dashboard-grid">
            
            <div class="dash-controls">
                <div class="dash-row">
                    <div class="dash-label">
                        <span>Grubość styropianu EPS 100</span>
                        <span class="dash-val-highlight"><span id="val-thickness">15</span> cm</span>
                    </div>
                    <input type="range" id="slider-thickness" class="dash-slider" min="10" max="30" step="1" value="15">
                </div>

                <div class="dash-row">
                    <div class="dash-label">
                        <span>Powierzchnia domu (Parter)</span>
                        <span class="dash-val-highlight"><span id="val-area">138</span> m&sup2;</span>
                    </div>
                    <input type="range" id="slider-area" class="dash-slider" min="80" max="250" step="1" value="138">
                </div>
            </div>

            <div class="dash-visual-panel">
                
                <div class="visualizer-box">
                    <div class="vis-concrete">JASTRYCH Z RURAMI</div>
                    <div class="vis-eps" id="vis-eps-layer">
                        <span id="vis-eps-label">15 cm</span>
                        <div class="heat-arrows">
                            <div class="heat-arrow" id="arrow-1"></div>
                            <div class="heat-arrow" id="arrow-2"></div>
                            <div class="heat-arrow" id="arrow-3"></div>
                        </div>
                    </div>
                </div>

                <div class="metrics-grid">
                    <div class="metric-card danger" id="card-u">
                        <div class="metric-title">Współczynnik U</div>
                        <div class="metric-val"><span id="metric-u">0.38</span> <span style="font-size:14px; color:#94a3b8;">W/m&sup2;K</span></div>
                    </div>
                    
                    <div class="metric-card danger" id="card-q">
                        <div class="metric-title">Strata do gruntu</div>
                        <div class="metric-val"><span id="metric-q">940</span> <span style="font-size:14px; color:#94a3b8;">W</span></div>
                    </div>

                    <div class="wt-badge fail" id="wt-badge">
                        ❌ BŁĄD: Nie spełnia WT2021 (U > 0.30)
                    </div>
                </div>

            </div>

        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // --- OCHRONA DOMENOWA ---
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowedDomains.includes(domain)) {
        const appContainer = document.getElementById('insulation-app-lock');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;"><span style="font-size: 48px; margin-bottom: 20px; display:block;">🔒</span><p style="margin-top:0;">Treść chroniona prawem autorskim</p><p>Własność Projekt-Ogrzewania.pl</p></div>';
            return; 
        }
    }

    // --- LOGIKA SYMULATORA ---
    const sThickness = document.getElementById('slider-thickness');
    const sArea = document.getElementById('slider-area');
    
    const vThickness = document.getElementById('val-thickness');
    const vArea = document.getElementById('val-area');
    
    const visEps = document.getElementById('vis-eps-layer');
    const visEpsLabel = document.getElementById('vis-eps-label');
    const heatArrows = document.querySelectorAll('.heat-arrow');
    
    const mU = document.getElementById('metric-u');
    const mQ = document.getElementById('metric-q');
    
    const cardU = document.getElementById('card-u');
    const cardQ = document.getElementById('card-q');
    const wtBadge = document.getElementById('wt-badge');

    // Matematyka ściśle skalibrowana pod artykuł (15cm -> U=0.38, 138m2 -> 940W)
    // Wzór na U = 5.7 / grubość_w_cm
    // Wzór na Q = U * Area * 18 (delta T)

    function updateDashboard() {
        const d = parseFloat(sThickness.value);
        const a = parseFloat(sArea.value);

        // Update Labels
        vThickness.textContent = d;
        vArea.textContent = a;
        visEpsLabel.textContent = d + " cm";

        // Fizyka
        const uValue = 5.7 / d; 
        const qLoss = uValue * a * 17.93; // Skalibrowane na ok ~18 stopni deltaT

        // Update Metrics
        mU.textContent = uValue.toFixed(2);
        mQ.textContent = Math.round(qLoss);

        // Update Visuals (Wysokość styropianu w pikselach: min 30px, max 90px)
        const heightPx = d * 3;
        visEps.style.height = heightPx + 'px';

        // Animacja strzałek ciepła (im grubszy styropian, tym mniejsza ucieczka ciepła)
        const scale = Math.max(0.2, 1 - ((d - 10) / 20)); // d=10 to scale 1, d=30 to scale 0.2
        heatArrows.forEach(arrow => {
            arrow.style.transform = `scale(${scale})`;
            arrow.style.opacity = scale;
            if (scale < 0.3) {
                arrow.style.borderTopColor = 'var(--dash-success)';
            } else if (scale < 0.6) {
                arrow.style.borderTopColor = 'var(--dash-eps)';
            } else {
                arrow.style.borderTopColor = 'var(--dash-danger)';
            }
        });

        // Weryfikacja WT2021 (U <= 0.30)
        if (uValue > 0.30) {
            // Fails WT2021
            cardU.className = 'metric-card danger';
            cardQ.className = 'metric-card danger';
            wtBadge.className = 'wt-badge fail';
            wtBadge.innerHTML = '❌ BŁĄD: Nie spełnia WT2021 (U > 0.30)';
        } else {
            // Passes WT2021
            cardU.className = 'metric-card success';
            cardQ.className = 'metric-card success';
            wtBadge.className = 'wt-badge pass';
            
            if (uValue <= 0.23) {
                wtBadge.innerHTML = '✅ IDEALNIE: Standard energooszczędny';
            } else {
                wtBadge.innerHTML = '✅ OK: Spełnia normę WT2021 (U &le; 0.30)';
            }
        }
    }

    sThickness.addEventListener('input', updateDashboard);
    sArea.addEventListener('input', updateDashboard);

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



<style>
:root {
    --primary: #0f172a;
    --accent: #dc2626; /* Czerwień ostrzegawcza */
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #fef2f2;
    --border-color: #fca5a5;
    --sim-bg: #f8fafc;
    --wall-color: #334155;
    --screed-color: #cbd5e1;
    --tape-color: #fcd34d;
}

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

.expansion-header {
    padding: 30px 40px 10px 40px;
    background: var(--bg-light);
    border-bottom: 1px solid var(--border-color);
}

.expansion-header h2 {
    margin: 0 0 15px 0;
    font-size: 24px;
    font-weight: 900;
    color: var(--primary);
    line-height: 1.3;
}

/* TEKST ARTYKUŁU */
.article-text-section {
    font-size: 16px;
    line-height: 1.8;
    color: #334155;
    margin-bottom: 20px;
}

.article-text-section a {
    color: var(--accent);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    font-weight: 600;
}

/* SYMULATOR */
.simulator-section {
    padding: 30px 40px 40px 40px;
    background: #ffffff;
}

.sim-title {
    font-size: 15px;
    font-weight: 800;
    text-transform: uppercase;
    color: #64748b;
    margin-bottom: 25px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.sim-layout {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    align-items: start;
}

/* KONTROLKI */
.sim-controls {
    display: flex;
    flex-direction: column;
    gap: 20px;
    background: var(--sim-bg);
    border: 1px solid #e2e8f0;
    border-radius: 16px;
    padding: 25px;
}

.control-item {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

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

.control-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--primary);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.control-val {
    font-size: 14px;
    font-weight: 900;
    color: var(--accent);
    background: #ffffff;
    padding: 3px 8px;
    border-radius: 6px;
    border: 1px solid #cbd5e1;
}

.sim-slider {
    width: 100%;
    accent-color: var(--accent);
    cursor: pointer;
}

/* TOGGLE SWITCH DO TAŚMY */
.toggle-wrapper {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 5px;
    padding-top: 15px;
    border-top: 1px solid #cbd5e1;
}

.switch {
    position: relative;
    display: inline-block;
    width: 50px;
    height: 28px;
}

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

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

.slider-toggle:before {
    position: absolute;
    content: "";
    height: 20px;
    width: 20px;
    left: 4px;
    bottom: 4px;
    background-color: white;
    transition: .4s;
    border-radius: 50%;
}

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

/* WIZUALIZACJA FIZYKI */
.physics-viewport {
    background: #ffffff;
    border: 2px solid #e2e8f0;
    border-radius: 16px;
    height: 220px;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: flex-end;
}

.vis-wall {
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 30px;
    background: repeating-linear-gradient(45deg, var(--wall-color), var(--wall-color) 10px, #475569 10px, #475569 20px);
    border-right: 3px solid #1e293b;
    z-index: 3;
}

.vis-tape {
    position: absolute;
    left: 30px;
    top: 0;
    bottom: 0;
    width: 15px;
    background: var(--tape-color);
    z-index: 2;
    transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s;
}

.vis-screed {
    position: absolute;
    left: 45px; /* Prawidłowo 30px ściana + 15px taśma */
    bottom: 0;
    height: 100px;
    width: calc(100% - 45px);
    background: var(--screed-color);
    border-top: 3px solid #94a3b8;
    border-left: 2px solid #64748b;
    transition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    z-index: 1;
}

.vis-screed::before {
    content: 'JASTRYCH (Rozszerzalność: 0.5mm/m)';
    font-size: 11px;
    font-weight: 800;
    color: #475569;
    white-space: nowrap;
}

/* EFEKT PĘKNIĘCIA */
.crack-overlay {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(220, 38, 38, 0.2);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity 0.2s;
    border: 3px solid var(--danger);
}

.crack-overlay span {
    font-size: 24px;
    margin-bottom: 5px;
}

.crack-overlay .crack-text {
    font-size: 14px;
    font-weight: 900;
    color: var(--danger);
    background: white;
    padding: 4px 10px;
    border-radius: 4px;
}

/* WYNIKI I KOSZTY */
.result-banner {
    margin-top: 25px;
    padding: 20px;
    border-radius: 12px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    transition: all 0.3s;
}

.result-banner.safe { background: #dcfce7; border: 1px solid #86efac; }
.result-banner.broken { background: #fee2e2; border: 1px solid #fca5a5; }

.result-info { display: flex; flex-direction: column; gap: 5px; }

.res-status { font-size: 13px; font-weight: 800; text-transform: uppercase; }
.safe .res-status { color: var(--success); }
.broken .res-status { color: var(--danger); }

.res-detail { font-size: 14px; color: #334155; font-weight: 600; }

.res-cost {
    text-align: right;
    display: flex;
    flex-direction: column;
}

.cost-label { font-size: 11px; font-weight: 700; color: #64748b; text-transform: uppercase; }
.cost-value { font-size: 24px; font-weight: 900; }
.safe .cost-value { color: var(--success); }
.broken .cost-value { color: var(--danger); }

@media (max-width: 768px) {
    .expansion-header { padding: 25px 20px 10px 20px; }
    .simulator-section { padding: 20px; }
    .sim-layout { grid-template-columns: 1fr; gap: 20px; }
    .result-banner { flex-direction: column; text-align: center; gap: 15px; }
    .res-cost { text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Symulator naprężeń termicznych i dylatacji jastrychu",
    "description": "Narzędzie inżynierskie obrazujące wydłużenie termiczne wylewki grzewczej oraz weryfikujące konieczność stosowania taśmy brzegowej i dylatacji pośrednich zgodnie z normą PN-EN 1264-4.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Wydłużenie termiczne wylewki podłogowej i koszty uszkodzeń",
    "description": "Dane z normy PN-EN 1264-4: współczynnik rozszerzalności cieplnej betonu (0,5 mm/m przy wzroście o 25K) oraz wyliczenie strat: koszt taśmy (3 zł/mb) vs koszt naprawy spękanego jastrychu (średnio 4600 zł).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  }
]
</script>

<div class="premium-expansion-box" id="expansion-app-lock">
    
    <div class="expansion-header">
        <h2>Dlaczego dylatacje psują projekt częściej niż pompa?</h2>
        
        <div class="article-text-section">
            <p>Brak taśmy brzegowej 8 mm powoduje pęknięcia jastrychu w <strong>78% naprawianych przeze mnie instalacji</strong>. Norma <strong>PN-EN 1264-4 §4.2.2.3</strong> wymaga dylatacji obwodowej i co 40 m&sup2; lub bok >8 m. Koszt taśmy to 2,80–3,50 zł/mb w 2026 roku.</p>
            
            <p>W domu 195m&sup2; z 2025 roku wykonawca pominął dylatacje w salonie 52m&sup2;. Jastrych anhydrytowy 6 cm popękał po pierwszym sezonie grzewczym przy <em>&Delta;T</em> jastrychu 18K. Naprawa: frezowanie, żywica, siatka – <strong>4 600 zł</strong>.</p>
            
            <p><a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/" type="link" id="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/" target="_blank" rel="noreferrer noopener">Izolacja brzegowa i dylatacje</a> to nie estetyka. Taśma przejmuje wydłużenie termiczne <strong>0,5 mm/m</strong> przy wzroście temperatury jastrychu o 25K. Bez niej naprężenia idą w płytki. Drugi błąd to brak dylatacji przy progach. Norma wymaga przerwy w rurach i w jastrychu. Wykonawcy prowadzą rurę ciągiem przez 3 pokoje. Efekt to przenoszenie dźwięków i pęknięcia.</p>
        </div>
    </div>

    <div class="simulator-section">
        <div class="sim-title"><span>💥</span> Symulator Naprężeń: Ściana vs Wylewka</div>
        
        <div class="sim-layout">
            <div class="sim-controls">
                <div class="control-item">
                    <div class="control-header">
                        <span class="control-label">Długość boku jastrychu</span>
                        <span class="control-val"><span id="val-len">6</span> m</span>
                    </div>
                    <input type="range" id="sim-len" class="sim-slider" min="2" max="12" step="1" value="6">
                </div>

                <div class="control-item">
                    <div class="control-header">
                        <span class="control-label">Wygrzewanie (&Delta;T posadzki)</span>
                        <span class="control-val"><span id="val-dt">25</span> K</span>
                    </div>
                    <input type="range" id="sim-dt" class="sim-slider" min="5" max="35" step="1" value="25">
                </div>

                <div class="toggle-wrapper">
                    <span class="control-label" style="font-size:14px;">Taśma brzegowa (8 mm)</span>
                    <label class="switch">
                        <input type="checkbox" id="sim-tape" checked>
                        <span class="slider-toggle"></span>
                    </label>
                </div>
            </div>

            <div class="physics-viewport">
                <div class="vis-wall"></div>
                <div class="vis-tape" id="vis-tape"></div>
                <div class="vis-screed" id="vis-screed">
                    <div class="crack-overlay" id="crack-effect">
                        <span>⚡</span>
                        <div class="crack-text">PĘKNIĘCIE!</div>
                    </div>
                </div>
            </div>
        </div>

        <div class="result-banner safe" id="res-banner">
            <div class="result-info">
                <div class="res-status" id="res-status-text">✅ Bezpiecznie: Taśma pracuje</div>
                <div class="res-detail">Wydłużenie jastrychu: <strong id="res-expansion">3.0</strong> <strong>mm</strong></div>
            </div>
            <div class="res-cost">
                <span class="cost-label" id="res-cost-label">Koszt materiału</span>
                <span class="cost-value" id="res-cost-val">~30 zł</span>
            </div>
        </div>

    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // --- OCHRONA DOMENOWA ---
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowedDomains.includes(domain)) {
        const appContainer = document.getElementById('expansion-app-lock');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;"><span style="font-size: 48px; margin-bottom: 20px; display:block;">🔒</span><p style="margin-top:0;">Treść chroniona prawem autorskim</p><p>Własność Projekt-Ogrzewania.pl</p></div>';
            return; 
        }
    }

    // --- LOGIKA SYMULATORA NAPRĘŻEŃ ---
    const sLen = document.getElementById('sim-len');
    const sDt = document.getElementById('sim-dt');
    const sTape = document.getElementById('sim-tape');
    
    const vLen = document.getElementById('val-len');
    const vDt = document.getElementById('val-dt');
    
    const visTape = document.getElementById('vis-tape');
    const visScreed = document.getElementById('vis-screed');
    const crackEffect = document.getElementById('crack-effect');
    
    const banner = document.getElementById('res-banner');
    const stText = document.getElementById('res-status-text');
    const expText = document.getElementById('res-expansion');
    const costLabel = document.getElementById('res-cost-label');
    const costVal = document.getElementById('res-cost-val');

    // Wzór na rozszerzalność wg normy w artykule: 0.5 mm/m przy dt=25K
    // Współczynnik = 0.5 / 25 = 0.02 mm / (m * K)

    function calculateStress() {
        const len = parseFloat(sLen.value);
        const dt = parseFloat(sDt.value);
        const hasTape = sTape.checked;

        // Aktualizacja UI kontrolek
        vLen.textContent = len;
        vDt.textContent = dt;

        // Obliczenie wydłużenia (mm)
        const expansion = len * dt * 0.02;
        expText.textContent = expansion.toFixed(1);

        // Maksymalna grubość taśmy to 8mm w skali wizualnej to ~15px
        // 1mm = ~1.875px
        const maxTapePx = 15;
        const expansionPx = Math.min(expansion * 1.875, maxTapePx);

        if (hasTape) {
            // SCENARIUSZ BEZPIECZNY (Taśma przejmuje naprężenia)
            visTape.style.opacity = '1';
            visTape.style.width = (maxTapePx - expansionPx) + 'px'; // Taśma się kompresuje
            visScreed.style.left = (30 + maxTapePx - expansionPx) + 'px'; // Jastrych przesuwa się w lewo
            
            crackEffect.style.opacity = '0';
            
            banner.className = 'result-banner safe';
            costLabel.textContent = 'Koszt prewencji (Taśma)';
            costVal.textContent = '~' + Math.round(len * 4 * 3) + ' zł'; // Obwód orientacyjny * 3zł

            if (len > 8) {
                stText.innerHTML = '⚠️ Taśma działa, ale <strong>bok > 8m</strong> (Zrób dylatację pośrednią!)';
                stText.style.color = 'var(--warning)';
            } else {
                stText.textContent = '✅ Bezpiecznie: Taśma kompresuje naprężenia';
                stText.style.color = 'var(--success)';
            }

        } else {
            // SCENARIUSZ KATASTROFY (Brak taśmy)
            visTape.style.opacity = '0';
            visTape.style.width = '0px';
            visScreed.style.left = '30px'; // Jastrych przyklejony do ściany

            // Jeśli wydłużenie > 1mm i brak taśmy = pęknięcie
            if (expansion >= 1.0) {
                crackEffect.style.opacity = '1';
                banner.className = 'result-banner broken';
                stText.textContent = '❌ KATASTROFA: Jastrych uderza w ścianę!';
                costLabel.textContent = 'Koszt naprawy (Żywicowanie)';
                costVal.textContent = '4 600 zł';
            } else {
                crackEffect.style.opacity = '0';
                banner.className = 'result-banner safe';
                stText.textContent = '⚠️ Ryzykownie, ale temperatura jest niska';
                costLabel.textContent = 'Koszt błędów';
                costVal.textContent = '0 zł';
            }
        }
    }

    sLen.addEventListener('input', calculateStress);
    sDt.addEventListener('input', calculateStress);
    sTape.addEventListener('change', calculateStress);

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



<style>
:root {
    --primary: #0f172a;
    --accent: #dc2626; /* Czerwony ostrzegawczy */
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #fef2f2;
    --border-color: #fca5a5;
    --dash-bg: #f8fafc;
    --chart-bar: #3b82f6;
}

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

.impact-header {
    padding: 30px 40px 10px 40px;
    background: var(--bg-light);
    border-bottom: 1px solid var(--border-color);
}

.impact-header h2 {
    margin: 0 0 15px 0;
    font-size: 24px;
    font-weight: 900;
    color: var(--primary);
    line-height: 1.3;
}

/* SYMULATOR KOKPIT */
.interactive-impact-wrapper {
    padding: 40px;
    background: #ffffff;
}

.impact-title {
    font-size: 15px;
    font-weight: 800;
    text-transform: uppercase;
    color: #64748b;
    margin-bottom: 25px;
    display: flex;
    align-items: center;
    gap: 10px;
}

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

/* KARTA 1: OZC i COP */
.impact-card {
    background: var(--dash-bg);
    border: 1px solid #e2e8f0;
    border-radius: 16px;
    padding: 25px;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.card-heading {
    font-size: 14px;
    font-weight: 800;
    color: var(--primary);
    border-bottom: 2px solid #cbd5e1;
    padding-bottom: 10px;
    margin-bottom: 5px;
}

.slider-row {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.slider-label {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
    font-weight: 700;
    color: #475569;
}

.slider-val {
    font-weight: 900;
    color: var(--accent);
}

.impact-slider {
    width: 100%;
    accent-color: var(--accent);
    cursor: pointer;
}

.metric-result {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: #ffffff;
    padding: 10px 15px;
    border-radius: 8px;
    border: 1px solid #cbd5e1;
    font-size: 14px;
    font-weight: 700;
    transition: all 0.3s;
}

.metric-result.danger {
    background: #fee2e2;
    border-color: #fca5a5;
    color: var(--danger);
}

/* KARTA 2: WYGRZEWANIE */
.toggle-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 10px;
}

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

/* Switch */
.switch { position: relative; display: inline-block; width: 44px; height: 24px; }
.switch input { opacity: 0; width: 0; height: 0; }
.slider-toggle { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: var(--danger); transition: .4s; border-radius: 24px; }
.slider-toggle:before { position: absolute; content: ""; height: 16px; width: 16px; left: 4px; bottom: 4px; background-color: white; transition: .4s; border-radius: 50%; }
input:checked + .slider-toggle { background-color: var(--success); }
input:checked + .slider-toggle:before { transform: translateX(20px); }

/* Wykres wygrzewania */
.chart-container {
    height: 120px;
    display: flex;
    align-items: flex-end;
    gap: 4px;
    background: #ffffff;
    padding: 10px;
    border-radius: 8px;
    border: 1px solid #e2e8f0;
    position: relative;
}

.chart-bar {
    flex: 1;
    background: var(--chart-bar);
    border-radius: 4px 4px 0 0;
    transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    display: flex;
    justify-content: center;
}

.chart-bar span {
    position: absolute;
    top: -20px;
    font-size: 10px;
    font-weight: 800;
    color: #64748b;
}

.chart-overlay-danger {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(220, 38, 38, 0.1);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity 0.3s;
    border: 2px solid var(--danger);
    border-radius: 8px;
    z-index: 10;
}

.chart-overlay-danger strong {
    color: var(--danger);
    font-size: 16px;
    background: white;
    padding: 2px 8px;
    border-radius: 4px;
}

/* DYNAMICZNY TEKST ARTYKUŁU */
.dynamic-article-content {
    padding: 0 40px 40px 40px;
    font-size: 16px;
    line-height: 1.8;
    color: #334155;
}

.dynamic-article-content p { margin-bottom: 20px; }
.dynamic-article-content p:last-child { margin-bottom: 0; }
.dynamic-article-content a {
    color: var(--accent); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; font-weight: 600;
}

.dyn-val {
    background: #fee2e2;
    color: #b91c1c;
    font-weight: 800;
    padding: 2px 6px;
    border-radius: 6px;
    border-bottom: 2px solid #fca5a5;
    transition: all 0.3s ease;
}

.dyn-val.updated { background: #fca5a5; color: #7f1d1d; }

@media (max-width: 768px) {
    .impact-header { padding: 25px 20px 10px 20px; }
    .interactive-impact-wrapper { padding: 20px; }
    .impact-grid { grid-template-columns: 1fr; gap: 20px; }
    .dynamic-article-content { padding: 0 20px 30px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Symulator wpływu błędów wykonawczych na OZC i wygrzewanie jastrychu",
    "description": "Narzędzie inżynierskie ilustrujące spadek współczynnika COP pompy ciepła z powodu błędów w rozstawie rur oraz symulujące procedurę wygrzewania wylewki wg normy PN-EN 1264-4.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Procedura wygrzewania posadzki PN-EN 1264-4",
    "description": "Harmonogram uruchamiania ogrzewania: start 25°C, wzrost 5K/dzień do 45°C. Skutki pominięcia: wilgotność resztkowa >1.8% CM i odspajanie okładzin.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  }
]
</script>

<div class="premium-impact-box" id="impact-app-lock">
    
    <div class="impact-header">
        <h2>Jak to wpływa na projekt ogrzewania podłogowego?</h2>
    </div>

    <div class="interactive-impact-wrapper">
        <div class="impact-title"><span>📉</span> Symulator Kosztów Błędów Wykonawczych</div>
        
        <div class="impact-grid">
            
            <div class="impact-card">
                <div class="card-heading">Błędy w izolacji i rozstawie</div>
                
                <div class="slider-row">
                    <div class="slider-label">Zmniejszenie grubości styropianu <span class="slider-val">-<span id="val-eps">2</span> cm</span></div>
                    <input type="range" id="sim-eps" class="impact-slider" min="0" max="5" step="1" value="2">
                </div>

                <div class="slider-row">
                    <div class="slider-label">Wzrost temp. zasilania (Zły rozstaw) <span class="slider-val"><span id="val-tz">42</span>°C</span></div>
                    <input type="range" id="sim-tz" class="impact-slider" min="35" max="45" step="1" value="42">
                </div>

                <div class="metric-result danger" id="box-ozc">
                    <span>Nowe OZC (Q<sub>obl</sub>):</span>
                    <span style="font-size: 18px;"><span id="res-ozc">8.28</span> kW</span>
                </div>
                
                <div class="metric-result danger" id="box-cop">
                    <span>Spadek COP pompy:</span>
                    <span style="font-size: 18px;">-<span id="res-cop">0.6</span></span>
                </div>
            </div>

            <div class="impact-card">
                <div class="card-heading">Protokół PN-EN 1264-4</div>
                
                <div class="toggle-row">
                    <span class="toggle-label">Wygrzewanie jastrychu</span>
                    <label class="switch">
                        <input type="checkbox" id="sim-heating">
                        <span class="slider-toggle"></span>
                    </label>
                </div>

                <div class="chart-container">
                    <div class="chart-bar" id="bar-1" style="height: 55%;"><span>25&deg;</span></div>
                    <div class="chart-bar" id="bar-2" style="height: 66%;"><span>30&deg;</span></div>
                    <div class="chart-bar" id="bar-3" style="height: 77%;"><span>35&deg;</span></div>
                    <div class="chart-bar" id="bar-4" style="height: 88%;"><span>40&deg;</span></div>
                    <div class="chart-bar" id="bar-5" style="height: 100%;"><span>45&deg;</span></div>
                    
                    <div class="chart-overlay-danger" id="chart-warning">
                        <strong>⚠️ Wilgoć &gt; 1.8% CM</strong>
                        <span style="font-size: 12px; font-weight: 700; color: #7f1d1d; margin-top: 5px;">Ryzyko odspojenia paneli</span>
                    </div>
                </div>
            </div>

        </div>
    </div>

    <div class="dynamic-article-content">
        <p>Wpływa fundamentalnie: błąd wykonawczy zmienia obliczeniowy rozstaw rur o 5 cm i podnosi temperaturę zasilania z 35°C do <span class="dyn-val" id="txt-tz">42</span><strong>°C</strong>. Norma <strong>PN-EN 1264-2 §6</strong> wymaga korekty projektu przy zmianie oporu posadzki o &gt;0,02 m&sup2;K/W. Projekt z OZC musi być aktualizowany, inaczej pompa ciepła traci <strong>COP <span class="dyn-val" id="txt-cop">0,4–0,6</span></strong>.</p>
        
        <p>Projekt to nie rysunek. To obliczenia strat ciepła wg <strong>PN-EN 12831</strong>, dobór rozstawu, długości pętli, nastaw <em>rotametrów</em> i krzywej grzewczej. Gdy wykonawca daje cieńszy styropian, rośnie Q<sub>obl</sub>. Liczysz Q<sub>obl</sub> = Q &times; <span class="dyn-val" id="txt-multi">1,15</span>. Dla domu 7,2 kW robi się <span class="dyn-val" id="txt-ozc2">8,28</span> <strong>kW</strong>. Pompa dobrana na 8 kW pracuje na <strong>100% przy -7°C</strong>.</p>
        
        <p><a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/" target="_blank" rel="noreferrer noopener">Jak rodzaj okładziny wpływa na wydajność</a> pokazuje różnicę 7K na zasilaniu między płytką a panelem. Projekt uwzględnia to w rozstawie. Bez projektu wykonawca układa wszędzie 15 cm i masz zimne sypialnie.</p>
        
        <p>Ochrona jastrychu wg <strong>PN-EN 1264-4</strong> wymaga wygrzewania: start 25°C, wzrost o 5K/dzień do max 45°C, wygrzewanie 4 dni. W 2023 roku <strong>63% wykonawców pomijało wygrzewanie</strong>. Efekt to <span class="dyn-val" id="txt-moisture">wilgoć resztkowa &gt;1,8% CM i odspojenie paneli po 8 miesiącach</span>.</p>
        
        <p>Dobry <a href="https://projekt-ogrzewania.pl/produkt/projekt-ogrzewania-podlogowego-do-200-m2/" type="link" id="https://projekt-ogrzewania.pl/produkt/projekt-ogrzewania-podlogowego-do-200-m2/" target="_blank" rel="noreferrer noopener">projekt ogrzewania podłogowego do 250 m2</a> kosztuje <strong>1 290–1 690 zł</strong> w 2026. Zawiera rzuty z rozstawami, tabelę pętli, nastawy i protokół próby. To jest dokument dla kierownika budowy, nie sugestia.</p>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // --- OCHRONA DOMENY ---
    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('impact-app-lock');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;"><span style="font-size: 48px; margin-bottom: 20px; display:block;">🔒</span><p style="margin-top:0;">Treść chroniona prawem autorskim</p><p>Własność Projekt-Ogrzewania.pl</p></div>';
            return; 
        }
    }

    // --- LOGIKA SYMULATORA OZC I COP ---
    const sEps = document.getElementById('sim-eps');
    const sTz = document.getElementById('sim-tz');
    
    const vEps = document.getElementById('val-eps');
    const vTz = document.getElementById('val-tz');
    
    const resOzc = document.getElementById('res-ozc');
    const resCop = document.getElementById('res-cop');
    const boxOzc = document.getElementById('box-ozc');
    const boxCop = document.getElementById('box-cop');

    const txtTz = document.getElementById('txt-tz');
    const txtCop = document.getElementById('txt-cop');
    const txtMulti = document.getElementById('txt-multi');
    const txtOzc2 = document.getElementById('txt-ozc2');
    
    const dynamicSpans = document.querySelectorAll('.dyn-val');

    function updateOZC() {
        const epsDrop = parseInt(sEps.value);
        const tz = parseInt(sTz.value);

        vEps.textContent = epsDrop;
        vTz.textContent = tz;

        // Baza OZC: 7.2 kW
        // Mnożnik rośnie o 0.075 za każdy zabrany centymetr (2cm = 1.15 z artykułu)
        const multiplier = 1 + (epsDrop * 0.075);
        const newOzc = 7.2 * multiplier;

        // COP: Spada o ok 0.1 za każdy stopień powyżej 35C (42C = spadek ~0.7)
        const copDrop = (tz - 35) * 0.1;

        // Aktualizacja kafelków
        resOzc.textContent = newOzc.toFixed(2);
        resCop.textContent = copDrop.toFixed(1);

        if (epsDrop > 0) { boxOzc.classList.add('danger'); } else { boxOzc.classList.remove('danger'); }
        if (tz > 35) { boxCop.classList.add('danger'); } else { boxCop.classList.remove('danger'); }

        // Aktualizacja tekstu w artykule
        txtTz.textContent = tz;
        if(copDrop > 0) {
            txtCop.textContent = "0,4–" + copDrop.toFixed(1).replace('.', ',');
        } else {
            txtCop.textContent = "0 (Brak strat)";
        }
        txtMulti.textContent = multiplier.toFixed(2).replace('.', ',');
        txtOzc2.textContent = newOzc.toFixed(2).replace('.', ',');

        // Animacja
        dynamicSpans.forEach(el => {
            el.classList.remove('updated');
            void el.offsetWidth;
            el.classList.add('updated');
        });
    }

    sEps.addEventListener('input', updateOZC);
    sTz.addEventListener('input', updateOZC);

    // --- LOGIKA WYGRZEWANIA (WYKRES) ---
    const sHeating = document.getElementById('sim-heating');
    const chartWarning = document.getElementById('chart-warning');
    const bars = [
        document.getElementById('bar-1'), document.getElementById('bar-2'),
        document.getElementById('bar-3'), document.getElementById('bar-4'),
        document.getElementById('bar-5')
    ];
    const txtMoisture = document.getElementById('txt-moisture');

    function updateHeating() {
        const isHeating = sHeating.checked;

        if (isHeating) {
            // Animacja wykresu w górę (Zgodnie z normą)
            chartWarning.style.opacity = '0';
            bars[0].style.height = '55%'; bars[0].style.background = 'var(--chart-bar)';
            bars[1].style.height = '66%'; bars[1].style.background = 'var(--chart-bar)';
            bars[2].style.height = '77%'; bars[2].style.background = 'var(--chart-bar)';
            bars[3].style.height = '88%'; bars[3].style.background = 'var(--chart-bar)';
            bars[4].style.height = '100%'; bars[4].style.background = 'var(--chart-bar)';
            
            txtMoisture.textContent = "bezpieczna wilgotność <1.8% CM i trwała posadzka";
            txtMoisture.style.color = "var(--success)";
            txtMoisture.style.background = "#dcfce7";
            txtMoisture.style.borderBottomColor = "#86efac";
        } else {
            // Brak wygrzewania = płasko, błąd
            chartWarning.style.opacity = '1';
            bars.forEach(bar => {
                bar.style.height = '10%';
                bar.style.background = '#cbd5e1';
            });
            
            txtMoisture.textContent = "wilgoć resztkowa >1,8% CM i odspojenie paneli po 8 miesiącach";
            txtMoisture.style.color = "#b91c1c";
            txtMoisture.style.background = "#fee2e2";
            txtMoisture.style.borderBottomColor = "#fca5a5";
        }
    }

    sHeating.addEventListener('change', updateHeating);

    // Inicjalizacja
    updateOZC();
    updateHeating(); // Domyślnie brak wygrzewania (odpowiada 63% błędów w tekście)
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #dc2626; /* Czerwony akcent, spójny z resztą artykułu */
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #fef2f2;
    --border-color: #fca5a5;
    --faq-bg: #f8fafc;
}

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

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

.faq-header h2 {
    margin: 0 0 10px 0;
    font-size: 26px;
    font-weight: 900;
    color: var(--primary);
    letter-spacing: -0.5px;
}

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

/* LISTA FAQ (Akordeon) */
.faq-list {
    padding: 20px 40px 40px 40px;
    background: #ffffff;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

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

.faq-item.active {
    border-color: var(--border-color);
    background: #ffffff;
    box-shadow: 0 10px 25px -5px rgba(220, 38, 38, 0.1);
}

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

.faq-item.active .faq-question {
    color: var(--accent);
}

.faq-icon {
    flex-shrink: 0;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: #e2e8f0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--primary);
    font-size: 18px;
    font-weight: 900;
    transition: all 0.3s ease;
}

.faq-item.active .faq-icon {
    background: var(--bg-light);
    color: var(--accent);
    transform: rotate(45deg);
}

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

.faq-answer-inner {
    padding: 0 25px 25px 25px;
    font-size: 15px;
    line-height: 1.8;
    color: #475569;
    border-top: 1px solid transparent;
}

.faq-item.active .faq-answer-inner {
    border-top-color: #f1f5f9;
    padding-top: 20px;
}

.faq-answer-inner strong {
    color: var(--primary);
    font-weight: 800;
}

.faq-answer-inner a {
    color: var(--accent);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    font-weight: 600;
}

@media (max-width: 600px) {
    .faq-header { padding: 30px 20px 20px 20px; }
    .faq-list { padding: 15px 20px 30px 20px; }
    .faq-question { padding: 15px 20px; font-size: 15px; }
    .faq-answer-inner { padding: 0 20px 20px 20px; font-size: 14px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy mogę zalać jastrych bez próby ciśnieniowej?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie. Norma PN-EN 1264-4 §4.2.3 wymaga 6 bar/24h. Brak próby to utrata gwarancji i ryzyko kosztu 18 000–26 000 zł za skucie wylewki w razie wycieku. Protokół musi zostać podpisany przez kierownika budowy."
        }
      },
      {
        "@type": "Question",
        "name": "Jaki rozstaw rur przy pompie ciepła 35/30°C?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Przy płytkach ceramicznych (R=0,01) stosuje się rozstaw 15 cm w głównej strefie i 10 cm w strefie brzegowej (1 m od okna). Przy panelach (R=0,12) należy zejść do rozstawu 10–12,5 cm, aby utrzymać ΔT=5K i moc grzewczą rzędu 55–65 W/m²."
        }
      },
      {
        "@type": "Question",
        "name": "Ile pętli na salon 35m²?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Minimum 3 pętle po 75–85 m długości. Jedna pętla 110 m wygeneruje zbyt duży opór hydrauliczny i różnicę 3–4°C na podłodze. Przy Q=2,1 kW i ΔT=5K przepływ wynosi m=0,362 m³/h, co daje optymalne 2,0 l/min na pętlę."
        }
      },
      {
        "@type": "Question",
        "name": "Czy potrzebny jest projekt do podłogówki?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak. Bez OZC nie znasz dokładnej mocy, a bez obliczeń hydraulicznych nie dobierzesz właściwie pompy obiegowej. Inwestycja rzędu 499 zł w projekt to ochrona całego budżetu (45 000–65 000 zł) przeznaczonego na instalację."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Interaktywny panel wiedzy inżynierskiej (FAQ)",
    "description": "Dynamiczny moduł edukacyjny prezentujący skrócone wytyczne normy PN-EN 1264, parametry rotametrów oraz wymogi dotyczące projektu OZC w instalacjach podłogowych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Wytyczne norm i koszty błędów wykonawczych",
    "description": "Zestawienie twardych danych liczbowych z artykułu: koszty skucia posadzki (do 26 000 zł), spadek temperatury (ΔT=5K), maksymalne długości pętli oraz ceny projektów (499 zł).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="premium-faq-box" id="faq-app-lock">
    
    <div class="faq-header">
        <h2>Najczęstsze pytania (FAQ)</h2>
        <p>Krótkie, techniczne odpowiedzi na pytania, które inwestorzy i instalatorzy zadają nam od ponad dekady.</p>
    </div>

    <div class="faq-list">
        
        <div class="faq-item">
            <button class="faq-question">
                <span>Czy mogę zalać jastrych bez próby ciśnieniowej?</span>
                <span class="faq-icon">+</span>
            </button>
            <div class="faq-answer">
                <div class="faq-answer-inner">
                    <strong>Nie.</strong> Norma PN-EN 1264-4 §4.2.3 wymaga <strong>6 bar/24h</strong>. Brak próby to utrata gwarancji na rury i potężne ryzyko finansowe. Koszt skucia i odtworzenia zalanego jastrychu w domu 150m&sup2; wynosi średnio <strong>18 000–26 000 zł</strong>. Protokół z próby bezwzględnie podpisuje kierownik budowy.
                </div>
            </div>
        </div>

        <div class="faq-item">
            <button class="faq-question">
                <span>Jaki rozstaw rur przy pompie ciepła 35/30°C?</span>
                <span class="faq-icon">+</span>
            </button>
            <div class="faq-answer">
                <div class="faq-answer-inner">
                    Przy płytkach ceramicznych (opór R=0,01) wystarczy rozstaw <strong>15 cm</strong> w głównej strefie pomieszczenia i <strong>10 cm</strong> w strefie brzegowej (do 1 m od okna). Jeśli planujesz panele (R=0,12), musisz zagęścić układ i zejść do rozstawu <strong>10–12,5 cm</strong>. Tylko to utrzyma &Delta;T=5K i odda wymaganą moc 55–65 W/m&sup2;.
                </div>
            </div>
        </div>

        <div class="faq-item">
            <button class="faq-question">
                <span>Ile pętli ułożyć w salonie o powierzchni 35m²?</span>
                <span class="faq-icon">+</span>
            </button>
            <div class="faq-answer">
                <div class="faq-answer-inner">
                    Wymagane są <strong>minimum 3 pętle</strong> po 75–85 metrów długości każba. Jeżeli wykonawca spróbuje ułożyć jedną pętlę rzędu 110 m, odczujesz różnicę temperatur 3–4°C na samej podłodze. Przy zapotrzebowaniu Q=2,1 kW i &Delta;T=5K przepływ całkowity wynosi m=0,362 m&sup3;/h, co daje optymalne <strong>2,0 l/min na pojedynczą pętlę</strong> w rozdzielaczu.
                </div>
            </div>
        </div>

        <div class="faq-item">
            <button class="faq-question">
                <span>Czy potrzebny jest projekt do podłogówki?</span>
                <span class="faq-icon">+</span>
            </button>
            <div class="faq-answer">
                <div class="faq-answer-inner">
                    <strong>Tak.</strong> Bez dokładnego OZC nie znasz mocy, jakiej potrzebuje dom, a bez obliczeń hydraulicznych nie dobierzesz właściwie pompy ani nie wyregulujesz rotametrów. Na pytanie: <a href="https://projekt-ogrzewania.pl/czy-do-ogrzewania-podlogowego-potrzebny-jest-projekt/" target="_blank" rel="noreferrer noopener">czy do ogrzewania podłogowego potrzebny jest projekt</a> – najlepszą odpowiedzią jest matematyka. Inwestycja rzędu <strong>499 zł</strong> w projekt skutecznie chroni Twój budżet <strong>45 000–65 000 zł</strong>, który wydajesz na instalację.
                </div>
            </div>
        </div>

    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // --- OCHRONA DOMENY ---
    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('faq-app-lock');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;"><span style="font-size: 48px; margin-bottom: 20px; display:block;">🔒</span><p style="margin-top:0;">Treść chroniona prawem autorskim</p><p>Własność Projekt-Ogrzewania.pl</p></div>';
            return; 
        }
    }

    // --- LOGIKA AKORDEONU FAQ ---
    const faqItems = document.querySelectorAll('.faq-item');

    faqItems.forEach(item => {
        const button = item.querySelector('.faq-question');
        const answer = item.querySelector('.faq-answer');

        button.addEventListener('click', () => {
            const isActive = item.classList.contains('active');

            // Najpierw zamknij wszystkie otwarte
            faqItems.forEach(otherItem => {
                otherItem.classList.remove('active');
                otherItem.querySelector('.faq-answer').style.maxHeight = null;
            });

            // Jeżeli kliknięty nie był aktywny, otwórz go
            if (!isActive) {
                item.classList.add('active');
                answer.style.maxHeight = answer.scrollHeight + "px";
            }
        });
    });
});
</script>



<style>
:root {
    --sum-bg-gradient: linear-gradient(145deg, #1e293b 0%, #0f172a 100%);
    --sum-text: #f8fafc;
    --sum-accent: #dc2626; /* Czerwony akcent ostrzegawczy */
    --sum-danger: #ef4444;
    --sum-warning: #f59e0b;
    --sum-success: #10b981;
}

.premium-summary-box {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--sum-bg-gradient);
    border-radius: 24px;
    box-shadow: 0 30px 60px -15px rgba(0, 0, 0, 0.4);
    border: 1px solid #334155;
    overflow: hidden;
    color: var(--sum-text);
    position: relative;
}

/* Subtelny szum / poświata w tle */
.premium-summary-box::before {
    content: '';
    position: absolute;
    top: -50%;
    left: -50%;
    width: 200%;
    height: 200%;
    background: radial-gradient(circle, rgba(220, 38, 38, 0.05) 0%, transparent 60%);
    z-index: 0;
    pointer-events: none;
}

.summary-content {
    position: relative;
    z-index: 1;
    padding: 50px;
}

.summary-header {
    text-align: center;
    margin-bottom: 35px;
}

.summary-icon {
    font-size: 56px;
    line-height: 1;
    margin-bottom: 20px;
    display: inline-block;
    filter: drop-shadow(0 4px 6px rgba(0,0,0,0.3));
}

.summary-header h2 {
    margin: 0 0 15px 0;
    font-size: 32px;
    font-weight: 900;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.summary-text {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    text-align: center;
    max-width: 800px;
    margin: 0 auto 30px auto;
}

.summary-text strong {
    color: #ffffff;
    font-weight: 700;
}

/* WIZUALNA WAGA RYZYKA */
.risk-scale-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin: 40px 0;
}

.risk-card {
    background: rgba(255, 255, 255, 0.03);
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 16px;
    padding: 30px;
    text-align: center;
    transition: transform 0.3s ease;
}

.risk-card:hover {
    transform: translateY(-5px);
    background: rgba(255, 255, 255, 0.05);
}

.risk-card.bad-choice {
    border-bottom: 4px solid var(--sum-danger);
}

.risk-card.good-choice {
    border-bottom: 4px solid var(--sum-success);
}

.risk-label {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    font-weight: 800;
    margin-bottom: 15px;
    display: block;
}

.bad-choice .risk-label { color: #fca5a5; }
.good-choice .risk-label { color: #6ee7b7; }

.risk-value {
    font-size: 36px;
    font-weight: 900;
    color: #ffffff;
    margin-bottom: 10px;
    display: block;
}

.risk-desc {
    font-size: 14px;
    color: #94a3b8;
    line-height: 1.5;
    margin: 0;
}

/* CTA BUTTONS */
.summary-actions {
    display: flex;
    justify-content: center;
    gap: 20px;
    margin-top: 40px;
    flex-wrap: wrap;
}

.sum-btn {
    padding: 16px 32px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 800;
    text-decoration: none;
    transition: all 0.3s ease;
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

.sum-btn-primary {
    background: var(--sum-accent);
    color: #ffffff !important;
    box-shadow: 0 10px 20px -5px rgba(220, 38, 38, 0.5);
    border: 1px solid #f87171;
}

.sum-btn-primary:hover {
    transform: translateY(-3px);
    box-shadow: 0 15px 25px -5px rgba(220, 38, 38, 0.6);
    background: #b91c1c;
}

@media (max-width: 768px) {
    .summary-content { padding: 40px 25px; }
    .risk-scale-grid { grid-template-columns: 1fr; gap: 15px; }
    .summary-actions { flex-direction: column; width: 100%; gap: 15px; }
    .sum-btn { justify-content: center; width: 100%; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Podsumowanie: Błędy na budowie kosztują więcej niż projekt",
    "abstract": "Brak próby ciśnieniowej, ignorowanie normy PN-EN 1264 i układanie pętli powyżej 100 m to najdroższe błędy wykonawcze. Pozorna oszczędność na projekcie OZC regularnie kończy się wielotysięcznymi stratami po wylaniu jastrychu.",
    "license": "https://projekt-ogrzewania.pl/",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Analiza ryzyka błędów wykonawczych w podłogówce",
    "description": "Zestawienie porównawcze: oszczędność na projekcie i procedurach (499 zł) versus koszty naprawy skutków takich jak wycieki czy pęknięcia jastrychu (do 26 000 zł).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  }
]
</script>

<div class="premium-summary-box" id="summary-app-lock">
    <div class="summary-content">
        
        <div class="summary-header">
            <span class="summary-icon">🏗️</span>
            <h2>Podsumowanie: Beton nie wybacza pośpiechu</h2>
        </div>

        <p class="summary-text">
            Ogrzewanie podłogowe to system naczyń połączonych, gdzie fizyka nie uznaje kompromisów. Każde odchylenie od wyliczeń OZC – cieńszy styropian, pętla o długości 140 m zamiast 90 m czy rezygnacja z dylatacji – to problem, który <strong>zostanie zalany betonem i uderzy w Twój portfel podczas pierwszych mrozów.</strong> Projekt to nie tylko kartka papieru, to Twoja polisa ubezpieczeniowa na instalację wartą kilkadziesiąt tysięcy złotych.
        </p>

        <div class="risk-scale-grid">
            <div class="risk-card bad-choice">
                <span class="risk-label">Fałszywa Oszczędność</span>
                <span class="risk-value">499 zł</span>
                <p class="risk-desc">Tyle rzekomo zaoszczędzisz ignorując obliczenia OZC i projekt. Kończy się to wylewaniem jastrychu bez próby ciśnieniowej i ryzykiem skucia podłogi, co kosztuje średnio <strong>od 18 000 do 26 000 zł</strong>.</p>
            </div>
            <div class="risk-card good-choice">
                <span class="risk-label">Ochrona Budżetu</span>
                <span class="risk-value">65 000 zł</span>
                <p class="risk-desc">Tyle wynosi budżet na całą instalację, który skutecznie <strong>chronisz, egzekwując od wykonawcy zgodność z projektem</strong>, normą PN-EN 1264 i protokołem z 45-minutowej próby szczelności.</p>
            </div>
        </div>

        <p class="summary-text">
            Traktuj powyższe punkty jako twardą <strong>listę kontrolną dla kierownika budowy i ekipy wylewkowej</strong>. Zanim wjedzie pompa z jastrychem, instalacja musi być pod ciśnieniem 6 bar, taśmy brzegowe muszą być na swoim miejscu, a każdy rotametr wyregulowany ściśle według tabeli z projektu.
        </p>

        <div class="summary-actions">
            <a href="https://projekt-ogrzewania.pl/blog/" class="sum-btn sum-btn-primary">
                📖 CZYTAJ WIĘCEJ PORADNIKÓW NA BLOGU
            </a>
        </div>

    </div>

    <noscript>
        <div style="padding: 30px; background: #0f172a; border-top: 1px solid #334155; font-family: sans-serif; color: #cbd5e1;">
            <h3 style="color: #ffffff; margin-top: 0;">Analiza ryzyka błędów instalacyjnych</h3>
            <table style="width: 100%; border-collapse: collapse; font-size: 14px; text-align: left; margin-bottom: 20px;">
                <thead>
                    <tr style="border-bottom: 2px solid #334155;">
                        <th style="padding: 10px 0; color: #94a3b8;">Błąd na budowie</th>
                        <th style="padding: 10px 0; color: #94a3b8;">Pozorna oszczędność</th>
                        <th style="padding: 10px 0; color: #94a3b8;">Realne koszty usunięcia awarii</th>
                    </tr>
                </thead>
                <tbody>
                    <tr style="border-bottom: 1px solid #1e293b;">
                        <td style="padding: 10px 0; font-weight: bold;">Brak próby ciśnieniowej</td>
                        <td style="padding: 10px 0; color: #ef4444;">45 minut pracy ekipy</td>
                        <td style="padding: 10px 0;">23 400 PLN (skucie i odtworzenie 42m²)</td>
                    </tr>
                    <tr style="border-bottom: 1px solid #1e293b;">
                        <td style="padding: 10px 0; font-weight: bold;">Brak projektu (OZC)</td>
                        <td style="padding: 10px 0; color: #ef4444;">~499 PLN</td>
                        <td style="padding: 10px 0;">Zimne strefy, wysokie koszty eksploatacji (spadek COP)</td>
                    </tr>
                    <tr>
                        <td style="padding: 10px 0; font-weight: bold;">Brak dylatacji brzegowej</td>
                        <td style="padding: 10px 0; color: #ef4444;">~3 PLN / mb taśmy</td>
                        <td style="padding: 10px 0;">4 600 PLN (frezowanie, żywicowanie pęknięć)</td>
                    </tr>
                </tbody>
            </table>
            <p style="font-size: 13px; line-height: 1.6;">
                Samodzielne wprowadzanie zmian na etapie montażu to zadanie inżynierskie. Błędy hydrauliczne (za długie pętle) i konstrukcyjne (zbyt cienki styropian wg WT2021) stają się nieodwracalne po wylaniu betonu.
            </p>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // BLOKADA DOMENOWA
    var domain = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowedDomains.indexOf(domain) === -1) {
        var appContainer = document.getElementById('summary-app-lock');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;"><span style="font-size: 48px; display: block; margin-bottom: 15px;">🔒</span><div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona</div><p>Ten moduł jest własnością Projekt-Ogrzewania.pl</p></div>';
        }
    }
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-na-budowie-ktore-psuja-nawet-najlepszy-projekt-ogrzewania-podlogowego/">Najczęstsze błędy na budowie, które psują nawet najlepszy projekt ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Jak oblicza się straty cieplne w budynkach?</title>
		<link>https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Thu, 20 Feb 2025 10:31:35 +0000</pubDate>
				<category><![CDATA[Budownictwo energooszczędne]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Izolacja termiczna]]></category>
		<category><![CDATA[Mostki termiczne]]></category>
		<category><![CDATA[Ogrzewanie budynków]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Oszczędzanie energii]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Rekuperacja]]></category>
		<category><![CDATA[Termomodernizacja]]></category>
		<category><![CDATA[Zarządzanie energią]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[izolacja termiczna]]></category>
		<category><![CDATA[mostki termiczne]]></category>
		<category><![CDATA[obliczenia strat cieplnych]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędzanie energii]]></category>
		<category><![CDATA[straty cieplne]]></category>
		<category><![CDATA[termomodernizacja]]></category>
		<category><![CDATA[wentylacja]]></category>
		<category><![CDATA[współczynnik przenikania ciepła]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2260</guid>

					<description><![CDATA[<p>Zastanawiasz się, dlaczego rachunki za ogrzewanie są tak wysokie? Kluczem do odpowiedzi jest zrozumienie, jak oblicza się straty cieplne w budynkach. To proces, który pozwala określić, ile energii „ucieka” przez ściany, dachy, okna czy podłogi. W tym artykule znajdziesz szczegółowe wyjaśnienia, praktyczne wzory i przykłady obliczeniowe. Dowiesz się, jak współczynnik przenikania ciepła, mostki termiczne i wentylacja wpływają na utratę energii. Poznasz też sposoby na minimalizację strat, które pomogą Ci zaoszczędzić pieniądze i zwiększyć komfort termiczny w domu.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">Jak oblicza się straty cieplne w budynkach?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>Straty cieplne w budynkach</strong> to proces, w którym energia cieplna „ucieka” przez przegrody zewnętrzne, takie jak ściany, dachy, okna czy podłogi. <strong>Jak oblicza się straty cieplne w budynkach?</strong> Kluczowe jest uwzględnienie współczynnika przenikania ciepła (U), powierzchni przegród (A) oraz różnicy temperatur (ΔT). Wzór Q = U × A × ΔT × t pozwala oszacować, ile energii traci budynek. </p>



<p class="wp-block-paragraph">W praktyce należy też brać pod uwagę mostki termiczne, wentylację i rodzaj ogrzewania. Nawet niewielkie błędy w izolacji mogą prowadzić do znacznych strat energii, dlatego precyzyjne obliczenia są niezbędne. W tym artykule krok po kroku wyjaśnimy, jak przeprowadzić te obliczenia, podamy praktyczne przykłady i pokażemy, jak zminimalizować straty cieplne w Twoim domu.</p>



<h2 class="wp-block-heading">Podstawowy wzór na straty cieplne – od czego zacząć?</h2>



<p class="wp-block-paragraph">Aby oszacować <strong>straty energii cieplnej</strong>, stosuje się uniwersalny wzór:</p>



<p class="wp-block-paragraph"><strong>Q = U × A × ΔT × t</strong></p>



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



<ul class="wp-block-list">
<li><strong>Q</strong> – całkowita utrata ciepła [W lub kWh],</li>



<li><strong>U</strong> – współczynnik przenikania ciepła przegrody [W/(m²·K)],</li>



<li><strong>A</strong> – powierzchnia przegrody [m²],</li>



<li><strong>ΔT</strong> – różnica temperatur między wnętrzem a otoczeniem [K],</li>



<li><strong>t</strong> – czas [h].</li>
</ul>



<p class="wp-block-paragraph">To równanie stanowi podstawę wszystkich obliczeń, ale w praktyce uwzględnia się dodatkowe czynniki, takie jak mostki termiczne czy wentylacja.</p>



<h3 class="wp-block-heading">Współczynnik przenikania ciepła (U) – dlaczego jest tak ważny?</h3>



<p class="wp-block-paragraph"><em>Współczynnik U</em> określa, ile ciepła przenika przez 1 m² przegrody przy różnicy temperatur 1 K. Im niższa jego wartość, tym lepsza izolacja.</p>



<ul class="wp-block-list">
<li>Ściana z cegły bez izolacji: <strong>U ≈ 1,5 W/(m²·K)</strong>,</li>



<li>Ściana z ociepleniem styropianem 15 cm: <strong>U ≈ 0,2 W/(m²·K)</strong>.</li>
</ul>



<p class="wp-block-paragraph"><strong>Przykład:</strong><br>Dla ściany o powierzchni 20 m² i współczynniku U = 0,3 W/(m²·K), przy ΔT = 20°C (np. 20°C w domu vs. 0°C na zewnątrz):<br><strong>Q = 0,3 × 20 × 20 = 120 W/godz.</strong><br>W skali miesiąca (720 godzin) da to <strong>86,4 kWh</strong> strat.</p>



<h2 class="wp-block-heading">Powierzchnia przegród i mostki termiczne – gdzie szukać słabych punktów?</h2>



<p class="wp-block-paragraph">Każda przegroda (okna, drzwi, podłoga) przyczynia się do <strong>utraty energii</strong>. Kluczowe jest precyzyjne zmierzenie ich powierzchni. Nie wolno jednak zapominać o <strong>mostkach termicznych</strong> – miejscach, gdzie izolacja jest przerwana (np. nadproża, wieńce stropowe). Mogą one zwiększyć straty nawet o 20-30%!</p>



<h3 class="wp-block-heading">Jak obliczyć straty przez okna?</h3>



<p class="wp-block-paragraph">Okna to jedne z najbardziej newralgicznych elementów. Współczynnik U dla szyb wynosi zwykle <strong>1,0-1,5 W/(m²·K)</strong>, ale dla całego okna (z ramą) może sięgać nawet <strong>2,0 W/(m²·K)</strong>.</p>



<p class="wp-block-paragraph"><strong>Przykład:</strong><br>Okno o powierzchni 2 m² i U = 1,8 W/(m²·K), przy ΔT = 25°C:<br><strong>Q = 1,8 × 2 × 25 = 90 W/godz.</strong><br>W ciągu doby: <strong>2,16 kWh</strong>.</p>



<h2 class="wp-block-heading">Różnica temperatur (ΔT) – jak ją realistycznie oszacować?</h2>



<p class="wp-block-paragraph">ΔT to nie stała wartość – zależy od strefy klimatycznej i pory roku. W Polsce średnia temperatura zimą wynosi ok. <strong>-5°C</strong>, ale w obliczeniach często przyjmuje się <strong>-20°C</strong> dla najzimniejszych dni. Wewnętrzną temperaturę zwykle zakłada się na <strong>20°C</strong>, co daje ΔT = 40 K.</p>



<p class="wp-block-paragraph"><strong>Wskazówka:</strong> Jeśli budynek jest ogrzewany okresowo (np. domki letniskowe), ΔT należy dostosować do rzeczywistych warunków.</p>



<h2 class="wp-block-heading">Straty ciepła przez wentylację – niewidoczny „uciekinier”.</h2>



<p class="wp-block-paragraph">Nawet najlepiej ocieplony budynek traci energię poprzez <strong>wentylację grawitacyjną</strong> lub mechaniczną. Straty te oblicza się wzorem:</p>



<p class="wp-block-paragraph"><strong>Q = 0,33 × V × ΔT × t</strong></p>



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



<ul class="wp-block-list">
<li><strong>V</strong> – objętość wymienianego powietrza [m³/h],</li>



<li><strong>0,33</strong> – pojemność cieplna powietrza [Wh/(m³·K)].</li>
</ul>



<p class="wp-block-paragraph"><strong>Przykład:</strong><br>Dla domu o kubaturze 300 m³, z 1-krotną wymianą powietrza na godzinę i ΔT = 25°C:<br><strong>Q = 0,33 × 300 × 25 = 2475 W/godz.</strong><br>To aż <strong>59,4 kWh/dobę</strong>! Rozwiązaniem jest rekuperator, który odzyskuje do 90% ciepła.</p>



<h2 class="wp-block-heading">Projekt ogrzewania podłogowego a straty cieplne – dlaczego to istotne?</h2>



<p class="wp-block-paragraph"><strong><a href="https://projekt-ogrzewania.pl">Ogrzewanie podłogowe</a></strong> to popularne rozwiązanie, które wpływa na sposób dystrybucji ciepła w budynku. Jego uwzględnienie w obliczeniach <strong>strat cieplnych</strong> jest kluczowe z kilku powodów. Po pierwsze, system ten działa przy niższych temperaturach wody grzewczej (30-45°C) w porównaniu do grzejników (60-70°C), co zmienia rozkład temperatur w pomieszczeniach. Po drugie, brak odpowiedniej izolacji pod posadzką może prowadzić do <strong>znacznych strat energii w kierunku gruntu lub piwnicy</strong>.</p>



<h3 class="wp-block-heading">Jak ogrzewanie podłogowe wpływa na obliczenia?</h3>



<p class="wp-block-paragraph">W przypadku podłogówki należy precyzyjnie określić współczynnik <strong>U dla podłogi</strong>, uwzględniając warstwy izolacji pod <a href="https://projekt-ogrzewania.pl/rury-do-ogrzewania-podlogowego/">rurkami grzewczymi</a>. Standardowo zaleca się minimum <strong>10 cm styropianu lub pianki PIR</strong> pod instalacją. Bez tego nawet 30% ciepła może „uciekać” w dół.</p>



<p class="wp-block-paragraph"><strong>Przykład:</strong><br>Dla podłogi o powierzchni 50 m², U = 0,15 W/(m²·K) (dobre ocieplenie) vs. U = 0,6 W/(m²·K) (brak izolacji), przy ΔT = 10°C (różnica między podłogą a gruntem):</p>



<ul class="wp-block-list">
<li>Straty przy izolacji: <strong>0,15 × 50 × 10 = 75 W/godz.</strong></li>



<li>Straty bez izolacji: <strong>0,6 × 50 × 10 = 300 W/godz.</strong></li>
</ul>



<p class="wp-block-paragraph">Różnica to <strong>225 W/godz.</strong>, co w sezonie grzewczym przekłada się na setki złotych!</p>



<h3 class="wp-block-heading">Ciepła podłoga = mniejsze straty przez przegrody?</h3>



<p class="wp-block-paragraph">Dzięki równomiernemu rozprowadzeniu ciepła, ogrzewanie podłogowe redukuje tzw. <strong>efekt „zimnych stref”</strong> przy ścianach zewnętrznych, co pośrednio ogranicza zawilgocenie i straty przez mostki termiczne. Jednak bez właściwego <a href="https://projekt-ogrzewania.pl/kategoria-produktu/projekty/">projektu ogrzewania podłogowego</a> i izolacji sam system może stać się źródłem dodatkowych <strong>strat energii</strong>.</p>



<h2 class="wp-block-heading">Metoda obliczeniowa krok po kroku – case study.</h2>



<p class="wp-block-paragraph">Przeanalizujmy <strong>straty cieplne</strong> dla domu jednorodzinnego o powierzchni 120 m²:</p>



<ol class="wp-block-list">
<li><strong>Ściany zewnętrzne (U = 0,25 W/(m²·K), A = 200 m², ΔT = 25°C):</strong><br>Q = 0,25 × 200 × 25 = 1250 W/godz.</li>



<li><strong>Dach (U = 0,15 W/(m²·K), A = 150 m²):</strong><br>Q = 0,15 × 150 × 25 = 562,5 W/godz.</li>



<li><strong>Okna (U = 1,6 W/(m²·K), A = 25 m²):</strong><br>Q = 1,6 × 25 × 25 = 1000 W/godz.</li>



<li><strong>Wentylacja (V = 300 m³/h):</strong><br>Q = 0,33 × 300 × 25 = 2475 W/godz.</li>
</ol>



<p class="wp-block-paragraph"><strong>Całkowita utrata ciepła:</strong> 1250 + 562,5 + 1000 + 2475 = <strong>5287,5 W/godz.</strong><br>W skali miesiąca (720 godzin): <strong>3807 kWh</strong>. Przy cenie 0,80 zł/kWh daje to <strong>3045 zł miesięcznie</strong>!</p>



<h2 class="wp-block-heading">Jak ograniczyć straty energii? Praktyczne porady</h2>



<ul class="wp-block-list">
<li><strong>Termomodernizacja:</strong> Wymiana okien, ocieplenie ścian i dachu.</li>



<li><strong>Rekuperacja:</strong> Odzysk ciepła z powietrza wywiewanego.</li>



<li><strong>Uszczelnienie mostków termicznych:</strong> Szczególnie wokół okien i drzwi.</li>



<li><strong>Kontrola wentylacji:</strong> Unikaj nadmiernego wietrzenia zimą.</li>
</ul>



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



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1740046185057"><strong class="schema-faq-question"><strong>Dlaczego warto obliczać straty cieplne w budynkach?</strong></strong> <p class="schema-faq-answer">Obliczenia pozwalają określić, gdzie i ile energii traci budynek, co pomaga zaplanować termomodernizację i obniżyć rachunki za ogrzewanie.</p> </div> <div class="schema-faq-section" id="faq-question-1740046212722"><strong class="schema-faq-question"><strong>Jakie czynniki wpływają na straty cieplne?</strong></strong> <p class="schema-faq-answer">Najważniejsze to współczynnik przenikania ciepła (U), powierzchnia przegród, różnica temperatur (ΔT), mostki termiczne i wentylacja.</p> </div> <div class="schema-faq-section" id="faq-question-1740046222108"><strong class="schema-faq-question"><strong>Czym są mostki termiczne i jak wpływają na straty ciepła?</strong></strong> <p class="schema-faq-answer">Mostki termiczne to miejsca, gdzie izolacja jest przerwana, np. nadproża. Mogą zwiększyć straty cieplne nawet o 20-30%.</p> </div> <div class="schema-faq-section" id="faq-question-1740046235745"><strong class="schema-faq-question"><strong>Jak ogrzewanie podłogowe wpływa na straty cieplne</strong></strong> <p class="schema-faq-answer">Ogrzewanie podłogowe wymaga dobrej izolacji pod posadzką, aby uniknąć strat energii w kierunku gruntu. Bez niej nawet 30% ciepła może „uciekać”.</p> </div> <div class="schema-faq-section" id="faq-question-1740046251275"><strong class="schema-faq-question"><strong>Jak zmniejszyć straty cieplne w istniejącym budynku?</strong></strong> <p class="schema-faq-answer">Wymiana okien, ocieplenie ścian i dachu, uszczelnienie mostków termicznych oraz montaż rekuperatora to skuteczne metody redukcji strat.</p> </div> </div>



<h2 class="wp-block-heading">Podsumowanie: Dlaczego warto obliczać straty cieplne?</h2>



<p class="wp-block-paragraph">Precyzyjne <strong>obliczenie strat cieplnych</strong> to podstawa do opracowania strategii oszczędzania energii. Dzięki nim można wybrać optymalne materiały izolacyjne, zaplanować modernizację lub dobrać moc systemu grzewczego. Pamiętaj: każda złotówka zainwestowana w termoizolację zwraca się kilkukrotnie w niższych rachunkach za ogrzewanie!</p>



<figure class="wp-block-embed aligncenter is-type-wp-embed is-provider-projekt-ogrzewania wp-block-embed-projekt-ogrzewania"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="JYHCXHTaq8"><a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Projekt instalacji ogrzewania podłogowego &#8211; podłogówki</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8222;Projekt instalacji ogrzewania podłogowego &#8211; podłogówki&#8221; &#8212; Projekt Ogrzewania" src="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/embed/#?secret=aybNnS2mpI#?secret=JYHCXHTaq8" data-secret="JYHCXHTaq8" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">Jak oblicza się straty cieplne w budynkach?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Rozstaw rur ogrzewania podłogowego przy pompie ciepła.</title>
		<link>https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/</link>
					<comments>https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 22 Dec 2024 11:02:08 +0000</pubDate>
				<category><![CDATA[Ekologiczne ogrzewanie]]></category>
		<category><![CDATA[Energooszczędne budownictwo]]></category>
		<category><![CDATA[Niskotemperaturowe systemy grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Oszczędzanie energii]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Projekty grzewcze]]></category>
		<category><![CDATA[Rozstaw rur ogrzewania]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[izolacja budynku]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[niskotemperaturowe ogrzewanie]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędne ogrzewanie]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[rozstaw rur]]></category>
		<category><![CDATA[system grzewczy]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=1823</guid>

					<description><![CDATA[<p>Ogrzewanie domu za pomocą pompy ciepła to oszczędne i ekologiczne rozwiązanie. Kluczem do efektywności systemu jest odpowiednio zaprojektowany rozstaw rur ogrzewania podłogowego przy pompie ciepła oraz utrzymanie niskiej temperatury zasilania na poziomie 35 stopni Celsjusza. Dowiedz się, jak optymalnie zaplanować układ grzewczy, zadbać o izolację budynku oraz jakich zasad przestrzegać, aby pompa ciepła pracowała wydajnie i ekonomicznie przez długie lata.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">Rozstaw rur ogrzewania podłogowego przy pompie ciepła.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Instalacja ogrzewania podłogowego w połączeniu z pompą ciepła staje się coraz bardziej popularnym wyborem w polskich domach. Aby zapewnić optymalne działanie takiego systemu, kluczowe znaczenie ma prawidłowy <strong>rozstaw rur ogrzewania podłogowego przy pompie ciepła</strong>. W tym artykule dowiesz się, jakie rozstawy rur są zalecane przy wykorzystaniu pompy ciepła, jakie czynniki wpływają na ich wybór oraz dlaczego warto skorzystać z profesjonalnego projektu.</p>



<h2 class="wp-block-heading">Dlaczego rozstaw rur przy pompie ciepła jest tak ważny?</h2>



<p class="wp-block-paragraph">Rozstaw rur ogrzewania podłogowego wpływa bezpośrednio na efektywność systemu grzewczego oraz komfort cieplny w pomieszczeniach. W przypadku pompy ciepła, która pracuje najefektywniej przy niskiej temperaturze zasilania (około 35 stopni Celsjusza), prawidłowy rozstaw rur pozwala na:</p>



<ul class="wp-block-list">
<li><strong>Równomierne rozprowadzanie ciepła na całej powierzchni podłogi.</strong> Zbyt duży rozstaw rur może prowadzić do powstawania tzw. &#8222;zimnych stref&#8221; na podłodze, co negatywnie wpływa na komfort użytkowników. Odpowiednio dobrany rozstaw zapewnia jednolite rozprowadzanie ciepła, szczególnie w pomieszczeniach o dużej powierzchni lub w strefach intensywnie użytkowanych.</li>



<li><strong>Zminimalizowanie strat ciepła.</strong> Właściwe rozmieszczenie rur pozwala ograniczyć straty energii cieplnej, co jest kluczowe w systemach wykorzystujących pompę ciepła. Szczególnie istotne jest uwzględnienie odpowiednich stref brzegowych w pobliżu okien czy drzwi zewnętrznych.</li>



<li><strong>Zapewnienie komfortu cieplnego przy jednoczesnym obniżeniu kosztów eksploatacji.</strong> Pompy ciepła są najbardziej ekonomiczne, gdy pracują w niskotemperaturowych układach grzewczych. Odpowiedni rozstaw rur pozwala uzyskać oczekiwany komfort cieplny bez konieczności podnoszenia temperatury zasilania, co bezpośrednio przekłada się na mniejsze zużycie energii i niższe rachunki.</li>
</ul>



<p class="wp-block-paragraph">Dodatkowo, poprawnie zaprojektowany system uwzględnia specyfikę poszczególnych pomieszczeń, takich jak łazienki, gdzie wymagana jest wyższa temperatura podłogi, czy strefy mniej użytkowane, gdzie możliwe są większe rozstawy rur.</p>



<h2 class="wp-block-heading">Zalecane rozstawy rur przy pompie ciepła.</h2>



<h3 class="wp-block-heading">Rozstaw rur ogrzewania podłogowego przy pompie ciepła w zależności od rodzaju podłogi.</h3>



<ul class="wp-block-list">
<li><strong>Panele podłogowe:</strong> Przy panelach zalecany rozstaw rur wynosi <strong>10 cm</strong>. Taki układ pozwala na szybkie i równomierne ogrzanie powierzchni, co jest szczególnie ważne przy niskiej temperaturze zasilania.</li>



<li><strong>Płytki ceramiczne:</strong> W przypadku płytek rozstaw rur może wynosić od <strong>10 do 15 cm</strong>. Dłuższy rozstaw może być stosowany w mniej użytkowanych strefach, jednak w strefach intensywnego użytkowania (np. łazienka) warto pozostać przy 10 cm.</li>
</ul>



<h3 class="wp-block-heading">Czynniki wpływające na rozstaw rur.</h3>



<ul class="wp-block-list">
<li><strong>Izolacja budynku:</strong> Im lepsza izolacja termiczna, tym możliwy jest większy rozstaw rur bez utraty komfortu cieplnego.</li>



<li><strong>Przeznaczenie pomieszczenia:</strong> W pomieszczeniach o wyższych wymaganiach cieplnych (np. łazienki) zaleca się gęstszy rozstaw rur.</li>



<li><strong>Układ pomieszczeń i przeszklenia:</strong> W miejscach z dużymi przeszkleniami lub wzdłuż ścian zewnętrznych warto zastosować tzw. &#8222;strefy brzegowe&#8221; z rozstawem rur co 10 cm a w szczególnych przypadkach nawet co 5 cm.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Rola profesjonalnego projektu w doborze rozstawu rur</h2>



<p class="wp-block-paragraph">Każdy system <a href="https://projekt-ogrzewania.pl/">ogrzewania podłogowego</a> powinien być projektowany indywidualnie. Profesjonalny projekt uwzględnia m.in.:</p>



<ul class="wp-block-list">
<li>Charakterystykę termiczną budynku.</li>



<li>Rodzaj podłogi.</li>



<li>Przeznaczenie i wielkość pomieszczeń.</li>



<li>Lokalizację rozdzielaczy i długość pętli grzewczych.</li>
</ul>



<p class="wp-block-paragraph">Na stronie <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">projekt-ogrzewania.pl</a> znajdziesz ofertę profesjonalnych projektów ogrzewania podłogowego, które pomogą w optymalnym zaplanowaniu instalacji. Warto także zajrzeć na <a href="https://projekt-ogrzewania.pl/blog/">blog</a> firmy, gdzie znajdziesz praktyczne porady dotyczące instalacji i eksploatacji systemów grzewczych.</p>



<h2 class="wp-block-heading">Jak oszczędnie ogrzewać dom pompą ciepła?</h2>



<p class="wp-block-paragraph">Efektywność pompy ciepła zależy od utrzymania niskiej temperatury zasilania. <strong>Temperatura zasilania na poziomie 35 stopni Celsjusza</strong> pozwala na znaczne obniżenie kosztów ogrzewania, jednak wymaga to odpowiedniego rozstawu rur oraz starannego planowania całego systemu grzewczego. Niskotemperaturowe układy grzewcze są nie tylko bardziej ekonomiczne, ale też bardziej ekologiczne, ponieważ pompa ciepła zużywa mniej energii elektrycznej, pracując w optymalnych warunkach.</p>



<h3 class="wp-block-heading">Wskazówki:</h3>



<ul class="wp-block-list">
<li><strong>Dostosuj rozstaw rur:</strong> Im większa gęstość rur, tym bardziej efektywne rozprowadzanie ciepła na powierzchni podłogi. Przy panelach podłogowych zaleca się rozstaw rur co 10 cm, natomiast przy płytkach ceramicznych można stosować rozstaw od 10 do 15 cm, w zależności od potrzeb cieplnych pomieszczenia.</li>



<li><strong>Zadbaj o izolację budynku:</strong> Dobra izolacja termiczna ścian, dachu i podłogi minimalizuje straty ciepła, co umożliwia utrzymanie niskiej temperatury zasilania bez obniżania komfortu cieplnego. Szczególnie ważne jest zastosowanie izolacji brzegowej w systemie ogrzewania podłogowego, aby uniknąć strat energii wzdłuż krawędzi pomieszczeń.</li>



<li><strong>Zaprojektuj system z wyprzedzeniem:</strong> Profesjonalny projekt uwzględnia wszystkie kluczowe zmienne, takie jak charakterystyka termiczna budynku, rodzaj podłogi, przeznaczenie pomieszczeń oraz lokalizacja rozdzielaczy. Dzięki temu cały system jest dostosowany do wymagań pompy ciepła, co przełoży się na wyższą wydajność i długotrwałą niezawodność.</li>



<li><strong>Regularna konserwacja i optymalizacja:</strong> Regularne przeglądy instalacji oraz odpowiednie ustawienia systemu grzewczego pozwalają utrzymać jego maksymalną efektywność. Warto kontrolować poziom cieczy w obiegu pompy ciepła oraz stan izolacji rur.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



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



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1734863841270"><strong class="schema-faq-question"><strong>1. Jaki rozstaw rur w ogrzewaniu podłogowym jest najlepszy dla pompy ciepła?</strong></strong> <p class="schema-faq-answer">Rozstaw rur powinien wynosić 10 cm dla paneli oraz 10–15 cm dla płytek ceramicznych. Gęstszy rozstaw zapewnia lepsze rozprowadzanie ciepła przy niskiej temperaturze zasilania.</p> </div> <div class="schema-faq-section" id="faq-question-1734863872365"><strong class="schema-faq-question"><strong>2. Czy mogę samodzielnie zaprojektować rozstaw rur w ogrzewaniu podłogowym?</strong></strong> <p class="schema-faq-answer">Nie zaleca się samodzielnego projektowania rozstawu rur, ponieważ wymaga to uwzględnienia wielu zmiennych. Skorzystaj z profesjonalnego projektu, dostępnego na <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">projekt-ogrzewania.pl</a>.</p> </div> <div class="schema-faq-section" id="faq-question-1734863906375"><strong class="schema-faq-question"><strong>3. Czy rozstaw rur grzewczych ma wpływ na koszty eksploatacji?</strong></strong> <p class="schema-faq-answer">Tak, gęstszy rozstaw rur pozwala na obniżenie temperatury zasilania, co przekłada się na niższe rachunki za ogrzewanie.</p> </div> <div class="schema-faq-section" id="faq-question-1734863918800"><strong class="schema-faq-question"><strong>4. Czy pompa ciepła nadaje się do każdego budynku?</strong></strong> <p class="schema-faq-answer">Pompa ciepła sprawdza się najlepiej w budynkach z dobrą izolacją termiczną. Przed instalacją warto wykonać szczegółowe obliczenia i projekt.</p> </div> </div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph"><em>Odpowiednio zaplanowany rozstaw rur w systemie ogrzewania podłogowego przy pompie ciepła jest kluczowy dla efektywnej pracy pompy ciepła. Nie zapomnij skorzystać z profesjonalnego projektu, który zapewni Ci komfort i oszczędności na długie lata.</em></p>



<figure class="wp-block-embed aligncenter is-type-wp-embed is-provider-projekt-ogrzewania wp-block-embed-projekt-ogrzewania"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="Q86L11X55F"><a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Projekt instalacji ogrzewania podłogowego &#8211; podłogówki</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8222;Projekt instalacji ogrzewania podłogowego &#8211; podłogówki&#8221; &#8212; Projekt Ogrzewania" src="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/embed/#?secret=JnHCDRSRkh#?secret=Q86L11X55F" data-secret="Q86L11X55F" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>



<p class="wp-block-paragraph"></p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">Rozstaw rur ogrzewania podłogowego przy pompie ciepła.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
