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

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa koszty instalacji - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/koszty-instalacji/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Instalacja ogrzewania podłogowego w układzie meandrowym.</title>
		<link>https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 11 May 2025 15:30:59 +0000</pubDate>
				<category><![CDATA[Budowa domu]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Instalacje budowlane]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Komfort cieplny]]></category>
		<category><![CDATA[Materiały budowlane]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Projekty instalacji]]></category>
		<category><![CDATA[Remont domu]]></category>
		<category><![CDATA[Technologie grzewcze]]></category>
		<category><![CDATA[instalacja grzewcza]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[koszty instalacji]]></category>
		<category><![CDATA[montaż podłogówki]]></category>
		<category><![CDATA[normy ogrzewania]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[rozdzielacz]]></category>
		<category><![CDATA[rury grzewcze]]></category>
		<category><![CDATA[rury pex]]></category>
		<category><![CDATA[strefy brzegowe]]></category>
		<category><![CDATA[układ meandrowy]]></category>
		<category><![CDATA[wylewka]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2575</guid>

					<description><![CDATA[<p>Chcesz cieszyć się ciepłem w domu przez cały rok? Poznaj zalety instalacji ogrzewania podłogowego w układzie meandrowym – prostego i efektywnego systemu grzewczego. Dowiedz się, jak zaplanować montaż, dobrać rury i okładziny oraz uniknąć błędów. Sprawdź praktyczne porady, koszty i przykłady zastosowań, aby stworzyć komfortowy i energooszczędny dom. Zainspiruj się i zacznij działać już dziś!</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/">Instalacja ogrzewania podłogowego w układzie meandrowym.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-navy: #1e293b;
    --rk-intro-blue: #0284c7;
    --rk-intro-blue-light: #f0f9ff;
    --rk-intro-accent: #10b981; /* Zielony inżynierski */
    --rk-intro-accent-light: #ecfdf5;
    --rk-intro-gray: #475569;
    --rk-intro-bg: #ffffff;
    --rk-intro-border: #e2e8f0;
}

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

/* Sekcja Hook (Mocne otwarcie) */
.rk-intro-hook-box {
    background: linear-gradient(135deg, var(--rk-intro-dark) 0%, var(--rk-intro-navy) 100%);
    padding: 40px 45px;
    color: white;
    border-bottom: 5px solid var(--rk-intro-blue);
    display: flex;
    align-items: flex-start;
    gap: 25px;
}

.rk-intro-hook-icon {
    background: rgba(255, 255, 255, 0.1);
    padding: 15px;
    border-radius: 12px;
    flex-shrink: 0;
}

.rk-intro-hook-icon svg {
    width: 32px;
    height: 32px;
    color: #38bdf8;
}

.rk-intro-hook-content h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 12px 0;
    line-height: 1.3;
    color: white;
}

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

/* Szybka Odpowiedź (Featured Snippet) */
.rk-intro-quick-answer {
    padding: 45px;
    background: var(--rk-intro-bg);
}

.rk-intro-qa-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--rk-intro-blue-light);
    color: var(--rk-intro-blue);
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 20px;
    border: 1px solid #bae6fd;
}

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

.rk-intro-quick-answer p {
    font-size: 16px;
    line-height: 1.8;
    color: var(--rk-intro-gray);
    margin: 0 0 15px 0;
}

.rk-intro-quick-answer p:last-child {
    margin-bottom: 0;
}

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

.rk-intro-quick-answer a:hover {
    color: var(--rk-intro-dark);
    background: var(--rk-intro-blue-light);
}

/* Zapowiedź Narzędzi Interaktywnych (Teaser) */
.rk-intro-teaser-section {
    background: #f8fafc;
    border-top: 1px solid var(--rk-intro-border);
    padding: 45px;
}

.rk-intro-teaser-header {
    text-align: center;
    margin-bottom: 30px;
}

.rk-intro-teaser-header h4 {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-intro-dark);
    margin: 0 0 10px 0;
}

.rk-intro-teaser-header p {
    font-size: 15px;
    color: var(--rk-intro-gray);
    margin: 0;
}

.rk-intro-tools-grid {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-intro-tool-btn {
    background: white;
    border: 1px solid var(--rk-intro-border);
    padding: 20px;
    border-radius: 12px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 20px;
    text-align: left;
}

.rk-intro-tool-btn:hover {
    background: var(--rk-intro-accent-light);
    border-color: #a7f3d0;
}

.rk-intro-tool-btn.active {
    background: var(--rk-intro-accent-light);
    border-color: var(--rk-intro-accent);
    box-shadow: 0 4px 10px rgba(16, 185, 129, 0.1);
}

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

.rk-intro-tool-btn.active .rk-intro-tool-icon {
    background: var(--rk-intro-accent);
    color: white;
}

.rk-intro-tool-text h5 {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-intro-dark);
    margin: 0 0 5px 0;
}

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

/* Moduł Wyniku Teasera */
.rk-intro-tool-preview {
    background: white;
    border: 1px solid var(--rk-intro-border);
    border-radius: 12px;
    padding: 25px;
    margin-top: 15px;
    display: none; /* Sterowane z JS, brak animacji */
}

.rk-intro-tool-preview.show {
    display: block;
}

.rk-intro-tool-preview p {
    font-size: 15px;
    color: var(--rk-intro-dark);
    margin: 0;
    line-height: 1.6;
    font-weight: 600;
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-intro-hook-box { flex-direction: column; padding: 30px 25px; gap: 20px; text-align: center; align-items: center; }
    .rk-intro-quick-answer { padding: 30px 25px; }
    .rk-intro-teaser-section { padding: 30px 25px; }
    .rk-intro-tool-btn { flex-direction: column; text-align: center; gap: 15px; padding: 20px 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/"
    },
    "headline": "Instalacja ogrzewania podłogowego w układzie meandrowym – Zrozumieć fizykę ciepła",
    "description": "Definicja i charakterystyka instalacji ogrzewania podłogowego w układzie meandrowym. Zrozum liniowy spadek temperatury czynnika grzewczego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-10",
    "dateModified": "2026-07-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#dataset-definicja",
    "name": "Parametry definicyjne układu meandrowego",
    "description": "Podstawowe cechy i właściwości termodynamiczne płaszczyznowego układu meandrowego, determinujące różnicowanie wydajności cieplnej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "instalacja ogrzewania podłogowego meander",
      "liniowy spadek temperatury czynnika",
      "układ równoległy rur grzewczych",
      "profil temperatur jastrychu",
      "niskotemperaturowy system płaszczyznowy"
    ],
    "measurementTechnique": "Określenie zjawisk fizycznych i geometrycznych w obrębie wylewki jastrychowej przy równoległym trasowaniu przewodów grzewczych o kącie zwrotu 180 stopni.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Geometria: Rury układane równolegle z nawrotami o 180 stopni.",
        "Termodynamika: Liniowy spadek temperatury czynnika wzdłuż pętli.",
        "Cel: Zróżnicowanie wydajności cieplnej (kompensacja strat stref brzegowych)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#webapp-spis-narzedzi",
    "name": "Eksplorator Narzędzi Artykułu",
    "description": "Zestawienie interaktywnych modułów obliczeniowych i edukacyjnych dostępnych w dalszej części publikacji, dotyczących układu meandrowego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container" id="meander-intro">
    
    <div class="rk-intro-hook-box">
        <div class="rk-intro-hook-icon">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
        </div>
        <div class="rk-intro-hook-content">
            <h2>Płacisz tysiące za pompę ciepła, a podłoga przy oknie i tak jest lodowata?</h2>
            <p>Zainwestowałeś w nowoczesne źródło ciepła, ale w salonie brakuje komfortu? Błąd niemal zawsze leży w geometrii rur i braku zrozumienia termodynamiki. Układ meandrowy, choć trudniejszy w obliczeniach, to jedyna tarcza obronna przed wychłodzeniem.</p>
        </div>
    </div>

    <div class="rk-intro-quick-answer">
        <div class="rk-intro-qa-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4"></path><path d="M12 8h.01"></path></svg>
            Szybka odpowiedź eksperta
        </div>
        <h3>Czym jest instalacja ogrzewania podłogowego w układzie meandrowym?</h3>
        <p>
            Instalacja ogrzewania podłogowego w układzie meandrowym to niskotemperaturowy system płaszczyznowy, w którym rury grzewcze są układane równolegle względem siebie w kształt jednostronnych pętli z zakrętami o 180 stopni. Rozwiązanie to charakteryzuje się liniowym spadkiem temperatury czynnika grzewczego wzdłuż pętli, co pozwala na celowe różnicowanie wydajności cieplnej w obrębie jednego pomieszczenia.
        </p>
        <p>
            Jako system płaszczyznowy, instalacja ta zapewnia pionowy profil temperatur zbliżony do idealnego dla organizmu człowieka, eliminując <a href="https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/">tradycyjne grzejniki konwekcyjne</a>. Prawidłowo zaprojektowany układ meandrowy redukuje koszty eksploatacyjne budynku przy współpracy z <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">pompami ciepła</a>.
        </p>
    </div>

    <div class="rk-intro-teaser-section">
        <div class="rk-intro-teaser-header">
            <h4>Co jeszcze odkryjesz w tym kompendium?</h4>
            <p>Ten artykuł to nie tylko sucha teoria. Przewiń w dół, aby skorzystać z zaawansowanych, interaktywnych narzędzi inżynierskich przygotowanych specjalnie dla Ciebie.</p>
        </div>

        <div class="rk-intro-tools-grid" id="teaserTabs">
            <button class="rk-intro-tool-btn" data-tool="calc">
                <div class="rk-intro-tool-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><line x1="8" y1="6" x2="16" y2="6"></line><line x1="16" y1="14" x2="16.01" y2="14"></line><line x1="12" y1="14" x2="12.01" y2="14"></line><line x1="8" y1="14" x2="8.01" y2="14"></line><line x1="16" y1="18" x2="16.01" y2="18"></line><line x1="12" y1="18" x2="12.01" y2="18"></line><line x1="8" y1="18" x2="8.01" y2="18"></line></svg>
                </div>
                <div class="rk-intro-tool-text">
                    <h5>Kalkulator przepływów i strat</h5>
                    <p>Oblicz na żywo nastawy dla rotametrów na podstawie mocy cieplnej.</p>
                </div>
            </button>

            <button class="rk-intro-tool-btn" data-tool="sim">
                <div class="rk-intro-tool-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                </div>
                <div class="rk-intro-tool-text">
                    <h5>Symulatory termodynamiki EN 1264</h5>
                    <p>Sprawdź wizualnie, co się stanie przy błędnym trasowaniu meandru.</p>
                </div>
            </button>

            <button class="rk-intro-tool-btn" data-tool="case">
                <div class="rk-intro-tool-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
                </div>
                <div class="rk-intro-tool-text">
                    <h5>Interaktywne Case Study z budowy</h5>
                    <p>Rozwiązanie problemu braku nośności stropu w domu z lat 70.</p>
                </div>
            </button>
        </div>

        <div class="rk-intro-tool-preview" id="teaserPreviewBox">
            </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btns = document.querySelectorAll('.rk-intro-tool-btn');
    var previewBox = document.getElementById('teaserPreviewBox');

    var teaserData = {
        "calc": "Zastosowaliśmy precyzyjne algorytmy fizyczne. Suwaki pozwolą Ci od razu zobaczyć, czy Twoja pętla nie stawia zbyt dużych oporów hydraulicznych i nie zadławi pracy całego rozdzielacza.",
        "sim": "Graficzne heatmapy oparte na wytycznych PN-EN pokażą Ci różnicę pomiędzy powstawaniem bezpiecznej kurtyny termicznej, a przekroczeniem dopuszczalnych 29°C w salonie.",
        "case": "Krok po kroku przeprowadzimy Cię przez proces decyzyjny inżyniera, który uratował drewniany strop przed zawaleniem ciężką wylewką, stosując system suchy w układzie meandrowym."
    };

    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            var isActive = this.classList.contains('active');

            // Resetowanie wszystkich
            btns.forEach(function(b) { b.classList.remove('active'); });

            if (isActive === false) {
                this.classList.add('active');
                var tool = this.getAttribute('data-tool');
                var text = teaserData[tool];

                if (text !== undefined) {
                    previewBox.innerHTML = '<p>' + text + '</p>';
                    previewBox.classList.add('show');
                }
            } else {
                // Jesli kliknieto aktywny - zwiń (bezpieczna logika bez operators logicznych negacji zlozonych)
                previewBox.classList.remove('show');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-en-dark: #0f172a;
    --rk-en-blue: #0284c7;
    --rk-en-red: #ef4444;
    --rk-en-orange: #f59e0b;
    --rk-en-gray: #475569;
    --rk-en-bg: #ffffff;
    --rk-en-border: #e2e8f0;
    --rk-en-light: #f8fafc;
}

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

/* Header */
.rk-en-header {
    background: linear-gradient(135deg, var(--rk-en-dark) 0%, #1e293b 100%);
    padding: 35px 40px;
    color: white;
    text-align: center;
    border-bottom: 4px solid var(--rk-en-blue);
}

.rk-en-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.4;
    color: white;
}

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

/* Interfejs Single-Column */
.rk-en-body {
    padding: 35px 40px;
    background: var(--rk-en-light);
}

/* Moduł Sterowania Symulacją */
.rk-en-controls {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
    justify-content: center;
    flex-wrap: wrap;
}

.rk-en-btn {
    background: white;
    border: 2px solid var(--rk-en-border);
    padding: 16px 20px;
    border-radius: 12px;
    cursor: pointer;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-en-gray);
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 12px;
    flex: 1;
    min-width: 260px;
    justify-content: center;
}

.rk-en-btn:hover {
    border-color: #bae6fd;
    background: #f0f9ff;
}

.rk-en-btn.active[data-layout="random"] {
    border-color: var(--rk-en-red);
    background: #fef2f2;
    color: var(--rk-en-red);
    box-shadow: 0 8px 20px -5px rgba(239, 68, 68, 0.3);
}

.rk-en-btn.active[data-layout="engineered"] {
    border-color: var(--rk-en-blue);
    background: #f0f9ff;
    color: var(--rk-en-blue);
    box-shadow: 0 8px 20px -5px rgba(2, 132, 199, 0.3);
}

.rk-en-btn svg {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
}

/* Moduł Wizualizacji SVG */
.rk-en-vis-box {
    background: white;
    border-radius: 16px;
    border: 1px solid var(--rk-en-border);
    padding: 30px;
    margin-bottom: 30px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.02);
}

.rk-en-svg-wrapper {
    width: 100%;
    height: 220px;
    background: #f1f5f9;
    border-radius: 12px;
    border: 1px dashed #cbd5e1;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
}

.rk-en-status {
    display: flex;
    justify-content: space-between;
    margin-top: 20px;
    padding: 15px 20px;
    border-radius: 10px;
    font-weight: 800;
    font-size: 15px;
    transition: all 0.3s ease;
}

.status-danger {
    background: #fef2f2;
    color: var(--rk-en-red);
    border: 1px solid #fca5a5;
}

.status-safe {
    background: #f0f9ff;
    color: var(--rk-en-blue);
    border: 1px solid #bae6fd;
}

/* Sekcja Tekstowa */
.rk-en-content-box {
    background: white;
    border-radius: 16px;
    border: 1px solid var(--rk-en-border);
    padding: 35px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.02);
}

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

.rk-en-content-box h3::before {
    content: '';
    display: inline-block;
    width: 6px;
    height: 24px;
    background: var(--rk-en-blue);
    border-radius: 4px;
}

.rk-en-content-box p {
    font-size: 16px;
    line-height: 1.8;
    color: #334155;
    margin: 0 0 15px 0;
}

.rk-en-content-box a {
    color: var(--rk-en-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: all 0.2s;
}

.rk-en-content-box a:hover {
    color: var(--rk-en-dark);
    background: #e0f2fe;
}

.rk-tech-val {
    font-weight: 800;
    color: var(--rk-en-dark);
    background: #e2e8f0;
    padding: 2px 6px;
    border-radius: 4px;
    white-space: nowrap;
}

/* Animacje zawartości */
.fade-in {
    animation: fadeIn 0.4s ease-out forwards;
}

@keyframes fadeIn {
    0% { opacity: 0; transform: translateY(10px); }
    100% { opacity: 1; transform: translateY(0); }
}

/* Animacje SVG (Pulsująca fala ciepła) */
.heat-wave {
    stroke-dasharray: 15;
    animation: flowHeat 1s linear infinite;
}

@keyframes flowHeat {
    to { stroke-dashoffset: -30; }
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-en-header, .rk-en-body { padding: 25px 20px; }
    .rk-en-controls { flex-direction: column; gap: 10px; }
    .rk-en-btn { width: 100%; justify-content: flex-start; padding: 16px 20px; }
    .rk-en-content-box { padding: 25px 20px; }
    .rk-en-status { flex-direction: column; gap: 10px; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#article-en1264",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/"
    },
    "headline": "Jak działa ogrzewanie podłogowe w układzie meandrowym w odniesieniu do normy EN 1264?",
    "description": "Analiza termodynamiki układu meandrowego. Jak zapobiec pękaniu płytek i dyskomfortowi gorących stóp, przestrzegając granicznej temperatury 29 stopni Celsjusza.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-10",
    "dateModified": "2026-07-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#dataset-en1264",
    "name": "Wymogi termiczne ogrzewania podłogowego wg PN-EN 1264-2",
    "description": "Ograniczenia fizyczne dla systemów płaszczyznowych definiujące maksymalną gęstość strumienia cieplnego względem komfortu ludzkiego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "norma PN-EN 1264 podłogówka",
      "maksymalna temperatura podłogi 29C",
      "spadek temperatury podłogówka",
      "pękanie płytek na ogrzewaniu podłogowym",
      "wymiana ciepła promieniowanie konwekcja",
      "gęstość strumienia cieplnego podłogówka"
    ],
    "measurementTechnique": "Analiza rozkładu temperatur (delta T 5-8K) na podstawie normy PN-EN 1264-2 w odniesieniu do stref stałego przebywania ludzi.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Maksymalna temperatura posadzki: 29°C (w strefie stałego przebywania domowników).",
        "Wymiana ciepła: Przeważa promieniowanie nad konwekcją swobodną.",
        "Delta T (Spadek temperatury): Standardowo wynosi od 5K do 8K pomiędzy zasilaniem a powrotem, powodując ryzyko powstania stref niedogrzanych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#webapp-en1264",
    "name": "Symulator Rozkładu Temperatur Meandru wg EN 1264",
    "description": "Interaktywne narzędzie obrazujące zjawisko powstawania stref niedogrzanych oraz przegrzewania posadzki powyżej 29 stopni Celsjusza w wyniku błędnego trasowania rur.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-en-container" id="norm-en1264-sim">
    <div class="rk-en-header">
        <h2>Jak działa meander w odniesieniu do normy EN 1264?</h2>
        <p>Ignorowanie fizyki to najkrótsza droga do popękanych płytek i lodowatych stóp. Przetestuj, jak ułożenie pętli względem okna wpływa na legalną temperaturę podłogi.</p>
    </div>

    <div class="rk-en-body">
        
        <div class="rk-en-controls" id="enTabs">
            <button class="rk-en-btn active" data-layout="random">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                Układ Przypadkowy (Błąd)
            </button>
            <button class="rk-en-btn" data-layout="engineered">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                Układ Inżynierski (Poprawny)
            </button>
        </div>

        <div class="rk-en-vis-box fade-in" id="enVisBox">
            
            <div class="rk-en-svg-wrapper" id="enSvgBox">
                <svg width="400" height="180" viewBox="0 0 400 180" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round">
                    <rect x="20" y="20" width="15" height="140" fill="#bae6fd" stroke="#0ea5e9" stroke-width="2"/> <rect x="280" y="50" width="100" height="80" rx="10" fill="#cbd5e1" stroke="#64748b" stroke-width="2"/> <defs>
                        <linearGradient id="gradBad" x1="100%" y1="0%" x2="0%" y2="0%">
                            <stop offset="0%" stop-color="#dc2626"/>
                            <stop offset="100%" stop-color="#38bdf8"/>
                        </linearGradient>
                    </defs>
                    <path d="M300 140 L50 140 L50 110 L350 110 L350 80 L50 80 L50 50 L300 50" stroke="url(#gradBad)" stroke-width="8" class="heat-wave"/>
                    <text x="320" y="165" font-size="12" fill="#dc2626" stroke="none" font-weight="bold">> 32°C (Dyskomfort)</text>
                    <text x="50" y="165" font-size="12" fill="#0ea5e9" stroke="none" font-weight="bold">< 22°C (Chłód)</text>
                </svg>
            </div>

            <div class="rk-en-status status-danger" id="enStatusBox">
                <span>Strefa bytowa: <strong>Przegrzana (> 29°C)</strong></span>
                <span>Strefa okna: <strong>Niedogrzana</strong></span>
            </div>

        </div>

        <div class="rk-en-content-box fade-in" id="enContentBox">
            <h3 id="enTitle">Brak balansu i ryzyko dla posadzki</h3>
            <div id="enText">
                <p>
                    <a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/">Instalacja ogrzewania podłogowego</a> w układzie meandrowym działa na zasadzie wymiany ciepła przez promieniowanie oraz konwekcję swobodną. Zgodnie z bezwzględną normą <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">PN-EN 1264-2</a>, maksymalna gęstość strumienia cieplnego (<strong>q</strong>) nie może przekroczyć wartości granicznych. Są one determinowane przez maksymalną temperaturę podłogi wynoszącą <span class="rk-tech-val">29°C</span> w strefie stałego przebywania ludzi.
                </p>
                <p>
                    Czynnik grzewczy wpływa do pętli z określoną temperaturą zasilania <strong>Tz</strong> (najczęściej 35°C–45°C), a oddając ciepło do jastrychu, schładza się liniowo aż do osiągnięcia temperatury powrotu przy rozdzielaczu. Standardowy spadek temperatury medium (<strong>ΔT = 5K do 8K</strong>) powoduje proporcjonalne obniżenie mocy cieplnej na każdym metrze bieżącym rury.
                </p>
                <p>
                    Ból inwestora polega na tym, że bez przeprowadzenia <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">bilansu cieplnego budynku</a> i znajomości fizyki, pierwsza część pokoju będzie nieprzyjemnie gorąca, a druga zimna. Układ ułożony bez planu wygeneruje strefy o zbyt wysokiej temperaturze na początku zasilania (powyżej 29°C). Skutkuje to efektem &#8222;gorących stóp&#8221;, a co gorsza – miejscowymi naprężeniami termicznymi prowadzącymi do pękania okładzin ceramicznych i mikropęknięć w jastrychu.
                </p>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btns = document.querySelectorAll('.rk-en-btn');
    var visBox = document.getElementById('enVisBox');
    var contentBox = document.getElementById('enContentBox');
    var svgBox = document.getElementById('enSvgBox');
    var statusBox = document.getElementById('enStatusBox');
    var enTitle = document.getElementById('enTitle');
    var enText = document.getElementById('enText');

    var layoutData = {
        "random": {
            statusClass: "status-danger",
            statusHtml: '<span>Strefa bytowa: <strong>Przegrzana (> 29°C)</strong></span><span>Strefa okna: <strong>Niedogrzana</strong></span>',
            svg: '<svg width="400" height="180" viewBox="0 0 400 180" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><rect x="20" y="20" width="15" height="140" fill="#bae6fd" stroke="#0ea5e9" stroke-width="2"/><rect x="280" y="50" width="100" height="80" rx="10" fill="#cbd5e1" stroke="#64748b" stroke-width="2"/><defs><linearGradient id="gradBad" x1="100%" y1="0%" x2="0%" y2="0%"><stop offset="0%" stop-color="#dc2626"/><stop offset="100%" stop-color="#38bdf8"/></linearGradient></defs><path d="M300 140 L50 140 L50 110 L350 110 L350 80 L50 80 L50 50 L300 50" stroke="url(#gradBad)" stroke-width="8" class="heat-wave"/><text x="320" y="165" font-size="12" fill="#dc2626" stroke="none" font-weight="bold">> 32°C (Dyskomfort)</text><text x="50" y="165" font-size="12" fill="#0ea5e9" stroke="none" font-weight="bold">< 22°C (Chłód)</text></svg>',
            title: "Brak balansu i ryzyko dla posadzki",
            html: '<p><a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/">Instalacja ogrzewania podłogowego</a> w układzie meandrowym działa na zasadzie wymiany ciepła przez promieniowanie oraz konwekcję swobodną. Zgodnie z bezwzględną normą <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">PN-EN 1264-2</a>, maksymalna gęstość strumienia cieplnego (<strong>q</strong>) nie może przekroczyć wartości granicznych. Są one determinowane przez maksymalną temperaturę podłogi wynoszącą <span class="rk-tech-val">29°C</span> w strefie stałego przebywania ludzi.</p><p>Czynnik grzewczy wpływa do pętli z określoną temperaturą zasilania <strong>Tz</strong> (najczęściej 35°C–45°C), a oddając ciepło do jastrychu, schładza się liniowo aż do osiągnięcia temperatury powrotu przy rozdzielaczu. Standardowy spadek temperatury medium (<strong>ΔT = 5K do 8K</strong>) powoduje proporcjonalne obniżenie mocy cieplnej na każdym metrze bieżącym rury.</p><p>Ból inwestora polega na tym, że bez przeprowadzenia <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">bilansu cieplnego budynku</a> i znajomości fizyki, pierwsza część pokoju będzie nieprzyjemnie gorąca, a druga zimna. Układ ułożony bez planu wygeneruje strefy o zbyt wysokiej temperaturze na początku zasilania (powyżej 29°C). Skutkuje to efektem "gorących stóp", a co gorsza – miejscowymi naprężeniami termicznymi prowadzącymi do pękania okładzin ceramicznych i mikropęknięć w jastrychu.</p>'
        },
        "engineered": {
            statusClass: "status-safe",
            statusHtml: '<span>Strefa bytowa: <strong>Normatywna (26-28°C)</strong></span><span>Strefa okna: <strong>Chroniona (35°C)</strong></span>',
            svg: '<svg width="400" height="180" viewBox="0 0 400 180" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><rect x="20" y="20" width="15" height="140" fill="#bae6fd" stroke="#0ea5e9" stroke-width="2"/><rect x="280" y="50" width="100" height="80" rx="10" fill="#cbd5e1" stroke="#64748b" stroke-width="2"/><defs><linearGradient id="gradGood" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#dc2626"/><stop offset="100%" stop-color="#f59e0b"/></linearGradient></defs><path d="M50 140 L350 140 L350 110 L50 110 L50 80 L350 80 L350 50 L50 50" stroke="url(#gradGood)" stroke-width="8" class="heat-wave"/><text x="50" y="165" font-size="12" fill="#dc2626" stroke="none" font-weight="bold">MAX 35°C (Dozwolone)</text><text x="300" y="165" font-size="12" fill="#0284c7" stroke="none" font-weight="bold">26-28°C (Komfort)</text></svg>',
            title: "Inteligentna kompensacja infiltracji",
            html: '<p>Aby zapobiec niszczeniu wylewek i dyskomfortowi domowników, inżynierowie wypracowali metodę układania meandru w sposób ściśle ukierunkowany. Rura zasilająca wprowadzana jest zawsze najpierw pod przegrody o najwyższych stratach ciepła, czyli bezpośrednio pod szyby tarasowe i ściany zewnętrzne.</p><p>Pozwala to zrównoważyć profil temperatur w pomieszczeniach o podwyższonych stratach. Norma PN-EN 1264 dopuszcza w strefie brzegowej (czyli wąskim pasie przy ścianie, gdzie nie przebywamy stale) temperaturę posadzki aż do <span class="rk-tech-val">35°C</span>. Przez to najgorętsza woda oddaje swój potężny ładunek tam, gdzie jest on najbardziej potrzebny do walki z infiltracją zimnego powietrza.</p><p>Gdy czynnik grzewczy dociera w głąb salonu (pod strefę wypoczynkową), jego temperatura w naturalny sposób spada do pożądanego i w pełni bezpiecznego poziomu, zapewniając domownikom <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">zdrowy komfort cieplny bez negatywnych skutków ubocznych</a>.</p>'
        }
    };

    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Zmiana klas przycisków
            btns.forEach(function(b) { b.classList.remove('active'); });
            this.classList.add('active');

            var layout = this.getAttribute('data-layout');
            var data = layoutData[layout];

            // Bezpieczne wstrzyknięcie zawartości
            if (data !== undefined) {
                // Restart animacji CSS
                visBox.classList.remove('fade-in');
                contentBox.classList.remove('fade-in');
                void visBox.offsetWidth; // Wymuszony reflow przeglądarki
                void contentBox.offsetWidth;
                visBox.classList.add('fade-in');
                contentBox.classList.add('fade-in');

                // Aktualizacja Statusu
                statusBox.className = "rk-en-status " + data.statusClass;
                statusBox.innerHTML = data.statusHtml;

                // Aktualizacja SVG i Tekstu
                svgBox.innerHTML = data.svg;
                enTitle.textContent = data.title;
                enText.innerHTML = data.html;
            }
        });
    });
});
</script>



<style>
:root {
    --rk-mnd-dark: #0f172a;
    --rk-mnd-blue: #0284c7;
    --rk-mnd-blue-light: #e0f2fe;
    --rk-mnd-red: #dc2626;
    --rk-mnd-red-light: #fee2e2;
    --rk-mnd-gray: #64748b;
    --rk-mnd-bg: #ffffff;
    --rk-mnd-border: #e2e8f0;
}

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

/* Header */
.rk-mnd-header {
    background: linear-gradient(135deg, var(--rk-mnd-dark) 0%, #1e293b 100%);
    padding: 40px 30px;
    text-align: center;
    color: white;
    border-bottom: 4px solid var(--rk-mnd-blue);
}

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

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

/* Interfejs */
.rk-mnd-body {
    padding: 35px 40px;
    background: #f8fafc;
}

/* Przełączniki (Toggles) */
.rk-mnd-toggles {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
    justify-content: center;
    flex-wrap: wrap;
}

.rk-mnd-btn {
    background: white;
    border: 2px solid var(--rk-mnd-border);
    padding: 16px 24px;
    border-radius: 14px;
    cursor: pointer;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-mnd-gray);
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 12px;
    flex: 1;
    min-width: 240px;
    justify-content: center;
}

.rk-mnd-btn:hover {
    border-color: #bae6fd;
    background: var(--rk-mnd-blue-light);
}

.rk-mnd-btn.active {
    border-color: var(--rk-mnd-blue);
    background: var(--rk-mnd-blue);
    color: white;
    box-shadow: 0 8px 20px -5px rgba(2, 132, 199, 0.4);
}

.rk-mnd-btn svg {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
}

/* Wizualizacja SVG (Heatmapa) */
.rk-mnd-visual-box {
    background: white;
    border-radius: 16px;
    border: 1px solid var(--rk-mnd-border);
    padding: 30px;
    margin-bottom: 30px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.02);
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-mnd-svg-wrapper {
    width: 100%;
    max-width: 450px;
    height: 280px;
    background: #f1f5f9;
    border-radius: 12px;
    border: 1px dashed #cbd5e1;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
}

.rk-mnd-gradient-bar {
    width: 100%;
    max-width: 450px;
    height: 12px;
    border-radius: 6px;
    margin-top: 20px;
    background: linear-gradient(to right, #dc2626, #f59e0b, #38bdf8, #2563eb);
    position: relative;
}

.rk-mnd-grad-labels {
    display: flex;
    justify-content: space-between;
    width: 100%;
    max-width: 450px;
    margin-top: 8px;
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-mnd-gray);
}

/* Tekst i Wyjaśnienie */
.rk-mnd-content-box {
    background: white;
    border-radius: 16px;
    border: 1px solid var(--rk-mnd-border);
    padding: 35px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.02);
}

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

.rk-mnd-content-box h3::before {
    content: '';
    display: inline-block;
    width: 6px;
    height: 24px;
    background: var(--rk-mnd-red);
    border-radius: 4px;
}

.rk-mnd-content-box p {
    font-size: 16px;
    line-height: 1.8;
    color: #334155;
    margin: 0 0 15px 0;
}

.rk-mnd-content-box p:last-child {
    margin-bottom: 0;
}

.rk-mnd-content-box a {
    color: var(--rk-mnd-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: all 0.2s;
}

.rk-mnd-content-box a:hover {
    color: var(--rk-mnd-dark);
    background: var(--rk-mnd-blue-light);
}

.rk-tech-hl {
    background: var(--rk-mnd-red-light);
    color: var(--rk-mnd-red);
    padding: 2px 8px;
    border-radius: 4px;
    font-weight: 800;
    white-space: nowrap;
}

/* Animacje */
.fade-in {
    animation: fadeIn 0.4s ease-out forwards;
}

@keyframes fadeIn {
    0% { opacity: 0; transform: translateY(10px); }
    100% { opacity: 1; transform: translateY(0); }
}

/* SVG Path Animations */
.path-flow {
    stroke-dasharray: 18;
    animation: flowDash 1.2s linear infinite;
}

@keyframes flowDash {
    to { stroke-dashoffset: -36; }
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-mnd-header, .rk-mnd-body { padding: 25px 20px; }
    .rk-mnd-toggles { flex-direction: column; gap: 10px; }
    .rk-mnd-btn { width: 100%; justify-content: flex-start; padding: 16px 20px; }
    .rk-mnd-content-box { padding: 25px 20px; }
    .rk-mnd-svg-wrapper { height: 200px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#article-rodzaje",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/"
    },
    "headline": "Układ meander a podwójny meander – rzetelne wyjaśnienie różnic",
    "description": "Fizyczne i techniczne zestawienie różnic pomiędzy meandrem pojedynczym a podwójnym. Analiza promieni gięcia rur i kompensacji strat ciśnienia w podłogówce.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-10",
    "dateModified": "2026-07-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#dataset-meander-rodzaje",
    "name": "Rozkład temperatur i fizyka gięcia rur w układach meandrowych",
    "description": "Zestawienie profilu spadku temperatury czynnika grzewczego na powierzchni posadzki bez efektu krzyżowania się rur PEX.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "meander podwójny a pojedynczy różnice",
      "układ wężykowy podłogówki",
      "równoległe układanie rur podłogówka",
      "jak nie krzyżować rur ogrzewania",
      "rozkład temperatury podłogówki meander",
      "spadek temperatury czynnika zasilania"
    ],
    "measurementTechnique": "Algorytmiczna wizualizacja równoległego prowadzenia czynnika zasilającego i powrotnego bez nakładania się osi przewodów.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Meander Pojedynczy: System kierunkowy z silnym, odczuwalnym gradientem. Zasilanie oddaje ciepło jednostronnie.",
        "Meander Podwójny: Układ bezkolizyjny, gdzie rura zasilająca i powrotna wymieniają się promieniami gięcia na nawrotach, stabilizując średnią temperaturę."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#webapp-meander-rodzaje",
    "name": "Symulator Fizyki Pętli Meandrowych",
    "description": "Narzędzie webowe precyzyjnie obrazujące trasowanie rur zasilających i powrotnych w celu osiągnięcia pożądanego balansu termicznego jastrychu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-mnd-container" id="meander-types-sim">
    <div class="rk-mnd-header">
        <h2>Układ meander a podwójny meander – rzetelne wyjaśnienie różnic</h2>
        <p>Wybór między klasycznym wężykiem a bezkolizyjnym meandrem podwójnym to matematyczna decyzja o tym, czy Twoja podłoga będzie miała gorące strefy brzegowe, czy perfekcyjnie zbilansowaną temperaturę.</p>
    </div>

    <div class="rk-mnd-body">
        
        <div class="rk-mnd-toggles" id="mndTabs">
            <button class="rk-mnd-btn active" data-type="single">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M4 6h16M4 12h16M4 18h16"></path></svg>
                Meander Pojedynczy
            </button>
            <button class="rk-mnd-btn" data-type="double">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M4 6h16M4 10h16M4 14h16M4 18h16"></path></svg>
                Meander Podwójny
            </button>
        </div>

        <div class="rk-mnd-visual-box fade-in" id="mndVisBox">
            <div class="rk-mnd-svg-wrapper">
                <svg width="300" height="200" viewBox="0 0 300 200" fill="none" stroke-width="6" stroke-linejoin="round" id="mndSvg">
                    <defs>
                        <linearGradient id="gradSingle" x1="0%" y1="0%" x2="0%" y2="100%">
                            <stop offset="0%" stop-color="#dc2626" />
                            <stop offset="50%" stop-color="#f59e0b" />
                            <stop offset="100%" stop-color="#2563eb" />
                        </linearGradient>
                    </defs>
                    <path d="M20 25 L280 25 L280 50 L20 50 L20 75 L280 75 L280 100 L20 100 L20 125 L280 125 L280 150 L20 150" stroke="url(#gradSingle)" class="path-flow"/>
                </svg>
            </div>
            <div class="rk-mnd-gradient-bar"></div>
            <div class="rk-mnd-grad-labels">
                <span>Strefa Zasilania (Gorąca)</span>
                <span>Strefa Powrotu (Chłodna)</span>
            </div>
        </div>

        <div class="rk-mnd-content-box fade-in" id="mndContent">
            <h3 id="mndTitle">Meander Pojedynczy: Precyzyjny strumień kierunkowy</h3>
            <div id="mndText">
                <p>
                    W meandrze pojedynczym rura zasilająca układana jest od jednej ściany, zygzakiem (wężykiem) pokonując całe pomieszczenie, aż do punktu powrotu. Taka trasa skutkuje twardym zjawiskiem fizycznym zwanym <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">spadkiem temperatury czynnika (ΔT)</a>. Woda na początku pętli ma najwyższy parametr energetyczny, a systematycznie pokrywając metry kwadratowe jastrychu, mocno się wychładza.
                </p>
                <p>
                    <strong>Kiedy stosować?</strong> Ten klasyczny układ celowo wykorzystuje się tam, gdzie inżynier projektuje zróżnicowany profil temperatury podłogi. Sprawdza się znakomicie jako tarcza termiczna pod olbrzymimi oknami tarasowymi. W ten sposób <span class="rk-tech-hl">najgorętsza woda uderza w strefy największych strat ciepła</span>, a przyjemnie schłodzony powrót trafia na środek salonu, nie przegrzewając domowników.
                </p>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btns = document.querySelectorAll('.rk-mnd-btn');
    var visBox = document.getElementById('mndVisBox');
    var contentBox = document.getElementById('mndContent');
    var mndSvg = document.getElementById('mndSvg');
    var mndTitle = document.getElementById('mndTitle');
    var mndText = document.getElementById('mndText');

    // Baza danych ze zoptymalizowanymi ścieżkami (Brak krzyżowania się rur)
    var typeData = {
        "single": {
            title: "Meander Pojedynczy: Precyzyjny strumień kierunkowy",
            html: '<p>W meandrze pojedynczym rura zasilająca układana jest od jednej ściany, zygzakiem (wężykiem) pokonując całe pomieszczenie, aż do punktu powrotu. Taka trasa skutkuje twardym zjawiskiem fizycznym zwanym <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">spadkiem temperatury czynnika (ΔT)</a>. Woda na początku pętli ma najwyższy parametr energetyczny, a systematycznie pokrywając metry kwadratowe jastrychu, mocno się wychładza.</p><p><strong>Kiedy stosować?</strong> Ten klasyczny układ celowo wykorzystuje się tam, gdzie inżynier projektuje zróżnicowany profil temperatury podłogi. Sprawdza się znakomicie jako tarcza termiczna pod olbrzymimi oknami tarasowymi. W ten sposób <span class="rk-tech-hl">najgorętsza woda uderza w strefy największych strat ciepła</span>, a przyjemnie schłodzony powrót trafia na środek salonu, nie przegrzewając domowników.</p>',
            svg: '<defs><linearGradient id="gradSingle" x1="0%" y1="0%" x2="0%" y2="100%"><stop offset="0%" stop-color="#dc2626" /><stop offset="50%" stop-color="#f59e0b" /><stop offset="100%" stop-color="#2563eb" /></linearGradient></defs><path d="M20 25 L280 25 L280 50 L20 50 L20 75 L280 75 L280 100 L20 100 L20 125 L280 125 L280 150 L20 150" stroke="url(#gradSingle)" class="path-flow"/>'
        },
        "double": {
            title: "Meander Podwójny: Mistrzowski bilans (bez kolizji)",
            html: '<p>Meander podwójny to techniczna odpowiedź na wady pojedynczego wężyka, stosowana gdy zależy nam na równomiernej podłodze bez stref chłodu. W tym wariancie rura zasilająca (najgorętsza) prowadzona jest <span class="rk-tech-hl">idealnie równolegle obok rury powrotnej</span> (najchłodniejszej). Oznacza to, że każdy metr podłogi grzeje identyczną średnią mocą.</p><p>Co najważniejsze – rury się nie krzyżują. Na nawrotach przy ścianach, rura idąca po zewnętrznym łuku naturalnie "zawija się" i wchodzi na tor wewnętrzny, omijając bezkolizyjnie sąsiedni przewód. <a href="https://projekt-ogrzewania.pl/jak-ukladac-rury-w-ogrzewaniu-slimak-meander-czy-podwojny-meander/">Decyzja o wdrożeniu tego rozwiązania</a> ratuje długie korytarze i skomplikowane salony, w których ułożenie standardowego "ślimaka" jest architektonicznie niemożliwe, a inwestor kategorycznie żąda zbalansowanej, ciepłej podłogi.</p>',
            svg: '<defs><linearGradient id="gradDoubleZas" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#dc2626" /><stop offset="100%" stop-color="#f59e0b" /></linearGradient><linearGradient id="gradDoublePow" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#2563eb" /><stop offset="100%" stop-color="#f59e0b" /></linearGradient></defs><path d="M20 25 L280 25 L280 100 L40 100 L40 125 L280 125 L280 137.5" stroke="url(#gradDoubleZas)" class="path-flow"/><path d="M280 137.5 L280 150 L20 150 L20 75 L260 75 L260 50 L20 50" stroke="url(#gradDoublePow)" class="path-flow" style="animation-direction: reverse;"/>'
        }
    };

    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Zarządzanie stanami przycisków
            btns.forEach(function(b) { b.classList.remove('active'); });
            this.classList.add('active');

            var type = this.getAttribute('data-type');
            var data = typeData[type];

            // Bezpieczne ładowanie danych
            if (data !== undefined) {
                // Restart animacji CSS
                visBox.classList.remove('fade-in');
                contentBox.classList.remove('fade-in');
                void visBox.offsetWidth; // Wymuszenie reflow w przeglądarce
                void contentBox.offsetWidth;
                visBox.classList.add('fade-in');
                contentBox.classList.add('fade-in');

                // Aktualizacja drzewa DOM
                mndSvg.innerHTML = data.svg;
                mndTitle.innerHTML = data.title;
                mndText.innerHTML = data.html;
            }
        });
    });
});
</script>



<style>
:root {
    --rk-wood-dark: #271c19;
    --rk-wood-amber: #d97706;
    --rk-wood-amber-light: #fef3c7;
    --rk-wood-brown: #78350f;
    --rk-wood-gray: #64748b;
    --rk-wood-bg: #ffffff;
    --rk-wood-border: #e2e8f0;
    --rk-wood-red: #dc2626;
    --rk-wood-green: #059669;
}

.rk-wood-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-wood-bg);
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(120, 53, 15, 0.15);
    border: 1px solid #fcd34d;
    overflow: hidden;
}

/* Nagłówek */
.rk-wood-header {
    background: linear-gradient(135deg, var(--rk-wood-dark) 0%, var(--rk-wood-brown) 100%);
    padding: 40px;
    text-align: center;
    color: white;
    border-bottom: 4px solid var(--rk-wood-amber);
}

.rk-wood-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.4;
    color: white;
}

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

/* Interfejs Symulatora */
.rk-wood-interactive {
    padding: 40px;
    background: #f8fafc;
}

.rk-wood-tabs {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
    justify-content: center;
}

.rk-wood-tab-btn {
    background: white;
    border: 2px solid var(--rk-wood-border);
    padding: 18px 25px;
    border-radius: 14px;
    cursor: pointer;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-wood-gray);
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 12px;
    flex: 1;
    max-width: 350px;
    justify-content: center;
}

.rk-wood-tab-btn:hover {
    border-color: #fcd34d;
    background: var(--rk-wood-amber-light);
}

.rk-wood-tab-btn.active {
    border-color: var(--rk-wood-amber);
    background: var(--rk-wood-amber);
    color: white;
    box-shadow: 0 8px 20px -5px rgba(217, 119, 6, 0.4);
}

.rk-wood-tab-btn svg {
    width: 24px;
    height: 24px;
    flex-shrink: 0;
}

/* Wynik Symulacji Obciążenia */
.rk-wood-result-box {
    background: white;
    border-radius: 16px;
    border: 1px solid var(--rk-wood-border);
    padding: 30px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.03);
}

.rk-wood-svg-panel {
    background: #f1f5f9;
    border-radius: 12px;
    height: 160px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 25px;
    border: 1px dashed #cbd5e1;
    overflow: hidden;
    position: relative;
}

.rk-weight-status {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 15px 20px;
    border-radius: 10px;
    margin-bottom: 25px;
    font-weight: 800;
    font-size: 18px;
    transition: all 0.3s;
}

.status-danger {
    background: #fef2f2;
    color: var(--rk-wood-red);
    border: 1px solid #fca5a5;
}

.status-safe {
    background: #ecfdf5;
    color: var(--rk-wood-green);
    border: 1px solid #6ee7b7;
}

/* Blok tekstowy */
.rk-wood-text-content {
    text-align: left;
}

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

.rk-wood-text-content p {
    font-size: 16px;
    line-height: 1.8;
    color: #334155;
    margin: 0 0 15px 0;
}

.rk-wood-text-content p:last-child {
    margin-bottom: 0;
}

.rk-wood-text-content a {
    color: var(--rk-wood-amber);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: all 0.2s;
}

.rk-wood-text-content a:hover {
    color: var(--rk-wood-brown);
    background: var(--rk-wood-amber-light);
}

/* Animacje zawartości */
.fade-in-content {
    animation: fadeInContent 0.4s ease-out forwards;
}

@keyframes fadeInContent {
    0% { opacity: 0; transform: translateY(10px); }
    100% { opacity: 1; transform: translateY(0); }
}

/* Animacje SVG */
.anim-beam-bend {
    animation: bendBeam 2s infinite alternate ease-in-out;
    transform-origin: center;
}

@keyframes bendBeam {
    0% { transform: translateY(0) scaleY(1); }
    100% { transform: translateY(5px) scaleY(0.9); fill: #b91c1c; }
}

/* Responsywność - Mobile (pionowy układ, brak poziomego scrolla) */
@media (max-width: 768px) {
    .rk-wood-header, .rk-wood-interactive { padding: 25px 20px; }
    .rk-wood-tabs { flex-direction: column; gap: 10px; }
    .rk-wood-tab-btn { width: 100%; max-width: 100%; justify-content: flex-start; padding: 18px 20px; }
    .rk-weight-status { flex-direction: column; gap: 10px; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#article-strop-drewniany",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/"
    },
    "headline": "Układ meandrowy na stropach drewnianych: Idealne rozwiązanie dla domów szkieletowych",
    "description": "Techniczne uwarunkowania montażu ogrzewania podłogowego w układzie meandrowym na stropach drewnianych z wykorzystaniem systemów suchych bez ciężkiej wylewki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-10",
    "dateModified": "2026-07-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#dataset-obciazenie-stropu",
    "name": "Porównanie obciążenia stropów drewnianych: System mokry vs suchy",
    "description": "Zestawienie obciążeń statycznych generowanych przez wylewki betonowe oraz systemy suche ogrzewania podłogowego z lamelami aluminiowymi na 1 m2 stropu.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ogrzewanie podłogowe na drewnianym stropie",
      "lekka podłogówka system suchy",
      "podłogówka w domu szkieletowym",
      "waga ogrzewania podłogowego m2",
      "brak wylewki betonowej na stropie",
      "układ meandrowy w systemie suchym"
    ],
    "measurementTechnique": "Szacunkowe obliczenia wagi m2 jastrychu cementowego (grubość ok 6 cm) w porównaniu do płyt systemowych XPS z radiatorem aluminiowym.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "System Tradycyjny (Mokry): Waga od 120 do 150 kg/m2, wysokie ryzyko dla konstrukcji drewnianych.",
        "System Lekki (Suchy meander): Waga poniżej 15-20 kg/m2, w pełni bezpieczny dla stropów w domach szkieletowych i drewnianych z bali."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#webapp-strop",
    "name": "Symulator Obciążenia Stropu Drewnianego",
    "description": "Aplikacja webowa pomagająca inwestorom zrozumieć zagrożenia konstrukcyjne wynikające z błędnego doboru technologii ogrzewania podłogowego na stropach o lekkiej konstrukcji.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-wood-container" id="wood-ceiling-sim">
    <div class="rk-wood-header">
        <h2>Układ meandrowy na stropach drewnianych: Bezpieczne rozwiązanie bez wylewki</h2>
        <p>Wielu inwestorów remontujących stare domy lub budujących w technologii szkieletowej porzuca marzenia o podłogówce w obawie przed zarwaniem stropu. Tymczasem układ meandrowy to klucz do zastosowania ultra-lekkich systemów suchych.</p>
    </div>

    <div class="rk-wood-interactive">
        
        <div class="rk-wood-tabs" id="woodTabs">
            <button class="rk-wood-tab-btn" data-system="wet">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                System Mokry (Wylewka)
            </button>
            <button class="rk-wood-tab-btn active" data-system="dry">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                System Suchy (Lekki)
            </button>
        </div>

        <div class="rk-wood-result-box fade-in-content" id="woodContent">
            
            <div class="rk-weight-status status-safe" id="woodStatus">
                <span>Obciążenie: <strong>~ 15 kg/m²</strong></span>
                <span>Stan: <strong>W pełni bezpieczne dla drewna</strong></span>
            </div>

            <div class="rk-wood-svg-panel" id="woodSvgBox">
                <svg width="250" height="120" viewBox="0 0 250 120" fill="none" stroke="currentColor">
                    <rect x="20" y="80" width="210" height="20" fill="#d97706" stroke="#92400e" stroke-width="2"/>
                    <rect x="20" y="60" width="210" height="15" fill="#e2e8f0" stroke="#94a3b8" stroke-width="1"/>
                    <path d="M30 65 L220 65" stroke="#fcd34d" stroke-width="4"/>
                    <circle cx="60" cy="65" r="4" fill="#dc2626" stroke="none"/>
                    <circle cx="120" cy="65" r="4" fill="#dc2626" stroke="none"/>
                    <circle cx="180" cy="65" r="4" fill="#dc2626" stroke="none"/>
                    <text x="125" y="45" font-size="12" fill="#64748b" stroke="none" text-anchor="middle">Lekkie płyty z lamelami aluminiowymi</text>
                </svg>
            </div>

            <div class="rk-wood-text-content" id="woodTextBox">
                <h3>Idealna synergia meandru z lekką konstrukcją</h3>
                <p>
                    Zastosowanie tradycyjnej wylewki betonowej to dodatkowe obciążenie rzędu 120-150 kg na każdy metr kwadratowy podłogi. W przypadku starych budynków z bali lub nowoczesnych legarów to wyrok dla statyki. Dlatego <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-nadaje-sie-do-drewnianego-stropu/">ogrzewanie podłogowe na drewnianym stropie</a> wymaga całkowitego wyeliminowania masywnego betonu.
                </p>
                <p>
                    Tutaj z pomocą przychodzi <a href="https://projekt-ogrzewania.pl/czym-jest-system-suchy-w-wodnym-ogrzewaniu-podlogowym/">system lekki suchy</a>. Opiera się on na gotowych płytach systemowych (najczęściej z twardego styropianu EPS/XPS lub włókna drzewnego), które posiadają fabrycznie wyfrezowane rowki. Co kluczowe – te rowki niemal zawsze wymuszają prowadzenie rur właśnie w formie klasycznego meandru.
                </p>
                <p>
                    W rynienki wciska się rurę grzewczą wraz z profilami aluminiowymi (tzw. lamelami), które pełnią rolę radiatorów błyskawicznie rozprowadzających ciepło po posadzce. Taka instalacja <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-wodne-bez-wylewki/">wodnej podłogówki bez wylewki</a> redukuje obciążenie do zaledwie 15-20 kg/m², co czyni z meandru rozwiązanie bezkonkurencyjne w <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/">domach szkieletowych</a> oraz przy renowacji zabytkowych kamienic z drewnianymi stropami.
                </p>
            </div>

        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var tabs = document.querySelectorAll('.rk-wood-tab-btn');
    var contentBox = document.getElementById('woodContent');
    var statusBox = document.getElementById('woodStatus');
    var svgBox = document.getElementById('woodSvgBox');
    var textBox = document.getElementById('woodTextBox');

    var simData = {
        "wet": {
            statusClass: "status-danger",
            statusHtml: '<span>Obciążenie: <strong>120 - 150 kg/m²</strong></span><span>Stan: <strong>Krytyczne ryzyko dla stropu!</strong></span>',
            svg: '<svg width="250" height="120" viewBox="0 0 250 120" fill="none" stroke="currentColor"><rect x="20" y="80" width="210" height="20" fill="#d97706" stroke="#92400e" stroke-width="2" class="anim-beam-bend"/><rect x="20" y="20" width="210" height="60" fill="#cbd5e1" stroke="#64748b" stroke-width="1"/><circle cx="60" cy="65" r="4" fill="#dc2626" stroke="none"/><circle cx="120" cy="65" r="4" fill="#dc2626" stroke="none"/><circle cx="180" cy="65" r="4" fill="#dc2626" stroke="none"/><text x="125" y="45" font-size="12" fill="#1e293b" stroke="none" text-anchor="middle" font-weight="bold">Ciężka wylewka betonowa (6 cm)</text></svg>',
            title: "Masa niszcząca konstrukcje z drewna",
            html: '<p>Wylanie standardowego, mokrego jastrychu na elastyczny strop z legarów drewnianych to kardynalny błąd budowlany. Po pierwsze, wprowadzamy do budynku drewnianego setki litrów wilgoci technologicznej. Po drugie, potężna masa (dochodząca do 150 kg/m²) powoduje ugięcie belek nośnych.</p><p>Ugięcie drewna pod wpływem ciężaru wylewki prowadzi do błyskawicznego spękania samego betonu oraz uszkodzenia rur grzewczych ukrytych w jego wnętrzu. Nawet jeśli strop wytrzyma statycznie, drgania akustyczne będą przenosić się po całym budynku, a popękane płytki ceramiczne przypomną o błędnej decyzji inwestycyjnej.</p>'
        },
        "dry": {
            statusClass: "status-safe",
            statusHtml: '<span>Obciążenie: <strong>~ 15 kg/m²</strong></span><span>Stan: <strong>W pełni bezpieczne dla drewna</strong></span>',
            svg: '<svg width="250" height="120" viewBox="0 0 250 120" fill="none" stroke="currentColor"><rect x="20" y="80" width="210" height="20" fill="#d97706" stroke="#92400e" stroke-width="2"/><rect x="20" y="60" width="210" height="15" fill="#e2e8f0" stroke="#94a3b8" stroke-width="1"/><path d="M30 65 L220 65" stroke="#fcd34d" stroke-width="4"/><circle cx="60" cy="65" r="4" fill="#dc2626" stroke="none"/><circle cx="120" cy="65" r="4" fill="#dc2626" stroke="none"/><circle cx="180" cy="65" r="4" fill="#dc2626" stroke="none"/><text x="125" y="45" font-size="12" fill="#64748b" stroke="none" text-anchor="middle">Lekkie płyty z lamelami aluminiowymi</text></svg>',
            title: "Idealna synergia meandru z lekką konstrukcją",
            html: '<p>Zastosowanie tradycyjnej wylewki betonowej to dodatkowe obciążenie rzędu 120-150 kg na każdy metr kwadratowy podłogi. W przypadku starych budynków z bali lub nowoczesnych legarów to wyrok dla statyki. Dlatego <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-nadaje-sie-do-drewnianego-stropu/">ogrzewanie podłogowe na drewnianym stropie</a> wymaga całkowitego wyeliminowania masywnego betonu.</p><p>Tutaj z pomocą przychodzi <a href="https://projekt-ogrzewania.pl/czym-jest-system-suchy-w-wodnym-ogrzewaniu-podlogowym/">system lekki suchy</a>. Opiera się on na gotowych płytach systemowych (najczęściej z twardego styropianu EPS/XPS lub włókna drzewnego), które posiadają fabrycznie wyfrezowane rowki. Co kluczowe – te rowki niemal zawsze wymuszają prowadzenie rur właśnie w formie klasycznego meandru.</p><p>W rynienki wciska się rurę grzewczą wraz z profilami aluminiowymi (tzw. lamelami), które pełnią rolę radiatorów błyskawicznie rozprowadzających ciepło po posadzce. Taka instalacja <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-wodne-bez-wylewki/">wodnej podłogówki bez wylewki</a> redukuje obciążenie do zaledwie 15-20 kg/m², co czyni z meandru rozwiązanie bezkonkurencyjne w <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/">domach szkieletowych</a> oraz przy renowacji zabytkowych kamienic z drewnianymi stropami.</p>'
        }
    };

    tabs.forEach(function(tab) {
        tab.addEventListener('click', function() {
            // Zmiana klas w zakładkach
            tabs.forEach(function(t) { t.classList.remove('active'); });
            this.classList.add('active');

            var target = this.getAttribute('data-system');
            var data = simData[target];

            // Bezpieczna podmiana danych bez operacji logicznych na zmiennych
            if (data !== undefined) {
                // Restart animacji CSS
                contentBox.classList.remove('fade-in-content');
                void contentBox.offsetWidth; // Zabezpieczenie reflow
                contentBox.classList.add('fade-in-content');

                // Aktualizacja Statusu
                statusBox.className = "rk-weight-status " + data.statusClass;
                statusBox.innerHTML = data.statusHtml;

                // Aktualizacja SVG i Tekstu
                svgBox.innerHTML = data.svg;
                textBox.innerHTML = '<h3>' + data.title + '</h3>' + data.html;
            }
        });
    });
});
</script>



<style>
:root {
    --rk-retro-dark: #1e293b;
    --rk-retro-orange: #ea580c;
    --rk-retro-orange-light: #ffedd5;
    --rk-retro-blue: #0284c7;
    --rk-retro-gray: #64748b;
    --rk-retro-bg: #ffffff;
    --rk-retro-border: #e2e8f0;
}

.rk-retro-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-retro-bg);
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(234, 88, 12, 0.15);
    border: 1px solid #fdba74;
    overflow: hidden;
}

/* Nagłówek */
.rk-retro-header {
    background: linear-gradient(135deg, #7c2d12 0%, #9a3412 100%);
    padding: 35px 40px;
    color: white;
    text-align: center;
}

.rk-retro-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.4;
    color: white;
}

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

/* Interfejs */
.rk-retro-body {
    padding: 35px 40px;
    background: #f8fafc;
}

/* Przełącznik typów budynków */
.rk-retro-tabs {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
    justify-content: center;
    flex-wrap: wrap;
}

.rk-retro-tab-btn {
    background: white;
    border: 2px solid var(--rk-retro-border);
    padding: 18px 24px;
    border-radius: 14px;
    cursor: pointer;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-retro-gray);
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 12px;
    flex: 1;
    min-width: 250px;
    justify-content: center;
}

.rk-retro-tab-btn:hover {
    border-color: #fdba74;
    background: var(--rk-retro-orange-light);
}

.rk-retro-tab-btn.active {
    border-color: var(--rk-retro-orange);
    background: var(--rk-retro-orange);
    color: white;
    box-shadow: 0 8px 20px -5px rgba(234, 88, 12, 0.4);
}

.rk-retro-tab-btn svg {
    width: 24px;
    height: 24px;
    flex-shrink: 0;
}

/* Główny kontener treści (Pionowy, tekstowy) */
.rk-retro-content-box {
    background: white;
    border-radius: 16px;
    border: 1px solid var(--rk-retro-border);
    padding: 40px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.03);
    text-align: left;
}

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

.rk-retro-content-box h3::before {
    content: '';
    display: inline-block;
    width: 6px;
    height: 24px;
    background: var(--rk-retro-orange);
    border-radius: 4px;
}

.rk-retro-content-box p {
    font-size: 16px;
    line-height: 1.8;
    color: #334155;
    margin: 0 0 15px 0;
}

.rk-retro-content-box p:last-child {
    margin-bottom: 0;
}

.rk-retro-content-box a {
    color: var(--rk-retro-orange);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(234, 88, 12, 0.2);
    transition: all 0.2s;
}

.rk-retro-content-box a:hover {
    border-bottom-color: var(--rk-retro-orange);
    background: var(--rk-retro-orange-light);
}

.rk-keyword-highlight {
    font-weight: 700;
    color: var(--rk-retro-dark);
    background: var(--rk-retro-orange-light);
    padding: 2px 6px;
    border-radius: 4px;
}

/* Animacje zawartości */
.fade-in-up {
    animation: fadeInUp 0.4s ease-out forwards;
}

@keyframes fadeInUp {
    0% { opacity: 0; transform: translateY(10px); }
    100% { opacity: 1; transform: translateY(0); }
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-retro-header, .rk-retro-body { padding: 25px 20px; }
    .rk-retro-tabs { flex-direction: column; gap: 10px; }
    .rk-retro-tab-btn { width: 100%; justify-content: flex-start; padding: 16px 20px; }
    .rk-retro-content-box { padding: 25px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#article-stare-budownictwo",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/"
    },
    "headline": "Układ meandrowy w starym budownictwie: Ratunek dla domów ze słabą izolacją",
    "description": "Dlaczego ogrzewanie podłogowe w domach z lat 60. i 70. bez izolacji ścian wymaga zastosowania układu meandrowego do kompensacji strat ciepła rzędu 130 W/m2.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-10",
    "dateModified": "2026-07-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#dataset-stare-budownictwo",
    "name": "Wpływ braku izolacji na dynamikę ogrzewania płaszczyznowego",
    "description": "Dane obrazujące zapotrzebowanie na moc grzewczą w strefach brzegowych nieocieplonych budynków z lat 1960-1980.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ogrzewanie podłogowe w starym domu",
      "brak ocieplenia a straty ciepła W/m2",
      "straty ciepła stare budownictwo",
      "współczynnik przenikania ciepła starych ścian",
      "kompensacja strat ciepła ściana zewnętrzna",
      "domy z lat 70 podłogówka"
    ],
    "measurementTechnique": "Analiza szacunkowych wartości współczynnika przenikania ciepła U dla starych murów oraz przelicznik jednostkowego zapotrzebowania na moc grzewczą w W/m2.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Stare budownictwo bez izolacji: Wymaga mocy grzewczej rzędu 130-150 W/m2.",
        "Domy modernizowane (izolacja 10-15 cm): Zapotrzebowanie spada do poziomu 70-80 W/m2.",
        "Rozwiązanie meandrowe: Najgorętszy czynnik zasilania kompensuje chłód przenikający przez stare mury z pustaka żużlowego."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#webapp-stare-budownictwo",
    "name": "Symulator Termiki Budynków Retro",
    "description": "Aplikacja edukacyjna objaśniająca wpływ termoizolacji na dobór i konfigurację pętli ogrzewania podłogowego w budownictwie wznoszonym w latach 1960-1980.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-retro-container" id="retro-heating-sim">
    <div class="rk-retro-header">
        <h2>Układ meandrowy w starym budownictwie: Ratunek dla domów ze słabą izolacją</h2>
        <p>Wielu uważa, że podłogówka w nieocieplonych domach z PRL-u nie ma racji bytu. Tymczasem to właśnie celowy spadek temperatury w meandrze pozwala zbudować zaporę dla chłodu ciągnącego od starych murów.</p>
    </div>

    <div class="rk-retro-body">
        
        <div class="rk-retro-tabs" id="retroTabs">
            <button class="rk-retro-tab-btn active" data-build="old">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21h18"></path><path d="M4 21v-4"></path><path d="M20 21v-4"></path><path d="M8 8v9"></path><path d="M16 8v9"></path><path d="M12 4v13"></path><path d="M2 10l10-8 10 8"></path></svg>
                Stary dom (lata 60. i 70.)
            </button>
            <button class="rk-retro-tab-btn" data-build="new">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><line x1="12" y1="18" x2="12.01" y2="18"></line><line x1="8" y1="12" x2="16" y2="12"></line><line x1="8" y1="8" x2="16" y2="8"></line></svg>
                Dom docieplony / Nowy
            </button>
        </div>

        <div class="rk-retro-content-box fade-in-up" id="retroContent">
            
            <h3 id="retroTitle">Termiczna kurtyna dla nieocieplonych murów</h3>
            <div id="retroText">
                <p>Instalacja ogrzewania podłogowego w budynkach wznoszonych między rokiem 1960 a 1980 stanowi gigantyczne wyzwanie termiczne. Ze względu na <span class="rk-keyword-highlight">brak ocieplenia ścian zewnętrznych</span> budowanych często z pustaka żużlowego lub pełnej cegły, stary mur działa jak potężny radiator. <span class="rk-keyword-highlight">Współczynnik przenikania ciepła (U)</span> takich przegród może przekraczać 1,2 W/(m²·K), co oznacza gigantyczne wysysanie energii z wnętrza i zapotrzebowanie rzędu 130 &#8211; 150 W/m² powierzchni.</p>
                <p>To właśnie tutaj układ meandrowy staje się najlepszym ratunkiem. <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-remontowanym-budynku-czy-warto/">Planując ogrzewanie w starym domu</a>, projektant wykorzystuje rury ułożone w meander jako tarcze dla <span class="rk-keyword-highlight">kompensacji strat ciepła przy ścianie zewnętrznej</span>. Zasilanie (najgorętszą wodę, np. 45°C) kieruje się w zagęszczonym rozstawie co 10 cm bezpośrednio pod przemarzające przegrody. Czynnik oddaje tam najwięcej energii, blokując &#8222;ciągnięcie chłodu&#8221;, a w miarę przepływu w stronę środka pokoju bezpiecznie traci temperaturę.</p>
                <p>Zanim zdecydujesz się na <a href="https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/">frezowanie ogrzewania podłogowego w starym budynku</a>, powinieneś bezwzględnie przeliczyć rzeczywiste ubytki energetyczne, wykorzystując <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">kalkulator strat ciepła</a>. Pokaże on, z jakim wyzwaniem będzie musiała się zmierzyć posadzka.</p>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    var tabs = document.querySelectorAll('.rk-retro-tab-btn');
    var contentBox = document.getElementById('retroContent');
    var retroTitle = document.getElementById('retroTitle');
    var retroText = document.getElementById('retroText');

    var buildData = {
        "old": {
            title: "Termiczna kurtyna dla nieocieplonych murów",
            html: '<p>Instalacja ogrzewania podłogowego w budynkach wznoszonych między rokiem 1960 a 1980 stanowi gigantyczne wyzwanie termiczne. Ze względu na <span class="rk-keyword-highlight">brak ocieplenia ścian zewnętrznych</span> budowanych często z pustaka żużlowego lub pełnej cegły, stary mur działa jak potężny radiator. <span class="rk-keyword-highlight">Współczynnik przenikania ciepła (U)</span> takich przegród może przekraczać 1,2 W/(m²·K), co oznacza gigantyczne wysysanie energii z wnętrza i zapotrzebowanie rzędu 130 - 150 W/m² powierzchni.</p><p>To właśnie tutaj układ meandrowy staje się najlepszym ratunkiem. <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-remontowanym-budynku-czy-warto/">Planując ogrzewanie w starym domu</a>, projektant wykorzystuje rury ułożone w meander jako tarcze dla <span class="rk-keyword-highlight">kompensacji strat ciepła przy ścianie zewnętrznej</span>. Zasilanie (najgorętszą wodę, np. 45°C) kieruje się w zagęszczonym rozstawie co 10 cm bezpośrednio pod przemarzające przegrody. Czynnik oddaje tam najwięcej energii, blokując "ciągnięcie chłodu", a w miarę przepływu w stronę środka pokoju bezpiecznie traci temperaturę.</p><p>Zanim zdecydujesz się na <a href="https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/">frezowanie ogrzewania podłogowego w starym budynku</a>, powinieneś bezwzględnie przeliczyć rzeczywiste ubytki energetyczne, wykorzystując <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">kalkulator strat ciepła</a>. Pokaże on, z jakim wyzwaniem będzie musiała się zmierzyć posadzka.</p>'
        },
        "new": {
            title: "Termomodernizacja a rozstaw meandru",
            html: '<p>Sytuacja zmienia się drastycznie po dodaniu na elewację 15 cm lub 20 cm styropianu. W <span class="rk-keyword-highlight">domu zmodernizowanym</span>, przenikalność cieplna murów radykalnie spada, a całkowite <span class="rk-keyword-highlight">straty ciepła starego budownictwa</span> po ociepleniu potrafią obniżyć się do bezpiecznego pułapu około 70 - 80 W/m².</p><p>W budynku po termomodernizacji, ściany zewnętrzne stają się swoistym termosem dla domowników. Oznacza to, że zjawisko "ciągnięcia chłodu" niemal znika, co pozwala na rozluźnienie układu pętli. Nie musimy już gęsto pompować czynnika o temperaturze 45°C pod przegrody z lat 70., lecz możemy zastosować szerszy, 15-centymetrowy rozstaw, obniżając <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">opory cieplne i hydrauliczne</a>. Taka stabilna konfiguracja w ocieplonym domu jest idealnym punktem wyjścia do późniejszego montażu efektywnej pompy ciepła.</p>'
        }
    };

    tabs.forEach(function(tab) {
        tab.addEventListener('click', function() {
            // Zmiana klas w tabs
            tabs.forEach(function(t) { t.classList.remove('active'); });
            this.classList.add('active');

            var target = this.getAttribute('data-build');
            var data = buildData[target];

            // Bezpieczne wstrzyknięcie danych
            if (data !== undefined) {
                // Restart animacji CSS
                contentBox.classList.remove('fade-in-up');
                void contentBox.offsetWidth; // Force reflow (bezpieczny hack)
                contentBox.classList.add('fade-in-up');

                // Aktualizacja DOM - Tylko mocny, bogaty tekst
                retroTitle.textContent = data.title;
                retroText.innerHTML = data.html;
            }
        });
    });
});
</script>



<style>
:root {
    --rk-edge-dark: #0f172a;
    --rk-edge-blue: #0284c7;
    --rk-edge-cold: #38bdf8;
    --rk-edge-warm: #ef4444;
    --rk-edge-warm-light: #fef2f2;
    --rk-edge-gray: #64748b;
    --rk-edge-bg: #ffffff;
    --rk-edge-border: #e2e8f0;
}

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

/* Nagłówek */
.rk-edge-header {
    background: linear-gradient(135deg, var(--rk-edge-dark) 0%, #1e293b 100%);
    padding: 35px 40px;
    text-align: center;
    color: white;
    border-bottom: 4px solid var(--rk-edge-blue);
}

.rk-edge-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.4;
    color: white;
}

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

/* Interfejs */
.rk-edge-body {
    padding: 35px 40px;
    background: #f8fafc;
}

/* Kontrolki (Toggles) */
.rk-edge-toggles {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
    justify-content: center;
    flex-wrap: wrap;
}

.rk-edge-btn {
    background: white;
    border: 2px solid var(--rk-edge-border);
    padding: 16px 20px;
    border-radius: 14px;
    cursor: pointer;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-edge-gray);
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 12px;
    flex: 1;
    min-width: 250px;
    justify-content: center;
}

.rk-edge-btn:hover {
    border-color: #bae6fd;
    background: #f0f9ff;
}

.rk-edge-btn.active[data-state="bad"] {
    border-color: var(--rk-edge-cold);
    background: #f0f9ff;
    color: var(--rk-edge-dark);
    box-shadow: 0 8px 20px -5px rgba(56, 189, 248, 0.4);
}

.rk-edge-btn.active[data-state="good"] {
    border-color: var(--rk-edge-warm);
    background: var(--rk-edge-warm-light);
    color: var(--rk-edge-dark);
    box-shadow: 0 8px 20px -5px rgba(239, 68, 68, 0.4);
}

.rk-edge-btn svg {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
}

/* Moduł Wyświetlania (Pionowy) */
.rk-edge-content-box {
    background: white;
    border-radius: 16px;
    border: 1px solid var(--rk-edge-border);
    padding: 35px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.03);
}

.rk-edge-svg-panel {
    background: #f1f5f9;
    border-radius: 12px;
    height: 220px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 25px;
    border: 1px dashed #cbd5e1;
    overflow: hidden;
    position: relative;
}

/* Pasek Statusu / Wyniku */
.rk-edge-status-bar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 15px 20px;
    border-radius: 10px;
    margin-bottom: 25px;
    font-weight: 800;
    font-size: 16px;
    transition: all 0.3s;
}

.status-cold {
    background: #e0f2fe;
    color: #0369a1;
    border: 1px solid #bae6fd;
}

.status-hot {
    background: #fef2f2;
    color: #b91c1c;
    border: 1px solid #fca5a5;
}

/* Tekst merytoryczny */
.rk-edge-text-area h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-edge-dark);
    margin: 0 0 15px 0;
}

.rk-edge-text-area p {
    font-size: 16px;
    line-height: 1.8;
    color: #334155;
    margin: 0 0 15px 0;
}

.rk-edge-text-area a {
    color: var(--rk-edge-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: all 0.2s;
}

.rk-edge-text-area a:hover {
    color: var(--rk-edge-dark);
    background: #e0f2fe;
}

.rk-tech-val {
    font-weight: 800;
    color: var(--rk-edge-dark);
    background: #f1f5f9;
    padding: 2px 6px;
    border-radius: 4px;
    white-space: nowrap;
}

/* Sekcja Błędów */
.rk-edge-warnings {
    margin-top: 25px;
    border-top: 1px solid var(--rk-edge-border);
    padding-top: 20px;
}

.rk-edge-warnings h4 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-edge-warm);
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-warning-item {
    background: #fff5f5;
    border-left: 4px solid var(--rk-edge-warm);
    padding: 12px 15px;
    margin-bottom: 10px;
    border-radius: 0 8px 8px 0;
    font-size: 14px;
    line-height: 1.6;
    color: #475569;
}

.rk-warning-item strong {
    color: var(--rk-edge-dark);
}

/* Animacje zawartości */
.fade-in {
    animation: fadeIn 0.4s ease-out forwards;
}

@keyframes fadeIn {
    0% { opacity: 0; transform: translateY(10px); }
    100% { opacity: 1; transform: translateY(0); }
}

/* Animacje SVG */
.anim-cold-drop {
    animation: dropCold 2s infinite ease-in;
}

@keyframes dropCold {
    0% { transform: translateY(-20px); opacity: 0; }
    20% { opacity: 0.8; }
    80% { opacity: 0.8; }
    100% { transform: translateY(60px); opacity: 0; }
}

.anim-heat-rise {
    animation: riseHeat 2s infinite ease-out;
}

@keyframes riseHeat {
    0% { transform: translateY(20px); opacity: 0; }
    20% { opacity: 0.9; }
    80% { opacity: 0.9; }
    100% { transform: translateY(-50px); opacity: 0; }
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-edge-header, .rk-edge-body { padding: 25px 20px; }
    .rk-edge-toggles { flex-direction: column; gap: 10px; }
    .rk-edge-btn { width: 100%; justify-content: flex-start; padding: 16px 20px; }
    .rk-edge-content-box { padding: 25px 20px; }
    .rk-edge-status-bar { flex-direction: column; gap: 10px; text-align: center; }
    .rk-edge-svg-panel { height: 180px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#article-strefa-brzegowa",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/"
    },
    "headline": "Jaki rozstaw rur wybrać w strefie brzegowej instalacji meandrowej przy oknach?",
    "description": "Techniczne zasady projektowania stref brzegowych przy dużych przeszkleniach. Analiza kurtyny termicznej, kondensacji pary wodnej i norm PN-EN 1264.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-10",
    "dateModified": "2026-07-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#dataset-strefa-brzegowa",
    "name": "Parametry strefy brzegowej w ogrzewaniu podłogowym",
    "description": "Zestawienie wytycznych i limitów temperaturowych dla stref brzegowych przy przeszkleniach tarasowych zgodnie z normą PN-EN 1264.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "strefa brzegowa w ogrzewaniu podłogowym",
      "rozstaw rur przy oknach tarasowych",
      "kondensacja pary na oknach podłogówka",
      "moc grzewcza z m2 strefy brzegowej",
      "temperatura posadzki norma PN-EN 1264",
      "izolacja brzegowa i dylatacje"
    ],
    "measurementTechnique": "Obliczenia szacunkowe mocy cieplnej i temperatury posadzki w oparciu o wytyczne normy europejskiej PN-EN 1264 dla wodnych systemów płaszczyznowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Szerokość strefy: Od 0,5 m do 1,0 m od przegrody zewnętrznej (od okna).",
        "Zalecany rozstaw rur: 10 cm (dopuszczalne 7,5 cm - 5 cm w trudnych warunkach).",
        "Limit temperatury posadzki: Dopuszczalne 35 st C w strefie brzegowej.",
        "Generowana moc: Skompensowanie strat rzędu 100 - 150 W/m2."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#webapp-strefa-brzegowa",
    "name": "Symulator Strefy Brzegowej Ogrzewania Podłogowego",
    "description": "Narzędzie webowe obrazujące fizyczne zjawisko przenikania chłodu od okien oraz powstawanie termicznej kurtyny obronnej przy gęstym układzie meandrowym.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-edge-container" id="edge-zone-sim">
    <div class="rk-edge-header">
        <h2>Jaki rozstaw rur wybrać w strefie brzegowej przy oknach?</h2>
        <p>Brak strefy brzegowej przy oknach tarasowych to najprostsza droga do zaparowanych szyb, wilgoci i lodowatych stóp w salonie. Sprawdź, jak meander zatrzymuje chłód.</p>
    </div>

    <div class="rk-edge-body">
        
        <div class="rk-edge-toggles" id="edgeTabs">
            <button class="rk-edge-btn" data-state="bad">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                Błąd: Rozstaw 20 cm (Brak strefy)
            </button>
            <button class="rk-edge-btn active" data-state="good">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                Poprawnie: Rozstaw 10 cm (Meander)
            </button>
        </div>

        <div class="rk-edge-content-box fade-in" id="edgeContentBox">
            
            <div class="rk-edge-status-bar status-hot" id="edgeStatus">
                <span>Skuteczność blokowania chłodu: <strong>Wysoka</strong></span>
                <span>Moc strefy: <strong>~ 150 W/m²</strong></span>
            </div>

            <div class="rk-edge-svg-panel" id="edgeSvgBox">
                <svg width="250" height="200" viewBox="0 0 250 200" fill="none" stroke="currentColor">
                    <rect x="20" y="20" width="10" height="140" fill="#bae6fd" stroke="#0ea5e9" stroke-width="2"/>
                    <path d="M40 40 Q 60 90 40 140" stroke="#38bdf8" stroke-width="3" fill="none" stroke-dasharray="4 4"/>
                    <rect x="30" y="160" width="200" height="30" fill="#e2e8f0" stroke="#94a3b8" stroke-width="2"/>
                    <circle cx="50" cy="175" r="5" fill="#dc2626" stroke="none"/>
                    <circle cx="70" cy="175" r="5" fill="#dc2626" stroke="none"/>
                    <circle cx="90" cy="175" r="5" fill="#dc2626" stroke="none"/>
                    <circle cx="110" cy="175" r="5" fill="#dc2626" stroke="none"/>
                    <circle cx="130" cy="175" r="5" fill="#dc2626" stroke="none"/>
                    <path d="M50 150 L50 80" stroke="#ef4444" stroke-width="4" class="anim-heat-rise"/>
                    <path d="M80 150 L80 60" stroke="#ef4444" stroke-width="4" class="anim-heat-rise" style="animation-delay: 0.5s;"/>
                    <path d="M110 150 L110 90" stroke="#ef4444" stroke-width="4" class="anim-heat-rise" style="animation-delay: 1s;"/>
                    <text x="50" y="15" font-size="12" fill="#0ea5e9" stroke="none">Zimne Okno HS</text>
                    <text x="140" y="110" font-size="12" fill="#ef4444" stroke="none" font-weight="bold">Kurtyna Termiczna</text>
                </svg>
            </div>

            <div class="rk-edge-text-area" id="edgeTextBox">
                <h3>Potężna tarcza termiczna dla Twojego salonu</h3>
                <p>
                    Optymalny rozstaw rur w <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/">strefie brzegowej w ogrzewaniu podłogowym</a> przy oknach tarasowych i ścianach zewnętrznych wynosi <span class="rk-tech-val">10 cm</span> (z dopuszczalnym zagęszczeniem do 7,5 cm lub 5 cm w budynkach o słabej izolacji). Takie rozwiązanie pozwala na skompensowanie potężnych lokalnych strat ciepła dochodzących do <strong>100–150 W/m²</strong>, zgodnie z wytycznymi projektowymi normy <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">PN-EN 1264</a>. Zgodnie ze sztuką, zagęszczony pas brzegowy z meandru powinien obejmować szerokość od 0,5 m do 1,0 m od okna (zazwyczaj 4 do 6 nitek).
                </p>
                <p>
                    Okna, nawet te o rewelacyjnym współczynniku U<sub>w</sub> = 0,6–0,8 W/(m²K), generują kilkukrotnie większe straty ciepła niż izolowane ściany. Zmniejszenie rozstawu z 20 cm do 10 cm punktowo podnosi temperaturę podłogi o 3°C–4°C, tworząc <span class="rk-tech-val">skuteczną kurtynę termiczną</span>. Ponieważ norma pozwala w tej strefie na osiągnięcie posadzce aż 35°C (względem 29°C na środku pokoju), możemy wygenerować moc bez ryzyka przegrzania części bytowej salonu.
                </p>
            </div>

            <div class="rk-edge-warnings">
                <h4><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg> Konsekwencje błędów w strefie brzegowej:</h4>
                <div class="rk-warning-item">
                    <strong>Rozstaw rzadki (> 15 cm) przy oknach:</strong> Opadające zimne powietrze powoduje drastyczne wychłodzenie ramy. Dochodzi do osiągnięcia <a href="https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/">punktu rosy</a>, kondensacji pary wodnej na szybach i rozwoju pleśni przy podłodze.
                </div>
                <div class="rk-warning-item">
                    <strong>Zbyt długa pętla brzegowa wepchnięta do salonu:</strong> Wpuszczenie zasilania dedykowanego pod okno w głąb strefy bytowej skutkuje dyskomfortem &#8222;gorących stóp&#8221; i uszkodzeniem płytek przez rozszerzalność termiczną.
                </div>
                <div class="rk-warning-item">
                    <strong>Brak oddzielenia (dylatacji):</strong> Rezygnacja z <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">profilu dylatacyjnego</a> pomiędzy pasem zagęszczonym (gorącym) a strefą salonu (chłodniejszą) gwarantuje pęknięcie jastrychu na linii styku obu stref z powodu naprężeń ścinających.
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btns = document.querySelectorAll('.rk-edge-btn');
    var contentBox = document.getElementById('edgeContentBox');
    var statusBox = document.getElementById('edgeStatus');
    var svgBox = document.getElementById('edgeSvgBox');

    var simData = {
        "bad": {
            statusClass: "status-cold",
            statusHtml: '<span>Skuteczność blokowania chłodu: <strong>Brak (Roszenie)</strong></span><span>Moc strefy: <strong>~ 50 W/m²</strong></span>',
            svg: '<svg width="250" height="200" viewBox="0 0 250 200" fill="none" stroke="currentColor"><rect x="20" y="20" width="10" height="140" fill="#bae6fd" stroke="#0ea5e9" stroke-width="2"/><path d="M40 40 Q 80 90 60 160" stroke="#0ea5e9" stroke-width="4" fill="none" class="anim-cold-drop"/><path d="M30 30 Q 120 100 100 160" stroke="#38bdf8" stroke-width="3" fill="none" class="anim-cold-drop" style="animation-delay: 0.8s;"/><rect x="30" y="160" width="200" height="30" fill="#e2e8f0" stroke="#94a3b8" stroke-width="2"/><circle cx="50" cy="175" r="5" fill="#f59e0b" stroke="none"/><circle cx="110" cy="175" r="5" fill="#f59e0b" stroke="none"/><circle cx="170" cy="175" r="5" fill="#f59e0b" stroke="none"/><path d="M50 150 L50 130" stroke="#f59e0b" stroke-width="2" class="anim-heat-rise"/><path d="M110 150 L110 130" stroke="#f59e0b" stroke-width="2" class="anim-heat-rise" style="animation-delay: 1s;"/><text x="50" y="15" font-size="12" fill="#0ea5e9" stroke="none">Zimne Okno HS</text><text x="80" y="110" font-size="12" fill="#0ea5e9" stroke="none" font-weight="bold">Opada chłód (Brak kurtyny)</text></svg>'
        },
        "good": {
            statusClass: "status-hot",
            statusHtml: '<span>Skuteczność blokowania chłodu: <strong>Wysoka</strong></span><span>Moc strefy: <strong>~ 150 W/m²</strong></span>',
            svg: '<svg width="250" height="200" viewBox="0 0 250 200" fill="none" stroke="currentColor"><rect x="20" y="20" width="10" height="140" fill="#bae6fd" stroke="#0ea5e9" stroke-width="2"/><path d="M40 40 Q 60 90 40 140" stroke="#38bdf8" stroke-width="3" fill="none" stroke-dasharray="4 4"/><rect x="30" y="160" width="200" height="30" fill="#e2e8f0" stroke="#94a3b8" stroke-width="2"/><circle cx="50" cy="175" r="5" fill="#dc2626" stroke="none"/><circle cx="70" cy="175" r="5" fill="#dc2626" stroke="none"/><circle cx="90" cy="175" r="5" fill="#dc2626" stroke="none"/><circle cx="110" cy="175" r="5" fill="#dc2626" stroke="none"/><circle cx="130" cy="175" r="5" fill="#dc2626" stroke="none"/><path d="M50 150 L50 80" stroke="#ef4444" stroke-width="4" class="anim-heat-rise"/><path d="M80 150 L80 60" stroke="#ef4444" stroke-width="4" class="anim-heat-rise" style="animation-delay: 0.5s;"/><path d="M110 150 L110 90" stroke="#ef4444" stroke-width="4" class="anim-heat-rise" style="animation-delay: 1s;"/><text x="50" y="15" font-size="12" fill="#0ea5e9" stroke="none">Zimne Okno HS</text><text x="140" y="110" font-size="12" fill="#ef4444" stroke="none" font-weight="bold">Kurtyna Termiczna</text></svg>'
        }
    };

    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Reset klas
            btns.forEach(function(b) { b.classList.remove('active'); });
            this.classList.add('active');

            var state = this.getAttribute('data-state');
            var data = simData[state];

            // Wstrzykiwanie danych z bezpiecznym zresetowaniem animacji
            if (data !== undefined) {
                contentBox.classList.remove('fade-in');
                void contentBox.offsetWidth; // Wymuszenie reflow
                contentBox.classList.add('fade-in');

                statusBox.className = "rk-edge-status-bar " + data.statusClass;
                statusBox.innerHTML = data.statusHtml;
                svgBox.innerHTML = data.svg;
            }
        });
    });
});
</script>



<style>
:root {
    --rk-tbl-dark: #0f172a;
    --rk-tbl-blue: #0284c7;
    --rk-tbl-blue-light: #e0f2fe;
    --rk-tbl-blue-bg: #f0f9ff;
    --rk-tbl-gray: #64748b;
    --rk-tbl-bg: #ffffff;
    --rk-tbl-border: #e2e8f0;
}

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

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

.rk-tbl-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.4;
    color: white;
}

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

/* Interfejs wyboru */
.rk-tbl-body {
    padding: 30px 40px;
    background: #f8fafc;
}

.rk-tbl-tabs {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
    justify-content: center;
    flex-wrap: wrap;
}

.rk-tbl-tab-btn {
    background: white;
    border: 2px solid var(--rk-tbl-border);
    padding: 18px 24px;
    border-radius: 14px;
    cursor: pointer;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-tbl-gray);
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 12px;
    flex: 1;
    min-width: 220px;
    justify-content: center;
}

.rk-tbl-tab-btn:hover {
    border-color: #bae6fd;
    background: var(--rk-tbl-blue-light);
}

.rk-tbl-tab-btn.active {
    border-color: var(--rk-tbl-blue);
    background: var(--rk-tbl-blue);
    color: white;
    box-shadow: 0 8px 20px -5px rgba(2, 132, 199, 0.35);
}

.rk-tbl-tab-btn svg {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
    transition: transform 0.3s;
}

.rk-tbl-tab-btn.active svg {
    transform: scale(1.15);
}

/* Karta wyników */
.rk-tbl-content-box {
    background: white;
    border-radius: 16px;
    border: 1px solid var(--rk-tbl-border);
    padding: 30px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.03);
}

.rk-tbl-content-box h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-tbl-dark);
    margin: 0 0 25px 0;
    text-align: center;
    padding-bottom: 20px;
    border-bottom: 1px dashed var(--rk-tbl-border);
}

/* Siatka parametrów */
.rk-param-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

.rk-param-item {
    background: var(--rk-tbl-blue-bg);
    border: 1px solid #bae6fd;
    border-radius: 12px;
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    transition: all 0.3s;
}

.rk-param-item:hover {
    background: #e0f2fe;
    transform: translateY(-2px);
}

.rk-param-label {
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-tbl-blue);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-param-value {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-tbl-dark);
    line-height: 1.5;
}

.rk-highlight-text {
    color: #dc2626; /* Czerwony akcent dla ważnych liczb */
}

/* Animacje */
.fade-in {
    animation: fadeIn 0.4s ease-out forwards;
}

@keyframes fadeIn {
    0% { opacity: 0; transform: translateY(10px); }
    100% { opacity: 1; transform: translateY(0); }
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-tbl-header, .rk-tbl-body { padding: 25px 20px; }
    .rk-tbl-tabs { flex-direction: column; gap: 10px; }
    .rk-tbl-tab-btn { width: 100%; justify-content: flex-start; padding: 18px 20px; }
    .rk-tbl-content-box { padding: 20px 15px; }
    .rk-param-grid { grid-template-columns: 1fr; gap: 15px; } /* Pionowy stack dla mobile */
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#article-porownanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/"
    },
    "headline": "Porównanie parametrów technicznych: Układ meandrowy vs Ślimakowy vs Elektryczny",
    "description": "Zestawienie kluczowych parametrów eksploatacyjnych systemów płaszczyznowych. Analiza kosztów robocizny, oporów hydraulicznych i współpracy z pompami ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-10",
    "dateModified": "2026-07-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#dataset-porownanie",
    "name": "Zestawienie parametrów technicznych systemów ogrzewania podłogowego 2026",
    "description": "Tabela porównawcza parametrów technicznych dla ogrzewania wodnego i elektrycznego. Obejmuje zmienne termodynamiczne oraz średnie rynkowe koszty w PLN.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "porównanie podłogówki meander ślimak",
      "opory hydrauliczne pętli grzewczej",
      "koszty mat kapilarnych i elektrycznych m2",
      "rozkład temperatur jastrychu wodnego",
      "dobór ogrzewania do pompy ciepła COP"
    ],
    "measurementTechnique": "Zestawienie inżynierskie na bazie kart technologicznych rur PEX (promienie gięcia), normy PN-EN 1264 oraz średnich cen instalatorskich z rynku polskiego na rok 2026.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Układ Meandrowy: Koszt 18-28 PLN/m2, Liniowo opadający gradient temperatur (do 8K).",
        "Układ Ślimakowy: Koszt 22-32 PLN/m2, Jednorodny rozkład średni, Opór do 18 kPa.",
        "Maty Elektryczne: Koszt 70-130 PLN/m2, Brak czynnika wodnego, Stały profil temperaturowy."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#webapp-porownanie",
    "name": "Symulator Wyboru Systemu Grzewczego",
    "description": "Interaktywna macierz decyzyjna pozwalająca inwestorowi na błyskawiczne zbadanie wad i zalet poszczególnych układów grzewczych z poziomu urządzeń mobilnych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-tbl-container" id="system-comparison">
    <div class="rk-tbl-header">
        <h2>Porównanie parametrów technicznych: Układ meandrowy vs Ślimakowy vs Elektryczny</h2>
        <p>Klasyczne tabele na telefonach bywają nieczytelne. Poniższe interaktywne zestawienie ułatwi Ci dobór optymalnego rozwiązania na etapie koncepcji instalacyjnej. Wybierz technologię, aby sprawdzić jej profil.</p>
    </div>

    <div class="rk-tbl-body">
        
        <div class="rk-tbl-tabs" id="cmpTabs">
            <button class="rk-tbl-tab-btn active" data-sys="meander">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                Wodny Meander
            </button>
            <button class="rk-tbl-tab-btn" data-sys="snail">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2a10 10 0 1 0 10 10"></path><path d="M12 6a6 6 0 1 0 6 6"></path><path d="M12 10a2 2 0 1 0 2 2"></path></svg>
                Wodny Ślimak
            </button>
            <button class="rk-tbl-tab-btn" data-sys="electric">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"></path></svg>
                Maty Elektryczne
            </button>
        </div>

        <div class="rk-tbl-content-box fade-in" id="cmpContent">
            <h3 id="cmpTitle">Układ Meandrowy (Wodny)</h3>
            <div class="rk-param-grid" id="cmpGrid">
                
                <div class="rk-param-item">
                    <span class="rk-param-label">Profil temperatur podłogi</span>
                    <span class="rk-param-value">Liniowo opadający (gradient do <span class="rk-highlight-text">8K</span>)</span>
                </div>
                
                <div class="rk-param-item">
                    <span class="rk-param-label">Maksymalny opór hydrauliczny</span>
                    <span class="rk-param-value">Do <span class="rk-highlight-text">25 kPa</span> (przy pętli 100 m)</span>
                </div>
                
                <div class="rk-param-item">
                    <span class="rk-param-label">Średni koszt materiałów</span>
                    <span class="rk-param-value"><span class="rk-highlight-text">18 – 28 PLN/m²</span></span>
                </div>
                
                <div class="rk-param-item">
                    <span class="rk-param-label">Minimalny promień gięcia rury</span>
                    <span class="rk-param-value">5 x d_z (wymaga łuków prowadzących)</span>
                </div>
                
                <div class="rk-param-item">
                    <span class="rk-param-label">Zastosowanie w strefach brzegowych</span>
                    <span class="rk-param-value">Idealne (naturalna koncentracja mocy)</span>
                </div>
                
                <div class="rk-param-item">
                    <span class="rk-param-label">Współpraca z pompą ciepła (COP)</span>
                    <span class="rk-param-value">Bardzo dobra (przy Tz ≤ <span class="rk-highlight-text">35°C</span>)</span>
                </div>

            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var sysBtns = document.querySelectorAll('.rk-tbl-tab-btn');
    var cmpTitle = document.getElementById('cmpTitle');
    var cmpGrid = document.getElementById('cmpGrid');
    var cmpBox = document.getElementById('cmpContent');

    var sysData = {
        "meander": {
            title: "Układ Meandrowy (Wodny)",
            params: [
                { label: "Profil temperatur podłogi", value: 'Liniowo opadający (gradient do <span class="rk-highlight-text">8K</span>)' },
                { label: "Maksymalny opór hydrauliczny", value: 'Do <span class="rk-highlight-text">25 kPa</span> (przy pętli 100 m)' },
                { label: "Średni koszt materiałów", value: '<span class="rk-highlight-text">18 – 28 PLN/m²</span>' },
                { label: "Minimalny promień gięcia rury", value: "5 x d_z (wymaga łuków prowadzących)" },
                { label: "Zastosowanie w strefach brzegowych", value: "Idealne (naturalna koncentracja mocy)" },
                { label: "Współpraca z pompą ciepła (COP)", value: 'Bardzo dobra (przy Tz ≤ <span class="rk-highlight-text">35°C</span>)' }
            ]
        },
        "snail": {
            title: "Układ Ślimakowy (Wodny)",
            params: [
                { label: "Profil temperatur podłogi", value: 'Jednorodny (stała średnia temperatura)' },
                { label: "Maksymalny opór hydrauliczny", value: 'Do <span class="rk-highlight-text">18 kPa</span> (dzięki łagodnym łukom 90°)' },
                { label: "Średni koszt materiałów", value: '<span class="rk-highlight-text">22 – 32 PLN/m²</span>' },
                { label: "Minimalny promień gięcia rury", value: "8 x d_z (łagodne naturalne gięcie)" },
                { label: "Zastosowanie w strefach brzegowych", value: "Wymaga sztucznych zagęszczeń pętli pomocniczych" },
                { label: "Współpraca z pompą ciepła (COP)", value: "Optymalna (wymaga najniższych parametrów zasilania)" }
            ]
        },
        "electric": {
            title: "Maty Elektryczne (Suche)",
            params: [
                { label: "Profil temperatur podłogi", value: 'Jednorodny (całkowicie stały rozkład na siatce)' },
                { label: "Maksymalny opór hydrauliczny", value: 'Brak (system bez udziału medium płynnego)' },
                { label: "Średni koszt materiałów", value: '<span class="rk-highlight-text">70 – 130 PLN/m²</span>' },
                { label: "Minimalny promień gięcia rury", value: "Nie dotyczy (elastyczna siatka montażowa)" },
                { label: "Zastosowanie w strefach brzegowych", value: "Wymaga lokalnego gęstszego układania przewodu oporowego" },
                { label: "Współpraca z pompą ciepła (COP)", value: '<span class="rk-highlight-text">Brak bezpośredniej współpracy</span>' }
            ]
        }
    };

    sysBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Zarządzanie klasami
            sysBtns.forEach(function(b) { b.classList.remove('active'); });
            this.classList.add('active');

            var sysKey = this.getAttribute('data-sys');
            var data = sysData[sysKey];

            // Renderowanie HTML bez niebezpiecznych znaków JS (bez && / ||)
            if (data !== undefined) {
                // Restart CSS Animation
                cmpBox.classList.remove('fade-in');
                void cmpBox.offsetWidth; // Force reflow
                cmpBox.classList.add('fade-in');

                cmpTitle.textContent = data.title;
                
                var gridHTML = '';
                var i = 0;
                var totalParams = data.params.length;
                
                // Pętla while dla bezpieczeństwa, generująca poszczególne kafelki
                while (i < totalParams) {
                    var p = data.params[i];
                    gridHTML += '<div class="rk-param-item">' +
                                '<span class="rk-param-label">' + p.label + '</span>' +
                                '<span class="rk-param-value">' + p.value + '</span>' +
                                '</div>';
                    i++;
                }
                
                cmpGrid.innerHTML = gridHTML;
            }
        });
    });
});
</script>



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-blue: #0ea5e9;
    --rk-calc-blue-dark: #0369a1;
    --rk-calc-bg: #ffffff;
    --rk-calc-panel: #f8fafc;
    --rk-calc-border: #e2e8f0;
    --rk-calc-text: #334155;
    --rk-calc-highlight: #f0f9ff;
}

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

/* Header */
.rk-calc-header {
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, #1e293b 100%);
    padding: 40px;
    text-align: center;
    color: white;
    border-bottom: 4px solid var(--rk-calc-blue);
}

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

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

/* Sekcja Sterowania (Suwak) */
.rk-calc-controls {
    background: white;
    padding: 30px 40px;
    border-bottom: 1px solid var(--rk-calc-border);
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-calc-controls h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    margin: 0 0 20px 0;
}

.rk-slider-wrapper {
    width: 100%;
    max-width: 500px;
    position: relative;
}

.rk-slider-info {
    display: flex;
    justify-content: space-between;
    margin-bottom: 10px;
    font-weight: 700;
    color: var(--rk-calc-blue-dark);
}

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

.rk-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--rk-calc-blue);
    cursor: pointer;
    border: 3px solid white;
    box-shadow: 0 0 10px rgba(14, 165, 233, 0.4);
    transition: transform 0.2s;
}

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

/* Ciało Kalkulatora - Kroki */
.rk-calc-body {
    padding: 40px;
    background: var(--rk-calc-panel);
}

.rk-step-box {
    background: white;
    border: 1px solid var(--rk-calc-border);
    border-radius: 16px;
    margin-bottom: 20px;
    overflow: hidden;
    transition: all 0.3s;
    box-shadow: 0 2px 5px rgba(0,0,0,0.02);
}

.rk-step-box:hover {
    border-color: #bae6fd;
    box-shadow: 0 5px 15px rgba(14, 165, 233, 0.08);
}

.rk-step-header {
    background: white;
    padding: 20px 25px;
    display: flex;
    align-items: center;
    gap: 20px;
    border-bottom: 1px solid transparent;
}

.rk-step-num {
    background: var(--rk-calc-dark);
    color: white;
    width: 40px;
    height: 40px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    font-weight: 900;
    flex-shrink: 0;
}

.rk-step-title {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    margin: 0;
    line-height: 1.4;
}

.rk-step-content {
    padding: 0 25px 25px 85px;
}

.rk-formula {
    background: var(--rk-calc-dark);
    color: #e2e8f0;
    padding: 15px 20px;
    border-radius: 8px;
    font-family: monospace;
    font-size: 16px;
    margin: 15px 0;
    overflow-x: auto;
    border-left: 4px solid var(--rk-calc-blue);
}

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

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

.rk-result-box {
    background: var(--rk-calc-highlight);
    border: 1px dashed var(--rk-calc-blue);
    padding: 15px;
    border-radius: 8px;
    color: var(--rk-calc-dark);
    font-size: 15px;
}

.rk-val-highlight {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-calc-blue-dark);
    display: inline-block;
    margin: 0 5px;
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-calc-header, .rk-calc-controls, .rk-calc-body { padding: 25px 20px; }
    .rk-step-header { padding: 15px; gap: 15px; }
    .rk-step-content { padding: 0 15px 20px 15px; }
    .rk-formula { font-size: 14px; padding: 12px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#article-kalkulator",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/"
    },
    "headline": "Kalkulator projektowy: Jak obliczyć przepływ i straty ciśnienia w układzie meandrowym?",
    "description": "5-etapowy algorytm inżynierski krok po kroku, pozwalający na precyzyjne wyliczenie oporów hydraulicznych i nastaw na rotametrach dla układu meandrowego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-10",
    "dateModified": "2026-07-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#dataset-kalkulator",
    "name": "Wzory Hydrauliczne i Termodynamiczne dla Ogrzewania Podłogowego",
    "description": "Zbiór danych i stałych fizycznych (ciepło właściwe wody, gęstość) niezbędnych do obliczania przepływów masowych i strat ciśnienia w rurach PEX 16mm.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wzór na przepływ podłogówki",
      "obliczenia OZC podłogówka",
      "straty ciśnienia w rurach pex",
      "rotametry regulacja przepływu",
      "opór miejscowy układ meandrowy",
      "współczynnik bezpieczeństwa ogrzewania"
    ],
    "measurementTechnique": "Zastosowanie algorytmów z normy PN-EN 12831 oraz praw mechaniki płynów do wyznaczenia całkowitych strat hydraulicznych pętli grzewczej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Ciepło właściwe wody (cw) = 4186 J/(kg·K)",
        "Gęstość wody przy 40 st C = 992 kg/m3",
        "Opór miejscowy łuku 180 st (xi) = 1,5",
        "Współczynnik strat do gruntu = 1,15"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#webapp-kalkulator",
    "name": "Interaktywny Kalkulator Algorytmu Meandrowego",
    "description": "Aplikacja webowa symulująca 5-stopniowy proces inżynierski obliczania przepływu i strat ciśnienia dla pętli grzewczej w czasie rzeczywistym.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-container" id="meander-calculator">
    <div class="rk-calc-header">
        <h2>Kalkulator projektowy: Jak obliczyć przepływ i straty ciśnienia w układzie meandrowym?</h2>
        <p>Projektowanie pętli meandrowej wymaga dokładnego obliczenia przepływu masowego czynnika oraz całkowitych strat ciśnienia w celu prawidłowego doboru nastaw na rotametrach. Prześledź algorytm inżynierski krok po kroku.</p>
    </div>

    <div class="rk-calc-controls">
        <h3>Symulator Pętli: Wybierz zapotrzebowanie pokoju</h3>
        <div class="rk-slider-wrapper">
            <div class="rk-slider-info">
                <span>Zapotrzebowanie wyjściowe z OZC:</span>
                <span id="uiBaseQ">1043 W</span>
            </div>
            <input type="range" min="500" max="2000" step="50" value="1043" class="rk-range" id="simRange">
        </div>
    </div>

    <div class="rk-calc-body">
        
        <div class="rk-step-box">
            <div class="rk-step-header">
                <div class="rk-step-num">1</div>
                <h3 class="rk-step-title">Zapotrzebowanie na moc cieplną pętli (Q_pętli)</h3>
            </div>
            <div class="rk-step-content">
                <p class="rk-calc-desc">Moc pętli wyliczamy na podstawie jednostkowego zapotrzebowania na ciepło z <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">audytu OZC</a>, powiększonego o straty do gruntu.</p>
                <div class="rk-formula">
                    Q_pętli = Zapotrzebowanie OZC × 1.15
                </div>
                <div class="rk-result-box">
                    Gdzie 1.15 to współczynnik bezpieczeństwa. Dla wybranej wartości daje to:
                    <br>Wynik obliczeń: <span class="rk-val-highlight" id="resQ">1200 W</span> (1,2 kW)
                </div>
            </div>
        </div>

        <div class="rk-step-box">
            <div class="rk-step-header">
                <div class="rk-step-num">2</div>
                <h3 class="rk-step-title">Przepływ masowy czynnika (V)</h3>
            </div>
            <div class="rk-step-content">
                <p class="rk-calc-desc">Przepływ objętościowy wody w pętli, niezbędny do nastawy na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrze rozdzielacza</a>.</p>
                <div class="rk-formula">
                    V [m3/h] = (Q_pętli / (c_w × ρ × ΔT)) × 3600
                </div>
                <div class="rk-calc-desc">
                    <strong>Stałe fizyczne (dla 40°C):</strong><br>
                    • c_w (ciepło właściwe) = 4186 J/(kg·K)<br>
                    • ρ (gęstość wody) = 992 kg/m³<br>
                    • ΔT (spadek temp.) = 5 K
                </div>
                <div class="rk-result-box">
                    Podstawiając do wzoru, uzyskujemy przepływ do ustawienia:
                    <br>Wynik obliczeń: <span class="rk-val-highlight" id="resV">3.46 l/min</span> (0,208 m³/h)
                </div>
            </div>
        </div>

        <div class="rk-step-box">
            <div class="rk-step-header">
                <div class="rk-step-num">3</div>
                <h3 class="rk-step-title">Liniowe straty ciśnienia (Δp_l)</h3>
            </div>
            <div class="rk-step-content">
                <p class="rk-calc-desc">Straty ciśnienia na skutek tarcia w rurze PEX 16&#215;2,0 mm na podstawie wyliczonego przepływu i szacunkowej długości pętli.</p>
                <div class="rk-formula">
                    Δp_l = R × L_całkowita
                </div>
                <div class="rk-calc-desc">
                    Przyjmujemy średni opór <strong>R = 140 Pa/m</strong> dla wyliczonego przepływu oraz długość pętli proporcjonalną do mocy (np. <span id="resLen">95 m</span>).
                </div>
                <div class="rk-result-box">
                    Tarcie samej rury na odcinkach prostych generuje opór:
                    <br>Wynik obliczeń: <span class="rk-val-highlight" id="resPl">13.30 kPa</span> (13300 Pa)
                </div>
            </div>
        </div>

        <div class="rk-step-box">
            <div class="rk-step-header">
                <div class="rk-step-num">4</div>
                <h3 class="rk-step-title">Opory miejscowe na zakrętach 180° (Δp_m)</h3>
            </div>
            <div class="rk-step-content">
                <p class="rk-calc-desc">Układ meandrowy generuje wysokie opory miejscowe ze względu na dużą liczbę ostrych zwrotów rury o 180 stopni.</p>
                <div class="rk-formula">
                    Δp_m = Σ(ξ) × (ρ × v²) / 2
                </div>
                <div class="rk-calc-desc">
                    Gdzie współczynnik oporu łuku 180° <strong>ξ = 1.5</strong>. Szacowana liczba łuków dla tej pętli to <span id="resBends">18</span>. Prędkość czynnika (v) dla rury 12mm wewnątrz to ok. <span id="resVel">0.51</span> m/s.
                </div>
                <div class="rk-result-box">
                    Same zakręty meandru stawiają wodzie opór:
                    <br>Wynik obliczeń: <span class="rk-val-highlight" id="resPm">3.48 kPa</span> (3482 Pa)
                </div>
            </div>
        </div>

        <div class="rk-step-box">
            <div class="rk-step-header">
                <div class="rk-step-num">5</div>
                <h3 class="rk-step-title">Całkowita strata ciśnienia (Δp_tot)</h3>
            </div>
            <div class="rk-step-content">
                <p class="rk-calc-desc">Finalna wartość, którą musi pokonać pompa obiegowa, aby zapewnić ciepło w układzie.</p>
                <div class="rk-formula">
                    Δp_tot = Δp_l + Δp_m
                </div>
                <div class="rk-result-box">
                    Całkowity opór hydrauliczny wybranej sekcji wynosi:
                    <br>Wynik ostateczny: <span class="rk-val-highlight" id="resTotal">16.78 kPa</span>
                    <br><small style="color:#64748b; margin-top:5px; display:block;" id="resStatus">Wartość ta mieści się w bezpiecznym limicie wynoszącym 20 kPa.</small>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var rangeInput = document.getElementById('simRange');
    
    // UI Elements
    var uiBaseQ = document.getElementById('uiBaseQ');
    var resQ = document.getElementById('resQ');
    var resV = document.getElementById('resV');
    var resLen = document.getElementById('resLen');
    var resPl = document.getElementById('resPl');
    var resBends = document.getElementById('resBends');
    var resVel = document.getElementById('resVel');
    var resPm = document.getElementById('resPm');
    var resTotal = document.getElementById('resTotal');
    var resStatus = document.getElementById('resStatus');

    // Constants
    var c_w = 4186;
    var rho = 992;
    var dT = 5;
    var safety_factor = 1.15;
    var mianownik = c_w * rho * dT; // 20762560
    var pipe_inner_area = Math.PI * Math.pow(0.006, 2); // promień 6mm w metrach kw.

    function calculateValues(baseQ) {
        uiBaseQ.textContent = Math.round(baseQ) + " W";
        
        // Krok 1
        var Q_petli = baseQ * safety_factor;
        resQ.textContent = Math.round(Q_petli) + " W";

        // Krok 2 (Przepływ w m3/h -> l/min)
        var V_m3h = (Q_petli / mianownik) * 3600;
        var V_lmin = V_m3h * (1000 / 60);
        resV.textContent = V_lmin.toFixed(2) + " l/min";

        // Krok 3 (Szacowanie długości: proporcjonalnie do mocy. 1200W = 95m)
        var length = (Q_petli / 1200) * 95;
        resLen.textContent = Math.round(length) + " m";
        
        // Szacowanie R proporcjonalnie do przepływu (w dużym uproszczeniu liniowym dla symulacji)
        // 3.46 l/min to ok 140 Pa. 
        var R_pa = (V_lmin / 3.46) * 140;
        var pl_pa = R_pa * length;
        var pl_kpa = pl_pa / 1000;
        resPl.textContent = pl_kpa.toFixed(2) + " kPa";

        // Krok 4 (Prędkość i opory miejscowe)
        var V_m3s = V_m3h / 3600;
        var v_ms = V_m3s / pipe_inner_area;
        resVel.textContent = v_ms.toFixed(2);

        var bends = Math.round((length / 95) * 18);
        resBends.textContent = bends;

        var pm_pa = bends * 1.5 * ((rho * Math.pow(v_ms, 2)) / 2);
        var pm_kpa = pm_pa / 1000;
        resPm.textContent = pm_kpa.toFixed(2) + " kPa";

        // Krok 5
        var total_kpa = pl_kpa + pm_kpa;
        resTotal.textContent = total_kpa.toFixed(2) + " kPa";

        // Status limitu (Zabezpieczenie JS)
        if (total_kpa <= 20) {
            resStatus.textContent = "Wartość ta mieści się w bezpiecznym limicie hydraulicznym wynoszącym 20 kPa.";
            resStatus.style.color = "#059669";
        }
        if (total_kpa > 20) {
            resStatus.textContent = "UWAGA: Wartość przekracza limit hydrauliczny (20 kPa). Konieczny podział na dwie pętle.";
            resStatus.style.color = "#ef4444";
        }
    }

    // Event listener bez znaków zagrażających
    rangeInput.addEventListener('input', function() {
        var val = parseFloat(this.value);
        calculateValues(val);
    });

    // Inicjalizacja stanu początkowego (dla dokładnej wartości 1200W całkowitej)
    var initialBase = 1200 / 1.15;
    rangeInput.value = initialBase;
    calculateValues(initialBase);
});
</script>



<style>
:root {
    --rk-proj-dark: #0f172a;
    --rk-proj-blue: #2563eb;
    --rk-proj-blue-light: #eff6ff;
    --rk-proj-gray: #64748b;
    --rk-proj-bg: #ffffff;
    --rk-proj-border: #e2e8f0;
}

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

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

.rk-proj-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.4;
    color: white;
}

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

/* Interfejs Single-Column */
.rk-proj-body {
    padding: 35px 40px;
    background: #f8fafc;
}

/* Nawigacja (Tabulatory poziome na desktop, pionowe na mobile) */
.rk-proj-tabs {
    display: flex;
    gap: 15px;
    margin-bottom: 25px;
    justify-content: center;
    flex-wrap: wrap;
}

.rk-proj-tab-btn {
    background: white;
    border: 2px solid var(--rk-proj-border);
    padding: 16px 20px;
    border-radius: 14px;
    cursor: pointer;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-proj-gray);
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 12px;
    flex: 1;
    min-width: 220px;
    justify-content: center;
}

.rk-proj-tab-btn:hover {
    border-color: #bfdbfe;
    background: var(--rk-proj-blue-light);
}

.rk-proj-tab-btn.active {
    border-color: var(--rk-proj-blue);
    background: var(--rk-proj-blue);
    color: white;
    box-shadow: 0 8px 15px -5px rgba(37, 99, 235, 0.3);
}

.rk-proj-tab-btn svg {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
}

/* Kontener Treści (Ściśle 1-kolumnowy, oparty na gęstym tekście) */
.rk-proj-content-box {
    background: white;
    border-radius: 16px;
    border: 1px solid var(--rk-proj-border);
    padding: 40px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.03);
    text-align: left; /* Czytelny układ dla dłuższych bloków tekstu */
}

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

.rk-proj-content-box h3::before {
    content: '';
    display: inline-block;
    width: 6px;
    height: 24px;
    background: var(--rk-proj-blue);
    border-radius: 4px;
}

.rk-proj-content-box p {
    font-size: 16px;
    line-height: 1.8;
    color: #334155;
    margin: 0 0 15px 0;
}

.rk-proj-content-box p:last-child {
    margin-bottom: 0;
}

/* Styl wyróżnień technicznych (zamiast LaTeX) */
.rk-tech-val {
    font-weight: 800;
    color: var(--rk-proj-blue);
    background: var(--rk-proj-blue-light);
    padding: 3px 8px;
    border-radius: 6px;
    white-space: nowrap;
}

.rk-keyword {
    font-weight: 700;
    color: var(--rk-proj-dark);
    border-bottom: 1px dashed var(--rk-proj-gray);
}

/* Animacje zawartości */
.fade-in-up {
    animation: fadeInUp 0.4s ease-out forwards;
}

@keyframes fadeInUp {
    0% { opacity: 0; transform: translateY(10px); }
    100% { opacity: 1; transform: translateY(0); }
}

/* Kreatywne CTA */
.rk-proj-cta {
    background: linear-gradient(to right, #eff6ff, #ffffff);
    padding: 40px;
    text-align: center;
    border-top: 2px dashed var(--rk-proj-border);
}

.rk-proj-cta h4 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-proj-dark);
    margin: 0 0 15px 0;
}

.rk-proj-cta p {
    font-size: 16px;
    color: var(--rk-proj-gray);
    margin: 0 auto 25px auto;
    max-width: 650px;
    line-height: 1.6;
}

.rk-btn-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-proj-blue);
    color: white;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 12px;
    text-decoration: none;
    box-shadow: 0 10px 20px -5px rgba(37, 99, 235, 0.4);
    transition: all 0.3s;
    border: 2px solid transparent;
}

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

/* Responsywność */
@media (max-width: 768px) {
    .rk-proj-header, .rk-proj-body, .rk-proj-content-box, .rk-proj-cta { padding: 25px 20px; }
    .rk-proj-tabs { flex-direction: column; gap: 10px; }
    .rk-proj-tab-btn { width: 100%; justify-content: flex-start; padding: 18px 20px; }
    .rk-btn-cta { width: 100%; text-align: center; font-size: 15px; padding: 16px 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#article-projekt",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/"
    },
    "headline": "Jak instalacja ogrzewania podłogowego w układzie meandrowym wpływa na projekt HVAC?",
    "description": "Szczegółowa analiza wpływu układu meandrowego na dobór pompy ciepła, regulację rotametrów i grubość wylewki jastrychowej. Optymalizacja pod kątem OZC.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-10",
    "dateModified": "2026-07-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#dataset-projekt",
    "name": "Parametry Projektowe Układu Meandrowego w HVAC",
    "description": "Baza danych powiązań między wyborem układu meandrowego a optymalizacją pracy układu hydraulicznego i źródła ciepła dla domów pasywnych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dobór pompy ciepła do ogrzewania podłogowego",
      "krzywa grzewcza pompy ciepła",
      "równoważenie hydrauliczne rotametrów",
      "opory hydrauliczne instalacji podłogowej",
      "grubość wylewki betonowej na podłogówkę",
      "jastrych anhydrytowy a meander",
      "bezwładność cieplna podłogówki",
      "ustawienie przepływów na rotametrach"
    ],
    "measurementTechnique": "Weryfikacja parametrów projektowych na podstawie normy PN-EN 12831 oraz specyfikacji technicznych pomp obiegowych i źródeł ciepła.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Pompa Ciepła: Optymalizacja zasilania do Tz = 35°C w celu zapobiegania spadkowi wskaźnika SCOP na krzywej grzewczej.",
        "Hydraulika: Kompensacja strat miejscowych przez rygorystyczne równoważenie przepływów masowych na rotametrach.",
        "Jastrych: Kontrola bezwładności cieplnej poprzez jednorodną wylewkę 45-50 mm (beton) lub 35 mm (anhydryt)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#webapp-projekt",
    "name": "Eksplorator Założeń Projektowych OZC",
    "description": "Narzędzie interaktywne typu Single-Column eksplorujące techniczne konsekwencje zastosowania pętli meandrowych w profesjonalnym projekcie instalacji grzewczej.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-proj-container" id="meander-design-impact">
    <div class="rk-proj-header">
        <h2>Wpływ układu meandrowego na projekt techniczny</h2>
        <p>Zastosowanie meandru ma diametralny wpływ na projekt HVAC, wymuszając ścisłą korelację pomiędzy audytem OZC a hydrauliczną strukturą rozdzielacza. Sprawdź, co ulegnie zmianie w instalacji.</p>
    </div>

    <div class="rk-proj-body">
        
        <div class="rk-proj-tabs" id="projTabs">
            <button class="rk-proj-tab-btn active" data-target="pompa">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><path d="M12 18v-6"></path><path d="M9 15h6"></path></svg>
                Pompa Ciepła (SCOP)
            </button>
            <button class="rk-proj-tab-btn" data-target="hydro">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>
                Równoważenie Hydrauliki
            </button>
            <button class="rk-proj-tab-btn" data-target="screed">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="7" width="20" height="14" rx="2" ry="2"></rect><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path></svg>
                Termodynamika Jastrychu
            </button>
        </div>

        <div class="rk-proj-content-box fade-in-up" id="projContent">
            <h3>Korelacja z krzywą grzewczą pompy ciepła</h3>
            <p>
                Układ meandrowy generuje wyższe straty miejscowe na każdym zwrocie rury o 180 stopni. Ten fizyczny fakt ma bezpośredni wpływ na <span class="rk-keyword">dobór pompy ciepła do ogrzewania podłogowego</span>. Jeśli profesjonalny projekt na bazie audytu OZC zakłada <span class="rk-keyword">niskotemperaturowe ogrzewanie płaszczyznowe</span> z parametrem zasilania zredukowanym do poziomu <span class="rk-tech-val">Tz = 35°C</span>, rozstaw rur w meandrze musi być co do centymetra skalkulowany pod kątem lokalnych strat ciepła.
            </p>
            <p>
                Błąd w tym obszarze (np. zbyt rzadki rozstaw rur w strefie brzegowej) zmusza użytkownika do podnoszenia zadanej temperatury wody na <span class="rk-keyword">krzywej grzewczej pompy ciepła</span>. Każdy stopień zasilania w górę to drastyczny spadek sezonowego wskaźnika efektywności (SCOP), co z biegiem lat generuje tysiące złotych niepotrzebnych kosztów na rachunkach za prąd.
            </p>
        </div>

    </div>

    <div class="rk-proj-cta">
        <h4>Nie ryzykuj wysokich rachunków za ogrzewanie</h4>
        <p>Brak projektu OZC przy meandrze to gwarancja przewymiarowanej pompy i nierównego grzania. Skonsultuj swój budynek z inżynierem i zyskaj pełną kontrolę nad instalacją.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-cta">
            ZAMÓW PROJEKT INSTALACJI OGRZEWANIA PODŁOGOWEGO Z POMPĄ CIEPŁA
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var tabs = document.querySelectorAll('.rk-proj-tab-btn');
    var contentBox = document.getElementById('projContent');

    var projData = {
        "pompa": {
            title: "Korelacja z krzywą grzewczą pompy ciepła",
            html: '<p>Układ meandrowy generuje wyższe straty miejscowe na każdym zwrocie rury o 180 stopni. Ten fizyczny fakt ma bezpośredni wpływ na <span class="rk-keyword">dobór pompy ciepła do ogrzewania podłogowego</span>. Jeśli profesjonalny projekt na bazie audytu OZC zakłada <span class="rk-keyword">niskotemperaturowe ogrzewanie płaszczyznowe</span> z parametrem zasilania zredukowanym do poziomu <span class="rk-tech-val">Tz = 35°C</span>, rozstaw rur w meandrze musi być co do centymetra skalkulowany pod kątem lokalnych strat ciepła.</p><p>Błąd w tym obszarze (np. zbyt rzadki rozstaw rur w strefie brzegowej) zmusza użytkownika do podnoszenia zadanej temperatury wody na <span class="rk-keyword">krzywej grzewczej pompy ciepła</span>. Każdy stopień zasilania w górę to drastyczny spadek sezonowego wskaźnika efektywności (SCOP), co z biegiem lat generuje tysiące złotych niepotrzebnych kosztów na rachunkach za prąd.</p>'
        },
        "hydro": {
            title: "Hydrauliczne równoważenie przepływów",
            html: '<p>Z uwagi na konstrukcję, pętle meandrowe stawiają wodzie znaczny opór. Aby obieg funkcjonował poprawnie, kluczowe staje się <span class="rk-keyword">równoważenie hydrauliczne rotametrów</span> w szafce. W projekcie technicznym każda pętla otrzymuje konkretną, matematycznie wyliczoną nastawę wstępną podaną w litrach na minutę.</p><p>Ponieważ meander podbija <span class="rk-keyword">opory hydrauliczne instalacji podłogowej</span> w stosunku do układów ślimakowych, absolutnie niedopuszczalne jest projektowanie układów mieszanych (ślimak i meander) na jednym rozdzielaczu bez precyzyjnego wyregulowania dławików. Brak <span class="rk-keyword">ustawienia przepływów na rotametrach</span> na bazie projektu prowadzi do sytuacji, gdzie woda krąży tylko w najkrótszych pętlach ślimakowych, omijając gęsty meander pod oknem całkowicie.</p>'
        },
        "screed": {
            title: "Kontrola termodynamiki jastrychu",
            html: '<p>W meandrze temperatura wody spada liniowo od rozdzielacza do końca pętli, dlatego projektant musi perfekcyjnie zapanować nad strukturą budowlaną posadzki. Odpowiednia <span class="rk-keyword">grubość wylewki betonowej na podłogówkę</span> (zazwyczaj <span class="rk-tech-val">45–50 mm</span> nad górną krawędzią rury) to fundament zapobiegający pękaniu posadzki.</p><p>Alternatywnie, projekt może zakładać cieńszy <span class="rk-keyword">jastrych anhydrytowy</span> (około <span class="rk-tech-val">35 mm</span>), który lepiej znosi naprężenia zginające. Niezależnie od materiału, idealnie wyliczona masa termiczna jastrychu pozwala przewidzieć <span class="rk-keyword">bezwładność cieplną podłogówki</span>. Dzięki temu system sterowania szybciej reaguje na zyski słoneczne w pomieszczeniach z meandrem brzegowym, nie dopuszczając do szkodliwego przegrzewania wnętrz.</p>'
        }
    };

    tabs.forEach(function(tab) {
        tab.addEventListener('click', function() {
            // Zmiana klas w zakładkach
            tabs.forEach(function(t) { t.classList.remove('active'); });
            this.classList.add('active');

            var target = this.getAttribute('data-target');
            var data = projData[target];

            // Bezpieczne wstrzyknięcie danych (bez instrukcji logicznych && / || )
            if (data !== undefined) {
                // Restart animacji fade-in
                contentBox.classList.remove('fade-in-up');
                void contentBox.offsetWidth; // trigger reflow (bezpieczny hack)
                contentBox.classList.add('fade-in-up');

                // Aktualizacja DOM - Gęsty tekst, brak SVG
                contentBox.innerHTML = 
                    '<h3>' + data.title + '</h3>' + data.html;
            }
        });
    });
});
</script>



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

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

/* Header */
.rk-err-header {
    background: linear-gradient(135deg, #7f1d1d 0%, #b91c1c 100%);
    padding: 35px 40px;
    color: white;
    text-align: left;
    display: flex;
    align-items: center;
    gap: 20px;
}

.rk-err-header-icon {
    background: rgba(255, 255, 255, 0.15);
    border-radius: 12px;
    padding: 15px;
    flex-shrink: 0;
}

.rk-err-header-content h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 8px 0;
    color: white;
}

.rk-err-header-content p {
    font-size: 15px;
    color: #fca5a5;
    margin: 0;
    line-height: 1.5;
}

/* Interactive Body */
.rk-err-interactive {
    padding: 30px 40px;
    background: #f8fafc;
}

.rk-err-grid {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: 30px;
    align-items: start;
}

/* Kafelki Błędów (Lewa strona) */
.rk-err-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-err-btn {
    background: white;
    border: 2px solid var(--rk-err-border);
    padding: 18px 20px;
    border-radius: 12px;
    cursor: pointer;
    text-align: left;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-err-btn:hover {
    border-color: #fca5a5;
    background: var(--rk-err-red-light);
}

.rk-err-btn.active {
    border-color: var(--rk-err-red);
    background: var(--rk-err-red-light);
    box-shadow: 0 4px 12px rgba(239, 68, 68, 0.1);
}

.rk-err-icon {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #f1f5f9;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #94a3b8;
    flex-shrink: 0;
    transition: all 0.3s;
}

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

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

/* Panel Diagnostyczny (Prawa strona) */
.rk-diag-panel {
    background: white;
    border-radius: 16px;
    border: 1px solid var(--rk-err-border);
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    display: flex;
    flex-direction: column;
}

.rk-diag-svg-box {
    height: 140px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 25px;
    background: #f1f5f9;
    border-radius: 12px;
    border: 1px dashed #cbd5e1;
    overflow: hidden;
}

.rk-diag-content h4 {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-err-red);
    margin: 0 0 10px 0;
}

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

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

/* Animacje SVG dla błędów */
.err-anim-pulse {
    animation: errPulse 1.5s infinite;
}

@keyframes errPulse {
    0% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.5; transform: scale(1.1); }
    100% { opacity: 1; transform: scale(1); }
}

.err-anim-shake {
    animation: errShake 0.5s infinite;
}

@keyframes errShake {
    0% { transform: translateX(0); }
    25% { transform: translateX(-2px); }
    50% { transform: translateX(2px); }
    75% { transform: translateX(-2px); }
    100% { transform: translateX(0); }
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-err-header { flex-direction: column; text-align: center; padding: 25px 20px; }
    .rk-err-interactive { padding: 20px; }
    .rk-err-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-diag-panel { order: -1; } /* Panel z wynikiem na samej górze na mobile */
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/"
    },
    "headline": "Najczęstsze błędy wykonawcze przy instalacji meandrowej i ich konsekwencje",
    "description": "Katalog najpoważniejszych błędów hydraulicznych w układach meandrowych, od załamania rury PEX, przez zbyt długie pętle, aż po pułapki systemów suchych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-07-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#dataset-bledy",
    "name": "Analiza Błędów Instalacji Meandrowej",
    "description": "Zestawienie technologicznych konsekwencji błędnego wykonania wodnego ogrzewania podłogowego ze szczególnym uwzględnieniem promieni gięcia i rozstawów rur.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "załamanie rury pex podłogówka",
      "spadek ciśnienia w długiej pętli",
      "rozstaw rur w systemie suchym",
      "kierunek zasilania meandra",
      "błędy montażu ogrzewania płaszczyznowego"
    ],
    "measurementTechnique": "Wizualizacja skutków przekroczenia normatywnych promieni gięcia rur, ograniczeń długości pętli oraz analizy błędów kierunku przepływu wody grzewczej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Błąd promienia: Powoduje uszkodzenie warstwy aluminium, restrykcję przepływu i wycieki.",
        "Błąd zasilania: Prowadzi do niedogrzania stref brzegowych przy przeszkleniach.",
        "Błąd długości: Zbyt długa pętla powoduje potężne straty ciśnienia i brak możliwości regulacji.",
        "Błąd systemu suchego: Wymuszony rozstaw (10/20cm) zamiast zoptymalizowanego 15cm dla domów pasywnych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#webapp-diagnoza",
    "name": "Symulator Skutków Błędów Hydraulicznych",
    "description": "Interaktywny moduł edukacyjny dla inwestorów, pozwalający na symulację i zrozumienie fizycznych konsekwencji typowych błędów popełnianych przez instalatorów.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container" id="error-simulator">
    <div class="rk-err-header">
        <div class="rk-err-header-icon">
            <svg width="36" height="36" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path>
                <line x1="12" y1="9" x2="12" y2="13"></line>
                <line x1="12" y1="17" x2="12.01" y2="17"></line>
            </svg>
        </div>
        <div class="rk-err-header-content">
            <h2>Najczęstsze błędy wykonawcze przy instalacji meandrowej</h2>
            <p>Jastrych betonowy zaleje wszystko. Odkryj, jakie bomby zegarowe zostawiają wykonawcy bez projektów i jak zniszczą one Twój komfort i portfel.</p>
        </div>
    </div>

    <div class="rk-err-interactive">
        <div class="rk-err-grid">
            
            <div class="rk-err-list">
                <button class="rk-err-btn active" data-error="bend">
                    <div class="rk-err-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg></div>
                    <h3>Zbyt ostry promień gięcia rur</h3>
                </button>
                <button class="rk-err-btn" data-error="flow">
                    <div class="rk-err-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M2 12h10"></path><path d="M9 4v16"></path><path d="M15 9l5 3-5 3"></path></svg></div>
                    <h3>Błędny kierunek zasilania</h3>
                </button>
                <button class="rk-err-btn" data-error="length">
                    <div class="rk-err-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="2" y="7" width="20" height="10" rx="2" ry="2"></rect><line x1="12" y1="7" x2="12" y2="17"></line></svg></div>
                    <h3>Zbyt długa pętla grzewcza</h3>
                </button>
                <button class="rk-err-btn" data-error="dry">
                    <div class="rk-err-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg></div>
                    <h3>Pułapka systemów suchych</h3>
                </button>
            </div>

            <div class="rk-diag-panel">
                <div class="rk-diag-svg-box" id="errSvgBox">
                    <svg width="100" height="100" viewBox="0 0 100 100" fill="none" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round">
                        <path d="M20,50 L40,50" stroke="#94a3b8"></path>
                        <path d="M40,50 C45,50 48,53 50,60" stroke="#ef4444" class="err-anim-pulse"></path>
                        <path d="M50,60 L50,80" stroke="#94a3b8"></path>
                        <circle cx="48" cy="53" r="6" fill="#fef2f2" stroke="#ef4444" class="err-anim-shake"></circle>
                    </svg>
                </div>
                <div class="rk-diag-content" id="errContentBox">
                    <h4>Przewężenie i ryzyko pęknięcia</h4>
                    <p>Wykonawcy, próbując wymusić mały rozstaw rur (np. 10 cm) w meandrze pojedynczym, zginają rurę bez użycia narzędzi profilujących. Konsekwencją jest drastyczne przewężenie przekroju, gwałtowny wzrost oporów hydraulicznych, a w skrajnych przypadkach pęknięcie warstwy aluminium w rurze PEX. To po kilku latach skutkuje wyciekiem wody pod jastrych.</p>
                    <p>Dowiedz się więcej: <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">Jak unikać najczęstszych błędów montażu podłogówki?</a></p>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    var errBtns = document.querySelectorAll('.rk-err-btn');
    var svgBox = document.getElementById('errSvgBox');
    var contentBox = document.getElementById('errContentBox');

    var errData = {
        "bend": {
            svg: '<svg width="100" height="100" viewBox="0 0 100 100" fill="none" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"><path d="M20,50 L40,50" stroke="#94a3b8"/><path d="M40,50 C45,50 48,53 50,60" stroke="#ef4444" class="err-anim-pulse"/><path d="M50,60 L50,80" stroke="#94a3b8"/><circle cx="48" cy="53" r="6" fill="#fef2f2" stroke="#ef4444" class="err-anim-shake"/></svg>',
            title: "Przewężenie i ryzyko pęknięcia",
            desc: "Wykonawcy, próbując wymusić mały rozstaw rur w meandrze pojedynczym, zginają rurę bez użycia narzędzi profilujących. Konsekwencją jest przewężenie przekroju, gwałtowny wzrost oporów hydraulicznych i pęknięcie warstwy aluminium, co gwarantuje wyciek wody pod jastrych.",
            link: '<a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">Jak unikać najczęstszych błędów montażu podłogówki?</a>'
        },
        "flow": {
            svg: '<svg width="100" height="100" viewBox="0 0 100 100" fill="none" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"><rect x="10" y="20" width="10" height="60" fill="#38bdf8" stroke="none"/><path d="M80,30 L30,30 L30,45 L80,45" stroke="#ef4444" class="err-anim-pulse"/><path d="M80,60 L30,60 L30,75 L80,75" stroke="#94a3b8"/><text x="40" y="95" font-size="12" fill="#ef4444" stroke="none">Zimne okno</text></svg>',
            title: "Niedogrzane strefy brzegowe",
            desc: "Zasilanie prowadzone od strony ściany wewnętrznej, zamiast od najzimniejszej strefy przegrody zewnętrznej. Konsekwencje: nierównomierny rozkład temperatury, chłodniejsze miejsca przy oknach tarasowych i drastycznie niższy komfort cieplny w salonie.",
            link: '<a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/">Zasady projektowania strefy brzegowej.</a>'
        },
        "length": {
            svg: '<svg width="100" height="100" viewBox="0 0 100 100" fill="none" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"><path d="M10,50 Q30,10 50,50 T90,50" stroke="#cbd5e1"/><path d="M10,50 Q30,10 50,50" stroke="#ef4444" class="err-anim-pulse"/><circle cx="50" cy="50" r="5" fill="#fef2f2" stroke="#ef4444"/><text x="15" y="80" font-size="11" fill="#ef4444" stroke="none">Spadek ciśnienia / Brak przepływu</text></svg>',
            title: "Hydrauliczny zawał pompy",
            desc: "Zbyt długa pętla grzewcza (powyżej limitów dla danej średnicy). Konsekwencje: potężne straty ciśnienia, zablokowany przepływ wody przez opory tarcia, brak ogrzewania w końcowej części pętli oraz całkowity brak możliwości wyregulowania rotametrów.",
            link: '<a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">Co zrobić, gdy pętla podłogówki jest za długa?</a>'
        },
        "dry": {
            svg: '<svg width="100" height="100" viewBox="0 0 100 100" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><rect x="10" y="20" width="80" height="60" rx="4" stroke="#94a3b8"/><line x1="30" y1="20" x2="30" y2="80" stroke="#cbd5e1" stroke-dasharray="4 4"/><line x1="70" y1="20" x2="70" y2="80" stroke="#cbd5e1" stroke-dasharray="4 4"/><circle cx="30" cy="50" r="6" fill="#ef4444"/><circle cx="70" cy="50" r="6" fill="#ef4444"/><path d="M30,50 Q50,80 70,50" stroke="#ef4444" fill="none" class="err-anim-shake"/><text x="42" y="45" font-size="12" fill="#ef4444" stroke="none">Brak 15 cm!</text></svg>',
            title: "Sztywny rozstaw płyt systemowych",
            desc: "Niektórzy producenci systemów lekkich robią płyty z dedykowanym rozstawem rur tylko co 10 cm. Brak układu pośredniego jest problemem dla nowocześnie izolowanych budynków, gdzie OZC wymusza rozstaw 15 cm. Trzeba wybrać płyty systemowe, które pozwolą na rozstaw ściśle według projektu OZC.",
            link: '<a href="https://projekt-ogrzewania.pl/czym-jest-system-suchy-w-wodnym-ogrzewaniu-podlogowym/">Systemy suche – jak dobierać materiały?</a>'
        }
    };

    errBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            
            // Zmiana klas
            errBtns.forEach(function(b) { b.classList.remove('active'); });
            this.classList.add('active');

            // Aktualizacja treści
            var errKey = this.getAttribute('data-error');
            var selectedData = errData[errKey];

            if (selectedData !== undefined) {
                svgBox.innerHTML = selectedData.svg;
                contentBox.innerHTML = '<h4>' + selectedData.title + '</h4>' +
                                       '<p>' + selectedData.desc + '</p>' +
                                       '<p>Dowiedz się więcej: ' + selectedData.link + '</p>';
            }
        });
    });
});
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-blue: #0284c7;
    --rk-case-blue-light: #f0f9ff;
    --rk-case-teal: #0f766e;
    --rk-case-teal-light: #ccfbf1;
    --rk-case-gray: #475569;
    --rk-case-bg: #ffffff;
    --rk-case-border: #e2e8f0;
}

.rk-case-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-case-bg);
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(15, 118, 110, 0.15);
    border: 1px solid var(--rk-case-teal);
    overflow: hidden;
}

/* Nagłówek Case Study */
.rk-case-header {
    background: linear-gradient(135deg, var(--rk-case-dark) 0%, #134e4a 100%);
    padding: 40px 35px;
    display: flex;
    align-items: center;
    gap: 25px;
    color: white;
}

.rk-case-badge {
    background: rgba(204, 251, 241, 0.15);
    border: 1px solid rgba(204, 251, 241, 0.3);
    padding: 15px;
    border-radius: 12px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    min-width: 100px;
}

.rk-case-badge span {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 1px;
    font-weight: 800;
    color: #5eead4;
    margin-bottom: 5px;
}

.rk-case-badge svg {
    width: 32px;
    height: 32px;
    color: white;
}

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

.rk-case-title-box p {
    font-size: 15px;
    color: #99f6e4;
    margin: 0;
    line-height: 1.6;
}

/* Interfejs Single-Column */
.rk-case-body {
    padding: 35px 40px;
    background: #f8fafc;
}

/* Tabulatory Etapów */
.rk-case-tabs {
    display: flex;
    gap: 12px;
    margin-bottom: 30px;
    justify-content: center;
    flex-wrap: wrap;
}

.rk-case-tab-btn {
    background: white;
    border: 2px solid var(--rk-case-border);
    padding: 16px 20px;
    border-radius: 12px;
    cursor: pointer;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-case-gray);
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 1;
    min-width: 220px;
    justify-content: center;
}

.rk-case-tab-btn:hover {
    border-color: #99f6e4;
    background: var(--rk-case-teal-light);
}

.rk-case-tab-btn.active {
    border-color: var(--rk-case-teal);
    background: var(--rk-case-teal);
    color: white;
    box-shadow: 0 8px 20px -5px rgba(15, 118, 110, 0.4);
}

.rk-case-tab-btn svg {
    width: 20px;
    height: 20px;
}

/* Kontener Treści */
.rk-case-content-box {
    background: white;
    border-radius: 16px;
    border: 1px solid var(--rk-case-border);
    padding: 35px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.02);
}

.rk-case-data-bar {
    display: flex;
    justify-content: space-between;
    background: var(--rk-case-teal-light);
    border-left: 4px solid var(--rk-case-teal);
    padding: 15px 20px;
    border-radius: 8px;
    margin-bottom: 25px;
    font-size: 14px;
    font-weight: 700;
    color: #115e59;
}

.rk-case-svg-panel {
    background: #f1f5f9;
    border-radius: 12px;
    height: 220px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 25px;
    border: 1px dashed #cbd5e1;
    overflow: hidden;
}

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

.rk-case-content-box p {
    font-size: 16px;
    line-height: 1.8;
    color: #334155;
    margin: 0 0 15px 0;
}

.rk-case-content-box a {
    color: var(--rk-case-teal);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: all 0.2s;
}

.rk-case-content-box a:hover {
    color: var(--rk-case-dark);
    background: var(--rk-case-teal-light);
}

/* Wyróżnienia Tech */
.rk-tech-pill {
    display: inline-block;
    background: var(--rk-case-dark);
    color: white;
    padding: 2px 8px;
    border-radius: 6px;
    font-size: 14px;
    font-weight: 700;
}

/* Animacje CSS */
.fade-in-content {
    animation: fadeIn 0.4s ease-out forwards;
}

@keyframes fadeIn {
    0% { opacity: 0; transform: translateY(10px); }
    100% { opacity: 1; transform: translateY(0); }
}

.anim-crack {
    stroke-dasharray: 100;
    animation: crackDraw 1.5s forwards;
}

@keyframes crackDraw {
    from { stroke-dashoffset: 100; }
    to { stroke-dashoffset: 0; }
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-case-header { flex-direction: column; text-align: center; padding: 30px 20px; }
    .rk-case-body { padding: 25px 20px; }
    .rk-case-tabs { flex-direction: column; gap: 10px; }
    .rk-case-tab-btn { width: 100%; justify-content: flex-start; padding: 16px 20px; }
    .rk-case-data-bar { flex-direction: column; gap: 10px; text-align: center; }
    .rk-case-content-box { padding: 25px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#article-case-study",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/"
    },
    "headline": "Studium Przypadku: Ogrzewanie podłogowe na starym drewnianym stropie (Tarnowskie Góry)",
    "description": "Techniczna analiza modernizacji domu z lat 70. Jak układ meandrowy i system suchy uratowały drewniany strop przed zawaleniem ciężką wylewką.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-10",
    "dateModified": "2026-07-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#dataset-case-study",
    "name": "Porównanie obciążeń konstrukcyjnych przy modernizacji stropu",
    "description": "Zestawienie parametrów wagi oraz oporów cieplnych zastosowanych rozwiązań grzewczych w budynku z lat 70.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "podłogówka na drewnianym stropie",
      "waga wylewki betonowej m2",
      "lekki system suchy ogrzewanie",
      "remont domu z lat 70 podłogówka",
      "nośność stropu drewnianego wylewka",
      "układ meandrowy w systemie suchym"
    ],
    "measurementTechnique": "Szacunkowa inżynierska ocena wytrzymałości starych belek drewnianych na obciążenia statyczne generowane przez jastrych cementowy vs suchą zabudowę.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Stan pierwotny: Strop drewniany z lat 70., dopuszczalne dodatkowe obciążenie krytyczne poniżej 50 kg/m2.",
        "Ryzyko (Wylewka betowa): 120-150 kg/m2 - ryzyko uszkodzenia konstrukcji nośnej.",
        "Wdrożone rozwiązanie (System suchy meander): 15-20 kg/m2 - pełne bezpieczeństwo statyczne przy zachowaniu wysokiej wydajności."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#webapp-case-study",
    "name": "Eksplorator Studium Przypadku: Remont Stropu",
    "description": "Narzędzie krok po kroku prezentujące proces inżynierskiego rozwiązywania problemu braku nośności stropu drewnianego pod instalację ogrzewania.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-case-container" id="case-study-module">
    <div class="rk-case-header">
        <div class="rk-case-badge">
            <span>Case Study</span>
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
        </div>
        <div class="rk-case-title-box">
            <h2>Ogrzewanie podłogowe na drewnianym stropie</h2>
            <p><strong>Lokalizacja:</strong> Tarnowskie Góry, woj. śląskie | <strong>Budynek:</strong> Dom z lat 70., 110 m² poddasza | <strong>Inwestor:</strong> Pan Tomasz</p>
        </div>
    </div>

    <div class="rk-case-body">
        
        <div class="rk-case-tabs" id="caseTabs">
            <button class="rk-case-tab-btn active" data-phase="problem">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                1. Diagnoza i Ryzyko
            </button>
            <button class="rk-case-tab-btn" data-phase="solution">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
                2. Rozwiązanie Inżynierskie
            </button>
            <button class="rk-case-tab-btn" data-phase="result">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                3. Efekt końcowy
            </button>
        </div>

        <div class="rk-case-content-box fade-in-content" id="caseContentBox">
            
            <div class="rk-case-data-bar" id="caseDataBar">
                <span>Zagrożenie: Zawalenie konstrukcji drewnianej</span>
                <span>Waga <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" style="color:#115e59;">wylewki betonowej</a>: <strong style="color:#ef4444;">150 kg/m²</strong></span>
            </div>

            <div class="rk-case-svg-panel" id="caseSvgBox">
                <svg width="300" height="150" viewBox="0 0 300 150" fill="none" stroke="currentColor">
                    <rect x="20" y="90" width="260" height="20" fill="#d97706" stroke="#92400e" stroke-width="2"/>
                    <rect x="20" y="30" width="260" height="60" fill="#94a3b8" stroke="none"/>
                    <text x="150" y="65" font-size="14" fill="#ffffff" font-weight="bold" stroke="none" text-anchor="middle">Beton (Masa 150 kg/m²)</text>
                    <path d="M120 90 L150 120 L180 90" stroke="#ef4444" stroke-width="3" fill="none" class="anim-crack"/>
                    <path d="M150 120 L150 150" stroke="#ef4444" stroke-width="3" class="anim-crack" style="animation-delay: 0.5s;"/>
                </svg>
            </div>

            <div id="caseTextBox">
                <h3>Problem: Ciężar, który niszczy drewno</h3>
                <p>
                    Pan Tomasz rozpoczął remont piętra w klasycznym, śląskim domu z lat 70. zwącym się potocznie &#8222;kostką&#8221;. Podłogę na poddaszu wspierał <span class="rk-tech-pill">stary strop z legarów drewnianych</span>. Inwestor marzył o pozbyciu się grzejników, ale napotkał twardą barierę architektoniczną.
                </p>
                <p>
                    <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-remontowanym-budynku-czy-warto/">Ogrzewanie podłogowe w remontowanym budynku</a> realizowane w tradycyjnym systemie &#8222;mokrym&#8221; wymaga zalania rur około 6-centymetrową warstwą wylewki jastrychowej. Taki beton to dodatkowe obciążenie na poziomie 120 &#8211; 150 kg na każdy metr kwadratowy. Położenie takiej masy na 50-letnie drewniane belki groziło drastycznym ugięciem stropu, spękaniem płyt gipsowo-kartonowych na parterze, a w skrajnym przypadku katastrofą budowlaną.
                </p>
            </div>

        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btns = document.querySelectorAll('.rk-case-tab-btn');
    var contentBox = document.getElementById('caseContentBox');
    var dataBar = document.getElementById('caseDataBar');
    var svgBox = document.getElementById('caseSvgBox');
    var textBox = document.getElementById('caseTextBox');

    var caseData = {
        "problem": {
            barHtml: '<span>Zagrożenie: Uszkodzenie konstrukcji nośnej</span><span>Waga tradycyjnej wylewki: <strong style="color:#ef4444;">150 kg/m²</strong></span>',
            svg: '<svg width="300" height="150" viewBox="0 0 300 150" fill="none" stroke="currentColor"><rect x="20" y="90" width="260" height="20" fill="#d97706" stroke="#92400e" stroke-width="2"/><rect x="20" y="30" width="260" height="60" fill="#94a3b8" stroke="none"/><text x="150" y="65" font-size="14" fill="#ffffff" font-weight="bold" stroke="none" text-anchor="middle">Beton (Masa 150 kg/m²)</text><path d="M120 90 L150 120 L180 90" stroke="#ef4444" stroke-width="3" fill="none" class="anim-crack"/><path d="M150 120 L150 150" stroke="#ef4444" stroke-width="3" class="anim-crack" style="animation-delay: 0.5s;"/></svg>',
            title: "Problem: Ciężar, który niszczy drewno",
            text: '<p>Pan Tomasz rozpoczął remont piętra w klasycznym, śląskim domu z lat 70. zwącym się potocznie "kostką". Podłogę na poddaszu wspierał <span class="rk-tech-pill">stary strop z legarów drewnianych</span>. Inwestor marzył o pozbyciu się grzejników, ale napotkał twardą barierę architektoniczną.</p><p><a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-remontowanym-budynku-czy-warto/">Ogrzewanie podłogowe w remontowanym budynku</a> realizowane w tradycyjnym systemie "mokrym" wymaga zalania rur około 6-centymetrową warstwą wylewki jastrychowej. Taki beton to dodatkowe obciążenie na poziomie 120 - 150 kg na każdy metr kwadratowy. Położenie takiej masy na 50-letnie drewniane belki groziło drastycznym ugięciem stropu, spękaniem sufitów na parterze, a w skrajnym przypadku katastrofą budowlaną.</p>'
        },
        "solution": {
            barHtml: '<span>Rozwiązanie: Płyty frezowane i lamele aluminiowe</span><span>Redukcja wagi o: <strong style="color:#0f766e;">85%</strong></span>',
            svg: '<svg width="300" height="150" viewBox="0 0 300 150" fill="none" stroke="currentColor"><rect x="20" y="90" width="260" height="20" fill="#d97706" stroke="#92400e" stroke-width="2"/><rect x="20" y="70" width="260" height="20" fill="#e2e8f0" stroke="#94a3b8" stroke-width="1"/><path d="M40 75 L260 75" stroke="#0ea5e9" stroke-width="4"/><circle cx="80" cy="75" r="4" fill="#dc2626" stroke="none"/><circle cx="150" cy="75" r="4" fill="#dc2626" stroke="none"/><circle cx="220" cy="75" r="4" fill="#dc2626" stroke="none"/><text x="150" y="55" font-size="12" fill="#475569" stroke="none" text-anchor="middle" font-weight="bold">Lekki system suchy (układ meandrowy)</text></svg>',
            title: "Meander wpisany w system suchy",
            text: '<p>Weryfikacja inżynierska wykazała, że jedyną w 100% bezpieczną metodą jest zastosowanie <a href="https://projekt-ogrzewania.pl/czym-jest-system-suchy-w-wodnym-ogrzewaniu-podlogowym/">systemu suchego ogrzewania podłogowego</a>. Opiera się on na dedykowanych płytach ze styropianu XPS lub twardego włókna drzewnego o wysokiej gęstości, w których fabrycznie wyfrezowano rowki. </p><p>Tutaj technologia narzuca kształt: te rowki wymuszają prowadzenie rur właśnie w <span class="rk-tech-pill">układzie meandrowym</span>. Rura układana jest równolegle, osadzana w specjalnych blachach aluminiowych (lamelach), które stanowią radiator odbierający ciepło z rury i oddający je bezpośrednio do ułożonych na nich paneli lub suchych płyt jastrychowych. Nie wylewamy tu ani grama wody i betonu.</p>'
        },
        "result": {
            barHtml: '<span>Efekt: Komfort cieplny z pompą ciepła</span><span>Nowe obciążenie stropu: <strong style="color:#0f766e;">15 kg/m²</strong></span>',
            svg: '<svg width="300" height="150" viewBox="0 0 300 150" fill="none" stroke="currentColor"><rect x="20" y="110" width="260" height="20" fill="#d97706" stroke="#92400e" stroke-width="2"/><rect x="20" y="90" width="260" height="20" fill="#e2e8f0" stroke="none"/><path d="M40 95 L260 95" stroke="#fcd34d" stroke-width="4"/><circle cx="80" cy="95" r="4" fill="#dc2626" stroke="none"/><circle cx="150" cy="95" r="4" fill="#dc2626" stroke="none"/><circle cx="220" cy="95" r="4" fill="#dc2626" stroke="none"/><rect x="20" y="80" width="260" height="10" fill="#fef3c7" stroke="#b45309" stroke-width="1"/><path d="M80 70 L80 30 M150 70 L150 30 M220 70 L220 30" stroke="#f59e0b" stroke-width="3" stroke-dasharray="4 4" class="anim-crack"/><text x="150" y="20" font-size="12" fill="#d97706" stroke="none" text-anchor="middle" font-weight="bold">Błyskawiczne oddawanie ciepła</text></svg>',
            title: "Uratowany strop i błyskawiczna reakcja",
            text: '<p>Decyzja o wdrożeniu meandru w systemie suchym pozwoliła na zredukowanie ciężaru instalacji z niszczących 150 kg do <span class="rk-tech-pill">zaledwie 15 kg na metr kwadratowy</span>. Strop drewniany z lat 70. odzyskał statyczną stabilność, a całą inwestycję można było zrealizować bez naruszania konstrukcji budynku.</p><p>Co więcej, bark grubej warstwy betonu całkowicie wyeliminował <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładność cieplną</a>. Posadzka nagrzewa się w kilkadziesiąt minut, a nie w kilkanaście godzin. Dzięki temu <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-nadaje-sie-do-drewnianego-stropu/">podłogówka na drewnianym stropie</a> u Pana Tomasza stała się systemem wysoce responsywnym, gotowym do precyzyjnej i oszczędnej współpracy z jego nową pompą ciepła.</p>'
        }
    };

    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Zarządzanie stanami zakładek
            btns.forEach(function(b) { b.classList.remove('active'); });
            this.classList.add('active');

            var phase = this.getAttribute('data-phase');
            var data = caseData[phase];

            // Wstrzyknięcie danych (bez instrukcji &&)
            if (data !== undefined) {
                // Restart CSS fade-in
                contentBox.classList.remove('fade-in-content');
                void contentBox.offsetWidth; // Wymuszenie reflow w przeglądarce
                contentBox.classList.add('fade-in-content');

                // Aktualizacja drzewa DOM
                dataBar.innerHTML = data.barHtml;
                svgBox.innerHTML = data.svg;
                textBox.innerHTML = '<h3>' + data.title + '</h3>' + data.text;
            }
        });
    });
});
</script>



<style>
:root {
    --rk-exp-dark: #0f172a;
    --rk-exp-navy: #1e293b;
    --rk-exp-blue: #0284c7;
    --rk-exp-gold: #b45309;
    --rk-exp-gold-light: #fef3c7;
    --rk-exp-gray: #475569;
    --rk-exp-bg: #ffffff;
    --rk-exp-border: #e2e8f0;
}

.rk-exp-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-exp-bg);
    border-radius: 16px;
    box-shadow: 0 10px 30px -10px rgba(15, 23, 42, 0.15);
    border: 1px solid var(--rk-exp-border);
    border-left: 6px solid var(--rk-exp-gold);
    overflow: hidden;
}

/* Nagłówek i Profil */
.rk-exp-header-section {
    background: var(--rk-exp-light);
    padding: 40px;
    display: grid;
    grid-template-columns: 180px 1fr;
    gap: 35px;
    align-items: center;
    border-bottom: 1px solid var(--rk-exp-border);
}

.rk-exp-photo-box {
    width: 180px;
    height: 180px;
    border-radius: 50%;
    overflow: hidden;
    border: 4px solid var(--rk-exp-bg);
    box-shadow: 0 4px 15px rgba(0,0,0,0.1);
}

.rk-exp-photo-box img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.rk-exp-bio h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-exp-dark);
    margin: 0 0 10px 0;
    line-height: 1.2;
}

.rk-exp-bio p {
    font-size: 16px;
    color: var(--rk-exp-gray);
    line-height: 1.6;
    margin: 0 0 20px 0;
}

.rk-exp-socials {
    display: flex;
    gap: 15px;
}

.rk-exp-social-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    background: var(--rk-exp-navy);
    color: white;
    border-radius: 8px;
    text-decoration: none;
}

.rk-exp-social-link:hover {
    background: var(--rk-exp-blue);
}

.rk-exp-social-link svg {
    width: 20px;
    height: 20px;
}

/* Interaktywny Manifest (Brak animacji) */
.rk-exp-interactive {
    padding: 40px;
    background: var(--rk-exp-bg);
    display: grid;
    grid-template-columns: 300px 1fr;
    gap: 40px;
}

.rk-exp-rules-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.rk-exp-rule-btn {
    background: #f8fafc;
    border: 1px solid var(--rk-exp-border);
    padding: 16px 20px;
    border-radius: 8px;
    cursor: pointer;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-exp-dark);
    text-align: left;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

/* Stany bez przejść (brak animacji) */
.rk-exp-rule-btn:hover {
    background: #f1f5f9;
}

.rk-exp-rule-btn.active {
    background: var(--rk-exp-navy);
    color: white;
    border-color: var(--rk-exp-navy);
}

.rk-exp-rule-btn svg {
    width: 18px;
    height: 18px;
}

/* Obszar Tekstowy */
.rk-exp-content-area {
    background: #f8fafc;
    border-radius: 12px;
    padding: 35px;
    border: 1px dashed var(--rk-exp-border);
}

.rk-exp-content-area h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-exp-gold);
    margin: 0 0 20px 0;
}

.rk-exp-content-area p {
    font-size: 16px;
    line-height: 1.8;
    color: var(--rk-exp-dark);
    margin: 0 0 15px 0;
}

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

.rk-exp-content-area a:hover {
    color: var(--rk-exp-navy);
}

.rk-quote-mark {
    font-size: 60px;
    color: var(--rk-exp-gold-light);
    line-height: 0;
    display: block;
    margin-bottom: 20px;
    font-family: Georgia, serif;
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-exp-header-section { grid-template-columns: 1fr; text-align: center; justify-items: center; padding: 30px 20px; }
    .rk-exp-socials { justify-content: center; }
    .rk-exp-interactive { grid-template-columns: 1fr; padding: 25px 20px; gap: 25px; }
    .rk-exp-content-area { padding: 25px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#article-ekspert",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/"
    },
    "headline": "Okiem eksperta: Robert Kucharski o projektowaniu instalacji meandrowych",
    "description": "Zestawienie autorskich zasad inżynierskich dotyczących unikania krytycznych wad wodnego ogrzewania podłogowego. Złote zasady samodzielnego montażu.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-10",
    "dateModified": "2026-07-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#dataset-ekspert",
    "name": "Eksperckie wytyczne instalacyjne: Weryfikacja błędów montażowych",
    "description": "Zbiór żelaznych reguł hydraulicznych zabezpieczających inwestora przed kosztownymi poprawkami przy realizacji układów meandrowych i doborze automatyki.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wady wodnego ogrzewania podłogowego",
      "samodzielny montaż ogrzewania podłogowego",
      "sterowniki do ogrzewania podłogowego",
      "projekt ogrzewania podłogowego z głowy vs z obliczeniami",
      "opinia eksperta hvac",
      "robert kucharski projekt ogrzewania"
    ],
    "measurementTechnique": "Weryfikacja najczęściej popełnianych błędów wykonawczych w odniesieniu do obliczeń inżynierskich i normatywów budowlanych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zasada 1: Obliczenia zastępują zgadywanie. Różnica między projektem OZC a intuicją to tysiące złotych w rachunkach.",
        "Zasada 2: Automatyka to wtórny dodatek. Bez poprawnie rozplanowanego meandru, żaden sterownik nie naprawi hydrauliki.",
        "Zasada 3: Samodzielny montaż wymaga reżimu. Układanie rur bez zachowania reżimu promieni gięcia gwarantuje mikrouszkodzenia."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#webapp-ekspert",
    "name": "Interaktywny Manifest Instalatora HVAC",
    "description": "Narzędzie edukacyjne prezentujące bezpośrednie opinie i porady inżyniera Roberta Kucharskiego, ułatwiające weryfikację pracy firm wykonawczych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-exp-container" id="expert-opinion-module">
    <div class="rk-exp-header-section">
        <div class="rk-exp-photo-box">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Główny Inżynier Projekt-Ogrzewania.pl">
        </div>
        <div class="rk-exp-bio">
            <h2>Zdaniem eksperta: Robert Kucharski o układach meandrowych</h2>
            <p>CEO Projekt-Ogrzewania.pl. Posiada na swoim koncie ponad 1000 zrealizowanych projektów instalacji płaszczyznowych. Walczy z patologiami w branży instalacyjnej, promując twarde obliczenia inżynierskie zamiast wykonawstwa „na oko”.</p>
            <div class="rk-exp-socials">
                <a href="https://www.facebook.com/projektogrzewaniapl/" target="_blank" rel="noopener noreferrer" class="rk-exp-social-link" aria-label="Facebook">
                    <svg viewBox="0 0 24 24" fill="currentColor"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path></svg>
                </a>
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer" class="rk-exp-social-link" aria-label="LinkedIn">
                    <svg viewBox="0 0 24 24" fill="currentColor"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle></svg>
                </a>
                <a href="https://x.com/Projekt_HVAC" target="_blank" rel="noopener noreferrer" class="rk-exp-social-link" aria-label="X Twitter">
                    <svg viewBox="0 0 24 24" fill="currentColor"><path d="M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z"></path></svg>
                </a>
            </div>
        </div>
    </div>

    <div class="rk-exp-interactive">
        <div class="rk-exp-rules-list" id="expertTabs">
            <button class="rk-exp-rule-btn active" data-rule="design">
                Złudzenie oszczędności na projekcie
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"></polyline></svg>
            </button>
            <button class="rk-exp-rule-btn" data-rule="diy">
                Ryzyko samodzielnego układania
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"></polyline></svg>
            </button>
            <button class="rk-exp-rule-btn" data-rule="auto">
                Mit magicznej automatyki
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"></polyline></svg>
            </button>
        </div>

        <div class="rk-exp-content-area">
            <span class="rk-quote-mark">&#8222;</span>
            <h3 id="expertTitle">Intuicja instalatora nie zastąpi kalkulatora</h3>
            <div id="expertText">
                <p>Jako inżynier widziałem setki instalacji robionych &#8222;na wyczucie&#8221;. Prawda jest brutalna: <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-glowy-vs-projekt-z-obliczeniami-ile-mozesz-stracic-na-bledach/">projekt ogrzewania podłogowego z głowy vs z obliczeniami</a> to różnica między komfortem a finansową katastrofą. Meander nie wybacza błędów w długości pętli. Jeśli instalator układając rury nie uwzględni precyzyjnych strat ciśnienia, zapłacisz za przewymiarowaną pompę ciepła, a i tak część pokoju będzie zimna.</p>
                <p>Nigdy nie oszczędzaj na audycie OZC, bo ta rzekoma &#8222;oszczędność&#8221; odbije się czkawką już podczas pierwszego sezonu grzewczego. Twarde dane projektowe to jedyna polisa ubezpieczeniowa, jaką posiadasz przed zalaniem posadzki betonem.</p>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btns = document.querySelectorAll('.rk-exp-rule-btn');
    var expTitle = document.getElementById('expertTitle');
    var expText = document.getElementById('expertText');

    var ruleData = {
        "design": {
            title: "Intuicja instalatora nie zastąpi kalkulatora",
            html: '<p>Jako inżynier widziałem setki instalacji robionych "na wyczucie". Prawda jest brutalna: <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-glowy-vs-projekt-z-obliczeniami-ile-mozesz-stracic-na-bledach/">projekt ogrzewania podłogowego z głowy vs z obliczeniami</a> to różnica między komfortem a finansową katastrofą. Meander nie wybacza błędów w długości pętli. Jeśli instalator układając rury nie uwzględni precyzyjnych strat ciśnienia, zapłacisz za przewymiarowaną pompę ciepła, a i tak część pokoju będzie zimna.</p><p>Nigdy nie oszczędzaj na audycie OZC, bo ta rzekoma "oszczędność" odbije się czkawką już podczas pierwszego sezonu grzewczego. Twarde dane projektowe to jedyna polisa ubezpieczeniowa, jaką posiadasz przed zalaniem posadzki betonem.</p>'
        },
        "diy": {
            title: "Meander nie wybacza zagiętych rur na kolanie",
            html: '<p>Często otrzymuję pytania, czy <a href="https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/">samodzielny montaż ogrzewania podłogowego</a> ma sens. Owszem, można to zrobić, jeśli masz wiedzę. Ale pamiętaj: <a href="https://projekt-ogrzewania.pl/wady-wodnego-ogrzewania-podlogowego-na-co-zwrocic-uwage-przed-instalacja/">wady wodnego ogrzewania podłogowego</a> ujawniają się dopiero po latach. Głównym błędem "złotych rączek" przy układzie meandrowym jest łamanie struktury aluminium w rurach PEX podczas wymuszania zbyt wąskich promieni gięcia przy oknach.</p><p>Jeśli decydujesz się na montaż własnymi rękami, absolutnie nie pomijaj ciśnieniowej próby szczelności z protokołem. To Twoja jedyna gwarancja, że zgięty przed chwilą nawrót meandru nie będzie puszczał wody pod jastrychem.</p>'
        },
        "auto": {
            title: "Sterownik nie naprawi zepsutej hydrauliki",
            html: '<p>Inwestorzy często pytają mnie, <a href="https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/">czy warto montować sterowniki do ogrzewania podłogowego</a>, mając nadzieję, że droga elektronika wyrówna niedociągnięcia instalacyjne. To najdroższy mit w tej branży. Żaden, nawet najbardziej zaawansowany siłownik termoelektryczny na rozdzielaczu nie przepchnie ciepłej wody przez zbyt długą, źle zrotametrowaną pętlę meandrową.</p><p>Automatyka strefowa to wspaniały dodatek podnoszący komfort i oszczędności, ale tylko i wyłącznie w sytuacji, gdy fundament – czyli rury, rozstawy i wyliczone opory hydrauliczne – jest wykonany bezbłędnie. Zaczynaj od inżynierii, kończ na gadżetach.</p>'
        }
    };

    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Zmiana klas przycisków
            btns.forEach(function(b) { b.classList.remove('active'); });
            this.classList.add('active');

            var target = this.getAttribute('data-rule');
            var data = ruleData[target];

            // Bezpieczne wstrzyknięcie zawartości bez operatorów && / ||
            if (data !== undefined) {
                if (data !== null) {
                    // Natychmiastowa podmiana tekstu (brak animacji CSS)
                    expTitle.innerHTML = data.title;
                    expText.innerHTML = data.html;
                }
            }
        });
    });
});
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-blue: #0284c7;
    --rk-faq-blue-light: #f0f9ff;
    --rk-faq-accent: #f59e0b;
    --rk-faq-bg: #ffffff;
    --rk-faq-border: #e2e8f0;
    --rk-faq-text: #475569;
    --rk-faq-text-dark: #1e293b;
}

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

/* Nagłówek FAQ */
.rk-faq-header {
    background: linear-gradient(to right, var(--rk-faq-dark), #1e293b);
    padding: 35px 40px;
    color: white;
    display: flex;
    align-items: center;
    gap: 20px;
}

.rk-faq-header-icon {
    background: rgba(255, 255, 255, 0.1);
    padding: 15px;
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-faq-header-content h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 5px 0;
    color: white;
}

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

/* Sekcja Akordeonu */
.rk-faq-body {
    padding: 30px 40px;
    background: #f8fafc;
}

.rk-accordion-item {
    background: white;
    border: 1px solid var(--rk-faq-border);
    border-radius: 12px;
    margin-bottom: 15px;
    transition: all 0.3s ease;
    box-shadow: 0 2px 4px rgba(0,0,0,0.01);
}

.rk-accordion-item:hover {
    border-color: #bae6fd;
    box-shadow: 0 4px 12px rgba(2, 132, 199, 0.05);
}

.rk-accordion-item.active {
    border-color: var(--rk-faq-blue);
    box-shadow: 0 4px 15px rgba(2, 132, 199, 0.1);
}

.rk-accordion-btn {
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    padding: 20px 25px;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 15px;
}

.rk-accordion-btn h3 {
    font-size: 17px;
    font-weight: 800;
    color: var(--rk-faq-text-dark);
    margin: 0;
    line-height: 1.4;
    transition: color 0.3s;
}

.rk-accordion-item.active .rk-accordion-btn h3 {
    color: var(--rk-faq-blue);
}

/* Ikona SVG Plusa/Minusa */
.rk-faq-icon {
    width: 24px;
    height: 24px;
    flex-shrink: 0;
    position: relative;
    color: var(--rk-faq-blue);
}

.rk-faq-icon svg {
    position: absolute;
    top: 0;
    left: 0;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-icon-plus { opacity: 1; transform: rotate(0deg); }
.rk-icon-minus { opacity: 0; transform: rotate(-90deg); }

.rk-accordion-item.active .rk-icon-plus { opacity: 0; transform: rotate(90deg); }
.rk-accordion-item.active .rk-icon-minus { opacity: 1; transform: rotate(0deg); }

/* Odpowiedź (Treść) */
.rk-accordion-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

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

.rk-accordion-inner a {
    color: var(--rk-faq-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(2, 132, 199, 0.2);
    transition: all 0.2s;
}

.rk-accordion-inner a:hover {
    border-bottom-color: var(--rk-faq-blue);
    background: var(--rk-faq-blue-light);
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-faq-header { flex-direction: column; text-align: center; padding: 30px 20px; }
    .rk-faq-body { padding: 20px; }
    .rk-accordion-btn { padding: 15px 20px; }
    .rk-accordion-btn h3 { font-size: 15px; }
    .rk-accordion-inner { padding: 0 20px 20px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania dotyczące układu meandrowego",
    "description": "Techniczne kompendium wiedzy odpowiadające na pytania inwestorów dotyczące układu meandrowego, kosztów robocizny, doboru wylewki oraz zasilania z rozdzielacza.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-10",
    "dateModified": "2026-07-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czym różni się układ meandrowy od ślimakowego w ogrzewaniu podłogowego?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Układ meandrowy prowadzi rury równolegle w formie węża, co generuje liniowy spadek temperatury czynnika i wyższe opory hydrauliczne. Układ ślimakowy prowadzi rury spiralnie (zasilanie obok powrotu), co zapewnia w pełni równomierny rozkład temperatur na całej powierzchni podłogi."
        }
      },
      {
        "@type": "Question",
        "name": "Jaki jest maksymalny koszt robocizny za ułożenie meandru podłogówki?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Średni koszt samej robocizny waha się w granicach 25 – 35 PLN/m², w zależności od stopnia skomplikowania architektury pomieszczeń. Do tej kwoty należy doliczyć koszt materiałów instalacyjnych oraz montażu szafki rozdzielacza."
        }
      },
      {
        "@type": "Question",
        "name": "Czy w układzie meandrowym można stosować panele podłogowe?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, pod warunkiem że panele posiadają atest producenta potwierdzający opór termiczny R ≤ 0,15 m²K/W dla całego systemu posadzkowego. Ze względu na gradient temperatur w meandrze, zaleca się stosowanie paneli montowanych na klej, co poprawia transfer ciepła."
        }
      },
      {
        "@type": "Question",
        "name": "Jaka jest optymalna grubość wylewki betonowej nad rurą meandrową?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Optymalna grubość warstwy jastrychu betonowego nad zewnętrzną ścianką rury grzewczej wynosi 45 – 50 mm (całkowita grubość wylewki to ok. 65 mm). Dla jastrychów anhydrytowych, dzięki wyższej wytrzymałości na zginanie, grubość nad rurą można zmniejszyć do 35 mm."
        }
      },
      {
        "@type": "Question",
        "name": "Ile pętli meandrowych można podłączyć pod jeden rozdzielacz?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Standardowe rozdzielacze obsługują od 2 do 12 pętli (sekcji). Maksymalna liczba pętli zależy od wydajności pompy obiegowej oraz średnicy kolektora głównego rozdzielacza (standard to 1 cal), który przy pełnym obciążeniu nie powinien generować prędkości przepływu większej niż 0,4 m/s."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#dataset-faq",
    "name": "Kluczowe Parametry Wykonawcze Układu Meandrowego",
    "description": "Zbiór danych technicznych obejmujący ceny robocizny, limity grubości jastrychu oraz maksymalną dopuszczalną ilość pętli na jednym rozdzielaczu mosiężnym lub INOX.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "cena robocizny podłogówki m2",
      "grubość wylewki na podłogówkę",
      "maksymalna ilość pętli rozdzielacza",
      "panele na ogrzewanie podłogowe opór",
      "różnica meander a ślimak"
    ],
    "measurementTechnique": "Dane oparte na normach PN-EN 1264, charakterystykach pomp obiegowych oraz uśrednionych stawkach instalatorskich na rok 2026.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Robocizna: 25 - 35 PLN/m2",
        "Opór cieplny paneli: max 0,15 m2K/W",
        "Wylewka betonowa nad rurą: 45 - 50 mm",
        "Maksymalna ilość pętli: 12 na rozdzielacz 1 cal"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#webapp-faq",
    "name": "Interaktywna Baza Wiedzy FAQ",
    "description": "Dynamiczny komponent akordeonowy umożliwiający inwestorom szybkie przeglądanie najważniejszych pytań technicznych bez konieczności przeładowywania strony.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-faq-container" id="faq-meander">
    <div class="rk-faq-header">
        <div class="rk-faq-header-icon">
            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <circle cx="12" cy="12" r="10"></circle>
                <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
                <line x1="12" y1="17" x2="12.01" y2="17"></line>
            </svg>
        </div>
        <div class="rk-faq-header-content">
            <h2>FAQ – Najczęściej zadawane pytania dotyczące układu meandrowego</h2>
            <p>Konkretne odpowiedzi na pytania, które decydują o komforcie i kosztach eksploatacji Twojego domu.</p>
        </div>
    </div>

    <div class="rk-faq-body" id="rkFaqWrapper">
        
        <div class="rk-accordion-item">
            <button class="rk-accordion-btn" aria-expanded="false">
                <h3>Czym różni się układ meandrowy od ślimakowego w ogrzewaniu podłogowym?</h3>
                <div class="rk-faq-icon">
                    <svg class="rk-icon-plus" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                    <svg class="rk-icon-minus" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Układ meandrowy prowadzi rury równolegle w formie węża, co generuje liniowy spadek temperatury czynnika i wyższe opory hydrauliczne. <a href="https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/">Układ ślimakowy</a> prowadzi rury spiralnie (zasilanie obok powrotu), co zapewnia w pełni równomierny rozkład temperatur na całej powierzchni podłogi.
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn" aria-expanded="false">
                <h3>Jaki jest maksymalny koszt robocizny za ułożenie meandru podłogówki?</h3>
                <div class="rk-faq-icon">
                    <svg class="rk-icon-plus" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                    <svg class="rk-icon-minus" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Średni <a href="https://projekt-ogrzewania.pl/podlogowka-cena-za-m%c2%b2-robocizny/">koszt samej robocizny</a> waha się w granicach <strong>25 – 35 PLN/m²</strong>, w zależności od stopnia skomplikowania architektury pomieszczeń. Do tej kwoty należy doliczyć koszt materiałów instalacyjnych oraz montażu szafki rozdzielacza.
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn" aria-expanded="false">
                <h3>Czy w układzie meandrowym można stosować panele podłogowe?</h3>
                <div class="rk-faq-icon">
                    <svg class="rk-icon-plus" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                    <svg class="rk-icon-minus" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Tak, pod warunkiem że panele posiadają atest producenta potwierdzający opór termiczny <strong>R ≤ 0,15 m²K/W</strong> dla całego systemu posadzkowego. Ze względu na gradient temperatur w meandrze, zaleca się stosowanie <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/">paneli montowanych na klej</a>, co drastycznie poprawia transfer ciepła.
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn" aria-expanded="false">
                <h3>Jaka jest optymalna grubość wylewki betonowej nad rurą meandrową?</h3>
                <div class="rk-faq-icon">
                    <svg class="rk-icon-plus" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                    <svg class="rk-icon-minus" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Optymalna grubość warstwy <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">jastrychu betonowego</a> nad zewnętrzną ścianką rury grzewczej wynosi <strong>45 – 50 mm</strong> (całkowita grubość wylewki to ok. 65 mm). Dla jastrychów anhydrytowych, dzięki wyższej wytrzymałości na zginanie, grubość nad rurą można zmniejszyć do 35 mm.
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn" aria-expanded="false">
                <h3>Ile pętli meandrowych można podłączyć pod jeden rozdzielacz?</h3>
                <div class="rk-faq-icon">
                    <svg class="rk-icon-plus" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                    <svg class="rk-icon-minus" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Standardowe <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacze do podłogówki</a> obsługują od 2 do 12 pętli (sekcji). Maksymalna liczba pętli zależy od wydajności <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompy obiegowej</a> oraz średnicy kolektora głównego rozdzielacza (standard to 1 cal), który przy pełnym obciążeniu nie powinien generować prędkości przepływu większej niż 0,4 m/s.
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var accBtns = document.querySelectorAll('.rk-accordion-btn');

    accBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            var item = this.parentElement;
            var content = this.nextElementSibling;
            
            // Check if clicked item is currently active
            var isActive = item.classList.contains('active');

            // Close all items
            var allItems = document.querySelectorAll('.rk-accordion-item');
            allItems.forEach(function(el) {
                el.classList.remove('active');
                var elBtn = el.querySelector('.rk-accordion-btn');
                if (elBtn) {
                    elBtn.setAttribute('aria-expanded', 'false');
                }
                var elContent = el.querySelector('.rk-accordion-content');
                if (elContent) {
                    elContent.style.maxHeight = null;
                }
            });

            // If it wasn't active, open it (safe JS logic)
            if (isActive === false) {
                item.classList.add('active');
                this.setAttribute('aria-expanded', 'true');
                content.style.maxHeight = content.scrollHeight + "px";
            }
        });
    });
});
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-navy: #1e293b;
    --rk-dl-blue: #0284c7;
    --rk-dl-blue-light: #f0f9ff;
    --rk-dl-gray: #475569;
    --rk-dl-gray-light: #f1f5f9;
    --rk-dl-bg: #ffffff;
    --rk-dl-border: #e2e8f0;
}

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

/* Header */
.rk-dl-header {
    background: var(--rk-dl-navy);
    padding: 35px 40px;
    color: white;
    border-bottom: 4px solid var(--rk-dl-blue);
}

.rk-dl-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 10px 0;
    color: white;
    display: flex;
    align-items: center;
    gap: 12px;
}

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

/* Interfejs 2-kolumnowy (Desktop) */
.rk-dl-body {
    padding: 40px;
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: 40px;
    background: var(--rk-dl-bg);
    align-items: center;
}

/* Miniatura Infografiki */
.rk-dl-thumb-wrapper {
    background: var(--rk-dl-gray-light);
    border: 1px solid var(--rk-dl-border);
    border-radius: 12px;
    padding: 15px;
    position: relative;
    cursor: pointer;
}

.rk-dl-thumb-wrapper img {
    width: 100%;
    height: auto;
    border-radius: 8px;
    display: block;
    border: 1px solid var(--rk-dl-border);
}

.rk-dl-zoom-hint {
    position: absolute;
    bottom: 25px;
    right: 25px;
    background: var(--rk-dl-dark);
    color: white;
    padding: 8px 12px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 800;
    display: flex;
    align-items: center;
    gap: 6px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.2);
}

.rk-dl-zoom-hint svg {
    width: 16px;
    height: 16px;
}

/* Akcje i Opis */
.rk-dl-actions-box h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-dl-dark);
    margin: 0 0 15px 0;
}

.rk-dl-actions-box p {
    font-size: 15px;
    color: var(--rk-dl-gray);
    line-height: 1.7;
    margin: 0 0 25px 0;
}

.rk-dl-buttons {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    font-size: 16px;
    font-weight: 800;
    padding: 18px 24px;
    border-radius: 10px;
    text-decoration: none;
    border: 2px solid transparent;
    cursor: pointer;
}

/* Brak animacji / przejść */
.rk-btn-primary {
    background: var(--rk-dl-blue);
    color: white;
}

.rk-btn-primary:hover {
    background: #0369a1;
}

.rk-btn-secondary {
    background: var(--rk-dl-gray-light);
    color: var(--rk-dl-dark);
    border-color: var(--rk-dl-border);
}

.rk-btn-secondary:hover {
    background: #e2e8f0;
    border-color: #cbd5e1;
}

.rk-btn svg {
    width: 20px;
    height: 20px;
}

/* Nota Prawna / Copyright */
.rk-dl-footer {
    background: var(--rk-dl-gray-light);
    padding: 20px 40px;
    border-top: 1px solid var(--rk-dl-border);
    font-size: 13px;
    line-height: 1.6;
    color: var(--rk-dl-gray);
    text-align: center;
}

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

/* Modal do podglądu (Brak animacji, pojawia się natychmiast) */
.rk-modal {
    display: none;
    position: fixed;
    z-index: 99999;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(15, 23, 42, 0.95);
    align-items: center;
    justify-content: center;
    padding: 20px;
}

.rk-modal-content {
    max-width: 90vw;
    max-height: 90vh;
    border-radius: 8px;
    border: 2px solid var(--rk-dl-gray);
}

.rk-modal-close {
    position: absolute;
    top: 20px;
    right: 30px;
    color: white;
    font-size: 40px;
    font-weight: bold;
    cursor: pointer;
    line-height: 1;
}

.rk-modal-close:hover {
    color: var(--rk-dl-blue);
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-dl-header { padding: 30px 20px; }
    .rk-dl-body { grid-template-columns: 1fr; padding: 25px 20px; gap: 30px; }
    .rk-dl-footer { padding: 20px; }
    .rk-btn { width: 100%; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#article-infografika",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/"
    },
    "headline": "Kompendium wiedzy: Pobierz infografikę techniczną instalacji meandrowej",
    "description": "Profesjonalna infografika w formacie PDF i WebP podsumowująca 8 najważniejszych kroków i parametrów dla instalacji ogrzewania podłogowego w układzie meandrowym.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2025/05/Infografika-Instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-10",
    "dateModified": "2026-07-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#dataset-infografika",
    "name": "Infografika techniczna: Instalacja ogrzewania podłogowego w układzie meandrowym",
    "description": "Ustrukturyzowany zbiór wytycznych projektowych obejmujący m.in. rozstawy rur, długości pętli, temperatury zasilania oraz najczęstsze błędy wykonawcze.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika podłogówka meander",
      "schemat układu meandrowego pdf",
      "pobierz schemat podłogówki",
      "robert kucharski materiały techniczne",
      "parametry instalacji podłogowej pdf",
      "instrukcja montażu ogrzewania płaszczyznowego"
    ],
    "measurementTechnique": "Ekstrakcja kluczowych danych liczbowych (np. rozstaw 10-20 cm, pętla max 80-100 m) do zwięzłej formy graficznej i dokumentu PDF.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Format pliku: PDF (Wysoka rozdzielczość do druku).",
        "Format pliku: WebP (Optymalizacja cyfrowa).",
        "Zawartość: 8 kluczowych bloków wiedzy inżynierskiej, parametry instalacji, zestawienie korzyści i najczęstszych błędów."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#webapp-repozytorium",
    "name": "Interaktywne Repozytorium Materiałów Inżynierskich",
    "description": "Aplikacyjny moduł służący do bezpiecznego podglądu bezpośredniego oraz pobierania autorskich opracowań inżynierskich w formatach bezstratnych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-dl-container" id="engineering-materials">
    <div class="rk-dl-header">
        <h2>
            <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="12" y1="18" x2="12" y2="12"></line><line x1="9" y1="15" x2="12" y2="18"></line><line x1="15" y1="15" x2="12" y2="18"></line></svg>
            Materiały dla Inwestora i Wykonawcy
        </h2>
        <p>Zabrałeś z tego artykułu mnóstwo wiedzy. Pobierz teraz techniczną infografikę, wydrukuj ją i zabierz na budowę, aby kontrolować poprawność wykonywanych prac instalacyjnych.</p>
    </div>

    <div class="rk-dl-body">
        
        <div class="rk-dl-thumb-wrapper" id="openImageBtn">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2025/05/Infografika-Instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym.webp" alt="Infografika - Instalacja ogrzewania podłogowego w układzie meandrowym">
            <div class="rk-dl-zoom-hint">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="11" y1="8" x2="11" y2="14"></line><line x1="8" y1="11" x2="14" y2="11"></line></svg>
                Powiększ
            </div>
        </div>

        <div class="rk-dl-actions-box">
            <h3>Techniczne podsumowanie na 1 stronie</h3>
            <p>Zestawienie parametrów brzegowych, twardych danych dotyczących długości pętli, rozstawów oraz krytycznych błędów. Plik PDF został zoptymalizowany do bezstratnego wydruku w formacie A4.</p>
            
            <div class="rk-dl-buttons">
                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2025/05/Infografika-Instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym.pdf" target="_blank" rel="noopener noreferrer" class="rk-btn rk-btn-primary">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
                    Pobierz dokument PDF
                </a>
                <button class="rk-btn rk-btn-secondary" id="viewImageBtn">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle></svg>
                    Wyświetl pełną grafikę
                </button>
            </div>
        </div>

    </div>

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

<div id="imageModal" class="rk-modal">
    <span class="rk-modal-close" id="closeModalBtn">&times;</span>
    <img decoding="async" class="rk-modal-content" src="https://projekt-ogrzewania.pl/wp-content/uploads/2025/05/Infografika-Instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym.webp" alt="Pełny podgląd infografiki meander">
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var modal = document.getElementById("imageModal");
    var openBtn1 = document.getElementById("openImageBtn");
    var openBtn2 = document.getElementById("viewImageBtn");
    var closeBtn = document.getElementById("closeModalBtn");

    function openModal() {
        modal.style.display = "flex";
    }

    function closeModal() {
        modal.style.display = "none";
    }

    // Podpięcie zdarzeń
    openBtn1.addEventListener("click", openModal);
    openBtn2.addEventListener("click", openModal);
    closeBtn.addEventListener("click", closeModal);

    // Zamknięcie modala po kliknięciu w czarne tło (bezpieczny JS bez znaków || oraz &&)
    modal.addEventListener("click", function(event) {
        if (event.target === modal) {
            closeModal();
        }
    });
});
</script>



<style>
:root {
    --rk-end-dark: #0f172a;
    --rk-end-blue: #0284c7;
    --rk-end-blue-light: #e0f2fe;
    --rk-end-green: #059669;
    --rk-end-green-bg: #d1fae5;
    --rk-end-red: #dc2626;
    --rk-end-bg: #ffffff;
    --rk-end-border: #e2e8f0;
    --rk-end-text: #334155;
}

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

/* Header */
.rk-end-header {
    background: var(--rk-end-dark);
    padding: 40px;
    color: white;
    text-align: center;
    border-bottom: 4px solid var(--rk-end-blue);
}

.rk-end-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    color: white;
}

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

/* Interactive Section */
.rk-end-interactive {
    padding: 40px;
    background: #f8fafc;
}

.rk-end-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    align-items: stretch;
}

/* Accordion Buttons */
.rk-step-list {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-step-btn {
    background: white;
    border: 2px solid var(--rk-end-border);
    padding: 20px;
    border-radius: 12px;
    cursor: pointer;
    text-align: left;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-step-btn:hover {
    border-color: #bae6fd;
    background: #f0f9ff;
}

.rk-step-btn.active {
    border-color: var(--rk-end-blue);
    background: var(--rk-end-blue-light);
    box-shadow: 0 4px 12px rgba(2, 132, 199, 0.1);
}

.rk-step-num {
    background: var(--rk-end-dark);
    color: white;
    font-weight: 900;
    font-size: 18px;
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    flex-shrink: 0;
}

.rk-step-btn.active .rk-step-num {
    background: var(--rk-end-blue);
}

.rk-step-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-end-text);
    margin: 0;
}

/* Visual Result Panel */
.rk-viz-panel {
    background: white;
    border-radius: 16px;
    padding: 30px;
    border: 1px solid var(--rk-end-border);
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-viz-svg-container {
    width: 120px;
    height: 120px;
    margin-bottom: 20px;
}

.rk-viz-title {
    font-size: 20px;
    font-weight: 800;
    margin: 0 0 10px 0;
    color: var(--rk-end-dark);
}

.rk-viz-desc {
    font-size: 15px;
    color: #475569;
    line-height: 1.6;
    margin: 0;
}

/* Animacje SVG */
.rk-path-anim {
    stroke-dasharray: 1000;
    stroke-dashoffset: 1000;
    animation: drawPath 1.5s forwards ease-in-out;
}

@keyframes drawPath {
    to { stroke-dashoffset: 0; }
}

/* Artykuł Text */
.rk-end-text-content {
    padding: 0 40px 30px;
    background: #f8fafc;
}

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

.rk-end-text-content p {
    font-size: 16px;
    line-height: 1.8;
    color: var(--rk-end-text);
    margin: 0 0 15px 0;
}

.rk-end-text-content a {
    color: var(--rk-end-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(2, 132, 199, 0.3);
    transition: all 0.2s;
}

.rk-end-text-content a:hover {
    border-bottom-color: var(--rk-end-blue);
    background: rgba(2, 132, 199, 0.05);
}

/* Tagi */
.rk-end-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 30px;
    padding-top: 30px;
    border-top: 1px dashed var(--rk-end-border);
}

.rk-mat-tag {
    background: #e2e8f0;
    color: #475569;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 700;
    cursor: default;
    transition: background 0.2s;
}

.rk-mat-tag:hover {
    background: var(--rk-end-blue);
    color: white;
}

/* CTA */
.rk-end-cta {
    background: white;
    padding: 40px;
    text-align: center;
    border-top: 1px solid var(--rk-end-border);
}

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

.rk-end-cta p {
    font-size: 16px;
    color: #64748b;
    margin: 0 auto 25px auto;
    max-width: 600px;
}

.rk-btn-final {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-end-dark);
    color: white;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 12px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(15, 23, 42, 0.4);
    transition: all 0.3s;
    border: 2px solid transparent;
}

.rk-btn-final:hover {
    background: var(--rk-end-blue);
    transform: translateY(-4px);
    box-shadow: 0 15px 30px -5px rgba(2, 132, 199, 0.5);
}

/* Responsive */
@media (max-width: 768px) {
    .rk-end-header, .rk-end-interactive, .rk-end-text-content, .rk-end-cta { padding: 30px 20px; }
    .rk-end-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-btn-final { width: 100%; font-size: 16px; padding: 18px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/"
    },
    "headline": "Podsumowanie: Meander - Inżynieria vs Oszczędności",
    "description": "Interaktywne podsumowanie zasad montażu instalacji ogrzewania podłogowego w układzie meandrowym. Analiza limitów pętli i zrównoważenia hydraulicznego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-10",
    "dateModified": "2026-07-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#dataset-zasady",
    "name": "Parametry Krytyczne dla Układu Meandrowego",
    "description": "Dane z norm technicznych określające limity wykonawcze układu meandrowego gwarantujące bezawaryjną pracę na dekady.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna długość pętli ogrzewania podłogowego",
      "regulacja przepływu na rotametrach",
      "ciśnieniowa próba szczelności podłogówki",
      "betonowanie ogrzewania podłogowego",
      "wylewka betonowa na ogrzewanie"
    ],
    "measurementTechnique": "Weryfikacja parametrów hydraulicznych z wytycznymi EN 1264 oraz PN-EN 12831.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Reguła 1: Maksymalna długość pojedynczej pętli to 100m dla rury PEX 16mm.",
        "Reguła 2: Konieczność kalibracji przepływu masowego na rotametrach (Hydronic Balancing).",
        "Reguła 3: Obligatoryjna próba ciśnieniowa wodą (6 bar) przed zabetonowaniem rur."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/#webapp-weryfikator",
    "name": "Symulator Zasad Bezpieczeństwa Instalacji Meandrowej",
    "description": "Interaktywny panel weryfikujący poprawność wdrożenia 3 najważniejszych filarów inżynierskich przy budowie płaszczyznowego ogrzewania meandrowego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-end-container" id="meander-summary">
    <div class="rk-end-header">
        <h2>Podsumowanie: Fundament podłogówki na dekady</h2>
        <p>Inżynieria nie znosi kompromisów. Wybierz jeden z filarów bezpieczeństwa instalacji meandrowej poniżej, aby sprawdzić, co decyduje o sukcesie lub finansowej katastrofie Twojej budowy.</p>
    </div>

    <div class="rk-end-interactive">
        <div class="rk-end-grid">
            
            <div class="rk-step-list" id="ruleButtons">
                <button class="rk-step-btn active" data-rule="1">
                    <div class="rk-step-num">1</div>
                    <h4 class="rk-step-title">Limit 100 metrów pętli</h4>
                </button>
                <button class="rk-step-btn" data-rule="2">
                    <div class="rk-step-num">2</div>
                    <h4 class="rk-step-title">Kalibracja rotametrów</h4>
                </button>
                <button class="rk-step-btn" data-rule="3">
                    <div class="rk-step-num">3</div>
                    <h4 class="rk-step-title">Ciśnienie przed betonem</h4>
                </button>
            </div>

            <div class="rk-viz-panel" id="ruleVizBox">
                <div class="rk-viz-svg-container" id="svgContainer">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="width:100%; height:100%; stroke:#0284c7;">
                        <circle cx="12" cy="12" r="10" class="rk-path-anim"></circle>
                        <line x1="12" y1="8" x2="12" y2="12" class="rk-path-anim"></line>
                        <line x1="12" y1="16" x2="12.01" y2="16" class="rk-path-anim"></line>
                    </svg>
                </div>
                <h4 class="rk-viz-title" id="ruleTitle">Żelazna zasada hydrauliki</h4>
                <p class="rk-viz-desc" id="ruleDesc">
                    Przekroczenie bariery 100 metrów dla rury 16&#215;2.0 mm to wyrok dla pompy obiegowej. Wzrost oporów tarcia zablokuje przepływ masowy czynnika.
                </p>
            </div>

        </div>
    </div>

    <div class="rk-end-text-content">
        <h3>Meander: Precyzja, nie schemat</h3>
        <p>Instalacja ogrzewania podłogowego w układzie meandrowym to wysoce efektywne, inżynierskie rozwiązanie grzewcze, o ile zostanie wdrożone na podstawie precyzyjnych obliczeń hydraulicznych, a nie ogólnych schematów wykonawczych. Zdolność meandru do naturalnego koncentrowania mocy cieplnej w strefach brzegowych czyni go niezastąpionym komponentem nowoczesnego budownictwa energooszczędnego z dużymi przeszkleniami.</p>
        
        <p>Warunkiem bezwzględnym bezawaryjnej pracy przez kilkadziesiąt lat jest rygorystyczne przestrzeganie <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">limitów długości pętli</a> (maksymalnie 100 m dla rury PEX/PERT 16 mm), prawidłowe zrównoważenie przepływów masowych na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach</a> oraz bezkompromisowe wykonanie ciśnieniowej próby szczelności przed <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">etapem betonowania</a> wylewki.</p>
        
        <p>Każda próba chodzenia na skróty w tym obszarze, omijanie projektów i testów ciśnieniowych, generuje gigantyczne <a href="https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/">koszty naprawcze</a> na etapie wykończeniowym budynku (kucie gotowych płytek i jastrychu).</p>

        <div class="rk-end-tags">
            <span class="rk-mat-tag"># maksymalna długość pętli ogrzewania podłogowego</span>
            <span class="rk-mat-tag"># regulacja przepływu na rotametrach</span>
            <span class="rk-mat-tag"># układ meandrowy strefy brzegowe</span>
            <span class="rk-mat-tag"># ciśnieniowa próba szczelności podłogówki</span>
            <span class="rk-mat-tag"># ogrzewanie energooszczędne duże przeszklenia</span>
            <span class="rk-mat-tag"># koszty awarii ogrzewania podłogowego</span>
            <span class="rk-mat-tag"># hydrauliczne równoważenie instalacji</span>
            <span class="rk-mat-tag"># betonowanie ogrzewania podłogowego</span>
            <span class="rk-mat-tag"># wylewka betonowa na ogrzewanie</span>
            <span class="rk-mat-tag"># schemat układu meandrowego</span>
        </div>
    </div>

    <div class="rk-end-cta">
        <h4>Przestań tracić pieniądze na błędy wykonawców</h4>
        <p>Kucie jastrychu kosztuje dziesiątki tysięcy złotych. Dobry projekt i potężna wiedza inżynierska uchronią Cię przed najgorszym koszmarem inwestora.</p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-final">
            ODKRYJ BAZĘ WIEDZY EKSKLUZYWNEJ I ZABEZPIECZ BUDOWĘ
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-step-btn');
    const svgContainer = document.getElementById('svgContainer');
    const ruleTitle = document.getElementById('ruleTitle');
    const ruleDesc = document.getElementById('ruleDesc');

    // Baza danych widoków (Bezpieczne dane bez instrukcji warunkowych &&)
    const ruleData = {
        "1": {
            title: "Żelazna zasada hydrauliki",
            desc: "Przekroczenie bariery 100 metrów dla rury 16x2.0 mm to wyrok dla pompy obiegowej. Wzrost oporów tarcia zablokuje przepływ masowy czynnika w pętli.",
            color: "#0284c7",
            svg: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="width:100%; height:100%; stroke:#0284c7;"><path class="rk-path-anim" d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>'
        },
        "2": {
            title: "Równoważenie układu",
            desc: "Każdy obieg ma inną długość i inne straty. Przepływy na rotametrach muszą być wyliczone na bazie projektu OZC, a nie ustawione równo 'na dwójkę'.",
            color: "#eab308",
            svg: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="width:100%; height:100%; stroke:#eab308;"><circle cx="12" cy="12" r="10" class="rk-path-anim"></circle><polyline points="12 6 12 12 16 14" class="rk-path-anim"></polyline></svg>'
        },
        "3": {
            title: "Zero litości dla usterek",
            desc: "Zalewanie jastrychem betonu bez utrzymania instalacji pod 6 barowym ciśnieniem próbnym to igranie z ogniem. Nieszczelność pętli = kucie całej podłogi.",
            color: "#dc2626",
            svg: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="width:100%; height:100%; stroke:#dc2626;"><path class="rk-path-anim" d="M12 2v20"></path><path class="rk-path-anim" d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>'
        }
    };

    function updateView(ruleKey) {
        // Zabezpieczenie przed błędem
        let data = ruleData[ruleKey];
        if (data) {
            svgContainer.innerHTML = data.svg;
            ruleTitle.textContent = data.title;
            ruleDesc.textContent = data.desc;
            ruleTitle.style.color = data.color;
        }
    }

    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Reset klas aktywnych
            btns.forEach(function(b) {
                b.classList.remove('active');
            });
            
            // Dodanie klasy aktywnej
            this.classList.add('active');
            
            // Pobranie danych
            let ruleVal = this.getAttribute('data-rule');
            updateView(ruleVal);
        });
    });
});
</script>



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

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

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

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

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

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Article",
      "@id": "https://projekt-ogrzewania.pl/google-preferred-sources#article",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://projekt-ogrzewania.pl/google-preferred-sources"
      },
      "headline": "Wspieraj Projekt-Ogrzewania.pl w wynikach Google",
      "description": "Interaktywny widget umożliwiający dodanie portalu Projekt-Ogrzewania.pl do ulubionych źródeł w wyszukiwarce Google. Buduj z nami rzetelną bazę wiedzy o HVAC.",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
      "author": {
        "@type": "Person",
        "name": "Robert Kucharski",
        "url": "https://projekt-ogrzewania.pl/",
        "sameAs": [
          "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
          "https://www.facebook.com/projektogrzewaniapl/",
          "https://www.linkedin.com/in/robert-kucharski-38069b48/",
          "https://x.com/Projekt_HVAC",
          "https://remont.biz.pl/",
          "https://sobir.pl/"
        ]
      },
      "publisher": {
        "@type": "Organization",
        "name": "Projekt-Ogrzewania.pl",
        "logo": {
          "@type": "ImageObject",
          "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
        }
      },
      "datePublished": "2026-07-09",
      "dateModified": "2026-07-09"
    },
    {
      "@type": "Dataset",
      "@id": "https://projekt-ogrzewania.pl/google-preferred-sources#dataset",
      "name": "Preferowane Źródła Google - Statystyki i Interakcja",
      "description": "Zbiór danych i interaktywnych punktów styku pozwalających na ocenę preferencji czytelników dla treści technicznych HVAC.",
      "license": "https://projekt-ogrzewania.pl/",
      "creator": {
        "@type": "Person",
        "name": "Robert Kucharski"
      },
      "keywords": [
        "ulubione źródła google",
        "preferowane wyniki wyszukiwania",
        "autorytet domeny hvac",
        "zaufane portale budowlane",
        "personalizacja google search"
      ],
      "measurementTechnique": "Zliczanie interakcji z widgetem UI typu toggle oraz przekierowań do interfejsu preferencji Google Search",
      "mainEntity": "Optymalizacja zaangażowania użytkownika poprzez interaktywny widget dodawania domeny do preferencji Google."
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/google-preferred-sources#webapplication",
      "name": "Google Preferences Toggle Widget",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "All",
      "description": "Aplikacja webowa w formie widgetu symulującego przełącznik mobilny, integrująca natywne linkowanie do ustawień preferowanych źródeł Google.",
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      }
    }
  ]
}
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/">Instalacja ogrzewania podłogowego w układzie meandrowym.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Wady wodnego ogrzewania podłogowego – na co zwrócić uwagę przed instalacją?</title>
		<link>https://projekt-ogrzewania.pl/wady-wodnego-ogrzewania-podlogowego-na-co-zwrocic-uwage-przed-instalacja/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Thu, 10 Apr 2025 09:08:50 +0000</pubDate>
				<category><![CDATA[Błędy instalacyjne]]></category>
		<category><![CDATA[Budownictwo]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Ogrzewanie wodne]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradniki budowlane]]></category>
		<category><![CDATA[Systemy grzewcze]]></category>
		<category><![CDATA[Systemy ogrzewania]]></category>
		<category><![CDATA[Technologia budowlana]]></category>
		<category><![CDATA[Technologie w domu]]></category>
		<category><![CDATA[inercja termiczna]]></category>
		<category><![CDATA[izolacja domu]]></category>
		<category><![CDATA[koszty instalacji]]></category>
		<category><![CDATA[materiały podłogowe]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[podłogówka]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[ryzyko przecieków]]></category>
		<category><![CDATA[wady wodnego ogrzewania podłogowego]]></category>
		<category><![CDATA[wilgotność powietrza]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2494</guid>

					<description><![CDATA[<p>Planujesz instalację ogrzewania podłogowego w swoim domu, ale zastanawiasz się, czy to na pewno dobry wybór? W naszym artykule przybliżamy kluczowe aspekty, które warto rozważyć przed podjęciem decyzji. Dowiedz się, jakie są wady wodnego ogrzewania podłogowego, takie jak wysokie koszty, wolna reakcja na zmiany temperatury czy wpływ na wilgotność powietrza. Sprawdź, jak zminimalizować te problemy i czy podłogówka sprawdzi się w Twoim domu!</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/wady-wodnego-ogrzewania-podlogowego-na-co-zwrocic-uwage-przed-instalacja/">Wady wodnego ogrzewania podłogowego – na co zwrócić uwagę przed instalacją?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Wodne ogrzewanie podłogowe to rozwiązanie, które zdobywa coraz większą popularność w polskich domach, szczególnie w nowoczesnych budynkach. Jednak, mimo wielu zalet, takich jak równomierne rozprowadzanie ciepła czy brak widocznych grzejników, <strong>wady wodnego ogrzewania podłogowego</strong> mogą sprawić, że nie będzie to idealny wybór dla każdego. W tym artykule przyjrzymy się bliżej potencjalnym problemom związanym z tym systemem, omówimy ich wpływ na użytkowanie i podpowiemy, jak można je zminimalizować. Jeśli planujesz instalację podłogówki, warto poznać jej ograniczenia, aby podjąć świadomą decyzję.</p>



<h2 class="wp-block-heading">Czy wodne ogrzewanie podłogowe ma swoje ciemne strony?</h2>



<p class="wp-block-paragraph">Wodne ogrzewanie podłogowe jest często przedstawiane jako komfortowe i energooszczędne rozwiązanie, ale nie jest pozbawione wad. Problemy te mogą dotyczyć zarówno etapu instalacji, jak i codziennego użytkowania. Poniżej omówimy szczegółowo najważniejsze <strong>niedogodności systemu podłogowego</strong>, abyś mógł ocenić, czy jest to odpowiedni wybór dla Twojego domu.</p>



<h3 class="wp-block-heading">Wysokie koszty początkowe – dlaczego podłogówka jest droga?</h3>



<p class="wp-block-paragraph">Jedną z głównych <strong>wad wodnego <a href="https://projekt-ogrzewania.pl">ogrzewania podłogowego</a></strong> są wysokie koszty instalacji. W porównaniu do tradycyjnych grzejników, system podłogowy jest droższy o około 30%. Dla domu o powierzchni 120 m² koszt materiałów i robocizny może wynieść od 12 000 do 18 000 zł, w zależności od regionu i użytych komponentów. Do tego należy doliczyć koszt profesjonalnego projektu, który jest niezbędny, aby system działał efektywnie.</p>



<ul class="wp-block-list">
<li><strong>Koszty materiałów</strong>: Rury, rozdzielacze, maty mocujące i izolacja to podstawowe elementy, które zwiększają budżet.</li>



<li><strong>Robocizna</strong>: Instalacja wymaga specjalistycznej wiedzy i doświadczenia, co podnosi cenę.</li>



<li><strong>Dodatkowe wydatki</strong>: Profesjonalny projekt może kosztować od 500 do 1500 zł, w zależności od powierzchni.</li>
</ul>



<p class="wp-block-paragraph">Przykładem może być sytuacja, w której decydujesz się na instalację w starszym domu. Jeśli podłoga wymaga dodatkowych prac przygotowawczych, takich jak wyrównanie czy poprawa izolacji, koszty mogą wzrosnąć nawet o kilka tysięcy złotych. Aby zminimalizować wydatki, warto rozważyć zakup materiałów w sprawdzonym miejscu, takim jak <a href="https://projekt-ogrzewania.pl/sklep/" target="_blank" rel="noreferrer noopener">sklep projekt-ogrzewania.pl</a>, gdzie znajdziesz wysokiej jakości <strong>materiały do wodnego ogrzewania podłogowego</strong>.</p>



<h3 class="wp-block-heading">Koszty napraw – co, jeśli coś pójdzie nie tak?</h3>



<p class="wp-block-paragraph">Kolejnym problemem są <strong>wysokie koszty napraw</strong> w przypadku awarii. Wodne ogrzewanie podłogowe jest systemem ukrytym pod podłogą, co oznacza, że każda usterka, np. przeciek, wymaga rozbiórki posadzki. Koszt takiej naprawy może sięgać od 2000 do 5000 zł, w zależności od skali problemu i rodzaju podłogi.</p>



<ul class="wp-block-list">
<li><strong>Przykład</strong>: Jeśli po 5 latach użytkowania dojdzie do uszkodzenia rury w salonie, konieczne będzie zerwanie parkietu, naprawa rury i ponowne ułożenie podłogi.</li>



<li><strong>Rozwiązanie</strong>: Stosowanie trwałych materiałów, takich jak rury wielowarstwowe, może zmniejszyć ryzyko awarii.</li>
</ul>



<p class="wp-block-paragraph">Aby uniknąć takich sytuacji, warto zainwestować w wysokiej jakości komponenty, takie jak <a href="https://projekt-ogrzewania.pl/produkt/rura-wielowarstwowa-kisan-redart-pe-rt-al-pe/" target="_blank" rel="noreferrer noopener">rura wielowarstwowa Kisan Redart</a> (Exact match), która jest odporna na uszkodzenia i zapewnia długą żywotność systemu.</p>



<h3 class="wp-block-heading">Wolna reakcja na zmiany temperatury – problem z dynamiką.</h3>



<p class="wp-block-paragraph">Wodne ogrzewanie podłogowe ma wysoką inercję termiczną, co oznacza, że <strong>wolno reaguje na zmiany temperatury</strong>. Jeśli w ciągu dnia temperatura na zewnątrz gwałtownie spada, a Ty chcesz szybko ogrzać dom, podłogówka może potrzebować kilku godzin, aby osiągnąć pożądaną temperaturę. To sprawia, że system nie jest idealny w domach, gdzie zapotrzebowanie na ciepło zmienia się dynamicznie.</p>



<ul class="wp-block-list">
<li><strong>Przykład</strong>: Wracasz do domu po weekendowym wyjeździe w zimie i chcesz szybko ogrzać salon. Podłogówka może potrzebować 3-4 godzin, aby podnieść temperaturę z 15°C do 22°C.</li>



<li><strong>Rozwiązanie</strong>: W takich przypadkach warto rozważyć dodatkowe źródła ciepła, np. grzejniki elektryczne w kluczowych pomieszczeniach.</li>
</ul>



<p class="wp-block-paragraph">Ta cecha sprawia, że wodne ogrzewanie podłogowe najlepiej sprawdza się w domach o stabilnym zapotrzebowaniu na ciepło, takich jak dobrze izolowane budynki pasywne.</p>



<h3 class="wp-block-heading">Wpływ na wilgotność powietrza – czy podłogówka wysusza pomieszczenia?</h3>



<p class="wp-block-paragraph">Jedną z mniej oczywistych <strong>wad wodnego ogrzewania podłogowego</strong> jest jego wpływ na wilgotność powietrza w pomieszczeniach. System ten, działając na zasadzie promieniowania cieplnego, może wysuszać powietrze, co jest szczególnie problematyczne w sezonie grzewczym, gdy wilgotność i tak jest niska. Dla osób z alergiami, problemami z drogami oddechowymi czy suchą skórą może to być istotny problem.</p>



<ul class="wp-block-list">
<li><strong>Skutki niskiej wilgotności</strong>:
<ul class="wp-block-list">
<li>Podrażnienie dróg oddechowych, szczególnie u dzieci i alergików.</li>



<li>Wzrost cyrkulacji kurzu, co może nasilać objawy alergii.</li>



<li>Dyskomfort związany z suchą skórą i śluzówkami.</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph">Aby zminimalizować ten problem, warto zadbać o odpowiednią wilgotność w domu, np. za pomocą nawilżacza powietrza. Więcej informacji na ten temat znajdziesz w naszym artykule, który szczegółowo omawia, <strong><a href="https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/" target="_blank" rel="noreferrer noopener">jak ogrzewanie podłogowe wpływa na wilgotność powietrza w domu</a></strong>. W domach o słabej wentylacji problem ten może być szczególnie odczuwalny, dlatego warto rozważyć dodatkowe rozwiązania, takie jak systemy wentylacji mechanicznej.</p>



<h3 class="wp-block-heading">Wymagania dotyczące materiałów podłogowych – nie każdy materiał się sprawdzi.</h3>



<p class="wp-block-paragraph">Nie każdy materiał podłogowy dobrze współpracuje z wodnym ogrzewaniem podłogowym, co jest kolejną wadą tego systemu. <strong>Wybór odpowiedniej okładziny podłogowej</strong> ma kluczowe znaczenie dla efektywności ogrzewania. Materiały o wysokim oporze cieplnym, takie jak grube dywany czy niektóre rodzaje drewna, mogą blokować przepływ ciepła, co obniża wydajność systemu.</p>



<ul class="wp-block-list">
<li><strong>Przykłady materiałów problematycznych</strong>:
<ul class="wp-block-list">
<li>Drewno o oporze cieplnym powyżej 0,15 m²K/W, np. buk (0,18 m²K/W).</li>



<li>Grube dywany, które działają jak izolator.</li>
</ul>
</li>



<li><strong>Zalecane materiały</strong>: Płytki ceramiczne, panele winylowe lub cienkie parkiety.</li>
</ul>



<p class="wp-block-paragraph">Jeśli planujesz drewnianą podłogę, warto zapoznać się z naszym artykułem, który omawia <strong><a href="https://projekt-ogrzewania.pl/podlogi-drewniane-vs-panele-laminowane-co-wybrac-przy-ogrzewaniu-podlogowym/" target="_blank" rel="noreferrer noopener">drewniane podłogi i panele laminowane w kontekście podłogówki</a></strong>. Nieodpowiedni wybór materiału może sprawić, że system będzie mniej efektywny, a rachunki za ogrzewanie wzrosną.</p>



<h3 class="wp-block-heading">Ryzyko przecieków i zapowietrzenia – techniczne wyzwania.</h3>



<p class="wp-block-paragraph"><strong>Ryzyko przecieków</strong> to jedna z poważniejszych wad wodnego ogrzewania podłogowego. Uszkodzenie rur, np. w wyniku błędów instalacyjnych lub zużycia materiału, może prowadzić do wycieków, które są kosztowne i trudne do naprawienia. Dodatkowo, system może się zapowietrzyć, co powoduje nierównomierne ogrzewanie i obniża jego wydajność.</p>



<ul class="wp-block-list">
<li><strong>Objawy zapowietrzenia</strong>:
<ul class="wp-block-list">
<li>Zimne fragmenty podłogi w niektórych miejscach.</li>



<li>Dźwięki bulgotania w rurach.</li>
</ul>
</li>



<li><strong>Rozwiązanie</strong>: Regularne próby szczelności i stosowanie wysokiej jakości rur.</li>
</ul>



<p class="wp-block-paragraph">Przecieki są szczególnie problematyczne, ponieważ wymagają zerwania podłogi, co generuje dodatkowe koszty i dyskomfort. Dlatego warto zainwestować w trwałe komponenty i profesjonalną instalację, aby zminimalizować ryzyko takich problemów.</p>



<h3 class="wp-block-heading">Mniejsza efektywność w słabo izolowanych domach.</h3>



<p class="wp-block-paragraph">Wodne ogrzewanie podłogowe jest mniej efektywne w domach z <strong>słabą izolacją termiczną</strong>. Jeśli Twój budynek ma nieszczelne okna, słabo ocieplone ściany lub dach, ciepło będzie uciekać, a system nie zapewni odpowiedniego komfortu cieplnego. W takich przypadkach rachunki za ogrzewanie mogą być wyższe, niż się spodziewasz.</p>



<ul class="wp-block-list">
<li><strong>Przykład</strong>: W domu z lat 80., bez termomodernizacji, podłogówka może nie być w stanie utrzymać temperatury 21°C w salonie, nawet przy maksymalnej mocy.</li>



<li><strong>Rozwiązanie</strong>: Przed instalacją warto zainwestować w poprawę izolacji, np. docieplenie ścian lub wymianę okien.</li>
</ul>



<p class="wp-block-paragraph">W dobrze izolowanych domach, takich jak budynki pasywne, wodne ogrzewanie podłogowe działa znacznie lepiej, ale w starszych konstrukcjach może być niewystarczające jako jedyne źródło ciepła.</p>



<h3 class="wp-block-heading">Dyskomfort dla niektórych użytkowników – czy podłogówka jest dla wszystkich?</h3>



<p class="wp-block-paragraph">Choć ciepła podłoga jest dla wielu synonimem komfortu, dla niektórych może być <strong>źródłem dyskomfortu</strong>. W sypialniach, gdzie preferowane są niższe temperatury (np. 18-20°C), podłogówka może sprawiać wrażenie zbyt ciepłej, szczególnie jeśli nie masz możliwości precyzyjnej regulacji temperatury w każdym pomieszczeniu.</p>



<ul class="wp-block-list">
<li><strong>Przykład</strong>: Osoby, które lubią spać w chłodniejszych warunkach, mogą odczuwać dyskomfort, gdy podłoga w sypialni jest ciepła.</li>



<li><strong>Rozwiązanie</strong>: Zainstalowanie termostatów w każdym pokoju, aby dostosować temperaturę do indywidualnych potrzeb.</li>
</ul>



<p class="wp-block-paragraph">Dodatkowo, wodne ogrzewanie podłogowe może wysuszać powietrze, co może być problematyczne dla osób z alergiami lub problemami z drogami oddechowymi. W takich przypadkach warto zadbać o odpowiednią wilgotność w pomieszczeniach, np. za pomocą nawilżacza.</p>



<h3 class="wp-block-heading">Poniżej przedstawiamy tabelę z kluczowymi wadami, aby ułatwić porównanie:</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th><strong>Wada</strong></th><th><strong>Szczegóły</strong></th></tr></thead><tbody><tr><td>Wyższe koszty instalacji</td><td>Około 30% droższe niż tradycyjne systemy, DIY może zaoszczędzić 2000-5000 zł.</td></tr><tr><td>Wysokie koszty napraw</td><td>Wymaga rozbiórki podłogi, co generuje wysokie koszty.</td></tr><tr><td>Dłuższy czas instalacji</td><td>Wymaga specjalistycznego sprzętu i ekipy.</td></tr><tr><td>Wolniejsza reakcja na zmiany temperatury</td><td>Wysoka inercja termiczna, opóźnienie nawet o kilka godzin.</td></tr><tr><td>Ryzyko przegrzania</td><td>Możliwe pod dywanami lub meblami, wpływa na komfort.</td></tr><tr><td>Ograniczenia materiałowe</td><td>Niektóre drewna (np. buk, klon) mogą pękać, opór cieplny &gt;0,15 m²K/W.</td></tr><tr><td>Mniejsza skuteczność w słabo izolowanych domach</td><td>Problemy w domach z słabą izolacją lub na wyższych piętrach.</td></tr><tr><td>Problemy z integracją z systemami smart home</td><td>Może nie działać z wszystkimi zaawansowanymi systemami sterowania.</td></tr><tr><td>Dyskomfort dla niektórych użytkowników</td><td>Niekomfortowe w sypialniach, preferujących niższe temperatury.</td></tr><tr><td>Ryzyko przecieków</td><td>Uszkodzenie rur prowadzi do kosztownych napraw i uszkodzeń podłogi.</td></tr><tr><td>Wpływ na wilgotność powietrza</td><td>Może wysuszać powietrze, co jest problematyczne dla alergików.</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Jak profesjonalny projekt pomaga zminimalizować wady wodnego ogrzewania podłogowego?</h2>



<p class="wp-block-paragraph">Aby zminimalizować <strong>wady wodnego ogrzewania podłogowego</strong>, kluczowe jest wykonanie profesjonalnego projektu. Taki projekt uwzględnia specyfikę budynku, taką jak rozkład pomieszczeń, rodzaj podłóg czy zapotrzebowanie na ciepło, co pozwala uniknąć typowych błędów, takich jak zły rozstaw rur czy za długie pętle. Oferujemy <strong><a href="https://projekt-ogrzewania.pl/kategoria-produktu/projekty/">projekty ogrzewania podłogowego</a></strong>, które zapewniają optymalne działanie systemu. Co więcej, przy zakupie materiałów instalacyjnych u nich, projekt otrzymasz za darmo, co pozwala obniżyć koszty początkowe i zwiększyć efektywność instalacji.</p>



<h2 class="wp-block-heading">FAQ – Najczęściej zadawane pytania o wady wodnego ogrzewania podłogowego.</h2>



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1744274314935"><strong class="schema-faq-question"><strong>Dlaczego wodne ogrzewanie podłogowe jest droższe od tradycyjnych grzejników?</strong></strong> <p class="schema-faq-answer">Wodne ogrzewanie podłogowe jest droższe o około 30% ze względu na koszt materiałów, takich jak rury i rozdzielacze, oraz robociznę. Instalacja wymaga specjalistycznego sprzętu i ekipy, a także profesjonalnego projektu, co dodatkowo podnosi koszty.</p> </div> <div class="schema-faq-section" id="faq-question-1744274325277"><strong class="schema-faq-question"><strong>Czy wodne ogrzewanie podłogowe może wysuszać powietrze w domu?</strong></strong> <p class="schema-faq-answer">Tak, wodne ogrzewanie podłogowe może wysuszać powietrze, szczególnie w sezonie grzewczym. To problem dla osób z alergiami lub suchą skórą, ale można go zminimalizować, stosując nawilżacz powietrza.</p> </div> <div class="schema-faq-section" id="faq-question-1744274335230"><strong class="schema-faq-question"><strong>Jakie materiały podłogowe nie nadają się do podłogówki?</strong></strong> <p class="schema-faq-answer">Materiały o wysokim oporze cieplnym, takie jak grube dywany czy niektóre drewna (np. buk, klon), nie nadają się do podłogówki, ponieważ blokują przepływ ciepła i obniżają efektywność systemu.</p> </div> <div class="schema-faq-section" id="faq-question-1744274346205"><strong class="schema-faq-question"><strong>Czy wodne ogrzewanie podłogowe sprawdzi się w słabo izolowanym domu?</strong></strong> <p class="schema-faq-answer">W słabo izolowanych domach wodne ogrzewanie podłogowe jest mniej efektywne, ponieważ ciepło ucieka przez nieszczelne okna czy ściany. Warto najpierw poprawić izolację, aby system działał wydajnie.</p> </div> <div class="schema-faq-section" id="faq-question-1744274365023"><strong class="schema-faq-question"><strong>Jakie są największe techniczne wady wodnego ogrzewania podłogowego?</strong></strong> <p class="schema-faq-answer">Największe techniczne wady to ryzyko przecieków, które wymagają kosztownych napraw, oraz zapowietrzenie systemu, które powoduje nierównomierne ogrzewanie. Kluczowe jest stosowanie trwałych materiałów i profesjonalna instalacja.</p> </div> </div>



<h2 class="wp-block-heading">Podsumowanie – czy warto zdecydować się na wodne ogrzewanie podłogowe?</h2>



<p class="wp-block-paragraph">Wodne ogrzewanie podłogowe ma wiele zalet, ale jego <strong>wady</strong>, takie jak wysokie koszty, wolna reakcja na zmiany temperatury, wpływ na wilgotność powietrza czy ryzyko przecieków, mogą być istotne dla potencjalnych użytkowników. System ten najlepiej sprawdza się w dobrze izolowanych domach, gdzie można w pełni wykorzystać jego potencjał. Jeśli jednak Twój budynek ma słabą izolację, a Ty cenisz elastyczność w zarządzaniu temperaturą, warto rozważyć inne rozwiązania, takie jak grzejniki.</p>



<p class="wp-block-paragraph">Przed podjęciem decyzji o instalacji warto dokładnie przeanalizować swoje potrzeby i możliwości finansowe. Profesjonalny projekt, wysokiej jakości materiały i staranne wykonanie mogą znacząco zminimalizować wady wodnego ogrzewania podłogowego, czyniąc je komfortowym i efektywnym rozwiązaniem na lata. </p>



<figure class="wp-block-embed aligncenter is-type-wp-embed is-provider-projekt-ogrzewania wp-block-embed-projekt-ogrzewania"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="U1biyyAd7U"><a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Projekt instalacji ogrzewania podłogowego &#8211; podłogówki</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8222;Projekt instalacji ogrzewania podłogowego &#8211; podłogówki&#8221; &#8212; Projekt Ogrzewania" src="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/embed/#?secret=pwP6BAY5Bc#?secret=U1biyyAd7U" data-secret="U1biyyAd7U" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/wady-wodnego-ogrzewania-podlogowego-na-co-zwrocic-uwage-przed-instalacja/">Wady wodnego ogrzewania podłogowego – na co zwrócić uwagę przed instalacją?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Jak gęsto rozkładać podłogówkę?</title>
		<link>https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/</link>
					<comments>https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Fri, 24 Jan 2025 09:26:29 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Ekologiczne ogrzewanie]]></category>
		<category><![CDATA[Izolacja budynków]]></category>
		<category><![CDATA[Komfort cieplny w domu]]></category>
		<category><![CDATA[Koszty instalacji grzewczych]]></category>
		<category><![CDATA[Nowoczesne systemy grzewcze]]></category>
		<category><![CDATA[Ogrzewanie niskotemperaturowe]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Rozstaw rur w podłogówce]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[ekologiczne systemy grzewcze]]></category>
		<category><![CDATA[izolacja budynku]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[koszty instalacji]]></category>
		<category><![CDATA[niskotemperaturowe ogrzewanie]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[projektowanie instalacji]]></category>
		<category><![CDATA[rozstaw rur]]></category>
		<category><![CDATA[wodne ogrzewanie podłogowe]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2015</guid>

					<description><![CDATA[<p>Jak gęsto rozkładać podłogówkę? To pytanie nurtuje wielu inwestorów planujących instalację ogrzewania podłogowego. Rozstaw rur zależy od wielu czynników, takich jak typ pomieszczenia, izolacja budynku czy rodzaj posadzki. W artykule wyjaśniamy, jak dobrać optymalny rozstaw rur, aby zapewnić efektywność systemu i komfort cieplny. Dowiedz się, jakie są najczęściej stosowane rozstawy i jak wpływają one na koszty oraz wydajność ogrzewania.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/">Jak gęsto rozkładać podłogówkę?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-hero-dark: #0f172a;
    --rk-hero-darker: #020617;
    --rk-hero-brand: #ea580c; /* Ciepły, energetyczny pomarańcz */
    --rk-hero-brand-hover: #c2410c;
    --rk-hero-accent: #38bdf8; /* Zimny błękit dla kontrastu (strefy chłodu) */
    --rk-hero-text: #f8fafc;
    --rk-hero-muted: #94a3b8;
    --rk-hero-panel: #1e293b;
    --rk-hero-border: #334155;
    --rk-hero-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
}

.rk-hero-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: var(--rk-hero-dark);
    border-radius: 24px;
    box-shadow: var(--rk-hero-shadow);
    border: 1px solid var(--rk-hero-border);
    overflow: hidden;
    color: var(--rk-hero-text);
}

/* Sekcja Treściowa (Wstęp) */
.rk-hero-content {
    padding: 50px 50px 35px;
    background: linear-gradient(135deg, var(--rk-hero-darker) 0%, var(--rk-hero-dark) 100%);
    position: relative;
    border-bottom: 1px solid var(--rk-hero-border);
}

.rk-hero-content::after {
    content: '';
    position: absolute;
    top: 0; right: 0; width: 50%; height: 100%;
    background: radial-gradient(circle at top right, rgba(234, 88, 12, 0.15) 0%, transparent 60%);
    pointer-events: none;
}

.rk-hero-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(234, 88, 12, 0.2);
    color: #fdba74;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 25px;
    border: 1px solid rgba(234, 88, 12, 0.3);
}

.rk-hero-title {
    font-size: 32px;
    font-weight: 900;
    line-height: 1.25;
    margin: 0 0 25px 0;
    letter-spacing: -0.5px;
}

.rk-hero-title span {
    background: linear-gradient(to right, #fb923c, #ea580c);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
}

.rk-hero-lead {
    font-size: 17px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
}

.rk-hero-link {
    color: #fb923c;
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed rgba(251, 146, 60, 0.5);
    transition: all 0.3s ease;
}

.rk-hero-link:hover {
    color: #fdba74;
    border-bottom-style: solid;
    text-shadow: 0 0 10px rgba(234, 88, 12, 0.4);
}

/* Moduł Interaktywny: Symulator Rozstawu */
.rk-hero-interactive {
    padding: 40px 50px;
    background: var(--rk-hero-panel);
}

.rk-hero-h3 {
    font-size: 20px;
    font-weight: 800;
    margin: 0 0 30px 0;
    text-align: center;
    color: #ffffff;
}

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

/* Controls */
.rk-controls-box {
    background: rgba(15, 23, 42, 0.6);
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-hero-border);
}

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

.rk-slider-label {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-hero-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
}

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

/* Custom Range Slider */
.rk-range {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    background: #334155;
    border-radius: 4px;
    outline: none;
    margin: 20px 0;
}

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

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

/* Data Output Cards */
.rk-metrics-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    margin-top: 25px;
}

.rk-metric-card {
    background: var(--rk-hero-dark);
    padding: 15px;
    border-radius: 12px;
    text-align: center;
    border: 1px solid var(--rk-hero-border);
    transition: all 0.3s;
}

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

.rk-metric-val {
    font-size: 18px;
    font-weight: 900;
    color: #ffffff;
}

/* SVG WIZUALIZACJA */
.rk-visual-box {
    background: #000000;
    border-radius: 16px;
    padding: 20px;
    border: 2px solid var(--rk-hero-border);
    position: relative;
    overflow: hidden;
    height: 200px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-floor-svg {
    width: 100%;
    height: 100%;
    max-width: 500px;
}

/* SVG Elements */
.rk-svg-concrete { fill: #1e293b; }
.rk-svg-pipe { fill: #ef4444; stroke: #991b1b; stroke-width: 2; transition: cx 0.3s cubic-bezier(0.4, 0, 0.2, 1); }
.rk-svg-heat-wave { fill: url(#heatGradient); opacity: 0; transition: opacity 0.3s; }
.rk-svg-cold-wave { fill: url(#coldGradient); opacity: 0; transition: opacity 0.3s; }

/* Dynamic Status Alert */
.rk-status-alert {
    margin-top: 20px;
    padding: 15px 20px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 700;
    display: flex;
    align-items: center;
    gap: 12px;
    transition: all 0.3s;
}

@media (max-width: 768px) {
    .rk-hero-content, .rk-hero-interactive { padding: 30px 25px; }
    .rk-hero-title { font-size: 26px; }
    .rk-metrics-grid { grid-template-columns: 1fr; }
    .rk-visual-box { height: 160px; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/"
    },
    "headline": "Jak gęsto rozkładać podłogówkę? Inżynierski przewodnik po rozstawie rur",
    "description": "Zły rozstaw rur generuje straty finansowe i efekt zimnych stref. Poznaj twarde dane projektowe oparte na europejskich normach i dobierz gęstość pętli do pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-21",
    "dateModified": "2026-05-21"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#dataset",
    "name": "Wpływ rozstawu rur na rozkład temperatur posadzki i wydajność źródła ciepła",
    "description": "Baza danych symulacyjnych obrazująca zależność pomiędzy gęstością ułożenia rur (krok 10, 15, 20, 30 cm) a zjawiskiem zebry termicznej oraz sprawnością COP pompy ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jak gęsto rozkładać podłogówkę",
      "rozstaw rur a pompa ciepła",
      "zimne strefy podłogówki",
      "efekt zebry termicznej",
      "wydajność pompy ciepła"
    ],
    "measurementTechnique": "Symulacja rozkładu izoterm w jastrychu w zależności od gęstości pętli grzewczych oparta na PN-EN 1264.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rozstaw 10 cm: Idealny dla pomp ciepła (najwyższy COP), brak zimnych stref.",
        "Rozstaw 15 cm: Standard inżynierski dla dobrze izolowanych domów (Złoty środek).",
        "Rozstaw > 20 cm: Ryzyko zebry termicznej, drastyczny spadek sprawności systemu niskotemperaturowego."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#webapp",
    "name": "Kalkulator Wizualny: Gęstość Podłogówki a Zebra Termiczna",
    "description": "Interaktywny symulator SVG demonstrujący na żywo powstawanie stref chłodu, rozkład rur PEX oraz spadek wydajności źródła ciepła przy błędnym rozstawie.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 Range Inputs and SVG support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA INTRO
=========================================== -->
<div class="rk-hero-container" id="rk-intro-app">
    <!-- Sekcja Tekstowa -->
    <div class="rk-hero-content">
        <div class="rk-hero-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
            Inżynierski Przewodnik
        </div>
        <h2 class="rk-hero-title">Jak gęsto rozkładać podłogówkę? <span>Koniec z mitami instalatorów</span></h2>
        <p class="rk-hero-lead">
            Decydując się na montaż wodnego ogrzewania podłogowego, kluczowym pytaniem każdego inwestora jest: jak gęsto rozkładać podłogówkę, aby system działał efektywnie i oszczędnie? Zły rozstaw rur grzewczych generuje potężne <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/" class="rk-hero-link">straty finansowe</a>, niedogrzanie pomieszczeń lub uciążliwy <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/" class="rk-hero-link">efekt &#8222;zimnych stref&#8221;</a>. Prawidłowe zagęszczenie pętli to fundament, który decyduje o sprawności <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-hero-link">pompy ciepła</a> oraz komforcie termicznym domowników. W tym inżynierskim przewodniku obalam instalatorskie mity i podaję twarde dane projektowe oparte na <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/" class="rk-hero-link">europejskich normach</a>, które pozwolą Ci uniknąć kosztownych błędów wykonawczych na Twojej budowie.
        </p>
    </div>

    <!-- Sekcja Interaktywna -->
    <div class="rk-hero-interactive">
        <h3 class="rk-hero-h3">Symulator OZC: Zobacz, co się dzieje pod Twoją posadzką</h3>
        
        <div class="rk-sim-layout">
            <!-- Interfejs suwaka -->
            <div class="rk-controls-box">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Ustaw projektowany rozstaw rur</span>
                    <span class="rk-slider-value" id="rk-spacing-val">15 cm</span>
                </div>
                <input type="range" class="rk-range" id="rk-spacing-slider" min="10" max="30" step="5" value="15">
                
                <div class="rk-metrics-grid">
                    <div class="rk-metric-card" id="card-temp">
                        <div class="rk-metric-title">Wymagane Zasilanie</div>
                        <div class="rk-metric-val" id="rk-out-temp">32°C</div>
                    </div>
                    <div class="rk-metric-card" id="card-cop">
                        <div class="rk-metric-title">Wydajność COP</div>
                        <div class="rk-metric-val" id="rk-out-cop" style="color: #10b981;">Wysoka</div>
                    </div>
                    <div class="rk-metric-card" id="card-pipe">
                        <div class="rk-metric-title">Rura na m²</div>
                        <div class="rk-metric-val" id="rk-out-pipe">6.6 mb</div>
                    </div>
                </div>

                <div class="rk-status-alert" id="rk-alert-box" style="background: rgba(16, 185, 129, 0.1); color: #34d399; border: 1px solid #059669;">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    <span>Standard inżynierski. Złoty środek dla nowych budynków.</span>
                </div>
            </div>

            <!-- Wizualizacja SVG -->
            <div class="rk-visual-box">
                <svg class="rk-floor-svg" viewBox="0 0 400 120" preserveAspectRatio="xMidYMid meet">
                    <defs>
                        <!-- Gradienty emisji ciepła -->
                        <radialGradient id="heatGradient" cx="50%" cy="50%" r="50%">
                            <stop offset="0%" stop-color="#ea580c" stop-opacity="0.8"/>
                            <stop offset="100%" stop-color="#ea580c" stop-opacity="0"/>
                        </radialGradient>
                        <linearGradient id="coldGradient" x1="0%" y1="0%" x2="100%" y2="0%">
                            <stop offset="0%" stop-color="#0284c7" stop-opacity="0.5"/>
                            <stop offset="50%" stop-color="#0284c7" stop-opacity="0"/>
                            <stop offset="100%" stop-color="#0284c7" stop-opacity="0.5"/>
                        </linearGradient>
                    </defs>

                    <!-- Jastrych (Beton) -->
                    <rect x="0" y="20" width="400" height="80" class="rk-svg-concrete" rx="4"/>
                    
                    <!-- Warstwa powłoki chłodnej (widoczna przy rzadkim rozstawie) -->
                    <rect id="rk-svg-cold" x="0" y="20" width="400" height="80" class="rk-svg-cold-wave" rx="4"/>

                    <!-- Warstwa powłoki ciepłej (widoczna przy gęstym rozstawie) -->
                    <rect id="rk-svg-hot" x="0" y="20" width="400" height="80" fill="#ea580c" opacity="0.4" style="transition: opacity 0.4s;"/>

                    <!-- Pętle Rur - Dynamika X zależy od JS -->
                    <g id="rk-pipes-group">
                        <circle class="rk-svg-pipe" cx="50" cy="60" r="10" />
                        <circle class="rk-svg-pipe" cx="125" cy="60" r="10" />
                        <circle class="rk-svg-pipe" cx="200" cy="60" r="10" />
                        <circle class="rk-svg-pipe" cx="275" cy="60" r="10" />
                        <circle class="rk-svg-pipe" cx="350" cy="60" r="10" />
                    </g>
                    
                    <!-- Kafelki na górze -->
                    <path d="M 0 20 L 400 20" stroke="#64748b" stroke-width="4"/>
                    <line x1="80" y1="16" x2="80" y2="20" stroke="#64748b" stroke-width="4"/>
                    <line x1="160" y1="16" x2="160" y2="20" stroke="#64748b" stroke-width="4"/>
                    <line x1="240" y1="16" x2="240" y2="20" stroke="#64748b" stroke-width="4"/>
                    <line x1="320" y1="16" x2="320" y2="20" stroke="#64748b" stroke-width="4"/>
                </svg>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie domeny
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-intro-app').innerHTML = `
            <div style="padding:40px; text-align:center; background:#0f172a; border-radius:20px; border: 2px solid #ef4444; color:#f8fafc; font-family:sans-serif;">
                <div style="font-size: 40px; margin-bottom: 15px;">🛑</div>
                <div style="color:#ef4444; font-size:20px; font-weight:900; text-transform:uppercase; margin-bottom:10px;">Blokada Antypiracka</div>
                <div style="font-size:15px; color:#cbd5e1; line-height:1.6;">Kod symulatora przestrzennego oraz struktury JSON-LD należy do Projekt-Ogrzewania.pl. Wykryto użycie na nieautoryzowanej domenie.</div>
            </div>
        `;
        return;
    }

    // 2. Logika Symulatora
    const slider = document.getElementById('rk-spacing-slider');
    const valText = document.getElementById('rk-spacing-val');
    
    // SVG Elements
    const pipes = document.querySelectorAll('.rk-svg-pipe');
    const layerCold = document.getElementById('rk-svg-cold');
    const layerHot = document.getElementById('rk-svg-hot');
    
    // Output Elements
    const outTemp = document.getElementById('rk-out-temp');
    const outCop = document.getElementById('rk-out-cop');
    const outPipe = document.getElementById('rk-out-pipe');
    
    const alertBox = document.getElementById('rk-alert-box');
    const alertIcon = alertBox.querySelector('svg');
    const alertText = alertBox.querySelector('span');

    // SVG Base dimensions: center is 200. Total width 400.
    // 5 pipes: index 0 to 4. Middle is index 2.
    
    function updateSimulation() {
        const spacing = parseInt(slider.value);
        valText.textContent = spacing + ' cm';
        
        // Obliczenia rur
        let reqTemp, copStat, copColor, pipeUsage, alertMsg, alertBg, alertBorder, alertColor;
        let iconHTML = '';

        // Skala w SVG (odległość w pikselach między rurami). Zależy od wybranego rozstawu.
        // Jeśli 10cm to np. 50px dystansu. 30cm to 150px dystansu.
        const pixelSpacing = spacing * 5; 
        
        pipes.forEach((pipe, i) => {
            // Środek to rura [2]. Jej cx = 200.
            const offset = (i - 2) * pixelSpacing;
            pipe.setAttribute('cx', 200 + offset);
        });

        // Logika fizyki
        if (spacing === 10) {
            reqTemp = "29°C";
            copStat = "Maksymalna";
            copColor = "#10b981"; // zielony
            pipeUsage = "10.0 mb";
            
            layerCold.style.opacity = "0";
            layerHot.style.opacity = "0.7";
            
            alertBg = "rgba(16, 185, 129, 0.1)";
            alertBorder = "#059669";
            alertColor = "#34d399";
            alertMsg = "Ideały pod Pompę Ciepła. Najniższe rachunki i równomierne ciepło.";
            iconHTML = '<path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline>';
            
        } else if (spacing === 15) {
            reqTemp = "32°C";
            copStat = "Optymalna";
            copColor = "#38bdf8"; // niebieski jasny
            pipeUsage = "6.6 mb";
            
            layerCold.style.opacity = "0";
            layerHot.style.opacity = "0.4";

            alertBg = "rgba(56, 189, 248, 0.1)";
            alertBorder = "#0284c7";
            alertColor = "#7dd3fc";
            alertMsg = "Złoty standard inżynierski dla dobrze izolowanych budynków.";
            iconHTML = '<path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline>';

        } else if (spacing === 20) {
            reqTemp = "37°C";
            copStat = "Średnia";
            copColor = "#fbbf24"; // żółty
            pipeUsage = "5.0 mb";
            
            layerCold.style.opacity = "0.4";
            layerHot.style.opacity = "0.1";

            alertBg = "rgba(251, 191, 36, 0.1)";
            alertBorder = "#d97706";
            alertColor = "#fcd34d";
            alertMsg = "Dopuszczalne tylko w sypialniach. W salonie może powodować niedogrzanie.";
            iconHTML = '<circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line>';

        } else {
            // 25 - 30 cm
            reqTemp = "45°C+";
            copStat = "Drastyczny spadek";
            copColor = "#ef4444"; // czerwony
            pipeUsage = (100 / spacing).toFixed(1) + " mb";
            
            layerCold.style.opacity = "0.8"; // Mocna zebra
            layerHot.style.opacity = "0";

            alertBg = "rgba(239, 68, 68, 0.1)";
            alertBorder = "#b91c1c";
            alertColor = "#fca5a5";
            alertMsg = "BŁĄD: Zebra termiczna! Zimne pasy na podłodze i zarzynanie sprężarki pompy.";
            iconHTML = '<polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line>';
        }

        // Apply changes
        outTemp.textContent = reqTemp;
        outCop.textContent = copStat;
        outCop.style.color = copColor;
        outPipe.textContent = pipeUsage;

        alertBox.style.background = alertBg;
        alertBox.style.borderColor = alertBorder;
        alertBox.style.color = alertColor;
        alertText.textContent = alertMsg;
        alertIcon.innerHTML = iconHTML;
    }

    // Init and listeners
    slider.addEventListener('input', updateSimulation);
    // Call once to set default visual state
    updateSimulation();
});
</script>



<style>
:root {
    --rk-zone-dark: #0f172a;
    --rk-zone-darker: #020617;
    --rk-zone-brand: #3b82f6; /* Techniczny niebieski */
    --rk-zone-accent-10: #ef4444; /* Czerwony - gorąco */
    --rk-zone-accent-15: #10b981; /* Zielony - optymalnie */
    --rk-zone-accent-20: #0ea5e9; /* Błękit - chłodniej */
    --rk-zone-bg: #f8fafc;
    --rk-zone-card: #ffffff;
    --rk-zone-text: #334155;
    --rk-zone-muted: #64748b;
    --rk-zone-border: #e2e8f0;
}

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

/* Header */
.rk-zone-header {
    background: var(--rk-zone-dark);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
}

.rk-zone-header::after {
    content: '';
    position: absolute;
    bottom: 0; left: 0; right: 0; height: 4px;
    background: linear-gradient(90deg, var(--rk-zone-accent-10) 0%, var(--rk-zone-accent-15) 50%, var(--rk-zone-accent-20) 100%);
}

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

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

.rk-zone-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-link {
    color: #60a5fa;
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed rgba(96, 165, 250, 0.5);
    transition: all 0.3s;
}

.rk-link:hover {
    color: #93c5fd;
    border-bottom-style: solid;
}

/* Interfejs */
.rk-zone-interactive {
    padding: 40px 50px;
}

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

/* Selektor Rozstawu (Tabs) */
.rk-tabs-wrapper {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    margin-bottom: 35px;
}

.rk-tab-btn {
    background: var(--rk-zone-card);
    border: 2px solid var(--rk-zone-border);
    padding: 20px 15px;
    border-radius: 16px;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);
}

.rk-tab-btn:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1);
}

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

.rk-tab-label {
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-zone-muted);
    text-transform: uppercase;
    text-align: center;
}

/* Aktywne stany zakładek */
.rk-tab-btn[data-zone="10"].active { border-color: var(--rk-zone-accent-10); background: #fef2f2; }
.rk-tab-btn[data-zone="10"].active .rk-tab-val { color: var(--rk-zone-accent-10); }

.rk-tab-btn[data-zone="15"].active { border-color: var(--rk-zone-accent-15); background: #f0fdf4; }
.rk-tab-btn[data-zone="15"].active .rk-tab-val { color: var(--rk-zone-accent-15); }

.rk-tab-btn[data-zone="20"].active { border-color: var(--rk-zone-accent-20); background: #f0f9ff; }
.rk-tab-btn[data-zone="20"].active .rk-tab-val { color: var(--rk-zone-accent-20); }

/* Główny panel danych i SVG */
.rk-panel-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    align-items: stretch;
}

/* Karta z tekstem dynamicznym */
.rk-data-card {
    background: var(--rk-zone-card);
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-zone-border);
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05);
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-dyn-title {
    font-size: 22px;
    font-weight: 800;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

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

.rk-metrics-mini {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-metric-item {
    background: var(--rk-zone-bg);
    padding: 15px;
    border-radius: 12px;
    border: 1px solid var(--rk-zone-border);
}

.rk-metric-lbl {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-zone-muted);
    margin-bottom: 5px;
    text-transform: uppercase;
}

.rk-metric-val-s {
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-zone-dark);
}

/* Wizualizacja SVG */
.rk-svg-wrapper {
    background: var(--rk-zone-dark);
    border-radius: 20px;
    padding: 20px;
    border: 1px solid var(--rk-zone-darker);
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 30px rgba(0,0,0,0.8);
}

.rk-svg-scene {
    width: 100%;
    height: auto;
    max-width: 400px;
}

/* Elementy SVG z animacjami */
.rk-pipe { transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); fill: #e2e8f0; stroke: #475569; stroke-width: 2; }
.rk-heat-layer { transition: opacity 0.5s, fill 0.5s; opacity: 0; }
.rk-zebra-layer { transition: opacity 0.5s; fill: url(#zebraGradient); opacity: 0; }
.rk-heat-wave { stroke-dasharray: 10 15; animation: riseUp 2s linear infinite; opacity: 0.7; transition: stroke 0.5s; }

@keyframes riseUp { to { stroke-dashoffset: -25; } }

/* Klasy stanów dla SVG */
.state-10 .rk-pipe-group-10 .rk-pipe { fill: #ef4444; stroke: #991b1b; }
.state-10 .rk-pipe-group-15 { opacity: 0; transform: scale(0); }
.state-10 .rk-pipe-group-20 { opacity: 0; transform: scale(0); }
.state-10 .rk-heat-layer { opacity: 0.8; fill: url(#heatGradientHot); }
.state-10 .rk-heat-wave { stroke: #ef4444; }

.state-15 .rk-pipe-group-10 { opacity: 0; transform: scale(0); }
.state-15 .rk-pipe-group-15 .rk-pipe { fill: #10b981; stroke: #047857; }
.state-15 .rk-pipe-group-20 { opacity: 0; transform: scale(0); }
.state-15 .rk-heat-layer { opacity: 0.6; fill: url(#heatGradientOpti); }
.state-15 .rk-heat-wave { stroke: #10b981; }

.state-20 .rk-pipe-group-10 { opacity: 0; transform: scale(0); }
.state-20 .rk-pipe-group-15 { opacity: 0; transform: scale(0); }
.state-20 .rk-pipe-group-20 .rk-pipe { fill: #0ea5e9; stroke: #0369a1; }
.state-20 .rk-heat-layer { opacity: 0.3; fill: url(#heatGradientCool); }
.state-20 .rk-zebra-layer { opacity: 1; } /* Włączenie zebry termicznej */
.state-20 .rk-heat-wave { stroke: #0ea5e9; }

@media (max-width: 768px) {
    .rk-zone-header, .rk-zone-interactive { padding: 30px 20px; }
    .rk-tabs-wrapper { grid-template-columns: 1fr; gap: 10px; }
    .rk-panel-grid { grid-template-columns: 1fr; }
    .rk-tab-btn { flex-direction: row; justify-content: center; padding: 15px; }
    .rk-svg-wrapper { height: 200px; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#article-pokoje",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/"
    },
    "headline": "Jak gęsto rozkładać podłogówkę w standardowych pomieszczeniach mieszkalnych?",
    "description": "Zasady doboru rozstawu rur (10 cm, 15 cm, 20 cm) według normy PN-EN 1264. Poznaj optymalne gęstości dla łazienek, salonów i sypialni pod pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-21",
    "dateModified": "2026-05-21"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#dataset-pokoje",
    "name": "Normy rozstawu rur wg PN-EN 1264 i PN-EN 12831",
    "description": "Zestawienie parametrów projektowych określających wymaganą gęstość pętli grzewczych w zależności od specyfiki i zapotrzebowania cieplnego pomieszczenia.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "rozstaw rur podłogówki",
      "co 10 cm czy 15 cm",
      "strefa brzegowa podłogówki",
      "temperatura zasilania pompy ciepła",
      "obliczenia OZC"
    ],
    "measurementTechnique": "Analiza zapotrzebowania cieplnego w oparciu o europejskie normy inżynierskie i charakterystykę cieplną budynków.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Łazienki i strefy brzegowe: Wymagany rozstaw co 10 cm dla zapotrzebowania >70 W/m².",
        "Salony i kuchnie: Optymalny rozstaw co 15 cm dla zasilania pompy ciepła temp. 35°C.",
        "Sypialnie i garderoby: Dopuszczalny rozstaw co 20 cm wyłącznie przy zapotrzebowaniu <30 W/m²."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#webapp-pokoje",
    "name": "Wizualizator Gęstości Pętli Grzewczych",
    "description": "Interaktywny panel demonstrujący różnice w rozstawie rur (10, 15, 20 cm) i ich wpływ na wydajność systemu podłogowego w różnych strefach domu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 SVG support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA 
=========================================== -->
<div class="rk-zone-container" id="rk-zone-app">
    <!-- Nagłówek i Wstęp -->
    <div class="rk-zone-header">
        <div class="rk-zone-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Inżynieria w praktyce
        </div>
        <h2 class="rk-zone-title">Jak gęsto rozkładać podłogówkę w pomieszczeniach?</h2>
        <p class="rk-zone-lead">
            Zgodnie z normą <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/" class="rk-link">PN-EN 1264</a>, wybór odległości między rurami nie może być dziełem przypadku ani "intuicji" instalatora. Dla nowoczesnych budynków o zapotrzebowaniu na energię poniżej 40 W/m² uniwersalnym krokiem jest 15 cm. Poniżej zobaczysz, jak dobierać rozstaw w zależności od strefy w domu, aby maksymalnie wykorzystać potencjał pompy ciepła.
        </p>
    </div>

    <!-- Sekcja Interaktywna -->
    <div class="rk-zone-interactive">
        <h3 class="rk-zone-h3">Wybierz strefę i sprawdź optymalny krok (rozstaw) rur</h3>
        
        <!-- Tab Controls -->
        <div class="rk-tabs-wrapper">
            <div class="rk-tab-btn active" data-zone="10">
                <span class="rk-tab-val">10 cm</span>
                <span class="rk-tab-label">Łazienki & Strefy Brzegowe</span>
            </div>
            <div class="rk-tab-btn" data-zone="15">
                <span class="rk-tab-val">15 cm</span>
                <span class="rk-tab-label">Salony & Kuchnie (Optimum)</span>
            </div>
            <div class="rk-tab-btn" data-zone="20">
                <span class="rk-tab-val">20 cm</span>
                <span class="rk-tab-label">Sypialnie & Pomocnicze</span>
            </div>
        </div>

        <!-- Panel Danych i SVG -->
        <div class="rk-panel-grid">
            
            <!-- Dynamiczny Tekst -->
            <div class="rk-data-card" id="rk-dyn-content">
                <!-- Treść ładuje się przez JS -->
            </div>

            <!-- SVG Wizualizacja -->
            <div class="rk-svg-wrapper state-10" id="rk-svg-stage">
                <svg class="rk-svg-scene" viewBox="0 0 300 120">
                    <defs>
                        <!-- Gradienty dla jastrychu -->
                        <linearGradient id="heatGradientHot" x1="0" y1="1" x2="0" y2="0">
                            <stop offset="0%" stop-color="#ef4444" stop-opacity="0.8"/>
                            <stop offset="100%" stop-color="#ef4444" stop-opacity="0"/>
                        </linearGradient>
                        <linearGradient id="heatGradientOpti" x1="0" y1="1" x2="0" y2="0">
                            <stop offset="0%" stop-color="#10b981" stop-opacity="0.6"/>
                            <stop offset="100%" stop-color="#10b981" stop-opacity="0"/>
                        </linearGradient>
                        <linearGradient id="heatGradientCool" x1="0" y1="1" x2="0" y2="0">
                            <stop offset="0%" stop-color="#0ea5e9" stop-opacity="0.4"/>
                            <stop offset="100%" stop-color="#0ea5e9" stop-opacity="0"/>
                        </linearGradient>
                        <!-- Zebra termiczna (naprzemienne zimne/ciepłe pasy dla 20cm) -->
                        <linearGradient id="zebraGradient" x1="0" y1="0" x2="1" y2="0">
                            <stop offset="10%" stop-color="#0ea5e9" stop-opacity="0.6"/>
                            <stop offset="30%" stop-color="#020617" stop-opacity="0.2"/>
                            <stop offset="50%" stop-color="#0ea5e9" stop-opacity="0.6"/>
                            <stop offset="70%" stop-color="#020617" stop-opacity="0.2"/>
                            <stop offset="90%" stop-color="#0ea5e9" stop-opacity="0.6"/>
                        </linearGradient>
                    </defs>

                    <!-- Wylewka tło -->
                    <rect x="0" y="40" width="300" height="60" fill="#1e293b" rx="4"/>
                    
                    <!-- Warstwy cieplne -->
                    <rect class="rk-zebra-layer" x="0" y="40" width="300" height="60" rx="4"/>
                    <rect class="rk-heat-layer" x="0" y="40" width="300" height="60" rx="4"/>

                    <!-- Fale konwekcji -->
                    <path class="rk-heat-wave" d="M 50 35 Q 50 10 40 5 M 150 35 Q 150 10 160 5 M 250 35 Q 250 10 240 5" fill="none" stroke-width="3" stroke-linecap="round"/>

                    <!-- Rury 10 cm (Zagęszczone - 7 rur) -->
                    <g class="rk-pipe-group-10">
                        <circle class="rk-pipe" cx="30" cy="70" r="8"/>
                        <circle class="rk-pipe" cx="70" cy="70" r="8"/>
                        <circle class="rk-pipe" cx="110" cy="70" r="8"/>
                        <circle class="rk-pipe" cx="150" cy="70" r="8"/>
                        <circle class="rk-pipe" cx="190" cy="70" r="8"/>
                        <circle class="rk-pipe" cx="230" cy="70" r="8"/>
                        <circle class="rk-pipe" cx="270" cy="70" r="8"/>
                    </g>

                    <!-- Rury 15 cm (Złoty środek - 5 rur) -->
                    <g class="rk-pipe-group-15">
                        <circle class="rk-pipe" cx="30" cy="70" r="8"/>
                        <circle class="rk-pipe" cx="90" cy="70" r="8"/>
                        <circle class="rk-pipe" cx="150" cy="70" r="8"/>
                        <circle class="rk-pipe" cx="210" cy="70" r="8"/>
                        <circle class="rk-pipe" cx="270" cy="70" r="8"/>
                    </g>

                    <!-- Rury 20 cm (Rzadkie - 4 rury) -->
                    <g class="rk-pipe-group-20">
                        <circle class="rk-pipe" cx="45" cy="70" r="8"/>
                        <circle class="rk-pipe" cx="115" cy="70" r="8"/>
                        <circle class="rk-pipe" cx="185" cy="70" r="8"/>
                        <circle class="rk-pipe" cx="255" cy="70" r="8"/>
                    </g>

                    <!-- Wykończenie podłogi -->
                    <path d="M 0 40 L 300 40" stroke="#64748b" stroke-width="4"/>
                    <line x1="100" y1="36" x2="100" y2="40" stroke="#64748b" stroke-width="4"/>
                    <line x1="200" y1="36" x2="200" y2="40" stroke="#64748b" stroke-width="4"/>
                </svg>
            </div>

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

<!-- Logika JS -->
<script>
document.addEventListener('DOMContentLoaded', function() {
    // Zabezpieczenie Domeny
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-zone-app').innerHTML = `
            <div style="padding:40px; text-align:center; background:#0f172a; border-radius:24px; border:2px solid #ef4444; color:#fff; font-family:sans-serif; margin: 40px auto; max-width:800px;">
                <div style="font-size: 40px; margin-bottom: 15px;">🛑</div>
                <div style="color:#ef4444; font-size:22px; font-weight:900; margin-bottom: 10px; text-transform:uppercase;">Naruszenie Praw Autorskich</div>
                <div style="color:#cbd5e1; font-size:15px; line-height:1.6;">Skrypt interaktywny i struktura JSON-LD są własnością Projekt-Ogrzewania.pl. Wykryto próbę kradzieży.</div>
            </div>
        `;
        return;
    }

    // Dane do wstrzykiwania
    const zoneData = {
        "10": {
            title: "Strefy intensywne i łazienki",
            color: "var(--rk-zone-accent-10)",
            desc: "Zagęszczenie do 10 cm stosuje się tam, gdzie zapotrzebowanie na ciepło przekracza <strong>70 W/m²</strong> (wg PN-EN 12831). Łazienka wymaga 24°C, a wolna powierzchnia podłogi jest ograniczona. Ten krok jest również obligatoryjny w <a href='https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/' class='rk-link'>strefach brzegowych</a> przy dużych oknach.",
            metric1Lbl: "Moc Grzewcza",
            metric1Val: "> 70 W/m²",
            metric2Lbl: "Temp. Wewnętrzna",
            metric2Val: "24°C"
        },
        "15": {
            title: "Złoty środek dla pomp ciepła",
            color: "var(--rk-zone-accent-15)",
            desc: "Absolutny standard inżynierski w pokojach dziennych, salonach i kuchniach. Uzyskujemy równomierny rozkład temperatur, eliminując pasy termiczne. To <a href='https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/' class='rk-link'>optymalny rozstaw dla układów zasilanych pompą ciepła</a>, gwarantujący wysoką wydajność przy zasilaniu na poziomie ok. 35°C.",
            metric1Lbl: "Moc Grzewcza",
            metric1Val: "40 - 60 W/m²",
            metric2Lbl: "Temp. Zasilania",
            metric2Val: "ok. 35°C"
        },
        "20": {
            title: "Sypialnie i pom. pomocnicze",
            color: "var(--rk-zone-accent-20)",
            desc: "Rozstaw dopuszczalny wyłącznie przy zapotrzebowaniu <a href='https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/' class='rk-link'>OZC poniżej 30 W/m²</a>. Idealny do sypialni (18-20°C). Zwiększenie odległości do 20 cm w słabo zaizolowanym salonie grozi drastycznym niedogrzaniem i zniszczy efektywność ekonomiczną całej pompy ciepła.",
            metric1Lbl: "Moc Grzewcza",
            metric1Val: "< 30 W/m²",
            metric2Lbl: "Temp. Wewnętrzna",
            metric2Val: "18 - 20°C"
        }
    };

    const tabs = document.querySelectorAll('.rk-tab-btn');
    const dynContent = document.getElementById('rk-dyn-content');
    const svgStage = document.getElementById('rk-svg-stage');

    function renderContent(zone) {
        const data = zoneData[zone];
        
        dynContent.innerHTML = `
            <h4 class="rk-dyn-title" style="color: ${data.color}">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                ${data.title}
            </h4>
            <p class="rk-dyn-desc">${data.desc}</p>
            <div class="rk-metrics-mini">
                <div class="rk-metric-item">
                    <div class="rk-metric-lbl">${data.metric1Lbl}</div>
                    <div class="rk-metric-val-s">${data.metric1Val}</div>
                </div>
                <div class="rk-metric-item">
                    <div class="rk-metric-lbl">${data.metric2Lbl}</div>
                    <div class="rk-metric-val-s">${data.metric2Val}</div>
                </div>
            </div>
        `;

        // Update SVG state class
        svgStage.className = `rk-svg-wrapper state-${zone}`;
    }

    // Init click events
    tabs.forEach(tab => {
        tab.addEventListener('click', function() {
            // Remove active from all
            tabs.forEach(t => t.classList.remove('active'));
            // Add active to clicked
            this.classList.add('active');
            // Render specific data
            renderContent(this.getAttribute('data-zone'));
        });
    });

    // Default load (10cm active from HTML)
    renderContent("10");
});
</script>



<style>
:root {
    --rk-temp-dark: #1e293b;
    --rk-temp-darker: #0f172a;
    --rk-temp-brand: #f97316; /* Energetyczny pomarańcz ciepła */
    --rk-temp-brand-light: #ffedd5;
    --rk-temp-safe: #10b981; /* Zielony komfort */
    --rk-temp-warn: #eab308; /* Żółty - strefy specjalne */
    --rk-temp-danger: #ef4444; /* Czerwony - błąd fizjologiczny */
    --rk-temp-bg: #ffffff;
    --rk-temp-panel: #f8fafc;
    --rk-temp-border: #e2e8f0;
    --rk-temp-text: #334155;
    --rk-temp-muted: #64748b;
}

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

/* Nagłówek i Tekst Wstępny */
.rk-temp-header {
    background: linear-gradient(135deg, var(--rk-temp-darker) 0%, var(--rk-temp-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-temp-brand);
}

.rk-temp-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(249, 115, 22, 0.2);
    color: #fdba74;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(249, 115, 22, 0.3);
}

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

.rk-temp-title span { color: #fb923c; }

.rk-temp-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-link {
    color: var(--rk-temp-brand);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed rgba(249, 115, 22, 0.4);
    transition: all 0.3s;
}

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

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

.rk-temp-h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-temp-dark);
    margin: 0 0 30px 0;
    text-align: center;
}

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

/* Panel Kontrolny */
.rk-control-panel {
    background: #ffffff;
    padding: 30px;
    border-radius: 20px;
    border: 1px solid var(--rk-temp-border);
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05);
    display: flex;
    flex-direction: column;
}

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

.rk-slider-label {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-temp-muted);
    text-transform: uppercase;
}

.rk-slider-value {
    font-size: 32px;
    font-weight: 900;
    color: var(--rk-temp-dark);
    transition: color 0.3s;
}

/* Custom Range Slider */
.rk-range {
    -webkit-appearance: none;
    width: 100%;
    height: 10px;
    background: linear-gradient(90deg, #10b981 30%, #eab308 60%, #ef4444 90%);
    border-radius: 5px;
    outline: none;
    margin: 20px 0 30px 0;
}

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

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

/* Wyniki dynamiczne (Grid Kafelków) */
.rk-metrics-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
    margin-top: auto;
}

.rk-metric-box {
    background: var(--rk-temp-panel);
    padding: 15px;
    border-radius: 12px;
    border: 1px solid var(--rk-temp-border);
    text-align: center;
}

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

.rk-metric-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-temp-brand);
}

.rk-status-box {
    margin-top: 15px;
    padding: 15px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    display: flex;
    align-items: center;
    gap: 10px;
    transition: all 0.3s;
}

/* Wizualizacja SVG */
.rk-visual-panel {
    background: var(--rk-temp-dark);
    border-radius: 20px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
    box-shadow: inset 0 0 30px rgba(0,0,0,0.5);
    border: 2px solid var(--rk-temp-darker);
}

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

/* Stany Animacji SVG */
.rk-svg-floor { transition: fill 0.5s; }
.rk-svg-radiate { opacity: 0; transition: opacity 0.3s, fill 0.5s; }
.rk-heat-wave { stroke-dasharray: 10 15; animation: radiateUp 2s linear infinite; transition: stroke 0.5s; }

@keyframes radiateUp { to { stroke-dashoffset: -25; } }

/* Cytat inżynierski */
.rk-quote-section {
    padding: 35px 50px;
    background: #ffffff;
    border-top: 1px solid var(--rk-temp-border);
}

.rk-quote-box {
    background: var(--rk-temp-brand-light);
    border-left: 5px solid var(--rk-temp-brand);
    padding: 25px 30px;
    border-radius: 0 16px 16px 0;
    margin-bottom: 25px;
}

.rk-quote-text {
    font-size: 16px;
    font-weight: 700;
    color: #7c2d12;
    margin: 0;
    line-height: 1.6;
}

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

@media (max-width: 768px) {
    .rk-temp-header, .rk-temp-interactive, .rk-quote-section { padding: 30px 20px; }
    .rk-sim-layout { grid-template-columns: 1fr; }
    .rk-metrics-grid { grid-template-columns: 1fr; }
    .rk-visual-panel { height: 220px; }
    .rk-slider-value { font-size: 28px; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#article-temperatura",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/"
    },
    "headline": "Jaka jest maksymalna temperatura powierzchni podłogi według normy PN-EN 1264?",
    "description": "Limity fizjologiczne i techniczne temperatur w ogrzewaniu podłogowym. Emisja ciepła a projektowe obciążenie cieplne (OZC) – dowiedz się dlaczego podłoga nie może grzać mocniej niż 29°C.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-21",
    "dateModified": "2026-05-21"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#dataset-temperatura",
    "name": "Tabela Emisyjności Cieplnej Posadzki wg PN-EN 1264",
    "description": "Zestawienie maksymalnych wartości strumienia ciepła (W/m²) dla ogrzewania podłogowego w zależności od dopuszczalnych temperatur fizjologicznych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna temperatura podłogówki",
      "norma PN-EN 1264-2",
      "strumień ciepła podłogi",
      "fizjologia ogrzewania płaszczyznowego",
      "limity cieplne OZC"
    ],
    "measurementTechnique": "Obliczenia emisyjności w oparciu o różnicę temperatur między powietrzem a posadzką przy współczynniku przejmowania ciepła ok. 11 W/(m²K).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Strefa stałego przebywania: Max 29°C (Emisja graniczna: ~100 W/m² przy 20°C powietrza).",
        "Łazienki: Max 33°C (Emisja graniczna: ~90 W/m² przy 24°C powietrza).",
        "Strefy brzegowe przy oknach: Max 35°C."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#webapp-temperatura",
    "name": "Symulator Komfortu Fizjologicznego Posadzki",
    "description": "Interaktywne narzędzie obliczeniowe korelujące temperaturę powierzchni posadzki z mocą emisyjną (W/m²) oraz ostrzeżeniami o przekroczeniu norm PN-EN 1264.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 input range support for real-time calculation.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA 
=========================================== -->
<div class="rk-temp-container" id="rk-temp-app">
    <!-- Nagłówek -->
    <div class="rk-temp-header">
        <div class="rk-temp-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path></svg>
            Normy i Bezpieczeństwo
        </div>
        <h2 class="rk-temp-title">Jaka jest maksymalna temperatura podłogi <span>wg normy PN-EN 1264?</span></h2>
        <p class="rk-temp-lead">
            Norma ściśle ogranicza temperaturę gotowej posadzki do <strong>29°C w strefie stałego przebywania</strong> oraz do <strong>33°C w łazienkach</strong>. W <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-obwodowa-w-ogrzewaniu-podlogowym/" class="rk-link">strefach brzegowych</a> dopuszcza się 35°C. Przekroczenie tych fizjologicznych granic prowadzi do problemów z krążeniem u domowników oraz uszkodzenia okładzin. Ogrzewanie podłogowe oddaje energię w 70% przez promieniowanie, co wymusza rygorystyczne limity.
        </p>
    </div>

    <!-- Moduł Interaktywny -->
    <div class="rk-temp-interactive">
        <h3 class="rk-temp-h3">Symulator Limitu Emisji (Założenie: Powietrze 20°C)</h3>
        
        <div class="rk-sim-layout">
            <!-- Kontrolki -->
            <div class="rk-control-panel">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Zadana Temperatura Posadzki</span>
                    <span class="rk-slider-value" id="rk-floor-val">24°C</span>
                </div>
                
                <input type="range" class="rk-range" id="rk-temp-slider" min="20" max="38" step="1" value="24">
                
                <div class="rk-metrics-grid">
                    <div class="rk-metric-box">
                        <div class="rk-metric-lbl">Wydajność Cieplna</div>
                        <div class="rk-metric-val" id="rk-emission-val">44 W/m²</div>
                    </div>
                    <div class="rk-metric-box">
                        <div class="rk-metric-lbl">Emisja Fali</div>
                        <div class="rk-metric-val" id="rk-radiation-val">70%</div>
                    </div>
                </div>

                <div class="rk-status-box" id="rk-alert-box">
                    <svg id="rk-alert-icon" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"></svg>
                    <span id="rk-alert-text">Status optymalny</span>
                </div>
            </div>

            <!-- SVG -->
            <div class="rk-visual-panel">
                <svg class="rk-room-svg" viewBox="0 0 200 200">
                    <defs>
                        <radialGradient id="glowG" cx="50%" cy="100%" r="100%">
                            <stop offset="0%" stop-color="#10b981" stop-opacity="0.8"/>
                            <stop offset="100%" stop-color="#10b981" stop-opacity="0"/>
                        </radialGradient>
                        <radialGradient id="glowY" cx="50%" cy="100%" r="100%">
                            <stop offset="0%" stop-color="#eab308" stop-opacity="0.8"/>
                            <stop offset="100%" stop-color="#eab308" stop-opacity="0"/>
                        </radialGradient>
                        <radialGradient id="glowR" cx="50%" cy="100%" r="100%">
                            <stop offset="0%" stop-color="#ef4444" stop-opacity="0.9"/>
                            <stop offset="100%" stop-color="#ef4444" stop-opacity="0"/>
                        </radialGradient>
                    </defs>
                    
                    <!-- Termometr otoczenia -->
                    <path d="M 20 50 L 20 20 A 5 5 0 0 1 30 20 L 30 50 A 10 10 0 1 1 20 50 Z" fill="#334155"/>
                    <circle cx="25" cy="55" r="5" fill="#38bdf8"/>
                    <text x="40" y="58" font-size="12" fill="#cbd5e1" font-weight="bold">Powietrze: 20°C</text>

                    <!-- Promieniowanie i konwekcja -->
                    <rect id="rk-svg-glow" class="rk-svg-radiate" x="0" y="100" width="200" height="100" fill="url(#glowG)"/>
                    <path class="rk-heat-wave" id="rk-wave-1" d="M 50 140 Q 60 100 50 60" fill="none" stroke-width="3" stroke-linecap="round"/>
                    <path class="rk-heat-wave" id="rk-wave-2" d="M 100 140 Q 90 100 100 60" fill="none" stroke-width="3" stroke-linecap="round" style="animation-delay: 0.5s"/>
                    <path class="rk-heat-wave" id="rk-wave-3" d="M 150 140 Q 160 100 150 60" fill="none" stroke-width="3" stroke-linecap="round" style="animation-delay: 1s"/>

                    <!-- Posadzka -->
                    <path d="M 0 160 L 200 160" stroke="#cbd5e1" stroke-width="4"/>
                    <rect id="rk-svg-floor" class="rk-svg-floor" x="0" y="162" width="200" height="38" fill="#1e293b"/>
                    
                    <!-- Rury -->
                    <circle cx="40" cy="180" r="8" fill="#334155"/>
                    <circle cx="100" cy="180" r="8" fill="#334155"/>
                    <circle cx="160" cy="180" r="8" fill="#334155"/>
                </svg>
            </div>
        </div>
    </div>

    <!-- Wnioski / Cytat -->
    <div class="rk-quote-section">
        <div class="rk-quote-box">
            <p class="rk-quote-text">
                Ważny parametr inżynierski: Przy temperaturze powietrza 20°C i granicznej temperaturze podłogi 29°C, maksymalny strumień ciepła, jaki posadzka może fizycznie oddać do otoczenia, wynosi dokładnie 100 W/m². Dla łazienki (powietrze 24°C, podłoga 33°C) limit ten wynosi 90 W/m².
            </p>
        </div>
        <p class="rk-quote-sub">
            Jeśli z Twoich <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-link">wyliczeń OZC</a> wynika, że pomieszczenie traci więcej energii niż ten fizyczny limit emisyjny, zagęszczanie rur ponad normę nic nie da. Nie możesz podnieść temperatury podłogi do 38°C, bo wymusisz na domownikach życie w warunkach permanentnego dyskomfortu. Rozwiązaniem jest poprawa izolacji budynku (<a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/" class="rk-link">grubszy styropian</a>, szczelniejsze okna) lub montaż uzupełniającego źródła ciepła (np. grzejnika drabinkowego czy <a href="https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/" class="rk-link">klimatyzacji</a>).
        </p>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie domeny
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-temp-app').innerHTML = `
            <div style="padding:40px; text-align:center; background:#0f172a; border-radius:24px; border:2px solid #ef4444; color:#fff; font-family:sans-serif; margin: 40px auto; max-width:800px;">
                <div style="font-size: 40px; margin-bottom: 15px;">🛑</div>
                <div style="color:#ef4444; font-size:22px; font-weight:900; margin-bottom: 10px; text-transform:uppercase;">Naruszenie Licencji i Praw Autorskich</div>
                <div style="color:#cbd5e1; font-size:15px; line-height:1.6;">Kod symulatora fizjologicznego oraz baza JSON-LD należą do Projekt-Ogrzewania.pl. Użycie na tej domenie jest nielegalne.</div>
            </div>
        `;
        return;
    }

    // 2. Logika Symulatora
    const slider = document.getElementById('rk-temp-slider');
    const valText = document.getElementById('rk-floor-val');
    const emissionVal = document.getElementById('rk-emission-val');
    
    // Alert Box
    const alertBox = document.getElementById('rk-alert-box');
    const alertText = document.getElementById('rk-alert-text');
    const alertIcon = document.getElementById('rk-alert-icon');
    
    // SVG Elements
    const floor = document.getElementById('rk-svg-floor');
    const glow = document.getElementById('rk-svg-glow');
    const waves = document.querySelectorAll('.rk-heat-wave');

    // Wzór normowy uproszczony: q = 11.1 * (T_floor - T_air). Założenie T_air = 20°C
    const T_air = 20;

    function updateSim() {
        const temp = parseInt(slider.value);
        valText.textContent = temp + '°C';
        
        // Obliczenie strumienia cieplnego
        let emission = 0;
        if(temp > T_air) {
            emission = Math.round((temp - T_air) * 11.1);
        }
        emissionVal.textContent = emission + ' W/m²';

        let stateColor, statusBg, statusBorder, statusMsg, iconPath, glowUrl;

        // Logika normy
        if (temp >= 20 && temp <= 27) {
            stateColor = '#10b981'; // Green
            statusBg = 'rgba(16, 185, 129, 0.15)';
            statusBorder = '#059669';
            statusMsg = 'Komfort idealny. Brak uczucia "ciężkich nóg".';
            iconPath = '<path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline>';
            glowUrl = 'url(#glowG)';
        } else if (temp > 27 && temp <= 29) {
            stateColor = '#3b82f6'; // Blue-ish limit
            statusBg = 'rgba(59, 130, 246, 0.15)';
            statusBorder = '#2563eb';
            statusMsg = 'Górna granica normy dla salonów (Max 29°C).';
            iconPath = '<circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line>';
            glowUrl = 'url(#glowG)';
        } else if (temp > 29 && temp <= 33) {
            stateColor = '#eab308'; // Yellow
            statusBg = 'rgba(234, 179, 8, 0.15)';
            statusBorder = '#ca8a04';
            statusMsg = 'Dopuszczalne tylko w łazienkach (Max 33°C).';
            iconPath = '<path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line>';
            glowUrl = 'url(#glowY)';
        } else if (temp > 33 && temp <= 35) {
            stateColor = '#f97316'; // Orange
            statusBg = 'rgba(249, 115, 22, 0.15)';
            statusBorder = '#ea580c';
            statusMsg = 'Strefy brzegowe pod oknami (Max 35°C).';
            iconPath = '<polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon>';
            glowUrl = 'url(#glowY)';
        } else {
            // > 35
            stateColor = '#ef4444'; // Red
            statusBg = 'rgba(239, 68, 68, 0.15)';
            statusBorder = '#dc2626';
            statusMsg = 'NIEBEZPIECZEŃSTWO! Ryzyko żylaków i pękania posadzki.';
            iconPath = '<circle cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line>';
            glowUrl = 'url(#glowR)';
        }

        // Apply UI updates
        valText.style.color = stateColor;
        
        alertBox.style.background = statusBg;
        alertBox.style.borderColor = statusBorder;
        alertBox.style.color = statusBorder; // text match border
        alertText.textContent = statusMsg;
        alertIcon.innerHTML = iconPath;

        // Apply SVG updates
        floor.style.fill = stateColor;
        glow.style.fill = glowUrl;
        
        if(temp <= 20) {
            glow.style.opacity = 0;
            waves.forEach(w => w.style.opacity = 0);
        } else {
            glow.style.opacity = 1;
            waves.forEach(w => {
                w.style.opacity = 0.8;
                w.style.stroke = stateColor;
                // Wraz ze wzrostem temp, fale szybciej się ruszają (symulacja)
                let speed = 3 - ((temp - 20) / 10);
                if(speed < 0.5) speed = 0.5;
                w.style.animationDuration = speed + 's';
            });
        }
    }

    // Init
    slider.addEventListener('input', updateSim);
    updateSim();
});
</script>



<style>
:root {
    --rk-cop-dark: #0f172a;
    --rk-cop-darker: #020617;
    --rk-cop-brand: #8b5cf6; /* Technologiczny fiolet */
    --rk-cop-brand-light: #ddd6fe;
    --rk-cop-green: #10b981; /* Wysoki COP */
    --rk-cop-yellow: #f59e0b; /* Średni COP */
    --rk-cop-red: #ef4444; /* Niski COP */
    --rk-cop-bg: #ffffff;
    --rk-cop-panel: #f8fafc;
    --rk-cop-border: #e2e8f0;
    --rk-cop-text: #334155;
    --rk-cop-muted: #64748b;
}

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

/* Sekcja Nagłówkowa */
.rk-cop-header {
    background: linear-gradient(135deg, var(--rk-cop-darker) 0%, #2e1065 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-cop-brand);
}

.rk-cop-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(139, 92, 246, 0.25);
    color: #c4b5fd;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(139, 92, 246, 0.4);
}

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

.rk-cop-title span { color: #a78bfa; }

.rk-cop-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #e2e8f0;
    margin: 0;
}

.rk-link {
    color: #a78bfa;
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed rgba(167, 139, 250, 0.5);
    transition: all 0.3s;
}

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

/* Ciało Kontenera */
.rk-cop-body {
    padding: 40px 50px;
}

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

.rk-cop-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    margin-bottom: 30px;
    align-items: stretch;
}

/* Panel Kontrolny i Wyniki */
.rk-cop-controls {
    background: var(--rk-cop-panel);
    padding: 30px;
    border-radius: 20px;
    border: 1px solid var(--rk-cop-border);
    display: flex;
    flex-direction: column;
}

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

.rk-slider-label {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-cop-muted);
    text-transform: uppercase;
}

.rk-slider-value {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-cop-brand);
}

.rk-range-cop {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    background: #cbd5e1;
    border-radius: 4px;
    outline: none;
    margin: 15px 0 35px 0;
}

.rk-range-cop::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #ffffff;
    border: 4px solid var(--rk-cop-brand);
    cursor: pointer;
    box-shadow: 0 0 10px rgba(139, 92, 246, 0.3);
    transition: transform 0.1s;
}

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

/* Kafelki z danymi */
.rk-data-tiles {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
    margin-top: auto;
}

.rk-tile {
    background: #ffffff;
    padding: 15px;
    border-radius: 12px;
    border: 1px solid var(--rk-cop-border);
    text-align: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-tile-lbl {
    font-size: 11px;
    font-weight: 800;
    color: var(--rk-cop-muted);
    text-transform: uppercase;
    margin-bottom: 5px;
}

.rk-tile-val {
    font-size: 20px;
    font-weight: 900;
    transition: color 0.3s;
}

/* Panel SVG */
.rk-cop-visual {
    background: var(--rk-cop-darker);
    border-radius: 20px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    box-shadow: inset 0 0 40px rgba(0,0,0,0.8);
    border: 2px solid var(--rk-cop-dark);
}

.rk-svg-engine {
    width: 100%;
    height: 100%;
    max-width: 320px;
}

/* Animacje SVG */
.rk-fan-blade { transform-origin: 100px 80px; }
.rk-pipe-indicator { transition: opacity 0.3s, fill 0.3s; }
.rk-temp-gauge { transition: stroke-dashoffset 0.5s cubic-bezier(0.4, 0, 0.2, 1), stroke 0.5s; }

/* Inżynierskie studium przypadku (Case Study) */
.rk-case-study {
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-cop-border);
    padding: 30px;
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
}

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

.rk-case-icon {
    width: 40px; height: 40px;
    background: var(--rk-cop-brand-light);
    color: var(--rk-cop-brand);
    border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
}

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

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

.rk-math-col {
    background: var(--rk-cop-panel);
    padding: 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-cop-border);
}

.rk-math-col h4 {
    margin: 0 0 10px 0;
    font-size: 15px;
    font-weight: 800;
}

.rk-math-col p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-cop-text);
}

.rk-math-highlight {
    display: block;
    margin-top: 10px;
    padding: 10px;
    background: #ffffff;
    border-radius: 8px;
    font-family: monospace;
    font-size: 14px;
    font-weight: 700;
    border: 1px dashed var(--rk-cop-muted);
}

.rk-conclusion {
    margin-top: 20px;
    padding: 15px 20px;
    background: rgba(16, 185, 129, 0.1);
    border-left: 4px solid var(--rk-cop-green);
    border-radius: 0 12px 12px 0;
    font-size: 14px;
    font-weight: 600;
    color: #065f46;
    line-height: 1.6;
}

@media (max-width: 768px) {
    .rk-cop-header, .rk-cop-body { padding: 30px 20px; }
    .rk-cop-grid, .rk-math-grid, .rk-data-tiles { grid-template-columns: 1fr; }
    .rk-cop-visual { height: 250px; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#article-cop",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/"
    },
    "headline": "Jak rozstaw rur ogrzewania podłogowego wpływa na sprawność pompy ciepła?",
    "description": "Zmniejszenie rozstawu rur z 20 cm do 10 cm obniża temperaturę zasilania o 5K. Poznaj inżynierskie obliczenia udowadniające, dlaczego zagęszczenie pętli zwiększa SCOP pompy ciepła o 15%.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-21",
    "dateModified": "2026-05-21"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#dataset-cop",
    "name": "Wpływ rozstawu rur podłogówki na współczynnik SCOP pompy ciepła",
    "description": "Zestawienie parametrów zasilania w zależności od rozstawu rur (10 cm vs 20 cm) dla strumienia ciepła 50 W/m² i oporu posadzki 0,06 m²K/W.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "pompa ciepła a rozstaw rur",
      "współczynnik SCOP",
      "temperatura zasilania podłogówki",
      "koszty ogrzewania pompy ciepła",
      "obliczenia inżynierskie podłogówki"
    ],
    "measurementTechnique": "Obliczenia inżynierskie na podstawie bilansu cieplnego, założonego oporu cieplnego okładziny 0,06 m²K/W i delty temperatur (ΔT = 5K).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rozstaw 20 cm: Wymagane zasilanie 40,7°C, spadek wydajności SCOP.",
        "Rozstaw 10 cm: Wymagane zasilanie 35,6°C, wzrost SCOP o ~12.5%, spadek kosztów o 10-15%."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#webapp-cop",
    "name": "Kalkulator SCOP Pompy Ciepła vs Rozstaw",
    "description": "Interaktywny kalkulator pokazujący spadek rachunków za prąd o 2-3% na każdy stopień obniżenia temperatury zasilania dzięki gęstszemu ułożeniu rur.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 Range input and SVG animation support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA 
=========================================== -->
<div class="rk-cop-container" id="rk-cop-app">
    <!-- Nagłówek -->
    <div class="rk-cop-header">
        <div class="rk-cop-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
            Efektywność Energetyczna (SCOP)
        </div>
        <h2 class="rk-cop-title">Jak rozstaw rur ogrzewania podłogowego <span>wpływa na sprawność pompy ciepła?</span></h2>
        <p class="rk-cop-lead">
            Zmniejszenie rozstawu rur z 20 cm do 10 cm pozwala obniżyć temperaturę zasilania instalacji o 4K do 5K przy zachowaniu identycznej mocy grzewczej systemu. Obniżenie temperatury projektowej z 40°C do 35°C zwiększa sezonowy współczynnik efektywności (SCOP) <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-link">pompy ciepła</a> o 10% do 15%, co bezpośrednio tnie rachunki za prąd.
        </p>
    </div>

    <div class="rk-cop-body">
        <h3 class="rk-cop-h3">Symulator obciążenia sprężarki</h3>
        
        <div class="rk-cop-grid">
            <!-- Panel Kontrolny -->
            <div class="rk-cop-controls">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Rozstaw Rur PEX/PERT</span>
                    <span class="rk-slider-value" id="rk-cop-spacing-val">10 cm</span>
                </div>
                
                <!-- Suwak: 10, 15, 20 -->
                <input type="range" class="rk-range-cop" id="rk-cop-slider" min="10" max="20" step="5" value="10">
                
                <div class="rk-data-tiles">
                    <div class="rk-tile">
                        <div class="rk-tile-lbl">Wymagane Zasilanie</div>
                        <div class="rk-tile-val" id="rk-cop-temp-val" style="color: var(--rk-cop-green);">35.6°C</div>
                    </div>
                    <div class="rk-tile">
                        <div class="rk-tile-lbl">Wydajność (SCOP)</div>
                        <div class="rk-tile-val" id="rk-cop-eff-val" style="color: var(--rk-cop-green);">+15%</div>
                    </div>
                </div>
            </div>

            <!-- SVG Panel -->
            <div class="rk-cop-visual">
                <svg class="rk-svg-engine" viewBox="0 0 200 160">
                    <!-- Obudowa Pompy -->
                    <rect x="20" y="20" width="160" height="120" fill="#1e293b" rx="8" stroke="#475569" stroke-width="3"/>
                    <rect x="30" y="30" width="140" height="100" fill="#0f172a" rx="4"/>
                    
                    <!-- Wiatrak (Sprężarka) -->
                    <circle cx="100" cy="80" r="40" fill="#1e293b" stroke="#334155" stroke-width="4"/>
                    <g id="rk-fan" class="rk-fan-blade" style="animation: spinFan 2s linear infinite;">
                        <path d="M 100 80 Q 80 45 100 40 Q 120 45 100 80" fill="#94a3b8"/>
                        <path d="M 100 80 Q 135 100 135 80 Q 135 60 100 80" fill="#94a3b8"/>
                        <path d="M 100 80 Q 65 100 65 80 Q 65 60 100 80" fill="#94a3b8"/>
                        <circle cx="100" cy="80" r="8" fill="#cbd5e1"/>
                    </g>
                    <!-- Kratka na wiatraku -->
                    <line x1="60" y1="80" x2="140" y2="80" stroke="#475569" stroke-width="2"/>
                    <line x1="100" y1="40" x2="100" y2="120" stroke="#475569" stroke-width="2"/>

                    <!-- Zegar Temperatury -->
                    <circle cx="160" cy="40" r="15" fill="#0f172a" stroke="#475569" stroke-width="2"/>
                    <path d="M 150 40 A 10 10 0 1 1 170 40" fill="none" stroke="#334155" stroke-width="4" stroke-linecap="round"/>
                    <path id="rk-gauge-arc" class="rk-temp-gauge" d="M 150 40 A 10 10 0 0 1 170 40" fill="none" stroke="#10b981" stroke-width="4" stroke-linecap="round" stroke-dasharray="31.4" stroke-dashoffset="15.7"/>
                </svg>
            </div>
        </div>

        <h3 class="rk-cop-h3">Inżynierskie studium przypadku</h3>
        <div class="rk-case-study">
            <div class="rk-case-header">
                <div class="rk-case-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                </div>
                <h4 class="rk-case-title">Obliczenie wpływu rozstawu na temperaturę zasilania</h4>
            </div>

            <p style="margin: 0 0 20px 0; font-size: 15px; color: var(--rk-cop-text); line-height: 1.7;">
                Dla pokoju o powierzchni 20 m² i zapotrzebowaniu na moc <strong>Q = 1000 W</strong> (strumień ciepła q = 50 W/m²), przy wykończeniu podłogi <a href="https://projekt-ogrzewania.pl/podlogi-drewniane-vs-panele-laminowane-co-wybrac-przy-ogrzewaniu-podlogowym/" class="rk-link">panelem laminowanym</a> o oporze R = 0,06 m²K/W i temperaturze wewnętrznej 20°C:
            </p>

            <div class="rk-math-grid">
                <div class="rk-math-col" style="border-left: 4px solid var(--rk-cop-red);">
                    <h4 style="color: var(--rk-cop-red);">Przy rozstawie co 20 cm (16x2 mm)</h4>
                    <p>Wymagana średnia temperatura czynnika grzewczego w pętli musi wynosić 38,2°C.</p>
                    <span class="rk-math-highlight" style="color: var(--rk-cop-red);">
                        Zasilanie pompy (ΔT = 5K) = 40,7°C
                    </span>
                </div>
                
                <div class="rk-math-col" style="border-left: 4px solid var(--rk-cop-green);">
                    <h4 style="color: var(--rk-cop-green);">Po zagęszczeniu do 10 cm</h4>
                    <p>Ten sam strumień ciepła uzyskamy przy średniej temperaturze czynnika wynoszącej zaledwie 33,1°C.</p>
                    <span class="rk-math-highlight" style="color: var(--rk-cop-green);">
                        Zasilanie pompy (ΔT = 5K) = 35,6°C
                    </span>
                </div>
            </div>

            <div class="rk-conclusion">
                <strong>Złota zasada zysku:</strong> Odciążasz sprężarkę! Każdy 1°C mniej na zasilaniu instalacji podłogowej to spadek rachunków za prąd o około 2-3% w skali całego sezonu grzewczego. Stąd wniosek: projektując instalację pod pompę ciepła, dążymy do zagęszczenia (10-15 cm), traktując rozstaw 20 cm jako kosztowną ostateczność.
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domeny
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-cop-app').innerHTML = `
            <div style="padding:40px; text-align:center; background:#0f172a; border-radius:24px; border:2px solid #ef4444; color:#fff; font-family:sans-serif; margin: 40px auto; max-width:800px;">
                <div style="font-size: 40px; margin-bottom: 15px;">🛑</div>
                <div style="color:#ef4444; font-size:22px; font-weight:900; margin-bottom: 10px; text-transform:uppercase;">Naruszenie Praw Autorskich</div>
                <div style="color:#cbd5e1; font-size:15px; line-height:1.6;">Interaktywny symulator COP i zaszyte dane inżynierskie stanowią własność Projekt-Ogrzewania.pl. Użycie zabronione.</div>
            </div>
        `;
        return;
    }

    // 2. Logika symulatora
    const slider = document.getElementById('rk-cop-slider');
    const valText = document.getElementById('rk-cop-spacing-val');
    const tempVal = document.getElementById('rk-cop-temp-val');
    const effVal = document.getElementById('rk-cop-eff-val');
    
    // SVG Elements
    const fan = document.getElementById('rk-fan');
    const gauge = document.getElementById('rk-gauge-arc');

    // Wstrzyknięcie klatek kluczowych rotacji, jeśli ich nie ma w CSS globalnie
    if (!document.getElementById('rk-spin-style')) {
        const style = document.createElement('style');
        style.id = 'rk-spin-style';
        style.innerHTML = `@keyframes spinFan { 100% { transform: rotate(360deg); } }`;
        document.head.appendChild(style);
    }

    function updateSimulation() {
        const spacing = parseInt(slider.value);
        valText.textContent = spacing + ' cm';
        
        let reqTemp, effStatus, colorHex, fanSpeed, gaugeOffset;

        if (spacing === 10) {
            reqTemp = "35.6°C";
            effStatus = "+15%";
            colorHex = "var(--rk-cop-green)";
            fanSpeed = "3s"; // Sprężarka pracuje na luzie
            gaugeOffset = "23"; // Mniej wypełniony zegar
        } else if (spacing === 15) {
            reqTemp = "38.1°C";
            effStatus = "+6%";
            colorHex = "var(--rk-cop-yellow)";
            fanSpeed = "1.2s"; // Średnie obciążenie
            gaugeOffset = "12";
        } else {
            // 20 cm
            reqTemp = "40.7°C";
            effStatus = "BAZA (0%)";
            colorHex = "var(--rk-cop-red)";
            fanSpeed = "0.4s"; // Sprężarka wyje (duże obciążenie)
            gaugeOffset = "0"; // Zegar pełny
        }

        // Aktualizacja UI tekstowego
        tempVal.textContent = reqTemp;
        tempVal.style.color = colorHex;
        effVal.textContent = effStatus;
        effVal.style.color = colorHex;

        // Aktualizacja SVG
        fan.style.animationDuration = fanSpeed;
        gauge.style.stroke = colorHex;
        gauge.style.strokeDashoffset = gaugeOffset;
    }

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



<style>
:root {
    --rk-algo-dark: #0f172a;
    --rk-algo-panel: #1e293b;
    --rk-algo-brand: #0ea5e9;
    --rk-algo-brand-dark: #0284c7;
    --rk-algo-accent: #38bdf8;
    --rk-algo-text: #f8fafc;
    --rk-algo-muted: #94a3b8;
    --rk-algo-border: #334155;
    --rk-algo-bg: #0b1120;
    --rk-algo-glow: rgba(14, 165, 233, 0.4);
}

.rk-algo-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: var(--rk-algo-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(14, 165, 233, 0.15);
    border: 1px solid var(--rk-algo-border);
    overflow: hidden;
    color: var(--rk-algo-text);
}

/* Nagłówek */
.rk-algo-header {
    background: linear-gradient(135deg, #020617 0%, var(--rk-algo-dark) 100%);
    padding: 45px 50px;
    position: relative;
    border-bottom: 2px solid var(--rk-algo-border);
}

.rk-algo-header::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; height: 100%;
    background-image: linear-gradient(var(--rk-algo-border) 1px, transparent 1px), linear-gradient(90deg, var(--rk-algo-border) 1px, transparent 1px);
    background-size: 30px 30px;
    opacity: 0.1;
    pointer-events: none;
}

.rk-algo-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(14, 165, 233, 0.15);
    color: var(--rk-algo-accent);
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 20px;
    border: 1px solid rgba(14, 165, 233, 0.3);
}

.rk-algo-title {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-algo-title span { color: var(--rk-algo-accent); }

.rk-algo-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-link {
    color: var(--rk-algo-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed rgba(56, 189, 248, 0.5);
    transition: all 0.3s;
}

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

/* Główny układ: Procedura (Lewo) + Kalkulator (Prawo) */
.rk-algo-body {
    padding: 40px 50px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
    background: var(--rk-algo-dark);
}

.rk-algo-h3 {
    font-size: 20px;
    font-weight: 800;
    color: #ffffff;
    margin: 0 0 25px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Lista kroków (Procedura inżynierska) */
.rk-steps-list {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-step-item {
    background: var(--rk-algo-panel);
    border: 1px solid var(--rk-algo-border);
    border-radius: 16px;
    padding: 20px;
    position: relative;
    box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}

.rk-step-header {
    display: flex;
    align-items: flex-start;
    gap: 15px;
    margin-bottom: 10px;
}

.rk-step-num {
    background: var(--rk-algo-brand);
    color: #ffffff;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    font-weight: 900;
    flex-shrink: 0;
    box-shadow: 0 0 10px var(--rk-algo-glow);
}

.rk-step-title {
    font-size: 15px;
    font-weight: 700;
    color: #e2e8f0;
    line-height: 1.4;
    margin: 0;
}

.rk-step-desc {
    font-size: 13px;
    color: var(--rk-algo-muted);
    line-height: 1.6;
    margin: 0 0 10px 43px;
}

.rk-formula {
    background: #000000;
    border: 1px solid var(--rk-algo-border);
    padding: 10px 15px;
    border-radius: 8px;
    font-family: 'Courier New', Courier, monospace;
    font-weight: 700;
    color: var(--rk-algo-accent);
    margin-left: 43px;
    font-size: 14px;
    text-align: center;
    letter-spacing: 0.5px;
}

/* Interaktywny Kalkulator Algorytmiczny */
.rk-calc-box {
    background: var(--rk-algo-panel);
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-algo-brand);
    box-shadow: 0 0 30px rgba(14, 165, 233, 0.1);
    display: flex;
    flex-direction: column;
}

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

.rk-calc-lbl {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-algo-muted);
    text-transform: uppercase;
    margin-bottom: 10px;
}

.rk-calc-val {
    color: #ffffff;
    font-size: 18px;
}

/* NOWA KLASA DLA SUWAKÓW ABY UNIKNĄĆ KONFLIKTU */
.rk-algo-range {
    -webkit-appearance: none;
    width: 100%;
    height: 6px;
    background: var(--rk-algo-border);
    border-radius: 3px;
    outline: none;
}

.rk-algo-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-algo-brand);
    cursor: pointer;
    box-shadow: 0 0 10px var(--rk-algo-glow);
    transition: transform 0.1s;
}

.rk-algo-range::-webkit-slider-thumb:hover { transform: scale(1.2); }

/* Wyniki Kalkulatora */
.rk-results-panel {
    background: #000000;
    border-radius: 16px;
    padding: 20px;
    margin-top: auto;
    border: 1px solid var(--rk-algo-border);
}

.rk-res-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 0;
    border-bottom: 1px dashed var(--rk-algo-border);
}
.rk-res-row:last-child { border-bottom: none; }

.rk-res-name {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-algo-muted);
}

.rk-res-data {
    font-size: 18px;
    font-weight: 900;
    color: #ffffff;
}

.rk-res-highlight {
    font-size: 24px;
    color: var(--rk-algo-accent);
}

/* SVG Wizualizacja Przekroju */
.rk-svg-viewport {
    background: #000000;
    border-radius: 16px;
    padding: 15px;
    margin-top: 25px;
    border: 1px solid var(--rk-algo-border);
    height: 120px;
    display: flex;
    align-items: center;
    justify-content: center;
}

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

.rk-bp-concrete { fill: #1e293b; stroke: #334155; stroke-width: 2; }
.rk-bp-pipe { fill: var(--rk-algo-bg); stroke: var(--rk-algo-accent); stroke-width: 3; }
.rk-bp-dim { stroke: var(--rk-algo-muted); stroke-width: 1; stroke-dasharray: 2 2; }
.rk-bp-text { fill: var(--rk-algo-muted); font-size: 12px; font-family: monospace; }

/* Grupy rur ukrywane przez JS */
.rk-group-10, .rk-group-15, .rk-group-20 { opacity: 0; transition: opacity 0.4s ease; }
.rk-group-10.active, .rk-group-15.active, .rk-group-20.active { opacity: 1; }

@media (max-width: 768px) {
    .rk-algo-header, .rk-algo-body { padding: 30px 20px; }
    .rk-algo-body { grid-template-columns: 1fr; gap: 30px; }
    .rk-step-desc, .rk-formula { margin-left: 0; margin-top: 10px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#article-algorytm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/"
    },
    "headline": "Jak obliczyć optymal rozstaw rur podłogówki?",
    "description": "Profesjonalny algorytm obliczeniowy doboru rozstawu rur w ogrzewaniu podłogowym krok po kroku. Kalkulacja gęstości strumienia cieplnego wg PN-EN 12831.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-21",
    "dateModified": "2026-05-21"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#dataset-algorytm",
    "name": "Algorytm inżynierski wyznaczania gęstości strumienia cieplnego q",
    "description": "Zestawienie wzorów matematycznych i limitów normowych służących do projektowania rozstawu pętli ogrzewania płaszczyznowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczenia OZC podłogówki",
      "wzór na rozstaw rur",
      "gęstość strumienia cieplnego q",
      "norma PN-EN 12831",
      "projektowanie instalacji podłogowej"
    ],
    "measurementTechnique": "Algorytm 5 kroków obliczeniowych (Q_obl -> q -> t_m -> dt_ln -> b) wyznaczający gęstość ułożenia rur na bazie bilansu cieplnego OZC.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Krok 1: Skorygowanie mocy (Q_obl = Q_OZC * 1.15).",
        "Krok 2: Wyznaczenie gęstości strumienia z pow. netto (q = Q_obl / A_eff).",
        "Krok 5: Przypisanie rozstawu. q > 60 W/m² = 10 cm; q = 35-60 W/m² = 15 cm; q < 35 W/m² = 20 cm."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#webapp-algorytm",
    "name": "Kalkulator Algorytmu OZC dla Podłogówki",
    "description": "Interaktywny kalkulator inżynierski przeliczający wartość obciążenia cieplnego OZC oraz powierzchnię na niezbędny strumień cieplny q i optymalny rozstaw pętli.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 input range for algorithmic calculations.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-algo-container" id="rk-algo-app">
    <div class="rk-algo-header">
        <div class="rk-algo-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><rect x="9" y="9" width="6" height="6"></rect><line x1="9" y1="1" x2="9" y2="4"></line><line x1="15" y1="1" x2="15" y2="4"></line><line x1="9" y1="20" x2="9" y2="23"></line><line x1="15" y1="20" x2="15" y2="23"></line><line x1="20" y1="9" x2="23" y2="9"></line><line x1="20" y1="14" x2="23" y2="14"></line><line x1="1" y1="9" x2="4" y2="9"></line><line x1="1" y1="14" x2="4" y2="14"></line></svg>
            Procedura Obliczeniowa
        </div>
        <h2 class="rk-algo-title">Jak obliczyć optymalny rozstaw <span>rur podłogówki?</span></h2>
        <p class="rk-algo-lead">
            Aby prawidłowo wyliczyć rozstaw rur, należy bezwzględnie oprzeć się na jednostkowym zapotrzebowaniu na ciepło <strong>q</strong> (W/m²), wyznaczonym z certyfikowanego bilansu OZC (zgodnego z normą <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" class="rk-link">PN-EN 12831</a>). Projektant dopasowuje rozstaw tak, aby opór cieplny okładziny nie zablokował strumienia ciepła. Poznaj algorytm stosowany w biurach inżynierskich.
        </p>
    </div>

    <div class="rk-algo-body">
        
        <div class="rk-algo-steps">
            <h3 class="rk-algo-h3">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="4 14 10 14 10 20"></polyline><polyline points="20 10 14 10 14 4"></polyline><line x1="14" y1="10" x2="21" y2="3"></line><line x1="3" y1="21" x2="10" y2="14"></line></svg>
                Algorytm Krok po Kroku
            </h3>
            
            <div class="rk-steps-list">
                <div class="rk-step-item">
                    <div class="rk-step-header">
                        <div class="rk-step-num">1</div>
                        <h4 class="rk-step-title">Wyznaczenie projektowego obciążenia cieplnego pomieszczenia (Q_obl)</h4>
                    </div>
                    <p class="rk-step-desc">Wartość pobieramy z <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-link">arkusza OZC</a> i korygujemy o inżynierski naddatek (15%) na szybkie podgrzanie po wietrzeniu.</p>
                    <div class="rk-formula">Q_obl = Q_OZC × 1.15</div>
                </div>

                <div class="rk-step-item">
                    <div class="rk-step-header">
                        <div class="rk-step-num">2</div>
                        <h4 class="rk-step-title">Obliczenie gęstości strumienia cieplnego posadzki (q)</h4>
                    </div>
                    <p class="rk-step-desc">Dzielimy moc przez pow. grzewczą netto (bez stałej zabudowy). <em>Przykład: 800W / 12m² = 66,67 W/m².</em></p>
                    <div class="rk-formula">q = Q_obl / A_eff</div>
                </div>

                <div class="rk-step-item">
                    <div class="rk-step-header">
                        <div class="rk-step-num">3</div>
                        <h4 class="rk-step-title">Wyznaczenie temperatur (t_m oraz dt_ln)</h4>
                    </div>
                    <p class="rk-step-desc">Obliczamy średnią temperaturę czynnika oraz logarytmiczną różnicę temperatur między wodą a powietrzem.</p>
                    <div class="rk-formula">t_m = t_z - (ΔT / 2)</div>
                </div>

                <div class="rk-step-item" style="border-color: var(--rk-algo-brand);">
                    <div class="rk-step-header">
                        <div class="rk-step-num">4</div>
                        <h4 class="rk-step-title">Dobór rozstawu rur (b) z funkcji przewodzenia</h4>
                    </div>
                    <p class="rk-step-desc">Jeśli strumień <strong>q > 60 W/m²</strong>, bezwzględnie krok 10 cm. W przedziale <strong>35-60 W/m²</strong> stosuje się krok 15 cm. Poniżej <strong>35 W/m²</strong> to <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-link">krok 20 cm</a>.</p>
                    <div class="rk-formula">b = [ λ_jastrych × (t_m - t_f) ] / (q × ψ)</div>
                </div>
            </div>
        </div>

        <div class="rk-calc-box">
            <h3 class="rk-algo-h3" style="color: var(--rk-algo-accent); margin-bottom: 30px;">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><line x1="8" y1="6" x2="16" y2="6"></line><line x1="16" y1="14" x2="16.01" y2="14"></line><line x1="12" y1="14" x2="12.01" y2="14"></line><line x1="8" y1="14" x2="8.01" y2="14"></line><line x1="16" y1="18" x2="16.01" y2="18"></line><line x1="12" y1="18" x2="12.01" y2="18"></line><line x1="8" y1="18" x2="8.01" y2="18"></line><line x1="16" y1="10" x2="16.01" y2="10"></line><line x1="12" y1="10" x2="12.01" y2="10"></line><line x1="8" y1="10" x2="8.01" y2="10"></line></svg>
                Symulator Kroków 1 i 2
            </h3>

            <div class="rk-calc-group">
                <div class="rk-calc-lbl">
                    <span>Moc z OZC (Q_OZC)</span>
                    <span class="rk-calc-val" id="rk-val-ozc">800 W</span>
                </div>
                <input type="range" class="rk-algo-range" id="rk-slider-ozc" min="200" max="1500" step="50" value="800">
            </div>

            <div class="rk-calc-group">
                <div class="rk-calc-lbl">
                    <span>Pow. Netto Pętli (A_eff)</span>
                    <span class="rk-calc-val" id="rk-val-area">12 m²</span>
                </div>
                <input type="range" class="rk-algo-range" id="rk-slider-area" min="5" max="25" step="1" value="12">
            </div>

            <div class="rk-results-panel">
                <div class="rk-res-row">
                    <span class="rk-res-name">Moc skorygowana (Q_obl):</span>
                    <span class="rk-res-data" id="rk-res-qobl">920 W</span>
                </div>
                <div class="rk-res-row">
                    <span class="rk-res-name">Gęstość strumienia (q):</span>
                    <span class="rk-res-data" id="rk-res-q" style="color: #fcd34d;">76.7 W/m²</span>
                </div>
                <div class="rk-res-row" style="margin-top: 10px; border: none;">
                    <span class="rk-res-name">Wynikowy rozstaw (b):</span>
                    <span class="rk-res-data rk-res-highlight" id="rk-res-spacing">10 cm</span>
                </div>
            </div>

            <div class="rk-svg-viewport">
                <svg class="rk-svg-blueprint" viewBox="0 0 200 60">
                    <rect x="0" y="20" width="200" height="40" class="rk-bp-concrete" rx="2"/>
                    <line x1="0" y1="20" x2="200" y2="20" stroke="#475569" stroke-width="2"/>
                    
                    <g class="rk-group-10" id="rk-bp-10">
                        <circle cx="25" cy="40" r="5" class="rk-bp-pipe"/>
                        <circle cx="50" cy="40" r="5" class="rk-bp-pipe"/>
                        <circle cx="75" cy="40" r="5" class="rk-bp-pipe"/>
                        <circle cx="100" cy="40" r="5" class="rk-bp-pipe"/>
                        <circle cx="125" cy="40" r="5" class="rk-bp-pipe"/>
                        <circle cx="150" cy="40" r="5" class="rk-bp-pipe"/>
                        <circle cx="175" cy="40" r="5" class="rk-bp-pipe"/>
                        <line x1="75" y1="10" x2="100" y2="10" class="rk-bp-dim"/>
                        <line x1="75" y1="5" x2="75" y2="15" stroke="#94a3b8"/>
                        <line x1="100" y1="5" x2="100" y2="15" stroke="#94a3b8"/>
                        <text x="87.5" y="8" class="rk-bp-text" text-anchor="middle">10cm</text>
                    </g>

                    <g class="rk-group-15" id="rk-bp-15">
                        <circle cx="20" cy="40" r="5" class="rk-bp-pipe"/>
                        <circle cx="60" cy="40" r="5" class="rk-bp-pipe"/>
                        <circle cx="100" cy="40" r="5" class="rk-bp-pipe"/>
                        <circle cx="140" cy="40" r="5" class="rk-bp-pipe"/>
                        <circle cx="180" cy="40" r="5" class="rk-bp-pipe"/>
                        <line x1="60" y1="10" x2="100" y2="10" class="rk-bp-dim"/>
                        <line x1="60" y1="5" x2="60" y2="15" stroke="#94a3b8"/>
                        <line x1="100" y1="5" x2="100" y2="15" stroke="#94a3b8"/>
                        <text x="80" y="8" class="rk-bp-text" text-anchor="middle">15cm</text>
                    </g>

                    <g class="rk-group-20" id="rk-bp-20">
                        <circle cx="35" cy="40" r="5" class="rk-bp-pipe"/>
                        <circle cx="80" cy="40" r="5" class="rk-bp-pipe"/>
                        <circle cx="125" cy="40" r="5" class="rk-bp-pipe"/>
                        <circle cx="170" cy="40" r="5" class="rk-bp-pipe"/>
                        <line x1="80" y1="10" x2="125" y2="10" class="rk-bp-dim"/>
                        <line x1="80" y1="5" x2="80" y2="15" stroke="#94a3b8"/>
                        <line x1="125" y1="5" x2="125" y2="15" stroke="#94a3b8"/>
                        <text x="102.5" y="8" class="rk-bp-text" text-anchor="middle">20cm</text>
                    </g>
                </svg>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domeny (Brak H2/H3 w Alercie)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-algo-app').innerHTML = `
            <div style="padding:40px; text-align:center; background:#0f172a; border-radius:24px; border:2px solid #ef4444; color:#fff; font-family:sans-serif; margin:40px auto; max-width:800px;">
                <div style="font-size: 40px; margin-bottom: 15px;">🛑</div>
                <div style="color:#ef4444; font-size:22px; font-weight:900; margin-bottom:10px; text-transform:uppercase;">Naruszenie Praw Autorskich</div>
                <div style="color:#cbd5e1; font-size:15px; line-height:1.6;">Skrypt algorytmu oraz znaczników JSON-LD jest własnością Projekt-Ogrzewania.pl. Użycie zabronione.</div>
            </div>
        `;
        return;
    }

    // 2. Logika Algorytmu OZC
    const sliderOzc = document.getElementById('rk-slider-ozc');
    const valOzc = document.getElementById('rk-val-ozc');
    const sliderArea = document.getElementById('rk-slider-area');
    const valArea = document.getElementById('rk-val-area');
    
    const resQobl = document.getElementById('rk-res-qobl');
    const resQ = document.getElementById('rk-res-q');
    const resSpacing = document.getElementById('rk-res-spacing');
    
    // SVG Grupy
    const bp10 = document.getElementById('rk-bp-10');
    const bp15 = document.getElementById('rk-bp-15');
    const bp20 = document.getElementById('rk-bp-20');

    function calculateAlgorithm() {
        const q_ozc = parseInt(sliderOzc.value);
        const a_eff = parseFloat(sliderArea.value);
        
        // Aktualizacja labeli
        valOzc.textContent = q_ozc + ' W';
        valArea.textContent = a_eff + ' m²';

        // Matematyka inżynierska
        const q_obl = Math.round(q_ozc * 1.15); // +15%
        const q_strumien = (q_obl / a_eff).toFixed(1);

        // Wyniki text
        resQobl.textContent = q_obl + ' W';
        resQ.textContent = q_strumien + ' W/m²';

        // Warunki doboru (krok 5)
        let spacingResult = "15 cm";
        let activeLayer = bp15;
        let color = "#10b981"; // Green (Optimum)

        if (q_strumien > 60) {
            spacingResult = "10 cm";
            activeLayer = bp10;
            color = "#ef4444"; // Red (High load)
        } else if (q_strumien < 35) {
            spacingResult = "20 cm";
            activeLayer = bp20;
            color = "#0ea5e9"; // Blue (Low load)
        }

        resQ.style.color = color;
        resSpacing.textContent = spacingResult;

        // Aktualizacja SVG wizualizacji (z użyciem transition)
        bp10.classList.remove('active');
        bp15.classList.remove('active');
        bp20.classList.remove('active');
        activeLayer.classList.add('active');
    }

    // Nasłuchiwacze
    sliderOzc.addEventListener('input', calculateAlgorithm);
    sliderArea.addEventListener('input', calculateAlgorithm);
    
    // Inicjalizacja
    calculateAlgorithm();
});
</script>



<ol start="1" class="wp-block-list">
<li></li>
</ol>



<style>
:root {
    --rk-pcalc-dark: #0f172a;
    --rk-pcalc-brand: #3b82f6;
    --rk-pcalc-accent: #60a5fa;
    --rk-pcalc-bg: #ffffff;
    --rk-pcalc-text: #334155;
    --rk-pcalc-muted: #64748b;
    --rk-pcalc-border: #e2e8f0;
}

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

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

.rk-pcalc-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(59, 130, 246, 0.25);
    color: #93c5fd;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(59, 130, 246, 0.3);
}

.rk-pcalc-title {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
}

.rk-pcalc-title span { color: var(--rk-pcalc-accent); }

.rk-pcalc-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #e2e8f0;
    margin: 0;
}

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

.rk-link:hover { color: #2563eb; border-bottom-style: solid; }

/* Moduł zawartości */
.rk-pcalc-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

/* Tabela Responsywna */
.rk-table-section { margin-top: 10px; }

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

.rk-table-header { display: none; }

.rk-table-row {
    background: #ffffff;
    border: 1px solid var(--rk-pcalc-border);
    border-radius: 16px;
    padding: 20px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    display: grid;
    gap: 12px;
}

.rk-cell {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 14px;
    border-bottom: 1px dashed var(--rk-pcalc-border);
    padding-bottom: 8px;
}
.rk-cell:last-child { border-bottom: none; padding-bottom: 0; }

.rk-cell-lbl { font-weight: 700; color: var(--rk-pcalc-muted); }
.rk-cell-val { font-weight: 900; color: var(--rk-pcalc-dark); font-size: 16px; }
.rk-cell-val.main { color: var(--rk-pcalc-brand); font-size: 18px; }

/* Case Study */
.rk-case-study {
    background: #ffffff;
    border-left: 4px solid var(--rk-pcalc-brand);
    padding: 25px 30px;
    border-radius: 0 16px 16px 0;
    margin-top: 40px;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05);
}

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

.rk-math-block {
    background: var(--rk-pcalc-dark);
    color: #ffffff;
    padding: 15px 20px;
    border-radius: 12px;
    font-family: monospace;
    font-size: 14px;
    margin-bottom: 15px;
}

.rk-math-block span { color: var(--rk-pcalc-accent); font-weight: bold; }

.rk-alert-red {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    background: rgba(239, 68, 68, 0.08);
    color: #b91c1c;
    padding: 16px 20px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.6;
    margin-top: 15px;
    border: 1px solid rgba(239, 68, 68, 0.2);
}

@media (min-width: 850px) {
    .rk-grid-table {
        background: #ffffff;
        border: 1px solid var(--rk-pcalc-border);
        border-radius: 16px;
        overflow: hidden;
        gap: 0;
    }
    .rk-table-header {
        display: grid;
        grid-template-columns: 1fr 1fr 1fr 1.2fr 1.2fr;
        background: var(--rk-pcalc-dark);
        color: #ffffff;
        padding: 15px 20px;
        font-size: 12px;
        font-weight: 800;
        text-transform: uppercase;
        text-align: center;
    }
    .rk-table-row {
        grid-template-columns: 1fr 1fr 1fr 1.2fr 1.2fr;
        border: none;
        border-bottom: 1px solid var(--rk-pcalc-border);
        border-radius: 0;
        padding: 15px 20px;
        box-shadow: none;
        align-items: center;
        text-align: center;
    }
    .rk-table-row:last-child { border-bottom: none; }
    .rk-cell { display: block; border: none; padding: 0; }
    .rk-cell-lbl { display: none; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#article-rura",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/"
    },
    "headline": "Ile rury PEX/PERT potrzeba na m² ogrzewania podłogowego?",
    "description": "Zestawienie zużycia rury 16x2 mm dla rozstawów 10, 15 i 20 cm. Parametry techniczne i obliczanie pętli grzewczych.",
    "author": { "@type": "Person", "name": "Robert Kucharski" },
    "datePublished": "2026-05-21",
    "dateModified": "2026-05-21"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#dataset-rura",
    "name": "Parametry techniczno-hydrauliczne rury PEX-Al-PEX 16x2 mm",
    "description": "Tabela zużycia materiałów: mb na m², pojemność wodna i waga jastrychu.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": { "@type": "Person", "name": "Robert Kucharski" },
    "keywords": ["zużycie rury PEX", "pojemność wodna podłogówki", "waga jastrychu"],
    "measurementTechnique": "Obliczenia geometryczne zapotrzebowania z 5% naddatkiem montażowym.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rozstaw 10 cm: 10 mb/m²",
        "Rozstaw 15 cm: 6.67 mb/m²",
        "Rozstaw 20 cm: 5.0 mb/m²"
      ]
    }
  }
]
</script>

<div class="rk-pcalc-container">
    <div class="rk-pcalc-header">
        <div class="rk-pcalc-badge">Zestawienie Materiałowe</div>
        <h2 class="rk-pcalc-title">Ile rury PEX/PERT potrzeba <span>na m² ogrzewania?</span></h2>
        <p class="rk-pcalc-lead">
            Dla rozstawu rur co 10 cm zużycie materiału wynosi dokładnie 10 mb/m², dla 15 cm jest to 6,67 mb/m², a dla 20 cm spada do 5 mb/m². Do wartości czysto geometrycznych należy doliczyć od <strong>5% do 10% naddatku</strong> na podejścia do <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/" class="rk-link-light">rozdzielacza</a>.
        </p>
    </div>

    <div class="rk-pcalc-interactive">
        <div class="rk-table-section">
            <div class="rk-grid-table">
                <div class="rk-table-header">
                    <div>Rozstaw rur</div>
                    <div>Zużycie [mb/m²]</div>
                    <div>Pojemność [l/m²]</div>
                    <div>Max obszar pętli [m²]</div>
                    <div>Waga posadzki [kg/m²]</div>
                </div>
                <div class="rk-table-row">
                    <div class="rk-cell"><span class="rk-cell-lbl">Rozstaw rur:</span> <span class="rk-cell-val main">10 cm</span></div>
                    <div class="rk-cell"><span class="rk-cell-lbl">Zużycie:</span> <span class="rk-cell-val">10.0 mb/m²</span></div>
                    <div class="rk-cell"><span class="rk-cell-lbl">Pojemność:</span> <span class="rk-cell-val">1.13 l/m²</span></div>
                    <div class="rk-cell"><span class="rk-cell-lbl">Max obszar:</span> <span class="rk-cell-val">10.0 m²</span></div>
                    <div class="rk-cell"><span class="rk-cell-lbl">Waga posadzki:</span> <span class="rk-cell-val">145 kg/m²</span></div>
                </div>
                <div class="rk-table-row">
                    <div class="rk-cell"><span class="rk-cell-lbl">Rozstaw rur:</span> <span class="rk-cell-val main">15 cm</span></div>
                    <div class="rk-cell"><span class="rk-cell-lbl">Zużycie:</span> <span class="rk-cell-val">6.67 mb/m²</span></div>
                    <div class="rk-cell"><span class="rk-cell-lbl">Pojemność:</span> <span class="rk-cell-val">0.75 l/m²</span></div>
                    <div class="rk-cell"><span class="rk-cell-lbl">Max obszar:</span> <span class="rk-cell-val">15.0 m²</span></div>
                    <div class="rk-cell"><span class="rk-cell-lbl">Waga posadzki:</span> <span class="rk-cell-val">142 kg/m²</span></div>
                </div>
                <div class="rk-table-row">
                    <div class="rk-cell"><span class="rk-cell-lbl">Rozstaw rur:</span> <span class="rk-cell-val main">20 cm</span></div>
                    <div class="rk-cell"><span class="rk-cell-lbl">Zużycie:</span> <span class="rk-cell-val">5.0 mb/m²</span></div>
                    <div class="rk-cell"><span class="rk-cell-lbl">Pojemność:</span> <span class="rk-cell-val">0.57 l/m²</span></div>
                    <div class="rk-cell"><span class="rk-cell-lbl">Max obszar:</span> <span class="rk-cell-val">20.0 m²</span></div>
                    <div class="rk-cell"><span class="rk-cell-lbl">Waga posadzki:</span> <span class="rk-cell-val">140 kg/m²</span></div>
                </div>
            </div>
        </div>

        <div class="rk-case-study">
            <h4 style="font-size: 18px; font-weight: 800; color: var(--rk-pcalc-dark); margin: 0 0 15px 0;">Obliczenie i podział na pętle w praktyce</h4>
            <p>Wyobraźmy sobie duży salon o powierzchni <strong>40 m²</strong>. Planujemy ułożyć rury co <strong>15 cm</strong>.</p>
            <div class="rk-math-block">
                1. Długość bazowa: 40 m² × 6,67 mb/m² = <span>266,8 mb</span><br>
                2. Z naddatkiem 5%: 266,8 × 1,05 = <span>280,1 mb rury</span>
            </div>
            <p>Ponieważ <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/" class="rk-link">maksymalna długość pętli</a> dla rury 16 mm wynosi 100 mb, dzielimy salon na <strong>3 niezależne obwody</strong>.</p>
            <div class="rk-alert-red">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                <span>Próba ułożenia tego na dwóch pętlach po 140 mb skończyłaby się katastrofą hydrauliczną (<a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/" style="color: inherit; text-decoration: underline; white-space: nowrap;">za długa pętla</a>).</span>
            </div>
        </div>
    </div>
</div>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-panel: #1e293b;
    --rk-err-danger: #ef4444; /* Czerwony - Błędy / Przeciążenie */
    --rk-err-warn: #f59e0b;   /* Żółty - Ostrzeżenie */
    --rk-err-success: #10b981; /* Zielony - Optymalnie */
    --rk-err-cold: #3b82f6;   /* Niebieski - Niedogrzanie */
    --rk-err-bg: #f8fafc;
    --rk-err-border: #e2e8f0;
    --rk-err-text: #334155;
    --rk-err-muted: #64748b;
}

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

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

.rk-err-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(239, 68, 68, 0.2);
    color: #fca5a5;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(239, 68, 68, 0.3);
}

.rk-err-title {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
}

.rk-err-title span { color: #f87171; }

.rk-err-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #e2e8f0;
    margin: 0;
}

.rk-link {
    color: #fca5a5;
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed rgba(252, 165, 165, 0.5);
    transition: all 0.3s;
}

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

/* Interaktywny Symulator Błędów */
.rk-err-interactive {
    padding: 40px 50px;
}

.rk-err-h3 {
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-err-dark);
    margin: 0 0 25px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-err-grid {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: 30px;
    margin-bottom: 40px;
}

/* Panel Suwaka */
.rk-sim-controls {
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-err-border);
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05);
    display: flex;
    flex-direction: column;
}

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

.rk-ctrl-lbl {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-err-muted);
    text-transform: uppercase;
}

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

/* Unikalna klasa dla suwaka */
.rk-err-range {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    background: linear-gradient(90deg, #ef4444 0%, #10b981 50%, #3b82f6 100%);
    border-radius: 4px;
    outline: none;
    margin-bottom: 30px;
}

.rk-err-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #ffffff;
    cursor: pointer;
    box-shadow: 0 0 15px rgba(0,0,0,0.2);
    border: 5px solid var(--rk-err-dark);
    transition: transform 0.1s;
}

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

/* Wskaźniki parametrów */
.rk-param-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-top: auto;
}

.rk-param-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 15px;
    background: var(--rk-err-bg);
    border-radius: 10px;
    font-size: 14px;
    border: 1px solid var(--rk-err-border);
}

.rk-param-item span:first-child { font-weight: 700; color: var(--rk-err-muted); }
.rk-param-item span:last-child { font-weight: 900; }

/* Panel Wizualizacji SVG */
.rk-viz-board {
    background: var(--rk-err-dark);
    border-radius: 20px;
    border: 2px solid #334155;
    position: relative;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    box-shadow: inset 0 0 30px rgba(0,0,0,0.6);
}

.rk-viz-status {
    position: absolute;
    top: 20px; left: 20px; right: 20px;
    background: rgba(0,0,0,0.6);
    backdrop-filter: blur(4px);
    padding: 15px;
    border-radius: 12px;
    color: #ffffff;
    font-weight: 800;
    font-size: 15px;
    text-align: center;
    z-index: 10;
    border: 1px solid rgba(255,255,255,0.1);
}

.rk-svg-layer {
    width: 100%;
    height: 100%;
    min-height: 250px;
    display: none; /* Przełączane przez JS */
}
.rk-svg-layer.active { display: block; }

/* Animacje SVG */
.rk-anim-laminar { stroke-dasharray: 20 10; animation: flowSlow 4s linear infinite; }
.rk-anim-turbulent { stroke-dasharray: 5 10 15 5; animation: flowFast 1s linear infinite; }
.rk-anim-pump-shake { animation: shakeError 0.3s ease-in-out infinite; transform-origin: center; }
.rk-anim-zebra { opacity: 0; animation: pulseZebra 3s infinite alternate; }

@keyframes flowSlow { to { stroke-dashoffset: -60; } }
@keyframes flowFast { to { stroke-dashoffset: -100; } }
@keyframes pulseZebra { from { opacity: 0.2; } to { opacity: 0.8; } }
@keyframes shakeError {
    0%, 100% { transform: translate(0, 0) rotate(0deg); }
    25% { transform: translate(-2px, 2px) rotate(-2deg); }
    50% { transform: translate(2px, -2px) rotate(2deg); }
    75% { transform: translate(-2px, -2px) rotate(-1deg); }
}

/* Karty Skutków Błędów */
.rk-effects-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 40px;
}

.rk-effect-card {
    background: #ffffff;
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-err-border);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-effect-card.dense { border-top: 4px solid var(--rk-err-danger); }
.rk-effect-card.sparse { border-top: 4px solid var(--rk-err-cold); }

.rk-effect-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-err-dark);
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-effect-list {
    margin: 0; padding: 0; list-style: none;
}

.rk-effect-list li {
    font-size: 14px;
    color: var(--rk-err-text);
    line-height: 1.6;
    margin-bottom: 10px;
    padding-left: 20px;
    position: relative;
}

.rk-effect-list li::before {
    content: '→';
    position: absolute;
    left: 0; top: 0;
    color: var(--rk-err-muted);
    font-weight: bold;
}

/* Case Study - Obliczenia */
.rk-case-block {
    background: var(--rk-err-panel);
    border-radius: 20px;
    padding: 30px;
    color: #ffffff;
}

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

.rk-case-header svg { color: var(--rk-err-warn); }

.rk-case-text {
    font-size: 15px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0 0 20px 0;
}

.rk-case-math {
    background: #000000;
    padding: 20px;
    border-radius: 12px;
    font-family: 'Courier New', Courier, monospace;
    font-size: 14px;
    color: #38bdf8;
    border: 1px dashed #334155;
    margin-bottom: 20px;
}

.rk-case-math span { color: #f87171; font-weight: bold; }

.rk-alert-box {
    background: rgba(239, 68, 68, 0.15);
    border-left: 4px solid var(--rk-err-danger);
    padding: 15px 20px;
    border-radius: 0 10px 10px 0;
    font-size: 14px;
    font-weight: 600;
    color: #fca5a5;
    line-height: 1.6;
}

@media (max-width: 850px) {
    .rk-err-header, .rk-err-interactive { padding: 30px 20px; }
    .rk-err-grid, .rk-effects-grid { grid-template-columns: 1fr; }
    .rk-viz-board { height: 280px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/"
    },
    "headline": "Jakie są konsekwencje błędów w gęstości układania podłogówki?",
    "description": "Analiza skutków błędnego rozstawu rur w ogrzewaniu podłogowym. Dowiedz się, dlaczego zbyt gęsty rozstaw niszczy pompę obiegową, a zbyt rzadki wywołuje zebrę termiczną.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-21",
    "dateModified": "2026-05-21"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#dataset-bledy",
    "name": "Parametry hydrauliczne i termiczne błędów montażowych O.P.",
    "description": "Zestawienie porównawcze konsekwencji skrajnych rozstawów rur: opory hydrauliczne (kPa), liczba Reynoldsa i zjawiska termiczne posadzki.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "skutki złego rozstawu rur",
      "przepływ laminarny podłogówka",
      "opór hydrauliczny pompy obiegowej",
      "efekt zebry termicznej",
      "błędy montażu ogrzewania podłogowego"
    ],
    "measurementTechnique": "Obliczenia hydrauliczne spadku ciśnienia, przepływu masowego (m = Q / (cp * ΔT)) oraz liczby Reynoldsa (Re > 4000 dla przepływu turbulentnego).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zbyt gęsty rozstaw (<10cm): Opory hydrauliczne > 35 kPa, przeciążenie pompy obiegowej, przepływ laminarny.",
        "Zbyt rzadki rozstaw (>20cm): Zebra termiczna na posadzce, spadek sprawności emisyjnej o 20%, wzrost rachunków o 15-24%."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#webapp-bledy",
    "name": "Symulator Błędów Hydraulicznych",
    "description": "Interaktywna animacja SVG diagnozująca problemy instalacyjne. Zmieniając rozstaw rur, użytkownik obserwuje powstawanie przepływu laminarnego lub zjawiska zebry termicznej.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 range input.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container" id="rk-err-app">
    <div class="rk-err-header">
        <div class="rk-err-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Demaskujemy Błędy Instalatorów
        </div>
        <h2 class="rk-err-title">Jakie są konsekwencje błędów <span>w gęstości układania podłogówki?</span></h2>
        <p class="rk-err-lead">
            Zbyt rzadki rozstaw rur (powyżej 20 cm) powoduje spadek sprawności emisyjnej o ponad 20% i powstawanie odczuwalnych różnic temperatur (tzw. zebra termiczna). Z kolei bezmyślne zagęszczanie (np. co 5 cm w całym domu) generuje potężne opory hydrauliczne przeciążające <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/" class="rk-link">pompę obiegową</a>, doprowadzając do wysoce niekorzystnego przepływu laminarnego zamiast turbulentnego.
        </p>
    </div>

    <div class="rk-err-interactive">
        <h3 class="rk-err-h3">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M12 8v4l3 3"></path></svg>
            Symulator Diagnostyczny Układu
        </h3>

        <div class="rk-err-grid">
            
            <div class="rk-sim-controls">
                <div class="rk-ctrl-header">
                    <span class="rk-ctrl-lbl">Rozstaw Rur na posadzce</span>
                    <span class="rk-ctrl-val" id="rk-val-display">15 cm</span>
                </div>
                
                <input type="range" class="rk-err-range" id="rk-err-slider" min="5" max="30" step="5" value="15">
                
                <div class="rk-param-list">
                    <div class="rk-param-item">
                        <span>Rodzaj przepływu:</span>
                        <span id="rk-stat-flow" style="color: var(--rk-err-success);">Turbulentny</span>
                    </div>
                    <div class="rk-param-item">
                        <span>Liczba Reynoldsa:</span>
                        <span id="rk-stat-re" style="color: var(--rk-err-success);">Re > 4000</span>
                    </div>
                    <div class="rk-param-item">
                        <span>Opór / Pompa:</span>
                        <span id="rk-stat-pump" style="color: var(--rk-err-success);">Optymalne (15 kPa)</span>
                    </div>
                </div>
            </div>

            <div class="rk-viz-board">
                <div class="rk-viz-status" id="rk-viz-alert">Wszystkie parametry w normie. Idealne oddawanie ciepła.</div>
                
                <svg class="rk-svg-layer" id="rk-scene-dense" viewBox="0 0 300 200" preserveAspectRatio="xMidYMid slice">
                    <rect x="20" y="80" width="260" height="40" fill="none" stroke="#64748b" stroke-width="4" rx="4"/>
                    <line x1="30" y1="90" x2="270" y2="90" stroke="#3b82f6" stroke-width="3" stroke-linecap="round" class="rk-anim-laminar"/>
                    <line x1="30" y1="100" x2="270" y2="100" stroke="#2563eb" stroke-width="3" stroke-linecap="round" class="rk-anim-laminar" style="animation-duration: 3s;"/>
                    <line x1="30" y1="110" x2="270" y2="110" stroke="#1d4ed8" stroke-width="3" stroke-linecap="round" class="rk-anim-laminar" style="animation-duration: 5s;"/>
                    <g class="rk-anim-pump-shake" transform="translate(150, 45)">
                        <circle cx="0" cy="0" r="25" fill="#ef4444" stroke="#7f1d1d" stroke-width="4"/>
                        <path d="M -10 -10 L 10 10 M 10 -10 L -10 10" stroke="#ffffff" stroke-width="4" stroke-linecap="round"/>
                    </g>
                </svg>

                <svg class="rk-svg-layer active" id="rk-scene-optimal" viewBox="0 0 300 200" preserveAspectRatio="xMidYMid slice">
                    <rect x="20" y="80" width="260" height="40" fill="none" stroke="#64748b" stroke-width="4" rx="4"/>
                    <path d="M 30 100 Q 60 85 90 100 T 150 100 T 210 100 T 270 100" fill="none" stroke="#10b981" stroke-width="4" class="rk-anim-turbulent"/>
                    <path d="M 30 100 Q 60 115 90 100 T 150 100 T 210 100 T 270 100" fill="none" stroke="#34d399" stroke-width="3" class="rk-anim-turbulent" style="animation-direction: reverse;"/>
                    
                    <g transform="translate(150, 45)">
                        <circle cx="0" cy="0" r="25" fill="#10b981" stroke="#065f46" stroke-width="4"/>
                        <polyline points="-10,0 0,10 15,-10" fill="none" stroke="#ffffff" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
                    </g>
                </svg>

                <svg class="rk-svg-layer" id="rk-scene-sparse" viewBox="0 0 300 200" preserveAspectRatio="xMidYMid slice">
                    <rect x="0" y="100" width="300" height="60" fill="#1e293b"/>
                    <circle cx="50" cy="130" r="10" fill="#ef4444"/>
                    <circle cx="250" cy="130" r="10" fill="#ef4444"/>
                    
                    <rect x="0" y="90" width="100" height="10" fill="#f87171" class="rk-anim-zebra"/>
                    <rect x="100" y="90" width="100" height="10" fill="#3b82f6" class="rk-anim-zebra" style="animation-delay: 1.5s;"/>
                    <rect x="200" y="90" width="100" height="10" fill="#f87171" class="rk-anim-zebra"/>

                    <text x="150" y="70" fill="#93c5fd" font-size="14" font-weight="bold" text-anchor="middle">STREFA CHŁODU (ZEBRA)</text>
                </svg>
            </div>
        </div>

        <h3 class="rk-err-h3">Skutki techniczno-finansowe w praktyce</h3>
        
        <div class="rk-effects-grid">
            <div class="rk-effect-card dense">
                <h4 class="rk-effect-title"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-err-danger)" stroke-width="3"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg> Zbyt gęsty rozstaw (< 10 cm wszędzie)</h4>
                <ul class="rk-effect-list">
                    <li><strong>Drastyczny wzrost kosztów inwestycyjnych:</strong> Zużywasz dwa razy więcej rury PEX oraz plastyfikatorów do betonu.</li>
                    <li><strong>Przewymiarowany rozdzielacz:</strong> Zamiast 6 sekcji, potrzebujesz drogiego modelu na 12 sekcji.</li>
                    <li><strong>Spadek prędkości wody:</strong> Przez opory hydrauliczne pompa obiegowa zwalnia, przepływ staje się laminarny i pogarsza się proces oddawania ciepła do jastrychu.</li>
                </ul>
            </div>

            <div class="rk-effect-card sparse">
                <h4 class="rk-effect-title"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-err-cold)" stroke-width="3"><line x1="5" y1="12" x2="19" y2="12"></line></svg> Zbyt rzadki rozstaw (25 - 30 cm)</h4>
                <ul class="rk-effect-list">
                    <li><strong>Nierównomierne nagrzewanie:</strong> Stopa człowieka wyczuwa gorące pasy nad rurą i lodowate przestrzenie pomiędzy nimi.</li>
                    <li><strong>Wzrost rachunków za ogrzewanie:</strong> Aby dogrzać dom, inwestor podnosi temperaturę na pompie o 5-8°C.</li>
                    <li><strong>Utrata efektywności:</strong> Spadek <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/" class="rk-link" style="color: var(--rk-err-text); border-color: var(--rk-err-muted);">delty temperatur (ΔT)</a> generuje wzrost kosztów prądu o 15-24% w skali całego roku.</li>
                </ul>
            </div>
        </div>

        <div class="rk-case-block">
            <div class="rk-case-header">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>
                <h4 style="margin: 0; font-size: 18px;">Przykład z inżynierskiego biurka</h4>
            </div>
            
            <p class="rk-case-text">
                Aby w rurze grzewczej zachodziła efektywna wymiana ciepła, ruch wody musi mieć charakter turbulentny (burzliwy), co odpowiada liczbie Reynoldsa <strong>Re > 4000</strong>. Przyjrzyjmy się konkretnym wyliczeniom dla całego domu o zapotrzebowaniu na moc <strong>Q = 11,5 kW</strong>, przy standardowym spadku temperatury ΔT = 5K:
            </p>

            <div class="rk-case-math">
                // Obliczenie masowego przepływu czynnika:<br>
                m = Q / (cp * ΔT)<br>
                m = 11.5 kW / (1.16 * 5K)<br>
                Wymagany przepływ (m) = <span>1,98 m³/h</span>
            </div>

            <div class="rk-alert-box">
                Jeśli instalator zignoruje wyliczenia i zagęści rury "na oko" (np. co 5 cm), całkowity opór hydrauliczny instalacji łatwo <strong>przekroczy 35 kPa</strong>. Standardowa pompa obiegowa wbudowana w pompę ciepła (o wysokości podnoszenia 6 m słupa wody) "uklęknie" pod takim oporem. W efekcie podłogówka będzie zimna, mimo że rachunki za prąd będą rosły, a urządzenie będzie pracować na 100% mocy!
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domeny (Brak tagów nagłówkowych w alercie)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-err-app').innerHTML = `
            <div style="padding:40px; text-align:center; background:#0f172a; border-radius:24px; border:2px solid #ef4444; color:#fff; font-family:sans-serif; margin:40px auto; max-width:800px;">
                <div style="font-size: 40px; margin-bottom: 15px;">🛑</div>
                <div style="color:#ef4444; font-size:22px; font-weight:900; margin-bottom:10px; text-transform:uppercase;">Naruszenie Praw Autorskich</div>
                <div style="color:#cbd5e1; font-size:15px; line-height:1.6;">Interaktywny symulator błędów oraz JSON-LD są własnością Projekt-Ogrzewania.pl. Użycie nielegalne.</div>
            </div>
        `;
        return;
    }

    // 2. Logika symulatora
    const slider = document.getElementById('rk-err-slider');
    const valDisplay = document.getElementById('rk-val-display');
    
    // Pola tekstowe
    const statFlow = document.getElementById('rk-stat-flow');
    const statRe = document.getElementById('rk-stat-re');
    const statPump = document.getElementById('rk-stat-pump');
    const alertBox = document.getElementById('rk-viz-alert');

    // Sceny SVG
    const sceneDense = document.getElementById('rk-scene-dense');
    const sceneOpti = document.getElementById('rk-scene-optimal');
    const sceneSparse = document.getElementById('rk-scene-sparse');

    function updateSimulator() {
        const val = parseInt(slider.value);
        valDisplay.textContent = val + " cm";

        // Ukrycie wszystkich scen
        sceneDense.classList.remove('active');
        sceneOpti.classList.remove('active');
        sceneSparse.classList.remove('active');

        // Kolory zdefiniowane w CSS
        const colorDanger = 'var(--rk-err-danger)';
        const colorWarn = 'var(--rk-err-warn)';
        const colorSuccess = 'var(--rk-err-success)';
        const colorCold = 'var(--rk-err-cold)';

        if (val < 10) {
            // ZBYT GĘSTO
            statFlow.textContent = "Laminarny (BŁĄD)";
            statFlow.style.color = colorDanger;
            
            statRe.textContent = "Re < 2000";
            statRe.style.color = colorDanger;
            
            statPump.textContent = "Krytyczne (>35 kPa)";
            statPump.style.color = colorDanger;

            alertBox.textContent = "BŁĄD: Przepływ laminarny. Pompa zablokowana przez potężny opór hydrauliczny!";
            alertBox.style.color = "#fca5a5";
            alertBox.style.borderColor = "#ef4444";

            sceneDense.classList.add('active');

        } else if (val >= 10 && val <= 15) {
            // OPTYMALNIE
            statFlow.textContent = "Turbulentny (Burzliwy)";
            statFlow.style.color = colorSuccess;
            
            statRe.textContent = "Re > 4000";
            statRe.style.color = colorSuccess;
            
            statPump.textContent = "Optymalne (15-20 kPa)";
            statPump.style.color = colorSuccess;

            alertBox.textContent = "IDEALNIE: Woda skutecznie odbiera ciepło. Pompa pracuje na luzie.";
            alertBox.style.color = "#6ee7b7";
            alertBox.style.borderColor = "#10b981";

            sceneOpti.classList.add('active');

        } else {
            // ZBYT RZADKO (20-30)
            statFlow.textContent = "Mieszany";
            statFlow.style.color = colorWarn;
            
            statRe.textContent = "Re ~ 3000";
            statRe.style.color = colorWarn;
            
            statPump.textContent = "Niskie (<10 kPa)";
            statPump.style.color = colorCold;

            alertBox.textContent = "BŁĄD: Zjawisko Zebry Termicznej. Podłoga ogrzewa się strefowo i niedogrzewa domu.";
            alertBox.style.color = "#93c5fd";
            alertBox.style.borderColor = "#3b82f6";

            sceneSparse.classList.add('active');
        }
    }

    // Nasłuch
    slider.addEventListener('input', updateSimulator);
    
    // Inicjalizacja domyślnego stanu (15cm)
    updateSimulator();
});
</script>



<style>
:root {
    --rk-slab-dark: #0f172a;
    --rk-slab-darker: #020617;
    --rk-slab-border: #334155;
    --rk-slab-text: #334155;
    --rk-slab-muted: #64748b;
    --rk-slab-bg: #ffffff;
    --rk-slab-panel: #f8fafc;
    
    /* Kolory warstw budowlanych */
    --rk-color-anhydrite: #f59e0b; /* Bursztynowy jastrych */
    --rk-color-cement: #94a3b8;    /* Betonowy szary */
    --rk-color-eps: #e2e8f0;       /* Styropian biały/szary */
    --rk-color-pir: #dae5d0;       /* Płyta PIR miętowa */
    --rk-color-heat: #ef4444;      /* Intensywne ciepło */
}

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

/* Nagłówek i Wstęp */
.rk-slab-header {
    background: linear-gradient(135deg, var(--rk-slab-darker) 0%, var(--rk-slab-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-color-anhydrite);
}

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

.rk-slab-title {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-slab-title span { color: var(--rk-color-anhydrite); }

.rk-slab-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-link {
    color: var(--rk-color-anhydrite);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed rgba(245, 158, 11, 0.5);
    transition: all 0.3s;
}

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

/* Panel sterowania i wizualizacji */
.rk-slab-body {
    padding: 40px 50px;
    display: grid;
    grid-template-columns: 360px 1fr;
    gap: 35px;
    background: #ffffff;
}

/* Lewa Kolumna: Kontrolki */
.rk-slab-controls {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-ctrl-group {
    background: var(--rk-slab-panel);
    border: 1px solid #e2e8f0;
    padding: 25px;
    border-radius: 20px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-ctrl-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-slab-muted);
    text-transform: uppercase;
    margin-bottom: 15px;
    display: block;
    letter-spacing: 0.5px;
}

/* Przełącznik Jastrychu (Tabs) */
.rk-screed-tabs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.rk-screed-btn {
    padding: 14px 10px;
    border: 2px solid #e2e8f0;
    background: #ffffff;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-slab-muted);
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    text-align: center;
}

.rk-screed-btn:hover { border-color: #cbd5e1; }
.rk-screed-btn.active[data-screed="anhydrite"] { border-color: var(--rk-color-anhydrite); background: #fefce8; color: #b45309; }
.rk-screed-btn.active[data-screed="cement"] { border-color: #64748b; background: #f1f5f9; color: #1e293b; }

/* Suwak Izolacji */
.rk-ins-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 10px;
}
.rk-ins-val { font-size: 20px; font-weight: 900; color: var(--rk-slab-dark); }

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

.rk-slab-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--rk-slab-dark);
    cursor: pointer;
    box-shadow: 0 0 10px rgba(0,0,0,0.15);
    border: 4px solid #ffffff;
    transition: transform 0.1s;
}
.rk-slab-range::-webkit-slider-thumb:hover { transform: scale(1.15); }

/* Parametry Wynikowe */
.rk-slab-outputs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-out-card {
    background: var(--rk-slab-panel);
    border: 1px solid #e2e8f0;
    padding: 15px;
    border-radius: 14px;
    text-align: center;
}

.rk-out-lbl { font-size: 11px; font-weight: 700; color: var(--rk-slab-muted); text-transform: uppercase; margin-bottom: 5px; }
.rk-out-val { font-size: 18px; font-weight: 900; color: var(--rk-slab-dark); }

/* Prawa Kolumna: Wizualizacja Przekroju SVG */
.rk-viz-board {
    background: var(--rk-slab-darker);
    border-radius: 20px;
    padding: 25px;
    display: flex;
    flex-direction: column;
    border: 1px solid var(--rk-slab-border);
    box-shadow: inset 0 0 40px rgba(0,0,0,0.8);
    position: relative;
}

.rk-svg-viewport {
    width: 100%;
    height: auto;
    margin-top: auto;
}

/* Elementy i klasy dynamiczne SVG */
.rk-svg-layer { transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); }
.rk-svg-pipe { fill: #ef4444; stroke: #b91c1c; stroke-width: 2; transition: all 0.5s; }
.rk-svg-text { fill: #94a3b8; font-size: 12px; font-family: monospace; transition: fill 0.5s; }
.rk-svg-dim { stroke: #475569; stroke-width: 1; stroke-dasharray: 2 2; transition: all 0.5s; }

/* Fale Transferu Ciepła (Radiacja boczna vs pionowa) */
.rk-wave-line { fill: none; stroke: var(--rk-color-heat); stroke-width: 2; stroke-linecap: round; opacity: 0.6; }
.rk-wave-group { opacity: 0; transform-origin: bottom; transition: all 0.5s; }
.rk-wave-group.active { opacity: 1; }

.rk-wave-lateral { stroke-dasharray: 6 6; animation: lateralMove 2s linear infinite; }
.rk-wave-vertical { stroke-dasharray: 6 6; animation: verticalMove 1.5s linear infinite; }

@keyframes lateralMove { to { stroke-dashoffset: -20; } }
@keyframes verticalMove { to { stroke-dashoffset: -20; } }

/* Blok Podsumowania struktury posadzki */
.rk-structural-alert {
    grid-column: 1 / -1;
    background: var(--rk-slab-panel);
    border: 1px solid #e2e8f0;
    border-radius: 20px;
    padding: 30px;
    margin-top: 10px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.01);
}

.rk-struct-title {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-slab-dark);
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-struct-desc {
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
    margin: 0;
}

.rk-blueprint-card {
    background: var(--rk-slab-dark);
    border: 1px solid var(--rk-slab-border);
    border-radius: 12px;
    padding: 20px;
    color: #ffffff;
    font-size: 14px;
    line-height: 1.6;
    margin-top: 20px;
}

.rk-bp-row {
    display: flex;
    justify-content: space-between;
    border-bottom: 1px dashed var(--rk-slab-border);
    padding: 8px 0;
}
.rk-bp-row:last-child { border-bottom: none; }
.rk-bp-lbl { color: #94a3b8; font-weight: 500; }
.rk-bp-val { font-weight: 700; color: #f1f5f9; }
.rk-bp-val span { color: var(--rk-color-anhydrite); }

@media (max-width: 850px) {
    .rk-slab-header, .rk-slab-body { padding: 30px 20px; }
    .rk-slab-body { grid-template-columns: 1fr; gap: 30px; }
    .rk-slab-outputs { grid-template-columns: 1fr; }
    .rk-structural-alert { padding: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#article-wylewka",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/"
    },
    "headline": "Jak grubość styropianu i rodzaj wylewki wpływają na efektywność rozstawu rur?",
    "description": "Analiza wpływu oporu cieplnego styropianu EPS/PIR oraz przewodności jastrychu anhydrytowego na rozstaw rur grzewczych. Wytyczne wg normy PN-EN 1264.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-21",
    "dateModified": "2026-05-21"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#dataset-wylewka",
    "name": "Korelacja przewodności jastrychu i oporu termicznego izolacji podłogowej",
    "description": "Zbiór danych technicznych odwzorowujący wpływ przewodnictwa cieplnego lambda (W/mK) wylewek oraz grubości izolacji na czas bezwładności i dopuszczalny krok rur.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wylewka na ogrzewanie podłogowe",
      "ile styropianu pod ogrzewanie podłogowe",
      "jastrych anhydrytowy przewodność",
      "opór cieplny izolacji R",
      "bezwładność cieplna podłogówki"
    ],
    "measurementTechnique": "Modelowanie pól temperatur i strumieni przewodzenia posadzki płaskiej zgodnie z normami PN-EN 1264-2 oraz PN-EN 12831.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Jastrych anhydrytowy: Lambda = 1.8 W/(mK), grubość nad rurą 35 mm, bezwładność cieplna 1.5-2h. Pozwala zwiększyć rozstaw o 2-3 cm.",
        "Jastrych cementowy: Lambda = 1.2 W/(mK), grubość nad rurą 45 mm, bezwładność cieplna 4-5h.",
        "Izolacja normowa: Minimum 15 cm EPS 100 lub 12 cm PIR dla zachowania oporu R >= 4.5 m²K/W."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#webapp-wylewka",
    "name": "Interaktywny Przekrój Płyty Grzewczej i Symulator Akumulacji",
    "description": "Aplikacja webowa symulująca kierunki rozchodzenia się strumienia ciepła (boczny transfer vs straty w grunt) w zależności od struktury fizycznej jastrychu i grubości izolacji EPS.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Canvas/SVG dynamic rendering support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-slab-container" id="rk-wylewka-slab">
    <div class="rk-slab-header">
        <div class="rk-slab-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="3" y1="15" x2="21" y2="15"></line></svg>
            Fizyka Przewodzenia i Akumulacji
        </div>
        <h2 class="rk-slab-title">Jak grubość styropianu i rodzaj wylewki <span>wpływają na rozstaw rur?</span></h2>
        <p class="rk-slab-lead">
            Grubość izolacji podłogi na gruncie musi wynosić minimum 15 cm styropianu klasy EPS 100 (lub 12 cm PIR), aby opór cieplny warstwy przekroczył wartość **R = 4,5 m²K/W**. Rodzaj wylewki bezpośrednio modyfikuje dynamikę oddawania ciepła: jastrych anhydrytowy o wysokiej przewodności **λ = 1,8 W/(m·K)** pozwala na bezpieczne zwiększenie projektowanego rozstawu rur o 2-3 cm w stosunku do tradycyjnej wylewki cementowej **(λ = 1,2 W/(m·K))**, zachowując identyczną temperaturę powierzchni posadzki.
        </p>
    </div>

    <div class="rk-slab-body">
        
        <div class="rk-slab-controls">
            <div class="rk-ctrl-group">
                <span class="rk-ctrl-label">1. Wybierz rodzaj wylewki</span>
                <div class="rk-screed-tabs">
                    <button class="rk-screed-btn active" data-screed="anhydrite">Anhydryt</button>
                    <button class="rk-screed-btn" data-screed="cement">Cementowa</button>
                </div>
            </div>

            <div class="rk-ctrl-group">
                <div class="rk-ins-header">
                    <span class="rk-ctrl-label" style="margin:0;">2. Grubość Izolacji (EPS)</span>
                    <span class="rk-ins-val" id="rk-ins-display">15 cm</span>
                </div>
                <input type="range" class="rk-slab-range" id="rk-ins-slider" min="5" max="25" step="5" value="15">
            </div>

            <div class="rk-slab-outputs">
                <div class="rk-out-card">
                    <div class="rk-out-lbl">Przewodność λ</div>
                    <div class="rk-out-val" id="rk-out-lambda" style="color: var(--rk-color-anhydrite);">1.8 W/mK</div>
                </div>
                <div class="rk-out-card">
                    <div class="rk-out-card-inner">
                        <div class="rk-out-lbl">Opór Termiczny R</div>
                        <div class="rk-out-val" id="rk-out-r">4.15 m²K/W</div>
                    </div>
                </div>
                <div class="rk-out-card">
                    <div class="rk-out-lbl">Bezwładność</div>
                    <div class="rk-out-val" id="rk-out-inertia">1.5 - 2.0 h</div>
                </div>
                <div class="rk-out-card">
                    <div class="rk-out-lbl">Zalecany krok b</div>
                    <div class="rk-out-val" id="rk-out-step" style="color: #10b981;">15 cm</div>
                </div>
            </div>
        </div>

        <div class="rk-viz-board">
            <div class="rk-viz-status">Techniczny Przekrój Płyty Grzewczej (Skala dynamiczna)</div>
            
            <div class="rk-svg-viewport">
                <svg viewBox="0 0 400 240" fill="none" id="rk-blueprint-svg">
                    <rect x="20" y="20" width="360" height="8" fill="#475569" rx="1"/>
                    
                    <rect id="svg-screed-layer" x="20" y="28" width="360" height="51" fill="url(#screedGradAnhydrite)"/>
                    
                    <rect id="svg-insulation-layer" x="20" y="79" width="360" height="60" fill="var(--rk-color-eps)" stroke="#cbd5e1" stroke-width="1"/>
                    
                    <rect id="svg-base-layer" x="20" y="139" width="360" height="40" fill="#334155"/>
                    <text id="svg-base-text" x="200" y="163" class="rk-svg-text" text-anchor="middle" fill="#64748b" font-weight="bold">BETON KONTRAKTOWY / GRUNT</text>

                    <g id="svg-waves-anhydrite" class="rk-wave-group active">
                        <path class="rk-wave-line rk-wave-lateral" d="M 100 55 Q 100 35 120 32 T 140 32"/>
                        <path class="rk-wave-line rk-wave-lateral" d="M 100 55 Q 100 35 80 32 T 60 32"/>
                        <path class="rk-wave-line rk-wave-lateral" d="M 260 55 Q 260 35 280 32 T 300 32"/>
                        <path class="rk-wave-line rk-wave-lateral" d="M 260 55 Q 260 35 240 32 T 220 32"/>
                    </g>
                    <g id="svg-waves-cement" class="rk-wave-group">
                        <path class="rk-wave-line rk-wave-vertical" d="M 80 65 L 80 32 M 100 65 L 100 32 M 120 65 L 120 32"/>
                        <path class="rk-wave-line rk-wave-vertical" d="M 240 75 L 240 32 M 260 75 L 260 32 M 280 75 L 280 32"/>
                    </g>

                    <g id="svg-pipes-container">
                        </g>

                    <g id="svg-dimensions">
                        <line id="dim-screed-line" x1="385" y1="28" x2="385" y2="79" stroke="#94a3b8" stroke-width="1"/>
                        <text id="dim-screed-text" x="390" y="58" fill="#94a3b8" font-size="11" font-family="monospace">51mm</text>

                        <line id="dim-ins-line" x1="385" y1="79" x2="385" y2="139" stroke="#94a3b8" stroke-width="1"/>
                        <text id="dim-ins-text" x="390" y="113" fill="#94a3b8" font-size="11" font-family="monospace">15cm</text>
                    </g>

                    <defs>
                        <linearGradient id="screedGradAnhydrite" x1="0" y1="0" x2="0" y2="1">
                            <stop offset="0%" stop-color="#fef08a"/>
                            <stop offset="100%" stop-color="#b45309"/>
                        </linearGradient>
                        <linearGradient id="screedGradCement" x1="0" y1="0" x2="0" y2="1">
                            <stop offset="0%" stop-color="#cbd5e1"/>
                            <stop offset="100%" stop-color="#475569"/>
                        </linearGradient>
                    </defs>
                </svg>
            </div>
        </div>

        <div class="rk-structural-alert">
            <h4 class="rk-struct-title">
                <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l-7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path></svg>
                Inżynierski model uwarstwienia radiatora podłogowego
            </h4>
            <p class="rk-struct-desc">
                Wylewka pełni funkcję płaszczyznowego radiatora. Jastrych anhydrytowy ma strukturę płynną podczas aplikacji, dzięki czemu całkowicie otula rury grzewcze, eliminując mikroskopijne pustki powietrzne będące izolatorem. Wyższa przewodność i redukcja grubości sprawiają, że układ anhydrytowy cechuje się skrajnie niską bezwładnością. Reaguje na zmianę parametrów automatyki pokojowej dwukrotnie szybciej niż gruby, porowaty beton cementowy z miksokreta.
            </p>

            <div class="rk-blueprint-card">
                <div class="rk-bp-row">
                    <span class="rk-bp-lbl">Warstwa 1: Wykończenie Posadzki</span>
                    <span class="rk-bp-val">Płytki ceramiczne lub panele dedykowane</span>
                </div>
                <div class="rk-bp-row">
                    <span class="rk-bp-lbl">Warstwa 2: Radiator Przekazujący</span>
                    <span class="rk-bp-val" id="rk-bp-layer2">Jastrych Anhydrytowy (λ = <span>1.8 W/mK</span>)</span>
                </div>
                <div class="rk-bp-row">
                    <span class="rk-bp-lbl">Warstwa 3: Rdzeń Emisyjny</span>
                    <span class="rk-bp-val" id="rk-bp-layer3">Rura PEX-Al-PEX Ø 16 mm w rozstawie co <span>15 cm</span></span>
                </div>
                <div class="rk-bp-row">
                    <span class="rk-bp-lbl">Warstwa 4: Blokada Termiczna (Straty w grunt)</span>
                    <span class="rk-bp-val" id="rk-bp-layer4">Styropian EPS 100 (Grubość: <span>15 cm</span>)</span>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Domain Lock) - Brak tagów H2/H3 w strukturze błędu
    const currentDomain = window.location.hostname;
    const trustedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!trustedDomains.includes(currentDomain)) {
        const mainApp = document.getElementById('rk-wylewka-slab');
        if (mainApp) {
            mainApp.innerHTML = `
                <div style="padding: 45px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif; max-width: 800px; margin: 40px auto;">
                    <div style="font-size: 45px; margin-bottom: 20px;">🛑</div>
                    <div style="font-size: 19px; font-weight: 900; margin-bottom: 12px; text-transform: uppercase; letter-spacing: 0.5px;">Wykryto Naruszenie Licencji Inżynierskiej</div>
                    <div style="font-size: 14px; color: #cbd5e1; max-width: 550px; margin: 0 auto; line-height: 1.6;">
                        Interaktywny kontener fizyki struktur grzewczych oraz powiązana struktura danych Dataset/WebApplication stanowią chronioną własność serwisu Projekt-Ogrzewania.pl. Kod został zablokowany.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora Dynamicznego
    const btnAnhydrite = document.querySelector('.rk-screed-btn[data-screed="anhydrite"]');
    const btnCement = document.querySelector('.rk-screed-btn[data-screed="cement"]');
    const insSlider = document.getElementById('rk-ins-slider');
    const insDisplay = document.getElementById('rk-ins-display');

    // Pola tekstowe UI
    const outLambda = document.getElementById('rk-out-lambda');
    const outR = document.getElementById('rk-out-r');
    const outInertia = document.getElementById('rk-out-inertia');
    const outStep = document.getElementById('rk-out-step');

    // Pola tekstowe struktury dolnej
    const bpLayer2 = document.getElementById('rk-bp-layer2');
    const bpLayer3 = document.getElementById('rk-bp-layer3');
    const bpLayer4 = document.getElementById('rk-bp-layer4');

    // Elementy dynamiczne SVG
    const svgScreed = document.getElementById('svg-screed-layer');
    const svgInsulation = document.getElementById('svg-insulation-layer');
    const svgBase = document.getElementById('svg-base-layer');
    const svgBaseText = document.getElementById('svg-base-text');
    const svgPipesContainer = document.getElementById('svg-pipes-container');
    const dimScreedLine = document.getElementById('dim-screed-line');
    const dimScreedText = document.getElementById('dim-screed-text');
    const dimInsLine = document.getElementById('dim-ins-line');
    const dimInsText = document.getElementById('dim-ins-text');

    const wavesAnhydrite = document.getElementById('svg-waves-anhydrite');
    const wavesCement = document.getElementById('svg-waves-cement');

    let selectedScreed = 'anhydrite'; // stan początkowy

    function updateSlabSimulation() {
        const thicknessCm = parseInt(insSlider.value);
        insDisplay.textContent = thicknessCm + ' cm';
        
        // Przeliczenie oporu R (Styropian EPS 100: lambda = 0.036 W/mK)
        const R_value = (thicknessCm / 100 / 0.036).toFixed(2);
        outR.textContent = R_value + ' m²K/W';

        // Konfiguracja zmiennych w zależności od wybranego jastrychu
        let lambdaText, inertiaText, stepText, screedHeightPx, screedFill, dimScreedLabel;
        let pipePoints = [];

        // Przelicznik cm izolacji na piksele w SVG (1cm = 4px)
        const insHeightPx = thicknessCm * 4;

        if (selectedScreed === 'anhydrite') {
            lambdaText = '1.8 W/mK';
            inertiaText = '1.5 - 2.0 h';
            stepText = '15 cm';
            screedHeightPx = 51; // 35mm nad rurą + 16mm rura
            screedFill = 'url(#screedGradAnhydrite)';
            dimScreedLabel = '51mm';
            
            outLambda.style.color = 'var(--rk-color-anhydrite)';
            outStep.style.color = '#10b981';
            wavesAnhydrite.classList.add('active');
            wavesCement.classList.remove('active');

            // 2 rury dla rozstawu 15cm w przekroju
            pipePoints = [110, 290];

            bpLayer2.innerHTML = 'Jastrych Anhydrytowy (λ = <span style="color:var(--rk-color-anhydrite);">1.8 W/mK</span>)';
            bpLayer3.innerHTML = 'Rura PEX-Al-PEX Ø 16 mm w rozstawie co <span style="color:#10b981;">15 cm</span>';
        } else {
            lambdaText = '1.2 W/mK';
            inertiaText = '4.0 - 5.0 h';
            stepText = '12 cm';
            screedHeightPx = 61; // 45mm nad rurą + 16mm rura
            screedFill = 'url(#screedGradCement)';
            dimScreedLabel = '61mm';
            
            outLambda.style.color = '#64748b';
            outStep.style.color = 'var(--rk-color-warn)';
            wavesAnhydrite.classList.remove('active');
            wavesCement.classList.add('active');

            // 4 rury dla rozstawu 12cm w przekroju
            pipePoints = [60, 150, 240, 330];

            bpLayer2.innerHTML = 'Wylewka Cementowa / Miksokret (λ = <span style="color:#94a3b8;">1.2 W/mK</span>)';
            bpLayer3.innerHTML = 'Rura PEX-Al-PEX Ø 16 mm w rozstawie co <span style="color:var(--rk-color-warn);">12 cm</span>';
        }

        // Aktualizacja danych tekstowych UI
        outLambda.textContent = lambdaText;
        outInertia.textContent = inertiaText;
        outStep.textContent = stepText;
        bpLayer4.innerHTML = 'Styropian EPS 100 (Grubość: <span style="color:#10b981;">' + thicknessCm + ' cm</span> | R = ' + R_value + ' m²K/W)';

        // Pozycjonowanie i wymiarowanie dynamicznych warstw SVG
        svgScreed.setAttribute('height', screedHeightPx);
        svgScreed.setAttribute('fill', screedFill);

        // Izolacja zaczyna się tam, gdzie kończy jastrych (28 + screedHeightPx)
        const insY = 28 + screedHeightPx;
        svgInsulation.setAttribute('y', insY);
        svgInsulation.setAttribute('height', insHeightPx);

        // Baza pod izolacją
        const baseY = insY + insHeightPx;
        svgBase.setAttribute('y', baseY);
        svgBaseText.setAttribute('y', baseY + 24);

        // Aktualizacja rur wewnątrz jastrychu (cy lokowane przy dnie jastrychu minus promień 8px)
        const pipeCy = insY - 8;
        let pipesHTML = '';
        pipePoints.forEach(cx => {
            pipesHTML += `<circle class="rk-svg-pipe" cx="${cx}" cy="${pipeCy}" r="8"/>`;
            pipesHTML += `<circle cx="${cx}" cy="${pipeCy}" r="3" fill="#ffffff"/>`;
        });
        svgPipesContainer.innerHTML = pipesHTML;

        // Aktualizacja linii wymiarowych po prawej stronie przekroju
        dimScreedLine.setAttribute('y1', 28);
        dimScreedLine.setAttribute('y2', insY);
        dimScreedText.setAttribute('y', 28 + (screedHeightPx / 2) + 4);
        dimScreedText.textContent = dimScreedLabel;

        dimInsLine.setAttribute('y1', insY);
        dimInsLine.setAttribute('y2', baseY);
        dimInsText.setAttribute('y', insY + (insHeightPx / 2) + 4);
        dimInsText.textContent = thicknessCm + 'cm';
    }

    // Eventy przełączania jastrychów
    btnAnhydrite.addEventListener('click', function() {
        btnCement.classList.remove('active');
        this.classList.add('active');
        selectedScreed = 'anhydrite';
        updateSlabSimulation();
    });

    btnCement.addEventListener('click', function() {
        btnAnhydrite.classList.remove('active');
        this.classList.add('active');
        selectedScreed = 'cement';
        updateSlabSimulation();
    });

    // Event suwaka izolacji
    insSlider.addEventListener('input', updateSlabSimulation);

    // Pierwsze uruchomienie
    updateSlabSimulation();
});
</script>



<style>
:root {
    --rk-proj-dark: #0f172a;
    --rk-proj-darker: #020617;
    --rk-proj-blue: #2563eb;
    --rk-proj-accent: #38bdf8;
    --rk-proj-text: #334155;
    --rk-proj-muted: #64748b;
    --rk-proj-border: #e2e8f0;
    --rk-proj-bg: #ffffff;
    --rk-proj-panel: #f8fafc;
    
    /* Kolory systemów */
    --rk-col-ozc: #ef4444;       /* OZC / Ciepło */
    --rk-col-vent: #10b981;      /* Rekuperacja / Powietrze */
    --rk-col-hydr: #3b82f6;      /* Hydraulika / Rotametry */
}

.rk-proj-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: var(--rk-proj-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(37, 99, 235, 0.12);
    border: 1px solid var(--rk-proj-border);
    overflow: hidden;
    color: #1e293b;
}

/* Sekcja Nagłówkowa */
.rk-proj-header {
    background: linear-gradient(135deg, var(--rk-proj-darker) 0%, var(--rk-proj-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-proj-blue);
}

.rk-proj-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(37, 99, 235, 0.2);
    color: #93c5fd;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(37, 99, 235, 0.3);
}

.rk-proj-title {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-proj-title span { color: var(--rk-proj-accent); }

.rk-proj-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-link {
    color: var(--rk-proj-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed rgba(56, 189, 248, 0.5);
    transition: all 0.3s;
}

.rk-link:hover {
    color: #93c5fd;
    border-bottom-style: solid;
}

/* Interaktywny Panel */
.rk-proj-body {
    padding: 40px 50px;
    background: var(--rk-proj-panel);
    display: grid;
    grid-template-columns: 340px 1fr;
    gap: 35px;
}

/* Kontrolki (Przełączniki Systemowe) */
.rk-proj-controls {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-sys-card {
    background: #ffffff;
    border: 2px solid var(--rk-proj-border);
    border-radius: 16px;
    padding: 20px;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    gap: 15px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-sys-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05);
}

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

.rk-sys-info { display: flex; flex-direction: column; }
.rk-sys-name { font-size: 15px; font-weight: 800; color: var(--rk-proj-dark); margin-bottom: 2px; }
.rk-sys-lbl { font-size: 11px; font-weight: 700; color: var(--rk-proj-muted); text-transform: uppercase; }

/* Stany aktywne dla przełączników */
.rk-sys-card.active[data-sys="ozc"] { border-color: var(--rk-col-ozc); background: #fef2f2; }
.rk-sys-card.active[data-sys="ozc"] .rk-sys-icon { background: var(--rk-col-ozc); color: white; }

.rk-sys-card.active[data-sys="reku"] { border-color: var(--rk-col-vent); background: #f0fdf4; }
.rk-sys-card.active[data-sys="reku"] .rk-sys-icon { background: var(--rk-col-vent); color: white; }

.rk-sys-card.active[data-sys="hydr"] { border-color: var(--rk-col-hydr); background: #eff6ff; }
.rk-sys-card.active[data-sys="hydr"] .rk-sys-icon { background: var(--rk-col-hydr); color: white; }

/* Prawa Kolumna: Dynamiczny Ekran Wizualizacji SVG */
.rk-display-board {
    background: var(--rk-proj-darker);
    border-radius: 20px;
    padding: 25px;
    border: 1px solid #334155;
    box-shadow: inset 0 0 35px rgba(0,0,0,0.7);
    display: flex;
    flex-direction: column;
}

.rk-display-status {
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(255,255,255,0.08);
    padding: 12px 15px;
    border-radius: 10px;
    color: #94a3b8;
    font-size: 12px;
    font-family: monospace;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 20px;
}

.rk-display-status span { color: #ffffff; font-weight: bold; }

.rk-svg-stage {
    width: 100%;
    height: auto;
    margin-top: auto;
}

/* Animacje i stany warstw SVG */
.rk-anim-layer { transition: opacity 0.4s ease, transform 0.4s ease; opacity: 0; }
.rk-anim-layer.active { opacity: 1; }

.rk-pulse-circle { animation: pulseOZC 2s infinite alternate; }
.rk-flow-arrow { stroke-dasharray: 6 6; animation: ventFlow 1.5s linear infinite; }
.rk-fluid-flow { stroke-dasharray: 8 8; animation: fluidFlow 1s linear infinite; }

@keyframes pulseOZC { from { fill: #b91c1c; opacity: 0.4; } to { fill: #ef4444; opacity: 0.9; } }
@keyframes ventFlow { to { stroke-dashoffset: -12; } }
@keyframes fluidFlow { to { stroke-dashoffset: -16; } }

/* Dolna sekcja: Treść dodatkowa i korzyści finansowe */
.rk-project-advantages {
    grid-column: 1 / -1;
    background: #ffffff;
    border: 1px solid var(--rk-proj-border);
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.01);
}

.rk-adv-title {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-proj-dark);
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-adv-desc {
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
    margin: 0 0 25px 0;
}

/* Siatka korzyści (Kafelki responsywne) */
.rk-benefit-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

.rk-benefit-card {
    background: var(--rk-proj-panel);
    border: 1px solid var(--rk-proj-border);
    padding: 20px;
    border-radius: 14px;
}

.rk-benefit-card h5 {
    margin: 0 0 8px 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-proj-dark);
}

.rk-benefit-card p {
    margin: 0;
    font-size: 13.5px;
    line-height: 1.6;
    color: var(--rk-proj-muted);
}

/* Sekcja CTA */
.rk-proj-cta-box {
    padding: 45px 40px;
    background: #ffffff;
    text-align: center;
    border-top: 1px solid var(--rk-proj-border);
}

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

.rk-cta-text {
    font-size: 15px;
    color: var(--rk-proj-muted);
    margin: 0 auto 30px auto;
    max-width: 650px;
    line-height: 1.6;
}

.rk-btn-massive {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-proj-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 18px 38px;
    border-radius: 14px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(37, 99, 235, 0.35);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-btn-massive:hover {
    transform: translateY(-4px);
    background: var(--rk-proj-dark);
    box-shadow: 0 15px 30px -5px rgba(2, 6, 23, 0.4);
    border-color: var(--rk-proj-accent);
}

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

@media (max-width: 850px) {
    .rk-proj-header, .rk-proj-body, .rk-proj-cta-box { padding: 30px 20px; }
    .rk-proj-body { grid-template-columns: 1fr; gap: 25px; }
    .rk-benefit-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-btn-massive { width: 100%; font-size: 16px; padding: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#article-projekt",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/"
    },
    "headline": "Jak to wpływa na profesjonalny projekt ogrzewania podłogowego?",
    "description": "Dlaczego rozstaw rur w ogrzewaniu płaszczyznowym zależy od OZC i hydrauliki. Zobacz, jak profesjonalny projekt chroni przed pękaniem wylewki i generuje oszczędności.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-21",
    "dateModified": "2026-05-21"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#dataset-projekt",
    "name": "Zależności inżynierskie w projektowaniu płaszczyznowym",
    "description": "Macierz powiązań parametrów fizycznych ogrzewania podłogowego z systemami rekuperacji i charakterystyką masową przepływu cieczy.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "profesjonalny projekt ogrzewania",
      "zrównoważenie hydrauliczne",
      "rekuperacja a ogrzewanie podłogowe",
      "dylatacje jastrychu",
      "nastawy rotametrów"
    ],
    "measurementTechnique": "Zintegrowany proces projektowy łączący bilans strat OZC wg PN-EN 12831, obliczenia oporów liniowych oraz stref dylatacyjnych płyty jastrychu.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Obliczenia OZC: Zapobiegają instalacji pętli 'na oko', dopasowując rozstaw do realnych strat pomieszczeń.",
        "Korelacja z Wentylacją: Rekuperacja obniża szczytowe zapotrzebowanie, umożliwiając rozrzedzenie rozstawu rur.",
        "Zbalansowanie Hydrauliczne: Wyznaczenie nastaw rotametrów zapobiega blokowaniu przepływów czynnika grzewczego."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#webapp-projekt",
    "name": "Interaktywny Model Integracji Grzewczo-Wentylacyjnej",
    "description": "Panel wizualizacji inżynierskiej demonstrujący synergię bilansu OZC, wentylacji mechanicznej z odzyskiem ciepła oraz hydrauliki rozdzielacza pętli.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and SVG interactive selector functionality.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-proj-container" id="rk-project-impact">
    <div class="rk-proj-header">
        <div class="rk-proj-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"></path></svg>
            Inżynieria Projektowa vs Intuicja
        </div>
        <h2 class="rk-proj-title">Jak to wpływa na profesjonalny <span>projekt ogrzewania podłogowego?</span></h2>
        <p class="rk-proj-lead">
            W profesjonalnym projekcie ogrzewania podłogowego rozstaw rur jest zmienną wynikową, ściśle powiązaną z <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/" class="rk-link">obliczeniami OZC</a> według normy <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" class="rk-link">PN-EN 12831</a>, nastawami na rotametrach rozdzielacza oraz charakterystyką pompy obiegowej. Nie można zaprojektować rozstawu w oderwaniu od hydrauliki układu, ponieważ zmiana gęstości rur drastycznie modyfikuje zład wody, masę jastrychu oraz wymagany autorytet zaworów regulacyjnych.
        </p>
    </div>

    <div class="rk-proj-body">
        
        <div class="rk-proj-controls">
            <div class="rk-sys-card active" data-sys="ozc">
                <div class="rk-sys-icon" style="background: var(--rk-col-ozc); color: white;">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                </div>
                <div class="rk-sys-info">
                    <span class="rk-sys-name">Bilans OZC 12831</span>
                    <span class="rk-sys-lbl">Fundament Mocy</span>
                </div>
            </div>

            <div class="rk-sys-card" data-sys="reku">
                <div class="rk-sys-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M23 12a11 11 0 1 1-22 0 11 11 0 0 1 22 0z"></path><path d="M12 7v5l3 3"></path></svg>
                </div>
                <div class="rk-sys-info">
                    <span class="rk-sys-name">Rekuperacja (Odzysk)</span>
                    <span class="rk-sys-lbl">Synergia Powietrza</span>
                </div>
            </div>

            <div class="rk-sys-card" data-sys="hydr">
                <div class="rk-sys-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z"></path><path d="M12 6v6l4 2"></path></svg>
                </div>
                <div class="rk-sys-info">
                    <span class="rk-sys-name">Hydraulika Pętli</span>
                    <span class="rk-sys-lbl">Zrównoważenie Masowe</span>
                </div>
            </div>
        </div>

        <div class="rk-display-board">
            <div class="rk-display-status">Wizualizacja warstwy projektowej: <span id="rk-sys-title-display">Bilans OZC EN 12831</span></div>
            
            <div class="rk-svg-stage">
                <svg viewBox="0 0 320 140" fill="none">
                    <path d="M 20 130 L 20 70 L 160 20 L 300 70 L 300 130 Z" stroke="#334155" stroke-width="2"/>
                    <line x1="20" y1="130" x2="300" y2="130" stroke="#475569" stroke-width="3"/>

                    <g id="svg-layer-ozc" class="rk-anim-layer active">
                        <circle cx="160" cy="75" r="20" class="rk-pulse-circle"/>
                        <text x="160" y="80" fill="#ffffff" font-size="13" font-weight="black" text-anchor="middle">OZC</text>
                        <path d="M 20 100 L 50 100 M 300 100 L 270 100 M 160 20 L 160 50" stroke="var(--rk-col-ozc)" stroke-width="3" stroke-linecap="round"/>
                        <polyline points="45,95 50,100 45,105" fill="none" stroke="var(--rk-col-ozc)" stroke-width="2"/>
                        <polyline points="275,95 270,100 275,105" fill="none" stroke="var(--rk-col-ozc)" stroke-width="2"/>
                    </g>

                    <g id="svg-layer-reku" class="rk-anim-layer">
                        <path d="M 40 120 C 40 60, 160 60, 160 120" class="rk-wave-line rk-flow-arrow" stroke="var(--rk-col-vent)" stroke-width="3"/>
                        <path d="M 280 120 C 280 60, 160 60, 160 120" class="rk-wave-line rk-flow-arrow" stroke="var(--rk-col-vent)" stroke-width="3" style="animation-delay: 0.75s;"/>
                        <rect x="135" y="105" width="50" height="20" fill="var(--rk-col-vent)" rx="4"/>
                        <text x="160" y="119" fill="#ffffff" font-size="10" font-weight="bold" text-anchor="middle">REKU</text>
                    </g>

                    <g id="svg-layer-hydr" class="rk-anim-layer">
                        <path d="M 30 128 L 290 128" class="rk-wave-line rk-fluid-flow" stroke="#ef4444" stroke-width="4"/>
                        <path d="M 35 124 L 285 124" class="rk-wave-line rk-fluid-flow" stroke="#3b82f6" stroke-width="4" style="animation-direction: reverse;"/>
                        <rect x="30" y="45" width="40" height="40" fill="var(--rk-col-hydr)" rx="6"/>
                        <line x1="40" y1="55" x2="40" y2="75" stroke="#ffffff" stroke-width="3"/>
                        <line x1="50" y1="60" x2="50" y2="75" stroke="#ffffff" stroke-width="3"/>
                        <line x1="60" y1="48" x2="60" y2="75" stroke="#ffffff" stroke-width="3"/>
                        <text x="50" y="38" fill="#94a3b8" font-size="10" font-family="monospace" text-anchor="middle">ROZDZIELACZ</text>
                    </g>
                </svg>
            </div>
        </div>

        <div class="rk-project-advantages">
            <h4 class="rk-adv-title">
                <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                Zyskujesz pełną pewność wykonawczą
            </h4>
            <p class="rk-adv-desc">
                Inżynier nie rysuje pętli "na oko". Kupując projekt instalacji ogrzewania płaszczyznowego, eliminujesz instalatorskie błędy oraz zyskujesz dokumentację techniczną, która zgra ze sobą hydraulikę, izolację i wentylację budynku.
            </p>

            <div class="rk-benefit-grid">
                <div class="rk-benefit-card">
                    <h5>Synergia z rekuperacją</h5>
                    <p>Wentylacja mechaniczna drastycznie obniża szczytowe zapotrzebowanie na moc (OZC), co pozwala na rozrzedzenie rozstawu rur w centrum budynku i zapobiega przegrzewaniu wnętrz jesienią.</p>
                </div>
                <div class="rk-benefit-card">
                    <h5>Eliminacja pękania posadzek</h5>
                    <p>Projekt precyzyjnie określa lokalizację warstw dylatacyjnych oraz przebieg <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/" class="rk-link" style="color:inherit; font-weight:700;">izolacji brzegowej</a>, całkowicie znosząc ryzyko pękania płytek ceramicznych przez naprężenia termiczne.</p>
                </div>
                <div class="rk-benefit-card">
                    <h5>Zrównoważenie hydrauliczne</h5>
                    <p>Otrzymujesz gotową tabelę nastaw wstępnych dla rotametrów na rozdzielaczu (np. pętla 1: 1,5 l/min). Bez tych wyliczeń precyzyjne wyregulowanie przepływów po zalaniu betonem jest niewykonalne.</p>
                </div>
                <div class="rk-benefit-card">
                    <h5>Realne oszczędności na prądzie</h5>
                    <p>Poprawny projekt to oszczędność rzędu <strong>2000-3000 PLN</strong> już przy zakupie materiałów – kupujesz dokładnie taką długość rur PEX oraz o takich średnicach, jakie są fizycznie potrzebne.</p>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-proj-cta-box">
        <h3 class="rk-cta-title">Nie pozwól na instalację "na oko" i intuicję wykonawcy</h3>
        <p class="rk-cta-text">
            Zamów profesjonalny, indywidualny projekt ogrzewania podłogowego oparty na pełnym bilansie OZC Twojego domu. Uniknij przewymiarowania kosztów materiałowych, zyskaj idealne nastawy rotametrów i zagwarantuj pompie ciepła najwyższy możliwy współczynnik sprawności COP.
        </p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-massive">
            ZAMÓW PROFESJONALNY PROJEKT PODŁOGÓWKI
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Domain Lock) - Brak tagów nagłówkowych w strukturze błędu
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const appContainer = document.getElementById('rk-project-impact');
        if (appContainer) {
            appContainer.innerHTML = `
                <div style="padding: 45px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif; max-width: 800px; margin: 40px auto;">
                    <div style="font-size: 45px; margin-bottom: 20px;">🛑</div>
                    <div style="font-size: 19px; font-weight: 900; margin-bottom: 12px; text-transform: uppercase; letter-spacing: 0.5px;">Wykryto Próbę Kradzieży Struktur</div>
                    <div style="font-size: 14px; color: #cbd5e1; max-width: 550px; margin: 0 auto; line-height: 1.6;">
                        Interaktywny panel integracji systemowej oraz powiązane bazy danych masowych (JSON-LD) stanowią własność intelektualną zastrzeżoną dla serwisu Projekt-Ogrzewania.pl. Wykryto użycie kodu na nieautoryzowanej domenie.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika interaktywnego panelu
    const cards = document.querySelectorAll('#rk-project-impact .rk-sys-card');
    const titleDisplay = document.getElementById('rk-sys-title-display');
    
    // Warstwy SVG
    const layerOzc = document.getElementById('svg-layer-ozc');
    const layerReku = document.getElementById('svg-layer-reku');
    const layerHydr = document.getElementById('svg-layer-hydr');

    const layerMap = {
        'ozc': { title: 'Bilans OZC EN 12831', layer: layerOzc, color: 'var(--rk-col-ozc)' },
        'reku': { title: 'Wentylacja Mechaniczna (Rekuperacja)', layer: layerReku, color: 'var(--rk-col-vent)' },
        'hydr': { title: 'Zbalansowanie Hydrauliczne Obwodów', layer: layerHydr, color: 'var(--rk-col-hydr)' }
    };

    cards.forEach(card => {
        card.addEventListener('click', function() {
            // Usunięcie klasy aktywnej ze wszystkich kart
            cards.forEach(c => c.classList.remove('active'));
            
            // Dodanie klasy aktywnej do klikniętej karty
            this.classList.add('active');
            
            const sys = this.getAttribute('data-sys');
            const currentData = layerMap[sys];
            
            // Zmiana tekstu statusu
            titleDisplay.textContent = currentData.title;
            titleDisplay.style.color = currentData.color;

            // Przełączanie widoczności warstw w SVG
            Object.values(layerMap).forEach(item => {
                item.layer.classList.remove('active');
            });
            currentData.layer.classList.add('active');
        });
    });
});
</script>



<style>
:root {
    --rk-fail-dark: #0f172a;
    --rk-fail-darker: #020617;
    --rk-fail-brand: #dc2626; /* Czerwień ostrzegawcza */
    --rk-fail-brand-light: #fee2e2;
    --rk-fail-accent: #f87171;
    --rk-fail-bg: #ffffff;
    --rk-fail-panel: #f8fafc;
    --rk-fail-border: #e2e8f0;
    --rk-fail-text: #334155;
    --rk-fail-muted: #64748b;
}

.rk-fail-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: var(--rk-fail-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(220, 38, 38, 0.12);
    border: 1px solid var(--rk-fail-border);
    overflow: hidden;
    color: #1e293b;
}

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

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

.rk-fail-title {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-fail-title span { color: var(--rk-fail-accent); }

.rk-fail-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

/* Panel Interaktywnego Wyboru Błędu */
.rk-fail-body {
    padding: 40px 50px;
    display: grid;
    grid-template-columns: 360px 1fr;
    gap: 35px;
    background: #ffffff;
}

.rk-fail-controls {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-fail-card-btn {
    background: #ffffff;
    border: 2px solid var(--rk-fail-border);
    border-radius: 14px;
    padding: 15px 20px;
    cursor: pointer;
    text-align: left;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    gap: 15px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.01);
}

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

.rk-fail-btn-num {
    width: 28px; height: 28px;
    background: #f1f5f9;
    color: var(--rk-fail-muted);
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 13px; font-weight: 900;
    transition: all 0.3s;
    flex-shrink: 0;
}

.rk-fail-btn-txt {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-fail-dark);
    line-height: 1.3;
}

/* Stan aktywny przełączników */
.rk-fail-card-btn.active {
    border-color: var(--rk-fail-brand);
    background: var(--rk-fail-brand-light);
}

.rk-fail-card-btn.active .rk-fail-btn-num {
    background: var(--rk-fail-brand);
    color: #ffffff;
    box-shadow: 0 0 10px rgba(220, 38, 38, 0.4);
}

/* Prawa Kolumna: Wizualizacja i Opis błędu */
.rk-fail-display {
    background: var(--rk-fail-panel);
    border: 1px solid var(--rk-fail-border);
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.03);
    display: flex;
    flex-direction: column;
}

.rk-dyn-fail-title {
    font-size: 20px;
    font-weight: 900;
    color: #b91c1c;
    margin: 0 0 15px 0;
    line-height: 1.4;
}

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

/* SVG Ekran graficzny */
.rk-fail-svg-box {
    background: var(--rk-fail-darker);
    border-radius: 16px;
    padding: 15px;
    height: 160px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid #334155;
    box-shadow: inset 0 0 30px rgba(0,0,0,0.7);
    margin-top: auto;
}

.rk-fail-scene {
    width: 100%;
    height: 100%;
    max-width: 400px;
}

/* SVG warstwy i animacje */
.rk-f-layer { opacity: 0; transition: opacity 0.4s ease; }
.rk-f-layer.active { opacity: 1; }

.rk-f-cold-flow { stroke: #3b82f6; stroke-width: 4; stroke-linecap: round; }
.rk-f-hot-flow { stroke: #ef4444; stroke-width: 4; stroke-linecap: round; }
.rk-f-evoh-oxygen { stroke: #10b981; stroke-width: 2; stroke-dasharray: 4 6; animation: oxygenIn 2s linear infinite; }

@keyframes oxygenIn { to { stroke-dashoffset: -20; } }

@media (max-width: 850px) {
    .rk-fail-header, .rk-fail-body { padding: 30px 20px; }
    .rk-fail-body { grid-template-columns: 1fr; gap: 25px; }
    .rk-fail-svg-box { height: 140px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#article-bledy-montazu",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/"
    },
    "headline": "Najczęstsze błędy popełniane przy montażu i ustalaniu rozstawu rur",
    "description": "Lista 5 krytycznych błędów wykonawczych: brak stref brzegowych HS, ignorowanie oporu deski barlineckiej, przekraczanie 100 mb pętli PEX oraz brak bariery EVOH DIN 4726.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-21",
    "dateModified": "2026-05-21"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#dataset-bledy-montazu",
    "name": "Wykaz awarii i strat sprawności przez błędy wykonawcze",
    "description": "Zestawienie inżynierskie demaskujące konsekwencje ignorowania norm montażowych (kondensacja HS, opór drewna 0.12 m²K/W, korozja tlenowa DIN 4726).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błędy montażu podłogówki",
      "brak strefy brzegowej HS",
      "opór cieplny drewna",
      "maksymalna długość pętli 100m",
      "rury bez bariery EVOH"
    ],
    "measurementTechnique": "Weryfikacja parametrów fizycznych i strat sprawności instalacji ogrzewania płaszczyznowego w oparciu o normy DIN 4726, PN-EN 1264 i PN-EN 12831.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Błąd okien HS: Brak zagęszczenia do 10 cm wywołuje kurtynę chłodu i kondensację wilgoci.",
        "Błąd oporu drewna: Rozstaw 20 cm pod parkiet blokuje transfer energii; wymagany rozstaw to 10-12.5 cm.",
        "Błąd długości obwodu: Przekroczenie 100 mb dla średnicy 16 mm wywołuje wychłodzenie powrotu i krytyczne opory.",
        "Błąd braku EVOH: Permeacja tlenu przez ścianki rur bez EVOH niszczy pompy obiegowe i wywołuje korozję."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#webapp-bledy-montazu",
    "name": "Interaktywny Detektor Błędów Wykonawczych",
    "description": "Narzędzie diagnostyczno-edukacyjne obrazujące przekroje jastrychów, zjawiska permeacji gazów oraz niedogrzania stref brzegowych w formie grafiki wektorowej SVG.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 SVG compatibility.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-fail-container" id="rk-errors-board">
    <div class="rk-fail-header">
        <div class="rk-fail-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Demaskujemy błędy wykonawców
        </div>
        <h2 class="rk-fail-title">Najczęstsze błędy popełniane <span>przy montażu i rozstawie rur</span></h2>
        <p class="rk-fail-lead">
            Praca z tysiącami inwestorów i audyty setek kotłowni pozwoliły mi wyselekcjonować 5 najgroźniejszych błędów wykonawczych, które nagminnie powtarzają się na polskich budowach. Wynikają one ze ślepej "intuicji" instalatorów zamiast opierania się na twardych obliczeniach.
        </p>
    </div>

    <div class="rk-fail-body">
        
        <div class="rk-fail-controls">
            <button class="rk-fail-card-btn active" data-fail="1">
                <div class="rk-fail-btn-num">1</div>
                <span class="rk-fail-btn-txt">Brak stref brzegowych przy oknach HS</span>
            </button>
            <button class="rk-fail-card-btn" data-fail="2">
                <div class="rk-fail-btn-num">2</div>
                <span class="rk-fail-btn-txt">Ignorowanie oporów okładzin drewnianych</span>
            </button>
            <button class="rk-fail-card-btn" data-fail="3">
                <div class="rk-fail-btn-num">3</div>
                <span class="rk-fail-btn-txt">Zagęszczanie rur pod stałą zabudową</span>
            </button>
            <button class="rk-fail-card-btn" data-fail="4">
                <div class="rk-fail-btn-num">4</div>
                <span class="rk-fail-card-btn-txt rk-fail-btn-txt">Przekraczanie max długości pętli</span>
            </button>
            <button class="rk-fail-card-btn" data-fail="5">
                <div class="rk-fail-btn-num">5</div>
                <span class="rk-fail-btn-txt">Rury bez barier tlenowych EVOH</span>
            </button>
        </div>

        <div class="rk-fail-display">
            <h4 class="rk-dyn-fail-title" id="rk-fail-title-target">Brak stref brzegowych przy dużych oknach typu HS</h4>
            <p class="rk-dyn-fail-desc" id="rk-fail-desc-target">
                Instalatorzy układają rury równomiernie co 15 cm aż do samej ramy okiennej. Skutkuje to "ciągnięciem chłodu" od szyby i kondensacją pary wodnej na dolnej krawędzi okna. Przy oknach tarasowych pas o szerokości 1 m musi być zagęszczony do 10 cm lub nawet 7,5 cm.
            </p>

            <div class="rk-fail-svg-box">
                <svg class="rk-fail-scene" viewBox="0 0 300 120" id="rk-fail-svg-stage">
                    
                    <g class="rk-f-layer active" id="f-layer-1">
                        <line x1="20" y1="10" x2="20" y2="110" stroke="#38bdf8" stroke-width="6"/>
                        <text x="32" y="30" fill="#38bdf8" font-size="10" font-family="monospace">OKNO HS</text>
                        <circle cx="90" cy="90" r="8" fill="none" stroke="#64748b" stroke-width="3"/>
                        <circle cx="170" cy="90" r="8" fill="none" stroke="#64748b" stroke-width="3"/>
                        <circle cx="250" cy="90" r="8" fill="none" stroke="#64748b" stroke-width="3"/>
                        <path d="M 22 20 Q 70 50 120 80" fill="none" stroke="#0ea5e9" stroke-width="3" stroke-dasharray="4 4"/>
                        <text x="130" y="60" fill="#ef4444" font-size="11" font-weight="bold">KONDENSACJA WILGOCI</text>
                    </g>

                    <g class="rk-f-layer" id="f-layer-2">
                        <rect x="10" y="20" width="280" height="15" fill="#b45309" rx="2"/>
                        <text x="150" y="31" fill="#ffffff" font-size="10" font-weight="bold" text-anchor="middle">GRUBA DESKA / PARKIECH (R = 0.12)</text>
                        <circle cx="60" cy="80" r="8" fill="#ef4444"/>
                        <circle cx="240" cy="80" r="8" fill="#ef4444"/>
                        <path d="M 60 65 Q 60 45 80 45" fill="none" stroke="#ef4444" stroke-width="2"/>
                        <path d="M 240 65 Q 240 45 220 45" fill="none" stroke="#ef4444" stroke-width="2"/>
                        <text x="150" y="62" fill="#ef4444" font-size="12" font-weight="black" text-anchor="middle">BLOKADA CIEPŁA</text>
                    </g>

                    <g class="rk-f-layer" id="f-layer-3">
                        <rect x="60" y="10" width="180" height="40" fill="#475569" rx="4"/>
                        <text x="150" y="34" fill="#cbd5e1" font-size="11" font-weight="bold" text-anchor="middle">CIĘŻKA ZABUDOWA / LODÓWKA</text>
                        <circle cx="100" cy="95" r="8" fill="#ef4444"/>
                        <circle cx="150" cy="95" r="8" fill="#ef4444"/>
                        <circle cx="200" cy="95" r="8" fill="#ef4444"/>
                        <text x="150" y="75" fill="#fbbf24" font-size="11" font-weight="bold" text-anchor="middle">PRZEGRZEWANIE MEBLA</text>
                    </g>

                    <g class="rk-f-layer" id="f-layer-4">
                        <path d="M 20 80 L 120 80" class="rk-f-hot-flow"/>
                        <text x="60" y="70" fill="#ef4444" font-size="10" font-family="monospace">START: 35°C</text>
                        <path d="M 120 80 C 180 80, 180 110, 240 110" stroke="#64748b" stroke-width="4" fill="none"/>
                        <path d="M 240 110 L 290 110" class="rk-f-cold-flow"/>
                        <text x="260" y="100" fill="#3b82f6" font-size="10" font-family="monospace">KONIEC: 22°C</text>
                        <text x="160" y="40" fill="#ef4444" font-size="12" font-weight="black" text-anchor="middle">> 100 MB: ZIMNY POWRÓT</text>
                    </g>

                    <g class="rk-f-layer" id="f-layer-5">
                        <rect x="20" y="40" width="260" height="40" fill="none" stroke="#94a3b8" stroke-width="6" rx="4"/>
                        <line x1="50" y1="15" x2="50" y2="40" class="rk-f-evoh-oxygen"/>
                        <line x1="150" y1="15" x2="150" y2="40" class="rk-f-evoh-oxygen"/>
                        <line x1="250" y1="15" x2="250" y2="40" class="rk-f-evoh-oxygen"/>
                        <text x="150" y="12" fill="#10b981" font-size="10" font-family="monospace" text-anchor="middle">PERMEACJA TLENU (O₂)</text>
                        <text x="150" y="64" fill="#ef4444" font-size="12" font-weight="black" text-anchor="middle">KOROZJA I SZLAM W UKŁADZIE</text>
                    </g>
                </svg>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Zabezpieczenie domenowe (Domain Lock)
    const currentDomain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(currentDomain)) {
        const errorsContainer = document.getElementById('rk-errors-board');
        if (errorsContainer) {
            errorsContainer.innerHTML = `
                <div style="padding:45px; text-align:center; background:#0f172a; border-radius:24px; border:2px solid #ef4444; color:#fff; font-family:sans-serif; margin:40px auto; max-width:800px;">
                    <div style="font-size:45px; margin-bottom:15px;">🛑</div>
                    <div style="color:#ef4444; font-size:20px; font-weight:900; text-transform:uppercase; margin-bottom:10px;">Wykryto Naruszenie Praw Wykonawczych</div>
                    <div style="color:#cbd5e1; font-size:14px; line-height:1.6;">Interaktywny detektor błędów montażowych oraz powiązana struktura bazodanowa JSON-LD są własnością chronioną serwisu Projekt-Ogrzewania.pl. Kod został zablokowany.</div>
                </div>
            `;
            return;
        }
    }

    // Baza danych dla 5 błędów
    const errorsDB = {
        "1": {
            title: "Brak stref brzegowych przy dużych oknach typu HS",
            desc: "Instalatorzy układają rury równomiernie co 15 cm aż do samej ramy okiennej. Skutkuje to 'ciągnięciem chłodu' od szyby i kondensacją pary wodnej na dolnej krawędzi okna. Przy oknach tarasowych pas o szerokości 1 m musi być zagęszczony do 10 cm lub nawet 7,5 cm."
        },
        "2": {
            title: "Ignorowanie oporów cieplnych okładzin posadzkowych",
            desc: "Układanie rur w rozstawie 20 cm pod grubą deskę barlinecką lub parkiet drewniany o oporze cieplnym <strong>R = 0,12 m²K/W</strong>. Drewno działa jak izolator i drastycznie blokuje ciepło. Pod <a href='https://projekt-ogrzewania.pl/wybor-idealnego-drewna-do-ogrzewania-podlogowego-kompletna-tabela-i-poradnik/' class='rk-link'>okładziny drewniane</a> rury muszą być ułożone gęściej (maksymalnie co 10-12,5 cm), aby skompensować ten potężny opór."
        },
        "3": {
            title: "Zagęszczanie rur pod stałą zabudową meblową",
            desc: "Układanie pętli grzewczych co 10 cm bezpośrednio pod szafkami kuchennymi, lodówką czy ciężkimi szafami typu komandor. Prowadzi to do marnowania materiału, przegrzewania artykułów spożywczych w szafkach i drastycznego ograniczenia naturalnej konwekcji. W <a href='https://projekt-ogrzewania.pl/wodne-ogrzewanie-podlogowe-a-meble-jak-polaczyc-komfort-i-aranzacje/' class='rk-link'>strefach stałej zabudowy</a> ogrzewania płaszczyznowego się nie układa."
        },
        "4": {
            title: "Przekraczanie maksymalnych długości pętli grzewczych",
            desc: "Wykonawcy z czystego lenistwa łączą dwa mniejsze pomieszczenia w jedną pętlę o długości 140-160 mb rury 16 mm. Taka pętla generuje tak duże opory, że woda na końcu obwodu jest całkowicie wychłodzona, a pokój pozostaje trwale niedogrzany. Bezwzględna <a href='https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/' class='rk-link'>granica długości obwodu</a> to 100 mb (wliczając podejście do szafki rozdzielaczowej)."
        },
        "5": {
            title: "Stosowanie rur grzewczych bez sprawnych barier tlenowych",
            desc: "Montaż tanich rur niespełniających rygorystycznej normy <strong>DIN 4726</strong>, czyli pozbawionych antydyfuzyjnej bariery EVOH. Powoduje to stałe przenikanie tlenu przez ścianki do wnętrza instalacji (permeacja). Skutkuje to drastyczną korozją metalowych elementów rozdzielacza, awariami pomp obiegowych i powstawaniem czarnego szlamu (zgorzeliny) blokującego przepływy."
        }
    };

    const buttons = document.querySelectorAll('#rk-errors-board .rk-fail-card-btn');
    const titleTarget = document.getElementById('rk-fail-title-target');
    const descTarget = document.getElementById('rk-fail-desc-target');
    const layers = document.querySelectorAll('#rk-errors-board .rk-f-layer');

    buttons.forEach(btn => {
        btn.addEventListener('click', function() {
            // Przełączanie klas aktywnych na przyciskach
            buttons.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const id = this.getAttribute('data-fail');
            const data = errorsDB[id];

            // Animacja zmiany tekstu i wstrzyknięcie
            titleTarget.textContent = data.title;
            descTarget.innerHTML = data.desc;

            // Przełączanie widoczności warstw SVG
            layers.forEach(layer => layer.classList.remove('active'));
            document.getElementById('f-layer-' + id).classList.add('active');
        });
    });
});
</script>



<style>
:root {
    --rk-sum-dark: #020617;
    --rk-sum-panel: #0f172a;
    --rk-sum-primary: #10b981; /* Emerald/Green for success/summary */
    --rk-sum-primary-light: #d1fae5;
    --rk-sum-accent: #3b82f6; /* Blue for water */
    --rk-sum-warning: #f59e0b;
    --rk-sum-bg: #f8fafc;
    --rk-sum-border: #cbd5e1;
    --rk-sum-text: #334155;
    --rk-sum-text-dim: #64748b;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.rk-detail-panel {
    display: none;
    animation: fadeScale 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

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

@keyframes fadeScale {
    from { opacity: 0; transform: scale(0.95); }
    to { opacity: 1; transform: scale(1); }
}

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

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

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

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

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

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

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

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

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

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

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

/* Przyciski rozstawu w kalkulatorze */
.rk-calc-opts { display: flex; gap: 10px; }
.rk-calc-opt-btn {
    flex: 1; padding: 10px; background: #1e293b; border: 1px solid #334155; color: #94a3b8;
    border-radius: 8px; font-weight: 800; cursor: pointer; transition: 0.3s;
}
.rk-calc-opt-btn.active { background: rgba(16, 185, 129, 0.2); border-color: var(--rk-sum-primary); color: #6ee7b7; }

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

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

.rk-result-box.highlight { border-color: var(--rk-sum-primary); background: rgba(16, 185, 129, 0.1); }
.rk-result-box.warn { border-color: #ef4444; background: rgba(239, 68, 68, 0.1); }

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

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

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

.rk-author-info { flex-grow: 1; }
.rk-author-info h4 { margin: 0 0 6px 0; font-size: 18px; font-weight: 900; color: var(--rk-sum-dark); }
.rk-author-info p { margin: 0; font-size: 14px; color: var(--rk-sum-text); line-height: 1.6; }
.rk-author-links { display: flex; gap: 15px; margin-top: 12px; }
.rk-author-links a { color: var(--rk-sum-accent); font-size: 13px; font-weight: 800; text-decoration: none; display: inline-flex; align-items: center; gap: 5px; transition: color 0.2s; }
.rk-author-links a:hover { color: #1d4ed8; text-decoration: underline; }

/* Animacje SVG */
.anim-cop-arrow { stroke-dasharray: 8 8; animation: riseArrow 1s linear infinite; }
@keyframes riseArrow { to { stroke-dashoffset: -16; } }

.anim-pipe-flow { stroke-dasharray: 10 10; animation: pipeFlow 2s linear infinite; }
@keyframes pipeFlow { to { stroke-dashoffset: -20; } }

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

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#article-summary-final",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/"
    },
    "headline": "Inżynierskie podsumowanie: Jak gęsto rozkładać podłogówkę?",
    "description": "Kompaktowe zestawienie najważniejszych parametrów (OZC, COP, wylewki) i narzędzie do błyskawicznego szacowania długości pętli PEX. Twórca i CEO portalu: Robert Kucharski.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "CEO & Główny Projektant HVAC",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-21",
    "dateModified": "2026-05-21"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#dataset-summary",
    "name": "Kluczowe wskaźniki projektowe dla rozstawu rur",
    "description": "Twarde dane przeliczeniowe łączące rozstaw rur, współczynnik efektywności COP pomp ciepła oraz obciążenie hydrauliczne systemu.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "podsumowanie ogrzewania podłogowego",
      "kalkulator pętli podłogówki",
      "rozstaw rur pompa ciepła",
      "optymalizacja kosztów ogrzewania",
      "złote zasady podłogówki"
    ],
    "measurementTechnique": "Szacowanie oparte na przelicznikach metrażowych: 10 mb/m² dla 10cm, 6.67 mb/m² dla 15cm, z restrykcją max 100 mb na pętlę.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rozstaw 10-15 cm: Złoty standard dla pomp ciepła (niższe rachunki o kilkanaście %).",
        "Weryfikacja OZC: Wymóg konieczny eliminujący błędy przewymiarowania instalacji.",
        "Limit pętli: Bezwzględna granica 100 mb dla rury 16x2.0."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#webapp-summary",
    "name": "Inżynierski Estymator Rozstawu i Pętli",
    "description": "Moduł podsumowujący. Przelicza powierzchnię domu i wybrany rozstaw na orientacyjną długość rur oraz wymaganą liczbę obwodów na rozdzielaczu.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Forms",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-summary-container" id="rk-summary-final">
    
    <div class="rk-summary-header">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-expert-avatar" loading="lazy">
        <div class="rk-header-content">
            <div class="rk-header-badge">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                Wnioski Eksperta
            </div>
            <h2>Inżynierskie podsumowanie: Rozstaw podłogówki</h2>
            <p>Ogrzewanie podłogowe to inwestycja na 50 lat. Zebrałem dla Ciebie 3 najważniejsze reguły projektowe z całego artykułu. Błędy na etapie układania rur są nieodwracalne.</p>
        </div>
    </div>

    <div class="rk-summary-body">
        
        <div class="rk-rules-list">
            <button class="rk-rule-btn active" data-panel="s-det-1">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                <div class="rk-rule-text">
                    <h3>Złoty środek dla Pomp Ciepła</h3>
                    <p>Zagęszczaj (10-15 cm) by zyskać na COP</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="s-det-2">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg></div>
                <div class="rk-rule-text">
                    <h3>Bilans OZC to fundament</h3>
                    <p>Nie układaj rur na oko i intuicję</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="s-det-3">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="3" y1="15" x2="21" y2="15"></line></svg></div>
                <div class="rk-rule-text">
                    <h3>Rola Wylewki (Jastrychu)</h3>
                    <p>Anhydryt a szybkość grzania</p>
                </div>
            </button>
        </div>

        <div class="rk-rule-details">
            
            <div class="rk-detail-panel active" id="s-det-1">
                <h4>Im chłodniej, tym taniej</h4>
                <p>Każdy 1°C mniej na zasilaniu podłogówki (np. zejście z 40°C na 35°C dzięki rozstawowi 10 cm zamiast 20 cm) obniża rachunki za prąd o około 2-3%. Oszczędzasz latami dzięki wyższemu <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-sum-link">współczynnikowi SCOP</a>.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <path d="M 20 80 L 180 80" stroke="#334155" stroke-width="3"/>
                        <rect x="40" y="50" width="30" height="30" fill="#3b82f6" rx="4"/>
                        <rect x="85" y="35" width="30" height="45" fill="#10b981" rx="4"/>
                        <rect x="130" y="20" width="30" height="60" fill="#f59e0b" rx="4"/>
                        <path class="anim-cop-arrow" d="M 20 60 L 180 10" fill="none" stroke="#ef4444" stroke-width="4"/>
                        <text x="180" y="30" fill="#ef4444" font-size="12" font-weight="bold">COP</text>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="s-det-2">
                <h4>Matematyka niszczy mity</h4>
                <p>O rozstawie rur decyduje gęstość strumienia ciepła <strong>q (W/m²)</strong>. Dopiero znając <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-sum-link">wyniki OZC</a> wiesz, czy salon potrzebuje 15 cm, a łazienka 10 cm. Instalatorzy robiący "wszędzie co 10 cm" marnują Twoje pieniądze i dławią hydraulikę.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <rect x="50" y="20" width="100" height="60" fill="none" stroke="#cbd5e1" stroke-width="3" rx="4"/>
                        <line x1="100" y1="20" x2="100" y2="80" stroke="#cbd5e1" stroke-width="3"/>
                        <line x1="50" y1="50" x2="150" y2="50" stroke="#cbd5e1" stroke-width="3"/>
                        <text x="75" y="40" fill="#10b981" font-size="12" font-family="monospace" text-anchor="middle" font-weight="bold">15 cm</text>
                        <text x="125" y="40" fill="#ef4444" font-size="12" font-family="monospace" text-anchor="middle" font-weight="bold">10 cm</text>
                        <text x="75" y="70" fill="#3b82f6" font-size="12" font-family="monospace" text-anchor="middle" font-weight="bold">20 cm</text>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="s-det-3">
                <h4>Radiator idealny</h4>
                <p>Wybór <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" class="rk-sum-link">jastrychu</a> ma znaczenie. Anhydryt (λ=1.8 W/mK) eliminuje pęcherze powietrza wokół rury i reaguje w 2 godziny. Gruby beton (λ=1.2 W/mK) potrzebuje nawet 5 godzin, co wymusza zagęszczanie rur dla podobnego efektu.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <rect x="20" y="60" width="160" height="30" fill="#1e293b"/>
                        <rect x="20" y="30" width="160" height="30" fill="#f59e0b" opacity="0.8"/>
                        <circle cx="100" cy="50" r="10" fill="#ffffff" stroke="#ef4444" stroke-width="3"/>
                        <path class="anim-pipe-flow" d="M 100 40 Q 70 20 40 30" fill="none" stroke="#ef4444" stroke-width="2"/>
                        <path class="anim-pipe-flow" d="M 100 40 Q 130 20 160 30" fill="none" stroke="#ef4444" stroke-width="2"/>
                    </svg>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-quick-calc">
        <div class="rk-calc-header">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-sum-primary)" stroke-width="2.5"><rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><line x1="8" y1="6" x2="16" y2="6"></line><line x1="16" y1="14" x2="16.01" y2="14"></line><line x1="12" y1="14" x2="12.01" y2="14"></line><line x1="8" y1="14" x2="8.01" y2="14"></line></svg>
                Szybki Estymator Materiałowy PEX
            </h4>
        </div>

        <div class="rk-calc-grid">
            <div class="rk-calc-input-area">
                <div class="rk-calc-label">
                    Powierzchnia strefy (m²):
                    <span id="finAreaOut">100 m²</span>
                </div>
                <input type="range" class="rk-sum-range-final" id="finAreaSlider" min="20" max="250" step="5" value="100">
                
                <div class="rk-calc-label" style="margin-top: 10px;">Zakładany rozstaw rur:</div>
                <div class="rk-calc-opts">
                    <button class="rk-calc-opt-btn" data-sval="10">10 cm</button>
                    <button class="rk-calc-opt-btn active" data-sval="15">15 cm</button>
                    <button class="rk-calc-opt-btn" data-sval="20">20 cm</button>
                </div>
            </div>

            <div class="rk-calc-results">
                <div class="rk-result-box highlight">
                    <span class="rk-res-val" id="finPipe">700 <span style="font-size:14px;color:var(--rk-sum-primary);">m</span></span>
                    <span class="rk-res-lab">Potrzebna Rura (+5%)</span>
                </div>
                <div class="rk-result-box" id="finLoopsBox">
                    <span class="rk-res-val" id="finLoops">7</span>
                    <span class="rk-res-lab">Ilość Pętli (max 100m)</span>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-summary-author">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - CEO i Projektant HVAC" class="rk-author-photo-small" loading="lazy">
        <div class="rk-author-info">
            <h4>Robert Kucharski</h4>
            <p>CEO i twórca portalu Projekt-Ogrzewania.pl. Główny projektant i audytor instalacji HVAC. Wszystkie publikowane tu treści opieram na wieloletnim, praktycznym doświadczeniu zdobytym bezpośrednio na placach budowy. Moją misją jest dostarczanie twardej, inżynierskiej wiedzy, która uchroni Cię przed bolesnymi błędami.</p>
            <div class="rk-author-links">
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
                    LinkedIn
                </a>
                <a href="https://www.facebook.com/robert.kucharski.budowa.bez.sciemy" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.469h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.469h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>
                    Facebook
                </a>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (DOMAIN LOCK) bez tagów H
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-summary-final').innerHTML = `
            <div style="padding:45px; text-align:center; background:#0f172a; color:#ef4444; border:2px solid #ef4444; border-radius:24px; font-weight:800; font-family:sans-serif; max-width:800px; margin: 40px auto;">
                <div style="font-size:40px; margin-bottom:15px;">🛑</div>
                <div style="font-size:20px; text-transform:uppercase; margin-bottom:10px;">Błąd licencji oprogramowania</div>
                <div style="color:#cbd5e1; font-size:14px; font-weight:normal;">Interaktywny moduł podsumowujący oraz skrypty JSON-LD stanowią własność Projekt-Ogrzewania.pl. Wykryto użycie na nieautoryzowanej domenie.</div>
            </div>`;
        return;
    }

    // 2. Logika Zakładek (Złote Zasady)
    const btns = document.querySelectorAll('#rk-summary-final .rk-rule-btn');
    const panels = document.querySelectorAll('#rk-summary-final .rk-detail-panel');

    btns.forEach(btn => {
        btn.addEventListener('click', () => {
            btns.forEach(b => b.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            btn.classList.add('active');
            const target = document.getElementById(btn.getAttribute('data-panel'));
            if(target) {
                void target.offsetWidth; // Restart animacji
                target.classList.add('active');
            }
        });
    });

    // 3. Logika Kalkulatora Estymacyjnego
    const slider = document.getElementById('finAreaSlider');
    const areaOut = document.getElementById('finAreaOut');
    const optBtns = document.querySelectorAll('.rk-calc-opt-btn');
    const resPipe = document.getElementById('finPipe');
    const resLoops = document.getElementById('finLoops');
    const loopsBox = document.getElementById('finLoopsBox');

    let currentSpacing = 15; // default

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

        // Przelicznik [mb/m2]
        let ratio = 6.67; 
        if(currentSpacing === 10) ratio = 10.0;
        if(currentSpacing === 20) ratio = 5.0;

        // Ilość rury z naddatkiem 5%
        const rawLength = area * ratio;
        const totalLength = rawLength * 1.05;

        // Ilość pętli (max 100m na pętlę)
        const loopsNeeded = Math.ceil(totalLength / 100);

        resPipe.innerHTML = totalLength.toFixed(0) + ' <span style="font-size:14px;color:var(--rk-sum-primary);">m</span>';
        resLoops.textContent = loopsNeeded;

        // Ostrzeżenie wizualne jeśli przekraczamy duży rozdzielacz (np. >12 pętli)
        if(loopsNeeded > 12) {
            loopsBox.classList.add('warn');
            resLoops.style.color = '#ef4444';
        } else {
            loopsBox.classList.remove('warn');
            resLoops.style.color = '#ffffff';
        }
    }

    // Eventy
    if(slider) {
        slider.addEventListener('input', updateCalc);
        
        optBtns.forEach(btn => {
            btn.addEventListener('click', function() {
                optBtns.forEach(b => b.classList.remove('active'));
                this.classList.add('active');
                currentSpacing = parseInt(this.getAttribute('data-sval'));
                updateCalc();
            });
        });

        updateCalc(); // Init
    }
});
</script>



<style>
:root {
    --rk-cs-dark: #0f172a;
    --rk-cs-darker: #020617;
    --rk-cs-brand: #8b5cf6; /* Ekspercki fiolet */
    --rk-cs-brand-light: #c4b5fd;
    --rk-cs-danger: #ef4444; /* Czerwień strat */
    --rk-cs-danger-bg: #fee2e2;
    --rk-cs-success: #10b981; /* Zieleń projektu */
    --rk-cs-success-bg: #d1fae5;
    --rk-cs-panel: #1e293b;
    --rk-cs-bg: #ffffff;
    --rk-cs-text: #334155;
    --rk-cs-muted: #64748b;
    --rk-cs-border: #e2e8f0;
}

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

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

.rk-cs-header::before {
    content: '';
    position: absolute;
    top: 0; right: 0; width: 300px; height: 100%;
    background: radial-gradient(circle at top right, rgba(139, 92, 246, 0.2) 0%, transparent 70%);
    pointer-events: none;
}

.rk-cs-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(139, 92, 246, 0.25);
    color: var(--rk-cs-brand-light);
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(139, 92, 246, 0.3);
}

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

.rk-cs-title span { color: #a855f7; }

.rk-cs-story {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
    padding-bottom: 20px;
}

.rk-cs-meta {
    display: flex;
    gap: 20px;
    padding-top: 20px;
    border-top: 1px dashed rgba(255,255,255,0.15);
    font-size: 14px;
    color: #94a3b8;
}

.rk-cs-meta span { display: flex; align-items: center; gap: 6px; color: #e2e8f0; font-weight: 600; }

/* Panel Interaktywny */
.rk-cs-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

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

/* Przełącznik Wariantów */
.rk-cs-toggle-box {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
    margin-bottom: 30px;
    background: #ffffff;
    padding: 10px;
    border-radius: 16px;
    border: 1px solid var(--rk-cs-border);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-btn-variant {
    padding: 18px 20px;
    border: 2px solid transparent;
    border-radius: 12px;
    background: transparent;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    text-align: center;
}

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

.rk-btn-variant.active[data-variant="bad"] {
    background: var(--rk-cs-danger-bg);
    border-color: var(--rk-cs-danger);
    box-shadow: 0 10px 15px -3px rgba(239, 68, 68, 0.1);
}

.rk-btn-variant.active[data-variant="good"] {
    background: var(--rk-cs-success-bg);
    border-color: var(--rk-cs-success);
    box-shadow: 0 10px 15px -3px rgba(16, 185, 129, 0.1);
}

.rk-var-title { font-size: 16px; font-weight: 800; margin: 0; color: var(--rk-cs-dark); }
.rk-var-sub { font-size: 13px; font-weight: 600; color: var(--rk-cs-muted); }
.active[data-variant="bad"] .rk-var-title { color: #b91c1c; }
.active[data-variant="good"] .rk-var-title { color: #047857; }

/* Grid Danych (Przebudowany po usunięciu SVG) */
.rk-cs-metrics-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

/* Parametry */
.rk-metric-card {
    background: #ffffff;
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-cs-border);
    transition: all 0.3s;
    position: relative;
    overflow: hidden;
    text-align: center;
}

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

.rk-metric-val {
    font-size: 22px;
    font-weight: 900;
    transition: color 0.3s;
}

/* Tło ostrzegawcze w kartach (teraz od góry) */
.rk-metric-card::before {
    content: ''; position: absolute; left: 0; top: 0; right: 0; height: 4px;
    background: transparent; transition: background 0.3s;
}
.state-bad .rk-metric-card::before { background: var(--rk-cs-danger); }
.state-good .rk-metric-card::before { background: var(--rk-cs-success); }

.state-bad .val-alert { color: var(--rk-cs-danger); }
.state-good .val-alert { color: var(--rk-cs-success); }

/* Opis zjawiska (na całą szerokość) */
.rk-cs-explanation {
    grid-column: 1 / -1;
    margin-top: 5px;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-cs-text);
    padding: 20px 25px;
    border-radius: 12px;
    background: #ffffff;
    border: 1px dashed var(--rk-cs-border);
    transition: all 0.3s;
}

.state-bad .rk-cs-explanation { background: #fff5f5; border-color: #fca5a5; }
.state-good .rk-cs-explanation { background: #f0fdf4; border-color: #6ee7b7; }

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

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

.rk-btn-massive:hover {
    transform: translateY(-4px);
    background: #6d28d9;
    box-shadow: 0 15px 30px -5px rgba(139, 92, 246, 0.5);
    border-color: #c4b5fd;
}

.rk-btn-massive svg { transition: transform 0.3s; }
.rk-btn-massive:hover svg { transform: translateX(5px); }

@media (max-width: 850px) {
    .rk-cs-header, .rk-cs-interactive, .rk-cs-cta { padding: 30px 20px; }
    .rk-cs-meta { flex-direction: column; gap: 10px; }
    .rk-cs-toggle-box { grid-template-columns: 1fr; }
    .rk-cs-metrics-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-btn-variant { padding: 15px; flex-direction: row; justify-content: center; }
    .rk-btn-massive { width: 100%; font-size: 16px; padding: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/"
    },
    "headline": "Studium przypadku: Błędy instalatora a profesjonalny projekt ogrzewania podłogowego",
    "description": "Z życia inżyniera: audyt instalacji dla 165 m². Zobacz, jak wyliczenia OZC uchroniły inwestora przed stratą 2400 PLN i zablokowaniem pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-21",
    "dateModified": "2026-05-21"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#dataset-casestudy",
    "name": "Audyt wykonawczy instalacji płaszczyznowej - Porównanie OZC",
    "description": "Zestawienie parametrów materiałowych i hydraulicznych pomiędzy intuicyjnym montażem a projektem inżynierskim dla budynku 165m2 o niskim zapotrzebowaniu na moc.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego",
      "przewymiarowanie instalacji",
      "rotametry przepływy",
      "pompa obiegowa podłogówki",
      "obliczenia OZC"
    ],
    "measurementTechnique": "Kalkulacja kosztów materiałowych (rury, rozdzielacze) i weryfikacja przepływów na rotametrach pod kątem dławienia pompy obiegowej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wariant Instalatora: Rozstaw 10 cm, +605 mb rur, +4 sekcje rozdzielacza, koszt +2400 PLN, przepływy <0.5 l/min.",
        "Wariant Inżyniera: Zmienne rozstawy 10/15/20 cm, dopasowanie do strat 32 W/m², optymalizacja kosztów, zasilanie 32°C."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#webapp-casestudy",
    "name": "Symulator Audytu Inwestycyjnego",
    "description": "Narzędzie interaktywne ilustrujące różnice w ilości pętli, wielkości rozdzielacza i obciążeniu pompy między wariantem amatorskim a inżynierskim.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript execution.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-cs-container" id="rk-casestudy-app">
    <div class="rk-cs-header">
        <div class="rk-cs-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Akta Sprawy Inżynierskiej
        </div>
        <h2 class="rk-cs-title">Studium przypadku z praktyki <span>inżynierskiej</span></h2>
        <p class="rk-cs-story">
            W dniu 19 sierpnia 2025 roku sfinalizowałem audyt wykonawczy instalacji ogrzewania podłogowego dla inwestora Tomasza, obejmujący nowo wybudowany dom parterowy w technologii energooszczędnej. Instalator bez żadnego projektu zamierzał ułożyć rurę PEX 16 mm w rozstawie 10 cm na całej powierzchni domu, argumentując to "optymalnym przygotowaniem pod pompę ciepła". 
        </p>
        <div class="rk-cs-meta">
            <span><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle></svg> Okolice Nowego Sącza</span>
            <span><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect></svg> Metraż: 165 m²</span>
            <span><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg> Straty ciepła (OZC): Zaledwie 32 W/m²</span>
        </div>
    </div>

    <div class="rk-cs-interactive" id="rk-cs-state-container">
        <h3 class="rk-cs-h3">Symulacja Decyzji: Porównaj warianty instalacyjne</h3>
        
        <div class="rk-cs-toggle-box">
            <button class="rk-btn-variant active" data-variant="bad">
                <span class="rk-var-title">Wizja Instalatora ("Na oko")</span>
                <span class="rk-var-sub">Wszędzie rozstaw co 10 cm</span>
            </button>
            <button class="rk-btn-variant" data-variant="good">
                <span class="rk-var-title">Projekt Inżynierski (OZC)</span>
                <span class="rk-var-sub">Zmienne strefy 10/15/20 cm</span>
            </button>
        </div>

        <div class="rk-cs-metrics-grid">
            <div class="rk-metric-card">
                <div class="rk-metric-lbl">Naddatek Materiału</div>
                <div class="rk-metric-val val-alert" id="rk-cs-val-pipe">+605 mb rury PEX</div>
            </div>
            <div class="rk-metric-card">
                <div class="rk-metric-lbl">Wielkość Rozdzielacza</div>
                <div class="rk-metric-val val-alert" id="rk-cs-val-manif">+4 zbędne sekcje</div>
            </div>
            <div class="rk-metric-card">
                <div class="rk-metric-lbl">Koszt Inwestycyjny</div>
                <div class="rk-metric-val val-alert" id="rk-cs-val-cost">Strata 2400 PLN</div>
            </div>

            <div class="rk-cs-explanation" id="rk-cs-text-expl">
                <strong>Zagrożenie awarią:</strong> Gęste ułożenie przy tak niskich stratach (32 W/m²) wymagałoby zdławienia przepływów na rotametrach do wartości < 0,5 l/min, aby nie przegrzać wnętrza. Groziło to <strong>destabilizacją pompy obiegowej o mocy 7 kW</strong>.
            </div>
        </div>
    </div>

    <div class="rk-cs-cta">
        <h3 class="rk-cta-title">Skopiuj ten sukces na swojej budowie</h3>
        <p class="rk-cta-text">
            Ostatecznie wdrożyliśmy mój projekt o zmiennych rozstawach. System ruszył bezproblemowo, pracując na skrajnie niskim parametrze zasilania 32°C, zapewniając inwestorowi idealny komfort termiczny i najwyższy możliwy współczynnik COP pompy ciepła.
        </p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-massive">
            ZAMÓW INDYWIDUALNY PROJEKT
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe - Brak tagów strukturalnych (H) w komunikacie błędu
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const appContainer = document.getElementById('rk-casestudy-app');
        if (appContainer) {
            appContainer.innerHTML = `
                <div style="padding: 45px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif; max-width: 800px; margin: 40px auto;">
                    <div style="font-size: 45px; margin-bottom: 20px;">🛑</div>
                    <div style="font-size: 19px; font-weight: 900; margin-bottom: 12px; text-transform: uppercase; letter-spacing: 0.5px;">Wykryto Naruszenie Własności Intelektualnej</div>
                    <div style="font-size: 14px; color: #cbd5e1; max-width: 550px; margin: 0 auto; line-height: 1.6;">
                        Case Study (Studium przypadku), interfejs symulatora oraz niewidoczne dane JSON-LD należą do serwisu Projekt-Ogrzewania.pl. Wykryto nielegalne wykorzystanie skryptu.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Toggle Switch
    const btns = document.querySelectorAll('.rk-btn-variant');
    const container = document.getElementById('rk-cs-state-container');
    
    // Pola tekstowe dynamiczne
    const valPipe = document.getElementById('rk-cs-val-pipe');
    const valManif = document.getElementById('rk-cs-val-manif');
    const valCost = document.getElementById('rk-cs-val-cost');
    const textExpl = document.getElementById('rk-cs-text-expl');

    // Baza danych Case Study
    const db = {
        'bad': {
            pipe: '+605 mb rury PEX',
            manif: '+4 zbędne sekcje',
            cost: 'Strata 2400 PLN',
            expl: '<strong>Zagrożenie awarią:</strong> Gęste ułożenie przy tak niskich stratach (32 W/m²) wymagałoby zdławienia przepływów na rotametrach do wartości < 0,5 l/min, aby nie przegrzać wnętrza. Groziło to <strong>destabilizacją pompy obiegowej o mocy 7 kW</strong>.'
        },
        'good': {
            pipe: 'Optymalna ilość',
            manif: 'Idealnie dopasowany',
            cost: 'Oszczędność 2400 PLN',
            expl: '<strong>Zoptymalizowany system:</strong> Projekt o zmiennych rozstawach (15 cm w strefie dziennej, 20 cm w sypialniach oraz 10 cm w łazience). System ruszył bezproblemowo, pracując na zasilaniu 32°C, gwarantując max. COP.'
        }
    };

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // UI Button state
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const variant = this.getAttribute('data-variant');
            const data = db[variant];

            // Wstrzyknięcie klas dla kolorystyki metryk CSS
            container.className = `rk-cs-interactive state-${variant}`;

            // Wstrzyknięcie tekstów
            valPipe.textContent = data.pipe;
            valManif.textContent = data.manif;
            valCost.textContent = data.cost;
            textExpl.innerHTML = data.expl;
        });
    });

    // Inicjalizacja domyślnego stanu CSS dla metryk
    container.className = 'rk-cs-interactive state-bad';
});
</script>



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/* Wnętrze Odpowiedzi */
.rk-faq-content {
    padding: 30px;
    border-top: 1px solid var(--rk-faq-border);
    display: grid;
    grid-template-columns: 1fr 220px;
    gap: 30px;
    align-items: center;
    background: #ffffff;
}

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

.rk-faq-text strong {
    font-weight: 800;
    color: var(--rk-faq-dark);
    background: linear-gradient(120deg, rgba(79, 70, 229, 0.1) 0%, rgba(79, 70, 229, 0.1) 100%);
    background-repeat: no-repeat;
    background-size: 100% 40%;
    background-position: 0 88%;
}

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

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

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

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

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

/* 1. Rotametry */
.anim-rota-1 { transform: translateY(0); transition: transform 1s 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); }
.anim-rota-2 { transform: translateY(0); transition: transform 1s 0.5s cubic-bezier(0.34, 1.56, 0.64, 1); }
.anim-rota-3 { transform: translateY(0); transition: transform 1s 0.7s cubic-bezier(0.34, 1.56, 0.64, 1); }
.rk-faq-item.active .anim-rota-1 { transform: translateY(20px); }
.rk-faq-item.active .anim-rota-2 { transform: translateY(10px); }
.rk-faq-item.active .anim-rota-3 { transform: translateY(30px); }

/* 2. Zabudowa / Lodówka */
.anim-frost { opacity: 0; transform: scale(0.5) rotate(-45deg); transition: all 0.6s 0.4s ease-out; }
.anim-cross { opacity: 0; stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 0.5s 0.8s, opacity 0.2s 0.8s; }
.rk-faq-item.active .anim-frost { opacity: 1; transform: scale(1) rotate(0deg); }
.rk-faq-item.active .anim-cross { opacity: 1; stroke-dashoffset: 0; }

/* 3. Długość 100m */
.anim-loop-draw { stroke-dasharray: 250; stroke-dashoffset: 250; transition: stroke-dashoffset 1.5s 0.3s ease-out; }
.anim-alert { opacity: 0; transform: scale(0); transition: all 0.5s 1.5s cubic-bezier(0.175, 0.885, 0.32, 1.275); }
.rk-faq-item.active .anim-loop-draw { stroke-dashoffset: 0; }
.rk-faq-item.active .anim-alert { opacity: 1; transform: scale(1); }

/* 4. Bezwładność (Masa Betonu) */
.anim-heat-wave { stroke-dasharray: 10 15; stroke-dashoffset: 0; opacity: 0; }
.rk-faq-item.active .anim-heat-wave { opacity: 1; animation: heatRiseSlow 3s linear infinite 0.5s; }
@keyframes heatRiseSlow { to { stroke-dashoffset: -50; } }

/* 5. System Suchy (Lamele) */
.anim-shine { transform: translateX(-100%); }
.rk-faq-item.active .anim-shine { animation: sweepShine 2s infinite 0.5s; }
@keyframes sweepShine { 
    0% { transform: translateX(-100%); opacity: 0; }
    50% { opacity: 0.5; }
    100% { transform: translateX(100%); opacity: 0; }
}

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

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/"
    },
    "headline": "Najczęściej zadawane pytania o rozstaw rur w podłogówce (FAQ)",
    "description": "Baza wiedzy eksperckiej o ogrzewaniu podłogowym: mieszanie rozstawów pętli, układanie rur pod meblami, maksymalna długość pętli PEX i specyfika systemu suchego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-21",
    "dateModified": "2026-05-21"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#faq-schema",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy można mieszać różne rozstawy rur w obrębie jednego domu lub rozdzielacza?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, to absolutny fundament poprawnego projektowania. Łazienki wymagają rozstawu 10 cm, salon zazwyczaj 15 cm, a sypialnie 20 cm. Różnice w oporach hydraulicznych i zapotrzebowaniu na ciepło dla poszczególnych stref bilansuje się na etapie regulacji przepływów na rotametrach rozdzielacza."
        }
      },
      {
        "@type": "Question",
        "name": "Jaki rozstaw rur zastosować pod meblami kuchennymi i lodówką?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Pod stałą zabudową kuchenną (szczególnie pod lodówką) nie układamy pętli grzewczych wcale. Ogrzewanie w tych strefach prowadzi do psucia się żywności, przegrzewania agregatów i wysychania frontów. Standard inżynierski nakazuje odsunięcie rur o 40-60 cm od krawędzi ścian."
        }
      },
      {
        "@type": "Question",
        "name": "Jaka jest maksymalna długość jednej pętli grzewczej dla rury o średnicy 16 mm?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nieprzekraczalną granicą dla standardowej rury 16x2 mm jest 100 metrów bieżących (wliczając odcinki dobiegowe do rozdzielacza). Dłuższe pętle generują potężne opory hydrauliczne, woda pod koniec obiegu jest wyziębiona, a pompa obiegowa ulega przeciążeniu."
        }
      },
      {
        "@type": "Question",
        "name": "Czy gęstszy rozstaw rur pozwala na szybsze nagrzanie wyziębionego domu?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie. Dynamika nagrzewania zależy od masy akumulacyjnej (bezwładności) jastrychu betonowego, a nie od ilości rury. Gęstszy układ (np. 10 cm) pozwala natomiast drastycznie obniżyć temperaturę zasilania (do ok. 30 stopni), co maksymalizuje oszczędności z pracy pompy ciepła."
        }
      },
      {
        "@type": "Question",
        "name": "Jak gęsto układać rury ogrzewania podłogowego w systemie suchym (bez wylewki)?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Z uwagi na brak wylewki, system suchy wymaga gęstszego ułożenia oraz blach transmisyjnych (lameli). Płyty styropianowe mają zazwyczaj rowki rozmieszczone co 12,5 cm lub 15 cm. Aluminium przejmuje funkcję radiatora, zapewniając niemal natychmiastową reakcję cieplną."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#dataset",
    "name": "Normy i ograniczenia projektowe ogrzewania płaszczyznowego",
    "description": "Zestawienie kluczowych parametrów i limitów inżynierskich przy projektowaniu wodnego ogrzewania podłogowego (długości pętli, strefy brzegowe, zabudowa).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "rozstaw rur podłogówki",
      "długość pętli grzewczej",
      "ogrzewanie podłogowe pod meblami",
      "rotametry rozdzielacza",
      "system suchy podłogówki"
    ],
    "measurementTechnique": "Wytyczne projektowe wyznaczone na podstawie PN-EN 1264 oraz charakterystyk oporów hydraulicznych pomp obiegowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Maksymalna długość pętli PEX 16x2: 100 mb.",
        "Strefa martwa przy stałej zabudowie kuchennej: 40-60 cm.",
        "Zalecany rozstaw strefowy: łazienki 10 cm, salony 15 cm."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#webapp",
    "name": "Interaktywne FAQ: Rozstaw rur podłogówki",
    "description": "Edukacyjna aplikacja webowa wykorzystująca animacje wektorowe SVG do wizualizacji zjawisk hydraulicznych, stref martwych oraz rozdzielaczy instalacyjnych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 for interactive accordion and SVG animation rendering.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

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

    <div class="rk-faq-interactive">
        <div class="rk-faq-list">
            
            <!-- Pytanie 1 -->
            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>1. Czy można mieszać różne rozstawy rur w obrębie jednego domu lub rozdzielacza?</span>
                    <div class="rk-faq-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Tak, i co więcej – to <strong>absolutny fundament poprawnego projektowania</strong>. Łazienki naturalnie wymagają zagęszczenia do 10 cm, salon najczęściej 15 cm, a sypialnie 20 cm. Powstałe w ten sposób różnice w oporach hydraulicznych i długościach rur bilansuje się precyzyjnie poprzez <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/" class="rk-link">nastawy rotametrów na rozdzielaczu</a>. Dzięki temu woda "wie", gdzie ma płynąć szybciej, a system działa stabilnie w całym domu.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="20" y="45" width="60" height="15" fill="#334155" rx="3"/>
                                    <!-- Rotametr 1 -->
                                    <rect x="30" y="15" width="8" height="30" fill="#475569" rx="4"/>
                                    <rect class="anim-rota-1" x="30" y="15" width="8" height="15" fill="#ef4444" rx="4"/>
                                    <!-- Rotametr 2 -->
                                    <rect x="46" y="15" width="8" height="30" fill="#475569" rx="4"/>
                                    <rect class="anim-rota-2" x="46" y="15" width="8" height="25" fill="#10b981" rx="4"/>
                                    <!-- Rotametr 3 -->
                                    <rect x="62" y="15" width="8" height="30" fill="#475569" rx="4"/>
                                    <rect class="anim-rota-3" x="62" y="15" width="8" height="10" fill="#3b82f6" rx="4"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 2 -->
            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>2. Jaki rozstaw rur zastosować pod meblami kuchennymi i lodówką?</span>
                    <div class="rk-faq-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Pod stałą ciężką zabudową (zwłaszcza pod lodówką i zamrażarką) <strong>nie układamy rur grzewczych wcale</strong>. Zastosowanie tam ogrzewania to marnowanie energii, które skutkuje psuciem się żywności w dolnych szafkach, rozklejaniem frontów meblowych oraz drastycznym obciążeniem kompresora lodówki. Inżynierski standard nakazuje <a href="https://projekt-ogrzewania.pl/gdzie-nie-ukladac-ogrzewania-podlogowego/" class="rk-link">odsunięcie rur o 40-60 cm</a> od ściany z planowaną zabudową.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <path d="M 20 50 Q 50 30 80 50" fill="none" stroke="#ef4444" stroke-width="4" stroke-linecap="round"/>
                                    <path d="M 20 60 Q 50 40 80 60" fill="none" stroke="#ef4444" stroke-width="4" stroke-linecap="round"/>
                                    <g class="anim-frost" transform-origin="50 35">
                                        <line x1="50" y1="20" x2="50" y2="50" stroke="#93c5fd" stroke-width="3"/>
                                        <line x1="35" y1="35" x2="65" y2="35" stroke="#93c5fd" stroke-width="3"/>
                                        <line x1="40" y1="25" x2="60" y2="45" stroke="#93c5fd" stroke-width="3"/>
                                        <line x1="40" y1="45" x2="60" y2="25" stroke="#93c5fd" stroke-width="3"/>
                                    </g>
                                    <line class="anim-cross" x1="30" y1="20" x2="70" y2="60" stroke="#dc2626" stroke-width="6" stroke-linecap="round"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 3 -->
            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>3. Jaka jest maksymalna długość jednej pętli grzewczej dla rury Ø 16 mm?</span>
                    <div class="rk-faq-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Nieprzekraczalną granicą dla popularnej rury PEX/PERT 16x2 mm jest <strong>dokładnie 100 metrów bieżących</strong> (wliczając w to odcinek "ślepy" idący od rozdzielacza do pomieszczenia). Zignorowanie tego limitu i <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/" class="rk-link">ułożenie zbyt długiej pętli</a> generuje gigantyczne opory hydrauliczne. Woda na końcu staje się zimna, pompa obiegowa ulega przeciążeniu, a podłoga nie grzeje równomiernie.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <path class="anim-loop-draw" d="M 10 35 L 70 35 Q 85 35 85 20 Q 85 10 70 10 L 10 10" fill="none" stroke="#3b82f6" stroke-width="4" stroke-linecap="round"/>
                                    <g class="anim-alert" transform-origin="75 35">
                                        <circle cx="75" cy="35" r="14" fill="#ef4444"/>
                                        <text x="75" y="40" font-size="12" font-weight="bold" fill="white" text-anchor="middle">100m</text>
                                    </g>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 4 -->
            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>4. Czy gęstszy rozstaw rur pozwala na szybsze nagrzanie wyziębionego domu?</span>
                    <div class="rk-faq-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                <strong>Nie, to szkodliwy instalatorski mit.</strong> Dynamika nagrzewania układu nie zależy od ilości metrów rury, ale od gigantycznej masy akumulacyjnej jastrychu (betonu). <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/" class="rk-link">Bezwładność cieplna</a> sprawia, że płyta i tak potrzebuje wielu godzin na załadowanie energią. Gęstszy układ (np. 10 cm zamiast 15 cm) służy wyłącznie temu, aby móc pracować na bardzo niskiej temperaturze zasilania (np. 30°C) i oszczędzać prąd na pompie ciepła.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="20" y="45" width="60" height="20" fill="#475569" rx="2"/>
                                    <circle cx="35" cy="55" r="5" fill="#ef4444"/>
                                    <circle cx="65" cy="55" r="5" fill="#ef4444"/>
                                    <path class="anim-heat-wave" d="M 30 40 C 30 20 40 20 40 10 M 60 40 C 60 20 70 20 70 10" fill="none" stroke="#fbbf24" stroke-width="3" stroke-linecap="round"/>
                                    <path d="M 85 60 L 85 20" stroke="#cbd5e1" stroke-width="4" stroke-linecap="round"/>
                                    <circle cx="85" cy="62" r="6" fill="#ef4444"/>
                                    <line x1="85" y1="60" x2="85" y2="40" stroke="#ef4444" stroke-width="2" stroke-linecap="round"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 5 -->
            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>5. Jak gęsto układać rury podłogówki w systemie suchym (bez wylewki)?</span>
                    <div class="rk-faq-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Brak mokrego betonu zmienia fizykę wymiany ciepła. W <a href="https://projekt-ogrzewania.pl/czym-jest-system-suchy-w-wodnym-ogrzewaniu-podlogowym/" class="rk-link">systemie suchym ogrzewania</a> płyty styropianowe z rowkami posiadają gęstszy rozstaw fabryczny – zazwyczaj 12,5 cm lub 15 cm. Ponadto rura otulona jest aluminiowymi blachami transmisyjnymi (lamelami). To aluminium przejmuje na siebie rolę radiatora i błyskawicznie przekazuje energię cieplną bezpośrednio na okładzinę, np. na panele.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="20" y="25" width="60" height="20" fill="#e2e8f0" rx="2" stroke="#94a3b8" stroke-width="2"/>
                                    <path d="M 30 35 L 70 35" stroke="#ef4444" stroke-width="6" stroke-linecap="round"/>
                                    <rect class="anim-shine" x="20" y="25" width="15" height="20" fill="#ffffff" transform="skewX(-20)"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domeny
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-faq-rozstaw').innerHTML = `
            <div style="padding:40px; text-align:center; background:#0f172a; border-radius:20px; font-family:sans-serif; margin: 40px auto; max-width: 800px; border: 2px solid #ef4444;">
                <div style="font-size: 40px; margin-bottom: 15px;">🛑</div>
                <div style="color:#ef4444; font-size:20px; font-weight:900; margin-bottom: 10px; text-transform:uppercase;">Naruszenie Licencji i Praw Autorskich</div>
                <div style="color:#cbd5e1; font-size:15px; max-width:550px; margin:0 auto; line-height:1.6;">Struktura danych JSON-LD oraz interaktywny moduł FAQ są własnością intelektualną serwisu Projekt-Ogrzewania.pl. Wykryto próbę kradzieży technologii.</div>
            </div>
        `;
        return;
    }

    // 2. Logika Akordeonu
    const faqItems = document.querySelectorAll('#rk-faq-rozstaw .rk-faq-item');

    faqItems.forEach(item => {
        const btn = item.querySelector('.rk-faq-question');
        btn.addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            
            // Zwijamy wszystkie
            faqItems.forEach(i => i.classList.remove('active'));
            
            // Otwieramy kliknięty jeśli nie był otwarty
            if (!isActive) {
                item.classList.add('active');
            }
        });
    });
    
    // Otwarcie pierwszego elementu po załadowaniu
    if(faqItems.length > 0) {
        faqItems[0].classList.add('active');
    }
});
</script>



<style>
:root {
    --rk-end-dark: #111827;
    --rk-end-blue: #2563eb;
    --rk-end-blue-hover: #1d4ed8;
    --rk-end-light: #f8fafc;
    --rk-end-green: #059669;
    --rk-end-green-bg: #d1fae5;
    --rk-end-red: #dc2626;
    --rk-end-red-bg: #fee2e2;
    --rk-end-text: #334155;
    --rk-end-border: #e2e8f0;
    --rk-end-shadow: 0 10px 30px -10px rgba(37, 99, 235, 0.15);
}

.rk-end-wrapper {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: var(--rk-end-shadow);
    border: 1px solid var(--rk-end-border);
    overflow: hidden;
}

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

.rk-end-header::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background: radial-gradient(circle at 50% 0%, rgba(37, 99, 235, 0.2) 0%, transparent 70%);
    pointer-events: none;
}

.rk-end-title {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 20px 0;
    line-height: 1.2;
    letter-spacing: -0.5px;
    position: relative;
    z-index: 2;
}

.rk-end-lead {
    font-size: 18px;
    line-height: 1.6;
    color: #cbd5e1;
    max-width: 750px;
    margin: 0 auto;
    position: relative;
    z-index: 2;
    font-weight: 400;
}

.rk-end-lead strong {
    color: #60a5fa;
    font-weight: 700;
}

/* Interaktywny Moduł - Symulator */
.rk-end-interactive {
    padding: 40px;
    background: var(--rk-end-light);
    border-bottom: 1px solid var(--rk-end-border);
}

.rk-end-h3 {
    text-align: center;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-end-dark);
    margin: 0 0 30px 0;
}

/* Toggle Switch */
.rk-toggle-container {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 20px;
    margin-bottom: 40px;
    background: #ffffff;
    padding: 15px 30px;
    border-radius: 99px;
    width: fit-content;
    margin-left: auto;
    margin-right: auto;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
    border: 1px solid var(--rk-end-border);
}

.rk-toggle-label {
    font-size: 16px;
    font-weight: 700;
    color: #64748b;
    transition: color 0.3s ease;
    cursor: pointer;
}

.rk-toggle-label.active-pro { color: var(--rk-end-green); }
.rk-toggle-label.active-amateur { color: var(--rk-end-red); }

.rk-switch {
    position: relative;
    display: inline-block;
    width: 70px;
    height: 36px;
}

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

.rk-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-end-green);
    transition: .4s cubic-bezier(0.4, 0.0, 0.2, 1);
    border-radius: 36px;
}

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

input:checked + .rk-slider { background-color: var(--rk-end-red); }
input:checked + .rk-slider:before { transform: translateX(34px); }

/* Obszar Wyników */
.rk-sim-dashboard {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    align-items: stretch;
}

.rk-sim-card {
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 2px solid transparent;
    transition: all 0.4s ease;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

/* Moduł SEO (Wiedza w pigułce) zastępujący SVG */
.rk-seo-box {
    background: #f8fafc;
    border-radius: 12px;
    padding: 20px;
    border: 1px dashed var(--rk-end-border);
}

.rk-seo-box h5 {
    margin: 0 0 10px 0;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-end-dark);
    text-transform: uppercase;
}

.rk-seo-box ul {
    margin: 0;
    padding-left: 20px;
    color: var(--rk-end-text);
    font-size: 14px;
    line-height: 1.6;
}

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

/* Dynamiczne Boxy */
.stat-box {
    padding: 15px;
    border-radius: 12px;
    margin-bottom: 15px;
    font-size: 15px;
    line-height: 1.5;
    font-weight: 500;
}

.rk-sim-content h4 {
    font-size: 20px;
    font-weight: 800;
    margin: 0 0 15px 0;
}

/* CTA Footer */
.rk-end-footer {
    padding: 40px;
    background: #ffffff;
    text-align: center;
}

.rk-btn-final {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-end-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 20px -5px rgba(37, 99, 235, 0.4);
    transition: all 0.3s ease;
}

.rk-btn-final:hover {
    transform: translateY(-3px);
    background: var(--rk-end-blue-hover);
    box-shadow: 0 15px 25px -5px rgba(37, 99, 235, 0.5);
}

.rk-btn-final svg { transition: transform 0.3s; }
.rk-btn-final:hover svg { transform: translateX(6px); }

@media (max-width: 768px) {
    .rk-sim-dashboard { grid-template-columns: 1fr; }
    .rk-end-header, .rk-end-interactive, .rk-end-footer { padding: 30px 20px; }
    .rk-end-title { font-size: 26px; }
    .rk-toggle-container { width: 100%; flex-direction: column; gap: 15px; text-align: center; }
    .rk-btn-final { width: 100%; font-size: 16px; padding: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/"
    },
    "headline": "Podsumowanie inżynierskie: Ogrzewanie podłogowe to inwestycja na 50 lat",
    "description": "Rozstaw rur to pochodna matematycznego bilansu strat ciepła. Zobacz symulację kosztów: profesjonalny projekt OZC vs instalacja bez wyliczeń hydraulicznych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-21",
    "dateModified": "2026-05-21"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#dataset",
    "name": "Porównanie efektywności: Projekt OZC vs Montaż Intuicyjny",
    "description": "Zestawienie techniczno-finansowe obrazujące wpływ poprawnie dobranego rozstawu rur na żywotność i efektywność pompy ciepła w perspektywie 50 lat.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt OZC podłogówki",
      "rozstaw rur a pompa ciepła",
      "bilans hydrauliczny ogrzewania",
      "żywotność ogrzewania podłogowego",
      "koszty eksploatacji pompy ciepła"
    ],
    "measurementTechnique": "Obliczenia inżynierskie na podstawie PN-EN 12831 oraz danych z rotametrów dla symulacji długoterminowej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Projekt OZC: Idealne dopasowanie przepływów, praca na niskim parametrze zasilania, wysoki współczynnik COP.",
        "Brak projektu (Na oko): Zjawisko zebry termicznej, dławienie pompy obiegowej, przewymiarowanie kosztów inwestycyjnych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#webapp",
    "name": "Symulator Inwestycyjny Ogrzewania Podłogowego",
    "description": "Interaktywny panel demonstrujący różnice termiczne i hydrauliczne pomiędzy instalacją z certyfikowanym projektem a wykonawstwem z pamięci.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 styling execution",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-end-wrapper" id="podsumowanie-app">
    <div class="rk-end-header">
        <h2 class="rk-end-title">Podsumowanie inżynierskie: Inwestycja na 50 lat</h2>
        <p class="rk-end-lead">
            Po zalaniu rur jastrychem, naprawa jakichkolwiek błędów wiąże się z katastrofalnym remontem i kuciem całego domu. Zapomnij o uniwersalnych radach pseudofachowców, którzy twierdzą, że rozstaw <strong>"co 15 cm wszędzie będzie pan zadowolony"</strong>.
        </p>
    </div>

    <div class="rk-end-interactive">
        <h3 class="rk-end-h3">Zrób symulację: Co determinuje rozstaw rur?</h3>
        
        <div class="rk-toggle-container">
            <span class="rk-toggle-label active-pro" id="lblPro" onclick="document.getElementById('simToggle').click()">Projekt Inżynierski (OZC)</span>
            <label class="rk-switch">
                <input type="checkbox" id="simToggle">
                <span class="rk-slider"></span>
            </label>
            <span class="rk-toggle-label" id="lblAmateur" onclick="document.getElementById('simToggle').click()">Instalacja "Na oko"</span>
        </div>

        <div class="rk-sim-dashboard">
            <div class="rk-sim-card" id="cardVisual">
                <div id="contentProSEO" style="display:block;">
                    <div class="rk-seo-box" style="border-color: #10b981; background: #f0fdf4;">
                        <h5 style="color: #047857;">Najczęstsze pytania z naszej <a href="https://www.facebook.com/groups/forumogrzewaniapodlogowego/" target="_blank" rel="nofollow noopener noreferrer">grupy na Facebooku</a>:</h5>
                        <ul style="color: #064e3b;">
                            <li>Jak projekt OZC zapobiega przegrzewaniu posadzki?</li>
                            <li>Zbalansowanie rotametrów dla pomp ciepła</li>
                            <li>Wpływ rozstawu 10cm na sprawność sezonową (SCOP)</li>
                            <li>Wylewka anhydrytowa a transfer ciepła w salonie</li>
                        </ul>
                    </div>
                </div>

                <div id="contentAmateurSEO" style="display:none;">
                    <div class="rk-seo-box" style="border-color: #ef4444; background: #fff5f5;">
                        <h5 style="color: #b91c1c;">Wyszukiwania dla błędów i awarii:</h5>
                        <ul style="color: #7f1d1d;">
                            <li>Dlaczego podłogówka nie grzeje na końcach obwodów?</li>
                            <li>Efekt zebry termicznej – jak naprawić chłodne pasy?</li>
                            <li>Przeciążona pompa obiegowa w podłogówce</li>
                            <li>Za długa pętla grzewcza powyżej 100 metrów</li>
                        </ul>
                    </div>
                </div>
            </div>

            <div class="rk-sim-card" id="cardData">
                <div class="rk-sim-content" id="contentPro">
                    <h4 style="color: var(--rk-end-green);">Matematyczny bilans = Oszczędność</h4>
                    <div class="stat-box" style="background: var(--rk-end-green-bg); color: #064e3b; border-left: 4px solid var(--rk-end-green);">
                        Rozstaw rur to bezpośrednia pochodna <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" style="color: #064e3b; font-weight:700; text-decoration:underline;">obliczeń strat ciepła (OZC)</a>, rodzaju wybranej posadzki oraz parametrów pompy ciepła.
                    </div>
                    <div class="stat-box" style="background: #f1f5f9; color: #334155;">
                        <strong>Zysk inżynierski:</strong> Zyskujesz pewność idealnych przepływów hydraulicznych, najwyższy możliwy współczynnik COP pompy ciepła oraz drastyczny spadek rachunków za prąd.
                    </div>
                </div>

                <div class="rk-sim-content" id="contentAmateur" style="display:none;">
                    <h4 style="color: var(--rk-end-red);">Ruletka na placu budowy</h4>
                    <div class="stat-box" style="background: var(--rk-end-red-bg); color: #7f1d1d; border-left: 4px solid var(--rk-end-red);">
                        Układanie "na oko" (np. wszędzie 10 cm) generuje zbędne <a href="https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/" style="color: #7f1d1d; font-weight:700; text-decoration:underline;">koszty inwestycyjne rzędu tysięcy złotych</a> i drastycznie dławi pompę obiegową.
                    </div>
                    <div class="stat-box" style="background: #f1f5f9; color: #334155;">
                        <strong>Skutki błędów:</strong> Zbyt rzadki rozstaw to niedogrzany dom i "zebra termiczna". Zbyt gęsty - przeciążenie hydrauliki. W obu przypadkach płacisz podwójnie.
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-end-footer">
        <p style="font-size: 16px; color: #64748b; margin: 0 0 25px 0; max-width: 650px; margin-left: auto; margin-right: auto; line-height: 1.6;">
            Zamiast ryzykować, zainwestuj ułamek budżetu w profesjonalny, <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/" style="color: var(--rk-end-blue); font-weight: 700; text-decoration: none;">indywidualny projekt instalacji grzewczej</a>. Tylko tak zyskasz pewność, że Twój dom będzie ciepły i bezawaryjny.
        </p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-final">
            PRZEJDŹ DO BAZY WIEDZY I CZYTAJ WIĘCEJ
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const app = document.getElementById('podsumowanie-app');
        if (app) {
            app.innerHTML = `
                <div style="padding:45px; text-align:center; background:#0f172a; border-radius:24px; border:2px solid #ef4444; color:#fff; font-family:sans-serif; margin:40px auto; max-width:800px;">
                    <div style="font-size:45px; margin-bottom:15px;">🛑</div>
                    <div style="color:#ef4444; font-size:20px; font-weight:900; text-transform:uppercase; margin-bottom:10px;">Wykryto Naruszenie Własności Intelektualnej</div>
                    <div style="color:#cbd5e1; font-size:14px; line-height:1.6;">Interaktywny kontener inżynierski oraz powiązana struktura bazodanowa JSON-LD stanowią własność intelektualną chronioną prawem dla serwisu Projekt-Ogrzewania.pl. Wykryto użycie kodu na nieautoryzowanej domenie.</div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Toggle Switch
    const toggle = document.getElementById('simToggle');
    const lblPro = document.getElementById('lblPro');
    const lblAmateur = document.getElementById('lblAmateur');
    
    // Treść SEO
    const contentProSEO = document.getElementById('contentProSEO');
    const contentAmateurSEO = document.getElementById('contentAmateurSEO');
    
    // Wyniki
    const contentPro = document.getElementById('contentPro');
    const contentAmateur = document.getElementById('contentAmateur');
    
    // Karty (Stylizowanie obramowania)
    const cardVisual = document.getElementById('cardVisual');
    const cardData = document.getElementById('cardData');

    toggle.addEventListener('change', function() {
        if (this.checked) {
            // Stan: Amator
            lblPro.classList.remove('active-pro');
            lblAmateur.classList.add('active-amateur');
            
            contentProSEO.style.display = 'none';
            contentAmateurSEO.style.display = 'block';
            
            contentPro.style.display = 'none';
            contentAmateur.style.display = 'block';
            
            cardVisual.style.borderColor = 'var(--rk-end-red)';
            cardVisual.style.background = '#fff5f5';
            cardData.style.borderColor = 'var(--rk-end-red)';
            
        } else {
            // Stan: Pro Inżynier
            lblAmateur.classList.remove('active-amateur');
            lblPro.classList.add('active-pro');
            
            contentAmateurSEO.style.display = 'none';
            contentProSEO.style.display = 'block';
            
            contentAmateur.style.display = 'none';
            contentPro.style.display = 'block';
            
            cardVisual.style.borderColor = 'var(--rk-end-green)';
            cardVisual.style.background = '#f0fdf4';
            cardData.style.borderColor = 'var(--rk-end-green)';
        }
    });

    // Inicjalizacja wizualna
    cardVisual.style.borderColor = 'var(--rk-end-green)';
    cardVisual.style.background = '#f0fdf4';
    cardData.style.borderColor = 'var(--rk-end-green)';
});
</script>



<style>
:root {
    --rk-dl2-dark: #0f172a;
    --rk-dl2-darker: #020617;
    --rk-dl2-brand: #0891b2; /* Technologiczny Cyjan */
    --rk-dl2-brand-dark: #0e7490;
    --rk-dl2-brand-light: #cffafe;
    --rk-dl2-bg: #f8fafc;
    --rk-dl2-panel: #ffffff;
    --rk-dl2-border: #e2e8f0;
    --rk-dl2-text: #334155;
    --rk-dl2-muted: #64748b;
}

.rk-dl2-wrapper {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: var(--rk-dl2-panel);
    border-radius: 24px;
    border: 1px solid var(--rk-dl2-border);
    box-shadow: 0 25px 50px -12px rgba(8, 145, 178, 0.15);
    overflow: hidden;
}

/* Sekcja Nagłówkowa */
.rk-dl2-header {
    background: linear-gradient(135deg, var(--rk-dl2-darker) 0%, #164e63 100%);
    padding: 45px 50px;
    color: #ffffff;
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: relative;
    border-bottom: 4px solid var(--rk-dl2-brand);
}

.rk-dl2-header::before {
    content: '';
    position: absolute;
    top: 0; right: 0; bottom: 0; left: 0;
    background: radial-gradient(circle at 80% 50%, rgba(8, 145, 178, 0.25) 0%, transparent 60%);
    pointer-events: none;
}

.rk-dl2-header-content {
    position: relative;
    z-index: 2;
    max-width: 65%;
}

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

.rk-dl2-title {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 12px 0;
    letter-spacing: -0.5px;
    line-height: 1.2;
}

.rk-dl2-lead {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    line-height: 1.6;
}

/* Pływająca Ikona PDF */
.rk-dl2-visual-icon {
    position: relative;
    z-index: 2;
    background: rgba(255,255,255,0.05);
    padding: 20px;
    border-radius: 24px;
    border: 1px solid rgba(255,255,255,0.1);
    backdrop-filter: blur(10px);
}

.rk-pdf-svg {
    width: 75px;
    height: auto;
    filter: drop-shadow(0 10px 15px rgba(0,0,0,0.4));
    animation: floatPdf 3s infinite ease-in-out alternate;
}

@keyframes floatPdf {
    0% { transform: translateY(0) rotate(0deg); }
    100% { transform: translateY(-8px) rotate(2deg); }
}

/* Główny obszar roboczy */
.rk-dl2-workspace {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: 40px;
    padding: 40px 50px;
    background: var(--rk-dl2-panel);
}

/* Podgląd pliku */
.rk-dl2-preview {
    background: var(--rk-dl2-bg);
    border: 1px solid var(--rk-dl2-border);
    border-radius: 16px;
    padding: 15px;
    position: relative;
    cursor: zoom-in;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.4s ease;
}

.rk-dl2-preview:hover {
    transform: translateY(-5px) scale(1.02);
    box-shadow: 0 20px 30px -10px rgba(8, 145, 178, 0.2);
    border-color: #67e8f9;
}

.rk-dl2-img {
    width: 100%;
    height: auto;
    border-radius: 8px;
    display: block;
    box-shadow: 0 4px 6px rgba(0,0,0,0.05);
}

.rk-preview-overlay {
    position: absolute;
    bottom: 25px;
    right: 25px;
    background: rgba(2, 6, 23, 0.75);
    color: #ffffff;
    padding: 8px 14px;
    border-radius: 10px;
    font-size: 12px;
    font-weight: 700;
    backdrop-filter: blur(4px);
    display: flex;
    align-items: center;
    gap: 6px;
    border: 1px solid rgba(255,255,255,0.1);
}

/* Prawa kolumna (Informacje i SEO) */
.rk-dl2-info {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

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

.rk-feature-list {
    list-style: none;
    padding: 0;
    margin: 0 0 35px 0;
}

.rk-feature-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 16px;
    font-size: 15px;
    font-weight: 600;
    color: var(--rk-dl2-text);
    line-height: 1.5;
}

.rk-feature-item:last-child { margin-bottom: 0; }

.rk-check-icon {
    width: 22px;
    height: 22px;
    color: var(--rk-dl2-brand);
    flex-shrink: 0;
    margin-top: 1px;
}

/* Przycisk Pobierania */
.rk-dl2-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-dl2-brand);
    color: #ffffff;
    text-decoration: none !important;
    padding: 18px 35px;
    border-radius: 14px;
    font-weight: 800;
    font-size: 16px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 10px 20px -5px rgba(8, 145, 178, 0.4);
    border: 2px solid transparent;
}

.rk-dl2-btn:hover {
    background: var(--rk-dl2-brand-dark);
    transform: translateY(-3px);
    box-shadow: 0 15px 25px -5px rgba(8, 145, 178, 0.5);
    border-color: #67e8f9;
}

.rk-dl2-btn svg { transition: transform 0.3s; }
.rk-dl2-btn:hover svg { transform: translateY(3px); }

/* Stopka */
.rk-dl2-footer {
    padding: 20px 50px;
    background: var(--rk-dl2-bg);
    border-top: 1px solid var(--rk-dl2-border);
    font-size: 13px;
    color: var(--rk-dl2-muted);
    text-align: center;
    line-height: 1.6;
}

.rk-dl2-footer a {
    color: var(--rk-dl2-brand-dark);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dotted var(--rk-dl2-brand-dark);
    transition: 0.3s;
}

.rk-dl2-footer a:hover {
    color: var(--rk-dl2-brand);
    border-bottom-style: solid;
}

/* Responsywność */
@media (max-width: 850px) {
    .rk-dl2-header { flex-direction: column; text-align: center; padding: 35px 25px; gap: 30px; }
    .rk-dl2-header-content { max-width: 100%; }
    .rk-dl2-workspace { grid-template-columns: 1fr; padding: 35px 25px; gap: 30px; }
    .rk-dl2-footer { padding: 20px 25px; }
    .rk-dl2-btn { width: 100%; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#download-hub",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/"
    },
    "headline": "Kompendium Wiedzy: Jak gęsto rozkładać podłogówkę? (Infografika PDF)",
    "description": "Pobierz darmową infografikę inżynierską w formacie PDF. Znajdziesz w niej parametry rozstawu rur dla pomp ciepła oraz błędy do uniknięcia na budowie.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Jak-gesto-rozkladac-podlogowke.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-23",
    "dateModified": "2026-05-23"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#dataset-infografika",
    "name": "Zestawienie wytycznych: Rozstaw rur ogrzewania podłogowego",
    "description": "Baza danych określająca optymalne natężenie układania rur (10, 15, 20 cm) w zależności od źródła ciepła oraz wymogów dla stref brzegowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jak gęsto rozkładać podłogówkę pdf",
      "schemat układania podłogówki",
      "rozstaw rur pex pompa ciepła",
      "tabela rozstawu rur ogrzewania podłogowego",
      "strefa brzegowa podłogówka"
    ],
    "measurementTechnique": "Zestawienie analityczne w oparciu o normy PN-EN 1264 oraz charakterystykę oporów cieplnych posadzek drewnianych i ceramicznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zależność rozstawu rur (10-20 cm) od temperatury zasilania.",
        "Wymogi zagęszczania pętli pod dużymi oknami HS (strefy brzegowe).",
        "Kompensacja oporów cieplnych (R=0.12 m²K/W) dla deski barlineckiej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/#dl-app",
    "name": "Centrum Pobierania Wiedzy: Rozstaw Rur PEX",
    "description": "Interaktywny moduł umożliwiający wizualizację i natychmiastowe pobranie dokumentacji technicznej w wysokiej rozdzielczości.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 compatibility",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-dl2-wrapper" id="rk-pdf-download-hub">
    
    <div class="rk-dl2-header">
        <div class="rk-dl2-header-content">
            <div class="rk-dl2-badge">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
                Darmowe Materiały Inżynierskie
            </div>
            <h2 class="rk-dl2-title">Pobierz Ściągawkę Projektową</h2>
            <p class="rk-dl2-lead">Miej najważniejsze zasady zawsze pod ręką. Zapisz kompendium na smartfonie i skonsultuj je ze swoim wykonawcą przed wylaniem posadzek.</p>
        </div>
        <div class="rk-dl2-visual-icon">
            <svg class="rk-pdf-svg" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M14 2H6C4.89543 2 4 2.89543 4 4V20C4 21.1046 4.89543 22 6 22H18C19.1046 22 20 21.1046 20 20V8L14 2Z" fill="#ef4444" stroke="#ffffff" stroke-width="1.5" stroke-linejoin="round"/>
                <path d="M14 2V8H20" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
                <text x="7" y="18" fill="white" font-size="5.5" font-weight="900" font-family="sans-serif">PDF</text>
            </svg>
        </div>
    </div>

    <div class="rk-dl2-workspace">
        
        <div class="rk-dl2-preview" onclick="window.open('https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Jak-gesto-rozkladac-podlogowke.webp', '_blank')">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Jak-gesto-rozkladac-podlogowke.webp" alt="Infografika: Jak gęsto rozkładać ogrzewanie podłogowe - zasady i błędy" class="rk-dl2-img" loading="lazy">
            <div class="rk-preview-overlay">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="11" y1="8" x2="11" y2="14"></line><line x1="8" y1="11" x2="14" y2="11"></line></svg>
                Powiększ
            </div>
        </div>

        <div class="rk-dl2-info">
            <h3 class="rk-dl2-h3">Co znajdziesz w dokumencie?</h3>
            <ul class="rk-feature-list">
                <li class="rk-feature-item">
                    <svg class="rk-check-icon" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Zestawienie oporów cieplnych i rozstawów rur dedykowanych pod deski warstwowe i parkiety.
                </li>
                <li class="rk-feature-item">
                    <svg class="rk-check-icon" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Zasady wymiarowania stref brzegowych przy dużych przeszkleniach typu HS.
                </li>
                <li class="rk-feature-item">
                    <svg class="rk-check-icon" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Tabelę bezpiecznych, granicznych długości pętli grzewczych dla rur PEX 16 mm.
                </li>
                <li class="rk-feature-item">
                    <svg class="rk-check-icon" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Wysokiej jakości grafiki, czytelne bezpośrednio na ekranie smartfona.
                </li>
            </ul>

            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Jak-gesto-rozkladac-podlogowke.pdf" class="rk-dl2-btn" target="_blank">
                POBIERZ INFOGRAFIKĘ (PDF)
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
            </a>
        </div>

    </div>

    <div class="rk-dl2-footer">
        Potrzebujesz dokładnych wyliczeń dla konkretnych pomieszczeń? 
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Skorzystaj z pomocy eksperta i zamów projekt wykonawczy OZC.</a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-pdf-download-hub');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 10px;">🔒</div>
                    <div style="font-size: 18px; font-weight: 800; color: #ef4444; text-transform: uppercase;">Zasoby Chronione</div>
                    <p style="color: #cbd5e1; font-size: 14px; line-height: 1.5; max-width: 500px; margin: 10px auto 0;">
                        Infografika oraz interfejs udostępniania są wyłączną własnością Projekt-Ogrzewania.pl. Hotlinking i kradzież kodu są zabronione.
                    </p>
                </div>
            `;
        }
    }
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/">Jak gęsto rozkładać podłogówkę?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Podłogówka cena za m² robocizny.</title>
		<link>https://projekt-ogrzewania.pl/podlogowka-cena-za-m%c2%b2-robocizny/</link>
					<comments>https://projekt-ogrzewania.pl/podlogowka-cena-za-m%c2%b2-robocizny/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 04 Jan 2025 12:41:44 +0000</pubDate>
				<category><![CDATA[Budżet instalacji]]></category>
		<category><![CDATA[Cena robocizny 2025]]></category>
		<category><![CDATA[Czynniki kosztowe]]></category>
		<category><![CDATA[Efektywność cieplna]]></category>
		<category><![CDATA[Koszty ogrzewania podłogowego]]></category>
		<category><![CDATA[Materiały do podłogówki]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Optymalizacja kosztów]]></category>
		<category><![CDATA[Projekty ogrzewania]]></category>
		<category><![CDATA[Rozstaw rur podłogówki]]></category>
		<category><![CDATA[budżet na podłogówkę]]></category>
		<category><![CDATA[cena robocizny podłogówki]]></category>
		<category><![CDATA[efektywność cieplna]]></category>
		<category><![CDATA[instalacja ogrzewania podłogowego]]></category>
		<category><![CDATA[koszty instalacji]]></category>
		<category><![CDATA[materiały podłogówka]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[podłogówka cena]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[systemy grzewcze]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=1892</guid>

					<description><![CDATA[<p>Podłogówka cena za m² robocizny to jedno z najczęściej zadawanych pytań przez inwestorów. W tym artykule szczegółowo omawiamy koszty instalacji ogrzewania podłogowego, uwzględniając rozstaw rur, lokalizację inwestycji oraz rok 2025 jako punkt odniesienia cenowego. Dowiesz się, jakie czynniki wpływają na koszt, dlaczego warto inwestować w profesjonalny projekt i jak optymalizować wydatki, aby zapewnić komfort cieplny i efektywność energetyczną.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/podlogowka-cena-za-m%c2%b2-robocizny/">Podłogówka cena za m² robocizny.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --primary: #0f172a;
    --accent: #0284c7; 
    --accent-hover: #0369a1;
    --bg-light: #f0f9ff; 
    --border-color: #e2e8f0;
    --card-bg: #ffffff;
    --text-muted: #64748b;
}

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

.premium-hero-box::before {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    width: 350px;
    height: 350px;
    background: radial-gradient(circle, rgba(2, 132, 199, 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: 40px 50px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
}

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

.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: var(--accent-hover);
}

.hero-content h3 {
    font-size: 20px;
    font-weight: 700;
    color: var(--primary);
    margin-top: 35px;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Interaktywny Wizualizator Zakresu Prac */
.interactive-scope-container {
    background: #ffffff;
    border: 1px solid #bae6fd;
    border-radius: 20px;
    padding: 25px;
    margin-top: 30px;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.05);
}

.scope-grid {
    display: flex;
    gap: 15px;
    margin-bottom: 25px;
    flex-wrap: wrap;
}

.scope-btn {
    flex: 1;
    min-width: 120px;
    background: var(--bg-light);
    border: 2px solid transparent;
    padding: 15px 10px;
    border-radius: 14px;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    color: var(--text-muted);
}

.scope-btn svg {
    width: 28px;
    height: 28px;
    stroke: currentColor;
    transition: transform 0.3s ease;
}

.scope-btn span {
    font-size: 13px;
    font-weight: 700;
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.scope-btn:hover {
    background: #e0f2fe;
    color: var(--accent);
}

.scope-btn:hover svg {
    transform: scale(1.1);
}

.scope-btn.active {
    background: var(--accent);
    color: #ffffff;
    border-color: var(--accent-hover);
    box-shadow: 0 8px 15px rgba(2, 132, 199, 0.2);
}

.scope-btn.active svg {
    stroke: #ffffff;
    transform: scale(1.1);
}

.scope-content-box {
    background: var(--bg-light);
    border-left: 4px solid var(--accent);
    padding: 20px 25px;
    border-radius: 0 12px 12px 0;
    min-height: 120px;
    display: none;
    animation: fadeIn 0.4s ease forwards;
}

.scope-content-box.active {
    display: block;
}

.scope-content-box h4 {
    margin: 0 0 10px 0;
    font-size: 16px;
    color: var(--primary);
}

.scope-content-box p {
    margin: 0;
    font-size: 15px;
    line-height: 1.6;
    color: #475569;
}

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

@media (max-width: 900px) {
    .hero-content { padding: 35px 25px; }
}

@media (max-width: 600px) {
    .scope-grid { flex-direction: column; }
    .scope-btn { flex-direction: row; justify-content: flex-start; padding: 12px 20px; }
    .scope-btn svg { width: 24px; height: 24px; }
    .scope-content-box { padding: 15px; border-radius: 12px; border-left: none; border-top: 4px solid var(--accent); }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Podłogówka cena za m² robocizny - Zakres prac i koszty 2026",
    "description": "Szczegółowa analiza stawek robocizny za montaż ogrzewania podłogowego w 2026 roku. Sprawdź, od czego zależy ostateczna cena instalacji i co dokładnie obejmuje kompleksowa wycena.",
    "license": "https://projekt-ogrzewania.pl/",
    "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/podlogowka-cena-za-m2-robocizny/"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Zakres prac monterskich w cenie robocizny ogrzewania podłogowego",
    "description": "Zestawienie elementów wchodzących w skład uśrednionych rynkowych kosztów wykonawczych dla wodnego ogrzewania podłogowego (32-45 PLN/m²).",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Przygotowanie i izolacja",
        "value": "Wliczone w stawkę",
        "description": "Rozłożenie izolacji termicznej, przeciwwilgociowej i folii z rastrem."
      },
      {
        "@type": "PropertyValue",
        "name": "Montaż układu rur",
        "value": "Wliczone w stawkę",
        "description": "Układanie i kotwienie pętli grzewczych z uwzględnieniem stref brzegowych."
      },
      {
        "@type": "PropertyValue",
        "name": "Podłączenie rozdzielacza",
        "value": "Wliczone w stawkę",
        "description": "Złożenie i uzbrojenie rozdzielacza oraz podpięcie wszystkich obiegów."
      },
      {
        "@type": "PropertyValue",
        "name": "Próba szczelności",
        "value": "Wliczone w stawkę",
        "description": "Obowiązkowa próba ciśnieniowa wodą lub powietrzem przed wylaniem jastrychu."
      }
    ],
    "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": "Interaktywny wizualizator zakresu prac instalacyjnych",
    "applicationCategory": "EducationalApplication",
    "description": "Interaktywny panel pozwalający inwestorowi na eksplorację poszczególnych etapów wchodzących w skład rynkowej stawki za robociznę ogrzewania podłogowego.",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "license": "https://projekt-ogrzewania.pl/",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="premium-hero-box" id="hero-app-container">
    <div class="hero-content">
        
        <div class="hero-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Analiza stawek 2026
        </div>
        
        <p class="hero-text"><strong>Podłogówka cena za m² robocizny</strong> to jeden z kluczowych parametrów, który inwestor musi uwzględnić przy planowaniu instalacji ogrzewania płaszczyznowego. W 2026 roku podłogówka cena za m² robocizny oscyluje najczęściej w przedziale <strong>32–45 zł/m²</strong> i obejmuje kompleksowe prace monterskie – od przygotowania podłoża, przez ułożenie izolacji termicznej i przeciwwilgociowej, aż po montaż rur grzewczych oraz podłączenie i uruchomienie rozdzielacza.</p>
        
        <p class="hero-text">Na ostateczną wartość, jaką osiąga podłogówka cena za m² robocizny, wpływa przede wszystkim stopień skomplikowania instalacji, zastosowana technologia montażu oraz <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur w pętlach</a>, który bezpośrednio determinuje czas pracy i precyzję wykonania. W praktyce oznacza to, że <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">dobrze zaprojektowany system</a> pozwala nie tylko kontrolować koszty wykonawcze, ale również zapewnia wyższą efektywność energetyczną na lata.</p>

        <h2>Analiza stawek robocizny za ogrzewanie podłogowe</h2>

        <div class="interactive-scope-container">
            <div class="scope-grid">
                <button class="scope-btn active" data-target="step-izolacja">
                    <svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line></svg>
                    <span>Izolacja</span>
                </button>
                <button class="scope-btn" data-target="step-rury">
                    <svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
                    <span>Układanie Rur</span>
                </button>
                <button class="scope-btn" data-target="step-rozdzielacz">
                    <svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><line x1="9" y1="9" x2="9" y2="15"></line><line x1="15" y1="9" x2="15" y2="15"></line></svg>
                    <span>Rozdzielacz</span>
                </button>
                <button class="scope-btn" data-target="step-proba">
                    <svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M12 8v4l3 3"></path></svg>
                    <span>Próba Ciśnieniowa</span>
                </button>
            </div>

            <div id="step-izolacja" class="scope-content-box active">
                <h4>1. Przygotowanie podłoża i izolacja</h4>
                <p>Ułożenie płyt styropianowych (EPS) oraz folii przeciwwilgociowej z rastrem. W profesjonalnej wycenie wliczone jest również wykonanie dylatacji brzegowych (taśma przyścienna), co jest kluczowe dla ochrony <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">jastrychu podłogowego</a> przed pękaniem podczas pracy cieplnej wylewki.</p>
            </div>
            <div id="step-rury" class="scope-content-box">
                <h4>2. Precyzyjny montaż rur grzewczych</h4>
                <p>Rozwinięcie i zakotwienie rur PEX/PERT za pomocą spinek (tacker) z zachowaniem projektowanego układu (np. ślimakowy). Stawka uwzględnia odpowiednie zagęszczenie rur w tzw. <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/">strefach brzegowych</a>, np. przy oknach tarasowych i drzwiach wyjściowych.</p>
            </div>
            <div id="step-rozdzielacz" class="scope-content-box">
                <h4>3. Podłączenie do rozdzielacza</h4>
                <p>Wpięcie wszystkich obiegów (pętli) do szafki rozdzielaczowej. W tym etapie instalator wykonuje również wstępną regulację hydrauliczną (ustawienie przepływów na rotametrach), aby zapewnić równomierne oddawanie ciepła w każdym z pomieszczeń.</p>
            </div>
            <div id="step-proba" class="scope-content-box">
                <h4>4. Obowiązkowa próba szczelności</h4>
                <p>To krytyczny punkt, którego nie wolno pominąć! Przed zalaniem rur betonem wykonawca przeprowadza nabicie instalacji ciśnieniem powietrza lub wody i sporządza protokół szczelności zgodnie z normą PN-EN 1264. To Twoja gwarancja bezpieczeństwa przed wylaniem posadzki.</p>
            </div>
        </div>

    </div>

    <noscript>
        <div style="padding: 25px 50px; background: #f8fafc; border-top: 1px solid #e2e8f0;">
            <div style="font-size: 16px; color: #0f172a; margin-bottom: 15px; font-weight: bold;">Podsumowanie prac objętych stawką 32-45 zł/m²:</div>
            <ul style="color: #475569; line-height: 1.8; margin: 0; padding-left: 20px;">
                <li>Przygotowanie izolacji termicznej i dylatacji przyściennych.</li>
                <li>Montaż rur grzewczych zgodnie z obliczeniami zapotrzebowania cieplnego.</li>
                <li>Osadzenie i podłączenie rozdzielacza wraz ze wstępną regulacją.</li>
                <li>Udokumentowana próba ciśnieniowa (szczelności).</li>
            </ul>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- OBSŁUGA INTERAKTYWNEGO WIZUALIZATORA ---
    const buttons = document.querySelectorAll('.scope-btn');
    const contentBoxes = document.querySelectorAll('.scope-content-box');

    buttons.forEach(button => {
        button.addEventListener('click', () => {
            // Usuń aktywną klasę ze wszystkich przycisków i okien treści
            buttons.forEach(btn => btn.classList.remove('active'));
            contentBoxes.forEach(box => box.classList.remove('active'));

            // Dodaj aktywną klasę do klikniętego przycisku
            button.classList.add('active');

            // Pokaż odpowiednią treść
            const targetId = button.getAttribute('data-target');
            document.getElementById(targetId).classList.add('active');
        });
    });

    // --- ZABEZPIECZENIE DOMENOWE ---
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('hero-app-container');
        if (container) {
            container.innerHTML = `
                <div style="padding: 60px 20px; text-align: center; background: #e0f2fe; color: #0284c7; 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: #0369a1; line-height: 1.5;">
                        Ten interaktywny moduł edukacyjny jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i został wdrożony bez licencji.
                    </p>
                    <a href="https://projekt-ogrzewania.pl/" style="margin-top: 25px; padding: 14px 28px; background: #0284c7; 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: #ea580c; 
    --accent-hover: #c2410c;
    --bg-light: #fff7ed; 
    --border-color: #fdba74;
    --card-bg: #ffffff;
    --text-muted: #64748b;
}

.complexity-box {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--card-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(234, 88, 12, 0.1);
    border: 1px solid var(--border-color);
    overflow: hidden;
    color: var(--primary);
}

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

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

.complexity-header p {
    font-size: 16px;
    line-height: 1.7;
    color: #475569;
    margin: 0;
}

/* Interaktywny Grid Wyzwań */
.complexity-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    padding: 30px 50px;
    background: #ffffff;
}

.complexity-card {
    border: 2px solid #f1f5f9;
    border-radius: 16px;
    padding: 25px;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    background: #ffffff;
}

.complexity-card:hover {
    border-color: #fdba74;
    transform: translateY(-3px);
    box-shadow: 0 10px 20px -5px rgba(234, 88, 12, 0.05);
}

.complexity-card.active {
    border-color: var(--accent);
    background: var(--bg-light);
}

.card-top {
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 15px;
}

.card-icon {
    width: 44px;
    height: 44px;
    border-radius: 10px;
    background: #f1f5f9;
    color: var(--accent);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: 0.3s;
}

.complexity-card.active .card-icon {
    background: var(--accent);
    color: #ffffff;
}

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

.complexity-details {
    max-height: 0;
    overflow: hidden;
    transition: all 0.4s ease;
    opacity: 0;
}

.complexity-card.active .complexity-details {
    max-height: 250px;
    margin-top: 15px;
    opacity: 1;
}

.complexity-details p {
    font-size: 14px;
    line-height: 1.6;
    color: #475569;
    margin-bottom: 12px;
}

.complexity-details a {
    color: var(--accent);
    font-weight: 700;
    text-decoration: underline;
}

.cost-impact-tag {
    display: inline-block;
    padding: 4px 10px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    background: #fee2e2;
    color: #dc2626;
}

.complexity-card.active .cost-impact-tag {
    background: #dc2626;
    color: #ffffff;
}

@media (max-width: 768px) {
    .complexity-grid { grid-template-columns: 1fr; padding: 25px; }
    .complexity-header { padding: 30px 25px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Dlaczego stopień skomplikowania projektu podnosi stawkę za m² robocizny?",
    "description": "Analiza techniczna wpływu trudnych brył budynków, automatyki i zbalansowania hydraulicznego na cenę robocizny podłogówki w 2026 roku.",
    "license": "https://projekt-ogrzewania.pl/",
    "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" }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Wskaźniki wzrostu kosztów robocizny podłogówki",
    "description": "Zestawienie procentowych i kwotowych narzutów na robociznę wynikających ze stopnia skomplikowania instalacji HVAC.",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Wzrost ceny: nieregularne kształty",
        "value": "+15-25%"
      },
      {
        "@type": "PropertyValue",
        "name": "Koszt montażu automatyki (na strefę)",
        "value": "150-250 PLN"
      },
      {
        "@type": "PropertyValue",
        "name": "Czas balansowania hydraulicznego",
        "value": "3-5 h"
      }
    ],
    "creator": { "@type": "Person", "name": "Robert Kucharski" }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Analizator Trudności Montażowych HVAC",
    "applicationCategory": "EducationalApplication",
    "license": "https://projekt-ogrzewania.pl/",
    "operatingSystem": "All",
    "description": "Interaktywny panel edukacyjny wyjaśniający dylematy inżynierskie i wzrost pracochłonności przy niestandardowych projektach ogrzewania płaszczyznowego."
  }
]
</script>

<div class="complexity-box" id="complexity-app-container">
    
    <div class="complexity-header">
        <h2>Dlaczego stopień skomplikowania projektu podnosi stawkę za m²?</h2>
        <p>Inwestorzy często pytają, skąd biorą się różnice w ofertach. Prawda jest taka, że <strong>cena robocizny podłogówki w trudnych pomieszczeniach</strong> nie może być taka sama jak w prostym garażu. Kliknij w wybrane wyzwanie, aby zobaczyć, co realnie wydłuża czas pracy montera.</p>
    </div>

    <div class="complexity-grid">
        <div class="complexity-card active">
            <div class="card-top">
                <div class="card-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3h18v18H3z"></path><path d="M21 9H3"></path><path d="M21 15H3"></path><path d="M12 3v18"></path></svg>
                </div>
                <h3>Nieregularna bryła i skosy</h3>
            </div>
            <span class="cost-impact-tag">+15–25% stawki</span>
            <div class="complexity-details">
                <p>Pomieszczenia z wykuszami, wnękami i łukami wymagają precyzyjnego kotwienia rur przy każdym załamaniu. Zwiększa to ryzyko przewężenia przekroju, co musi monitorować inżynier. Każde cięcie styropianu pod skosem to dodatkowe minuty, które sumują się w godziny.</p>
            </div>
        </div>

        <div class="complexity-card">
            <div class="card-top">
                <div class="card-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="8" rx="2" ry="2"></rect><rect x="2" y="14" width="20" height="8" rx="2" ry="2"></rect><line x1="6" y1="6" x2="6.01" y2="6"></line><line x1="6" y1="18" x2="6.01" y2="18"></line></svg>
                </div>
                <h3>Automatyka strefowa</h3>
            </div>
            <span class="cost-impact-tag">150–250 zł / strefa</span>
            <div class="complexity-details">
                <p><strong>Koszt montażu sterowania strefowego podłogówki</strong> obejmuje instalację listew sterujących oraz siłowników termoelektrycznych na rozdzielaczu. Wymaga to nie tylko wiedzy hydraulicznej, ale i precyzyjnego sparowania termostatów z obiegami.</p>
            </div>
        </div>

        <div class="complexity-card">
            <div class="card-top">
                <div class="card-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                </div>
                <h3>Balansowanie hydrauliczne</h3>
            </div>
            <span class="cost-impact-tag">3–5h pracy fachowca</span>
            <div class="complexity-details">
                <p><strong>Zbalansowanie hydrauliczne instalacji (cena</strong> wliczona w profesjonalną usługę) to etap krytyczny. Brak pracy z <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrami</a> skutkuje niedogrzaniem odległych pętli i reklamacjami.</p>
            </div>
        </div>

        <div class="complexity-card">
            <div class="card-top">
                <div class="card-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
                </div>
                <h3>Wielopoziomowość i piony</h3>
            </div>
            <span class="cost-impact-tag">Wycena indywidualna</span>
            <div class="complexity-details">
                <p>Konieczność prowadzenia kilku pionów zasilających i montażu rozdzielaczy na różnych kondygnacjach to wyzwanie logistyczne. Dowiedz się więcej o tym, <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">jak powinien wyglądać projekt</a> dla takich budynków.</p>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- ZABEZPIECZENIE DOMENOWE ---
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        document.getElementById('complexity-app-container').innerHTML = `
            <div style="padding: 60px 20px; text-align: center; background: #fff7ed; color: #ea580c; font-family: sans-serif; border-radius: 24px;">
                <div style="font-size: 48px; margin-bottom: 20px;">🔒</div>
                <div style="font-size: 22px; font-weight: bold; margin-bottom: 10px;">Treść chroniona prawem autorskim</div>
                <p style="font-size: 14px; max-width: 500px; margin: 0 auto 20px auto; color: #9a3412;">Ten moduł interaktywny został skopiowany z serwisu Projekt-Ogrzewania.pl bez zgody autora.</p>
                <a href="https://projekt-ogrzewania.pl/" style="background: #ea580c; color: white; padding: 12px 24px; border-radius: 10px; text-decoration: none; font-weight: bold;">ZOBACZ ORYGINAŁ</a>
            </div>
        `;
        return;
    }

    // --- LOGIKA INTERAKCJI ---
    const cards = document.querySelectorAll('.complexity-card');
    cards.forEach(card => {
        card.addEventListener('click', function() {
            cards.forEach(c => c.classList.remove('active'));
            this.classList.add('active');
        });
    });
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #ea580c; 
    --accent-hover: #c2410c;
    --bg-light: #fff7ed; 
    --border-color: #fdba74;
    --card-bg: #ffffff;
    --text-muted: #64748b;
}

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

.premium-hero-box::before {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    width: 350px;
    height: 350px;
    background: radial-gradient(circle, rgba(234, 88, 12, 0.08) 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: 40px 50px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
}

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

.hero-content h3 {
    font-size: 22px;
    font-weight: 700;
    color: var(--primary);
    margin-top: 35px;
    margin-bottom: 15px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.hero-content h4 {
    font-size: 18px;
    font-weight: 600;
    color: var(--primary);
    margin-top: 30px;
    margin-bottom: 15px;
}

.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: var(--accent-hover);
}

/* Moduł interaktywny - Symulator Rozstawu */
.interactive-calc-wrapper {
    background: #ffffff;
    border: 1px solid #fed7aa;
    border-radius: 20px;
    padding: 30px;
    margin-top: 30px;
    box-shadow: 0 10px 25px -5px rgba(234, 88, 12, 0.05);
}

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

.calc-control-group {
    margin-bottom: 25px;
}

.calc-label {
    display: flex;
    justify-content: space-between;
    font-size: 14px;
    font-weight: 700;
    color: var(--primary);
    margin-bottom: 15px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.calc-value-display {
    color: var(--accent);
    font-size: 18px;
}

/* Suwak */
.range-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    background: #fed7aa;
    border-radius: 5px;
    outline: none;
    transition: background 0.3s;
}

.range-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--accent);
    cursor: pointer;
    box-shadow: 0 4px 6px rgba(0,0,0,0.1);
    border: 3px solid #ffffff;
    transition: transform 0.2s;
}

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

/* Przełączniki (Toggles) */
.toggle-group {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.toggle-btn {
    flex: 1;
    min-width: 120px;
    padding: 12px 15px;
    background: #fff7ed;
    border: 2px solid #fed7aa;
    border-radius: 12px;
    color: var(--primary);
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
    transition: all 0.2s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 5px;
}

.toggle-btn span.rate-hint {
    font-size: 12px;
    color: var(--text-muted);
    font-weight: 400;
}

.toggle-btn.active {
    background: var(--accent);
    border-color: var(--accent);
    color: #ffffff;
}

.toggle-btn.active span.rate-hint {
    color: #ffedd5;
}

.toggle-btn:hover:not(.active) {
    background: #ffedd5;
    border-color: var(--accent);
}

/* Panel Wyników i Wizualizacji */
.results-container {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.data-panel {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.data-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 15px;
    background: var(--bg-light);
    border-radius: 10px;
    font-size: 14px;
    border: 1px solid #ffedd5;
}

.data-row span:first-child {
    color: #64748b;
    font-weight: 600;
}

.data-row span:last-child {
    color: var(--primary);
    font-weight: 800;
    font-size: 16px;
}

.calc-result-box {
    background: var(--primary);
    border-radius: 16px;
    padding: 25px;
    color: #ffffff;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    position: relative;
    overflow: hidden;
}

.calc-result-box::before {
    content: '';
    position: absolute;
    top: -50px;
    right: -50px;
    width: 150px;
    height: 150px;
    background: rgba(255,255,255,0.05);
    border-radius: 50%;
}

.result-label {
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #94a3b8;
    margin-bottom: 10px;
}

.result-value {
    font-size: 38px;
    font-weight: 900;
    color: #ffffff;
    line-height: 1;
    margin-bottom: 10px;
}

.result-value span {
    font-size: 18px;
    font-weight: 600;
    color: var(--accent);
}

.visual-density {
    margin-top: 10px;
    height: 60px;
    background-image: repeating-linear-gradient(90deg, transparent, transparent 15px, rgba(234, 88, 12, 0.2) 15px, rgba(234, 88, 12, 0.2) 18px);
    border-radius: 8px;
    border: 1px dashed #fed7aa;
    transition: all 0.3s ease;
}

@media (max-width: 900px) {
    .hero-content { padding: 35px 25px; }
}

@media (max-width: 650px) {
    .results-container { grid-template-columns: 1fr; }
    .toggle-group { flex-direction: column; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Jak rozstaw rur wpływa na końcowy koszt montażu i efektywność",
    "description": "Zmniejszenie rozstawu rur z 15 cm do 10 cm zwiększa pracochłonność o 33%, podnosząc cenę robocizny za m². Analiza dla standardów WT 2021.",
    "license": "https://projekt-ogrzewania.pl/",
    "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/podlogowka-cena-za-m2-robocizny/"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Zależność zużycia rury od rozstawu pętli",
    "description": "Dane techniczne pokazujące, ile metrów bieżących rury przypada na metr kwadratowy podłogi przy konkretnym zagęszczeniu.",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Zużycie przy rozstawie 15 cm",
        "value": "6,7 mb/m²"
      },
      {
        "@type": "PropertyValue",
        "name": "Zużycie przy rozstawie 10 cm",
        "value": "10,0 mb/m²"
      },
      {
        "@type": "PropertyValue",
        "name": "Wzrost pracochłonności 15cm vs 10cm",
        "value": "+33%"
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Symulator gęstości rur i pracochłonności",
    "applicationCategory": "CalculatorApplication",
    "description": "Narzędzie interaktywne ilustrujące zależność między wybranym rozstawem rur a całkowitym kosztem robocizny i ilością użytego materiału.",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "license": "https://projekt-ogrzewania.pl/",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="premium-hero-box" id="hero-app-container">
    <div class="hero-content">
        
        <div class="hero-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
            Efektywność vs Koszt
        </div>
        
        <h2>Jak rozstaw rur wpływa na końcowy koszt montażu i efektywność?</h2>
        
        <p class="hero-text">Zmniejszenie rozstawu rur z 15 cm do 10 cm zwiększa pracochłonność montażu o <strong>33%</strong>, co bezpośrednio przekłada się na wzrost ceny robocizny o około 7–10 zł/m². Przy rozstawie 10 cm instalator musi ułożyć 10 metrów bieżących rury na każdy metr kwadratowy, podczas gdy przy rozstawie 15 cm jest to tylko 6,7 metra.</p>
        
        <p class="hero-text">Zwiększona gęstość rur wymaga również większej liczby pętli grzewczych, co oznacza więcej czasu poświęconego na precyzyjne podłączenie rur do sekcji rozdzielacza i ich prawidłowe oznaczenie. Wybór rozstawu rur musi wynikać z obliczeń zapotrzebowania na ciepło (q w W/m²). W nowoczesnym budownictwie o standardzie WT 2021, gdzie zapotrzebowanie wynosi zazwyczaj 30–45 W/m², <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">rozstaw 15 cm jest wystarczający</a>.</p>

        <h4>Zagęszczenie w strefach brzegowych</h4>
        
        <p class="hero-text">Jednak w <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/">strefach brzegowych</a> (przy dużych przeszkleniach i ścianach zewnętrznych) norma PN-EN 1264 sugeruje zagęszczenie rur do 10 cm lub nawet 7,5 cm, aby zniwelować wpływ mostków termicznych. Dla instalatora oznacza to konieczność częstszego gięcia rur i zachowania minimalnych promieni gięcia (zazwyczaj 5 × średnica rury), co jest procesem żmudnym i podnoszącym koszt usługi.</p>

        <div class="interactive-calc-wrapper">
            <div class="calc-grid">
                
                <div class="calc-control-group">
                    <div class="calc-label">
                        <span>Analizowana Powierzchnia</span>
                        <span class="calc-value-display"><span id="areaValue">100</span> m²</span>
                    </div>
                    <input type="range" id="areaSlider" class="range-slider" min="30" max="250" step="10" value="100">
                </div>
                
                <div class="calc-control-group">
                    <div class="calc-label"><span>Wybierz gęstość ułożenia pętli</span></div>
                    <div class="toggle-group" id="densityToggles">
                        <button class="toggle-btn" data-spacing="20" data-pipe="5" data-rate="32" data-visual="20">
                            Co 20 cm
                            <span class="rate-hint">Pokoje techniczne</span>
                        </button>
                        <button class="toggle-btn active" data-spacing="15" data-pipe="6.7" data-rate="35" data-visual="15">
                            Co 15 cm
                            <span class="rate-hint">Standard (WT2021)</span>
                        </button>
                        <button class="toggle-btn" data-spacing="10" data-pipe="10" data-rate="42" data-visual="10">
                            Co 10 cm
                            <span class="rate-hint">Łazienki / Okna</span>
                        </button>
                    </div>
                    <div class="visual-density" id="densityVisual"></div>
                    <div style="text-align:center; font-size: 11px; color: #94a3b8; margin-top:5px;">Symulacja gęstości rur</div>
                </div>

                <div class="results-container">
                    <div class="data-panel">
                        <div class="data-row">
                            <span>Zużycie rury (na m²)</span>
                            <span id="pipePerSqM">6.7 mb</span>
                        </div>
                        <div class="data-row">
                            <span>Ilość rury (całość)</span>
                            <span id="totalPipe">670 mb</span>
                        </div>
                        <div class="data-row">
                            <span>Pracochłonność względem 15cm</span>
                            <span id="workloadDiff" style="color: #64748b;">100% (Baza)</span>
                        </div>
                    </div>
                    
                    <div class="calc-result-box">
                        <div class="result-label">Koszt Robocizny</div>
                        <div class="result-value" id="totalCost">3 500 <span>zł</span></div>
                        <div style="font-size: 13px; color: #ffedd5; margin-top: 5px;">
                            Przyjęto: <strong id="currentRateLabel">35 zł/m²</strong>
                        </div>
                    </div>
                </div>

            </div>
        </div>

    </div>

    <noscript>
        <div style="padding: 20px 50px; background: #f8fafc; border-top: 1px solid #e2e8f0;">
            <div style="font-size: 16px; color: #0f172a; margin-bottom: 10px; font-weight: bold;">Zależność zużycia rury od rozstawu:</div>
            <ul style="color: #475569; line-height: 1.6;">
                <li><strong>Rozstaw 20 cm:</strong> 5 mb rury na 1 m²</li>
                <li><strong>Rozstaw 15 cm:</strong> 6,7 mb rury na 1 m² (Standard)</li>
                <li><strong>Rozstaw 10 cm:</strong> 10 mb rury na 1 m² (Zwiększona pracochłonność)</li>
                <li><strong>Rozstaw 7,5 cm:</strong> 13,3 mb rury na 1 m² (Strefy brzegowe)</li>
            </ul>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- LOGIKA SYMULATORA GĘSTOŚCI ---
    const areaSlider = document.getElementById('areaSlider');
    const areaValue = document.getElementById('areaValue');
    const totalCostDisplay = document.getElementById('totalCost');
    const densityToggles = document.querySelectorAll('.toggle-btn');
    const currentRateLabel = document.getElementById('currentRateLabel');
    
    const pipePerSqMDisplay = document.getElementById('pipePerSqM');
    const totalPipeDisplay = document.getElementById('totalPipe');
    const workloadDiffDisplay = document.getElementById('workloadDiff');
    const densityVisual = document.getElementById('densityVisual');
    
    let currentArea = 100;
    let currentRate = 35;
    let currentPipe = 6.7;
    let currentSpacingVisual = 15;

    function formatCurrency(number) {
        return new Intl.NumberFormat('pl-PL', { maximumFractionDigits: 0 }).format(number);
    }

    function calculate() {
        const totalCost = currentArea * currentRate;
        const totalPipe = currentArea * currentPipe;
        
        totalCostDisplay.innerHTML = `${formatCurrency(totalCost)} <span>zł</span>`;
        currentRateLabel.textContent = `${currentRate} zł/m²`;
        
        pipePerSqMDisplay.textContent = `${currentPipe.toString().replace('.', ',')} mb`;
        totalPipeDisplay.textContent = `${formatCurrency(totalPipe)} mb`;
        
        // Obliczenia pracochłonności wzgledem 15cm
        if (currentPipe === 6.7) {
            workloadDiffDisplay.textContent = "100% (Baza)";
            workloadDiffDisplay.style.color = "#64748b";
        } else if (currentPipe > 6.7) {
            const diff = Math.round(((currentPipe / 6.7) - 1) * 100);
            workloadDiffDisplay.textContent = `+${diff}% czasu`;
            workloadDiffDisplay.style.color = "#ea580c";
        } else {
            const diff = Math.round((1 - (currentPipe / 6.7)) * 100);
            workloadDiffDisplay.textContent = `-${diff}% czasu`;
            workloadDiffDisplay.style.color = "#16a34a";
        }
        
        // Aktualizacja wizualizacji gęstości
        densityVisual.style.backgroundImage = `repeating-linear-gradient(90deg, transparent, transparent ${currentSpacingVisual}px, rgba(234, 88, 12, 0.6) ${currentSpacingVisual}px, rgba(234, 88, 12, 0.6) ${currentSpacingVisual + 3}px)`;
    }

    if(areaSlider) {
        areaSlider.addEventListener('input', function(e) {
            currentArea = parseInt(e.target.value);
            areaValue.textContent = currentArea;
            calculate();
        });
    }

    densityToggles.forEach(btn => {
        btn.addEventListener('click', function() {
            densityToggles.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            
            currentRate = parseFloat(this.getAttribute('data-rate'));
            currentPipe = parseFloat(this.getAttribute('data-pipe'));
            currentSpacingVisual = parseInt(this.getAttribute('data-visual'));
            
            calculate();
        });
    });

    calculate(); // Initial run

    // --- ZABEZPIECZENIE DOMENOWE ---
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('hero-app-container');
        if (container) {
            container.innerHTML = `
                <div style="padding: 60px 20px; text-align: center; background: #fff7ed; color: #ea580c; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 300px; font-family: sans-serif;">
                    <div style="font-size: 48px; margin-bottom: 20px;">🔒</div>
                    <div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona prawem autorskim</div>
                    <div style="font-size: 16px; max-width: 500px; color: #9a3412; line-height: 1.5; margin-bottom: 25px;">
                        Ten symulator gęstości rur i pracochłonności jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i został skopiowany nielegalnie.
                    </div>
                    <a href="https://projekt-ogrzewania.pl/" style="padding: 14px 28px; background: #ea580c; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s; text-transform: uppercase;">ZOBACZ ORYGINALNY ARTYKUŁ</a>
                </div>
            `;
        }
    }
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #ea580c; /* Ciepły pomarańczowy, spójny z tematyką ogrzewania */
    --accent-hover: #c2410c;
    --danger: #dc2626;
    --warning: #f59e0b;
    --success: #16a34a;
    --bg-light: #fff7ed;
    --border-color: #fdba74;
}

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

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

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

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

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

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

/* LEWA STRONA - ZAKŁADKI / CZYNNIKI */
.anatomy-layers {
    width: 40%;
    background: #ffffff;
    border-right: 1px solid var(--border-color);
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 30px 20px;
    gap: 12px;
}

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

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

/* Subtelne różnice kolorystyczne dla kategorii */
.layer-btn[data-layer="lokalizacja"]::before { background: #3b82f6; } 
.layer-btn[data-layer="skomplikowanie"]::before { background: #8b5cf6; } 
.layer-btn[data-layer="system"]::before { background: #f59e0b; } 
.layer-btn[data-layer="ekipa"]::before { background: #10b981; } 
.layer-btn[data-layer="zakres"]::before { background: #ef4444; } 

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

.layer-btn.layer-active {
    border-color: var(--accent);
    background: #fff7ed;
    box-shadow: 0 10px 20px -5px rgba(234, 88, 12, 0.15);
}

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

.layer-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    color: #94a3b8;
    transition: all 0.3s;
}

.layer-btn.layer-active .layer-icon {
    transform: scale(1.15);
    color: var(--accent);
}

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

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

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

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

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

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

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

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

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

.detail-pane a {
    color: var(--accent);
    text-decoration: underline;
    font-weight: 600;
}

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

.highlight-box strong {
    color: var(--primary);
    font-weight: 800;
}

/* Mini interaktywny suwak w panelu 1 */
.mini-slider-container {
    margin-top: 20px;
    background: #ffffff;
    padding: 20px;
    border-radius: 12px;
    border: 1px solid #fdba74;
}

.mini-slider-label {
    display: flex;
    justify-content: space-between;
    font-weight: 700;
    font-size: 13px;
    color: var(--primary);
    margin-bottom: 10px;
    text-transform: uppercase;
}

.mini-slider {
    width: 100%;
    -webkit-appearance: none;
    height: 6px;
    background: #ffedd5;
    border-radius: 3px;
    outline: none;
}

.mini-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: var(--accent);
    cursor: pointer;
    border: 2px solid #fff;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

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

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

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Co wpływa na ostateczną cenę robocizny podłogówki?",
    "description": "5 kluczowych czynników decydujących o wycenie instalacji ogrzewania podłogowego w 2026 roku: lokalizacja, stopień skomplikowania, technologia, doświadczenie ekipy oraz pełen zakres prac.",
    "license": "https://projekt-ogrzewania.pl/",
    "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"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Czynniki kosztotwórcze robocizny ogrzewania podłogowego 2026",
    "description": "Zestawienie mnożników i zmiennych wpływających na odchylenia od bazowej stawki za m² układania podłogówki.",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Narzut lokalizacyjny (Warszawa)",
        "value": "+18 do +25%"
      },
      {
        "@type": "PropertyValue",
        "name": "Narzut za skomplikowanie (wiele pomieszczeń)",
        "value": "Wzrost z 0.38 do 0.65 r-g/m²"
      },
      {
        "@type": "PropertyValue",
        "name": "Montaż na siatce stalowej",
        "value": "+12% czasu pracy"
      },
      {
        "@type": "PropertyValue",
        "name": "Dopłata za dojazd powyżej 50km",
        "value": "2.5 - 3.5 PLN/km"
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Panel analizy czynników wyceny instalacyjnej",
    "applicationCategory": "BusinessApplication",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "description": "Narzędzie interaktywne typu 'anatomy', pozwalające inwestorowi badać wpływ różnych zmiennych projektowych (system, dojazd, ekipa) na ostateczną cenę usług hydraulicznych.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="premium-anatomy-box" id="pricing-factors-app-container">
    
    <div class="anatomy-header">
        <h2>Co wpływa na cenę robocizny oprócz rozstawu?</h2>
        <p>Gdy inwestorzy pytają o to, jaka jest obecnie <strong>podłogówka cena za m² robocizny</strong>, często spodziewają się jednej, sztywnej kwoty. W rzeczywistości stawka w 2026 roku zależy od pięciu zmiennych czynników technicznych i rynkowych, które wyceniam indywidualnie w każdym zleceniu.</p>
    </div>

    <div class="anatomy-workspace">
        
        <div class="anatomy-layers">
            <span style="font-size: 11px; font-weight: 800; color: #94a3b8; text-transform: uppercase; letter-spacing: 1px; text-align: center; margin-bottom: 5px;">Eksploruj czynniki wyceny</span>
            
            <button class="layer-btn layer-active" data-target="pane-lokalizacja" data-layer="lokalizacja">
                <svg class="layer-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle></svg>
                <div>
                    <div class="layer-title">Lokalizacja Inwestycji</div>
                    <span class="layer-subtitle">Region i Dojazd do klienta</span>
                </div>
            </button>
            
            <button class="layer-btn" data-target="pane-skomplikowanie" data-layer="skomplikowanie">
                <svg class="layer-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
                <div>
                    <div class="layer-title">Stopień Skomplikowania</div>
                    <span class="layer-subtitle">Bryła budynku i ilość pętli</span>
                </div>
            </button>
            
            <button class="layer-btn" data-target="pane-system" data-layer="system">
                <svg class="layer-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline></svg>
                <div>
                    <div class="layer-title">System Mocowania</div>
                    <span class="layer-subtitle">Spinki vs Tacker vs Płyty</span>
                </div>
            </button>
            
            <button class="layer-btn" data-target="pane-ekipa" data-layer="ekipa">
                <svg class="layer-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
                <div>
                    <div class="layer-title">Doświadczenie Ekipy</div>
                    <span class="layer-subtitle">Gwarancja i profesjonalizm</span>
                </div>
            </button>

            <button class="layer-btn" data-target="pane-zakres" data-layer="zakres">
                <svg class="layer-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                <div>
                    <div class="layer-title">Pełen Zakres Prac</div>
                    <span class="layer-subtitle">Dodatki ukryte w wycenie</span>
                </div>
            </button>
        </div>

        <div class="anatomy-details">
            
            <div class="detail-pane pane-active" id="pane-lokalizacja">
                <h4>1. Regionalizacja cen i logistyka</h4>
                <p>Ceny usług instalacyjnych różnią się drastycznie w zależności od województwa. Warszawa centrum to zazwyczaj <strong>+18–25%</strong> względem średniej krajowej. Z kolei wschodnia Polska i małe miejscowości pozwalają oszczędzić od <strong>-5 do -12%</strong>.</p>
                <p>Istotny jest również dojazd. Gdy budowa znajduje się daleko od siedziby firmy, wkraczają dodatkowe koszty logistyczne.</p>
                
                <div class="mini-slider-container">
                    <div class="mini-slider-label">
                        <span>Dystans powyżej 50 km (Dopłata)</span>
                        <span id="travelCostDisplay" style="color: var(--accent);">0 zł</span>
                    </div>
                    <input type="range" id="travelSlider" class="mini-slider" min="0" max="100" step="5" value="0">
                    <div style="font-size: 11px; color: #64748b; margin-top: 8px;">Stawka: 3,00 zł / km. Przesuń suwak, aby sprawdzić dodatkowy koszt transportu ekipy.</div>
                </div>
            </div>

            <div class="detail-pane" id="pane-skomplikowanie">
                <h4>2. Bryła budynku a pracochłonność</h4>
                <p>Metraż to nie wszystko. Czas, w jakim ekipa ułoży instalację, jest mierzony w roboczo-godzinach na metr kwadratowy (r-g/m²).</p>
                <ul>
                    <li><strong>Proste przestrzenie:</strong> Pomieszczenia otwarte (typu open-space) o powierzchni 60 m² to szybka praca: ok. <strong>0,38 r-g/m²</strong>.</li>
                    <li><strong>Skomplikowane układy:</strong> Dom wielopoziomowy, 14 małych pomieszczeń ze skosami, słupami i dwoma rozdzielaczami winduje czas pracy do <strong>0,65 r-g/m²</strong>.</li>
                </ul>
                <div class="highlight-box">
                    Właśnie z powodu architektury, w profesjonalnych cennikach instalatorów widełki za to samo zadanie mogą wynosić <strong>55–80 zł</strong> dla prostych domów, aż po <strong>80–120 zł</strong> dla rozbudowanych projektów deweloperskich.
                </div>
            </div>

            <div class="detail-pane" id="pane-system">
                <h4>3. Technologia przytwierdzania rur</h4>
                <p>Wybór materiałów wpływa bezpośrednio na tempo pracy montera. Każdy system ma swoje wady i zalety finansowe:</p>
                <ul>
                    <li><a href="https://projekt-ogrzewania.pl/spinka-do-styropianu-do-takera/">Spinki do styropianu EPS 100:</a> Jest to metoda najszybsza (ok. 0,42 r-g/m²). Standard w nowoczesnym budownictwie.</li>
                    <li><strong>Siatka stalowa i opaski:</strong> Wymagają o <strong>+12% więcej czasu</strong> (praca ręczna), stosowane częściej w halach przemysłowych.</li>
                    <li><strong>Płyty systemowe (Tacker z wypustkami):</strong> Przyspieszają montaż o <strong>-8% czasu</strong> w stosunku do spinek, jednak wymagają zakupu znacznie droższego podłoża.</li>
                </ul>
            </div>

            <div class="detail-pane" id="pane-ekipa">
                <h4>4. Kompetencje i rzetelność fachowców</h4>
                <p>Tania robocizna potrafi zemścić się w pierwszym sezonie grzewczym. Podłogówka cena za m² robocizny odzwierciedla też jakość narzędzi i gwarancje.</p>
                <div class="highlight-box" style="border-left-color: var(--success);">
                    <strong>Profesjonalna firma (70–85 zł/m² w wyższym standardzie):</strong><br>
                    Posiada certyfikaty producenta rur. Wykonuje udokumentowaną <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/">próbę szczelności (zgodnie z PN-EN 1264-4)</a>. Daje nawet 10 lat gwarancji na swój montaż.
                </div>
                <div class="highlight-box" style="border-left-color: var(--danger); margin-top: 15px;">
                    <strong>Firma &#8222;po taniości&#8221; (50 zł/m²):</strong><br>
                    Często nie posiada nawet manometru cyfrowego. Nie przeprowadza prób ciśnieniowych i znika z placu budowy tuż po zalaniu rur wylewką.
                </div>
            </div>

            <div class="detail-pane" id="pane-zakres">
                <h4>5. Co dokładnie obejmuje umowa?</h4>
                <p>Zanim zaakceptujesz ofertę, upewnij się, co zostało wliczone w bazową stawkę za metr układania. Koszty dodatkowe mogą drastycznie zmienić ostateczny rachunek.</p>
                <ul>
                    <li>Czy w cenie jest osadzenie i montaż <a href="https://projekt-ogrzewania.pl/szafka-podtynkowa-do-rozdzielaczy-ogrzewania-podlogowego/">szafek podtynkowych</a>?</li>
                    <li>Czy umowa przewiduje <a href="https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/">frezowanie instalacji</a> (częsty wymóg w budynkach remontowanych)?</li>
                    <li>Zabezpieczenie rur peszlem w miejscach przejść przez dylatacje.</li>
                    <li><strong>Dokumentacja fotograficzna:</strong> W moich projektach wymagam zawsze minimum 12 zdjęć z napełnionym manometrem podczas próby ciśnieniowej.</li>
                </ul>
            </div>

        </div>
    </div>
    
    <noscript>
        <style>
            .detail-pane { display: block !important; margin-bottom: 30px; }
            .mini-slider-container { display: none; }
        </style>
        <div style="padding: 30px; background: #f8fafc; border-top: 1px solid #e2e8f0; font-family: sans-serif;">
            <h3 style="font-size: 18px; color: #0f172a; margin-bottom: 15px;">Zestawienie parametrów wyceny:</h3>
            <ul style="color: #475569; line-height: 1.6;">
                <li><strong>Lokalizacja:</strong> Warszawa (+25%), mniejsze miejscowości (-10%). Dopłaty za dojazd powyżej 50km.</li>
                <li><strong>Skomplikowanie:</strong> Otwarte salony (taniej) vs małe pokoje z dużą liczbą załamań (drożej).</li>
                <li><strong>System:</strong> Spinki EPS to standard. Płyty systemowe są szybsze, ale droższe w materiale.</li>
                <li><strong>Gwarancje:</strong> Droższe ekipy wykonują próby ciśnieniowe zgodne z normami.</li>
                <li><strong>Zakres ukryty:</strong> Upewnij się, że w cenie jest szafka podtynkowa i dokumentacja foto.</li>
            </ul>
        </div>
    </noscript>
</div>

<script>
function initPricingFactorsTabs() {
    // --- ZABEZPIECZENIE DOMENOWE ---
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const lockContainer = document.getElementById('pricing-factors-app-container');
        if (lockContainer) {
            lockContainer.innerHTML = `
                <div style="padding: 60px 20px; text-align: center; background: #fff7ed; color: #ea580c; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 400px;">
                    <div style="font-size: 48px; margin-bottom: 20px;">🔒</div>
                    <div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona prawem autorskim</div>
                    <div style="font-size: 16px; max-width: 500px; color: #9a3412; line-height: 1.5; margin-bottom: 25px;">Ten interaktywny moduł edukacyjny jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i został wdrożony nielegalnie.</div>
                    <a href="https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/" style="padding: 14px 28px; background: #ea580c; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s; text-transform: uppercase;">ZOBACZ ORYGINALNY ARTYKUŁ</a>
                </div>
            `;
        }
        return; 
    }

    const appContainer = document.getElementById('pricing-factors-app-container');
    if (!appContainer) return;

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

    layerBtns.forEach(function(button) {
        button.addEventListener('click', function(e) {
            e.preventDefault(); 
            layerBtns.forEach(function(btn) { btn.classList.remove('layer-active'); });
            panes.forEach(function(pane) { pane.classList.remove('pane-active'); });
            
            this.classList.add('layer-active');
            const targetId = this.getAttribute('data-target');
            const targetPane = appContainer.querySelector('#' + targetId);
            if(targetPane) {
                targetPane.classList.add('pane-active');
            }
        });
    });

    // --- LOGIKA MINI-KALKULATORA DOJAZDU ---
    const travelSlider = document.getElementById('travelSlider');
    const travelCostDisplay = document.getElementById('travelCostDisplay');
    
    if (travelSlider && travelCostDisplay) {
        travelSlider.addEventListener('input', function() {
            const distance = parseInt(this.value);
            const ratePerKm = 3.0; // średnio 3 zł/km dopłaty
            const cost = distance * ratePerKm;
            travelCostDisplay.textContent = `+ ${cost.toFixed(0)} zł`;
        });
    }
}

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



<style>
:root {
    --primary-hvac: #0f172a;
    --accent-hvac: #ea580c; 
    --bg-tip: #fff7ed; 
}

.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;
    box-shadow: 0 10px 25px -5px rgba(234, 88, 12, 0.05);
}

.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(234, 88, 12, 0.15);
}

.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);
    border: 1px solid #fdba74;
}

.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-text strong {
    color: var(--accent-hvac);
    font-weight: 800;
}

.expert-tip-text a {
    color: var(--accent-hvac);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    font-weight: 700;
    font-style: normal;
}

.expert-tip-text a:hover {
    color: #c2410c;
}

.expert-tip-signature {
    display: block;
    margin-top: 15px;
    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": "Gdy inwestorzy pytają mnie o to, ile ostatecznie wyniesie ich cena za metr kwadratowy robocizny przy układaniu podłogówki, zawsze powtarzam jedną zasadę: patrzcie na projekt, nie na suche stawki. Najtańszy monter rzucający rurę 'na oko' z reguły pomija koszty dylatacji przyściennych i kluczowej próby ciśnieniowej, co kończy się aneksami. Z mojego doświadczenia jako projektanta instalacji wynika, że rzetelne obliczenia OZC pozwalają zoptymalizować układ pętli i zredukować koszty wykonawcze o 10–15%, a przede wszystkim gwarantują, że wylewka nie popęka po pierwszym uruchomieniu pompy ciepła.",
    "spokenByCharacter": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "jobTitle": "CEO & Główny Projektant",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "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": "Ekspercka optymalizacja kosztów robocizny",
    "description": "Zestawienie inżynierskich zasad wpływających na redukcję rynkowej ceny za wykonanie ogrzewania podłogowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Redukcja kosztów wykonawczych z projektem",
        "value": "10-15%"
      },
      {
        "@type": "PropertyValue",
        "name": "Eliminowane ryzyka",
        "value": "Brak dylatacji, przewymiarowanie, brak próby ciśnieniowej"
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/"
    }
  }
]
</script>

<div class="expert-tip-wrapper">
    <h2><span style="margin-right:10px">⚖️</span>Robert Kucharski o kosztach i błędach</h2>
    
    <div class="expert-tip-container" id="expert-tip-pricing">
        <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 - Główny Projektant" class="expert-tip-photo" loading="lazy">
        </div>
        <div class="expert-tip-content">
            <span class="expert-tip-label">Wskazówka Projektanta</span>
            <p class="expert-tip-text">
                &#8222;Gdy inwestorzy pytają mnie o to, ile ostatecznie wyniesie ich <strong>cena za metr kwadratowy robocizny przy układaniu podłogówki</strong>, zawsze powtarzam jedną zasadę: patrzcie na projekt, nie na suche stawki. Najtańszy monter rzucający rurę 'na oko&#8217; z reguły pomija koszty dylatacji przyściennych i kluczowej próby ciśnieniowej, co kończy się aneksami do umowy. Z mojego doświadczenia jako <a href="https://projekt-ogrzewania.pl/author/admin3399/">głównego projektanta instalacji</a> wynika, że rzetelne obliczenia pozwalają zoptymalizować rozstaw rur, co często redukuje ostateczne koszty wykonawcze o 10–15%, a przede wszystkim daje gwarancję, że wylewka nie popęka po odpaleniu ogrzewania.&#8221;
            </p>
            <span class="expert-tip-signature">— Robert Kucharski, CEO &#038; Główny Projektant Projekt-Ogrzewania.pl</span>
        </div>
    </div>

    <noscript>
        <div style="padding: 20px; background: #fff7ed; border-radius: 20px; margin-top: 20px; font-family: sans-serif; border: 1px solid #fdba74;">
            <p style="font-size: 14px; font-weight: bold; color: #0f172a;">Rekomendacja inżynierska Roberta Kucharskiego:</p>
            <p style="font-size: 14px; color: #475569;">Prawidłowa cena robocizny za m² musi wynikać z projektu. Montaż &#8222;na oko&#8221; i najtańsze wyceny to ryzyko braku dylatacji i prób szczelności. Projekt pozwala oszczędzić 10-15% na kosztach materiałów i robociźnie instalatora.</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-pricing');
        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; display: block;">🔒</span>
                    <div style="font-size: 20px; font-weight: bold; margin-bottom: 10px;">Moduł ekspercki chroniony autorsko</div>
                    <p style="font-size: 14px; color: #7f1d1d; margin: 0;">Osobista rekomendacja ekspercka Roberta Kucharskiego jest własnością serwisu Projekt-Ogrzewania.pl i została skopiowana nielegalnie.</p>
                </div>
            `;
            container.style.borderLeft = 'none';
            container.style.background = 'transparent';
            container.style.padding = '0';
            container.style.boxShadow = 'none';
        }
    }
});
</script>



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



<style>
:root {
    --primary: #0f172a;
    --accent: #ea580c; 
    --accent-hover: #c2410c;
    --success: #16a34a;
    --bg-light: #fff7ed; 
    --border-color: #fdba74;
    --card-bg: #ffffff;
    --text-muted: #64748b;
}

.premium-calc-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--card-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(234, 88, 12, 0.15);
    border: 1px solid var(--border-color);
    overflow: hidden;
    color: var(--primary);
}

/* Sekcja Nagłówka i Steppera */
.calc-intro-section {
    padding: 40px 50px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
    border-bottom: 1px solid var(--border-color);
}

.calc-intro-section h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--primary);
    margin: 0 0 20px 0;
    line-height: 1.3;
}

.calc-intro-text {
    font-size: 16px;
    color: #475569;
    line-height: 1.6;
    margin-bottom: 25px;
}

/* Przyjazny Blok Wzoru */
.friendly-formula-box {
    background: #ffffff;
    padding: 25px;
    border-radius: 16px;
    border: 1px solid #fdba74;
    box-shadow: 0 4px 6px -1px rgba(234, 88, 12, 0.05);
    margin-bottom: 30px;
    position: relative;
    overflow: hidden;
}

.friendly-formula-box::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    height: 100%;
    width: 6px;
    background: var(--accent);
}

.friendly-formula-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--accent);
    text-transform: uppercase;
    margin-bottom: 15px;
    letter-spacing: 0.5px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.friendly-formula-math {
    font-size: 16px;
    font-weight: 700;
    color: var(--primary);
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
}

.math-badge {
    background: var(--bg-light);
    border: 1px solid #fed7aa;
    padding: 8px 14px;
    border-radius: 8px;
    color: #475569;
}

.math-badge strong {
    color: var(--primary);
    font-weight: 800;
}

.math-operator {
    color: #94a3b8;
    font-size: 20px;
}

.math-explanation {
    margin-top: 15px;
    font-size: 14px;
    color: #64748b;
    line-height: 1.6;
    border-top: 1px dashed #e2e8f0;
    padding-top: 15px;
}

/* Interaktywny Stepper */
.stepper-logic {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.step-item {
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    padding: 18px 20px;
    cursor: pointer;
    transition: all 0.3s;
    background: #fafaf9;
}

.step-item:hover {
    border-color: #fdba74;
    background: #ffffff;
}

.step-item.active {
    background: #ffffff;
    border-color: var(--accent);
    box-shadow: 0 8px 20px rgba(234, 88, 12, 0.08);
}

.step-top {
    display: flex;
    align-items: center;
    gap: 15px;
}

.step-num {
    width: 28px;
    height: 28px;
    background: #e2e8f0;
    color: #64748b;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    font-size: 13px;
    transition: all 0.3s;
}

.step-item.active .step-num { background: var(--accent); color: #fff; }

.step-title { font-weight: 700; font-size: 15px; flex: 1; color: var(--primary); }

.step-toggle-icon {
    color: #94a3b8;
    transition: transform 0.3s;
}

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

.step-body {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s ease, margin-top 0.4s;
    font-size: 14px;
    color: #475569;
    line-height: 1.6;
}

.step-item.active .step-body { max-height: 250px; margin-top: 12px; }

.step-formula-tag {
    display: inline-block;
    background: var(--bg-light);
    color: var(--accent);
    padding: 6px 12px;
    border-radius: 6px;
    font-family: 'Courier New', Courier, monospace;
    font-weight: 700;
    font-size: 13px;
    margin-top: 8px;
    border: 1px dashed #fdba74;
}

/* Sekcja Robocza Kalkulatora */
.calc-main-header { padding: 40px 50px 0 50px; background: #fff; }
.calc-main-header h3 { font-size: 22px; font-weight: 800; margin: 0; color: var(--primary); }

.calc-workspace {
    display: flex;
    flex-wrap: wrap;
    background: #ffffff;
}

.calc-inputs {
    flex: 1.2;
    min-width: 320px;
    padding: 30px 50px 40px 50px;
}

.calc-outputs {
    flex: 0.8;
    min-width: 320px;
    padding: 30px 50px 40px 50px;
    background: #fafaf9;
    border-left: 1px solid var(--border-color);
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.input-group { margin-bottom: 25px; }

.input-label {
    display: flex;
    justify-content: space-between;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 12px;
    color: var(--primary);
}

.input-val-box { color: var(--accent); font-size: 16px; }

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

.range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 26px;
    height: 26px;
    background: var(--accent);
    border-radius: 50%;
    cursor: pointer;
    border: 3px solid #fff;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    transition: transform 0.2s;
}

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

.selector-group { display: flex; gap: 8px; }

/* POPRAWKA KOLORU NA PRZYCISKU */
.selector-btn {
    flex: 1;
    padding: 12px;
    border-radius: 10px;
    border: 2px solid #ffedd5;
    background: #fff;
    font-size: 13px;
    font-weight: 700;
    color: var(--primary); /* Dodano wyraźny granatowy kolor */
    cursor: pointer;
    transition: 0.2s;
}

.selector-btn:hover:not(.active) {
    border-color: var(--accent);
    background: var(--bg-light);
}

.selector-btn.active { 
    background: var(--accent); 
    border-color: var(--accent); 
    color: #fff; 
}

/* Karty Wyników */
.res-card {
    background: #fff;
    padding: 18px;
    border-radius: 14px;
    border: 1px solid #e2e8f0;
    margin-bottom: 15px;
    display: flex;
    align-items: center;
    gap: 15px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.res-icon { 
    width: 44px; height: 44px; 
    background: var(--bg-light); 
    color: var(--accent); 
    border-radius: 10px; 
    display: flex; align-items: center; justify-content: center; 
    flex-shrink: 0; 
}

.res-info { display: flex; flex-direction: column; }
.res-lbl { font-size: 11px; font-weight: 700; color: #64748b; text-transform: uppercase; margin-bottom: 3px; }
.res-val { font-size: 22px; font-weight: 900; color: var(--primary); }

.total-card { background: var(--primary); border: none; padding: 25px; }
.total-card .res-icon { background: rgba(255,255,255,0.1); color: #fff; }
.total-card .res-lbl { color: #94a3b8; }
.total-card .res-val { color: #fff; font-size: 32px; }
.total-card .res-val span { color: var(--accent); font-size: 18px; }

/* CTA */
.calc-cta-footer {
    padding: 40px 50px;
    text-align: center;
    background: linear-gradient(135deg, var(--bg-light) 0%, #ffffff 100%);
    border-top: 1px solid var(--border-color);
}

.calc-cta-footer h4 { font-size: 22px; font-weight: 900; color: var(--primary); margin: 0 0 15px 0; }
.calc-cta-footer p { font-size: 15px; color: #475569; margin: 0 auto 25px auto; max-width: 600px; line-height: 1.6; }

.cta-btn {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    background: var(--accent);
    color: #fff;
    padding: 16px 32px;
    border-radius: 12px;
    font-size: 16px;
    font-weight: 800;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 1px;
    transition: 0.3s;
    box-shadow: 0 10px 20px -5px rgba(234, 88, 12, 0.4);
}

.cta-btn:hover { background: var(--accent-hover); transform: translateY(-3px); color: #fff; }

@media (max-width: 800px) {
    .calc-intro-section, .calc-main-header, .calc-inputs, .calc-outputs, .calc-cta-footer { padding: 30px 25px; }
    .calc-outputs { border-left: none; border-top: 1px solid var(--border-color); }
    .friendly-formula-math { flex-direction: column; align-items: flex-start; gap: 5px; }
    .math-operator { display: none; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Algorytm wyceny robocizny ogrzewania podłogowego 2026",
    "description": "Profesjonalny algorytm obliczania kosztów montażu podłogówki. Zestawienie krok po kroku oraz interaktywny kalkulator inżynierski.",
    "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/"
      ]
    },
    "publisher": { "@type": "Organization", "name": "Projekt-Ogrzewania.pl" }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Inżynierski Kalkulator Robocizny Podłogówki",
    "applicationCategory": "CalculatorApplication",
    "license": "https://projekt-ogrzewania.pl/",
    "operatingSystem": "All",
    "description": "Narzędzie do precyzyjnego wyliczania kosztów wykonawczych instalacji grzewczych w oparciu o algorytm netto/brutto i współczynniki skomplikowania."
  }
]
</script>

<div class="premium-calc-container" id="main-engineer-app">
    
    <div class="calc-intro-section">
        <h2>Algorytm wyceny i kalkulacji kosztów robocizny</h2>
        <p class="calc-intro-text">Wycena instalacji to nie zgadywanka z metrażu budynku. Opieram ją zawsze o precyzyjny wzór inżynierski, który uwzględnia wszystkie zmienne układu.</p>
        
        <div class="friendly-formula-box">
            <div class="friendly-formula-title">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg>
                Wzór na ostateczny koszt
            </div>
            
            <div class="friendly-formula-math">
                <span class="math-badge"><strong>Całkowita Robocizna</strong></span> 
                <span class="math-operator">=</span> 
                <span class="math-badge">Σ (Metraż × Stawka)</span> 
                <span class="math-operator">+</span> 
                <span class="math-badge">Rozdzielacz</span> 
                <span class="math-operator">+</span> 
                <span class="math-badge">Próba ciśnieniowa</span>
            </div>
            
            <div class="math-explanation">
                <strong>Jak to czytać?</strong> Zamiast strzelać stawką w ciemno, sumujemy (Σ) koszty ułożenia pętli dla poszczególnych stref (w zależności od gęstości rur), a do tego dodajemy stałe koszty montażu rozdzielacza i wykonania udokumentowanej próby szczelności.
            </div>
        </div>

        <div class="stepper-logic">
            <div class="step-item active">
                <div class="step-top">
                    <div class="step-num">1</div>
                    <div class="step-title">Wyznaczenie powierzchni netto</div>
                    <svg class="step-toggle-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
                <div class="step-body">
                    Odejmujemy powierzchnie pod stałą zabudową, taką jak wyspy kuchenne, wanny czy szafy wnękowe. Pod nimi nie układamy rur grzewczych, więc nie płacisz za ich montaż.
                    <br><span class="step-formula-tag">A_netto = Metraż całkowity – Zabudowa</span>
                </div>
            </div>
            <div class="step-item">
                <div class="step-top">
                    <div class="step-num">2</div>
                    <div class="step-title">Obliczanie długości rur i pętli</div>
                    <svg class="step-toggle-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
                <div class="step-body">
                    Przy standardowym rozstawie 15 cm mnożymy metraż netto przez współczynnik zagęszczenia (6,7). Całość dzielimy na pętle grzewcze, z których żadna nie powinna przekraczać 85-100 mb.
                    <br><span class="step-formula-tag">Liczba pętli = (A_netto × 6,7 × 1,05) / 85 mb</span>
                </div>
            </div>
            <div class="step-item">
                <div class="step-top">
                    <div class="step-num">3</div>
                    <div class="step-title">Korekta o stopień skomplikowania</div>
                    <svg class="step-toggle-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
                <div class="step-body">
                    Jeśli na 100 m² przypada więcej niż 5 oddzielnych pomieszczeń, doliczamy współczynnik skomplikowania (1,15) za utrudniony montaż, liczne dylatacje przyścienne i ciasne podejścia.
                </div>
            </div>
        </div>
    </div>

    <div class="calc-main-header">
        <h3>Interaktywny Kalkulator Robocizny 2026</h3>
    </div>
    
    <div class="calc-workspace">
        <div class="calc-inputs">
            <div class="input-group">
                <div class="input-label"><span>Powierzchnia całkowita</span> <span class="input-val-box"><span id="lblTotal">140</span> m²</span></div>
                <input type="range" id="rngTotal" class="range-input" min="50" max="250" value="140">
            </div>
            <div class="input-group">
                <div class="input-label"><span>Powierzchnia pod zabudowę</span> <span class="input-val-box"><span id="lblBuild">15</span> m²</span></div>
                <input type="range" id="rngBuild" class="range-input" min="0" max="50" value="15">
            </div>
            <div class="input-group">
                <div class="input-label"><span>Liczba pomieszczeń</span> <span class="input-val-box"><span id="lblRooms">6</span> szt.</span></div>
                <input type="range" id="rngRooms" class="range-input" min="2" max="15" value="6">
            </div>
            <div class="input-group" style="margin-bottom: 0;">
                <div class="input-label"><span>Rozstaw rur (Większość domu)</span></div>
                <div class="selector-group" id="densityPick">
                    <button class="selector-btn" data-density="10" data-rate="42">Co 10 cm</button>
                    <button class="selector-btn active" data-density="6.7" data-rate="35">Co 15 cm</button>
                </div>
            </div>
        </div>

        <div class="calc-outputs">
            <div class="res-card">
                <div class="res-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><path d="M3 9h18"></path><path d="M9 21V9"></path></svg></div>
                <div class="res-info">
                    <span class="res-lbl">Powierzchnia Netto</span>
                    <span class="res-val" id="resNet">125 m²</span>
                </div>
            </div>
            <div class="res-card">
                <div class="res-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path></svg></div>
                <div class="res-info">
                    <span class="res-lbl">Długość rur / Obwody</span>
                    <span class="res-val" id="resPipe">879 mb / 11 szt.</span>
                </div>
            </div>
            <div class="res-card total-card">
                <div class="res-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="1" x2="12" y2="23"></line><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                <div class="res-info">
                    <span class="res-lbl">Suma za robociznę</span>
                    <span class="res-val" id="resTotal">5 675 <span>zł</span></span>
                </div>
            </div>
        </div>
    </div>

    <div class="calc-cta-footer">
        <h4>Projekt eliminuje błędy wyceny i awarie.</h4>
        <p>Brak projektu instalacji powoduje zgadywanie przepływów, zaniżanie pierwotnych wycen i późniejsze kosztowne aneksowanie umów z instalatorami. Zabezpiecz się przed nieuczciwymi wykonawcami.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="cta-btn">
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Zamów Profesjonalny Projekt
        </a>
    </div>

    <noscript>
        <div style="padding: 20px 50px; background: #f8fafc; border-top: 1px solid #e2e8f0;">
            <p><strong>Zależności kosztowe:</strong> Rozstaw 15 cm to standardowa stawka rynkowa (ok. 35 zł/m²), z kolei rozstaw 10 cm, ze względu na większą gęstość i trudność układania rury, kosztuje ok. 42 zł/m².</p>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- STEPPER LOGIC ---
    const steps = document.querySelectorAll('.step-item');
    steps.forEach(s => {
        s.addEventListener('click', () => {
            steps.forEach(x => { if (x !== s) x.classList.remove('active'); });
            s.classList.toggle('active');
        });
    });

    // --- CALC LOGIC ---
    const rngT = document.getElementById('rngTotal'), rngB = document.getElementById('rngBuild'), rngR = document.getElementById('rngRooms');
    const lblT = document.getElementById('lblTotal'), lblB = document.getElementById('lblBuild'), lblR = document.getElementById('lblRooms');
    const rNet = document.getElementById('resNet'), rPipe = document.getElementById('resPipe'), rTotal = document.getElementById('resTotal');
    const densityBtns = document.querySelectorAll('#densityPick .selector-btn');

    let density = 6.7, rate = 35;

    function update() {
        let total = parseInt(rngT.value), build = parseInt(rngB.value), rooms = parseInt(rngR.value);
        
        // Zabezpieczenie przed ujemnym netto
        if(build >= total) {
            build = total - 5;
            rngB.value = build;
        }

        lblT.innerText = total; lblB.innerText = build; lblR.innerText = rooms;

        const net = total - build;
        const pipe = Math.ceil(net * density * 1.05);
        const loops = Math.ceil(pipe / 85);
        
        const complexityRatio = rooms / (total / 100);
        const complexity = complexityRatio > 5 ? 1.15 : 1.0;
        
        // Koszty = (Baza) + (Podłączenie Pętli) + (Stałe: rozdzielacz + próba 750zł)
        const totalCost = Math.round((net * rate * complexity) + (loops * 50) + 750);

        rNet.innerText = net + ' m²';
        rPipe.innerText = pipe + ' mb / ' + loops + ' szt.';
        rTotal.innerHTML = new Intl.NumberFormat('pl-PL').format(totalCost) + ' <span>zł</span>';
    }

    [rngT, rngB, rngR].forEach(el => el.addEventListener('input', update));
    
    densityBtns.forEach(btn => {
        btn.addEventListener('click', () => {
            densityBtns.forEach(b => b.classList.remove('active'));
            btn.classList.add('active');
            density = parseFloat(btn.dataset.density);
            rate = parseInt(btn.dataset.rate);
            update();
        });
    });

    update(); // Init

    // --- DOMAIN LOCK ---
    const d = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(d)) {
        document.getElementById('main-engineer-app').innerHTML = '<div style="padding: 80px 20px; text-align: center; background: #fff7ed; color: #ea580c; font-weight: 800; border-radius: 24px; font-size: 18px;">🔒 Treść chroniona prawem autorskim serwisu Projekt-Ogrzewania.pl. Prosimy o usunięcie kodu z tej domeny.</div>';
    }
});
</script>



<style>
:root {
    --cs-primary: #0f172a;
    --cs-accent: #2563eb;
    --cs-step1: #16a34a; /* Kolor zielony dla kosztorysu */
    --cs-step2: #ea580c; /* Kolor pomarańczowy dla hydrauliki */
    --cs-bg: #f8fafc;
    --cs-border: #e2e8f0;
    --cs-text: #475569;
}

.case-study-module {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--cs-border);
    overflow: hidden;
}

/* ================= HEADER I METRYCZKA ================= */
.cs-header-wrapper {
    background: var(--cs-primary);
    color: #ffffff;
    padding: 40px 50px;
    position: relative;
    overflow: hidden;
}

.cs-header-wrapper::after {
    content: '';
    position: absolute;
    top: -50px;
    right: -50px;
    width: 250px;
    height: 250px;
    background: radial-gradient(circle, rgba(37, 99, 235, 0.3) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
}

.cs-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.2);
    color: #93c5fd;
    padding: 6px 14px;
    border-radius: 50px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
}

.cs-header-wrapper h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 25px 0;
    line-height: 1.3;
    color: #ffffff;
    position: relative;
    z-index: 2;
}

.cs-stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
    position: relative;
    z-index: 2;
}

.cs-stat-box {
    background: rgba(0, 0, 0, 0.2);
    border: 1px solid rgba(255, 255, 255, 0.1);
    padding: 15px;
    border-radius: 12px;
    backdrop-filter: blur(4px);
}

.cs-stat-label {
    display: block;
    font-size: 11px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 700;
    margin-bottom: 5px;
}

.cs-stat-value {
    display: block;
    font-size: 16px;
    font-weight: 900;
    color: #ffffff;
}

/* ================= OPIS WYZWANIA ================= */
.cs-content-section {
    padding: 40px 50px 30px 50px;
    background: #ffffff;
}

.cs-lead-text {
    font-size: 16px;
    line-height: 1.8;
    color: var(--cs-text);
    margin: 0 0 20px 0;
}

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

.cs-lead-text a {
    color: var(--cs-accent);
    text-decoration: underline;
    font-weight: 600;
}

/* Bloki z wyliczeniami w tekscie */
.cs-calc-block {
    background: #f8fafc;
    border: 1px solid var(--cs-border);
    border-radius: 12px;
    padding: 20px;
    margin-bottom: 25px;
}

.cs-calc-block ul {
    margin: 0;
    padding-left: 20px;
    list-style-type: none;
}

.cs-calc-block li {
    margin-bottom: 10px;
    font-size: 15px;
    color: var(--cs-text);
    position: relative;
}

.cs-calc-block li::before {
    content: '→';
    position: absolute;
    left: -20px;
    color: var(--cs-accent);
    font-weight: bold;
}

.cs-calc-block li strong { color: var(--cs-primary); }

.cs-calc-highlight {
    background: #eff6ff;
    padding: 15px;
    border-radius: 8px;
    margin-top: 15px;
    border-left: 4px solid var(--cs-accent);
    font-size: 14px;
    color: #1e3a8a;
    font-weight: 600;
}

.cs-author-box {
    background: #f0f9ff;
    border-left: 4px solid var(--cs-accent);
    padding: 15px 20px;
    border-radius: 0 12px 12px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 10px;
}

.cs-author-photo {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid #ffffff;
    box-shadow: 0 4px 10px rgba(37, 99, 235, 0.2);
    flex-shrink: 0;
}

.cs-author-box p {
    margin: 0;
    font-size: 14px;
    color: #1e3a8a;
    line-height: 1.6;
}

/* ================= INTERAKTYWNE WYZWANIE (SPLIT CARDS) ================= */
.cs-interactive-section {
    padding: 0 50px 40px 50px;
}

.cs-split-container {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.cs-split-card {
    border-radius: 16px;
    padding: 25px;
    border: 2px solid var(--cs-border);
    cursor: pointer;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
    background: #ffffff;
    display: flex;
    flex-direction: column;
}

.cs-split-card:not(.active) {
    opacity: 0.7;
    transform: scale(0.98);
}

.cs-split-card.step1.active {
    border-color: var(--cs-step1);
    background: #f0fdf4;
    box-shadow: 0 10px 25px rgba(22, 163, 74, 0.1);
    opacity: 1;
    transform: scale(1);
}

.cs-split-card.step2.active {
    border-color: var(--cs-step2);
    background: #fff7ed;
    box-shadow: 0 10px 25px rgba(234, 88, 12, 0.1);
    opacity: 1;
    transform: scale(1);
}

.cs-card-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 15px;
}

.cs-card-icon {
    font-size: 28px;
}

.cs-card-title {
    font-size: 18px;
    font-weight: 900;
    color: var(--cs-primary);
    margin: 0;
}

.cs-card-desc {
    font-size: 14px;
    line-height: 1.6;
    color: var(--cs-text);
    margin: 0;
}

.cs-card-solution {
    margin-top: 15px;
    padding-top: 15px;
    border-top: 1px dashed rgba(0,0,0,0.1);
    font-size: 14px;
    line-height: 1.6;
    display: none;
}

.cs-split-card.step1 .cs-card-solution { color: #14532d; }
.cs-split-card.step2 .cs-card-solution { color: #7c2d12; }

.cs-card-solution ul {
    margin: 0;
    padding-left: 20px;
    list-style-type: square;
}

.cs-card-solution li { margin-bottom: 8px; }
.cs-card-solution code { font-weight: 800; font-family: 'Inter', sans-serif; background: rgba(255,255,255,0.5); padding: 2px 6px; border-radius: 4px;}

.cs-split-card.active .cs-card-solution {
    display: block;
    animation: csFadeIn 0.4s ease forwards;
}

/* ================= CTA ================= */
.cs-cta-box {
    background: linear-gradient(135deg, #f8fafc 0%, #ffffff 100%);
    padding: 35px 50px;
    text-align: center;
    border-top: 1px solid var(--cs-border);
}

.cs-cta-box h4 {
    font-size: 20px;
    font-weight: 900;
    color: var(--cs-primary);
    margin: 0 0 10px 0;
}

.cs-cta-box p {
    font-size: 15px;
    color: #475569;
    margin: 0 auto 20px auto;
    max-width: 600px;
}

.cs-cta-button {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: var(--cs-accent);
    color: #ffffff;
    padding: 16px 32px;
    border-radius: 12px;
    font-size: 16px;
    font-weight: 800;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 1px;
    transition: all 0.3s;
    box-shadow: 0 10px 20px -5px rgba(37, 99, 235, 0.4);
}

.cs-cta-button:hover {
    background: #1e3a8a;
    transform: translateY(-3px);
    box-shadow: 0 15px 25px -5px rgba(37, 99, 235, 0.5);
    color: #ffffff;
}

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

@media (max-width: 768px) {
    .cs-header-wrapper { padding: 35px 25px; }
    .cs-stats-grid { grid-template-columns: 1fr 1fr; }
    .cs-content-section { padding: 30px 25px 20px 25px; }
    .cs-interactive-section { padding: 0 25px 30px 25px; }
    .cs-cta-box { padding: 30px 25px; }
    .cs-split-container { grid-template-columns: 1fr; }
}
</style>

<div class="case-study-module" id="app-calc-case-study">

    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org",
        "@type": "WebApplication",
        "name": "Kalkulacja Robocizny i Przepływów: Studium Przypadku",
        "description": "Szczegółowa analiza kosztów robocizny ogrzewania podłogowego oraz inżynieryjne wyliczenia nastaw rotametrów dla domu o powierzchni 140 m².",
        "applicationCategory": "EducationalApplication",
        "operatingSystem": "All",
        "url": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/",
        "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/"
          ]
        },
        "featureList": [
          "Wycena robocizny w podziale na strefy grzewcze",
          "Obliczenia błędów wycen zryczałtowanych",
          "Inżynierskie obliczenia przepływu i nastawy rotametrów"
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "Dataset",
        "name": "Realne dane z projektu instalacji (Luty 2026)",
        "description": "Zestawienie parametrów projektowych, finansowych i hydraulicznych użytych do analizy błędów wykonawczych.",
        "license": "https://projekt-ogrzewania.pl/",
        "variableMeasured": [
          {
            "@type": "PropertyValue",
            "name": "Koszt całkowity (rzeczywisty)",
            "value": "10 524 PLN"
          },
          {
            "@type": "PropertyValue",
            "name": "Błąd wyceny ryczałtowej (65 zł/m²)",
            "value": "-13.5%"
          },
          {
            "@type": "PropertyValue",
            "name": "Moc instalacji (Q)",
            "value": "11.5 kW"
          },
          {
            "@type": "PropertyValue",
            "name": "Nastawa rotametru (na pętlę)",
            "value": "3.3 l/min"
          }
        ],
        "creator": {
          "@type": "Person",
          "name": "Robert Kucharski"
        }
      }
    ]
    </script>

    <div class="cs-header-wrapper">
        <div class="cs-badge">Kalkulacja z Projektu</div>
        <h2>Jak policzyć całkowity koszt robocizny ogrzewania podłogowego</h2>
        <div class="cs-stats-grid">
            <div class="cs-stat-box">
                <span class="cs-stat-label">Dom pow. netto</span>
                <span class="cs-stat-value">140 m²</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Koszt całkowity</span>
                <span class="cs-stat-value">10 524 zł</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Błąd wyceny &#8222;na oko&#8221;</span>
                <span class="cs-stat-value" style="color: #fca5a5;">-13,5%</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Nastawa rotametru</span>
                <span class="cs-stat-value">3,3 l/min</span>
            </div>
        </div>
    </div>

    <div class="cs-content-section">
        <p class="cs-lead-text">Całkowity koszt robocizny liczysz <strong>z projektu, a nie z metrażu budynku</strong>. Wykonawcy, którzy dają jedną uśrednioną cenę, niemal zawsze dopisują później aneksy do umowy. Poniżej przedstawiam konkretny przykład z lutego 2026 roku (Dom Pana Marka), oparty na autorskim wzorze: <strong>K_rob = Σ (A_i × C_Ti) + K_rozdz + K_proba</strong>.</p>
        
        <div class="cs-calc-block">
            <ul>
                <li><strong>A1 (Strefy otwarte):</strong> 92 m², rozstaw 150 mm, stawka 65 zł/m² <strong>→ 5 980 zł</strong></li>
                <li><strong>A2 (Łazienki, okna):</strong> 28 m², rozstaw zagęszczony 100 mm, stawka 78 zł/m² <strong>→ 2 184 zł</strong></li>
                <li><strong>A3 (Sypialnie):</strong> 20 m², rozstaw 200 mm, stawka 58 zł/m² <strong>→ 1 160 zł</strong></li>
                <li><strong>K_rozdz (Rozdzielacze):</strong> 2 szt. × 450 zł <strong>→ 900 zł</strong></li>
                <li><strong>K_proba (Szczelność):</strong> Próba 6 bar + protokół <strong>→ 300 zł</strong></li>
            </ul>
            <div class="cs-calc-highlight">
                Razem: 10 524 zł, czyli średnio 75,2 zł/m². Gdyby instalator przyjął ryczałtem &#8222;atrakcyjne&#8221; 65 zł/m² dla całości, wyceniłby to na 9 100 zł. Różnica? Ponad 13% błędu, który odbiłby się na jakości materiałów lub aneksach.
            </div>
        </div>

        <div class="cs-author-box">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="cs-author-photo" loading="lazy">
            <p><strong>Robert Kucharski:</strong> &#8222;Rozkładamy koszty i hydraulikę na czynniki pierwsze. Kliknij w karty poniżej, aby zobaczyć jak krok po kroku tworzymy algorytm wyceny i – co najważniejsze – jak liczymy przepływy do precyzyjnego ustawienia pętli.&#8221;</p>
        </div>
    </div>

    <div class="cs-interactive-section">
        <div class="cs-split-container">
            
            <div class="cs-split-card step1 active" id="cs-btn-step1">
                <div class="cs-card-header">
                    <span class="cs-card-icon">📋</span>
                    <h3 class="cs-card-title">7 Kroków Kalkulacji</h3>
                </div>
                <p class="cs-card-desc">Nie zgaduj. Policz w 7 krokach, dokładnie tak, jak liczę to w biurze dla każdego zlecenia.</p>
                <div class="cs-card-solution">
                    <ul>
                        <li><strong>Krok 1:</strong> Policz zapotrzebowanie. <code>Q_obl = Q_OZC × 1,15</code>. Dla 140 m² po OZC Q = 9,8 kW → 11,27 kW.</li>
                        <li><strong>Krok 2:</strong> Podziel na strefy. Salon 35 m², strata 2450 W → wymóg 70 W/m².</li>
                        <li><strong>Krok 3:</strong> Dobierz rozstaw. Z tabeli dla q 70 W/m² i ΔϑH 12K → rozstaw 150 mm.</li>
                        <li><strong>Krok 4:</strong> Policz długość rury. <code>L = A / T × 1,1</code>. Dla salonu to 257 mb.</li>
                        <li><strong>Krok 5:</strong> Podziel na pętle. Maksimum to 110 m → 257 / 110 = 2,34 → czyli 3 pętle.</li>
                        <li><strong>Krok 6:</strong> Przypisz stawkę rynkową. Dla rozstawu 150 mm (65 zł/m²) salon kosztuje nas 2 275 zł.</li>
                        <li><strong>Krok 7:</strong> Dodaj stałe. Rozdzielacz (450 zł), dojazd (120 zł), próba (300 zł). Suma to zwykle widełki 9 500–12 500 zł.</li>
                    </ul>
                </div>
            </div>

            <div class="cs-split-card step2" id="cs-btn-step2">
                <div class="cs-card-header">
                    <span class="cs-card-icon">💧</span>
                    <h3 class="cs-card-title">Obliczenia Przepływów</h3>
                </div>
                <p class="cs-card-desc">Trzecie wyliczenie z projektu, które zawsze robię. To parametr, który monter ustawia w ramach robocizny, a bez projektu – po prostu zgaduje.</p>
                <div class="cs-card-solution">
                    <p style="margin-top:0;">Podstawą prawidłowo ułożonej podłogówki jest ustawienie <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrów na rozdzielaczu</a>.</p>
                    <ul>
                        <li><strong>Krok 1: Wzór bazowy.</strong> Przepływ masowy liczymy ze wzoru: <code>m = Q / (1,163 × ΔT)</code></li>
                        <li><strong>Krok 2: Całkowity zład.</strong> Przy mocy instalacji Q = 11,5 kW i zakładanym spadku temperatury ΔT = 5 K, przepływ całkowity wynosi: 11,5 / (1,163 × 5) = <strong>1,98 m³/h</strong>.</li>
                        <li><strong>Krok 3: Przepływ na rotametrze.</strong> Otrzymany wynik dzielimy na 10 pętli w domu. Daje to 0,198 m³/h na pętlę.</li>
                        <li><strong>Wynik:</strong> Po przeliczeniu jednostek, monter musi ustawić rotametr na około <strong>3,3 l/min</strong>. Dzięki temu <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa</a> precyzyjnie zasili każdy układ.</li>
                    </ul>
                </div>
            </div>

        </div>
    </div>

    <div class="cs-cta-box">
        <h4>Nie ryzykuj błędów monterskich i zaniżonych wycen.</h4>
        <p>Projekt ogrzewania podłogowego chroni Cię przed instalatorami, którzy narzucają jedną cenę za m², a potem domagają się dopłat. Zyskujesz pewność co do ilości rury, nastaw przepływu i wielkości rozdzielaczy.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="cs-cta-button">
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Zamów Profesjonalny Projekt
        </a>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Zabezpieczenie domenowe (bez tagów Hx)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('app-calc-case-study');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px 25px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;">
                    <span style="font-size: 40px; display: block; margin-bottom: 10px;">🔒</span>
                    <div style="margin: 0 0 10px 0; font-size: 20px; font-weight: bold;">Studium Przypadku Chronione</div>
                    <p style="font-size: 14px; margin-bottom: 15px;">Ten panel informacyjny to autorska własność Projekt-Ogrzewania.pl.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 10px 20px; background: #dc2626; color: white; text-decoration: none; border-radius: 8px; font-weight: bold; font-size: 13px;">ZOBACZ ORYGINAŁ</a>
                </div>
            `;
            return;
        }
    }

    // Logika przełączania kart Case Study
    const cardStep1 = document.getElementById('cs-btn-step1');
    const cardStep2 = document.getElementById('cs-btn-step2');

    function toggleCards(activeCard, inactiveCard) {
        activeCard.classList.add('active');
        inactiveCard.classList.remove('active');
    }

    if (cardStep1 && cardStep2) {
        cardStep1.addEventListener('click', () => toggleCards(cardStep1, cardStep2));
        cardStep2.addEventListener('click', () => toggleCards(cardStep2, cardStep1));
    }
});
</script>



<style>
:root {
    --ppm-primary: #0f172a;
    --ppm-accent: #ea580c;
    --ppm-accent-hover: #c2410c;
    --ppm-bg: #ffffff;
    --ppm-light: #fff7ed;
    --ppm-border: #fdba74;
    --ppm-text: #475569;
    --ppm-danger: #ef4444;
    --ppm-success: #10b981;
}

.premium-project-module {
    max-width: 900px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--ppm-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(234, 88, 12, 0.1);
    border: 1px solid var(--ppm-border);
    overflow: hidden;
}

/* --- HEADER I TREŚĆ --- */
.ppm-header-area {
    padding: 40px 45px 30px 45px;
    background: linear-gradient(to bottom, #ffffff, var(--ppm-light));
    border-bottom: 1px solid var(--ppm-border);
}

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

.ppm-text-content {
    font-size: 16px;
    line-height: 1.8;
    color: var(--ppm-text);
    margin: 0 0 15px 0;
}

.ppm-text-content strong { color: var(--ppm-primary); }
.ppm-text-content a { color: var(--ppm-accent); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }

/* --- SEKCJA INTERAKTYWNA (Aplikacja) --- */
.ppm-app-section {
    padding: 35px 45px;
    background: #ffffff;
}

.ppm-app-section h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--ppm-primary);
    margin: 0 0 25px 0;
    text-align: center;
}

/* Suwak (Slider) */
.ppm-slider-container {
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 16px;
    padding: 25px;
    margin-bottom: 30px;
}

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

.ppm-slider-header h4 {
    margin: 0;
    font-size: 16px;
    font-weight: 700;
    color: var(--ppm-primary);
}

.ppm-slider-value {
    font-size: 22px;
    font-weight: 900;
    color: var(--ppm-accent);
}

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

.ppm-result-box {
    margin-top: 20px;
    background: #eff6ff;
    border-left: 4px solid #3b82f6;
    padding: 15px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    gap: 15px;
}

.ppm-result-box svg { flex-shrink: 0; color: #3b82f6; }
.ppm-result-text { font-size: 14px; color: #1e3a8a; line-height: 1.5; margin: 0; }
.ppm-result-text strong { font-size: 18px; display: block; margin-top: 5px; }

/* Przełącznik (Toggle) */
.ppm-toggle-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 20px;
}

.ppm-toggle-switch {
    display: inline-flex;
    background: #e2e8f0;
    border-radius: 50px;
    padding: 4px;
    position: relative;
    cursor: pointer;
    user-select: none;
}

.ppm-toggle-option {
    padding: 10px 24px;
    font-size: 14px;
    font-weight: 700;
    color: #64748b;
    position: relative;
    z-index: 2;
    transition: color 0.3s;
}

.ppm-toggle-slider {
    position: absolute;
    top: 4px;
    left: 4px;
    width: calc(50% - 4px);
    height: calc(100% - 8px);
    background: #ffffff;
    border-radius: 40px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.1);
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1;
}

.ppm-toggle-container.active-right .ppm-toggle-slider {
    transform: translateX(100%);
}

.ppm-toggle-container.active-right .ppm-toggle-option:nth-child(1) { color: #64748b; }
.ppm-toggle-container.active-right .ppm-toggle-option:nth-child(2) { color: var(--ppm-primary); }
.ppm-toggle-container:not(.active-right) .ppm-toggle-option:nth-child(1) { color: var(--ppm-primary); }

.ppm-scenario-card {
    width: 100%;
    padding: 20px;
    border-radius: 16px;
    border: 2px solid transparent;
    transition: all 0.3s;
}

.ppm-scenario-bad {
    background: #fef2f2;
    border-color: #fca5a5;
    display: block;
}

.ppm-scenario-good {
    background: #ecfdf5;
    border-color: #6ee7b7;
    display: none;
}

.ppm-toggle-container.active-right .ppm-scenario-bad { display: none; }
.ppm-toggle-container.active-right .ppm-scenario-good { display: block; animation: fadeIn 0.4s; }

.ppm-scenario-card h4 { margin: 0 0 10px 0; font-size: 16px; display: flex; align-items: center; gap: 8px; }
.ppm-scenario-bad h4 { color: #991b1b; }
.ppm-scenario-good h4 { color: #065f46; }

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

/* --- CTA --- */
.ppm-cta-section {
    background: var(--ppm-primary);
    padding: 40px 45px;
    text-align: center;
}

.ppm-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--ppm-accent);
    color: #ffffff;
    padding: 16px 36px;
    border-radius: 12px;
    font-size: 16px;
    font-weight: 800;
    text-decoration: none;
    text-transform: uppercase;
    transition: all 0.3s;
    box-shadow: 0 10px 20px rgba(234, 88, 12, 0.3);
}

.ppm-btn:hover {
    background: var(--ppm-accent-hover);
    transform: translateY(-3px);
    box-shadow: 0 15px 25px rgba(234, 88, 12, 0.4);
}

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

@media (max-width: 768px) {
    .ppm-header-area, .ppm-app-section, .ppm-cta-section { padding: 30px 25px; }
    .ppm-toggle-switch { width: 100%; display: flex; }
    .ppm-toggle-option { flex: 1; text-align: center; padding: 10px 0; }
    .ppm-btn { width: 100%; padding: 16px 20px; font-size: 14px; }
}
</style>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Article",
      "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#article-costs",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/"
      },
      "mainEntity": {
        "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#app-ozc-simulator"
      },
      "headline": "Jak projekt ogrzewania podłogowego wpływa na realne koszty?",
      "description": "Profesjonalny projekt OZC redukuje koszty robocizny o 10-15%. Kalkulator doboru pompy obiegowej i wytyczne dotyczące dylatacji (norma PN-EN 1264).",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "keywords": [
        "projekt ogrzewania podłogowego koszty",
        "obliczenia OZC podłogówka",
        "dylatacje ogrzewanie podłogowe norma",
        "dobór pompy obiegowej podłogówka",
        "oszczędności na robociźnie z projektem"
      ],
      "author": {
        "@type": "Person",
        "name": "Robert Kucharski",
        "url": "https://projekt-ogrzewania.pl/author/admin3399/",
        "sameAs": [
          "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
          "https://www.linkedin.com/in/robert-kucharski-38069b48/"
        ]
      },
      "publisher": {
        "@type": "Organization",
        "name": "Projekt-Ogrzewania.pl",
        "logo": {
          "@type": "ImageObject",
          "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
        }
      },
      "datePublished": "2026-05-03",
      "dateModified": "2026-05-03",
      "about": [
        { "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#dataset-ozc" },
        { "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#app-ozc-simulator" }
      ]
    },
    {
      "@type": "Dataset",
      "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#dataset-ozc",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#article-costs" },
      "name": "Wpływ obliczeń OZC i dylatacji na koszty instalacji podłogowej",
      "description": "Zestawienie twardych danych inżynieryjnych: redukcja kosztów, wymiary pól dylatacyjnych i wymagania przepływu masowego.",
      "measurementTechnique": "Analiza normy PN-EN 1264 oraz inżynierskie obliczenia hydrauliczne dla pompy obiegowej (wzór Q / 1.163 * ΔT)",
      "license": "https://projekt-ogrzewania.pl/",
      "creator": {
        "@type": "Person",
        "name": "Robert Kucharski"
      },
      "variableMeasured": [
        { "@type": "PropertyValue", "name": "Redukcja kosztów robocizny (z projektem OZC)", "value": "10-15%" },
        { "@type": "PropertyValue", "name": "Maksymalne pole bez dylatacji", "value": "40 m² (lub bok 8 m)" },
        { "@type": "PropertyValue", "name": "Wymagany przepływ (dla 11.5 kW i ΔT 5K)", "value": "1.98 m³/h" }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#app-ozc-simulator",
      "name": "Symulator Oszczędności i Przepływów Hydraulicznych",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "All",
      "browserRequirements": "Requires JavaScript",
      "description": "Interaktywne narzędzie obliczające wymagany przepływ na pompie obiegowej na podstawie mocy budynku oraz obrazujące ryzyko braku dylatacji.",
      "url": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/"
    }
  ]
}
</script>

<div class="premium-project-module" id="ppm-main-app">
    
    <div class="ppm-header-area">
        <h2>Jak projekt ogrzewania podłogowego wpływa na realne koszty?</h2>
        <p class="ppm-text-content">Profesjonalny projekt wykonany w oparciu o dokładne <a href="https://projekt-ogrzewania.pl/ozc-obliczenie-zapotrzebowania-cieplnego-budynku/">obliczenia OZC</a> (Obciążenie Cieplne Budynku) pozwala <strong>zredukować koszty robocizny o 10–15%</strong> dzięki całkowitemu wyeliminowaniu błędów instalacyjnych na budowie.</p>
        
        <p class="ppm-text-content">Projektant z uprawnieniami precyzyjnie wyznacza miejsca przejść. Zgodnie z normą budowlaną, pole grzejne bez dylatacji <strong>nie powinno przekraczać 40 m² lub długości boku 8 m</strong>. Instalator pracujący bez projektu nierzadko układa rury „na oko”, ignorując naprężenia termiczne, co ostatecznie prowadzi do pękania jastrychu i nieodwracalnych uszkodzeń drogich okładzin ceramicznych.</p>
    </div>

    <div class="ppm-app-section">
        <h3>Optymalizacja pompy i dylatacje</h3>
        
        <div class="ppm-slider-container">
            <div class="ppm-slider-header">
                <h4>Moc Twojej instalacji (Q):</h4>
                <span class="ppm-slider-value" id="ppm-power-val">11.5 kW</span>
            </div>
            <input type="range" min="4" max="25" step="0.5" value="11.5" class="ppm-range-input" id="ppm-power-slider">
            
            <div class="ppm-result-box">
                <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="m17 5-5-3-5 3"></path><path d="m19 19-7 3-7-3"></path><path d="M2 12h20"></path></svg>
                <p class="ppm-result-text">
                    Wymagany przepływ pompy obiegowej (przy ΔT = 5K):
                    <strong id="ppm-flow-result">1.98 m³/h</strong>
                </p>
            </div>
            <p style="font-size: 13px; color: #64748b; margin: 15px 0 0 0;">Znajomość tej wartości z projektu zapobiega przewymiarowaniu pompy i nadmiernemu zużyciu prądu.</p>
        </div>

        <div class="ppm-toggle-container" id="ppm-scenario-toggle">
            <div class="ppm-toggle-switch">
                <div class="ppm-toggle-slider"></div>
                <div class="ppm-toggle-option">Montaż &#8222;Na Oko&#8221;</div>
                <div class="ppm-toggle-option">Profesjonalny Projekt OZC</div>
            </div>

            <div class="ppm-scenario-card ppm-scenario-bad">
                <h4>
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                    Wysokie ryzyko błędów
                </h4>
                <p>Brak wyliczeń hydraulicznych powoduje losowy dobór pompy (często za dużej). Pętle układane są bez poszanowania normy 40 m² / 8 mb, co skutkuje brakiem dylatacji w kluczowych miejscach wylewki. <strong>Efekt:</strong> Wyższe koszty materiału, pękające płytki i brak gwarancji na posadzkę.</p>
            </div>

            <div class="ppm-scenario-card ppm-scenario-good">
                <h4>
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    Oszczędność i Bezpieczeństwo
                </h4>
                <p>Zmniejszenie kosztów robocizny o <strong>10–15%</strong>. Instalator otrzymuje gotowy rzut z wyznaczonymi strefami dylatacyjnymi. Precyzyjnie dobrana pompa obiegowa pracuje na optymalnych krzywych charakterystyki, co drastycznie obniża rachunki za prąd w skali całego roku.</p>
            </div>
        </div>

    </div>

    <div class="ppm-cta-section">
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="ppm-btn">
            <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Zamów Projekt z OZC i zredukuj koszty
        </a>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- Ochrona Domeny (Brak tagów Hx) ---
    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('ppm-main-app').innerHTML = `
            <div style="padding: 40px 25px; text-align: center; background: #fee2e2; border: 2px solid #dc2626; border-radius: 24px;">
                <div style="font-size: 32px; margin-bottom: 15px;">🔒</div>
                <div style="font-size: 18px; font-weight: bold; color: #dc2626; margin-bottom: 10px;">Aplikacja chroniona prawami autorskimi</div>
                <div style="font-size: 14px; color: #7f1d1d; margin-bottom: 15px;">Ten interaktywny symulator jest własnością Projekt-Ogrzewania.pl.</div>
                <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 10px 20px; background: #dc2626; color: white; text-decoration: none; border-radius: 8px; font-weight: bold; font-size: 13px;">ZOBACZ ORYGINAŁ</a>
            </div>
        `;
        return;
    }

    // --- Logika Suwaka (Obliczenia Hydrauliczne) ---
    const powerSlider = document.getElementById('ppm-power-slider');
    const powerValDisplay = document.getElementById('ppm-power-val');
    const flowResultDisplay = document.getElementById('ppm-flow-result');
    
    // Wzór: m = Q / (c_w * dT), gdzie c_w dla wody to ok. 1.163 kWh/(m3*K), zakładamy dT = 5K
    // m = Q / (1.163 * 5) = Q / 5.815
    const calculateFlow = (powerKw) => {
        return (powerKw / 5.815).toFixed(2);
    };

    powerSlider.addEventListener('input', (e) => {
        const power = parseFloat(e.target.value);
        powerValDisplay.textContent = power.toFixed(1) + ' kW';
        flowResultDisplay.textContent = calculateFlow(power) + ' m³/h';
    });

    // --- Logika Przełącznika Scenariuszy ---
    const toggleContainer = document.getElementById('ppm-scenario-toggle');
    const toggleSwitch = toggleContainer.querySelector('.ppm-toggle-switch');
    
    toggleSwitch.addEventListener('click', () => {
        toggleContainer.classList.toggle('active-right');
    });
});
</script>



<style>
:root {
    --faq-primary: #0f172a;
    --faq-accent: #ea580c;
    --faq-bg: #ffffff;
    --faq-light: #fff7ed;
    --faq-border: #e2e8f0;
    --faq-text: #475569;
}

.premium-faq-module {
    max-width: 900px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--faq-bg);
    border-radius: 24px;
    box-shadow: 0 15px 35px -10px rgba(234, 88, 12, 0.08);
    border: 1px solid #fdba74;
    overflow: hidden;
}

.faq-header-area {
    padding: 40px 45px 30px 45px;
    background: linear-gradient(to bottom, #ffffff, var(--faq-light));
    border-bottom: 1px solid #fdba74;
    text-align: center;
}

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

.faq-header-area p {
    font-size: 16px;
    color: var(--faq-text);
    margin: 0;
}

.faq-accordion-container {
    padding: 30px 45px 40px 45px;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.faq-item {
    border: 2px solid var(--faq-border);
    border-radius: 16px;
    background: #ffffff;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    overflow: hidden;
}

.faq-item:hover {
    border-color: #fdba74;
    box-shadow: 0 5px 15px rgba(234, 88, 12, 0.05);
}

.faq-item.active {
    border-color: var(--faq-accent);
    background: #fffcf9;
}

.faq-question {
    padding: 20px 25px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    user-select: none;
    gap: 15px;
}

.faq-question h3 {
    font-size: 16px;
    font-weight: 800;
    color: var(--faq-primary);
    margin: 0;
    line-height: 1.5;
    flex: 1;
}

/* Ikona Toggle (Plus / Minus) */
.faq-toggle-icon {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #f1f5f9;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: all 0.3s ease;
    color: var(--faq-primary);
}

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

.faq-answer {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    transition: all 0.4s ease-out;
    padding: 0 25px;
}

.faq-item.active .faq-answer {
    max-height: 350px;
    opacity: 1;
    padding: 0 25px 25px 25px;
}

.faq-answer p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--faq-text);
    border-top: 1px dashed #e2e8f0;
    padding-top: 20px;
}

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

@media (max-width: 768px) {
    .faq-header-area { padding: 35px 25px 25px 25px; }
    .faq-accordion-container { padding: 20px 25px 35px 25px; }
    .faq-question { padding: 18px 20px; }
    .faq-question h3 { font-size: 15px; }
    .faq-item.active .faq-answer { padding: 0 20px 20px 20px; }
}
</style>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Article",
      "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#article",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/"
      },
      "headline": "Aktualne Ceny Robocizny Ogrzewania Podłogowego – FAQ",
      "description": "Najczęstsze pytania inwestorów dotyczące wycen instalacji HVAC. Sprawdź koszty montażu rozdzielaczy i styropianu w 2026 roku.",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "keywords": [
        "podłogówka cena za m2 robocizny",
        "koszt ogrzewania podłogowego",
        "ile kosztuje podłogówka",
        "robocizna podłogówki 2026",
        "wycena instalacji grzewczej"
      ],
      "author": {
        "@type": "Person",
        "name": "Robert Kucharski",
        "url": "https://projekt-ogrzewania.pl/author/admin3399/",
        "sameAs": [
          "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
          "https://www.linkedin.com/in/robert-kucharski-38069b48/"
        ]
      },
      "publisher": {
        "@type": "Organization",
        "name": "Projekt-Ogrzewania.pl",
        "logo": {
          "@type": "ImageObject",
          "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
        }
      },
      "datePublished": "2025-01-07",
      "dateModified": "2026-05-03"
    },
    {
      "@type": "Dataset",
      "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#dataset-faq",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#article" },
      "name": "Zestawienie kosztów dodatkowych HVAC 2026",
      "description": "Szczegółowa baza wiedzy o stawkach robocizny za montaż rozdzielaczy i izolacji.",
      "measurementTechnique": "Analiza rynkowa ofert firm instalacyjnych oraz audyt rzeczywistych realizacji inwestycji w Polsce w 2026 roku",
      "license": "https://projekt-ogrzewania.pl/",
      "creator": { "@id": "https://projekt-ogrzewania.pl/author/admin3399/" },
      "variableMeasured": [
        { "@type": "PropertyValue", "name": "Montaż rozdzielacza", "value": "400-700 PLN" },
        { "@type": "PropertyValue", "name": "Stawka robocizny ze styropianem", "value": "32-45 PLN/m²" }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#faq-section",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Czy cena robocizny podłogówki obejmuje ułożenie styropianu?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Tak, w profesjonalnych ofertach stawka od 32 do 45 zł/m² obejmuje rozłożenie izolacji EPS, folii systemowej oraz rur."
          }
        },
        {
          "@type": "Question",
          "name": "Ile kosztuje robocizna za montaż rozdzielacza?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Montaż i podłączenie rozdzielacza to koszt od 400 do 700 zł."
          }
        },
        {
          "@type": "Question",
          "name": "Czy w 2026 roku cena robocizny różni się w zależności od województwa?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Tak, analizy rynku instalacyjnego pokazują, że różnice regionalne wynoszą do 20%. Najwyższe stawki dominują w województwach mazowieckim, wielkopolskim i dolnośląskim, a niższe np. w podkarpackim czy lubelskim."
          }
        },
        {
          "@type": "Question",
          "name": "Jak przygotowanie podłoża wpływa na koszt ułożenia m² podłogówki?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nierówna wylewka chudziakowa wymusza dodatkowe prace. Konieczność wcześniejszego wylania warstwy samopoziomującej czy szlifowania podłoża podnosi stawkę robocizny o średnio 10-15 zł na metrze kwadratowym."
          }
        },
        {
          "@type": "Question",
          "name": "Czy robocizna obejmuje wykonanie próby ciśnieniowej instalacji?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Tak, certyfikowana ekipa instalacyjna zawsze wlicza próbę szczelności (pod ciśnieniem) w standardową stawkę. Jest to wymóg normy PN-EN 1264 i podstawa gwarancji."
          }
        }
      ]
    }
  ]
}
</script>

<div class="premium-faq-module" id="faq-app-container">
    <div class="faq-header-area">
        <h2>FAQ – Najczęściej zadawane pytania</h2>
        <p>Rozwiewamy wątpliwości dotyczące wycen i ukrytych kosztów inwestycji.</p>
    </div>

    <div class="faq-accordion-container">
        <div class="faq-item">
            <div class="faq-question">
                <h3>Czy cena robocizny podłogówki obejmuje ułożenie styropianu?</h3>
                <div class="faq-toggle-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </div>
            <div class="faq-answer">
                <p>Tak, rzetelna stawka robocizny obejmuje <strong>rozłożenie izolacji termicznej (EPS)</strong>, folii systemowej oraz właściwy montaż rur. Unikaj ekip, które doliczają każdą warstwę styropianu osobno.</p>
            </div>
        </div>

        <div class="faq-item">
            <div class="faq-question">
                <h3>Ile kosztuje robocizna za montaż rozdzielacza do podłogówki?</h3>
                <div class="faq-toggle-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </div>
            <div class="faq-answer">
                <p>Montaż, usadowienie szafki i podłączenie jednego <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacza do podłogówki</a> to koszt rzędu <strong>od 400 do 700 zł</strong>, zależnie od liczby sekcji.</p>
            </div>
        </div>

        <div class="faq-item">
            <div class="faq-question">
                <h3>Czy w 2026 roku cena robocizny różni się w zależności od województwa?</h3>
                <div class="faq-toggle-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </div>
            <div class="faq-answer">
                <p>Tak, analizy rynku instalacyjnego pokazują, że różnice regionalne wynoszą do 20%. Najwyższe stawki wykonawcze dominują w województwach mazowieckim, wielkopolskim i dolnośląskim. Zauważalnie niższe wyceny można uzyskać od ekip działających w regionach wschodnich i południowych, np. w podkarpackim czy lubelskim, zachowując przy tym ten sam standard wykonania.</p>
            </div>
        </div>

        <div class="faq-item">
            <div class="faq-question">
                <h3>Jak przygotowanie podłoża wpływa na koszt ułożenia m² podłogówki?</h3>
                <div class="faq-toggle-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </div>
            <div class="faq-answer">
                <p>Nierówna wylewka chudziakowa wymusza dodatkowe prace. Konieczność wcześniejszego wylania warstwy samopoziomującej lub żmudnego docinania pierwszych warstw styropianu podnosi stawkę robocizny o średnio <strong>10 do 15 zł na metrze kwadratowym</strong>.</p>
            </div>
        </div>

        <div class="faq-item">
            <div class="faq-question">
                <h3>Czy robocizna obejmuje wykonanie próby ciśnieniowej instalacji?</h3>
                <div class="faq-toggle-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </div>
            <div class="faq-answer">
                <p>Zdecydowanie tak. Zgodnie z normą PN-EN 1264, certyfikowana ekipa instalacyjna zawsze ma wliczoną próbę szczelności w standardową stawkę za m² lub w kosztorys montażu rozdzielacza. Otrzymujesz wtedy oficjalny protokół z tego procesu.</p>
            </div>
        </div>

    </div>
</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)) {
        document.getElementById('faq-app-container').innerHTML = '<div style="padding: 30px; text-align: center; color: red;">🔒 Treść chroniona autorsko. Projekt-Ogrzewania.pl</div>';
        return;
    }
    const faqItems = document.querySelectorAll('.faq-item');
    faqItems.forEach(item => {
        item.querySelector('.faq-question').addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            item.classList.toggle('active');
            item.querySelector('.faq-toggle-icon svg line:nth-child(1)').style.display = isActive ? 'block' : 'none';
        });
    });
});
</script>



<style>
:root {
    --cs-primary: #0f172a;
    --cs-accent: #2563eb;
    --cs-step1: #16a34a; /* Kolor zielony dla kosztorysu */
    --cs-step2: #ea580c; /* Kolor pomarańczowy dla hydrauliki */
    --cs-bg: #f8fafc;
    --cs-border: #e2e8f0;
    --cs-text: #475569;
}

.case-study-module {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--cs-border);
    overflow: hidden;
}

/* ================= HEADER I METRYCZKA ================= */
.cs-header-wrapper {
    background: var(--cs-primary);
    color: #ffffff;
    padding: 40px 50px;
    position: relative;
    overflow: hidden;
}

.cs-header-wrapper::after {
    content: '';
    position: absolute;
    top: -50px;
    right: -50px;
    width: 250px;
    height: 250px;
    background: radial-gradient(circle, rgba(37, 99, 235, 0.3) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
}

.cs-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.2);
    color: #93c5fd;
    padding: 6px 14px;
    border-radius: 50px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
}

.cs-header-wrapper h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 25px 0;
    line-height: 1.3;
    color: #ffffff;
    position: relative;
    z-index: 2;
}

.cs-stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
    position: relative;
    z-index: 2;
}

.cs-stat-box {
    background: rgba(0, 0, 0, 0.2);
    border: 1px solid rgba(255, 255, 255, 0.1);
    padding: 15px;
    border-radius: 12px;
    backdrop-filter: blur(4px);
}

.cs-stat-label {
    display: block;
    font-size: 11px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 700;
    margin-bottom: 5px;
}

.cs-stat-value {
    display: block;
    font-size: 16px;
    font-weight: 900;
    color: #ffffff;
}

/* ================= OPIS WYZWANIA ================= */
.cs-content-section {
    padding: 40px 50px 30px 50px;
    background: #ffffff;
}

.cs-lead-text {
    font-size: 16px;
    line-height: 1.8;
    color: var(--cs-text);
    margin: 0 0 20px 0;
}

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

.cs-lead-text a {
    color: var(--cs-accent);
    text-decoration: underline;
    font-weight: 600;
}

/* Bloki z wyliczeniami w tekscie */
.cs-calc-block {
    background: #f8fafc;
    border: 1px solid var(--cs-border);
    border-radius: 12px;
    padding: 20px;
    margin-bottom: 25px;
}

.cs-calc-block ul {
    margin: 0;
    padding-left: 20px;
    list-style-type: none;
}

.cs-calc-block li {
    margin-bottom: 10px;
    font-size: 15px;
    color: var(--cs-text);
    position: relative;
}

.cs-calc-block li::before {
    content: '→';
    position: absolute;
    left: -20px;
    color: var(--cs-accent);
    font-weight: bold;
}

.cs-calc-block li strong { color: var(--cs-primary); }

.cs-calc-highlight {
    background: #eff6ff;
    padding: 15px;
    border-radius: 8px;
    margin-top: 15px;
    border-left: 4px solid var(--cs-accent);
    font-size: 14px;
    color: #1e3a8a;
    font-weight: 600;
}

.cs-author-box {
    background: #f0f9ff;
    border-left: 4px solid var(--cs-accent);
    padding: 15px 20px;
    border-radius: 0 12px 12px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 10px;
}

.cs-author-photo {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid #ffffff;
    box-shadow: 0 4px 10px rgba(37, 99, 235, 0.2);
    flex-shrink: 0;
}

.cs-author-box p {
    margin: 0;
    font-size: 14px;
    color: #1e3a8a;
    line-height: 1.6;
}

/* ================= INTERAKTYWNE WYZWANIE (SPLIT CARDS) ================= */
.cs-interactive-section {
    padding: 0 50px 40px 50px;
}

.cs-split-container {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.cs-split-card {
    border-radius: 16px;
    padding: 25px;
    border: 2px solid var(--cs-border);
    cursor: pointer;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
    background: #ffffff;
    display: flex;
    flex-direction: column;
}

.cs-split-card:not(.active) {
    opacity: 0.7;
    transform: scale(0.98);
}

.cs-split-card.step1.active {
    border-color: var(--cs-step1);
    background: #f0fdf4;
    box-shadow: 0 10px 25px rgba(22, 163, 74, 0.1);
    opacity: 1;
    transform: scale(1);
}

.cs-split-card.step2.active {
    border-color: var(--cs-step2);
    background: #fff7ed;
    box-shadow: 0 10px 25px rgba(234, 88, 12, 0.1);
    opacity: 1;
    transform: scale(1);
}

.cs-card-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 15px;
}

.cs-card-icon {
    font-size: 28px;
}

.cs-card-title {
    font-size: 18px;
    font-weight: 900;
    color: var(--cs-primary);
    margin: 0;
}

.cs-card-desc {
    font-size: 14px;
    line-height: 1.6;
    color: var(--cs-text);
    margin: 0;
}

.cs-card-solution {
    margin-top: 15px;
    padding-top: 15px;
    border-top: 1px dashed rgba(0,0,0,0.1);
    font-size: 14px;
    line-height: 1.6;
    display: none;
}

.cs-split-card.step1 .cs-card-solution { color: #14532d; }
.cs-split-card.step2 .cs-card-solution { color: #7c2d12; }

.cs-card-solution ul {
    margin: 0;
    padding-left: 20px;
    list-style-type: square;
}

.cs-card-solution li { margin-bottom: 8px; }
.cs-card-solution code { font-weight: 800; font-family: 'Inter', sans-serif; background: rgba(255,255,255,0.5); padding: 2px 6px; border-radius: 4px;}

.cs-split-card.active .cs-card-solution {
    display: block;
    animation: csFadeIn 0.4s ease forwards;
}

/* ================= CTA WRAZ Z PRZYCISKIEM BLOGA ================= */
.cs-cta-box {
    background: linear-gradient(135deg, #f8fafc 0%, #ffffff 100%);
    padding: 45px 50px;
    text-align: center;
    border-top: 1px solid var(--cs-border);
}

.cs-cta-box h4 {
    font-size: 22px;
    font-weight: 900;
    color: var(--cs-primary);
    margin: 0 0 10px 0;
}

.cs-cta-box p {
    font-size: 15px;
    color: #475569;
    margin: 0 auto 25px auto;
    max-width: 650px;
    line-height: 1.6;
}

.cs-cta-buttons-wrapper {
    display: flex;
    justify-content: center;
    gap: 15px;
    flex-wrap: wrap;
}

.cs-cta-button {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: var(--cs-accent);
    color: #ffffff;
    padding: 16px 32px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 800;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 1px;
    transition: all 0.3s;
    box-shadow: 0 10px 20px -5px rgba(37, 99, 235, 0.4);
    border: 2px solid var(--cs-accent);
}

.cs-cta-button:hover {
    background: #1e3a8a;
    border-color: #1e3a8a;
    transform: translateY(-3px);
    box-shadow: 0 15px 25px -5px rgba(37, 99, 235, 0.5);
    color: #ffffff;
}

/* Nowy intensywny przycisk do bloga */
.cs-blog-btn-intense {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: var(--cs-primary);
    color: #ffffff;
    padding: 16px 32px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 800;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 1px;
    transition: all 0.3s;
    box-shadow: 0 10px 20px -5px rgba(15, 23, 42, 0.4);
    border: 2px solid var(--cs-primary);
}

.cs-blog-btn-intense:hover {
    background: #ffffff;
    color: var(--cs-primary);
    transform: translateY(-3px);
    box-shadow: 0 15px 25px -5px rgba(15, 23, 42, 0.2);
}

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

@media (max-width: 768px) {
    .cs-header-wrapper { padding: 35px 25px; }
    .cs-stats-grid { grid-template-columns: 1fr 1fr; }
    .cs-content-section { padding: 30px 25px 20px 25px; }
    .cs-interactive-section { padding: 0 25px 30px 25px; }
    .cs-cta-box { padding: 35px 25px; }
    .cs-split-container { grid-template-columns: 1fr; }
    .cs-cta-buttons-wrapper { flex-direction: column; }
    .cs-cta-button, .cs-blog-btn-intense { width: 100%; justify-content: center; }
}
</style>

<div class="case-study-module" id="app-calc-case-study">

    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@graph": [
        {
          "@type": "Article",
          "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#article",
          "mainEntityOfPage": {
            "@type": "WebPage",
            "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/"
          },
          "headline": "Kalkulacja Robocizny i Przepływów: Studium Przypadku",
          "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
          "author": {
            "@type": "Person",
            "name": "Robert Kucharski",
            "url": "https://projekt-ogrzewania.pl/",
            "sameAs": [
              "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
              "https://www.linkedin.com/in/robert-kucharski-38069b48/"
            ]
          },
          "publisher": {
            "@type": "Organization",
            "name": "Projekt-Ogrzewania.pl",
            "logo": {
              "@type": "ImageObject",
              "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
            }
          },
          "datePublished": "2025-01-07",
          "dateModified": "2026-05-03",
          "about": [
            { "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#app-calc-case-study" },
            { "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#dataset-case-study" }
          ]
        },
        {
          "@type": "WebApplication",
          "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#app-calc-case-study",
          "name": "Kalkulacja Robocizny i Przepływów: Studium Przypadku",
          "description": "Szczegółowa analiza kosztów robocizny ogrzewania podłogowego oraz inżynieryjne wyliczenia nastaw rotametrów dla domu o powierzchni 140 m².",
          "applicationCategory": "EducationalApplication",
          "operatingSystem": "All",
          "url": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/",
          "license": "https://projekt-ogrzewania.pl/",
          "keywords": [
            "kalkulator kosztów robocizny podłogówki",
            "wzór na wycenę ogrzewania podłogowego",
            "obliczenia przepływów rotametry",
            "kalkulacja długości pętli",
            "wycena robocizny z projektu"
          ],
          "mainEntity": {
            "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#app-calc-case-study"
          },
          "creator": {
            "@type": "Person",
            "name": "Robert Kucharski",
            "sameAs": [
              "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
              "https://www.linkedin.com/in/robert-kucharski-38069b48/"
            ]
          },
          "featureList": [
            "Wycena robocizny w podziale na strefy grzewcze",
            "Obliczenia błędów wycen zryczałtowanych",
            "Inżynierskie obliczenia przepływu i nastawy rotametrów"
          ]
        },
        {
          "@type": "Dataset",
          "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#dataset-case-study",
          "isPartOf": { "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#article" },
          "name": "Realne dane z projektu instalacji (Luty 2026)",
          "description": "Zestawienie parametrów projektowych, finansowych i hydraulicznych użytych do analizy błędów wykonawczych.",
          "measurementTechnique": "Autorski algorytm inżynierski wyceny oparty na wzorze K_rob, obliczeniach OZC oraz normie PN-EN 1264",
          "license": "https://projekt-ogrzewania.pl/",
          "variableMeasured": [
            {
              "@type": "PropertyValue",
              "name": "Koszt całkowity (rzeczywisty)",
              "value": "10 524 PLN"
            },
            {
              "@type": "PropertyValue",
              "name": "Błąd wyceny ryczałtowej (65 zł/m²)",
              "value": "-13.5%"
            },
            {
              "@type": "PropertyValue",
              "name": "Moc instalacji (Q)",
              "value": "11.5 kW"
            },
            {
              "@type": "PropertyValue",
              "name": "Nastawa rotametru (na pętlę)",
              "value": "3.3 l/min"
            }
          ],
          "creator": {
            "@type": "Person",
            "name": "Robert Kucharski"
          }
        }
      ]
    }
    </script>

    <div class="cs-header-wrapper">
        <div class="cs-badge">Kalkulacja z Projektu</div>
        <h2>Jak policzyć całkowity koszt robocizny ogrzewania podłogowego</h2>
        <div class="cs-stats-grid">
            <div class="cs-stat-box">
                <span class="cs-stat-label">Dom pow. netto</span>
                <span class="cs-stat-value">140 m²</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Koszt całkowity</span>
                <span class="cs-stat-value">10 524 zł</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Błąd wyceny &#8222;na oko&#8221;</span>
                <span class="cs-stat-value" style="color: #fca5a5;">-13,5%</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Nastawa rotametru</span>
                <span class="cs-stat-value">3,3 l/min</span>
            </div>
        </div>
    </div>

    <div class="cs-content-section">
        <p class="cs-lead-text">Całkowity koszt robocizny liczysz <strong>z projektu, a nie z metrażu budynku</strong>. Wykonawcy, którzy dają jedną uśrednioną cenę, niemal zawsze dopisują później aneksy do umowy. Poniżej przedstawiam konkretny przykład z lutego 2026 roku (Dom Pana Marka), oparty na autorskim wzorze: <strong>K_rob = Σ (A_i × C_Ti) + K_rozdz + K_proba</strong>.</p>
        
        <div class="cs-calc-block">
            <ul>
                <li><strong>A1 (Strefy otwarte):</strong> 92 m², rozstaw 150 mm, stawka 65 zł/m² <strong>→ 5 980 zł</strong></li>
                <li><strong>A2 (Łazienki, okna):</strong> 28 m², rozstaw zagęszczony 100 mm, stawka 78 zł/m² <strong>→ 2 184 zł</strong></li>
                <li><strong>A3 (Sypialnie):</strong> 20 m², rozstaw 200 mm, stawka 58 zł/m² <strong>→ 1 160 zł</strong></li>
                <li><strong>K_rozdz (Rozdzielacze):</strong> 2 szt. × 450 zł <strong>→ 900 zł</strong></li>
                <li><strong>K_proba (Szczelność):</strong> Próba 6 bar + protokół <strong>→ 300 zł</strong></li>
            </ul>
            <div class="cs-calc-highlight">
                Razem: 10 524 zł, czyli średnio 75,2 zł/m². Gdyby instalator przyjął ryczałtem &#8222;atrakcyjne&#8221; 65 zł/m² dla całości, wyceniłby to na 9 100 zł. Różnica? Ponad 13% błędu, który odbiłby się na jakości materiałów lub aneksach.
            </div>
        </div>

        <div class="cs-author-box">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="cs-author-photo" loading="lazy">
            <p><strong>Robert Kucharski:</strong> &#8222;Rozkładamy koszty i hydraulikę na czynniki pierwsze. Kliknij w karty poniżej, aby zobaczyć jak krok po kroku tworzymy algorytm wyceny i – co najważniejsze – jak liczymy przepływy do precyzyjnego ustawienia pętli.&#8221;</p>
        </div>
    </div>

    <div class="cs-interactive-section">
        <div class="cs-split-container">
            
            <div class="cs-split-card step1 active" id="cs-btn-step1">
                <div class="cs-card-header">
                    <span class="cs-card-icon">📋</span>
                    <h3 class="cs-card-title">7 Kroków Kalkulacji</h3>
                </div>
                <p class="cs-card-desc">Nie zgaduj. Policz w 7 krokach, dokładnie tak, jak liczę to w biurze dla każdego zlecenia.</p>
                <div class="cs-card-solution">
                    <ul>
                        <li><strong>Krok 1:</strong> Policz zapotrzebowanie. <code>Q_obl = Q_OZC × 1,15</code>. Dla 140 m² po OZC Q = 9,8 kW → 11,27 kW.</li>
                        <li><strong>Krok 2:</strong> Podziel na strefy. Salon 35 m², strata 2450 W → wymóg 70 W/m².</li>
                        <li><strong>Krok 3:</strong> Dobierz rozstaw. Z tabeli dla q 70 W/m² i ΔϑH 12K → rozstaw 150 mm.</li>
                        <li><strong>Krok 4:</strong> Policz długość rury. <code>L = A / T × 1,1</code>. Dla salonu to 257 mb.</li>
                        <li><strong>Krok 5:</strong> Podziel na pętle. Maksimum to 110 m → 257 / 110 = 2,34 → czyli 3 pętle.</li>
                        <li><strong>Krok 6:</strong> Przypisz stawkę rynkową. Dla rozstawu 150 mm (65 zł/m²) salon kosztuje nas 2 275 zł.</li>
                        <li><strong>Krok 7:</strong> Dodaj stałe. Rozdzielacz (450 zł), dojazd (120 zł), próba (300 zł). Suma to zwykle widełki 9 500–12 500 zł.</li>
                    </ul>
                </div>
            </div>

            <div class="cs-split-card step2" id="cs-btn-step2">
                <div class="cs-card-header">
                    <span class="cs-card-icon">💧</span>
                    <h3 class="cs-card-title">Obliczenia Przepływów</h3>
                </div>
                <p class="cs-card-desc">Trzecie wyliczenie z projektu, które zawsze robię. To parametr, który monter ustawia w ramach robocizny, a bez projektu – po prostu zgaduje.</p>
                <div class="cs-card-solution">
                    <p style="margin-top:0;">Podstawą prawidłowo ułożonej podłogówki jest ustawienie <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrów na rozdzielaczu</a>.</p>
                    <ul>
                        <li><strong>Krok 1: Wzór bazowy.</strong> Przepływ masowy liczymy ze wzoru: <code>m = Q / (1,163 × ΔT)</code></li>
                        <li><strong>Krok 2: Całkowity zład.</strong> Przy mocy instalacji Q = 11,5 kW i zakładanym spadku temperatury ΔT = 5 K, przepływ całkowity wynosi: 11,5 / (1,163 × 5) = <strong>1,98 m³/h</strong>.</li>
                        <li><strong>Krok 3: Przepływ na rotametrze.</strong> Otrzymany wynik dzielimy na 10 pętli w domu. Daje to 0,198 m³/h na pętlę.</li>
                        <li><strong>Wynik:</strong> Po przeliczeniu jednostek, monter musi ustawić rotametr na około <strong>3,3 l/min</strong>. Dzięki temu <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa</a> precyzyjnie zasili każdy układ.</li>
                    </ul>
                </div>
            </div>

        </div>
    </div>

    <div class="cs-cta-box">
        <h4>Nie ryzykuj błędów monterskich i zaniżonych wycen.</h4>
        <p>Projekt ogrzewania podłogowego chroni Cię przed instalatorami, którzy narzucają jedną cenę za m², a potem domagają się dopłat. Zyskujesz pewność co do ilości rury, nastaw przepływu i wielkości rozdzielaczy.</p>
        
        <div class="cs-cta-buttons-wrapper">
            <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="cs-cta-button">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                Zamów Profesjonalny Projekt
            </a>
            
            <a href="https://projekt-ogrzewania.pl/blog/" class="cs-blog-btn-intense">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg>
                Więcej Wiedzy na Blogu
            </a>
        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Zabezpieczenie domenowe (bez tagów Hx)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('app-calc-case-study');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px 25px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;">
                    <span style="font-size: 40px; display: block; margin-bottom: 10px;">🔒</span>
                    <div style="margin: 0 0 10px 0; font-size: 20px; font-weight: bold;">Studium Przypadku Chronione</div>
                    <p style="font-size: 14px; margin-bottom: 15px;">Ten panel informacyjny to autorska własność Projekt-Ogrzewania.pl.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 10px 20px; background: #dc2626; color: white; text-decoration: none; border-radius: 8px; font-weight: bold; font-size: 13px;">ZOBACZ ORYGINAŁ</a>
                </div>
            `;
            return;
        }
    }

    // Logika przełączania kart Case Study
    const cardStep1 = document.getElementById('cs-btn-step1');
    const cardStep2 = document.getElementById('cs-btn-step2');

    function toggleCards(activeCard, inactiveCard) {
        activeCard.classList.add('active');
        inactiveCard.classList.remove('active');
    }

    if (cardStep1 && cardStep2) {
        cardStep1.addEventListener('click', () => toggleCards(cardStep1, cardStep2));
        cardStep2.addEventListener('click', () => toggleCards(cardStep2, cardStep1));
    }
});
</script>



<style>
:root {
    --info-primary: #0f172a;
    --info-accent: #ea580c;
    --info-accent-hover: #c2410c;
    --info-bg: #ffffff;
    --info-light: #fff7ed;
    --info-border: #e2e8f0;
    --info-text: #475569;
}

.premium-infographic-module {
    max-width: 900px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--info-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.08);
    border: 1px solid #fdba74;
    overflow: hidden;
}

.info-header-area {
    padding: 40px 45px 30px 45px;
    background: linear-gradient(to bottom, #ffffff, var(--info-light));
    border-bottom: 1px solid #fdba74;
    text-align: center;
}

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

.info-header-area p {
    font-size: 16px;
    line-height: 1.6;
    color: var(--info-text);
    margin: 0;
}

.info-header-area strong {
    color: var(--info-primary);
}

.info-image-container {
    padding: 30px 45px;
    background: #f8fafc;
    position: relative;
    text-align: center;
}

.info-img-wrapper {
    position: relative;
    display: inline-block;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 10px 25px rgba(0,0,0,0.1);
    cursor: zoom-in;
    transition: transform 0.3s ease;
}

.info-img-wrapper:hover {
    transform: translateY(-5px);
    box-shadow: 0 15px 35px rgba(0,0,0,0.15);
}

.info-img-wrapper img {
    max-width: 100%;
    height: auto;
    display: block;
}

.info-zoom-hint {
    position: absolute;
    bottom: 20px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(15, 23, 42, 0.85);
    color: #ffffff;
    padding: 8px 16px;
    border-radius: 50px;
    font-size: 13px;
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 8px;
    pointer-events: none;
    backdrop-filter: blur(4px);
    opacity: 0;
    transition: opacity 0.3s;
}

.info-img-wrapper:hover .info-zoom-hint {
    opacity: 1;
}

.info-cta-area {
    padding: 0 45px 40px 45px;
    background: #f8fafc;
    text-align: center;
}

/* Lightbox Modal */
.info-lightbox {
    display: none;
    position: fixed;
    z-index: 9999;
    padding: 40px;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(15, 23, 42, 0.95);
    backdrop-filter: blur(5px);
}

.info-lightbox-content {
    margin: auto;
    display: block;
    max-width: 90%;
    max-height: 90vh;
    border-radius: 12px;
    box-shadow: 0 0 50px rgba(0,0,0,0.5);
    object-fit: contain;
}

.info-lightbox-close {
    position: absolute;
    top: 20px;
    right: 35px;
    color: #f1f1f1;
    font-size: 40px;
    font-weight: bold;
    cursor: pointer;
    transition: color 0.3s;
}

.info-lightbox-close:hover {
    color: var(--info-accent);
}

@media (max-width: 768px) {
    .info-header-area { padding: 35px 25px 25px 25px; }
    .info-image-container { padding: 25px; }
    .info-cta-area { padding: 0 25px 35px 25px; }
    .info-header-area h3 { font-size: 22px; }
    .info-zoom-hint { opacity: 1; bottom: 10px; padding: 6px 12px; font-size: 11px; }
    .info-lightbox { padding: 15px; }
    .info-lightbox-close { top: 10px; right: 20px; font-size: 30px; }
}
</style>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Article",
      "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#article",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/"
      },
      "headline": "Ile naprawdę kosztuje ułożenie ogrzewania podłogowego w 2026 roku?",
      "author": { "@id": "https://projekt-ogrzewania.pl/#person" },
      "datePublished": "2026-05-03",
      "dateModified": "2026-05-03",
      "about": [
        { "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#infographic" }
      ]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#infographic",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#article" },
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Podlogowka-cena-za-m²-robocizny.webp",
      "width": "1200",
      "height": "1600",
      "caption": "Kompleksowe zestawienie cen robocizny ogrzewania podłogowego w 2026 roku oraz parametry techniczne montażu.",
      "description": "Infografika przedstawiająca koszty robocizny podłogówki, etapy wykonania, najczęstsze błędy oraz zalety profesjonalnego projektu OZC.",
      "keywords": [
        "podłogówka cena za m2 robocizny",
        "koszty instalacji podłogowej",
        "cennik usług hydraulicznych 2026",
        "etapy montażu ogrzewania",
        "infografika budowlana"
      ],
      "author": {
        "@type": "Person",
        "@id": "https://projekt-ogrzewania.pl/#person",
        "name": "Robert Kucharski",
        "sameAs": [
          "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
          "https://www.linkedin.com/in/robert-kucharski-38069b48/"
        ]
      },
      "license": "https://projekt-ogrzewania.pl/"
    }
  ]
}
</script>

<div class="premium-infographic-module" id="infographic-app-container">
    
    <div class="info-header-area">
        <h3>Ile naprawdę kosztuje ułożenie ogrzewania podłogowego w 2026 roku? [INFOGRAFIKA]</h3>
        <p>Sprawdź aktualne zestawienie: <strong>podłogówka cena za m² robocizny</strong> i dowiedz się, jak profesjonalny projekt instalacji zabezpiecza przed kosztownymi błędami wykonawczymi.</p>
    </div>

    <div class="info-image-container">
        <div class="info-img-wrapper" id="info-trigger-lightbox">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Podlogowka-cena-za-m²-robocizny.webp" 
                 alt="Infografika: Podłogówka cena za m2 robocizny w 2026 roku – szczegółowe zestawienie kosztów montażu, parametrów technicznych i najczęstszych błędów wykonawczych." 
                 loading="lazy" />
            <div class="info-zoom-hint">
                <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="11" y1="8" x2="11" y2="14"></line><line x1="8" y1="11" x2="14" y2="11"></line></svg>
                Kliknij, aby powiększyć
            </div>
        </div>
    </div>

    <div class="info-cta-area">
        <div style="margin: 0; text-align: center;">
            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Podlogowka-cena-za-m²-robocizny.pdf" download 
               style="display: inline-flex; align-items: center; gap: 12px; background: #ea580c; color: #ffffff; padding: 18px 35px; border-radius: 12px; font-family: 'Inter', -apple-system, sans-serif; font-size: 16px; font-weight: 800; text-decoration: none; text-transform: uppercase; letter-spacing: 1px; box-shadow: 0 10px 20px rgba(234, 88, 12, 0.3); transition: all 0.3s;"
               onmouseover="this.style.background='#c2410c'; this.style.transform='translateY(-3px)'; this.style.boxShadow='0 15px 25px rgba(234, 88, 12, 0.4)';"
               onmouseout="this.style.background='#ea580c'; this.style.transform='none'; this.style.boxShadow='0 10px 20px rgba(234, 88, 12, 0.3)';">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                    <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
                    <polyline points="7 10 12 15 17 10"></polyline>
                    <line x1="12" y1="15" x2="12" y2="3"></line>
                </svg>
                Pobierz PDF: Podłogówka cena za m² robocizny
            </a>
            <p style="margin-top: 15px; font-size: 13px; color: #64748b; font-family: 'Inter', -apple-system, sans-serif;">
                Format: PDF | Rozmiar: ok. 1.2 MB | Zawiera: Cennik 2026 i Wytyczne Techniczne
            </p>
        </div>
    </div>

</div>

<div id="info-myLightbox" class="info-lightbox">
    <span class="info-lightbox-close">&times;</span>
    <img decoding="async" class="info-lightbox-content" id="info-lightbox-img" src="">
</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)) {
        document.getElementById('infographic-app-container').innerHTML = `
            <div style="padding: 40px 25px; text-align: center; background: #fee2e2; border: 2px solid #dc2626; border-radius: 20px;">
                <div style="font-size: 32px; margin-bottom: 15px;">🔒</div>
                <div style="font-size: 18px; font-weight: bold; color: #dc2626; margin-bottom: 10px;">Moduł chroniony prawami autorskimi</div>
                <div style="font-size: 14px; color: #7f1d1d; margin-bottom: 15px;">Ta infografika jest własnością Projekt-Ogrzewania.pl.</div>
                <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 10px 20px; background: #dc2626; color: white; text-decoration: none; border-radius: 8px; font-weight: bold; font-size: 13px;">ZOBACZ ORYGINAŁ</a>
            </div>
        `;
        return;
    }

    // --- Logika Lightboxa ---
    const modal = document.getElementById("info-myLightbox");
    const imgWrapper = document.getElementById("info-trigger-lightbox");
    const modalImg = document.getElementById("info-lightbox-img");
    const sourceImg = imgWrapper.querySelector("img");
    const spanClose = document.getElementsByClassName("info-lightbox-close")[0];

    imgWrapper.addEventListener('click', function() {
        modal.style.display = "flex";
        modalImg.src = sourceImg.src;
        document.body.style.overflow = "hidden"; // Blokuje przewijanie strony w tle
    });

    spanClose.addEventListener('click', function() {
        modal.style.display = "none";
        document.body.style.overflow = "auto";
    });

    // Zamknięcie po kliknięciu w tło
    modal.addEventListener('click', function(e) {
        if (e.target === modal) {
            modal.style.display = "none";
            document.body.style.overflow = "auto";
        }
    });
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/podlogowka-cena-za-m%c2%b2-robocizny/">Podłogówka cena za m² robocizny.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/podlogowka-cena-za-m%c2%b2-robocizny/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Ile kosztuje projekt ogrzewania podłogowego?</title>
		<link>https://projekt-ogrzewania.pl/ile-kosztuje-projekt-ogrzewania-podlogowego/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 14 Dec 2024 13:00:41 +0000</pubDate>
				<category><![CDATA[Cennik]]></category>
		<category><![CDATA[Efektywne ogrzewanie]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Koszty inwestycji]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Porady budowlane]]></category>
		<category><![CDATA[Projekty techniczne]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[koszty instalacji]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[planowanie ogrzewania]]></category>
		<category><![CDATA[profesjonalne projekty]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[technologie grzewcze]]></category>
		<category><![CDATA[zwrot kaucji]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=1756</guid>

					<description><![CDATA[<p>Projekt ogrzewania podłogowego to kluczowy etap planowania instalacji, który wpływa na efektywność i komfort cieplny w Twoim domu. Dowiedz się, ile kosztuje taki projekt, jakie czynniki wpływają na jego cenę oraz dlaczego warto zainwestować w profesjonalne rozwiązania. Na blogu wyjaśniamy również, jak możesz odzyskać koszty projektu, korzystając z oferty zwrotu kaucji. Poznaj szczegóły i sprawdź konkurencyjne ceny dostępne na stronie Projekt-Ogrzewania.pl</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-kosztuje-projekt-ogrzewania-podlogowego/">Ile kosztuje projekt ogrzewania podłogowego?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a href="https://projekt-ogrzewania.pl/">Ogrzewanie podłogowe</a> cieszy się rosnącą popularnością w Polsce, głównie dzięki swoim licznym zaletom: komfort cieplny, oszczędność energii i estetyka wnętrz. Jednak zanim zdecydujesz się na ten rodzaj instalacji, jednym z pierwszych kroków jest przygotowanie profesjonalnego projektu ogrzewania podłogowego. W tym artykule odpowiemy na pytanie: <strong>ile kosztuje projekt ogrzewania podłogowego?</strong>, wskazując na najważniejsze czynniki wpływające na cenę oraz dostępne opcje.</p>



<h2 class="wp-block-heading">Czym jest projekt ogrzewania podłogowego?</h2>



<p class="wp-block-paragraph">Projekt ogrzewania podłogowego to dokumentacja techniczna zawierająca szczegółowy plan instalacji grzewczej, uwzględniająca:</p>



<ul class="wp-block-list">
<li>rozmieszczenie pętli grzewczych,</li>



<li>obliczenia zapotrzebowania na ciepło,</li>



<li>dobór odpowiednich materiałów, takich jak <a href="https://projekt-ogrzewania.pl/kategoria-produktu/rury-do-ogrzewania-podlogowego/">rury</a>, <a href="https://projekt-ogrzewania.pl/kategoria-produktu/rozdzielacze-do-ogrzewania-podlogowego/">rozdzielacze</a> czy zawory,</li>



<li>wskazówki dotyczące izolacji i stref brzegowych.</li>
</ul>



<p class="wp-block-paragraph">Dobrze zaprojektowana instalacja zapewnia <strong>optymalne zużycie energii</strong>, trwałość oraz brak awarii wynikających z nieprawidłowego wykonania.</p>



<h2 class="wp-block-heading">Ile kosztuje projekt ogrzewania podłogowego?</h2>



<p class="wp-block-paragraph">Cena projektu ogrzewania podłogowego zależy od kilku kluczowych czynników, takich jak:</p>



<ul class="wp-block-list">
<li><strong>Powierzchnia budynku</strong> – Większe powierzchnie wymagają bardziej szczegółowych planów i dłuższej pracy projektanta.</li>



<li><strong>Liczba kondygnacji</strong> – Dla budynków wielokondygnacyjnych projekt może być droższy ze względu na dodatkowe wymagania techniczne.</li>



<li><strong>Stopień skomplikowania</strong> – Projekty o niestandardowych wymaganiach, takich jak ogrzewanie zewnętrzne (np. tarasy czy podgrzewane podjazdy), mogą wiązać się z dodatkowymi kosztami.</li>
</ul>



<p class="wp-block-paragraph">Na naszej stronie znajdziesz szczegółowy cennik projektów dostosowany do różnych powierzchni:</p>



<ul class="wp-block-list">
<li><strong>Do 100 m²</strong>: już od <strong><a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">350 zł</a></strong>, co czyni tę opcję najtańszą na rynku.</li>



<li><strong>Do 150 m²</strong>: &#8211; <strong><a href="https://projekt-ogrzewania.pl/produkt/projekt-ogrzewania-podlogowego-do-150-m2/">550</a> zł</strong></li>



<li><strong>Do 200 m²</strong>: &#8211; <strong><a href="https://projekt-ogrzewania.pl/produkt/projekt-ogrzewania-podlogowego-do-200-m2/">650</a> zł</strong></li>



<li><strong>Do 250 m²</strong>: &#8211; <strong><a href="https://projekt-ogrzewania.pl/produkt/projekt-ogrzewania-podlogowego-do-250-m2/">750</a> zł</strong></li>
</ul>



<p class="wp-block-paragraph">Dodatkowo warto zwrócić uwagę na możliwość <strong>zwrotu kaucji</strong> za projekt. Jeśli zdecydujesz się na zakup materiałów w firmie, cała kwota wpłacona za projekt zostanie zwrócona. Więcej informacji znajdziesz na stronie <a href="https://projekt-ogrzewania.pl/zwrot-kaucji-za-zakupiony-projekt-ogrzewania-podlogowego/">Zwrot kaucji za zakupiony projekt</a>.</p>



<h2 class="wp-block-heading">Dlaczego warto zainwestować w profesjonalny projekt?</h2>



<p class="wp-block-paragraph">Profesjonalny projekt ogrzewania podłogowego to inwestycja, która przynosi wiele korzyści:</p>



<ul class="wp-block-list">
<li><strong>Optymalizacja kosztów eksploatacji</strong> – Dzięki precyzyjnym obliczeniom możesz zmniejszyć zużycie energii.</li>



<li><strong>Brak kosztownych błędów</strong> – Zlecenie projektu specjaliście eliminuje ryzyko niewłaściwego rozmieszczenia pętli czy zastosowania nieodpowiednich materiałów.</li>



<li><strong>Długotrwałość systemu</strong> – Właściwie zaprojektowany system działa bezawaryjnie przez wiele lat.</li>
</ul>



<p class="wp-block-paragraph">Jeśli chcesz dowiedzieć się więcej na temat zalet profesjonalnych projektów, zajrzyj na nasz <a href="https://projekt-ogrzewania.pl/blog/">blog</a>, gdzie znajdziesz artykuły takie jak <em>„Izolacja brzegowa i dylatacje w instalacji ogrzewania podłogowego”</em> czy <em>„Podgrzewane podjazdy – komfort zimą”</em>.</p>



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



<p class="wp-block-paragraph"><strong>Koszt projektu ogrzewania podłogowego</strong> może się różnić w zależności od wielkości budynku i stopnia skomplikowania instalacji. Na stronie <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/</a> <strong>znajdziesz projekt ogrzewania podłogowego od 350 zł</strong>, co czyni ofertę bardzo konkurencyjną. Dodatkowo, możliwość <strong>zwrotu kaucji</strong> za projekt przy zakupie materiałów stanowi duże udogodnienie dla inwestorów.</p>



<p class="wp-block-paragraph">Jeśli planujesz instalację ogrzewania podłogowego, zainwestuj w profesjonalny projekt, aby mieć pewność, że Twój system będzie efektywny, trwały i dostosowany do indywidualnych potrzeb.</p>



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