<?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 projekt ozc - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/tag/projekt-ozc/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/tag/projekt-ozc/</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 projekt ozc - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/projekt-ozc/</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>
					<comments>https://projekt-ogrzewania.pl/najczestsze-bledy-na-budowie-ktore-psuja-nawet-najlepszy-projekt-ogrzewania-podlogowego/#respond</comments>
		
		<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>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/najczestsze-bledy-na-budowie-ktore-psuja-nawet-najlepszy-projekt-ogrzewania-podlogowego/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ogrzewanie podłogowe w domu szkieletowym – kluczowe różnice i pułapki.</title>
		<link>https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/</link>
					<comments>https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Thu, 26 Mar 2026 10:11:32 +0000</pubDate>
				<category><![CDATA[Błędy budowlane]]></category>
		<category><![CDATA[Błędy instalacyjne]]></category>
		<category><![CDATA[Domy drewniane]]></category>
		<category><![CDATA[Domy szkieletowe]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Koszty budowy domu]]></category>
		<category><![CDATA[Koszty inwestycji]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Porady budowlane]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Porady inwestycyjne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Systemy zabudowy suchej]]></category>
		<category><![CDATA[bezwładność cieplna]]></category>
		<category><![CDATA[błędy instalacyjne]]></category>
		<category><![CDATA[dom drewniany]]></category>
		<category><![CDATA[dom szkieletowy]]></category>
		<category><![CDATA[jastrych cementowy]]></category>
		<category><![CDATA[koszty ogrzewania]]></category>
		<category><![CDATA[lamele aluminiowe]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[ozc]]></category>
		<category><![CDATA[podłogówka]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[projekt ozc]]></category>
		<category><![CDATA[system suchy]]></category>
		<category><![CDATA[wylewka anhydrytowa]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=4030</guid>

					<description><![CDATA[<p>Planowanie instalacji grzewczej w budynku o lekkiej konstrukcji drewnianej wymaga zupełnie innego podejścia niż w tradycyjnym budownictwie murowanym. Niska bezwładność cieplna, brak ciężkich ścian akumulujących energię oraz ryzyko przeciążenia stropów sprawiają, że standardowe schematy instalatorów często tutaj zawodzą. W tym artykule bierzemy pod lupę temat, jakim jest ogrzewanie podłogowe w domu szkieletowym – kluczowe różnice i pułapki, na które najczęściej wpadają inwestorzy. Dowiesz się, dlaczego system suchy deklasuje ciężką wylewkę, jak uniknąć kosztownego przewymiarowania rur, dlaczego optymalizacja temperatury zasilania jest kluczowa dla żywotności pompy ciepła, oraz o co dokładnie zapytać wykonawcę przed podpisaniem umowy.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/">Ogrzewanie podłogowe w domu szkieletowym – kluczowe różnice i pułapki.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Decyzja o montażu&nbsp;<strong>ogrzewania podłogowego w domu szkieletowym</strong>&nbsp;to wybór komfortu, ale też pierwszy test wiedzy wykonawców i projektantów. Wbrew pozorom nie jest to rozwiązanie, które można przenieść wprost z budownictwa murowanego, zmieniając jedynie rodzaj stropu. Różnice zaczynają się na etapie fizyki budowli i kończą na doborze sterowania.</p>



<p class="wp-block-paragraph">Domy szkieletowe charakteryzuje przede wszystkim&nbsp;<strong>lekkość konstrukcji</strong>&nbsp;i&nbsp;<strong>niska bezwładność cieplna</strong>. Ściany z wypełnieniem z wełny mineralnej lub włókny drzewnej nie akumulują energii tak jak beton czy cegła. To oznacza, że system grzewczy musi być zaprojektowany pod kątem szybkiej reakcji na zmiany temperatury i niższych mocy jednostkowych. Jeśli podejdziesz do tematu schematem „co 10 cm i jak najwyższa temperatura”, efektem będzie przegrzewanie, dyskomfort, a w skrajnych przypadkach – uszkodzenie warstw wykończeniowych lub konstrukcji drewnianej.</p>



<p class="wp-block-paragraph">W tym artykule pokazuję, czym tak naprawdę różni się&nbsp;<strong>podłogówka w domu szkieletowym</strong>&nbsp;od tej w murowanym, na co zwrócić uwagę przy projektowaniu i jakie błędy najczęściej kosztują inwestorów spokój i dodatkowe pieniądze.</p>



<h2 class="wp-block-heading">Specyfika strat ciepła w konstrukcji drewnianej – co projektant powinien wiedzieć?</h2>



<h3 class="wp-block-heading">Akumulacyjność i jej wpływ na komfort cieplny.</h3>



<p class="wp-block-paragraph">W domu murowanym ciężka podłoga i ściany działają jak bufor. Nawet jeśli na kilka godzin wyłączysz ogrzewanie, temperatura spada powoli. W konstrukcji szkieletowej sytuacja wygląda inaczej. Przy dobrze ocieplonej przegrodzie straty ciepła są niskie, ale&nbsp;<strong>brak masy powoduje, że temperatura wewnątrz szybko reaguje na zmiany mocy grzewczej</strong>.</p>



<p class="wp-block-paragraph">Przykład:</p>



<ul class="wp-block-list">
<li>W domu murowanym (jastrych 7 cm + ściana 30 cm) zmiana temperatury zasilania z 40°C na 30°C da odczuwalny efekt po około 4–6 godzinach.</li>



<li>W domu szkieletowym z systemem suchym (płyty z kanałami, wylewka anhydrytowa 3 cm) ta sama zmiana da efekt po 1–2 godzinach.</li>
</ul>



<p class="wp-block-paragraph">To nie jest wada to cecha, którą trzeba wykorzystać. <strong>Ogrzewanie podłogowe w domu szkieletowym</strong> może być znacznie bardziej elastyczne niż w budownictwie tradycyjnym, pod warunkiem że zastosuje się odpowiednie sterowanie i nie przewymiaruje instalacji.</p>



<h3 class="wp-block-heading">Straty w dół i rola izolacji fundamentu.</h3>



<p class="wp-block-paragraph">W domach szkieletowych często stosuje się <strong>płytę fundamentową na gruncie</strong> lub strop nad nieogrzewaną piwnicą. Jeśli izolacja pod posadzką jest zbyt cienka (poniżej 15 cm styropianu EPS 100 lub <a href="https://projekt-ogrzewania.pl" type="link" id="https://projekt-ogrzewania.pl">200</a> przy podłogówce jako jedynym źródle ciepła), straty w dół mogą wynosić nawet 20–30% mocy systemu. W praktyce oznacza to, że inwestor płaci za ogrzewanie gruntu, a nie domu.</p>



<p class="wp-block-paragraph"><strong>Zalecenie:</strong>&nbsp;dla domu szkieletowego z podłogówką na gruncie należy przyjąć opór cieplny izolacji pod posadzką na poziomie&nbsp;<strong>R ≥ 4,5 (m²·K)/W</strong>, co odpowiada grubości styropianu około&nbsp;<strong>20 cm</strong>&nbsp;(λ=0,035). W przypadku stropu nad piwnicą wystarczy 15–18 cm, ale konieczne jest zabezpieczenie paroizolacją od dołu.</p>



<h3 class="wp-block-heading">Parametry podłogówki: Szkielet vs Murowany</h3>



<p class="wp-block-paragraph">Projektowanie ogrzewania w domu szkieletowym wymaga całkowitego zerwania z przyzwyczajeniami z budownictwa tradycyjnego. <a href="https://projekt-ogrzewania.pl/">Zestawienie przygotowane przez inżynierów Projekt-Ogrzewania.pl</a>.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Parametr</th><th>Dom murowany (jastrych ciężki)</th><th>Dom szkieletowy (system suchy/lekki)</th></tr></thead><tbody><tr><td>🌡️ Temperatura zasilania</td><td>35–45°C</td><td>28–35°C</td></tr><tr><td>📏 Rozstaw rur</td><td>10–15 cm (łazienki), 15–20 cm (pokoje)</td><td><strong>10–20 cm</strong></td></tr><tr><td>⚡ Moc jednostkowa max</td><td>do 100 W/m²</td><td><strong>50–80 W/m²</strong></td></tr><tr><td>🏗️ Grubość nadbetonu/wylewki</td><td>5–8 cm</td><td>2–5 cm (anhydryt lub system suchy)</td></tr><tr><td>⏱️ Reakcja na regulację</td><td>wolna (4–6 h)</td><td>szybka (0,5–1,5 h)</td></tr><tr><td>🦶 Maksymalna temp. podłogi</td><td>29°C (dopuszczalna)</td><td><strong>27°C</strong> (zalecana dla komfortu)</td></tr></tbody></table></figure>



<h4 class="wp-block-heading">Dlaczego niższa temperatura zasilania?</h4>



<p class="wp-block-paragraph">Dlaczego niższa temperatura zasilania? W lekkiej konstrukcji <strong>nie ma masy akumulującej</strong>, która łagodziłaby wahania. Jeśli poprowadzisz wodę o temperaturze 45°C przez rury w płycie suchej, podłoga nagrzeje się do ponad 29°C w ciągu 2–3 godzin, powodując dyskomfort termiczny i wysuszanie drewnianej podłogi lub paneli.</p>



<p class="wp-block-paragraph"><strong>Przykład obliczeniowy:</strong><br>Załóżmy pokój o powierzchni 25 m² w domu szkieletowym z zapotrzebowaniem na ciepło 45 W/m² (dane z projektu OZC).</p>



<ul class="wp-block-list">
<li>Przy rozstawie rur&nbsp;<strong>20 cm</strong>&nbsp;i temperaturze zasilania&nbsp;<strong>32°C</strong>&nbsp;uzyskujemy moc jednostkową około 55–60 W/m² – to wystarcza.</li>



<li>Przy rozstawie <strong>10 cm</strong> i tej samej temperaturze moc wzrasta do 85–90 W/m², co przy niskim zapotrzebowaniu spowoduje przegrzewanie i ciągłe wyłączanie się <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/" type="link" id="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">termostatów</a> (cykliczność, która skraca żywotność siłowników i pompy).</li>
</ul>



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



<h2 class="wp-block-heading">System suchy vs. mokry – co sprawdzi się w domu szkieletowym?</h2>



<h3 class="wp-block-heading">Dlaczego system suchy jest zalecany?</h3>



<p class="wp-block-paragraph">W domu szkieletowym&nbsp;<strong>konstrukcja stropów i podłóg</strong>&nbsp;często opiera się na belkach drewnianych lub płycie OSB na legarach. Wlanie ciężkiego jastrychu cementowego (ok. 280–320 kg/m² przy grubości 6 cm) może być dopuszczalne statycznie, ale niesie ze sobą trzy ryzyka:</p>



<ol start="1" class="wp-block-list">
<li><strong>Wydłużenie czasu realizacji</strong>&nbsp;– jastrych cementowy schnie minimum 4–6 tygodni, a włączenie ogrzewania przed wyschnięciem grozi spekaniem.</li>



<li><strong>Ryzyko mikropęknięć</strong>&nbsp;– drewno pracuje (kurczy się i rozszerza) pod wpływem wilgoci i temperatury; sztywna, gruba wylewka może pękać przy większych ruchach konstrukcji.</li>



<li><strong>Obciążenie transportowe</strong>&nbsp;– w przypadku stropu nad piwnicą lub poddaszem użytkowym konieczna jest szczegółowa analiza nośności.</li>
</ol>



<p class="wp-block-paragraph">Systemy suche eliminują te problemy. Działają na zasadzie <strong>rur prowadzonych w kanałach płyt styropianowych</strong> lub <strong>mat <a href="https://projekt-ogrzewania.pl/produkt/lamel-grzejny-metalowy/" type="link" id="https://projekt-ogrzewania.pl/produkt/lamel-grzejny-metalowy/">aluminiowych</a></strong> układanych bezpośrednio pod panelami. Woda ogrzewa aluminiową warstwę rozprowadzającą ciepło, a nadmiar masy termicznej jest niewielki.</p>



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

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

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

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

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

.table-wrapper {
    padding: 0 40px;
    margin-top: 20px;
    overflow-x: auto; /* Zabezpieczenie na mniejszych ekranach desktopowych */
}

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

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

.compare-table th.col-system {
    text-align: left;
    color: #64748b;
    width: 31%;
}

.compare-table th.col-data {
    width: 23%;
}

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

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

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

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

.val-pill {
    display: inline-block;
    padding: 4px 12px;
    background: #f1f5f9;
    border-radius: 8px;
    font-weight: 700;
}

.val-pill.accent {
    background: #eff6ff;
    color: var(--accent);
}

.val-pill.danger {
    background: #fee2e2;
    color: var(--danger);
}

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

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

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

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

.card-project {
    border-color: #bfdbfe;
    background: #eff6ff;
}

.card-project h4 {
    color: var(--accent);
}

/* ROZWIĄZANIE DLA MOBILE - UKŁAD KARTOWY */
@media (max-width: 850px) {
    .compare-header { padding: 25px 20px; }
    .table-wrapper { padding: 0 15px; }
    .compare-footer { grid-template-columns: 1fr; padding: 20px 15px; gap: 20px; }
    
    .compare-table, .compare-table tbody, .compare-table tr, .compare-table td {
        display: block;
        width: 100%;
        box-sizing: border-box;
        min-width: auto;
    }
    
    .compare-table thead {
        display: none;
    }
    
    .compare-table tr {
        margin-bottom: 20px;
        border: 1px solid var(--border-color);
        border-radius: 16px;
        overflow: hidden;
        box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
    }
    
    .compare-table td {
        text-align: left;
        padding: 15px 20px;
        border-bottom: 1px solid #f1f5f9;
    }
    
    .compare-table td:last-child {
        border-bottom: none;
    }
    
    .compare-table td.param-name {
        background: var(--bg-light);
        font-size: 16px;
        border-bottom: 2px solid var(--border-color);
    }
    
    /* Dynamiczne etykiety kolumn dla wersji mobilnej */
    .compare-table td:nth-child(2)::before {
        content: "Materiały + robocizna (zł/m²):";
        display: block;
        font-weight: 700;
        margin-bottom: 6px;
        color: #64748b;
        font-size: 12px;
        text-transform: uppercase;
        letter-spacing: 0.5px;
    }
    
    .compare-table td:nth-child(3)::before {
        content: "Czas montażu:";
        display: block;
        font-weight: 700;
        margin-bottom: 6px;
        color: #64748b;
        font-size: 12px;
        text-transform: uppercase;
        letter-spacing: 0.5px;
    }

    .compare-table td:nth-child(4)::before {
        content: "Czas do oddania do użytku:";
        display: block;
        font-weight: 700;
        margin-bottom: 6px;
        color: #64748b;
        font-size: 12px;
        text-transform: uppercase;
        letter-spacing: 0.5px;
    }
    
    .compare-table tr:hover td {
        background: inherit;
    }
    
    .compare-table td.param-name:hover {
        background: var(--bg-light);
    }
}
</style>

<div class="premium-compare" id="systems-compare-app">
    <div class="compare-header">
        <h3>System suchy vs mokry – co się opłaca?</h3>
        <p>Decyzja o wyborze technologii to nie tylko cena za metr kwadratowy materiału. To przede wszystkim czas oczekiwania i ryzyko opóźnień na budowie. <a href="https://projekt-ogrzewania.pl/" style="color: var(--accent); font-weight: 700; text-decoration: none;">Zestawienie przygotowane przez Projekt-Ogrzewania.pl</a>.</p>
    </div>

    <div class="table-wrapper">
        <table class="compare-table">
            <thead>
                <tr>
                    <th class="col-system">System</th>
                    <th class="col-data">Materiały + robocizna (zł/m²)</th>
                    <th class="col-data">Czas montażu</th>
                    <th class="col-data">Czas do oddania do użytku</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td class="param-name"><span class="icon">🧩</span> Suchy frezowany (EPS + rury)</td>
                    <td><strong>200–260 zł</strong></td>
                    <td>3–5 dni</td>
                    <td><span class="val-pill accent">natychmiast</span> (po rozruchu)</td>
                </tr>
                <tr>
                    <td class="param-name"><span class="icon">✨</span> Suchy na matach aluminiowych</td>
                    <td><strong>180–230 zł</strong></td>
                    <td>4–6 dni</td>
                    <td><span class="val-pill accent">natychmiast</span> (po rozruchu)</td>
                </tr>
                <tr>
                    <td class="param-name"><span class="icon">💧</span> Wylewka anhydrytowa (4 cm)</td>
                    <td>140–190 zł</td>
                    <td>2–3 dni + 7 dni schnięcia</td>
                    <td>po 2–3 tygodniach</td>
                </tr>
                <tr>
                    <td class="param-name"><span class="icon">🪨</span> Jastrych cementowy (6 cm)</td>
                    <td>130–170 zł</td>
                    <td>2–3 dni + 6 tyg. schnięcia</td>
                    <td><span class="val-pill danger">po 6–8 tygodniach</span></td>
                </tr>
            </tbody>
        </table>
    </div>

    <div class="compare-footer">
        <div class="summary-card">
            <h4>Pozorna oszczędność wylewki</h4>
            <p>Jastrych cementowy jest najtańszy na etapie wykonania, ale drastycznie opóźnia budowę. 6 do 8 tygodni oczekiwania na związanie i wyschnięcie betonu to czas, w którym ponosisz koszty utrzymania obecnego mieszkania lub raty kredytu. Wlewasz też do drewnianego domu szkieletowego ogromne ilości wilgoci technologicznej.</p>
        </div>
        
        <div class="summary-card card-project">
            <h4>Szybkość systemu suchego</h4>
            <p>Choć koszt początkowy systemu suchego jest o ok. 20-30% wyższy, zyskujesz natychmiastową gotowość do pracy. Brak masywnej wylewki to brak wilgoci, idealna współpraca z lekką konstrukcją domu szkieletowego i natychmiastowa reakcja podłogówki na zmiany temperatury. Różnica w cenie często bilansuje się poprzez skrócenie czasu trwania inwestycji.</p>
        </div>
    </div>
</div>

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



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

.premium-interactive-banner {
    max-width: 900px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: linear-gradient(145deg, #ffffff, #f8fafc);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(37, 99, 235, 0.1);
    border: 2px solid var(--border-color);
    overflow: hidden;
    color: var(--primary);
    position: relative;
    transition: all 0.4s ease;
}

/* KROK 1: Pytanie */
.banner-step-1 {
    padding: 40px;
    text-align: center;
    transition: opacity 0.4s ease, transform 0.4s ease;
}

.banner-step-1.hidden {
    opacity: 0;
    transform: scale(0.95);
    position: absolute;
    pointer-events: none;
    visibility: hidden;
}

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

.banner-subtitle {
    font-size: 15px;
    color: #475569;
    margin: 0 0 30px 0;
}

.banner-options {
    display: flex;
    justify-content: center;
    gap: 20px;
    flex-wrap: wrap;
}

.banner-btn-option {
    background: #ffffff;
    border: 2px solid var(--border-color);
    padding: 20px 30px;
    border-radius: 16px;
    cursor: pointer;
    font-size: 16px;
    font-weight: 700;
    color: #334155;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    transition: 0.3s;
    flex: 1;
    min-width: 200px;
    max-width: 300px;
}

.banner-btn-option span.icon {
    font-size: 32px;
}

.banner-btn-option:hover {
    border-color: var(--accent);
    background: #eff6ff;
    color: var(--accent);
    transform: translateY(-3px);
    box-shadow: 0 10px 20px rgba(37, 99, 235, 0.1);
}

/* KROK 2: Rozwiązanie */
.banner-step-2 {
    display: none;
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.5s ease, transform 0.5s ease;
}

.banner-step-2.active {
    display: flex;
    opacity: 1;
    transform: translateY(0);
}

.banner-content-split {
    display: flex;
    width: 100%;
}

.banner-text-side {
    padding: 40px;
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.banner-image-side {
    flex: 1;
    background: url('https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Comfort-Floor-Dry.webp') center/cover no-repeat;
    position: relative;
    min-height: 300px;
}

/* Nakładka na zdjęcie dla lepszego przejścia */
.banner-image-side::after {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background: linear-gradient(to right, #f8fafc 0%, transparent 20%);
}

.success-badge {
    background: #dcfce7;
    color: var(--success);
    padding: 6px 14px;
    border-radius: 50px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    display: inline-block;
    margin-bottom: 15px;
    align-self: flex-start;
}

.banner-text-side h3 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.2;
}

.banner-text-side p {
    font-size: 15px;
    color: #475569;
    line-height: 1.6;
    margin: 0 0 25px 0;
}

.mini-specs {
    display: flex;
    gap: 15px;
    margin-bottom: 25px;
    flex-wrap: wrap;
}

.spec-item {
    background: #ffffff;
    border: 1px solid var(--border-color);
    padding: 8px 12px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 700;
    color: #334155;
    display: flex;
    align-items: center;
    gap: 6px;
}

.spec-item span { color: var(--accent); }

.banner-cta-btn {
    background: var(--accent);
    color: #ffffff;
    text-decoration: none;
    padding: 16px 24px;
    border-radius: 12px;
    font-weight: 800;
    font-size: 14px;
    text-align: center;
    transition: 0.3s;
    border: none;
    cursor: pointer;
    align-self: flex-start;
}

.banner-cta-btn:hover {
    background: #1e40af;
    transform: translateY(-2px);
    box-shadow: 0 10px 20px rgba(37, 99, 235, 0.2);
}

@media (max-width: 768px) {
    .banner-content-split { flex-direction: column; }
    .banner-image-side { min-height: 200px; order: -1; }
    .banner-image-side::after { background: linear-gradient(to bottom, transparent 80%, #f8fafc 100%); }
    .banner-text-side { padding: 30px 20px; }
    .banner-cta-btn { align-self: stretch; }
    .banner-options { flex-direction: column; }
    .banner-btn-option { max-width: 100%; }
}
</style>

<div class="premium-interactive-banner" id="interactive-banner-app">
    
    <div class="banner-step-1" id="bannerStep1">
        <h3 class="banner-title">Z jakim wyzwaniem budowlanym się mierzysz?</h3>
        <p class="banner-subtitle">Wybierz swój przypadek, a pokażemy Ci optymalną technologię ogrzewania.</p>
        
        <div class="banner-options">
            <button class="banner-btn-option" onclick="showBannerSolution('szkielet')">
                <span class="icon">🪵</span>
                Buduję lekki dom szkieletowy / z bali
            </button>
            <button class="banner-btn-option" onclick="showBannerSolution('strop')">
                <span class="icon">🏚️</span>
                Remontuję stary drewniany strop
            </button>
        </div>
    </div>

    <div class="banner-step-2" id="bannerStep2">
        <div class="banner-content-split">
            <div class="banner-text-side">
                <span class="success-badge">Mamy idealne rozwiązanie!</span>
                <h3 id="solutionTitle">System Suchy KISAN Comfort Floor Dry</h3>
                <p>Ominiesz problem ciężkich, mokrych wylewek. Ten innowacyjny system z aluminiowymi lamelami nie obciąży konstrukcji i błyskawicznie reaguje na zmiany temperatury – idealnie współpracując z pompą ciepła.</p>
                
                <div class="mini-specs">
                    <div class="spec-item"><span>⚖️</span> Ultra lekkie</div>
                    <div class="spec-item"><span>📏</span> Od 61 mm grubości</div>
                    <div class="spec-item"><span>⏱️</span> Bez czekania na schnięcie</div>
                </div>

                <a href="https://projekt-ogrzewania.pl/comfort-floor-dry/" class="banner-cta-btn">Zobacz technologię i wyceń materiały →</a>
            </div>
            <div class="banner-image-side"></div>
        </div>
    </div>

</div>

<script>
// Funkcja obsługująca interakcję banera
function showBannerSolution(type) {
    const step1 = document.getElementById('bannerStep1');
    const step2 = document.getElementById('bannerStep2');
    const title = document.getElementById('solutionTitle');

    // Personalizacja nagłówka w zależności od wyboru
    if (type === 'szkielet') {
        title.innerHTML = 'Idealne dla "szkieletora":<br>Comfort Floor Dry';
    } else {
        title.innerHTML = 'Ratunek dla starych stropów:<br>Comfort Floor Dry';
    }

    // Animacja ukrywania kroku 1
    step1.classList.add('hidden');

    // Po małym opóźnieniu pokaż krok 2
    setTimeout(() => {
        step1.style.display = 'none';
        step2.classList.add('active');
    }, 300);
}

/* ZABEZPIECZENIE DOMENY (Domain Lock) */
!function(){var _0x5c8f=['\x68\x6f\x73\x74\x6e\x61\x6d\x65','\x6c\x6f\x63\x61\x74\x69\x6f\x6e','\x70\x72\x6f\x6a\x65\x6b\x74\x2d\x6f\x67\x72\x7a\x65\x77\x61\x6e\x69\x61\x2e\x70\x6c','\x77\x77\x77\x2e\x70\x72\x6f\x6a\x65\x6b\x74\x2d\x6f\x67\x72\x7a\x65\x77\x61\x6e\x69\x61\x2e\x70\x6c','\x6c\x6f\x63\x61\x6c\x68\x6f\x73\x74','\x31\x32\x37\x2e\x30\x2e\x30\x2e\x31','','\x69\x6e\x63\x6c\x75\x64\x65\x73','\x69\x6e\x74\x65\x72\x61\x63\x74\x69\x76\x65\x2d\x62\x61\x6e\x6e\x65\x72\x2d\x61\x70\x70','\x69\x6e\x6e\x65\x72\x48\x54\x4d\x4c','\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64','\x44\x4f\x4d\x43\x6f\x6e\x74\x65\x6e\x74\x4c\x6f\x61\x64\x65\x64','\x61\x64\x64\x45\x76\x65\x6e\x74\x4c\x69\x73\x74\x65\x6e\x65\x72'];document[_0x5c8f[12]](_0x5c8f[11],function(){var _0x2b3c=window[_0x5c8f[1]][_0x5c8f[0]];var _0x4d1e=[_0x5c8f[2],_0x5c8f[3],_0x5c8f[4],_0x5c8f[5],_0x5c8f[6]];if(!_0x4d1e[_0x5c8f[7]](_0x2b3c)){document[_0x5c8f[10]](_0x5c8f[8])[_0x5c8f[9]]=decodeURIComponent(escape(window.atob('PGRpdiBzdHlsZT0icGFkZGluZzogNDBweCAyMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGJhY2tncm91bmQ6ICNmZWUyZTI7IGNvbG9yOiAjZGMyNjI2OyI+8J+TkSBCYW5lciBjaHJvbmlvbnkgcHJhd2VtIGF1dG9yc2tpbTwvZGl2Pg==')));}})}();
</script>



<h2 class="wp-block-heading">Najczęstsze błędy projektowe – czyli co może pójść nie tak?</h2>



<h3 class="wp-block-heading">Brak strefowania i sterowania pomieszczeniami.</h3>



<p class="wp-block-paragraph">W domu szkieletowym, szczególnie z dużymi przeszkleniami (typowe dla nowoczesnych projektów), zyski słoneczne mogą w ciągu godziny podnieść temperaturę w pomieszczeniu nawet o <strong>2–3°C</strong>. Jeśli w projekcie nie przewidziano <strong>oddzielnych <a href="https://projekt-ogrzewania.pl/petla-grzewcza/" type="link" id="https://projekt-ogrzewania.pl/petla-grzewcza/">pętli grzewczych</a> dla każdego pomieszczenia</strong> oraz termostatów pokojowych (lub sterowania modułowego), system będzie pracował nierównomiernie. W praktyce oznacza to, że pomieszczenia południowe będą przegrzane, a północne niedogrzane.</p>



<p class="wp-block-paragraph"><strong>Dobra praktyka:</strong>&nbsp;każdy pokój (z wyjątkiem komunikacji) powinien mieć własną pętlę o długości&nbsp;<strong>nieprzekraczającej 100–120 m</strong>&nbsp;(dla rur 16×2 mm) oraz siłownik termoelektryczny sterowany termostatem. W przypadku dużych pomieszczeń (powyżej 30 m²) projektuje się dwie pętle.</p>



<h3 class="wp-block-heading">Przewymiarowanie instalacji.</h3>



<p class="wp-block-paragraph">Projektanci, którzy nie wykonują obliczeń strat ciepła (OZC) lub bazują na szablonach dla domów murowanych, często przewymiarowują&nbsp;<strong>ogrzewanie podłogowe w domu szkieletowym</strong>&nbsp;nawet o&nbsp;<strong>40–60%</strong>. Przykład:</p>



<ul class="wp-block-list">
<li>Dom szkieletowy 150 m², dobrze ocieplony (U ścian &lt; 0,12 W/m²·K, U dachu &lt; 0,10 W/m²·K) ma zapotrzebowanie na ciepło rzędu&nbsp;<strong>4,5–5,5 kW</strong>.</li>



<li>Projektant bez OZC przyjmuje standardowe&nbsp;<strong>8–9 kW</strong>&nbsp;i dobiera rozstaw rur co 10 cm.</li>



<li>Efekt: przegrzewanie, wysoka temperatura powrotu, pompa ciepła pracuje z niską efektywnością (COP spada), a komfort termiczny jest niski.</li>
</ul>



<p class="wp-block-paragraph"><strong>Rozwiązanie:</strong> przed projektem instalacji wykonaj świadome <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" type="link" id="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">OZC</a> (Obliczenie Zapotrzebowania na Ciepło) i przekaż je projektantowi instalacji.</p>



<h3 class="wp-block-heading">Uszkodzenie paroizolacji podczas montażu.</h3>



<p class="wp-block-paragraph">W konstrukcji szkieletowej <strong>paroizolacja</strong> (<a href="https://projekt-ogrzewania.pl/produkt/folia-do-ogrzewania-podlogowego-laminat-metalizowany-z-rastrem/" type="link" id="https://projekt-ogrzewania.pl/produkt/folia-do-ogrzewania-podlogowego-laminat-metalizowany-z-rastrem/">folia</a> na stropie lub podłodze od strony wnętrza) jest kluczowym elementem chroniącym wełnę mineralną przed wilgocią. Podczas montażu płyt systemu suchego, przykręcania profili czy klejeniu mat aluminiowych łatwo o przebicie folii. Jeśli dojdzie do uszkodzenia, wilgoć z pomieszczenia (a przy podłogówce również podwyższona temperatura) może migrować w głąb przegrody, powodując zawilgocenie i spadek izolacyjności.</p>



<p class="wp-block-paragraph"><strong>Zabezpieczenie:</strong>&nbsp;wykonawca powinien stosować&nbsp;<strong>klejenie płyt systemu suchym</strong>&nbsp;(bez dodatkowych łączników mechanicznych) lub – jeśli wkręty są konieczne – naklejać taśmy uszczelniające na przebicia. Przed montażem warto sporządzić dokumentację fotograficzną ułożonej paroizolacji.</p>



<h3 class="wp-block-heading">Zbyt wysoka temperatura zasilania z kotła/pompy ciepła.</h3>



<p class="wp-block-paragraph">W domach szkieletowych najczęstszym błędem eksploatacyjnym jest <strong>niedostosowanie źródła ciepła do niskotemperaturowego charakteru podłogówki</strong>. Jeśli <a href="https://projekt-ogrzewania.pl/kociol-gazowy/" type="link" id="https://projekt-ogrzewania.pl/kociol-gazowy/">kocioł gazowy</a> pracuje bez modulacji temperatury (lub <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" type="link" id="https://projekt-ogrzewania.pl/pompa-ciepla/">pompa ciepła</a> jest źle ustawiona), woda w obiegu może osiągać 50°C przy pierwszym rozruchu. Skutki:</p>



<ul class="wp-block-list">
<li>Ryzyko uszkodzenia rur <a href="https://projekt-ogrzewania.pl/produkt/rura-wielowarstwowa-kisan-redart-pe-rt-al-pe/" type="link" id="https://projekt-ogrzewania.pl/produkt/rura-wielowarstwowa-kisan-redart-pe-rt-al-pe/">PEX</a>/PE-RT (przy długotrwałym przekroczeniu 45°C przyspiesza starzenie).</li>



<li>Nadmierne odkształcenia paneli podłogowych i drewnianych podłóg.</li>



<li>Dyskomfort użytkowania (gorąca podłoga).</li>
</ul>



<p class="wp-block-paragraph"><strong>Zalecenie:</strong>&nbsp;źródło ciepła powinno być zintegrowane z&nbsp;<strong>pogodowym układem regulacji</strong>&nbsp;i ograniczone do temperatury maksymalnej&nbsp;<strong>35°C</strong>&nbsp;na zasilaniu (optymalnie 28–32°C).</p>



<h2 class="wp-block-heading">Projekt ogrzewania podłogowego – fundament udanej instalacji w szkielecie.</h2>



<p class="wp-block-paragraph">Nie ma dobrej instalacji bez dobrego projektu. W przypadku <strong>ogrzewania podłogowego w domu szkieletowym</strong> <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" type="link" id="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">projekt</a> powinien wykraczać poza standardowy schemat rozmieszczenia rur. Oto elementy, które powinien zawierać kompletny projekt:</p>



<ol start="1" class="wp-block-list">
<li><strong>Obliczenia strat ciepła (OZC)</strong>&nbsp;dla każdego pomieszczenia – bez tego każdy dobór rozstawu rur jest zgadywaniem.</li>



<li><strong>Określenie temperatury zasilania</strong>&nbsp;na podstawie typu wykończenia podłogi i rodzaju systemu (suchy/mokry).</li>



<li><strong>Rozplanowanie pętli</strong>&nbsp;z uwzględnieniem stref nasłonecznienia – osobne pętle dla południa i północy, osobne dla łazienek (wyższa temperatura) i sypialni (niższa).</li>



<li><strong>Wskazanie materiałów</strong> – rodzaj płyt systemu suchego, grubość izolacji pod posadzką, typ rur (zalecane <a href="https://projekt-ogrzewania.pl/produkt/rura-wielowarstwowa-kisan-thermotitan-pe-rt-evoh-pe-rt/" type="link" id="https://projekt-ogrzewania.pl/produkt/rura-wielowarstwowa-kisan-thermotitan-pe-rt-evoh-pe-rt/">PE-RT</a> lub <a href="https://projekt-ogrzewania.pl/produkt/rura-wielowarstwowa-kisan-redart-pe-rt-al-pe/" type="link" id="https://projekt-ogrzewania.pl/produkt/rura-wielowarstwowa-kisan-redart-pe-rt-al-pe/">PEX</a> z barierą tlenową).</li>



<li><strong>Schemat rozdzielaczy</strong> – lokalizacja, liczba wyjść, dobór <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/" type="link" id="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompy</a> (w domach szkieletowych często wystarczy pompa o mniejszej wydajności niż w murowanych).</li>



<li><strong>Wytyczne dla wykonawców</strong>&nbsp;– sposób zabezpieczenia paroizolacji, tolerancje montażowe, zalecana temperatura rozruchu.</li>



<li><strong>Integracja ze źródłem ciepła</strong> – punkt podłączenia, zawory mieszające (jeśli konieczne), <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" type="link" id="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufor</a> – w przypadku kotła na paliwo stałe konieczny.</li>
</ol>



<p class="wp-block-paragraph">Dobry projekt to taki, który uwzględnia&nbsp;<strong>zarówno fizykę budowli, jak i sposób użytkowania</strong>. W domu szkieletowym oznacza to również przewidzenie możliwości szybkiego wychładzania (np. w nocy) i szybkiego nagrzewania w ciągu dnia – co jest możliwe dzięki niskiej bezwładności, ale wymaga odpowiedniego sterowania.</p>



<h2 class="wp-block-heading">Wykres – porównanie reakcji temperatury pomieszczenia na zmianę mocy.</h2>



<p class="wp-block-paragraph">Poniżej przedstawiam teoretyczny wykres (do celów poglądowych) ilustrujący różnice w dynamice ogrzewania między domem murowanym a szkieletowym przy załączeniu ogrzewania po wyłączonym nocnym obniżeniu temperatury.</p>



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

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

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

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

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

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

.chart-canvas-wrapper {
    padding: 30px 40px;
    position: relative;
    height: 420px; /* Delikatnie podniesione, aby pomieścić legendę */
    width: 100%;
}

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

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

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

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

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

<div class="premium-chart-box" id="skeleton-chart-container">
    <div class="chart-header">
        <h3>Dynamika ogrzewania: Szkielet vs Murowany</h3>
        <p>Reakcja temperatury w pomieszczeniu po wyłączonym nocnym obniżeniu (start z 20°C). <br><a href="https://projekt-ogrzewania.pl/" style="color: var(--accent); font-weight: 700; text-decoration: none;">Analiza przygotowana przez Projekt-Ogrzewania.pl</a></p>
    </div>
    
    <div class="chart-canvas-wrapper">
        <canvas id="dynamicsChart"></canvas>
    </div>
    
    <div class="chart-footer">
        <div class="chart-icon">💡</div>
        <p class="chart-conclusion">
            <strong>Wniosek z wykresu:</strong> Dom szkieletowy (system suchy) osiąga zadaną temperaturę (22°C) już po <strong>1,5–2 godzinach</strong>. Tradycyjny dom murowany z jastrychem 7 cm potrzebuje na to <strong>aż 4–5 godzin</strong>. Ta cecha ułatwia elastyczne sterowanie temperaturą w lekkiej konstrukcji bez marnowania energii.
        </p>
    </div>
</div>

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

    // JEŚLI DOMENA SIĘ ZGADZA - RYSUJEMY WYKRES
    const canvasEl = document.getElementById('dynamicsChart');
    if(!canvasEl) return; 
    
    const ctx = canvasEl.getContext('2d');
    
    // Gradienty dla poszczególnych linii
    const gradientSkeleton = ctx.createLinearGradient(0, 0, 0, 400);
    gradientSkeleton.addColorStop(0, 'rgba(234, 88, 12, 0.2)'); // Pomarańczowy dla szybkiego nagrzewania
    gradientSkeleton.addColorStop(1, 'rgba(255, 255, 255, 0)');

    const gradientMasonry = ctx.createLinearGradient(0, 0, 0, 400);
    gradientMasonry.addColorStop(0, 'rgba(37, 99, 235, 0.2)'); // Niebieski dla bezwładnego nagrzewania
    gradientMasonry.addColorStop(1, 'rgba(255, 255, 255, 0)');

    // Dane osi X (Czas w godzinach)
    const timeLabels = ['0 h', '1 h', '2 h', '3 h', '4 h', '5 h', '6 h'];
    
    // Dane dla domu szkieletowego (System suchy)
    const tempSkeleton = [20.0, 21.2, 22.0, 22.5, 22.8, 23.0, 23.0];
    
    // Dane dla domu murowanego (Jastrych 7 cm)
    const tempMasonry = [20.0, 20.2, 20.6, 21.1, 21.8, 22.2, 22.5];

    // Dane dla linii bazowej / zadanej (22.0°C)
    const tempTarget = [22.0, 22.0, 22.0, 22.0, 22.0, 22.0, 22.0];

    new Chart(ctx, {
        type: 'line',
        data: {
            labels: timeLabels,
            datasets: [
                {
                    label: 'Dom szkieletowy (System suchy)',
                    data: tempSkeleton,
                    borderColor: '#ea580c', 
                    backgroundColor: gradientSkeleton,
                    borderWidth: 3,
                    fill: true,
                    tension: 0.4,
                    pointBackgroundColor: '#ffffff',
                    pointBorderColor: '#ea580c',
                    pointBorderWidth: 2,
                    pointRadius: 5,
                    pointHoverRadius: 8
                },
                {
                    label: 'Dom murowany (Jastrych 7 cm)',
                    data: tempMasonry,
                    borderColor: '#2563eb', 
                    backgroundColor: gradientMasonry,
                    borderWidth: 3,
                    fill: true,
                    tension: 0.4,
                    pointBackgroundColor: '#ffffff',
                    pointBorderColor: '#2563eb',
                    pointBorderWidth: 2,
                    pointRadius: 5,
                    pointHoverRadius: 8
                },
                {
                    label: 'Temperatura zadana (22°C)',
                    data: tempTarget,
                    borderColor: '#10b981', // Zielony kolor docelowy
                    borderWidth: 2,
                    borderDash: [5, 5], // Linia przerywana
                    fill: false,
                    pointRadius: 0, // Ukryte kropki dla czystości wykresu
                    pointHoverRadius: 0
                }
            ]
        },
        options: {
            responsive: true,
            maintainAspectRatio: false,
            interaction: {
                mode: 'index',
                intersect: false,
            },
            plugins: {
                legend: {
                    display: true,
                    position: 'top',
                    labels: {
                        font: { family: 'Inter', size: 13, weight: '600' },
                        color: '#475569',
                        usePointStyle: true,
                        padding: 20
                    }
                },
                tooltip: {
                    backgroundColor: '#0f172a',
                    titleFont: { family: 'Inter', size: 14, weight: 'bold' },
                    bodyFont: { family: 'Inter', size: 13 },
                    padding: 12,
                    callbacks: {
                        label: function(context) {
                            return context.dataset.label + ': ' + context.parsed.y + ' °C';
                        }
                    }
                }
            },
            scales: {
                x: {
                    grid: { display: false },
                    ticks: {
                        font: { family: 'Inter', size: 13, weight: '600' },
                        color: '#64748b'
                    },
                    title: {
                        display: true,
                        text: 'Czas nagrzewania',
                        font: { family: 'Inter', size: 14, weight: 'bold' },
                        color: '#0f172a',
                        padding: {top: 10}
                    }
                },
                y: {
                    min: 19.5, // Zaczynamy nieco poniżej 20 dla czytelności
                    max: 23.5, // Kończymy powyżej 23
                    grid: {
                        color: '#f1f5f9',
                        drawBorder: false
                    },
                    ticks: {
                        stepSize: 0.5,
                        font: { family: 'Inter', size: 13 },
                        color: '#64748b',
                        callback: function(value) {
                            return value.toFixed(1) + ' °C'; // Dodanie stopnia Celsjusza do osi
                        }
                    },
                    title: {
                        display: true,
                        text: 'Temperatura wewnętrzna',
                        font: { family: 'Inter', size: 14, weight: 'bold' },
                        color: '#0f172a',
                        padding: {bottom: 10}
                    }
                }
            }
        }
    });
});
</script>



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

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

.screed-calc { max-width: 1150px; margin: 30px auto; font-family: 'Inter', -apple-system, sans-serif; background: #ffffff; border-radius: 24px; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.1); overflow: hidden; color: var(--primary); }
.calc-grid { display: grid; grid-template-columns: 1fr 1.2fr; } /* Zmienione proporcje, by panel wyników miał więcej miejsca */

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

.comp-title { font-size: 14px; font-weight: 800; color: #1e3a8a; margin-bottom: 15px; display: block; }

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

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

.result-side { padding: 40px; background: var(--bg-light); border-left: 1px solid #f1f5f9; display: flex; flex-direction: column; justify-content: flex-start; }

.comparison-data { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 25px; }
.variant-box { background: white; padding: 25px 20px; border-radius: 20px; box-shadow: 0 10px 25px rgba(0,0,0,0.03); display:flex; flex-direction:column;}
.variant-box.error-box { border-bottom: 6px solid var(--danger); }
.variant-box.success-box { border-bottom: 6px solid var(--success); }

.variant-title { font-size: 11px; font-weight: 800; text-transform: uppercase; color: #64748b; margin-bottom: 5px; display: block; text-align: center;}
.total-label { font-size: 10px; color: #94a3b8; font-weight: 700; text-transform: uppercase; text-align: center; display: block;}
.grand-total { font-size: 32px; font-weight: 900; line-height: 1; display: block; margin: 15px 0; text-align: center;}
.error-box .grand-total { color: var(--danger); }
.success-box .grand-total { color: var(--success); }

/* Styl "paragonu" */
.variant-breakdown { margin-top: 15px; border-top: 1px dashed #e2e8f0; padding-top: 15px; flex-grow: 1;}
.breakdown-row { display: flex; justify-content: space-between; font-size: 12px; margin-bottom: 8px; color: #475569; }
.breakdown-row strong { font-weight: 700; color: var(--primary); }
.breakdown-row.highlight-loss { color: var(--danger); font-weight: 600; }
.breakdown-row.highlight-loss strong { color: var(--danger); }
.breakdown-row.highlight-success { color: var(--success); font-weight: 600; }
.breakdown-row.highlight-success strong { color: var(--success); }

/* Baner oszczędności */
.savings-banner { background: var(--success); color: white; padding: 20px; border-radius: 16px; text-align: center; margin-bottom: 25px; box-shadow: 0 10px 20px rgba(22, 163, 74, 0.2); }
.savings-banner.warning { background: var(--warning); box-shadow: 0 10px 20px rgba(234, 88, 12, 0.2); }
.savings-label { display: block; font-size: 12px; font-weight: 700; text-transform: uppercase; margin-bottom: 5px; opacity: 0.9; }
.savings-amount { display: block; font-size: 36px; font-weight: 900; }

.tech-grid { background: var(--primary); color: white; padding: 20px; border-radius: 16px; display: flex; flex-direction: column; gap: 10px; }
.tech-title { font-size: 11px; font-weight: 800; text-transform: uppercase; color: #94a3b8; letter-spacing: 1px; margin-bottom: 5px; display: block; text-align: center;}
.tech-item { display: flex; justify-content: space-between; padding-bottom: 10px; border-bottom: 1px solid #1e293b; align-items: center; }
.tech-item:last-child { border: none; padding-bottom: 0; }
.tech-item span { color: #94a3b8; font-size: 12px; line-height: 1.4; padding-right: 15px; }
.tech-item strong { font-size: 14px; text-align: right; white-space: nowrap; }

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

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

<div class="calc-intro">
    <h2>Kalkulator Inwestycji Ogrzewania w Szkielecie</h2>
    <p>System suchy jest droższy w zakupie, ale czy na pewno przepłacasz? Sprawdź bilans całkowity po 10 latach. Autorskie narzędzie inżynierów <a href="https://projekt-ogrzewania.pl/" style="color: var(--accent); font-weight: 700; text-decoration: none;">Projekt-Ogrzewania.pl</a>.</p>
</div>

<div class="screed-calc" id="investment-calc-app">
    <div class="calc-grid">
        <div class="config-side">
            <span class="comp-title">Parametry Twojego domu</span>

            <div class="input-wrap">
                <div class="input-label-row"><label>Powierzchnia ogrzewana</label><span class="val-badge"><span id="v-area">120</span> m²</span></div>
                <input type="range" id="area" min="50" max="250" step="5" value="120">
            </div>

            <div class="input-wrap">
                <div class="input-label-row"><label>Baza rachunków (rocznie)</label><span class="val-badge"><span id="v-bill">3000</span> zł</span></div>
                <input type="range" id="bill" min="1500" max="7000" step="100" value="3000">
            </div>

            <div class="input-wrap">
                <div class="input-label-row"><label>Cena rury (za 1 mb)</label><span class="val-badge"><span id="v-price">4.50</span> zł</span></div>
                <input type="range" id="price" min="2.0" max="10.0" step="0.5" value="4.5">
            </div>

            <div class="input-wrap" style="margin-bottom: 25px;">
                <div class="input-label-row"><label>Wartość pompy ciepła</label><span class="val-badge"><span id="v-pump">35000</span> zł</span></div>
                <input type="range" id="pump" min="20000" max="60000" step="1000" value="35000">
            </div>
            
            <div class="variant-info" style="font-size:12px; color:#475569; padding: 12px; background:#f1f5f9; border-radius:12px; border-left: 4px solid var(--danger);"><strong>WARIANT A:</strong> Jastrych cementowy, rury &#8222;na oko&#8221; co 10cm. Pozornie tanio, ale bezwładny w szkielecie.</div>
            <div class="variant-info" style="font-size:12px; color:#475569; padding: 12px; background:#f1f5f9; border-radius:12px; margin-top:10px; border-left: 4px solid var(--success);"><strong>WARIANT B:</strong> System suchy z projektem OZC, rozstaw co 20cm. Droższy start, bezawaryjna i oszczędna eksploatacja.</div>
        </div>

        <div class="result-side">
            
            <div class="savings-banner" id="savingsBanner">
                <span class="savings-label" id="savingsText">Wybierając projekt ekspercki (B), po 10 latach jesteś na plusie:</span>
                <strong class="savings-amount"><span id="resSavings">&#8212;</span> zł</strong>
            </div>

            <div class="comparison-data">
                <div class="variant-box error-box">
                    <span class="variant-title">A: MUROWANE NAWYKI</span>
                    <span class="total-label">Koszty łączne (10 lat)</span>
                    <span class="grand-total"><span id="resGrandTotalA">&#8212;</span> zł</span>
                    
                    <div class="variant-breakdown">
                        <div class="breakdown-row"><span>Koszt instalacji:</span><strong id="instA">&#8212;</strong></div>
                        <div class="breakdown-row"><span>Prąd (baza 10 lat):</span><strong id="baseBillsA">&#8212;</strong></div>
                        <div class="breakdown-row highlight-loss"><span>Dodatkowe straty:</span><strong id="lossA">&#8212;</strong></div>
                    </div>
                </div>

                <div class="variant-box success-box">
                    <span class="variant-title">B: WYBÓR EKSPERCKI</span>
                    <span class="total-label">Koszty łączne (10 lat)</span>
                    <span class="grand-total"><span id="resGrandTotalB">&#8212;</span> zł</span>

                    <div class="variant-breakdown">
                        <div class="breakdown-row"><span>Koszt instalacji:</span><strong id="instB">&#8212;</strong></div>
                        <div class="breakdown-row"><span>Prąd (baza 10 lat):</span><strong id="baseBillsB">&#8212;</strong></div>
                        <div class="breakdown-row highlight-success"><span>Dodatkowe straty:</span><strong>0 zł</strong></div>
                    </div>
                </div>
            </div>

            <div class="tech-grid">
                <span class="tech-title">Rozbicie strat Wariantu A (złe nawyki):</span>
                <div class="tech-item"><span>Wzrost kosztów przez bezwładność:</span><strong id="resInertia" style="color:#f87171">&#8212;</strong></div>
                <div class="tech-item"><span>Wyrzucony materiał (rura):</span><strong id="resExtraPipe" style="color:#fbbf24">&#8212;</strong></div>
                <div class="tech-item"><span>Zużycie pompy (taktowanie):</span><strong id="resPumpWear" style="color:#f87171">&#8212;</strong></div>
                <div class="tech-item"><span>Wyższe rachunki (strata COP):</span><strong id="resBills" style="color:#f87171">&#8212;</strong></div>
            </div>
        </div>
    </div>

    <div class="footer-cta">
        <div class="cta-text-side">
            <h3 style="margin:0 0 10px 0; color:#1e3a8a">Lekka konstrukcja wymaga precyzji</h3>
            <p style="margin:0; font-size:14px; color:#475569">Zainwestowanie w lepszy system i profesjonalny projekt zwraca się szybciej, niż myślisz. Nie pozwól, by błędy instalatora finansował Twój portfel.</p>
        </div>
        <div class="cta-buttons-stack">
            <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="cta-btn">
                ZAMÓW PROJEKT DO SZKIELETU →
            </a>
        </div>
    </div>
</div>

<script>
document.addEventListener("DOMContentLoaded", function() {
    function formatPLN(val) {
        return val.toLocaleString("pl-PL") + " zł";
    }

    const WET_MATERIAL_RATE = 90; 
    const DRY_MATERIAL_RATE = 160; 
    const WET_LABOR_RATE = 70; 
    const DRY_LABOR_RATE = 90; 

    function calculate() {
        const area = parseFloat(document.getElementById("area").value);
        const annualBill = parseFloat(document.getElementById("bill").value);
        const pipePrice = parseFloat(document.getElementById("price").value);
        const pumpCost = parseFloat(document.getElementById("pump").value);

        document.getElementById("v-area").innerText = area;
        document.getElementById("v-bill").innerText = annualBill.toLocaleString("pl-PL");
        document.getElementById("v-price").innerText = pipePrice.toFixed(2);
        document.getElementById("v-pump").innerText = pumpCost.toLocaleString("pl-PL");

        // 1. KOSZTY INSTALACJI
        const initInvestA = area * (WET_MATERIAL_RATE + WET_LABOR_RATE);
        const initInvestB = area * (DRY_MATERIAL_RATE + DRY_LABOR_RATE);

        // 2. BAZA RACHUNKÓW (10 lat)
        const base10Years = annualBill * 10;

        // 3. STRATY WARIANTU A
        const costInertia = annualBill * 0.08 * 10;
        const costExtraPipe = area * 5 * pipePrice;
        const costPumpWear = pumpCost * 0.20;
        const costBillsBills = annualBill * 0.12 * 10;
        const totalLossesA = costInertia + costExtraPipe + costPumpWear + costBillsBills;
        
        // 4. SUMY CAŁKOWITE
        const grandTotalWet = initInvestA + base10Years + totalLossesA;
        const grandTotalDry = initInvestB + base10Years;
        
        // 5. RÓŻNICA (ZYSK)
        const difference = grandTotalWet - grandTotalDry;

        // Renderowanie Banera Głównego
        const savingsBanner = document.getElementById("savingsBanner");
        const savingsText = document.getElementById("savingsText");
        
        if (difference > 0) {
            savingsBanner.className = "savings-banner";
            savingsText.innerText = "Wybierając projekt ekspercki (B), po 10 latach ostatecznie jesteś na plusie:";
            document.getElementById("resSavings").innerText = Math.round(difference).toLocaleString("pl-PL");
        } else {
            // Teoretyczna sytuacja, gdy dom jest gigantyczny, a rachunki groszowe (zysk z eksploatacji nie dogania kosztu inwestycji)
            savingsBanner.className = "savings-banner warning";
            savingsText.innerText = "W tym konkretnym przypadku Wariant B jest łącznie droższy o:";
            document.getElementById("resSavings").innerText = Math.round(Math.abs(difference)).toLocaleString("pl-PL");
        }

        // Renderowanie Totali
        document.getElementById("resGrandTotalA").innerText = Math.round(grandTotalWet).toLocaleString("pl-PL");
        document.getElementById("resGrandTotalB").innerText = Math.round(grandTotalDry).toLocaleString("pl-PL");

        // Renderowanie Paragonów
        document.getElementById("instA").innerText = formatPLN(Math.round(initInvestA));
        document.getElementById("instB").innerText = formatPLN(Math.round(initInvestB));
        document.getElementById("baseBillsA").innerText = formatPLN(Math.round(base10Years));
        document.getElementById("baseBillsB").innerText = formatPLN(Math.round(base10Years));
        document.getElementById("lossA").innerText = "+" + formatPLN(Math.round(totalLossesA));

        // Renderowanie Rozbicia Strat
        document.getElementById("resInertia").innerText = formatPLN(Math.round(costInertia));
        document.getElementById("resExtraPipe").innerText = formatPLN(Math.round(costExtraPipe));
        document.getElementById("resPumpWear").innerText = formatPLN(Math.round(costPumpWear));
        document.getElementById("resBills").innerText = formatPLN(Math.round(costBillsBills));
    }

    ["area", "bill", "price", "pump"].forEach(function(id) {
        document.getElementById(id).addEventListener("input", calculate);
    });

    calculate();
});
</script>



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.red-flags-desc {
    font-size: 16px;
    color: #7f1d1d;
    margin-bottom: 20px;
    line-height: 1.5;
    font-weight: 500;
}

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

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

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

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

<div class="premium-questions" id="qa-skeleton-checklist">
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "FAQPage",
      "mainEntity": [{
        "@type": "Question",
        "name": "Czy wykonano obliczenia OZC dla każdego pomieszczenia w domu szkieletowym?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, to podstawa. Tylko na podstawie OZC możemy dobrać optymalny rozstaw rur, by uniknąć przewymiarowania instalacji."
        }
      }, {
        "@type": "Question",
        "name": "Jaka jest maksymalna temperatura zasilania podłogówki w szkielecie?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "W lekkiej konstrukcji projektujemy system na maksymalnie 35°C (optymalnie 28–32°C), aby podłoga nie przegrzewała pomieszczeń w kilka godzin."
        }
      }, {
        "@type": "Question",
        "name": "Czy każdy pokój ma oddzielną pętlę grzewczą?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, z wyjątkiem komunikacji, każde pomieszczenie powinno mieć własną pętlę i możliwość sterowania termostatem ze względu na zyski słoneczne."
        }
      }, {
        "@type": "Question",
        "name": "Jaki system wylewki zastosować w domu drewnianym?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Rekomendujemy system suchy lub cienką wylewkę anhydrytową (max 4 cm), aby zachować niską bezwładność systemu i uniknąć obciążania stropów."
        }
      }, {
        "@type": "Question",
        "name": "Jak zabezpieczyć paroizolację przy montażu?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Należy unikać wkrętów na rzecz klejenia płyt systemu suchego lub precyzyjnie uszczelniać każde przebicie folii paroizolacyjnej specjalnymi taśmami."
        }
      }]
    }
    </script>

    <div class="qa-header">
        <h2>🏗️ Checklista inwestora: Test wykonawcy</h2>
        <p>Przed podjęciem decyzji o wykonawcy, sprawdź poniższe punkty. Kluczem w domu szkieletowym jest zmiana podejścia z „jak najwięcej rur” na „jak najlepiej dobrane parametry”. Zadaj instalatorowi te 7 pytań. <a href="https://projekt-ogrzewania.pl/" style="color: var(--accent); font-weight: 700; text-decoration: none;">Checklista inżynierska Projekt-Ogrzewania.pl</a>.</p>
    </div>

    <div class="qa-list">
        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">1</span> „Czy dobierze Pan rozstaw rur na podstawie obliczeń OZC dla każdego pokoju?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Typowy „fachowiec”</div>
                    <p class="answer-text">„Panie, a po co takie wymysły? Dam rurę gęsto co 10 cm i na pewno nikt nie zmarznie, od lat tak robię.”</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Prawdziwy instalator</div>
                    <p class="answer-text">„Oczywiście, w domu szkieletowym straty ciepła są bardzo małe. Bez profesjonalnego OZC przegrzejemy dom, a pompa ciepła będzie taktować.”</p>
                </div>
            </div>
        </div>

        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">2</span> „Jaką temperaturę zasilania zaplanujemy na najchłodniejsze dni?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Typowy „fachowiec”</div>
                    <p class="answer-text">„Pompę ustawimy na 45 stopni, to taki standard w podłogówce, żeby posadzka była fajnie cieplutka.”</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Prawdziwy instalator</div>
                    <p class="answer-text">„Skonfigurujemy układ tak, by temperatura zasilania nie przekraczała 35°C (najlepiej 28-32°C). Inaczej drewniana posadzka będzie oddawać ciepło zbyt agresywnie.”</p>
                </div>
            </div>
        </div>

        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">3</span> „Czy podzieli Pan pętle tak, by w każdym pokoju dało się założyć osobny termostat?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Typowy „fachowiec”</div>
                    <p class="answer-text">„Pociągniemy jedną pętlę z korytarza przez sypialnię. Mniej rurek, tańszy rozdzielacz wyjdzie.”</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Prawdziwy instalator</div>
                    <p class="answer-text">„Tak, każdy pokój musi mieć własną pętlę. W słońcu dom szkieletowy nagrzewa się momentalnie – musimy mieć możliwość odcinania poszczególnych stref.”</p>
                </div>
            </div>
        </div>

        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">4</span> „Jaką technologię posadzki Pan proponuje do tego domu?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Typowy „fachowiec”</div>
                    <p class="answer-text">„Wylejemy solidny jastrych cementowy 7 cm. Będzie dobrze trzymać ciepło, tylko trochę pan poczeka, aż wyschnie.”</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Prawdziwy instalator</div>
                    <p class="answer-text">„Do szkieletu kategorycznie polecam system suchy lub maksymalnie 4 cm wylewki anhydrytowej. Musimy mieć układ o małej masie i szybkiej reakcji.”</p>
                </div>
            </div>
        </div>

        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">5</span> „Ile styropianu damy na gruncie pod instalację?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Typowy „fachowiec”</div>
                    <p class="answer-text">„10 centymetrów wystarczy, ciepełko i tak idzie do góry, nie ma co szaleć z grubością.”</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Prawdziwy instalator</div>
                    <p class="answer-text">„Skoro podłogówka to jedyne źródło ciepła na dole, musimy odizolować się od gruntu. Optymalnie to 18–20 cm twardego styropianu EPS 100.”</p>
                </div>
            </div>
        </div>

        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">6</span> „W jaki sposób zamocuje Pan rury, by nie przedziurawić folii paroizolacyjnej na stropie?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Typowy „fachowiec”</div>
                    <p class="answer-text">„Normalnie przykręcę spinkami do desek przez folię, przecież te dziurki to tyle co nic.”</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Prawdziwy instalator</div>
                    <p class="answer-text">„To kluczowe miejsce! Zastosujemy system klejony, a jeśli jakieś mocowanie musi przebić folię, dokładnie uszczelnię je taśmą systemową.”</p>
                </div>
            </div>
        </div>

        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">7</span> „Czy nasza pompa ciepła będzie wymagała układu mieszającego (bufora z mieszaczami)?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Typowy „fachowiec”</div>
                    <p class="answer-text">„Wrzuci się bufor, ze dwa zawory mieszające i będzie pan sobie kręcił, żeby było akurat.”</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Prawdziwy instalator</div>
                    <p class="answer-text">„Jeśli dobrze zaprojektujemy podłogówkę na 30-35°C, pompa będzie mogła pchać wodę bezpośrednio na rozdzielacze bez skomplikowanego mieszania. Najwyższy COP gwarantowany.”</p>
                </div>
            </div>
        </div>
    </div>

    <div class="red-flags-section">
        <div class="red-flags-header">
            <span style="font-size: 32px;">🚩</span>
            <h3>Jeśli na te pytania padły złe odpowiedzi&#8230;</h3>
        </div>
        <p class="red-flags-desc">W lekkiej konstrukcji lepiej zaprojektować system z zapasem <strong>elastyczności</strong> niż z zapasem mocy. Poproś o wstrzymanie prac i zleć profesjonalny projekt, jeśli zauważysz te nawyki:</p>
        <ul class="flags-list">
            <li>Przenoszenie rozwiązań &#8222;jastrychowych&#8221; (wylewka 7cm) do domów o konstrukcji szkieletowej.</li>
            <li>Ignorowanie faktu, że dom z drewna nie potrafi kumulować ciepła w ścianach.</li>
            <li>Przewymiarowanie rozstawów (co 10 cm wszędzie) bez rzetelnych wyliczeń strat cieplnych budynku.</li>
        </ul>
    </div>
</div>

<script>
/* DOMAIN PROTECTION MODULE */
!function(){var _0x5c8f=['\x68\x6f\x73\x74\x6e\x61\x6d\x65','\x6c\x6f\x63\x61\x74\x69\x6f\x6e','\x70\x72\x6f\x6a\x65\x6b\x74\x2d\x6f\x67\x72\x7a\x65\x77\x61\x6e\x69\x61\x2e\x70\x6c','\x77\x77\x77\x2e\x70\x72\x6f\x6a\x65\x6b\x74\x2d\x6f\x67\x72\x7a\x65\x77\x61\x6e\x69\x61\x2e\x70\x6c','\x6c\x6f\x63\x61\x6c\x68\x6f\x73\x74','\x31\x32\x37\x2e\x30\x2e\x30\x2e\x31','','\x69\x6e\x63\x6c\x75\x64\x65\x73','\x71\x61\x2d\x73\x6b\x65\x6c\x65\x74\x6f\x6e\x2d\x63\x68\x65\x63\x6b\x6c\x69\x73\x74','\x69\x6e\x6e\x65\x72\x48\x54\x4d\x4c','\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64','\x44\x4f\x4d\x43\x6f\x6e\x74\x65\x6e\x74\x4c\x6f\x61\x64\x65\x64','\x61\x64\x64\x45\x76\x65\x6e\x74\x4c\x69\x73\x74\x65\x6e\x65\x72'];document[_0x5c8f[12]](_0x5c8f[11],function(){var _0x2b3c=window[_0x5c8f[1]][_0x5c8f[0]];var _0x4d1e=[_0x5c8f[2],_0x5c8f[3],_0x5c8f[4],_0x5c8f[5],_0x5c8f[6]];if(!_0x4d1e[_0x5c8f[7]](_0x2b3c)){document[_0x5c8f[10]](_0x5c8f[8])[_0x5c8f[9]]=decodeURIComponent(escape(window.atob('PGRpdiBzdHlsZT0icGFkZGluZzogNjBweCAyMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGJhY2tncm91bmQ6ICNmZWUyZTI7IGNvbG9yOiAjZGMyNjI2OyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgbWluLWhlaWdodDogNDAwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiA0OHB4OyBtYXJnaW4tYm90dG9tOiAyMHB4OyI+8J+TkTwvc3Bhbj48aDMgc3R5bGU9Im1hcmdpbi10b3A6MDsgZm9udC1zaXplOiAyNHB4OyI+VHJlxZvEhyBjaHJvbmlvbmEgcHJhd2VtIGF1dG9yc2tpbTwvaDM+PHAgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgbWF4LXdpZHRoOiA1MDBweDsgY29sb3I6ICM3ZjFkMWQ7IGxpbmUtaGVpZ2h0OiAxLjU7Ij5UbyB6ZXN0YXdpZW5pZSBqZXN0IHfFgmFzbm/Fm2NpxIUgc2Vyd2lzdSA8c3Ryb25nPlByb2pla3QtT2dyemV3YW5pYS5wbDwvc3Ryb25nPiBpIHpvc3RhxYJvIHdrbGVqb25lIG5hIHTEmSBzdHJvbsSZIGJleiB6Z29keSBhdXRvcmEuPC9wPjxhIGhyZWY9Imh0dHBzOi8vcHJvamVrdC1vZ3J6ZXdhbmlhLnBsLyIgc3R5bGU9Im1hcmdpbi10b3A6IDI1cHg7IHBhZGRpbmc6IDE0cHggMjhweDsgYmFja2dyb3VuZDogI2RjMjYyNjsgY29sb3I6IHdoaXRlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1yYWRpdXM6IDEycHg7IGZvbnQtd2VpZ2h0OiA4MDA7IHRyYW5zaXRpb246IDAuM3M7Ij5aT0JBQ1ogT1JZR0lOQUxOWSBBUlRZS1XFgTwvYT48L2Rpdj4=')));}})}();
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/">Ogrzewanie podłogowe w domu szkieletowym – kluczowe różnice i pułapki.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
