<?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 Technologie budowlane - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/category/technologie-budowlane/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/category/technologie-budowlane/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Thu, 21 May 2026 19:09:17 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa Technologie budowlane - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/category/technologie-budowlane/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Frezowanie ogrzewania podłogowego w starym domu.</title>
		<link>https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Tue, 07 Apr 2026 09:03:02 +0000</pubDate>
				<category><![CDATA[Budowa i remont]]></category>
		<category><![CDATA[Budowa i remonty]]></category>
		<category><![CDATA[Frezowanie posadzki]]></category>
		<category><![CDATA[Modernizacja instalacji]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Porady budowlane]]></category>
		<category><![CDATA[Porady dla domu]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Porady inwestycyjne]]></category>
		<category><![CDATA[Remont]]></category>
		<category><![CDATA[Remont domu]]></category>
		<category><![CDATA[Remont i modernizacja]]></category>
		<category><![CDATA[Remont starego domu]]></category>
		<category><![CDATA[Technologia budowlana]]></category>
		<category><![CDATA[Technologia w budownictwie]]></category>
		<category><![CDATA[Technologie budowlane]]></category>
		<category><![CDATA[bezpyłowe frezowanie]]></category>
		<category><![CDATA[frezowanie betonu]]></category>
		<category><![CDATA[frezowanie podłogówki]]></category>
		<category><![CDATA[instalacja grzewcza]]></category>
		<category><![CDATA[koszty frezowania]]></category>
		<category><![CDATA[modernizacja ogrzewania]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[podłogówka w starym domu]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[remont]]></category>
		<category><![CDATA[remont starego domu]]></category>
		<category><![CDATA[stara wylewka]]></category>
		<category><![CDATA[system suchy]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=4152</guid>

					<description><![CDATA[<p>Remont starego budynku często wiąże się z trudnymi decyzjami, a jedną z najważniejszych jest wybór odpowiedniego systemu grzewczego. Wiele osób marzy o komfortowej, ciepłej podłodze, jednak przeraża je wizja skuwania starych wylewek, wywożenia ton gruzu i drastycznego podnoszenia poziomu posadzki, co niesie za sobą konieczność przerabiania progów czy skracania drzwi. Na szczęście istnieje nowoczesna, znacznie mniej inwazyjna alternatywa. Frezowanie ogrzewania podłogowego w starym domu to innowacyjna metoda, która pozwala ukryć rury grzewcze bezpośrednio w istniejącym już betonie. W tym obszernym poradniku przyjrzymy się z bliska, jak krok po kroku przebiega ten proces. Sprawdzimy, z jakimi realnymi kosztami musisz się liczyć, czy prace faktycznie przebiegają bezpyłowo oraz w jakich sytuacjach ta technologia sprawdzi się najlepiej.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/">Frezowanie ogrzewania podłogowego w starym domu.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #082f49; /* Głęboki granat */
    --rk-intro-brand: #06b6d4; /* Techniczny cyjan */
    --rk-intro-brand-light: #cffafe;
    --rk-intro-accent: #f43f5e; /* Róż/Czerwień do pokazania "starego" */
    --rk-intro-bg: #f8fafc;
    --rk-intro-card: #ffffff;
    --rk-intro-text: #334155;
    --rk-intro-border: #e2e8f0;
}

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

/* Sekcja Wprowadzająca (Header & Text) */
.rk-intro-header {
    background: linear-gradient(145deg, var(--rk-intro-dark) 0%, #0f172a 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
}

.rk-intro-header::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: linear-gradient(90deg, var(--rk-intro-brand) 0%, #3b82f6 100%);
}

.rk-intro-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(6, 182, 212, 0.2);
    color: #22d3ee;
    padding: 6px 16px;
    border-radius: 99px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 25px;
    border: 1px solid rgba(34, 211, 238, 0.3);
}

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

.rk-intro-paragraph {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
}

.rk-intro-paragraph strong {
    color: #ffffff;
    font-weight: 700;
}

.rk-intro-link {
    color: var(--rk-intro-brand);
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-intro-brand);
    transition: all 0.3s;
}

.rk-intro-link:hover {
    color: #67e8f9;
    border-bottom-style: solid;
}

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

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

.rk-sim-btn {
    flex: 1;
    max-width: 250px;
    padding: 16px 20px;
    border: 2px solid var(--rk-intro-border);
    background: #ffffff;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-intro-text);
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.rk-sim-btn:hover {
    border-color: #cbd5e1;
    background: #f1f5f9;
}

.rk-sim-btn.active[data-mode="old"] {
    border-color: var(--rk-intro-accent);
    background: #fff1f2;
    color: #9f1239;
    box-shadow: 0 10px 20px -5px rgba(244, 63, 94, 0.15);
}

.rk-sim-btn.active[data-mode="new"] {
    border-color: var(--rk-intro-brand);
    background: var(--rk-intro-brand-light);
    color: var(--rk-intro-dark);
    box-shadow: 0 10px 20px -5px rgba(6, 182, 212, 0.2);
}

/* Ekran Symulatora (Grid: Lewo animacja, Prawo parametry) */
.rk-sim-screen {
    display: grid;
    grid-template-columns: 200px 1fr;
    gap: 30px;
    background: #ffffff;
    border: 1px solid var(--rk-intro-border);
    border-radius: 16px;
    padding: 30px;
    box-shadow: 0 5px 15px rgba(0,0,0,0.02);
}

/* Część wizualna (SVG) */
.rk-sim-visual {
    background: var(--rk-intro-dark);
    border-radius: 12px;
    padding: 15px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
    height: 100%;
    min-height: 180px;
}

.rk-svg-layer {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    transition: opacity 0.4s ease, transform 0.4s ease;
}

.rk-svg-layer.hidden {
    opacity: 0;
    pointer-events: none;
    transform: scale(0.95);
}

/* Animacje SVG - Kucie (Old) */
.anim-shake { animation: jackhammer 0.1s infinite; transform-origin: bottom center; }
.anim-debris { animation: flyDebris 1s infinite linear; }
@keyframes jackhammer { 0% { transform: translateY(0); } 50% { transform: translateY(-3px); } 100% { transform: translateY(0); } }
@keyframes flyDebris { 0% { transform: translate(0,0) rotate(0deg); opacity: 1; } 100% { transform: translate(30px, -30px) rotate(180deg); opacity: 0; } }

/* Animacje SVG - Frezowanie (New) - NAPRAWIONY SKACZĄCY EFEKT */
.anim-spin { 
    animation: spinBlade 0.8s linear infinite; 
    /* Sztywny matematyczny środek obrotu dla cx=0 cy=0 */
    transform-origin: 0px 0px; 
    transform-box: fill-box;
}
.anim-cut-line { stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 2s ease-out; }
.rk-sim-btn.active[data-mode="new"] ~ .rk-sim-screen .anim-cut-line { stroke-dashoffset: 0; }
@keyframes spinBlade { 
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); } 
}

/* Część z parametrami (Grid) */
.rk-param-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.rk-param-box {
    background: var(--rk-intro-bg);
    padding: 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-intro-border);
    transition: all 0.3s;
}

.rk-param-label {
    font-size: 13px;
    color: #64748b;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 8px;
}

.rk-param-value {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-intro-dark);
    display: flex;
    align-items: baseline;
    gap: 5px;
}

.rk-param-value.alert { color: var(--rk-intro-accent); }
.rk-param-value.success { color: var(--rk-intro-brand); }

/* Opisy pod kafelkami */
.rk-sim-desc {
    grid-column: 1 / -1;
    font-size: 14px;
    color: var(--rk-intro-text);
    line-height: 1.6;
    margin-top: 10px;
    padding-top: 20px;
    border-top: 1px solid var(--rk-intro-border);
}

@media (max-width: 768px) {
    .rk-intro-header, .rk-intro-interactive { padding: 30px 25px; }
    .rk-sim-controls { flex-direction: column; }
    .rk-sim-btn { max-width: 100%; }
    .rk-sim-screen { grid-template-columns: 1fr; }
    .rk-sim-visual { min-height: 150px; }
    .rk-param-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-intro-title { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/"
    },
    "headline": "Frezowanie ogrzewania podłogowego – Bezpyłowa technologia modernizacji",
    "description": "Przełom w inżynierii instalacyjnej. Technologia wycinania kanałów pod rury grzewcze eliminuje potrzebę skuwania wylewek i radykalnie zmniejsza bezwładność cieplną.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.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-17",
    "dateModified": "2026-05-17"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#dataset-tech-compare",
    "name": "Analiza porównawcza: Frezowanie vs Kucie starej wylewki",
    "description": "Zestawienie parametrów operacyjnych i czasowych dla procesu modernizacji systemu grzewczego na układ niskotemperaturowy.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "frezowanie ogrzewania podłogowego",
      "podłogówka bez kucia jastrychu",
      "redukcja bezwładności cieplnej",
      "bezpyłowa technologia grzewcza",
      "modernizacja pod pompę ciepła"
    ],
    "measurementTechnique": "Analiza czasowo-kosztowa i termiczna na podstawie realizacji instalatorskich.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Metoda tradycyjna: Wymaga skuwania, generuje gruz, czas nagrzewania ok. 4 godzin.",
        "Metoda bezpyłowa (frezowanie): Brak gruzu, rury w nacięciach, czas nagrzewania poniżej 45 minut."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#webapp-simulator",
    "name": "Symulator Modernizacji Podłogi",
    "description": "Narzędzie pozwalające przełączać i porównywać inżynierskie parametry kucia starej wylewki z innowacyjną technologią frezowania diamentowego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container" id="rk-tech-compare-app">
    <div class="rk-intro-header">
        <div class="rk-intro-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 20V10"></path><path d="M18 20V4"></path><path d="M6 20v-4"></path></svg>
            Technologia
        </div>
        <h2 class="rk-intro-title">Frezowanie ogrzewania podłogowego w starym domu</h2>
        <p class="rk-intro-paragraph">
            To <strong>bezpyłowa technologia modernizacji instalacji grzewczej</strong>, polegająca na wycinaniu kanałów montażowych bezpośrednio w istniejącym podłożu betonowym lub anhydrytowym w celu ułożenia rur grzewczych bez podnoszenia poziomu podłogi. 
        </p>
        <p class="rk-intro-paragraph" style="margin-top: 15px;">
            Metoda ta pozwala na <a href="https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/" class="rk-intro-link">eliminację tradycyjnych grzejników wysokotemperaturowych</a> w budynkach poddawanych termomodernizacji, umożliwiając efektywną współpracę z pompami ciepła. Rozwiązanie to drastycznie skraca czas remontu, <strong>redukuje bezwładność cieplną układu</strong> i eliminuje konieczność kłopotliwego skuwania starych wylewek, co stanowi przełom w inżynierii instalacyjnej dla obiektów poddawanych remontom kapitalnym.
        </p>
    </div>

    <div class="rk-intro-interactive">
        <div class="rk-sim-controls">
            <button class="rk-sim-btn" data-mode="old" onclick="rkSwitchTech('old')">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
                Tradycyjne Kucie
            </button>
            <button class="rk-sim-btn active" data-mode="new" onclick="rkSwitchTech('new')">
                <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>
                Frezowanie Bezpyłowe
            </button>
        </div>

        <div class="rk-sim-screen">
            <div class="rk-sim-visual">
                <svg id="rk-svg-old" class="rk-svg-layer hidden" viewBox="0 0 100 100">
                    <rect x="10" y="70" width="80" height="20" fill="#475569" rx="2"/>
                    <path d="M 30 70 L 40 90 M 50 70 L 60 90 M 70 70 L 55 90" stroke="#1e293b" stroke-width="3" stroke-linecap="round"/>
                    <g class="anim-shake">
                        <path d="M 45 30 L 55 30 L 52 70 L 48 70 Z" fill="#94a3b8"/>
                        <rect x="40" y="20" width="20" height="10" fill="#f43f5e" rx="2"/>
                        <rect x="35" y="10" width="30" height="10" fill="#334155" rx="2"/>
                    </g>
                    <circle class="anim-debris" cx="50" cy="70" r="3" fill="#cbd5e1"/>
                    <circle class="anim-debris" cx="55" cy="70" r="2" fill="#cbd5e1" style="animation-delay: 0.2s;"/>
                    <circle class="anim-debris" cx="45" cy="70" r="4" fill="#64748b" style="animation-delay: 0.4s;"/>
                </svg>

                <svg id="rk-svg-new" class="rk-svg-layer" viewBox="0 0 100 100">
                    <rect x="10" y="70" width="80" height="20" fill="#cbd5e1" rx="2"/>
                    <path class="anim-cut-line" d="M 10 70 L 90 70" fill="none" stroke="#f8fafc" stroke-width="8" stroke-linecap="square"/>
                    <path class="anim-cut-line" d="M 10 75 L 90 75" fill="none" stroke="#06b6d4" stroke-width="4" stroke-linecap="square" style="transition-delay: 0.2s;"/>
                    
                    <g transform="translate(50, 60)">
                        <g class="anim-spin">
                            <circle cx="0" cy="0" r="25" fill="none" stroke="#06b6d4" stroke-width="6" stroke-dasharray="15.7 15.7"/>
                            <circle cx="0" cy="0" r="8" fill="#082f49"/>
                            <circle cx="0" cy="0" r="3" fill="#ffffff"/>
                        </g>
                        <path d="M -35 0 C -35 -25 -15 -35 0 -35 L 0 -10 Z" fill="#334155" opacity="0.9"/>
                        <rect x="-35" y="-60" width="12" height="40" fill="#475569" rx="2"/>
                    </g>
                </svg>
            </div>

            <div class="rk-param-data">
                <div class="rk-param-grid" id="rk-data-old" style="display: none;">
                    <div class="rk-param-box">
                        <div class="rk-param-label">Gruz i Pył</div>
                        <div class="rk-param-value alert">~150 kg/m²</div>
                    </div>
                    <div class="rk-param-box">
                        <div class="rk-param-label">Bezwładność po wylaniu</div>
                        <div class="rk-param-value alert">> 4 godziny</div>
                    </div>
                    <div class="rk-param-box">
                        <div class="rk-param-label">Wysokość posadzki</div>
                        <div class="rk-param-value alert">+ 65 mm</div>
                    </div>
                    <div class="rk-param-box">
                        <div class="rk-param-label">Ryzyko inwestycyjne</div>
                        <div class="rk-param-value alert">Wysokie</div>
                    </div>
                    <div class="rk-sim-desc">
                        Decyzja o <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-remontowanym-budynku-czy-warto/" class="rk-intro-link">rozkuwaniu starych wylewek</a> wiąże się z ogromnym nakładem pracy, potężną ilością gruzu i często nieoczekiwanymi kosztami po zerwaniu podłoża (np. uszkodzeniem rur kanalizacyjnych).
                    </div>
                </div>

                <div class="rk-param-grid" id="rk-data-new">
                    <div class="rk-param-box">
                        <div class="rk-param-label">Gruz i Pył</div>
                        <div class="rk-param-value success">Brak (Odciąg)</div>
                    </div>
                    <div class="rk-param-box">
                        <div class="rk-param-label">Czas stabilizacji ciepła</div>
                        <div class="rk-param-value success">< 45 minut</div>
                    </div>
                    <div class="rk-param-box">
                        <div class="rk-param-label">Podniesienie podłogi</div>
                        <div class="rk-param-value success">0 mm</div>
                    </div>
                    <div class="rk-param-box">
                        <div class="rk-param-label">Wydajność dla Pompy Ciepła</div>
                        <div class="rk-param-value success">Maksymalna</div>
                    </div>
                    <div class="rk-sim-desc">
                        Kanały nacinane są tarczą diamentową z odsysaniem urobku. Cienkowarstwowe przykrycie rury (<a href="https://projekt-ogrzewania.pl/ile-czasu-nagrzewa-sie-podlogowka/" class="rk-intro-link">drastyczny spadek bezwładności</a>) sprawia, że podłoga reaguje na sygnał z termostatu błyskawicznie, jak w systemach lekkich suchych.
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
// 1. Zabezpieczenie przed kradzieżą (bez H2/H3 w alercie)
document.addEventListener('DOMContentLoaded', function() {
    var loc = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (allowedDomains.indexOf(loc) === -1) {
        var wrap = document.getElementById('rk-tech-compare-app');
        if (wrap) {
            wrap.innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#f43f5e; border-radius:20px; border: 2px solid #f43f5e; font-weight:800; font-family:sans-serif;">Wykryto naruszenie licencji. Kod udostępniony wyłącznie dla domeny projekt-ogrzewania.pl.</div>';
        }
    }
});

// 2. Logika przełączania symulatora
function rkSwitchTech(mode) {
    // Buttons
    var btns = document.querySelectorAll('.rk-sim-btn');
    btns.forEach(function(btn) { btn.classList.remove('active'); });
    document.querySelector('.rk-sim-btn[data-mode="' + mode + '"]').classList.add('active');

    // SVG
    document.getElementById('rk-svg-old').classList.add('hidden');
    document.getElementById('rk-svg-new').classList.add('hidden');
    
    // Data Grids
    document.getElementById('rk-data-old').style.display = 'none';
    document.getElementById('rk-data-new').style.display = 'none';

    // Activate selected
    if (mode === 'old') {
        document.getElementById('rk-svg-old').classList.remove('hidden');
        document.getElementById('rk-data-old').style.display = 'grid';
    } else {
        // Mały delay na reset animacji rysowania rury (stroke-dashoffset)
        var newSvg = document.getElementById('rk-svg-new');
        newSvg.classList.remove('hidden');
        var line = newSvg.querySelector('.anim-cut-line');
        if(line) {
            line.style.transition = 'none';
            line.style.strokeDashoffset = '100';
            setTimeout(function() {
                line.style.transition = 'stroke-dashoffset 2s ease-out';
                line.style.strokeDashoffset = '0';
            }, 50);
        }
        document.getElementById('rk-data-new').style.display = 'grid';
    }
}
</script>



<style>
:root {
    --rk-diag-dark: #111827;
    --rk-diag-card: #ffffff;
    --rk-diag-brand: #3b82f6; /* Inżynierski niebieski */
    --rk-diag-success: #10b981; /* Bezpieczna wylewka */
    --rk-diag-warning: #f59e0b; /* Wylewka na styk */
    --rk-diag-danger: #ef4444; /* Krytycznie cienka */
    --rk-diag-bg: #f3f4f6;
    --rk-diag-text: #374151;
    --rk-diag-border: #e5e7eb;
}

.rk-diag-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-diag-card);
    border-radius: 20px;
    box-shadow: 0 15px 35px -5px rgba(17, 24, 39, 0.1);
    border: 1px solid rgba(59, 130, 246, 0.2);
    overflow: hidden;
}

/* Sekcja Nagłówkowa */
.rk-diag-header {
    background: var(--rk-diag-dark);
    background-image: radial-gradient(circle at top right, #1f2937 0%, transparent 50%);
    padding: 40px 50px 30px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-diag-brand);
}

.rk-diag-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: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 20px;
    border: 1px solid rgba(147, 197, 253, 0.2);
}

.rk-diag-title {
    font-size: 26px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 15px 0;
}

.rk-diag-title span { color: var(--rk-diag-brand); }

.rk-diag-intro {
    font-size: 15px;
    line-height: 1.8;
    color: #9ca3af;
    margin: 0;
}

.rk-diag-intro strong {
    color: #f3f4f6;
    font-weight: 700;
}

.rk-diag-link {
    color: #60a5fa;
    text-decoration: none;
    border-bottom: 1px dashed #60a5fa;
    transition: all 0.3s;
}

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

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

.rk-diag-sim-wrapper {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: 30px;
    background: #ffffff;
    border: 1px solid var(--rk-diag-border);
    border-radius: 16px;
    padding: 30px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);
}

/* SVG Wizualizacja */
.rk-diag-visual {
    background: #f8fafc;
    border-radius: 12px;
    padding: 20px;
    border: 2px dashed #cbd5e1;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 220px;
    overflow: hidden;
}

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

/* Elementy SVG z CSS Transitions */
.svg-screed-bottom { transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1); }
.svg-crack { opacity: 0; transition: opacity 0.3s; stroke-dasharray: 50; stroke-dashoffset: 50; }
.svg-blade { animation: spinBladeDiag 1s linear infinite; transform-origin: 50px 30px; transform-box: fill-box; }
.svg-measure-text { font-family: monospace; font-weight: bold; font-size: 12px; transition: fill 0.3s; }
.svg-measure-line { transition: stroke 0.3s; }

@keyframes spinBladeDiag { to { transform: rotate(360deg); } }
@keyframes drawCrack { to { stroke-dashoffset: 0; } }

/* Stany Symulatora (Kontrolowane przez klasę rodzica) */
/* 1. Danger (< 30mm) */
#rk-sim-core.state-danger .svg-screed-bottom { transform: translateY(-20px); }
#rk-sim-core.state-danger .svg-crack { opacity: 1; animation: drawCrack 0.5s 0.6s forwards; }
#rk-sim-core.state-danger .svg-measure-text { fill: var(--rk-diag-danger); }
#rk-sim-core.state-danger .svg-measure-line { stroke: var(--rk-diag-danger); }
#rk-sim-core.state-danger .rk-diag-visual { border-color: var(--rk-diag-danger); background: #fef2f2; }

/* 2. Warning (35mm) */
#rk-sim-core.state-warning .svg-screed-bottom { transform: translateY(-10px); }
#rk-sim-core.state-warning .svg-measure-text { fill: var(--rk-diag-warning); }
#rk-sim-core.state-warning .svg-measure-line { stroke: var(--rk-diag-warning); }
#rk-sim-core.state-warning .rk-diag-visual { border-color: var(--rk-diag-warning); background: #fffbeb; }

/* 3. Success (> 50mm) */
#rk-sim-core.state-success .svg-screed-bottom { transform: translateY(10px); }
#rk-sim-core.state-success .svg-measure-text { fill: var(--rk-diag-success); }
#rk-sim-core.state-success .svg-measure-line { stroke: var(--rk-diag-success); }
#rk-sim-core.state-success .rk-diag-visual { border-color: var(--rk-diag-success); background: #ecfdf5; }

/* Panel Kontrolny */
.rk-diag-controls {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

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

.rk-diag-btn:hover { background: #f8fafc; border-color: #cbd5e1; }

.rk-diag-btn.active[data-state="danger"] { border-color: var(--rk-diag-danger); background: #fef2f2; color: #991b1b; }
.rk-diag-btn.active[data-state="warning"] { border-color: var(--rk-diag-warning); background: #fffbeb; color: #92400e; }
.rk-diag-btn.active[data-state="success"] { border-color: var(--rk-diag-success); background: #ecfdf5; color: #065f46; }

.rk-sim-feedback {
    margin-top: 15px;
    padding: 15px;
    border-radius: 8px;
    font-size: 13px;
    line-height: 1.6;
    display: none;
}

#rk-sim-core.state-danger .feedback-danger { display: block; background: #fee2e2; color: #991b1b; border-left: 4px solid var(--rk-diag-danger); }
#rk-sim-core.state-warning .feedback-warning { display: block; background: #fef3c7; color: #92400e; border-left: 4px solid var(--rk-diag-warning); }
#rk-sim-core.state-success .feedback-success { display: block; background: #d1fae5; color: #065f46; border-left: 4px solid var(--rk-diag-success); }

/* Kafelki Informacyjne */
.rk-diag-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    padding: 0 50px 40px;
}

.rk-diag-box {
    background: #ffffff;
    border: 1px solid var(--rk-diag-border);
    padding: 25px;
    border-radius: 16px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-diag-box h4 {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-diag-dark);
    margin: 0 0 12px 0;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-diag-box h4 svg { color: var(--rk-diag-brand); }
.rk-diag-box p { font-size: 13px; line-height: 1.6; color: #4b5563; margin: 0; }

@media (max-width: 768px) {
    .rk-diag-header, .rk-diag-interactive { padding: 30px 20px; }
    .rk-diag-sim-wrapper { grid-template-columns: 1fr; padding: 20px; }
    .rk-diag-grid { grid-template-columns: 1fr; padding: 0 20px 30px; gap: 15px; }
    .rk-diag-visual { min-height: 180px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#article-wylewka-test",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/"
    },
    "headline": "Czy istniejąca wylewka nadaje się pod frezowanie? Wymagania techniczne",
    "description": "Poznaj inżynieryjne wytyczne dotyczące grubości (min. 35 mm) i klasy betonu (C12/15) dla bezpiecznego frezowania podłogówki w starym domu.",
    "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-17",
    "dateModified": "2026-05-17"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#dataset-nośność",
    "name": "Wymagania nośności i geometrii jastrychu dla frezowania (PN-EN 13813)",
    "description": "Parametry graniczne określające przydatność istniejącej wylewki betonowej i anhydrytowej pod instalacje płaszczyznowe w technologii bezpyłowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "minimalna grubość wylewki pod frezowanie",
      "klasa betonu c12/15 pn-en 13813",
      "badanie sklerometryczne młotkiem schmidta",
      "nośność jastrychu frezowanego",
      "odkrywki kontrolne wylewki"
    ],
    "measurementTechnique": "Analiza sklerometryczna wytrzymałości betonu (klasa C12/15) oraz punktowe pomiary geometryczne w celu zagwarantowania 15 mm nienaruszonej warstwy monolitycznej pod wyfrezowanym kanałem.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Grubość krytyczna: Poniżej 30 mm bezwzględny zakaz frezowania.",
        "Grubość normatywna: 35 mm całkowitej grubości, zapewniająca 15 mm buforu bezpieczeństwa nad warstwą chudego betonu lub styropianu."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#webapp-screed-test",
    "name": "Symulator Przekroju i Nośności Wylewki",
    "description": "Interaktywne narzędzie edukacyjne obrazujące ryzyko uszkodzenia i pękania jastrychu w zależności od wyjściowej grubości podłoża podczas cięcia na głębokość 20 mm.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-diag-container" id="rk-screed-check-app">
    <div class="rk-diag-header">
        <div class="rk-diag-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
            Analiza Podłoża
        </div>
        <h2 class="rk-diag-title">Czy istniejąca wylewka nadaje się pod frezowanie?</h2>
        <p class="rk-diag-intro">
            W starym budownictwie wylewka nadaje się pod frezowanie, pod warunkiem że jej <a href="https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/" class="rk-diag-link">całkowita grubość wynosi minimum 35 mm</a>, a wytrzymałość na ściskanie odpowiada klasie co najmniej <strong>C12/15 (norma PN-EN 13813)</strong>. Kanały pod rury nacinane są zazwyczaj na 20–22 mm, więc pod dnem musi zostać <strong>minimum 15 mm nienaruszonej warstwy</strong>, by zapobiec pękaniu.
        </p>
    </div>

    <div class="rk-diag-interactive">
        <div id="rk-sim-core" class="rk-diag-sim-wrapper state-success">
            <div class="rk-diag-visual">
                <svg class="rk-diag-svg" viewBox="0 0 100 100">
                    <rect x="10" y="80" width="80" height="20" fill="#d1d5db"/>
                    <path d="M 10 80 L 90 80" stroke="#9ca3af" stroke-width="2" stroke-dasharray="2 2"/>
                    
                    <g class="svg-screed-bottom">
                        <rect x="10" y="30" width="80" height="50" fill="#e5e7eb"/>
                        <path d="M 10 30 L 90 30" stroke="#cbd5e1" stroke-width="2"/>
                        <path d="M 40 30 L 40 50 L 60 50 L 60 30" fill="#f8fafc" stroke="#cbd5e1" stroke-width="2"/>
                        
                        <path class="svg-crack" d="M 42 50 L 38 65 L 45 80 M 58 50 L 62 60 L 55 80" fill="none" stroke="#ef4444" stroke-width="2" stroke-linecap="round"/>
                        
                        <line class="svg-measure-line" x1="65" y1="50" x2="65" y2="80" stroke="#10b981" stroke-width="2" stroke-dasharray="2 2"/>
                        <text class="svg-measure-text" x="70" y="68" fill="#10b981">BUFOR</text>
                    </g>
                    
                    <rect x="10" y="28" width="80" height="2" fill="#9ca3af"/>
                    
                    <g class="svg-blade">
                        <circle cx="50" cy="30" r="18" fill="none" stroke="#374151" stroke-width="4" stroke-dasharray="10 4"/>
                        <circle cx="50" cy="30" r="4" fill="#374151"/>
                    </g>
                </svg>
            </div>

            <div class="rk-diag-controls">
                <h3 style="margin: 0 0 10px; font-size: 15px; color: var(--rk-diag-dark);">Symulacja cięcia (głębokość 20 mm)</h3>
                
                <button class="rk-diag-btn active" data-state="success" onclick="rkSetThickness('success')">
                    Grubość 50+ mm (Optymalna) <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="20 6 9 17 4 12"></polyline></svg>
                </button>
                <button class="rk-diag-btn" data-state="warning" onclick="rkSetThickness('warning')">
                    Grubość ~35 mm (Minimum) <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                </button>
                <button class="rk-diag-btn" data-state="danger" onclick="rkSetThickness('danger')">
                    Grubość < 30 mm (Krucha) <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
                </button>

                <div class="rk-sim-feedback feedback-success">
                    <strong>Bezpieczny zapas!</strong> Ostrze diamentowe swobodnie nacina beton. Pozostała warstwa (bufor) w pełni chroni ułożoną rurę i zapewnia nośność stropu.
                </div>
                <div class="rk-sim-feedback feedback-warning">
                    <strong>Wymaga ostrożności.</strong> Pozostaje minimalny bufor 15 mm. Należy bezwzględnie sprawdzić, czy pod wylewką nie ma pustek lub luźnego piasku.
                </div>
                <div class="rk-sim-feedback feedback-danger">
                    <strong>Ryzyko zniszczenia!</strong> Frezarka przebija wylewkę na wylot lub uszkadza folię. Brak bufora nośnego powoduje zapadanie się rur i łamanie jastrychu pod ciężarem mebli.
                </div>
            </div>
        </div>
    </div>

    <div class="rk-diag-grid">
        <div class="rk-diag-box">
            <h4><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="2" width="20" height="20" rx="2" ry="2"></rect><line x1="8" y1="2" x2="8" y2="22"></line><line x1="16" y1="2" x2="16" y2="22"></line></svg> Młotek Schmidta</h4>
            <p>
                Weryfikacja przydatności podłoża powinna być przeprowadzona za pomocą sklerometru. Rozwarstwiony lub kruchy jastrych dyskwalifikuje obiekt z frezowania do czasu iniekcji żywicami.
            </p>
        </div>
        <div class="rk-diag-box">
            <h4><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><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> Odkrywki kontrolne</h4>
            <p>
                Starsze budynki mają nierówną grubość posadzek. Odkrywki należy wykonywać w strefach brzegowych i środkowych. Natrafienie maszyny na piasek powoduje wstrzymanie prac.
            </p>
        </div>
        <div class="rk-diag-box">
            <h4><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg> Zbrojenie Teriva</h4>
            <p>
                Nacięcie cienkiej siatki przeciwskurczowej (do 3 mm) nie jest destrukcyjne. Jednak <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/" style="color:var(--rk-diag-brand); font-weight:700;">błędem wykonawczym</a> jest cięcie prętów konstrukcyjnych w stropach gęstożebrowych.
            </p>
        </div>
    </div>
</div>

<script>
// 1. Zabezpieczenie na poziomie domeny (Bez elementów H2/H3 w Alercie)
document.addEventListener('DOMContentLoaded', function() {
    var h = window.location.hostname;
    var a = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (a.indexOf(h) === -1) {
        var box = document.getElementById('rk-screed-check-app');
        if (box) {
            box.innerHTML = '<div style="padding:40px; text-align:center; background:#111827; color:#ef4444; border-radius:20px; border:2px solid #ef4444; font-family:sans-serif;"><strong>Błąd weryfikacji.</strong> Skrypt symulatora przypisany jest wyłącznie do autoryzowanej domeny projekt-ogrzewania.pl.</div>';
        }
    }
});

// 2. Logika przełączania symulatora
function rkSetThickness(stateClass) {
    var core = document.getElementById('rk-sim-core');
    
    // Reset klas głównych
    core.classList.remove('state-success', 'state-warning', 'state-danger');
    
    // Dodaj nową klasę do wrappera (steruje to całym CSSem, SVG i komunikatami)
    core.classList.add('state-' + stateClass);

    // Zmiana aktywnych przycisków
    var btns = document.querySelectorAll('.rk-diag-btn');
    btns.forEach(function(btn) { btn.classList.remove('active'); });
    document.querySelector('.rk-diag-btn[data-state="' + stateClass + '"]').classList.add('active');
}
</script>



<style>
:root {
    --rk-price-dark: #064e3b; /* Głęboka zieleń budżetowa */
    --rk-price-brand: #10b981; /* Szmaragd */
    --rk-price-accent: #b45309; /* Ciepłe złoto / miedź instalacyjna */
    --rk-price-bg: #f8fafc;
    --rk-price-card: #ffffff;
    --rk-price-text: #334155;
    --rk-price-border: #e2e8f0;
}

.rk-price-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-price-card);
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(6, 78, 59, 0.15);
    border: 1px solid rgba(16, 185, 129, 0.2);
    overflow: hidden;
}

/* Nagłówek sekcji */
.rk-price-header {
    background: linear-gradient(135deg, var(--rk-price-dark) 0%, #022c22 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
}

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

.rk-price-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(16, 185, 129, 0.2);
    color: #a7f3d0;
    padding: 6px 16px;
    border-radius: 99px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 25px;
    border: 1px solid rgba(167, 243, 208, 0.3);
}

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

.rk-price-intro {
    font-size: 16px;
    line-height: 1.8;
    color: #d1fae5;
    margin: 0;
}

.rk-price-intro strong {
    color: #ffffff;
}

.rk-price-link {
    color: #34d399;
    text-decoration: none;
    border-bottom: 1px dashed #34d399;
    transition: all 0.3s;
}

.rk-price-link:hover {
    color: #6ee7b7;
    border-bottom-style: solid;
}

/* Część Interaktywna - Suwak i Kalkulator */
.rk-price-interactive {
    padding: 40px 50px;
    background: var(--rk-price-bg);
}

.rk-calc-box {
    background: #ffffff;
    border: 1px solid var(--rk-price-border);
    border-radius: 16px;
    padding: 30px;
    margin-bottom: 30px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-slider-group {
    margin-bottom: 35px;
}

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

.rk-slider-label span {
    font-size: 24px;
    color: var(--rk-price-accent);
}

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

.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-price-brand);
    cursor: pointer;
    border: 2px solid #ffffff;
    box-shadow: 0 2px 6px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}

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

/* Grid Wyników */
.rk-cost-display-grid {
    display: grid;
    grid-template-columns: 220px 1fr;
    gap: 30px;
    align-items: center;
}

/* SVG Wykres pierścieniowy dynamiczny */
.rk-cost-visual-box {
    position: relative;
    width: 100%;
    height: 220px;
    background: #0f172a;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-chart-svg {
    width: 100%;
    height: 100%;
    max-width: 180px;
}

.rk-chart-circle-bg { fill: none; stroke: #334155; stroke-width: 8; }
.rk-chart-circle-value {
    fill: none;
    stroke: var(--rk-price-brand);
    stroke-width: 8;
    stroke-linecap: round;
    stroke-dasharray: 251.2;
    stroke-dashoffset: 251.2;
    transform: rotate(-90deg);
    transform-origin: center;
    transition: stroke-dashoffset 0.5s ease-out;
}

.rk-chart-center-text {
    position: absolute;
    text-align: center;
    color: #ffffff;
}

.rk-chart-total { font-size: 20px; font-weight: 900; color: #34d399; }
.rk-chart-lbl { font-size: 11px; color: #94a3b8; text-transform: uppercase; }

/* Kafelki składowe kosztów */
.rk-breakdown-list {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-breakdown-item {
    background: var(--rk-price-bg);
    border: 1px solid var(--rk-price-border);
    padding: 15px 20px;
    border-radius: 10px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.rk-item-title { font-size: 13px; color: var(--rk-price-text); font-weight: 600; }
.rk-item-value { font-size: 15px; color: var(--rk-price-dark); font-weight: 800; }

/* Porównanie metod na dole na mobile jedna pod drugą */
.rk-compare-box {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.rk-compare-card {
    background: #ffffff;
    border: 1px solid var(--rk-price-border);
    border-radius: 12px;
    padding: 25px;
    position: relative;
}

.rk-compare-card.pro-method { border-left: 4px solid var(--rk-price-brand); }
.rk-compare-card.old-method { border-left: 4px solid #ef4444; }

.rk-comp-h { font-size: 16px; font-weight: 800; color: var(--rk-price-dark); margin: 0 0 10px 0; }
.rk-comp-p { font-size: 13px; line-height: 1.6; color: #64748b; margin: 0; }

@media (max-width: 768px) {
    .rk-price-header, .rk-price-interactive { padding: 30px 25px; }
    .rk-cost-display-grid { grid-template-columns: 1fr; }
    .rk-breakdown-list { grid-template-columns: 1fr; }
    .rk-compare-box { grid-template-columns: 1fr; gap: 15px; }
    .rk-price-title { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#article-koszty",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/"
    },
    "headline": "Koszty frezowania ogrzewania podłogowego w starym domu – Cennik 2026",
    "description": "Szczegółowa analiza budżetowa modernizacji instalacji. Sprawdź cennik robocizny, materiałów (PEX 14mm) oraz mas cementowych C2TE dla powierzchni 100 m².",
    "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-17",
    "dateModified": "2026-05-17"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#dataset-koszty",
    "name": "Zestawienie kosztów składowych modernizacji instalacji płaszczyznowej",
    "description": "Dane finansowo-techniczne kosztów robocizny, materiałów instalacyjnych i próby szczelności dla powierzchni bazowej 100 m² netto.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "cena frezowania podłogówki za m²",
      "koszt rury pex pert 14mm",
      "masa polimerowo cementowa c2te cena",
      "próba ciśnieniowa ogrzewania koszt",
      "koszt modernizacji instalacji grzewczej"
    ],
    "measurementTechnique": "Kalkulacja rynkowa nakładów rzeczowo-finansowych na bazie standardów wykonawczych normy PN-EN 1264-4 dla systemów cienkowarstwowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Frezowanie i rury: Szacunkowo od 120 PLN do 180 PLN za m² netto.",
        "Materiały dodatkowe: Wymóg stosowania mas klasy C2TE o wysokiej przewodności cieplnej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#webapp-kalkulator",
    "name": "Dynamiczny Kalkulator Budżetu Frezowania",
    "description": "Narzędzie matematyczne automatycznie obliczające wydatki na bazie metrażu z uwzględnieniem podziału na rury, robociznę, rozdzielacze i masę zalewową.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-price-container" id="rk-cost-analysis-app">
    <div class="rk-price-header">
        <div class="rk-price-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="12" y1="1" x2="12" y2="23"></line><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Analiza Budżetu
        </div>
        <h2 class="rk-price-title">Ile kosztuje frezowanie ogrzewania podłogowego w starym domu za m²?</h2>
        <p class="rk-price-intro">
            Średni koszt wykonania frezowania ogrzewania podłogowego w starym domu wynosi od <strong>120 PLN do 180 PLN za m² netto</strong> za samą usługę nacinania kanałów wraz z dostawą i montażem rury oraz rozdzielacza. Przyjmując kompleksową modernizację powierzchni wynoszącej dokładnie <strong>100 m²</strong>, całkowity budżet inwestycji, uwzględniający chemię montażową, <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/" class="rk-price-link">próby szczelności według normy PN-EN 1264-4</a> oraz podłączenie pętli do szafki rozdzielaczowej, zamyka się w przedziale <strong>16 000 PLN – 22 000 PLN</strong>.
        </p>
    </div>

    <div class="rk-price-interactive">
        <div class="rk-calc-box">
            <div class="rk-slider-group">
                <label class="rk-slider-label">
                    Wybierz powierzchnię modernizacji:
                    <span id="rk-area-val">100 m²</span>
                </label>
                <input type="range" min="30" max="200" value="100" class="rk-range-input" id="rkAreaRange" oninput="rkUpdateCosts(this.value)">
            </div>

            <div class="rk-cost-display-grid">
                <div class="rk-cost-visual-box">
                    <svg class="rk-chart-svg" viewBox="0 0 100 100">
                        <circle class="rk-chart-circle-bg" cx="50" cy="50" r="40"/>
                        <circle class="rk-chart-circle-value" id="rkChartCircle" cx="50" cy="50" r="40"/>
                    </svg>
                    <div class="rk-chart-center-text">
                        <div class="rk-chart-total" id="rk-total-price">19 000 zł</div>
                        <div class="rk-chart-lbl">Suma Netto</div>
                    </div>
                </div>

                <div class="rk-breakdown-list">
                    <div class="rk-breakdown-item">
                        <span class="rk-item-title">Frezowanie linii i łuków</span>
                        <span class="rk-item-value" id="cost-frez">6 000 zł</span>
                    </div>
                    <div class="rk-breakdown-item">
                        <span class="rk-item-title">Rura 5-warstwowa 14x2mm</span>
                        <span class="rk-item-value" id="cost-rura">3 000 zł</span>
                    </div>
                    <div class="rk-breakdown-item">
                        <span class="rk-item-title">Rozdzielacz z rotametrami</span>
                        <span class="rk-item-value" id="cost-rozdz">2 150 zł</span>
                    </div>
                    <div class="rk-breakdown-item">
                        <span class="rk-item-title">Masa naprawcza C2TE</span>
                        <span class="rk-item-value" id="cost-masa">1 850 zł</span>
                    </div>
                    <div class="rk-breakdown-item" style="grid-column: 1 / -1;">
                        <span class="rk-item-title">Montaż i próba wodna (0,6 MPa)</span>
                        <span class="rk-item-value" id="cost-robota">6 000 zł</span>
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-compare-box">
            <div class="rk-compare-card pro-method">
                <h4 class="rk-comp-h">Technologia frezowania jastrychu</h4>
                <p class="rk-comp-p">
                    Wylewka o grubości min. 35 mm z betonu klasy C12/15 pozwala zaoszczędzić około <strong>40% nakładów finansowych</strong>. Czas realizacji skraca się do zaledwie 3 dni roboczych, zachowując nienaruszone poziomy progów i drzwi.
                </p>
            </div>
            <div class="rk-compare-card old-method">
                <h4 class="rk-comp-h">Tradycyjna metoda &#8222;Mokra&#8221;</h4>
                <p class="rk-comp-p">
                    Skuwanie betonu, wywóz ton gruzu, nowy <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/" class="rk-price-link">styropian 100 mm</a> oraz wylewanie nowego jastrychu generuje koszty rzędu 220–310 PLN/m² (bez rur i rozdzielacza) oraz wyłącza dom z użytku na 4 tygodnie.
                </p>
            </div>
        </div>
    </div>
</div>

<script>
// 1. Zabezpieczenie przed nieautoryzowanym użyciem (bez znaczników nagłówkowych)
document.addEventListener('DOMContentLoaded', function() {
    var domainName = window.location.hostname;
    var validDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (validDomains.indexOf(domainName) === -1) {
        var el = document.getElementById('rk-cost-analysis-app');
        if (el) {
            el.innerHTML = '<div style="padding:40px; text-align:center; background:#022c22; color:#ef4444; border-radius:20px; border:2px solid #ef4444; font-family:sans-serif;"><strong>Licencja wygasła.</strong> Ten komponent finansowy jest własnością chronioną serwisu Projekt-Ogrzewania.pl.</div>';
        }
    }
    // Inicjalizacja koła na starcie
    rkUpdateCosts(100);
});

// 2. Logika dynamicznego przeliczania kosztów w czasie rzeczywistym
function rkUpdateCosts(area) {
    area = parseInt(area);
    document.getElementById('rk-area-val').innerText = area + ' m²';

    // Przeliczniki bazowe na bazie tekstu inżynierskiego
    var frez = Math.round(area * 60); 
    var rura = Math.round(area * 30);
    var rozdz = Math.round(1800 + (area * 3.5)); // Skalowanie wielkości rozdzielacza
    var masa = Math.round(area * 18.5);
    var robota = Math.round(area * 37.5 + 2250);

    var total = frez + rura + rozdz + masa + robota;

    // Aktualizacja pól tekstowych
    document.getElementById('cost-frez').innerText = frez.toLocaleString('pl-PL') + ' zł';
    document.getElementById('cost-rura').innerText = rura.toLocaleString('pl-PL') + ' zł';
    document.getElementById('cost-rozdz').innerText = rozdz.toLocaleString('pl-PL') + ' zł';
    document.getElementById('cost-masa').innerText = masa.toLocaleString('pl-PL') + ' zł';
    document.getElementById('cost-robota').innerText = robota.toLocaleString('pl-PL') + ' zł';
    document.getElementById('rk-total-price').innerText = total.toLocaleString('pl-PL') + ' zł';

    // Aktualizacja animacji okręgu SVG (Obwód wynosi 251.2)
    var circle = document.getElementById('rkChartCircle');
    var maxTotal = 40000; // Punkt odniesienia dla 100% obwodu
    var percentage = total / maxTotal;
    if(percentage > 1) percentage = 1;
    var offset = 251.2 - (percentage * 251.2);
    circle.style.strokeDashoffset = offset;
}
</script>



<style>
:root {
    --rk-hydro-dark: #1e1b4b; /* Głębokie indygo */
    --rk-hydro-brand: #3b82f6; /* Wodny błękit */
    --rk-hydro-brand-light: #dbeafe;
    --rk-hydro-accent: #f97316; /* Ostrzegawczy pomarańcz */
    --rk-hydro-success: #10b981; /* Szmaragd */
    --rk-hydro-bg: #f8fafc;
    --rk-hydro-card: #ffffff;
    --rk-hydro-text: #334155;
    --rk-hydro-border: #e2e8f0;
}

.rk-hydro-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-hydro-card);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(30, 27, 75, 0.15);
    border: 1px solid rgba(59, 130, 246, 0.2);
    overflow: hidden;
}

/* Nagłówek */
.rk-hydro-header {
    background: linear-gradient(135deg, var(--rk-hydro-dark) 0%, #312e81 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-hydro-brand);
}

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

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

.rk-hydro-title span { color: #60a5fa; }

.rk-hydro-intro {
    font-size: 15px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0 0 15px 0;
}

.rk-hydro-link {
    color: #93c5fd;
    text-decoration: none;
    border-bottom: 1px dashed #93c5fd;
    transition: color 0.3s, border-color 0.3s;
}

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

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

.rk-hydro-sim-layout {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 30px;
    background: #ffffff;
    border: 1px solid var(--rk-hydro-border);
    border-radius: 16px;
    padding: 10px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

/* Przełączniki (Toggle) */
.rk-hydro-controls {
    display: flex;
    gap: 10px;
    background: var(--rk-hydro-bg);
    padding: 10px;
    border-radius: 12px 12px 0 0;
    border-bottom: 1px solid var(--rk-hydro-border);
}

.rk-hydro-btn {
    flex: 1;
    padding: 14px 20px;
    border: 2px solid transparent;
    background: #ffffff;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-hydro-text);
    cursor: pointer;
    transition: all 0.3s;
    text-align: center;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

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

.rk-hydro-btn.active[data-pipe="14"] {
    background: var(--rk-hydro-brand-light);
    border-color: var(--rk-hydro-brand);
    color: #1e3a8a;
}

.rk-hydro-btn.active[data-pipe="16"] {
    background: #ffedd5;
    border-color: var(--rk-hydro-accent);
    color: #7c2d12;
}

/* Lewa Strona: Dane i Wzory */
.rk-hydro-data-panel {
    padding: 20px;
}

.rk-math-box {
    background: #f8fafc;
    border-left: 4px solid var(--rk-hydro-brand);
    padding: 15px 20px;
    border-radius: 0 8px 8px 0;
    margin-bottom: 25px;
    font-family: monospace;
    font-size: 14px;
    color: #334155;
    line-height: 1.6;
}

.rk-math-box strong { color: var(--rk-hydro-dark); font-size: 15px; }

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

.rk-data-card {
    background: #ffffff;
    border: 1px solid var(--rk-hydro-border);
    padding: 15px;
    border-radius: 10px;
    transition: all 0.3s;
}

.rk-data-lbl { font-size: 12px; color: #64748b; font-weight: 700; text-transform: uppercase; margin-bottom: 5px; }
.rk-data-val { font-size: 20px; font-weight: 900; color: var(--rk-hydro-dark); }
.rk-data-val span { font-size: 14px; font-weight: 600; color: #94a3b8; }

/* Dynamiczne kolory w zależności od stanu */
#rk-sim-app.state-16 .rk-math-box { border-color: var(--rk-hydro-accent); }
#rk-sim-app.state-16 .val-alert { color: var(--rk-hydro-accent); }
#rk-sim-app.state-14 .val-success { color: var(--rk-hydro-success); }

/* Prawa Strona: SVG Wizualizacja */
.rk-hydro-visual {
    background: var(--rk-hydro-dark);
    border-radius: 12px;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 250px;
}

.rk-hydro-svg { width: 100%; height: 100%; max-width: 250px; }

/* Elementy SVG z CSS Transitions */
.svg-pipe { transition: r 0.4s cubic-bezier(0.4, 0, 0.2, 1); }
.svg-groove { transition: d 0.4s cubic-bezier(0.4, 0, 0.2, 1); }
.svg-crack { opacity: 0; stroke-dasharray: 40; stroke-dashoffset: 40; transition: opacity 0.3s; }
.svg-water { transform-origin: center; animation: pulseWater 2s infinite alternate; }
.svg-heat-wave { stroke-dasharray: 8 8; animation: heatRise 1.5s linear infinite; opacity: 0; transition: opacity 0.3s; }

@keyframes pulseWater { 0% { fill: #3b82f6; } 100% { fill: #60a5fa; } }
@keyframes heatRise { to { stroke-dashoffset: -16; } }

/* Stan 14mm */
#rk-sim-app.state-14 .svg-pipe { r: 14; }
#rk-sim-app.state-14 .svg-groove { d: path("M 20 40 L 20 65 L 80 65 L 80 40"); }
#rk-sim-app.state-14 .svg-heat-wave { opacity: 1; stroke: #ef4444; }

/* Stan 16mm (Ryzyko) */
#rk-sim-app.state-16 .svg-pipe { r: 18; }
#rk-sim-app.state-16 .svg-groove { d: path("M 15 40 L 15 75 L 85 75 L 85 40"); }
#rk-sim-app.state-16 .svg-crack { opacity: 1; animation: drawCrackHydro 0.5s 0.3s forwards; }
#rk-sim-app.state-16 .svg-heat-wave { opacity: 0.3; stroke: #f97316; animation-duration: 4s; }

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

/* Informacje pod spodem */
.rk-hydro-footer-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    padding: 0 50px 40px;
}

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

.rk-hydro-info-card h4 {
    font-size: 15px;
    font-weight: 800;
    margin: 0 0 10px 0;
    color: var(--rk-hydro-dark);
}

.rk-hydro-info-card p {
    font-size: 13px;
    line-height: 1.6;
    color: #475569;
    margin: 0;
}

@media (max-width: 768px) {
    .rk-hydro-header, .rk-hydro-interactive { padding: 30px 20px; }
    .rk-hydro-sim-layout { grid-template-columns: 1fr; }
    .rk-hydro-controls { flex-direction: column; }
    .rk-data-grid { grid-template-columns: 1fr; }
    .rk-hydro-footer-grid { grid-template-columns: 1fr; padding: 0 20px 30px; }
    .rk-hydro-title { font-size: 24px; }
    .rk-hydro-visual { min-height: 200px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#article-rury",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/"
    },
    "headline": "Dobór rur i parametrów hydraulicznych przy frezowaniu",
    "description": "Standardem inżynierskim dla frezowania jest rura 14x2 mm. Zapewnia mniejszy zład wody, szybki czas reakcji i chroni cienką wylewkę przed spękaniem.",
    "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-17",
    "dateModified": "2026-05-17"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#dataset-hydraulika",
    "name": "Analiza parametrów hydraulicznych rur PEX/PERT",
    "description": "Zestawienie pojemności wodnej (zładu instalacji) i wpływu średnicy rury na bezwładność cieplną systemu podłogowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "średnica rury pex frezowanie",
      "rozstaw rur ogrzewanie podłogowe 10 15",
      "bariera antydyfuzyjna evoh din 4726",
      "pojemność wodna zład instalacji",
      "bezwładność cieplna podłogówki"
    ],
    "measurementTechnique": "Obliczenia pojemności na bazie wzoru na objętość walca (V = π · r²) weryfikujące masę czynnika grzewczego dla 100 m².",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Pojemność rury 14x2: 0,078 l/m.b., dająca szybką reakcję w < 45 minut.",
        "Ryzyko rury 16x2: Większy zład i wymóg głębokiej bruzdy (24 mm) grozi pęknięciem wylewki 40 mm."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#webapp-pojemnosc",
    "name": "Symulator Zładu i Przekroju Hydraulicznego",
    "description": "Kalkulator interaktywny porównujący wpływ średnicy rury na objętość wody w pętlach i zagrożenia strukturalne dla jastrychu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-hydro-container" id="rk-hydro-sim-lock">
    <div class="rk-hydro-header">
        <div class="rk-hydro-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z"></path></svg>
            Parametry Hydrauliczne
        </div>
        <h2 class="rk-hydro-title">Jaki rozstaw rur i średnicę PEX/PERT wybrać przy frezowaniu?</h2>
        <p class="rk-hydro-intro">
            W technologii frezowania jastrychu standardem inżynierskim jest stosowanie <strong>rur o średnicy zewnętrznej 14 mm (14 × 2 mm)</strong>. Układa się je w rozstawie <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/" class="rk-hydro-link">100 mm w strefach brzegowych</a> oraz 150 mm w strefach stałego przebywania ludzi. Zastosowanie popularnej rury 16 mm jest ryzykowne, ponieważ wymaga wykonania bruzdy o głębokości aż 24 mm, co przy cienkich starych wylewkach <strong>może doprowadzić do pękania jastrychu</strong>.
        </p>
        <p class="rk-hydro-intro" style="margin:0;">
            Niezależnie od średnicy, rury muszą bezwzględnie posiadać <a href="https://projekt-ogrzewania.pl/rura-z-bariera-antydyfuzyjna-evoh/" class="rk-hydro-link">barierę antydyfuzyjną EVOH (norma DIN 4726)</a> zapobiegającą przenikaniu niszczącego tlenu do instalacji.
        </p>
    </div>

    <div class="rk-hydro-interactive">
        <div id="rk-sim-app" class="rk-hydro-sim-layout state-14">
            
            <div style="display: flex; flex-direction: column;">
                <div class="rk-hydro-controls">
                    <button class="rk-hydro-btn active" data-pipe="14" onclick="rkSwitchPipe('14')">Rura 14x2 mm (Standard)</button>
                    <button class="rk-hydro-btn" data-pipe="16" onclick="rkSwitchPipe('16')">Rura 16x2 mm (Ryzyko)</button>
                </div>

                <div class="rk-hydro-data-panel">
                    <div class="rk-math-box" id="rk-math-content">
                        <strong>Obliczenie zładu (14 mm):</strong><br>
                        Średnica wew. (d_i) = 10 mm = 0,01 m.<br>
                        V = π · (d_i / 2)²<br>
                        V = 3,14159 · (0,005 m)²<br>
                        V = <strong>0,07854 l/m.b.</strong>
                    </div>

                    <div class="rk-data-grid">
                        <div class="rk-data-card">
                            <div class="rk-data-lbl">Zład wody (100 m²)</div>
                            <div class="rk-data-val" id="rk-val-vol">52,38 <span>litrów</span></div>
                        </div>
                        <div class="rk-data-card">
                            <div class="rk-data-lbl">Reakcja (Bezwładność)</div>
                            <div class="rk-data-val val-success" id="rk-val-time">< 45 <span>minut</span></div>
                        </div>
                        <div class="rk-data-card">
                            <div class="rk-data-lbl">Szerokość bruzdy</div>
                            <div class="rk-data-val" id="rk-val-groove">16 <span>mm</span></div>
                        </div>
                        <div class="rk-data-card">
                            <div class="rk-data-lbl">Głębokość bruzdy</div>
                            <div class="rk-data-val" id="rk-val-depth">20-22 <span>mm</span></div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-hydro-visual">
                <svg class="rk-hydro-svg" viewBox="0 0 100 100">
                    <rect x="0" y="40" width="100" height="60" fill="#334155"/>
                    <path d="M 0 40 L 100 40" stroke="#475569" stroke-width="2"/>
                    
                    <path class="svg-groove" fill="#0f172a" stroke="#475569" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
                    
                    <circle class="svg-pipe" cx="50" cy="50" fill="none" stroke="#e2e8f0" stroke-width="4"/>
                    <circle class="svg-pipe svg-water" cx="50" cy="50"/>

                    <path class="svg-heat-wave" d="M 35 25 Q 40 10 35 0 M 50 30 L 50 0 M 65 25 Q 60 10 65 0" fill="none" stroke-width="3" stroke-linecap="round"/>

                    <path class="svg-crack" d="M 45 75 L 40 85 L 50 100" fill="none" stroke="#f97316" stroke-width="2" stroke-linecap="round"/>
                </svg>
            </div>
        </div>
    </div>

    <div class="rk-hydro-footer-grid">
        <div class="rk-hydro-info-card">
            <h4><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="var(--rk-hydro-brand)" stroke-width="3" style="margin-right:5px; vertical-align:middle;"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg> Drastyczna redukcja zładu</h4>
            <p>
                Zastosowanie rury o mniejszej średnicy redukuje ilość wody w układzie o ponad 30%. Oznacza to, że <a href="https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/" style="color:var(--rk-hydro-brand); font-weight:600;">zład instalacji nagrzewa się znacznie szybciej</a>, co pozwala na błyskawiczne wyczucie ciepła pod stopami po uruchomieniu termostatu.
            </p>
        </div>
        <div class="rk-hydro-info-card">
            <h4><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#f97316" stroke-width="3" style="margin-right:5px; vertical-align:middle;"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg> Dlaczego rura 16 mm jest groźna?</h4>
            <p>
                Tradycyjna <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/" style="color:#f97316; font-weight:600;">rura 16 mm</a> wymusza głębsze nacięcia. Przy wylewkach rzędu 40 mm, ostrze może naruszyć izolację lub doprowadzić do przełamania betonu, niszcząc nośność posadzki.
            </p>
        </div>
    </div>
</div>

<script>
// 1. Zabezpieczenie domeny bez H2/H3 w komunikacie o błędzie
document.addEventListener('DOMContentLoaded', function() {
    var checkDomain = window.location.hostname;
    var allowedList = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowedList.indexOf(checkDomain) === -1) {
        var app = document.getElementById('rk-hydro-sim-lock');
        if (app) {
            app.innerHTML = '<div style="padding:40px; text-align:center; background:#1e1b4b; color:#ef4444; border-radius:20px; border:2px solid #ef4444; font-family:sans-serif; font-size:16px;"><strong>Odmowa dostępu.</strong> Skrypt symulacyjny jest przypisany wyłącznie do autoryzowanej domeny projekt-ogrzewania.pl.</div>';
        }
    }
});

// 2. Logika przełączania symulatora
function rkSwitchPipe(type) {
    var core = document.getElementById('rk-sim-app');
    
    // Zmiana przycisków
    var btns = document.querySelectorAll('.rk-hydro-btn');
    btns.forEach(function(btn) { btn.classList.remove('active'); });
    document.querySelector('.rk-hydro-btn[data-pipe="' + type + '"]').classList.add('active');

    // Zmiana klas i danych
    if (type === '14') {
        core.className = 'rk-hydro-sim-layout state-14';
        
        document.getElementById('rk-math-content').innerHTML = "<strong>Obliczenie zładu (14 mm):</strong><br>Średnica wew. (d_i) = 10 mm = 0,01 m.<br>V = π · (d_i / 2)²<br>V = 3,14159 · (0,005 m)²<br>V = <strong>0,07854 l/m.b.</strong>";
        document.getElementById('rk-val-vol').innerHTML = "52,38 <span>litrów</span>";
        
        var t = document.getElementById('rk-val-time');
        t.className = 'rk-data-val val-success';
        t.innerHTML = "< 45 <span>minut</span>";
        
        document.getElementById('rk-val-groove').innerHTML = "16 <span>mm</span>";
        document.getElementById('rk-val-depth').innerHTML = "20-22 <span>mm</span>";

    } else {
        core.className = 'rk-hydro-sim-layout state-16';
        
        document.getElementById('rk-math-content').innerHTML = "<strong>Obliczenie zładu (16 mm):</strong><br>Średnica wew. (d_i) = 12 mm = 0,012 m.<br>V = π · (d_i / 2)²<br>V = 3,14159 · (0,006 m)²<br>V = <strong>0,1130 l/m.b.</strong>";
        document.getElementById('rk-val-vol').innerHTML = "75,40 <span>litrów</span>";
        
        var t = document.getElementById('rk-val-time');
        t.className = 'rk-data-val val-alert';
        t.innerHTML = "3-5 <span>godzin</span>";
        
        document.getElementById('rk-val-groove').innerHTML = "18 <span>mm</span>";
        document.getElementById('rk-val-depth').innerHTML = "24-26 <span>mm</span>";
    }
}
</script>



<style>
:root {
    --rk-therm-dark: #1e293b; /* Głęboki bazalt */
    --rk-therm-brand: #ef4444; /* Termiczna czerwień */
    --rk-therm-brand-light: #fee2e2;
    --rk-therm-shield: #06b6d4; /* Błękit aerożelu */
    --rk-therm-shield-light: #cffafe;
    --rk-therm-warning: #f97316; /* Ostrzegawczy pomarańcz */
    --rk-therm-bg: #f8fafc;
    --rk-therm-card: #ffffff;
    --rk-therm-text: #334155;
    --rk-therm-border: #e2e8f0;
}

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

/* Sekcja Wprowadzająca (Header) */
.rk-therm-header {
    background: linear-gradient(145deg, #0f172a 0%, var(--rk-therm-dark) 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-therm-brand);
}

.rk-therm-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(239, 68, 68, 0.2);
    color: #fca5a5;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 25px;
    border: 1px solid rgba(252, 165, 165, 0.3);
}

.rk-therm-title {
    font-size: 26px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-therm-paragraph {
    font-size: 15px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0 0 15px 0;
}

.rk-therm-paragraph strong {
    color: #ffffff;
    font-weight: 700;
}

.rk-therm-link {
    color: #fca5a5;
    text-decoration: none;
    border-bottom: 1px dashed #fca5a5;
    transition: all 0.3s;
}

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

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

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

.rk-sim-btn {
    flex: 1;
    max-width: 280px;
    padding: 16px 20px;
    border: 2px solid var(--rk-therm-border);
    background: #ffffff;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-therm-text);
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.rk-sim-btn:hover { background: #f1f5f9; border-color: #cbd5e1; }

.rk-sim-btn.active[data-mode="loss"] {
    border-color: var(--rk-therm-brand);
    background: var(--rk-therm-brand-light);
    color: #991b1b;
    box-shadow: 0 10px 20px -5px rgba(239, 68, 68, 0.15);
}

.rk-sim-btn.active[data-mode="shield"] {
    border-color: var(--rk-therm-shield);
    background: var(--rk-therm-shield-light);
    color: #083344;
    box-shadow: 0 10px 20px -5px rgba(6, 182, 212, 0.2);
}

/* Ekran Symulatora (Grid: SVG + Parametry) */
.rk-therm-screen {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    background: #ffffff;
    border: 1px solid var(--rk-therm-border);
    border-radius: 16px;
    padding: 30px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.02);
}

/* Część wizualna (SVG Termowizja) */
.rk-therm-visual {
    background: #0f172a;
    border-radius: 12px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
    height: 100%;
    min-height: 220px;
    border: 2px solid #334155;
}

.rk-svg-thermo {
    width: 100%;
    height: 100%;
    max-width: 250px;
}

/* Animacje SVG */
.anim-heat-pipe { animation: pulseCore 2s infinite alternate; }
.anim-heat-arrow { stroke-dasharray: 10; animation: flowDown 1.5s linear infinite; transition: opacity 0.4s; }
.anim-reflect-arrow { stroke-dasharray: 10; animation: flowUp 1.5s linear infinite; opacity: 0; transition: opacity 0.4s; }
.svg-aerogel-layer { stroke-dasharray: 150; stroke-dashoffset: 150; opacity: 0; transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1); }

@keyframes pulseCore { 0% { fill: #f97316; filter: drop-shadow(0 0 5px #f97316); } 100% { fill: #ef4444; filter: drop-shadow(0 0 15px #ef4444); } }
@keyframes flowDown { to { stroke-dashoffset: -20; } }
@keyframes flowUp { to { stroke-dashoffset: 20; } }

/* Stan 1: Ucieczka w dół (Loss) */
#rk-sim-therm.state-loss .anim-heat-arrow { opacity: 1; stroke: #ef4444; }

/* Stan 2: Aerożel (Shield) */
#rk-sim-therm.state-shield .anim-heat-arrow { opacity: 0.2; stroke: #f59e0b; }
#rk-sim-therm.state-shield .anim-reflect-arrow { opacity: 1; stroke: #06b6d4; }
#rk-sim-therm.state-shield .svg-aerogel-layer { stroke-dashoffset: 0; opacity: 1; filter: drop-shadow(0 0 8px #06b6d4); }

/* Część z parametrami */
.rk-therm-data-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 15px;
    align-content: center;
}

.rk-therm-box {
    background: var(--rk-therm-bg);
    padding: 16px 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-therm-border);
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.rk-therm-label { font-size: 13px; color: #64748b; font-weight: 700; text-transform: uppercase; }
.rk-therm-val { font-size: 18px; font-weight: 900; color: var(--rk-therm-dark); transition: color 0.3s; }
.rk-therm-val span { font-size: 13px; font-weight: 600; color: #94a3b8; }

#rk-sim-therm.state-loss .val-dynamic { color: var(--rk-therm-brand); }
#rk-sim-therm.state-shield .val-dynamic { color: var(--rk-therm-shield); }

/* Kafelki Informacyjne (Dół) */
.rk-therm-info-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    padding: 0 50px 40px;
}

.rk-therm-info-card {
    background: #ffffff;
    border: 1px solid var(--rk-therm-border);
    padding: 25px;
    border-radius: 16px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-therm-info-card h4 {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-therm-dark);
    margin: 0 0 12px 0;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-therm-info-card h4 svg { color: var(--rk-therm-warning); }
.rk-therm-info-card p { font-size: 13px; line-height: 1.6; color: #4b5563; margin: 0; }

@media (max-width: 768px) {
    .rk-therm-header, .rk-therm-interactive { padding: 30px 20px; }
    .rk-sim-controls { flex-direction: column; }
    .rk-sim-btn { max-width: 100%; }
    .rk-therm-screen { grid-template-columns: 1fr; }
    .rk-therm-visual { min-height: 180px; }
    .rk-therm-info-grid { grid-template-columns: 1fr; padding: 0 20px 30px; gap: 15px; }
    .rk-therm-title { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#article-izolacja",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/"
    },
    "headline": "Jak rozwiązać problem braku izolacji termicznej podłogi na gruncie przy frezowaniu?",
    "description": "Zastosowanie powłok aerożelowych, mikrosfer szklanych oraz rekuperacji pozwala ograniczyć ucieczkę ciepła w dół do gruntu i ratuje SCOP pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.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-17",
    "dateModified": "2026-05-17"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#dataset-izolacja",
    "name": "Analiza strat cieplnych i mikroizolacji bruzd frezowanych",
    "description": "Porównanie efektywności energetycznej standardowej wylewki na gruncie z systemem wyposażonym w odbłyśniki aerożelowe.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "mikrosfery szklane podłogówka",
      "powłoka termoizolacyjna aerożel ogrzewanie",
      "straty ciepła do gruntu frezowanie",
      "rekuperacja a podłogówka",
      "spadek scop pompy ciepła"
    ],
    "measurementTechnique": "Obliczenia strat przenikania do gruntu i odbicia podczerwieni wg wytycznych normy PN-EN 1264-4.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Stan pierwotny: Strata rzędu 35%-45% w dół, drastyczny spadek SCOP pompy ciepła o 20%.",
        "Stan zoptymalizowany: Zastosowanie powłoki aerożelowej o współczynniku λ = 0,014 W/(m·K) ratuje bilans energetyczny."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#webapp-izolacja",
    "name": "Symulator Strat Ciepła do Gruntu",
    "description": "Narzędzie wizualizujące kierunki przepływu energii cieplnej w systemach bez poziomej izolacji EPS/PIR, obrazujące działanie mikrobarier.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-therm-container" id="rk-therm-guard-lock">
    <div class="rk-therm-header">
        <div class="rk-therm-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Termika i Mostki
        </div>
        <h2 class="rk-therm-title">Jak rozwiązać problem braku izolacji termicznej podłogi na gruncie?</h2>
        <p class="rk-therm-paragraph">
            Brak izolacji termicznej pod jastrychem na gruncie w starym domu powoduje <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/" class="rk-therm-link">ucieczkę strumienia ciepła w dół na poziomie 35% - 45%</a>. Stanowi to bezpośrednie naruszenie zapisów <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/" class="rk-therm-link">normy PN-EN 1264-4</a>, która dla podłóg na gruncie wymaga minimalnego oporu cieplnego izolacji o wartości <strong>R = 2,25 m²·K/W</strong>.
        </p>
        <p class="rk-therm-paragraph" style="margin: 0;">
            Jeżeli nie możemy ułożyć płyt EPS100 lub PIR, jedynym inżynierskim ratunkiem ograniczającym straty jest <strong>obniżenie zasilania do max 32°C</strong>, zastosowanie powłok z aerożelu (<strong>λ = 0,014 W/(m·K)</strong>) oraz integracja z systemem mechanicznej <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/" class="rk-therm-link">wentylacji z odzyskiem ciepła (rekuperacją)</a>.
        </p>
    </div>

    <div class="rk-therm-interactive">
        <div class="rk-sim-controls">
            <button class="rk-sim-btn active" data-mode="loss" onclick="rkSwitchTherm('loss')">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"></polyline></svg>
                Standard (Ucieczka ciepła w dół)
            </button>
            <button class="rk-sim-btn" data-mode="shield" onclick="rkSwitchTherm('shield')">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
                Mikrobariera Aerożelowa + OZE
            </button>
        </div>

        <div id="rk-sim-therm" class="rk-therm-screen state-loss">
            <div class="rk-therm-visual">
                <svg class="rk-svg-thermo" viewBox="0 0 100 100">
                    <rect x="0" y="70" width="100" height="30" fill="#1e293b"/>
                    <path d="M 0 70 L 100 70" stroke="#334155" stroke-width="2" stroke-dasharray="4 4"/>
                    
                    <rect x="0" y="30" width="100" height="40" fill="#334155"/>
                    <path d="M 30 30 L 30 55 L 70 55 L 70 30" fill="#0f172a" stroke="#475569" stroke-width="2"/>
                    
                    <path class="svg-aerogel-layer" d="M 32 30 L 32 53 L 68 53 L 68 30" fill="none" stroke="#06b6d4" stroke-width="4" stroke-linejoin="round"/>

                    <circle cx="50" cy="42" r="10" fill="none" stroke="#f8fafc" stroke-width="2"/>
                    <circle class="anim-heat-pipe" cx="50" cy="42" r="8"/>

                    <path class="anim-heat-arrow" d="M 40 55 L 40 85 M 50 55 L 50 90 M 60 55 L 60 85" fill="none" stroke-width="3" stroke-linecap="round"/>
                    <polygon points="38,82 42,82 40,86" fill="#ef4444" class="anim-heat-arrow" style="stroke:none;"/>
                    <polygon points="48,87 52,87 50,91" fill="#ef4444" class="anim-heat-arrow" style="stroke:none;"/>
                    <polygon points="58,82 62,82 60,86" fill="#ef4444" class="anim-heat-arrow" style="stroke:none;"/>

                    <path class="anim-reflect-arrow" d="M 40 50 Q 30 50 30 20 M 60 50 Q 70 50 70 20 M 50 48 L 50 15" fill="none" stroke-width="3" stroke-linecap="round"/>
                </svg>
            </div>

            <div class="rk-therm-data-grid">
                <div class="rk-therm-box">
                    <span class="rk-therm-label">Straty w dół</span>
                    <span class="rk-therm-val val-dynamic" id="rk-val-loss">45% <span>(Krytyczne)</span></span>
                </div>
                <div class="rk-therm-box">
                    <span class="rk-therm-label">Wpływ na SCOP pompy</span>
                    <span class="rk-therm-val val-dynamic" id="rk-val-scop">- 20% <span>spadku</span></span>
                </div>
                <div class="rk-therm-box">
                    <span class="rk-therm-label">Temp. zasilania</span>
                    <span class="rk-therm-val" id="rk-val-temp">38°C <span>(Wysoka)</span></span>
                </div>
                <div class="rk-therm-box">
                    <span class="rk-therm-label">Lambda izolacji bruzdy</span>
                    <span class="rk-therm-val" id="rk-val-lambda">Brak <span>(Zwykły grunt)</span></span>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-therm-info-grid">
        <div class="rk-therm-info-card">
            <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><path d="M12 8v4l3 3"></path></svg> 1. Grunt o wysokiej penetracji</h4>
            <p>
                Przed zastosowaniem barier odbijających, frezowany kanał musi zostać idealnie odkurzony (odkurzacz klasy M) i zagruntowany. Pył betonowy blokuje adhezję powłok izolacyjnych.
            </p>
        </div>
        <div class="rk-therm-info-card">
            <h4><svg width="20" height="20" 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> 2. Płynny Aerożel lub Mikrosfery</h4>
            <p>
                Natrysk lub malowanie wnętrza rowka płynną powłoką na bazie mikrosfer szklanych (λ = 0,014 W/(m·K)) tworzy lustro odbijające promieniowanie podczerwone (cieplne) ku górze.
            </p>
        </div>
        <div class="rk-therm-info-card">
            <h4><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path></svg> 3. Rekuperacja (Złota zasada)</h4>
            <p>
                Jeśli tracimy ciepło w podłogę, musimy odzyskać je z powietrza. <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/" style="color:var(--rk-therm-warning); font-weight:700;">Wentylacja z odzyskiem</a> drastycznie obniża zapotrzebowanie budynku, rekompensując ucieczkę energii w grunt.
            </p>
        </div>
    </div>
</div>

<script>
// 1. Zabezpieczenie przed nieautoryzowanym użyciem (bez znaczników nagłówkowych)
document.addEventListener('DOMContentLoaded', function() {
    var locHost = window.location.hostname;
    var allowedList = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowedList.indexOf(locHost) === -1) {
        var appCont = document.getElementById('rk-therm-guard-lock');
        if (appCont) {
            appCont.innerHTML = '<div style="padding:40px; text-align:center; background:#1e293b; color:#ef4444; border-radius:20px; border:2px solid #ef4444; font-family:sans-serif; font-size:15px;"><strong>Blokada bezpieczeństwa.</strong> Algorytm wizualizacji termicznej przypisany jest tylko do autoryzowanej domeny projekt-ogrzewania.pl.</div>';
        }
    }
});

// 2. Logika przełączania symulatora
function rkSwitchTherm(mode) {
    var screen = document.getElementById('rk-sim-therm');
    
    // Obsługa przycisków
    var btns = document.querySelectorAll('.rk-sim-btn');
    btns.forEach(function(btn) { btn.classList.remove('active'); });
    document.querySelector('.rk-sim-btn[data-mode="' + mode + '"]').classList.add('active');

    // Obsługa logiki widoku i danych
    if (mode === 'loss') {
        screen.className = 'rk-therm-screen state-loss';
        document.getElementById('rk-val-loss').innerHTML = "45% <span>(Krytyczne)</span>";
        document.getElementById('rk-val-scop').innerHTML = "- 20% <span>spadku</span>";
        document.getElementById('rk-val-temp').innerHTML = "38°C <span>(Wysoka)</span>";
        document.getElementById('rk-val-lambda').innerHTML = "Brak <span>(Zwykły grunt)</span>";
    } else {
        screen.className = 'rk-therm-screen state-shield';
        document.getElementById('rk-val-loss').innerHTML = "< 18% <span>(Zredukowane)</span>";
        document.getElementById('rk-val-scop').innerHTML = "Stabilny <span>(<a href='https://projekt-ogrzewania.pl/pompa-ciepla/' style='color:var(--rk-therm-shield); font-weight:700;'>Pompa Ciepła chroniona</a>)</span>";
        document.getElementById('rk-val-temp').innerHTML = "32°C <span>(Zoptymalizowana)</span>";
        document.getElementById('rk-val-lambda').innerHTML = "0,014 W/(m·K) <span>(Aerożel)</span>";
    }
}
</script>



<style>
:root {
    --rk-loop-dark: #0f172a; /* Głęboki grafit */
    --rk-loop-brand: #6366f1; /* Indygo / Fiolet techniczny */
    --rk-loop-brand-light: #e0e7ff;
    --rk-loop-cyan: #06b6d4; /* Cyjan przepływu */
    --rk-loop-danger: #f43f5e; /* Czerwień blokady */
    --rk-loop-success: #10b981; /* Zielony bezpieczny */
    --rk-loop-bg: #f8fafc;
    --rk-loop-card: #ffffff;
    --rk-loop-text: #334155;
    --rk-loop-border: #e2e8f0;
}

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

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

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

.rk-loop-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(99, 102, 241, 0.2);
    color: #c7d2fe;
    padding: 6px 16px;
    border-radius: 99px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 25px;
    border: 1px solid rgba(199, 210, 254, 0.3);
}

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

.rk-loop-intro {
    font-size: 15px;
    line-height: 1.75;
    color: #cbd5e1;
    margin: 0 0 15px 0;
}

.rk-loop-intro strong {
    color: #ffffff;
}

.rk-loop-link {
    color: #a5b4fc;
    text-decoration: none;
    border-bottom: 1px dashed #a5b4fc;
    transition: all 0.3s;
}

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

/* Część Interaktywna - Suwak i Wykresy */
.rk-loop-interactive {
    padding: 40px 50px;
    background: var(--rk-loop-bg);
}

.rk-loop-calc-box {
    background: #ffffff;
    border: 1px solid var(--rk-loop-border);
    border-radius: 16px;
    padding: 30px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-loop-slider-group {
    margin-bottom: 35px;
}

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

.rk-loop-slider-label span {
    font-size: 24px;
    color: var(--rk-loop-brand);
}

/* Custom Range Input */
.rk-loop-range {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 5px;
    background: #e2e8f0;
    outline: none;
    margin: 0;
}

.rk-loop-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-loop-brand);
    cursor: pointer;
    border: 2px solid #ffffff;
    box-shadow: 0 2px 6px rgba(0,0,0,0.15);
    transition: transform 0.1s;
}

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

/* Układ Wizualizacja + Kafelki */
.rk-loop-display-grid {
    display: grid;
    grid-template-columns: 240px 1fr;
    gap: 30px;
    align-items: center;
}

/* NOWE SVG: Pętla i Pompa Obiegowa */
.rk-loop-visual-box {
    background: #0f172a;
    border-radius: 12px;
    padding: 15px;
    height: 240px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px solid #334155;
    position: relative;
    overflow: hidden;
}

.rk-hydro-diagram {
    width: 100%;
    height: 100%;
}

/* Animacje i Transformacje dla nowego SVG */
.rk-svg-rotor { transform-origin: 30px 50px; } /* Środek pompy (x:30, y:50) */
.rk-svg-flow-path { stroke-dasharray: 8 8; }
.rk-svg-alert-wave { opacity: 0; transition: opacity 0.3s; transform-origin: 50px 50px; }

@keyframes spinRotorFast { 100% { transform: rotate(360deg); } }
@keyframes spinRotorSlow { 100% { transform: rotate(360deg); } }
@keyframes flowFast { to { stroke-dashoffset: -16; } }
@keyframes flowSlow { to { stroke-dashoffset: -16; } }
@keyframes alertPulse { 0% { opacity: 0.3; transform: scale(0.9); } 100% { opacity: 1; transform: scale(1.1); } }

/* Dynamiczne modyfikowanie CSS przez JS */
.state-safe .rk-svg-rotor { animation: spinRotorFast 1s linear infinite; }
.state-safe .rk-svg-flow-path { animation: flowFast 1s linear infinite; stroke: var(--rk-loop-cyan); }
.state-safe .rk-svg-alert-wave { opacity: 0; animation: none; }

.state-blocked .rk-svg-rotor { animation: spinRotorSlow 3s linear infinite; }
.state-blocked .rk-svg-flow-path { animation: flowSlow 4s linear infinite; stroke: var(--rk-loop-danger); }
.state-blocked .rk-svg-alert-wave { opacity: 1; animation: alertPulse 1.5s infinite alternate; }

/* Kafelki parametrów hydraulicznych */
.rk-loop-param-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-loop-card-stat {
    background: var(--rk-loop-bg);
    border: 1px solid var(--rk-loop-border);
    padding: 15px 20px;
    border-radius: 10px;
}

.rk-stat-lbl { font-size: 11px; color: #64748b; font-weight: 700; text-transform: uppercase; margin-bottom: 5px; }
.rk-stat-val { font-size: 20px; font-weight: 900; color: var(--rk-loop-dark); }
.rk-stat-val span { font-size: 13px; font-weight: 600; color: #94a3b8; }

/* Komunikat Inżynierski */
.rk-loop-feedback {
    grid-column: 1 / -1;
    padding: 15px 20px;
    border-radius: 8px;
    font-size: 13px;
    line-height: 1.6;
    margin-top: 10px;
    font-weight: 500;
}

.rk-loop-feedback.success { background: #d1fae5; color: #065f46; border-left: 4px solid var(--rk-loop-success); }
.rk-loop-feedback.danger { background: #fee2e2; color: #991b1b; border-left: 4px solid var(--rk-loop-danger); }

/* Dolna sekcja obliczeniowa (Kafelki na mobile) */
.rk-loop-footer-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    padding: 30px 50px 40px;
}

.rk-formula-card {
    background: #ffffff;
    border: 1px solid var(--rk-loop-border);
    padding: 20px;
    border-radius: 14px;
}

.rk-formula-card h4 { font-size: 14px; font-weight: 800; color: var(--rk-loop-dark); margin: 0 0 8px 0; }
.rk-formula-card p { font-size: 12px; font-family: monospace; color: #475569; margin: 0; background: var(--rk-loop-bg); padding: 8px 12px; border-radius: 6px; }

@media (max-width: 768px) {
    .rk-loop-header, .rk-loop-interactive { padding: 30px 25px; }
    .rk-loop-display-grid { grid-template-columns: 1fr; }
    .rk-loop-param-grid { grid-template-columns: 1fr; }
    .rk-loop-footer-grid { grid-template-columns: 1fr; padding: 0 20px 30px; gap: 15px; }
    .rk-loop-title { font-size: 24px; }
    .rk-loop-visual-box { height: 180px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#article-dlugosc",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/"
    },
    "headline": "Maksymalna długość pętli ogrzewania podłogowego przy rurach 14 mm",
    "description": "Analiza hydrauliczna dla średnicy 14 mm. Dowiedz się, dlaczego 80 m to nieprzekraczalna granica i jak obliczyć opory liniowe oraz strumień masowy.",
    "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-17",
    "dateModified": "2026-05-17"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#dataset-hydraulika-14mm",
    "name": "Zależność oporów hydraulicznych i przepływów od długości pętli 14x2mm",
    "description": "Dane fizyczne i hydrauliczne: strumień masowy, prędkość liniowa i strata ciśnienia obliczone dla zasilania pompy ciepła (delta T = 5K, Q = 900W).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna długość pętli podłogówki 14mm",
      "opory hydrauliczne rury pex 14x2",
      "strumień masowy wody bilans cieplny",
      "zamknięcie hydrauliczne pętli grzewczej",
      "regulacja rotometrów rozdzielacza"
    ],
    "measurementTechnique": "Modelowanie hydrauliczne oparte na równaniu Darcy-Weisbacha dla przepływów w rurach gładkich polimerowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Granica bezpieczeństwa: Do 80 metrów bieżących, strata ciśnienia poniżej 20 kPa.",
        "Strefa krytyczna: Powyżej 85 metrów, opory przekraczają 22 kPa, ryzyko braku przepływu czynnika."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#webapp-kalkulator-pętli",
    "name": "Interaktywny Symulator Oporów Pętli 14mm",
    "description": "Aplikacja inżynierska wyliczająca dynamicznie stratę ciśnienia oraz odwzorowująca zjawisko zamknięcia hydraulicznego przy zmianie długości obwodu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-loop-container" id="rk-loop-length-app">
    <div class="rk-loop-header">
        <div class="rk-loop-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="6" y1="3" x2="6" y2="21"></line><line x1="18" y1="3" x2="18" y2="21"></line><line x1="12" y1="3" x2="12" y2="21"></line></svg>
            Hydraulika Układu
        </div>
        <h2 class="rk-loop-title">Jaka jest maksymalna długość pętli ogrzewania podłogowego przy rurach 14 mm?</h2>
        <p class="rk-loop-intro">
            Maksymalna dopuszczalna długość pojedynczej pętli grzewczej dla rury o średnicy 14 × 2 mm wynosi <strong>80 metrów bieżących</strong> (wliczając odcinki dojściowe do rozdzielacza). Pozwala to na pokrycie maksymalnie 11–12 m² powierzchni pomieszczenia przy <a href="https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/" class="rk-loop-link">rozstawie rur co 150 mm</a>. 
        </p>
        <p class="rk-loop-intro" style="margin: 0;">
            Przekroczenie tej granicy skutkuje gwałtownym, nieliniowym wzrostem oporów hydraulicznych <strong>powyżej wartości 22 kPa</strong>. Przekracza to możliwości regulacyjne standardowych rotometrów i prowadzi do zjawiska <strong>"zamknięcia hydraulicznego" pętli</strong> – woda wybiera drogę o mniejszym oporze w krótszych obwodach, a pomieszczenie pozostaje niedogrzane.
        </p>
    </div>

    <div class="rk-loop-interactive">
        <div class="rk-loop-calc-box">
            <div class="rk-loop-slider-group">
                <label class="rk-loop-slider-label">
                    Zmień długość projektowanej pętli 14 mm:
                    <span id="rk-loop-len-text">80 m</span>
                </label>
                <input type="range" min="40" max="120" value="80" step="5" class="rk-loop-range" id="rkLoopRange" oninput="rkCalcHydraulics(this.value)">
            </div>

            <div class="rk-loop-display-grid">
                
                <div class="rk-loop-visual-box" id="rkSvgStateCtrl">
                    <svg class="rk-hydro-diagram" viewBox="0 0 100 100">
                        <path d="M 30 20 L 70 20 C 81 20 90 29 90 40 L 90 60 C 90 71 81 80 70 80 L 30 80" fill="none" stroke="#1e293b" stroke-width="8" stroke-linecap="round"/>
                        <path class="rk-svg-flow-path" d="M 30 20 L 70 20 C 81 20 90 29 90 40 L 90 60 C 90 71 81 80 70 80 L 30 80" fill="none" stroke-width="4" stroke-linecap="round"/>
                        
                        <line x1="30" y1="20" x2="30" y2="40" stroke="#1e293b" stroke-width="8"/>
                        <line x1="30" y1="60" x2="30" y2="80" stroke="#1e293b" stroke-width="8"/>
                        
                        <circle cx="30" cy="50" r="14" fill="#334155" stroke="#1e293b" stroke-width="4"/>
                        <g class="rk-svg-rotor">
                            <line x1="30" y1="40" x2="30" y2="60" stroke="#94a3b8" stroke-width="3" stroke-linecap="round"/>
                            <line x1="20" y1="50" x2="40" y2="50" stroke="#94a3b8" stroke-width="3" stroke-linecap="round"/>
                            <circle cx="30" cy="50" r="3" fill="#cbd5e1"/>
                        </g>

                        <circle class="rk-svg-alert-wave" cx="70" cy="50" r="12" fill="none" stroke="#f43f5e" stroke-width="3"/>
                        <path class="rk-svg-alert-wave" d="M 64 44 L 76 56 M 76 44 L 64 56" stroke="#f43f5e" stroke-width="3" stroke-linecap="round"/>
                    </svg>
                </div>

                <div class="rk-loop-param-grid">
                    <div class="rk-loop-card-stat">
                        <div class="rk-stat-lbl">Opór hydrauliczny pętli</div>
                        <div class="rk-stat-val" id="val-pressure">19,4 <span>kPa</span></div>
                    </div>
                    <div class="rk-loop-card-stat">
                        <div class="rk-stat-lbl">Przepływ (Rotametr)</div>
                        <div class="rk-stat-val" id="val-flow">2,6 <span>l/min</span></div>
                    </div>
                    <div class="rk-loop-card-stat">
                        <div class="rk-stat-lbl">Prędkość liniowa czynnika</div>
                        <div class="rk-stat-val" id="val-velocity">0,55 <span>m/s</span></div>
                    </div>
                    <div class="rk-loop-card-stat">
                        <div class="rk-stat-lbl">Strumień masowy</div>
                        <div class="rk-stat-val">154,8 <span>kg/h</span></div>
                    </div>

                    <div class="rk-loop-feedback success" id="loop-msg">
                        <strong>Standard Inżynierski spełniony.</strong> Przepływ wody wynosi 0,55 m/s – zapewnia to samoodpowietrzanie pętli (zgodnie z PN-EN 1264) bez generowania szumów i przeciążania pompy obiegowej.
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-loop-footer-grid">
        <div class="rk-formula-card">
            <h4>1. Strumień masowy (m)</h4>
            <p>m = Q / (c_w · ΔT)</p>
        </div>
        <div class="rk-formula-card">
            <h4>2. Przepływ objętościowy (V)</h4>
            <p>V_obj = m / ρ_wody</p>
        </div>
        <div class="rk-formula-card">
            <h4>3. Prędkość liniowa (v)</h4>
            <p>v = V_obj / A_wew</p>
        </div>
    </div>
</div>

<script>
// 1. Zabezpieczenie domeny przed kradzieżą (bez tagów H2/H3 w kodzie błędu)
document.addEventListener('DOMContentLoaded', function() {
    var currentHost = window.location.hostname;
    var allowedHosts = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowedHosts.indexOf(currentHost) === -1) {
        var wrapperApp = document.getElementById('rk-loop-length-app');
        if (wrapperApp) {
            wrapperApp.innerHTML = '<div style="padding:40px; text-align:center; background:#1e1b4b; color:#f43f5e; border-radius:20px; border:2px solid #f43f5e; font-family:sans-serif; font-size:15px;"><strong>Błąd autoryzacji kodu.</strong> Panel obliczeń hydraulicznych jest licencjonowany wyłącznie dla witryny Projekt-Ogrzewania.pl.</div>';
        }
    }
    // Uruchomienie kalkulatora na start z wartością normatywną 80m
    rkCalcHydraulics(80);
});

// 2. Inżynierska logika kalkulacji hydraulicznej dla rury 14x2 mm
function rkCalcHydraulics(length) {
    length = parseInt(length);
    document.getElementById('rk-loop-len-text').innerText = length + ' m';

    // Założenia projektowe z tekstu Roberta: Q = 900 W, delta T = 5 K
    // Opory rosną nieliniowo powyżej 80 metrów
    var pressure;
    if (length <= 80) {
        pressure = (length * 0.2425).toFixed(1); // Stały liniowy wzrost do 19.4 kPa
    } else {
        // Gwałtowny nieliniowy skok oporów powyżej normy 80m (zjawisko dławienia przekroju)
        pressure = (19.4 + Math.pow((length - 80), 1.35) * 0.45).toFixed(1);
    }

    // Przepływ i prędkość drastycznie spadają gdy opory blokują pętlę
    var flow, velocity;
    if (length <= 80) {
        flow = "2.6";
        velocity = "0.55";
    } else {
        // Symulacja blokowania hydraulicznego
        var dropFactor = 1 - ((length - 80) * 0.022);
        if(dropFactor < 0.2) dropFactor = 0.2; // Całkowite zdławienie / minimalny przesącz
        flow = (2.6 * dropFactor).toFixed(1);
        velocity = (0.55 * dropFactor).toFixed(2);
    }

    // Aktualizacja pól tekstowych i statystyk
    document.getElementById('val-pressure').innerHTML = pressure + ' <span>kPa</span>';
    document.getElementById('val-flow').innerHTML = flow + ' <span>l/min</span>';
    document.getElementById('val-velocity').innerHTML = velocity + ' <span>m/s</span>';

    // Obsługa stanów SVG
    var svgStateCtrl = document.getElementById('rkSvgStateCtrl');
    var msgBox = document.getElementById('loop-msg');

    if (length <= 80) {
        // Stan Bezpieczny (Safe)
        svgStateCtrl.className = "rk-loop-visual-box state-safe";
        msgBox.className = "rk-loop-feedback success";
        msgBox.innerHTML = "<strong>Standard Inżynierski spełniony.</strong> Przepływ wody wynosi " + velocity + " m/s – zapewnia to prawidłowe samoodpowietrzanie obwodu (zgodnie z PN-EN 1264) bez generowania hałasów.";
    } else {
        // Stan Zablokowany (Blocked)
        svgStateCtrl.className = "rk-loop-visual-box state-blocked";
        msgBox.className = "rk-loop-feedback danger";
        msgBox.innerHTML = "<strong>KRYTYCZNE PRZEKROCZENIE NORMY!</strong> Opory osiągnęły " + pressure + " kPa. Następuje zjawisko <strong>zamknięcia hydraulicznego</strong>. Prędkość spadła do " + velocity + " m/s – pętla zostanie zapowietrzona, a pompa obiegowa nie dogrzeje tego pomieszczenia.";
    }
}
</script>



<style>
:root {
    --rk-floor-dark: #1f2937; /* Grafit inżynieryjny */
    --rk-floor-tile: #0ea5e9; /* Błękit ceramiczny */
    --rk-floor-tile-bg: #e0f2fe;
    --rk-floor-wood: #d97706; /* Ciepły bursztyn/drewno */
    --rk-floor-wood-bg: #fef3c7;
    --rk-floor-danger: #ef4444; /* Czerwień strat */
    --rk-floor-bg: #f8fafc;
    --rk-floor-card: #ffffff;
    --rk-floor-text: #374151;
    --rk-floor-border: #e5e7eb;
}

.rk-floor-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-floor-card);
    border-radius: 20px;
    box-shadow: 0 20px 40px -15px rgba(31, 41, 55, 0.12);
    border: 1px solid var(--rk-floor-border);
    overflow: hidden;
}

/* Nagłówek sekcji */
.rk-floor-header {
    background: linear-gradient(135deg, var(--rk-floor-dark) 0%, #374151 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-floor-tile);
    transition: border-color 0.4s ease;
}

.rk-floor-container.state-wood .rk-floor-header {
    border-color: var(--rk-floor-wood);
}

.rk-floor-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.1);
    color: #e2e8f0;
    padding: 6px 16px;
    border-radius: 99px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 20px;
    border: 1px solid rgba(255, 255, 255, 0.2);
}

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

.rk-floor-intro {
    font-size: 15px;
    line-height: 1.75;
    color: #cbd5e1;
    margin: 0 0 15px 0;
}

.rk-floor-intro strong {
    color: #ffffff;
}

.rk-floor-link {
    color: #93c5fd;
    text-decoration: none;
    border-bottom: 1px dashed #93c5fd;
    transition: all 0.3s;
}

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

/* Część Interaktywna - Suwak i Wykresy */
.rk-floor-interactive {
    padding: 40px 50px;
    background: var(--rk-floor-bg);
}

.rk-floor-controls {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
}

.rk-floor-btn {
    flex: 1;
    padding: 16px 20px;
    border: 2px solid var(--rk-floor-border);
    background: #ffffff;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-floor-text);
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

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

.rk-floor-btn.active[data-type="tile"] {
    border-color: var(--rk-floor-tile);
    background: var(--rk-floor-tile-bg);
    color: #0369a1;
    box-shadow: 0 8px 15px -5px rgba(14, 165, 233, 0.2);
}

.rk-floor-btn.active[data-type="wood"] {
    border-color: var(--rk-floor-wood);
    background: var(--rk-floor-wood-bg);
    color: #92400e;
    box-shadow: 0 8px 15px -5px rgba(217, 119, 6, 0.2);
}

/* Ekran Symulatora (Grid: Lewo animacja, Prawo parametry) */
.rk-floor-screen {
    display: grid;
    grid-template-columns: 260px 1fr;
    gap: 30px;
    background: #ffffff;
    border: 1px solid var(--rk-floor-border);
    border-radius: 16px;
    padding: 30px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.02);
}

/* Część wizualna (SVG) */
.rk-floor-visual {
    background: var(--rk-floor-dark);
    border-radius: 12px;
    padding: 15px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
    height: 100%;
    min-height: 200px;
}

.rk-svg-cross {
    width: 100%;
    height: 100%;
}

/* Elementy SVG z CSS Transitions */
.svg-layer-top { transition: fill 0.4s ease, height 0.4s ease, y 0.4s ease; }
.svg-heat-arrow { stroke-dasharray: 10 10; transition: stroke-dashoffset 0.5s, stroke 0.4s, opacity 0.4s; }
.svg-block-wave { opacity: 0; transform-origin: top center; transition: opacity 0.4s, transform 0.4s; }

@keyframes heatFlowFast { to { stroke-dashoffset: -30; } }
@keyframes heatFlowSlow { to { stroke-dashoffset: -10; } }

/* Stan 1: Płytki (Tile) */
.state-tile .svg-layer-top { fill: #38bdf8; height: 10px; y: 20px; }
.state-tile .svg-heat-arrow { stroke: #ef4444; animation: heatFlowFast 1s linear infinite; opacity: 1; }
.state-tile .svg-block-wave { opacity: 0; transform: scaleY(0.5); }

/* Stan 2: Panele/Drewno (Wood) */
.state-wood .svg-layer-top { fill: #f59e0b; height: 18px; y: 12px; }
.state-wood .svg-heat-arrow { stroke: #f97316; animation: heatFlowSlow 2s linear infinite; opacity: 0.5; }
.state-wood .svg-block-wave { opacity: 1; transform: scaleY(1); fill: #f87171; }

/* Część z parametrami (Grid) */
.rk-floor-param-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-floor-box {
    background: var(--rk-floor-bg);
    padding: 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-floor-border);
    transition: all 0.3s;
}

.rk-floor-label {
    font-size: 12px;
    color: #64748b;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 8px;
}

.rk-floor-value {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-floor-dark);
    display: flex;
    align-items: baseline;
    gap: 5px;
}

.rk-floor-value span { font-size: 14px; font-weight: 600; color: #94a3b8; }

.val-dynamic { transition: color 0.3s; }
.state-tile .val-dynamic { color: var(--rk-floor-tile); }
.state-wood .val-dynamic { color: var(--rk-floor-danger); }

/* Podsumowanie/Feedback */
.rk-floor-feedback {
    grid-column: 1 / -1;
    font-size: 14px;
    color: var(--rk-floor-text);
    line-height: 1.6;
    margin-top: 10px;
    padding-top: 20px;
    border-top: 1px solid var(--rk-floor-border);
}

/* Wzory i procedury - dół */
.rk-floor-footer-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    padding: 0 50px 40px;
}

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

.rk-floor-info-card h4 {
    font-size: 15px;
    font-weight: 800;
    margin: 0 0 10px 0;
    color: var(--rk-floor-dark);
}

.rk-floor-info-card p {
    font-size: 13px;
    line-height: 1.6;
    color: #475569;
    margin: 0;
}

.rk-math-block {
    background: var(--rk-floor-bg);
    padding: 12px;
    border-radius: 8px;
    font-family: monospace;
    font-size: 13px;
    color: var(--rk-floor-dark);
    margin-top: 10px;
    border-left: 3px solid #64748b;
}

@media (max-width: 768px) {
    .rk-floor-header, .rk-floor-interactive { padding: 30px 20px; }
    .rk-floor-controls { flex-direction: column; }
    .rk-floor-screen { grid-template-columns: 1fr; }
    .rk-floor-visual { min-height: 160px; }
    .rk-floor-param-grid { grid-template-columns: 1fr; }
    .rk-floor-footer-grid { grid-template-columns: 1fr; padding: 0 20px 30px; gap: 15px; }
    .rk-floor-title { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#article-okladziny",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/"
    },
    "headline": "Wpływ okładziny podłogowej na wydajność frezowanej podłogówki",
    "description": "Porównanie oporu cieplnego (gres vs panele) zgodnie z normą PN-EN 1264-3. Jak wybór materiału wpływa na temperaturę zasilania i koszty pracy pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.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-17",
    "dateModified": "2026-05-17"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#dataset-opor-cieplny",
    "name": "Tabela oporu cieplnego posadzek i wpływu na zasilanie pompy ciepła",
    "description": "Techniczne zestawienie parametrów przewodzenia dla płytek ceramicznych i paneli laminowanych w układach płaszczyznowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "opór cieplny posadzki r",
      "panele na ogrzewanie podłogowe",
      "gres a podłogówka",
      "spadek temperatury okładziny",
      "norma PN-EN 1264-3"
    ],
    "measurementTechnique": "Obliczenia spadku temperatury ΔT wg prawa Fouriera dla założonej gęstości strumienia cieplnego q = 60 W/m².",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Gres/Ceramika: R = 0,015 m²·K/W. Minimalny opór, spadek temperatury to zaledwie 0,9 K.",
        "Panele podłogowe: R = 0,10 m²·K/W. Znaczny opór izolacyjny, wymuszający podniesienie zasilania o 5,1 K."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#webapp-opor-cieplny",
    "name": "Symulator Strat na Oporze Cieplnym",
    "description": "Interaktywny panel zestawiający różnice termiczne i ekonomiczne pomiędzy zastosowaniem ceramiki a drewna/paneli nad instalacją podłogową.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-floor-container state-tile" id="rk-floor-sim-app">
    <div class="rk-floor-header">
        <div class="rk-floor-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="9" y1="21" x2="9" y2="9"></line></svg>
            Materiały wykończeniowe
        </div>
        <h2 class="rk-floor-title">Jak rodzaj okładziny wpływa na wydajność frezowanej podłogówki?</h2>
        <p class="rk-floor-intro">
            Rodzaj okładziny wierzchniej decyduje o końcowej gęstości strumienia cieplnego. Zgodnie z wytycznymi normy <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/" class="rk-floor-link">PN-EN 1264-3</a>, całkowity <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/" class="rk-floor-link">opór cieplny (R) warstw posadzkowych</a> nad rurami nie może przekraczać <strong>0,15 m²·K/W</strong>. 
        </p>
        <p class="rk-floor-intro" style="margin:0;">
            Wybór między ceramiką a drewnem dramatycznie wpływa na to, czy nasze źródło ciepła będzie pracowało ekonomicznie, czy z wymuszonym, wyższym parametrem zasilania.
        </p>
    </div>

    <div class="rk-floor-interactive">
        <div class="rk-floor-controls">
            <button class="rk-floor-btn active" data-type="tile" onclick="rkSwitchFloor('tile')">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="7" height="7"></rect><rect x="14" y="3" width="7" height="7"></rect><rect x="14" y="14" width="7" height="7"></rect><rect x="3" y="14" width="7" height="7"></rect></svg>
                Gres / Płytki Ceramiczne
            </button>
            <button class="rk-floor-btn" data-type="wood" onclick="rkSwitchFloor('wood')">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="4" y1="21" x2="4" y2="14"></line><line x1="4" y1="10" x2="4" y2="3"></line><line x1="12" y1="21" x2="12" y2="12"></line><line x1="12" y1="8" x2="12" y2="3"></line><line x1="20" y1="21" x2="20" y2="16"></line><line x1="20" y1="12" x2="20" y2="3"></line></svg>
                Panele / Deska Warstwowa
            </button>
        </div>

        <div class="rk-floor-screen">
            <div class="rk-floor-visual">
                <svg class="rk-svg-cross" viewBox="0 0 100 100" preserveAspectRatio="none">
                    <circle cx="50" cy="70" r="10" fill="#cbd5e1" stroke="#334155" stroke-width="2"/>
                    <circle cx="50" cy="70" r="6" fill="#ef4444"/>

                    <path class="svg-block-wave" d="M 20 30 Q 50 40 80 30" fill="none" stroke="#ef4444" stroke-width="4" stroke-linecap="round"/>
                    
                    <path class="svg-heat-arrow" d="M 35 60 L 35 5" fill="none" stroke-width="4" stroke-linecap="round"/>
                    <path class="svg-heat-arrow" d="M 50 55 L 50 0" fill="none" stroke-width="5" stroke-linecap="round"/>
                    <path class="svg-heat-arrow" d="M 65 60 L 65 5" fill="none" stroke-width="4" stroke-linecap="round"/>
                    
                    <rect class="svg-layer-top" x="0" width="100"/>
                    <line x1="0" y1="30" x2="100" y2="30" stroke="#334155" stroke-width="2" stroke-dasharray="4 2"/>
                </svg>
            </div>

            <div class="rk-floor-param-grid">
                <div class="rk-floor-box">
                    <div class="rk-floor-label">Opór cieplny (R)</div>
                    <div class="rk-floor-value val-dynamic" id="rk-val-r">0,015 <span>m²·K/W</span></div>
                </div>
                <div class="rk-floor-box">
                    <div class="rk-floor-label">Spadek temp. warstwy (ΔT)</div>
                    <div class="rk-floor-value val-dynamic" id="rk-val-dt">0,9 <span>K</span></div>
                </div>
                <div class="rk-floor-box">
                    <div class="rk-floor-label">Wydajność (Zasilanie 35°C)</div>
                    <div class="rk-floor-value val-dynamic" id="rk-val-power">85 - 100 <span>W/m²</span></div>
                </div>
                <div class="rk-floor-box">
                    <div class="rk-floor-label">Narzut kosztów prądu (Pompa)</div>
                    <div class="rk-floor-value val-dynamic" id="rk-val-cost">0% <span>(Baza)</span></div>
                </div>

                <div class="rk-floor-feedback" id="rk-floor-msg">
                    <strong>Idealny przesył energii.</strong> Ceramika wykazuje znikomy opór cieplny. Ogrzewanie podłogowe pracuje na minimalnych temperaturach zasilania, co gwarantuje najwyższy możliwy współczynnik COP dla pompy ciepła.
                </div>
            </div>
        </div>
    </div>

    <div class="rk-floor-footer-grid">
        <div class="rk-floor-info-card">
            <h4>Obliczenie wpływu oporu posadzki</h4>
            <p>Załóżmy zapotrzebowanie na poziomie gęstości strumienia <strong>q = 60 W/m²</strong>. Wzór na spadek temperatury na samej warstwie okładziny wyznacza się z prostej zależności:</p>
            <div class="rk-math-block">
                ΔT_okładziny = q · R
            </div>
            <p style="margin-top:10px;">Dla paneli musimy podnieść temperaturę wody zasilającej rozdzielacz o całe <strong>5,1 K</strong> względem układu z gresem, by dostarczyć do pokoju tyle samo ciepła.</p>
        </div>
        <div class="rk-floor-info-card">
            <h4>Wpływ na koszty pompy ciepła</h4>
            <p>
                Każde wymuszone <a href="https://projekt-ogrzewania.pl/podlogi-drewniane-vs-panele-laminowane-co-wybrac-przy-ogrzewaniu-podlogowym/" style="color:var(--rk-floor-dark); font-weight:700;">podniesienie temperatury zasilania o 1°C</a> (aby przebić się przez barierę, jaką stanowią panele) skutkuje spadkiem sprawności sprężarki. W skali całego sezonu grzewczego oznacza to <strong>wzrost zużycia energii elektrycznej o około 2,5% na każdy stopień</strong>. Wybór drewna to ok. 12-15% wyższe rachunki za ogrzewanie.
            </p>
        </div>
    </div>
</div>

<script>
// 1. Zabezpieczenie domeny przed kradzieżą (bez H2/H3 w kodzie błędu)
document.addEventListener('DOMContentLoaded', function() {
    var checkDomain = window.location.hostname;
    var allowedHosts = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowedHosts.indexOf(checkDomain) === -1) {
        var wrapperApp = document.getElementById('rk-floor-sim-app');
        if (wrapperApp) {
            wrapperApp.innerHTML = '<div style="padding:40px; text-align:center; background:#1f2937; color:#ef4444; border-radius:20px; border:2px solid #ef4444; font-family:sans-serif; font-size:15px;"><strong>Odmowa dostępu.</strong> Ten symulator jest licencjonowany wyłącznie dla witryny Projekt-Ogrzewania.pl.</div>';
        }
    }
});

// 2. Logika przełączania symulatora
function rkSwitchFloor(type) {
    var container = document.getElementById('rk-floor-sim-app');
    var msgBox = document.getElementById('rk-floor-msg');
    
    // Zmiana przycisków
    var btns = document.querySelectorAll('.rk-floor-btn');
    btns.forEach(function(btn) { btn.classList.remove('active'); });
    document.querySelector('.rk-floor-btn[data-type="' + type + '"]').classList.add('active');

    // Zmiana klas w kontenerze (uruchamia CSS SVG)
    if (type === 'tile') {
        container.className = 'rk-floor-container state-tile';
        
        document.getElementById('rk-val-r').innerHTML = "0,015 <span>m²·K/W</span>";
        document.getElementById('rk-val-dt').innerHTML = "0,9 <span>K</span>";
        document.getElementById('rk-val-power').innerHTML = "85 - 100 <span>W/m²</span>";
        document.getElementById('rk-val-cost').innerHTML = "0% <span>(Baza)</span>";

        msgBox.innerHTML = "<strong>Idealny przesył energii.</strong> Ceramika wykazuje znikomy opór cieplny. Ogrzewanie podłogowe pracuje na minimalnych temperaturach zasilania, co gwarantuje najwyższy możliwy współczynnik COP dla pompy ciepła.";
        
    } else {
        container.className = 'rk-floor-container state-wood';
        
        document.getElementById('rk-val-r').innerHTML = "0,10 <span>m²·K/W</span>";
        document.getElementById('rk-val-dt').innerHTML = "6,0 <span>K</span>";
        document.getElementById('rk-val-power').innerHTML = "50 - 65 <span>W/m²</span>";
        document.getElementById('rk-val-cost').innerHTML = "+ 12,5% <span>(Straty)</span>";

        msgBox.innerHTML = "<strong>Izolator na podłogówce.</strong> Panele lub deski stawiają opór, blokując ciepło. Instalacja <a href='https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/' style='color:#ef4444; font-weight:700;'>wymusza podniesienie parametru zasilania</a> o dodatkowe ~5°C, by osiągnąć tę samą temperaturę w pomieszczeniu.";
    }
}
</script>



<style>
:root {
    --rk-err-dark: #0f172a; /* Głęboki asfaltowy grafit */
    --rk-err-alert: #eab308; /* Żółć ostrzegawcza (Safety Yellow) */
    --rk-err-alert-light: #fef9c3;
    --rk-err-danger: #ef4444; /* Alarmowa czerwień */
    --rk-err-danger-light: #fef2f2;
    --rk-err-bg: #f8fafc;
    --rk-err-card: #ffffff;
    --rk-err-text: #334155;
    --rk-err-border: #e2e8f0;
}

.rk-err-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-err-card);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(15, 23, 42, 0.2);
    border: 1px solid rgba(234, 179, 8, 0.3);
    overflow: hidden;
}

/* Sekcja Nagłówkowa */
.rk-err-header {
    background: linear-gradient(135deg, #1c1917 0%, var(--rk-err-dark) 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
}

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

.rk-err-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(234, 179, 8, 0.15);
    color: #fef08a;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 20px;
    border: 1px solid rgba(254, 240, 138, 0.2);
}

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

.rk-err-intro {
    font-size: 15px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
}

.rk-err-intro strong {
    color: #ffffff;
}

.rk-err-link {
    color: #fef08a;
    text-decoration: none;
    border-bottom: 1px dashed #fef08a;
    transition: all 0.3s;
}

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

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

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

/* Lewa strona: Selektor błędów */
.rk-err-menu {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-menu-btn {
    padding: 15px;
    background: #ffffff;
    border: 2px solid var(--rk-err-border);
    border-radius: 12px;
    text-align: left;
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-err-text);
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    line-height: 1.4;
}

.rk-menu-btn:hover { background: #f1f5f9; border-color: #cbd5e1; }

.rk-menu-btn.active[data-err="dust"] { border-color: var(--rk-err-alert); background: var(--rk-err-alert-light); color: #854d0e; }
.rk-menu-btn.active[data-err="deep"] { border-color: var(--rk-err-danger); background: var(--rk-err-danger-light); color: #991b1b; }
.rk-menu-btn.active[data-err="bend"] { border-color: #a855f7; background: #f3e8ff; color: #6b21a8; }

/* Prawa strona: Monitor rentgenowski i SVG */
.rk-err-monitor {
    background: #ffffff;
    border: 1px solid var(--rk-err-border);
    border-radius: 16px;
    padding: 25px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    display: flex;
    flex-direction: column;
}

.rk-err-visual-frame {
    background: #1e1b4b; /* Ciemne indygo dla efektu RTG */
    border-radius: 12px;
    padding: 20px;
    height: 180px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    position: relative;
    border: 2px solid #312e81;
}

.rk-err-svg {
    width: 100%;
    height: 100%;
    max-width: 320px;
}

/* Elementy i warstwy SVG */
.svg-layer-dust { opacity: 0; transition: opacity 0.4s; }
.svg-screed-crack { opacity: 0; stroke-dasharray: 40; stroke-dashoffset: 40; transition: opacity 0.4s; }
.svg-foil-cut { d: path("M 10 80 L 90 80"); transition: all 0.4s; }
.svg-pipe-kink { d: path("M 35 30 Q 50 40 65 30"); transition: all 0.4s; }

/* --- STANY ANIMACJI DLA POSZCZEGÓLNYCH BŁĘDÓW --- */
/* Stan: dust (Brak odkurzania i gruntu) */
.state-dust .svg-layer-dust { opacity: 1; }
.state-dust .svg-screed-crack { opacity: 1; stroke-dashoffset: 0; transition: stroke-dashoffset 0.6s 0.2s ease-out; }

/* Stan: deep (Zbyt głębokie cięcie) */
.state-deep .svg-screed-box { transform: translateY(12px); } /* Symulacja głębszego cięcia */
.state-deep .svg-foil-cut { d: path("M 10 80 L 42 80 L 50 92 L 58 80 L 90 80"); stroke: var(--rk-err-danger); }

/* Stan: bend (Zły promień gięcia) */
.state-bend .svg-pipe-kink { d: path("M 35 30 L 50 52 L 65 30"); stroke: #c084fc; stroke-width: 10; }

/* Tekst dynamiczny */
.rk-err-dynamic-text {
    margin-top: 20px;
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-err-text);
    min-height: 80px;
}

/* Dolna sekcja z kafelkami dla Mobile */
.rk-err-footer-list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    padding: 30px 50px 40px;
    background: #ffffff;
}

.rk-err-tile-card {
    background: var(--rk-err-bg);
    border: 1px solid var(--rk-err-border);
    padding: 20px;
    border-radius: 12px;
}

.rk-err-tile-card h4 {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-err-dark);
    margin: 0 0 8px 0;
}

.rk-err-tile-card p {
    font-size: 12px;
    line-height: 1.5;
    color: #64748b;
    margin: 0;
}

@media (max-width: 768px) {
    .rk-err-header, .rk-err-interactive { padding: 30px 20px; }
    .rk-err-grid-layout { grid-template-columns: 1fr; }
    .rk-err-footer-list { grid-template-columns: 1fr; padding: 0 20px 30px; gap: 15px; }
    .rk-err-title { font-size: 24px; }
    .rk-err-visual-frame { height: 150px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/"
    },
    "headline": "Najczęstsze błędy wykonawcze podczas frezowania podłogówki",
    "description": "Przewodnik po awariach i uchybieniach montażowych. Dowiedz się, dlaczego brak odkurzania bruzd, brak dylatacji i zbyt mały promień gięcia niszczą jastrych.",
    "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-17",
    "dateModified": "2026-05-17"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#dataset-awarie",
    "name": "Wskaźniki fizyczne i strukturalne błędów wykonawczych",
    "description": "Zestawienie fizycznych wartości granicznych naprężeń termicznych, długości osłon oraz ciśnień kontrolnych dla systemów jastrychów nacinanych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błędy wykonawcze frezowania ogrzewania",
      "odparzenie jastrychu naprężenia termiczne",
      "promień gięcia rury pex pert",
      "norma PN-EN 1264-4 dylatacje",
      "ciśnieniowa próba szczelności podłogówki"
    ],
    "measurementTechnique": "Analiza wytrzymałościowa adhezji zapraw pod wpływem naprężeń termicznych powyżej 0,2 N/mm² oraz weryfikacja spadków ciśnienia testowego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Naprężenia termiczne: Przekroczenie 0,2 N/mm² przy braku gruntu powoduje nieodwracalne odspojenie okładziny.",
        "Promień łuku: Przekroczenie kryterium r < 5d generuje mikropęknięcia struktury polimeru i wzrost oporów o 40%."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#webapp-detektor-bledow",
    "name": "Interaktywny Detektor Uszkodzeń Przegrody",
    "description": "Aplikacja symulująca rtg posadzki i wizualizująca skutki mechaniczne oraz hydrauliczne zaniechania procedur normatywnych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container" id="rk-damage-detector-app">
    <div class="rk-err-header">
        <div class="rk-err-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><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>
            Czerwone Flagi Montażu
        </div>
        <h2 class="rk-err-title">Jakie są najczęstsze błędy wykonawcze podczas frezowania podłogówki?</h2>
        <p class="rk-err-intro">
            Najpoważniejszym uchybieniem jest niedokładne oczyszczenie i zaniechanie gruntowania wyfrezowanych rowków przed aplikacją masy wypełniającej. Skutkuje to brakiem adhezji i <strong>odparzeniem jastrychu pod wpływem naprężeń termicznych o wartości powyżej 0,2 N/mm²</strong>. Pył powstały podczas cięcia działa jak warstwa separacyjna – jeśli nie zostanie odessany odkurzaczem przemysłowym klasy M, wlewana masa naprawcza nie zwiąże się strukturalnie z podłożem.
        </p>
        <p class="rk-err-intro" style="margin-top: 15px;">
            Kolejnym krytycznym błędem jest <strong>zbyt głębokie frezowanie (powyżej 25 mm)</strong>, które w wylewkach o grubości 40 mm przecina jastrych na wylot, niszcząc izolację przeciwwilgociową z folii i doprowadzając do penetracji wody w głąb stropu.
        </p>
    </div>

    <div class="rk-err-interactive">
        <div id="rk-err-view-core" class="rk-err-grid-layout state-dust">
            
            <div class="rk-err-menu">
                <button class="rk-menu-btn active" data-err="dust" onclick="rkToggleError('dust')">1. Pył i brak gruntowania bruzd</button>
                <button class="rk-menu-btn" data-err="deep" onclick="rkToggleError('deep')">2. Zbyt głęboki wykop frezarki</button>
                <button class="rk-menu-btn" data-err="bend" onclick="rkToggleError('bend')">3. Załamanie rury na zakręcie</button>
            </div>

            <div class="rk-err-monitor">
                <div class="rk-err-visual-frame">
                    <svg class="rk-err-svg" viewBox="0 0 100 100">
                        <rect x="0" y="85" width="100" height="15" fill="#1e1b4b"/>
                        
                        <path class="svg-foil-cut" fill="none" stroke="#6366f1" stroke-width="2"/>

                        <g class="svg-screed-box" style="transition: transform 0.4s;">
                            <rect x="10" y="30" width="80" height="50" fill="#475569" opacity="0.8"/>
                            <path d="M 35 30 L 35 60 L 65 60 L 65 30" fill="#1e1b4b"/>
                            
                            <path class="svg-layer-dust" d="M 35 30 L 35 60 L 65 60 L 65 30" fill="none" stroke="#eab308" stroke-width="3"/>
                            
                            <path class="svg-pipe-kink" fill="none" stroke="#ef4444" stroke-width="8" stroke-linecap="round"/>
                            <path class="svg-pipe-kink" fill="none" stroke="#38bdf8" stroke-width="4" stroke-linecap="round"/>

                            <path class="svg-screed-crack" d="M 35 45 L 20 40 M 65 50 L 85 55 M 50 60 L 50 75" fill="none" stroke="#ef4444" stroke-width="2" stroke-linecap="round"/>
                        </g>
                    </svg>
                </div>

                <div class="rk-err-dynamic-text" id="rk-err-text-content">
                    Wadliwe wykonanie. Pozostawiony mącznik i pył betonowy drastycznie ograniczają adhezję mas cementowych. Pod wpływem naprężeń termicznych powyżej <strong>0,2 N/mm²</strong> górna warstwa posadzki pęka i odkleja się od starego podłoża, niszcząc płytki lub panele.
                </div>
            </div>

        </div>
    </div>

    <div class="rk-err-footer-list">
        <div class="rk-err-tile-card" style="border-top: 3px solid var(--rk-err-alert);">
            <h4>Brak dylatacji progowych</h4>
            <p>
                Zignorowanie wytycznych normy <strong>PN-EN 1264-4</strong> w progach drzwiowych skutkuje pękaniem jastrychu. Rury przechodzące przez szczeliny dylatacyjne muszą bezwzględnie biec w peszlach ochronnych o długości min. <strong>400 mm</strong>.
            </p>
        </div>
        <div class="rk-err-tile-card" style="border-top: 3px solid #a855f7;">
            <h4>Zaginanie rury "na siłę"</h4>
            <p>
                Przekroczenie minimalnego promienia gięcia (<strong>r < 5d</strong>, czyli poniżej <strong>70 mm</strong> dla rury 14 mm) wywołuje mikropęknięcia struktury polimeru EVOH. <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/" style="color:#a855f7; font-weight:700;">Zadławienie przekroju rury</a> podnosi opory hydrauliczne o ponad <strong>40%</strong>.
            </p>
        </div>
        <div class="rk-err-tile-card" style="border-top: 3px solid var(--rk-err-danger);">
            <h4>Zalewanie bez próby 0,6 MPa</h4>
            <p>
                Zalanie bruzd masą samopoziomującą bez wykonania 24-godzinnego testu szczelności to skrajna nieodpowiedzialność. Rury muszą pozostać pod <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/" style="color:var(--rk-err-danger); font-weight:700;">roboczym ciśnieniem próbnym</a> podczas całego procesu aplikacji chemii budowlanej.
            </p>
        </div>
    </div>
</div>

<script>
// 1. Ochrona licencji kodu (bez tagów nagłówkowych H2/H3 w komunikacie)
document.addEventListener('DOMContentLoaded', function() {
    var currentDomain = window.location.hostname;
    var whitelist = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (whitelist.indexOf(currentDomain) === -1) {
        var wrapper = document.getElementById('rk-damage-detector-app');
        if (wrapper) {
            wrapper.innerHTML = '<div style="padding:40px; text-align:center; background:#1c1917; color:#ef4444; border-radius:20px; border:2px solid #ef4444; font-family:sans-serif; font-size:15px;"><strong>Naruszenie protokołu bezpieczeństwa.</strong> Skrypt monitorowania błędów wykonawczych jest przypisany wyłącznie do serwisu Projekt-Ogrzewania.pl.</div>';
        }
    }
});

// 2. Logika przełącznika błędów wykonawczych
function rkToggleError(errorType) {
    var coreView = document.getElementById('rk-err-view-core');
    var textFrame = document.getElementById('rk-err-text-content');

    // Reset klas widoku
    coreView.className = "rk-err-grid-layout";
    coreView.classList.add('state-' + errorType);

    // Zmiana klas aktywności przycisków menu
    var buttons = document.querySelectorAll('.rk-menu-btn');
    buttons.forEach(function(b) { b.classList.remove('active'); });
    document.querySelector('.rk-menu-btn[data-err="' + errorType + '"]').classList.add('active');

    // Dynamiczna aktualizacja tekstu inżynierskiego
    if (errorType === 'dust') {
        textFrame.innerHTML = "Wadliwe wykonanie. Pozostawiony mącznik i pył betonowy drastycznie ograniczają adhezję mas cementowych. Pod wpływem naprężeń termicznych powyżej <strong>0,2 N/mm²</strong> górna warstwa posadzki pęka i odkleja się od starego podłoża, niszcząc płytki lub panele.";
    } else if (errorType === 'deep') {
        textFrame.innerHTML = "Krytyczne osłabienie jastrychu. Frezowanie na głębokość powyżej <strong>25 mm</strong> przy cienkiej wylewce przecina beton konstrukcyjny i rozrywa dolną <a href='https://projekt-ogrzewania.pl/jakie-sposoby-izolacji-pod-ogrzewanie-podlogowe/' style='color:var(--rk-err-danger); font-weight:700;'>folię izolacyjną</a>. Woda z masy zarobowej przenika w głąb stropu, wywołując zacieki.";
    } else {
        textFrame.innerHTML = "Wada hydrauliczna. Gięcie rury ze zbyt małym promieniem (<strong>poniżej 70 mm</strong>) powoduje przewężenie przekroju (tzw. załamanie rury). Skutkuje to lokalnym <a href='https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/' style='color:#6b21a8; font-weight:700;'>wzrostem oporów hydraulicznych obwodu o ponad 40%</a> i dławieniem przepływu.";
    }
}
</script>



<style>
:root {
    --rk-cs2-dark: #0f172a; /* Głęboki granat */
    --rk-cs2-brand: #10b981; /* Szmaragdowy - Sukces */
    --rk-cs2-brand-light: #d1fae5;
    --rk-cs2-accent: #3b82f6; /* Błękit inżynierski */
    --rk-cs2-danger: #ef4444; /* Czerwony - Awaria/Błąd */
    --rk-cs2-danger-light: #fee2e2;
    --rk-cs2-bg: #f8fafc;
    --rk-cs2-card: #ffffff;
    --rk-cs2-text: #475569;
    --rk-cs2-border: #e2e8f0;
}

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

/* ================= HEADER ================= */
.rk-cs2-header {
    background: linear-gradient(135deg, var(--rk-cs2-dark) 0%, #1e293b 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    overflow: hidden;
}

.rk-cs2-header::after {
    content: '';
    position: absolute;
    top: -100px;
    right: -50px;
    width: 300px;
    height: 300px;
    background: radial-gradient(circle, rgba(16, 185, 129, 0.15) 0%, transparent 70%);
    border-radius: 50%;
    pointer-events: none;
}

.rk-cs2-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(16, 185, 129, 0.2);
    color: #6ee7b7;
    padding: 8px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 25px;
    border: 1px solid rgba(110, 231, 183, 0.2);
}

.rk-cs2-title {
    font-size: 32px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 25px 0;
    color: #ffffff;
    position: relative;
    z-index: 2;
}

/* Kafelki metryczki w headerze */
.rk-cs2-stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
    position: relative;
    z-index: 2;
}

.rk-cs2-stat-box {
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.1);
    padding: 15px;
    border-radius: 12px;
    backdrop-filter: blur(8px);
}

.rk-cs2-stat-label {
    display: block;
    font-size: 11px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 700;
    margin-bottom: 5px;
    letter-spacing: 0.5px;
}

.rk-cs2-stat-value {
    display: block;
    font-size: 17px;
    font-weight: 900;
    color: #ffffff;
}

/* ================= AUTOR I WSTĘP ================= */
.rk-cs2-intro-section {
    padding: 40px 50px 30px;
    background: #ffffff;
}

.rk-cs2-author-box {
    background: var(--rk-cs2-bg);
    border-left: 4px solid var(--rk-cs2-accent);
    padding: 20px;
    border-radius: 0 16px 16px 0;
    display: flex;
    align-items: center;
    gap: 20px;
    margin-bottom: 25px;
}

.rk-cs2-author-photo {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    object-fit: cover;
    border: 3px solid #ffffff;
    box-shadow: 0 4px 15px rgba(59, 130, 246, 0.2);
    flex-shrink: 0;
}

.rk-cs2-author-text {
    font-size: 15px;
    color: var(--rk-cs2-dark);
    line-height: 1.6;
    margin: 0;
}

.rk-cs2-author-text a {
    color: var(--rk-cs2-accent);
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 3px;
}

.rk-cs2-lead {
    font-size: 15px;
    line-height: 1.8;
    color: var(--rk-cs2-text);
    margin: 0 0 15px 0;
}

.rk-cs2-lead strong {
    color: var(--rk-cs2-dark);
}

/* ================= INTERAKTYWNA ANALIZA BŁĘDU ================= */
.rk-cs2-interactive {
    padding: 0 50px 40px;
}

.rk-cs2-sim-wrapper {
    background: #ffffff;
    border: 1px solid var(--rk-cs2-border);
    border-radius: 20px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    overflow: hidden;
}

/* Zakładki sterujące */
.rk-cs2-tabs {
    display: flex;
    border-bottom: 1px solid var(--rk-cs2-border);
    background: var(--rk-cs2-bg);
}

.rk-cs2-tab-btn {
    flex: 1;
    padding: 20px;
    border: none;
    background: transparent;
    font-size: 15px;
    font-weight: 800;
    color: #64748b;
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

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

.rk-cs2-tab-btn.active[data-view="amateur"] {
    background: #ffffff;
    color: #b91c1c;
    border-bottom: 3px solid var(--rk-cs2-danger);
}

.rk-cs2-tab-btn.active[data-view="pro"] {
    background: #ffffff;
    color: #047857;
    border-bottom: 3px solid var(--rk-cs2-brand);
}

/* Ekran SVG + Wyniki */
.rk-cs2-screen {
    display: grid;
    grid-template-columns: 320px 1fr;
    gap: 30px;
    padding: 30px;
}

.rk-cs2-visual {
    background: var(--rk-cs2-dark);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    border: 2px solid #1e293b;
}

.rk-cs2-svg { width: 100%; height: 100%; }

/* --- NOWE Animacje i warstwy dla rzutu (Blueprint) --- */
.svg-blueprint-path { fill: none; stroke-linecap: round; stroke-linejoin: round; transition: opacity 0.4s; }
.svg-flow-anim { stroke-dasharray: 8 8; animation: flowBlueprint 1s linear infinite; }
.svg-gauge-pointer { transform-origin: 50px 50px; transition: transform 0.6s cubic-bezier(0.34, 1.56, 0.64, 1); }

@keyframes flowBlueprint { to { stroke-dashoffset: -16; } }
@keyframes pulseDanger { 0% { filter: drop-shadow(0 0 2px #ef4444); } 100% { filter: drop-shadow(0 0 10px #ef4444); } }

/* Stan 1: Amatorski (1 długa pętla = Błąd) */
.state-amateur .svg-blueprint-amateur { opacity: 1; stroke: #ef4444; }
.state-amateur .svg-blueprint-pro { opacity: 0; }
.state-amateur .svg-gauge-pointer { transform: rotate(120deg); stroke: #ef4444; }
.state-amateur .svg-danger-ring { stroke: #ef4444; animation: pulseDanger 1s infinite alternate; opacity: 1; }

/* Stan 2: Pro (3 krótkie strefy = Sukces) */
.state-pro .svg-blueprint-amateur { opacity: 0; }
.state-pro .svg-blueprint-pro { opacity: 1; stroke: #10b981; }
.state-pro .svg-gauge-pointer { transform: rotate(-50deg); stroke: #10b981; }
.state-pro .svg-danger-ring { opacity: 0; }

/* Panel Wyników Textowych */
.rk-cs2-data-panel {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-cs2-data-title {
    font-size: 18px;
    font-weight: 900;
    margin: 0 0 15px 0;
    color: var(--rk-cs2-dark);
}

.rk-cs2-data-desc {
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-cs2-text);
    margin: 0 0 20px 0;
}

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

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

.rk-cs2-metric-lbl { font-size: 11px; color: #64748b; font-weight: 800; text-transform: uppercase; margin-bottom: 5px; }
.rk-cs2-metric-val { font-size: 18px; font-weight: 900; color: var(--rk-cs2-dark); }
.rk-cs2-metric-val span { font-size: 13px; font-weight: 600; color: #94a3b8; }

.state-amateur .dyn-color { color: #dc2626; }
.state-pro .dyn-color { color: #059669; }

/* ================= REZULTATY I CTA ================= */
.rk-cs2-results-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    padding: 0 50px 40px;
}

.rk-cs2-result-card {
    background: #ffffff;
    border: 1px solid var(--rk-cs2-border);
    padding: 25px;
    border-radius: 16px;
    position: relative;
    overflow: hidden;
}

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

.rk-cs2-result-card.gold::before { background: #f59e0b; }

.rk-cs2-result-lbl { font-size: 12px; color: #64748b; font-weight: 800; text-transform: uppercase; margin-bottom: 10px; }
.rk-cs2-result-val { font-size: 26px; font-weight: 900; color: var(--rk-cs2-dark); margin-bottom: 10px; }
.rk-cs2-result-desc { font-size: 13px; color: var(--rk-cs2-text); line-height: 1.5; margin: 0; }

/* CTA */
.rk-cs2-cta {
    background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
    padding: 40px 50px;
    text-align: center;
    border-top: 4px solid var(--rk-cs2-accent);
}

.rk-cs2-cta-h3 { font-size: 22px; font-weight: 900; color: #ffffff; margin: 0 0 15px 0; }
.rk-cs2-cta-p { font-size: 15px; color: #94a3b8; line-height: 1.6; max-width: 700px; margin: 0 auto 30px auto; }

.rk-cs2-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-cs2-accent);
    color: #ffffff;
    font-size: 16px;
    font-weight: 900;
    padding: 18px 36px;
    border-radius: 12px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(59, 130, 246, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-cs2-btn:hover { transform: translateY(-4px); background: #2563eb; box-shadow: 0 15px 35px -5px rgba(59, 130, 246, 0.5); }
.rk-cs2-btn svg { transition: transform 0.3s; }
.rk-cs2-btn:hover svg { transform: translateX(5px); }

@media (max-width: 768px) {
    .rk-cs2-header, .rk-cs2-intro-section, .rk-cs2-interactive, .rk-cs2-cta { padding: 30px 20px; }
    .rk-cs2-stats-grid { grid-template-columns: 1fr 1fr; }
    .rk-cs2-author-box { flex-direction: column; text-align: center; border-left: none; border-top: 4px solid var(--rk-cs2-accent); border-radius: 0 0 16px 16px; }
    .rk-cs2-tabs { flex-direction: column; }
    .rk-cs2-screen { grid-template-columns: 1fr; padding: 20px; }
    .rk-cs2-results-grid { grid-template-columns: 1fr; padding: 0 20px 30px; }
    .rk-cs2-visual { height: 220px; }
    .rk-cs2-title { font-size: 24px; }
    .rk-cs2-btn { width: 100%; padding: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/"
    },
    "headline": "Case Study: Rzeczywisty projekt termomodernizacji w Szczecinie",
    "description": "Analiza inżynierska termomodernizacji 135 m² domu ze zmianą źródła ciepła na pompę. Redukcja pętli z 110m do 72m uchroniła instalację przed oporami rzędu 38 kPa.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-17",
    "dateModified": "2026-05-17"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#dataset-szczecin",
    "name": "Parametry Projektowe i Oszczędności - Termomodernizacja Szczecin",
    "description": "Zestawienie parametrów wejściowych budynku wykorzystanych do optymalizacji hydraulicznej zasilania ogrzewania podłogowego po frezowaniu.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego frezowanego",
      "opory hydrauliczne 38 kpa rura 14mm",
      "maksymalna długość pętli ogrzewania podłogowego",
      "projektowe obciążenie cieplne budynku 7.8 kw",
      "wymiana kotła na pompę ciepła szczecin"
    ],
    "measurementTechnique": "Obliczenia hydrauliczne długości pętli (max 72 m) względem projektowego obciążenia cieplnego (7,8 kW) w celu zapobieżenia zjawisku dławienia przepływów.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przed poprawkami OZC: Planowane pętle 110 m, opór krytyczny 38 kPa (awaria).",
        "Po wdrożeniu OZC: Podział na 11 pętli max 72 m, opór bezpieczny 14,2 kPa, roczne oszczędności eksploatacyjne 42%."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#webapp-symulator-szczecin",
    "name": "Symulator Optymalizacji Hydraulicznej Szczecin",
    "description": "Panel analityczny wizualizujący błąd przewymiarowania długości pętli i wzrostu oporów względem optymalnego podziału obiegów grzewczych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-cs2-container" id="rk-casestudy-app">
    <div class="rk-cs2-header">
        <div class="rk-cs2-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg>
            Case Study (Projekt Wdrożeniowy)
        </div>
        <h2 class="rk-cs2-title">Rzeczywisty projekt termomodernizacji w Szczecinie</h2>
        
        <div class="rk-cs2-stats-grid">
            <div class="rk-cs2-stat-box">
                <span class="rk-cs2-stat-label">Termin</span>
                <span class="rk-cs2-stat-value">Wrzesień 2026</span>
            </div>
            <div class="rk-cs2-stat-box">
                <span class="rk-cs2-stat-label">Lokalizacja</span>
                <span class="rk-cs2-stat-value">Szczecin</span>
            </div>
            <div class="rk-cs2-stat-box">
                <span class="rk-cs2-stat-label">Powierzchnia</span>
                <span class="rk-cs2-stat-value">135 m²</span>
            </div>
            <div class="rk-cs2-stat-box">
                <span class="rk-cs2-stat-label">System</span>
                <span class="rk-cs2-stat-value">Pompa Ciepła</span>
            </div>
        </div>
    </div>

    <div class="rk-cs2-intro-section">
        <div class="rk-cs2-author-box">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski Inżynier HVAC" class="rk-cs2-author-photo" loading="lazy">
            <p class="rk-cs2-author-text">
                "Inwestor Mariusz zmagał się z problemem drastycznie wysokich kosztów utrzymania starego kotła węglowego. Całkowity brak możliwości podniesienia posadzek (osadzone ościeżnice) narzucił jedyne racjonalne rozwiązanie..." – <strong><a href="https://projekt-ogrzewania.pl/">Robert Kucharski</a></strong>, CEO.
            </p>
        </div>
        
        <p class="rk-cs2-lead">
            Szybka odpowiedź inżynierska polegała na całkowitej rezygnacji z grzejników na rzecz frezowania wylewki jastrychowej pod rury 14x2 mm. Rozstaw ustalono na <strong>100 mm w strefach brzegowych</strong> i łazience oraz 150 mm w salonie. Pozwoliło to na zasilanie układu bardzo niskim parametrem 35°C z pompy ciepła split.
        </p>
        <p class="rk-cs2-lead" style="margin:0;">
            Optymalnie wykorzystaliśmy stary jastrych o grubości 45 mm. Po wycięciu bruzd na 20 mm, podłoga zachowała pełną stabilność. Mikroskopijna masa przykrywająca (zaledwie 3 mm chemii) zredukowała opór cieplny, <strong>skracając czas nagrzewania do zaledwie 45 minut!</strong>
        </p>
    </div>

    <div class="rk-cs2-interactive">
        <div class="rk-cs2-sim-wrapper">
            <div class="rk-cs2-tabs">
                <button class="rk-cs2-tab-btn active" data-view="amateur" onclick="rkSwitchCase('amateur')">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                    Błąd Instalatora (Instalacja z głowy)
                </button>
                <button class="rk-cs2-tab-btn" data-view="pro" onclick="rkSwitchCase('pro')">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="20 6 9 17 4 12"></polyline></svg>
                    Wdrożenie Projektu (Obliczenia OZC)
                </button>
            </div>

            <div id="rk-cs2-screen" class="rk-cs2-screen state-amateur">
                
                <div class="rk-cs2-visual">
                    <svg class="rk-cs2-svg" viewBox="0 0 100 100">
                        <rect x="5" y="5" width="90" height="90" fill="none" stroke="#334155" stroke-width="2"/>
                        <rect x="7" y="7" width="86" height="86" fill="#1e293b"/>

                        <rect x="2" y="15" width="6" height="70" fill="#64748b" rx="1"/>

                        <path class="svg-blueprint-path svg-blueprint-amateur svg-flow-anim" d="M 8 20 L 85 20 L 85 30 L 15 30 L 15 40 L 85 40 L 85 50 L 15 50 L 15 60 L 85 60 L 85 70 L 15 70 L 15 80 L 8 80" stroke-width="3" stroke-linejoin="round"/>

                        <path class="svg-blueprint-path svg-blueprint-pro svg-flow-anim" d="M 8 16 L 85 16 L 85 30 L 8 30" stroke-width="3" stroke-linejoin="round"/>
                        <path class="svg-blueprint-path svg-blueprint-pro svg-flow-anim" d="M 8 43 L 85 43 L 85 57 L 8 57" stroke-width="3" stroke-linejoin="round" style="animation-delay: 0.3s;"/>
                        <path class="svg-blueprint-path svg-blueprint-pro svg-flow-anim" d="M 8 70 L 85 70 L 85 84 L 8 84" stroke-width="3" stroke-linejoin="round" style="animation-delay: 0.6s;"/>

                        <circle cx="50" cy="50" r="18" fill="#0f172a" stroke="#475569" stroke-width="2"/>
                        <circle class="svg-danger-ring" cx="50" cy="50" r="18" fill="none" stroke-width="2"/>
                        <path d="M 40 50 A 10 10 0 1 1 60 50" fill="none" stroke="#64748b" stroke-width="2" stroke-linecap="round"/>
                        <line class="svg-gauge-pointer" x1="50" y1="50" x2="50" y2="40" stroke-width="2.5" stroke-linecap="round"/>
                        <circle cx="50" cy="50" r="2.5" fill="#cbd5e1"/>
                    </svg>
                </div>

                <div class="rk-cs2-data-panel">
                    <h4 class="rk-cs2-data-title" id="cs2-title">Zamknięcie Hydrauliczne Pętli</h4>
                    <p class="rk-cs2-data-desc" id="cs2-desc">
                        Pierwotny instalator chciał układać pętle o długości 110 m dla rury 14 mm. Taka odległość drastycznie dławi przepływ, tworząc gigantyczny opór. Woda omijałaby tę pętlę, a pomieszczenie pozostałoby zimne.
                    </p>
                    <div class="rk-cs2-metrics">
                        <div class="rk-cs2-metric-box">
                            <div class="rk-cs2-metric-lbl">Długość pętli</div>
                            <div class="rk-cs2-metric-val dyn-color" id="cs2-val-len">110 <span>mb</span></div>
                        </div>
                        <div class="rk-cs2-metric-box">
                            <div class="rk-cs2-metric-lbl">Opór całkowity</div>
                            <div class="rk-cs2-metric-val dyn-color" id="cs2-val-pres">38,0 <span>kPa (Krytyczny)</span></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-cs2-results-grid">
        <div class="rk-cs2-result-card">
            <div class="rk-cs2-result-lbl">Bilans OZC (-20°C)</div>
            <div class="rk-cs2-result-val">7,8 kW</div>
            <p class="rk-cs2-result-desc">Zapotrzebowanie wyliczone przez inżyniera. Gęstość strumienia cieplnego to zaledwie <strong>58 W/m²</strong>.</p>
        </div>
        <div class="rk-cs2-result-card">
            <div class="rk-cs2-result-lbl">Roczne oszczędności</div>
            <div class="rk-cs2-result-val" style="color:var(--rk-cs2-brand);">42%</div>
            <p class="rk-cs2-result-desc">Tyle wynosi zysk na kosztach eksploatacji w porównaniu do starego systemu grzewczego na węgiel.</p>
        </div>
        <div class="rk-cs2-result-card gold">
            <div class="rk-cs2-result-lbl">Ochrona budżetu</div>
            <div class="rk-cs2-result-val" style="color:#b45309;">14 500 zł</div>
            <p class="rk-cs2-result-desc">Tyle inwestor uniknął strat za poprawki, wymianę zniszczonej pompy i naprawy odparzonego jastrychu.</p>
        </div>
    </div>

    <div class="rk-cs2-cta">
        <h3 class="rk-cs2-cta-h3">Chcesz uniknąć błędów, które kosztują tysiące?</h3>
        <p class="rk-cs2-cta-p">
            Zastosowanie rur z barierą antydyfuzyjną EVOH, rygorystyczne trzymanie się oporów hydraulicznych i dobór pompy na bazie OZC to klucz do sukcesu. Zainwestuj w spokój na lata.
        </p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-cs2-btn">
            ZAMÓW PROJEKT INSTALACJI PODŁOGOWEJ
            <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>
// 1. Zabezpieczenie przed nieautoryzowanym skopiowaniem (Bez tagów H w komunikacie)
document.addEventListener('DOMContentLoaded', function() {
    var checkDom = window.location.hostname;
    var allowedDom = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowedDom.indexOf(checkDom) === -1) {
        var wrapApp = document.getElementById('rk-casestudy-app');
        if (wrapApp) {
            wrapApp.innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:24px; border:2px solid #ef4444; font-family:sans-serif; font-size:16px;"><strong>Odmowa autoryzacji licencji.</strong> Moduł Case Study jest własnością intelektualną serwisu Projekt-Ogrzewania.pl.</div>';
        }
    }
});

// 2. Logika przełączania symulacji (Amator vs Inżynier)
function rkSwitchCase(mode) {
    var screen = document.getElementById('rk-cs2-screen');
    
    // Zmiana aktywności zakładek
    var tabs = document.querySelectorAll('.rk-cs2-tab-btn');
    tabs.forEach(function(t) { t.classList.remove('active'); });
    document.querySelector('.rk-cs2-tab-btn[data-view="' + mode + '"]').classList.add('active');

    // Wymiana danych tekstowych i klas animacji
    if (mode === 'pro') {
        screen.className = 'rk-cs2-screen state-pro';
        document.getElementById('cs2-title').innerText = "Inżynierski Podział Obwodów";
        document.getElementById('cs2-desc').innerHTML = "Dzięki interwencji zaimplementowano projekt oparty o <strong>11 pętli o maksymalnej długości 72 m</strong>. Opór spadł do bezpiecznej wartości. Pompa obiegowa działa na średnim biegu, zużywając zaledwie 22W energii elektrycznej.";
        document.getElementById('cs2-val-len').innerHTML = "max 72 <span>mb</span>";
        document.getElementById('cs2-val-pres').innerHTML = "14,2 <span>kPa (Bezpieczny)</span>";
    } else {
        screen.className = 'rk-cs2-screen state-amateur';
        document.getElementById('cs2-title').innerText = "Zamknięcie Hydrauliczne Pętli";
        document.getElementById('cs2-desc').innerHTML = "Pierwotny instalator chciał układać pętle o długości 110 m dla rury 14 mm. Taka odległość drastycznie dławi przepływ, tworząc gigantyczny opór. Woda omijałaby tę pętlę, a pomieszczenie pozostałoby zimne.";
        document.getElementById('cs2-val-len').innerHTML = "110 <span>mb</span>";
        document.getElementById('cs2-val-pres').innerHTML = "38,0 <span>kPa (Krytyczny)</span>";
    }
}
</script>



<style>
:root {
    --rk-quote-dark: #0f172a; /* Głęboki granat */
    --rk-quote-brand: #10b981; /* Szmaragd / Sukces */
    --rk-quote-accent: #f59e0b; /* Inżynierskie Złoto */
    --rk-quote-danger: #ef4444; /* Czerwień / Błąd */
    --rk-quote-bg: #f8fafc;
    --rk-quote-card: #ffffff;
    --rk-quote-text: #475569;
    --rk-quote-border: #e2e8f0;
}

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

/* ================= HEADER & CYTAT ================= */
.rk-quote-header {
    background: linear-gradient(135deg, #1e293b 0%, var(--rk-quote-dark) 100%);
    padding: 50px 60px;
    color: #ffffff;
    position: relative;
    overflow: hidden;
    border-bottom: 4px solid var(--rk-quote-accent);
}

.rk-quote-header::before {
    content: '"';
    position: absolute;
    top: -20px;
    left: 20px;
    font-size: 200px;
    font-family: serif;
    color: rgba(255, 255, 255, 0.05);
    line-height: 1;
    pointer-events: none;
}

.rk-quote-content {
    position: relative;
    z-index: 2;
}

.rk-quote-text {
    font-size: 22px;
    font-weight: 800;
    line-height: 1.6;
    color: #f1f5f9;
    margin: 0 0 25px 0;
    font-style: italic;
}

.rk-quote-author {
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-quote-photo {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid var(--rk-quote-accent);
}

.rk-quote-author-details h4 {
    margin: 0 0 4px 0;
    font-size: 16px;
    font-weight: 900;
    color: #ffffff;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-quote-author-details p {
    margin: 0;
    font-size: 13px;
    color: #94a3b8;
    font-weight: 600;
}

/* ================= WNIOSKI INTERAKTYWNE ================= */
.rk-quote-interactive {
    padding: 40px 50px;
    background: var(--rk-quote-bg);
}

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

.rk-quote-tab-btn {
    flex: 1;
    max-width: 320px;
    padding: 16px 20px;
    border: 2px solid var(--rk-quote-border);
    background: #ffffff;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-quote-text);
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.rk-quote-tab-btn:hover { background: #f1f5f9; border-color: #cbd5e1; }

.rk-quote-tab-btn.active[data-view="rule"] {
    border-color: var(--rk-quote-brand);
    background: #ecfdf5;
    color: #065f46;
    box-shadow: 0 8px 20px -5px rgba(16, 185, 129, 0.2);
}

.rk-quote-tab-btn.active[data-view="trap"] {
    border-color: var(--rk-quote-danger);
    background: #fef2f2;
    color: #991b1b;
    box-shadow: 0 8px 20px -5px rgba(239, 68, 68, 0.2);
}

/* Panel SVG + Tekst */
.rk-quote-screen {
    display: grid;
    grid-template-columns: 280px 1fr;
    gap: 30px;
    background: #ffffff;
    border: 1px solid var(--rk-quote-border);
    border-radius: 16px;
    padding: 25px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-quote-visual {
    background: var(--rk-quote-dark);
    border-radius: 12px;
    padding: 15px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
    border: 2px solid #1e293b;
    height: 180px;
}

.rk-quote-svg { width: 100%; height: 100%; }

/* --- Animacje SVG --- */
.svg-q-pipe { stroke-dasharray: 8 8; animation: qFlow 1s linear infinite; }
.svg-q-dust { opacity: 0; animation: qDustFloat 2s infinite alternate; }
.svg-q-crack { stroke-dasharray: 50; stroke-dashoffset: 50; transition: stroke-dashoffset 0.5s ease-out; }
.svg-q-heat { stroke-dasharray: 6 6; animation: qHeatUp 1.5s linear infinite; }

@keyframes qFlow { to { stroke-dashoffset: -16; } }
@keyframes qDustFloat { 0% { transform: translateY(0); opacity: 0.2; } 100% { transform: translateY(-5px); opacity: 0.8; } }
@keyframes qHeatUp { to { stroke-dashoffset: -12; } }

/* Stan: Rule (Sukces) */
.state-rule .svg-q-concrete { fill: #334155; }
.state-rule .svg-q-pipe-bg { fill: #1e293b; stroke: #10b981; }
.state-rule .svg-q-pipe { stroke: #10b981; }
.state-rule .svg-q-dust { display: none; }
.state-rule .svg-q-crack { display: none; }
.state-rule .svg-q-heat { opacity: 1; stroke: #f59e0b; }

/* Stan: Trap (Błąd) */
.state-trap .svg-q-concrete { fill: #475569; }
.state-trap .svg-q-pipe-bg { fill: #1e293b; stroke: #ef4444; }
.state-trap .svg-q-pipe { stroke: #ef4444; animation-duration: 3s; } /* Słaby przepływ */
.state-trap .svg-q-dust { display: block; }
.state-trap .svg-q-crack { stroke-dashoffset: 0; stroke: #ef4444; }
.state-trap .svg-q-heat { opacity: 0; } /* Brak ciepła */

/* Tekst podsumowania */
.rk-quote-info {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-quote-info-title {
    font-size: 18px;
    font-weight: 900;
    margin: 0 0 12px 0;
    color: var(--rk-quote-dark);
}

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

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

@media (max-width: 768px) {
    .rk-quote-header { padding: 40px 25px; }
    .rk-quote-text { font-size: 18px; }
    .rk-quote-interactive { padding: 30px 20px; }
    .rk-quote-tabs { flex-direction: column; gap: 10px; }
    .rk-quote-tab-btn { max-width: 100%; }
    .rk-quote-screen { grid-template-columns: 1fr; padding: 20px; }
    .rk-quote-visual { height: 160px; max-width: 280px; margin: 0 auto; width: 100%; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/"
    },
    "headline": "Podsumowanie eksperckie – Frezowanie podłogówki",
    "description": "Frezowanie starej wylewki to technologiczny skrót, który wymaga ogromnej precyzji. Odkryj główne zasady i pułapki modernizacji.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-17",
    "dateModified": "2026-05-17"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#dataset-wnioski",
    "name": "Zestawienie kluczowych parametrów bezpieczeństwa modernizacji",
    "description": "Ostateczna weryfikacja poprawności montażu systemu cienkowarstwowego w oparciu o czystość, adhezję i obliczenia OZC.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "podsumowanie frezowania podłogówki",
      "złote zasady montażu ogrzewania",
      "odkurzanie bruzd frezowanych",
      "pękanie starej wylewki",
      "zastosowanie bariery evoh"
    ],
    "measurementTechnique": "Weryfikacja organoleptyczna oraz analityczna szczelności hydraulicznej i stabilności mechanicznej zmodernizowanej przegrody.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Złota Zasada: Idealne odessanie pyłu, zastosowanie rury EVOH, dokładne zgruntowanie bruzd.",
        "Główny Błąd: Pozostawienie pyłu separacyjnego, brak obliczeń oporów hydraulicznych, rura bez bariery antytlenowej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#webapp-wnioski",
    "name": "Interaktywny Panel Podsumowujący",
    "description": "Narzędzie edukacyjne wizualizujące różnice fizyczne pomiędzy prawidłowo zrealizowaną modernizacją a najczęstszymi błędami instalatorskimi.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-quote-container" id="rk-quote-app">
    <div class="rk-quote-header">
        <div class="rk-quote-content">
            <p class="rk-quote-text">
                "Frezowanie starej wylewki to wspaniały technologiczny skrót, który wybacza brak miejsca na grube izolacje, ale nigdy nie wybacza braku precyzji wykonawczej. Bez dokładnego odsysania pyłu, rury z barierą EVOH i rzetelnego bilansu OZC, ten skrót bardzo szybko zamienia się w najdroższą drogę do awarii całej posadzki."
            </p>
            <div class="rk-quote-author">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-quote-photo" loading="lazy">
                <div class="rk-quote-author-details">
                    <h4>Robert Kucharski</h4>
                    <p>CEO, Projekt-Ogrzewania.pl</p>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-quote-interactive">
        <div class="rk-quote-tabs">
            <button class="rk-quote-tab-btn active" data-view="rule" onclick="rkSwitchQuote('rule')">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="20 6 9 17 4 12"></polyline></svg>
                Złota Zasada Modernizacji
            </button>
            <button class="rk-quote-tab-btn" data-view="trap" onclick="rkSwitchQuote('trap')">
                <svg width="20" height="20" 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>
                Najczęstsza Pułapka
            </button>
        </div>

        <div id="rk-quote-screen" class="rk-quote-screen state-rule">
            
            <div class="rk-quote-visual">
                <svg class="rk-quote-svg" viewBox="0 0 100 100">
                    <rect class="svg-q-concrete" x="10" y="30" width="80" height="60" rx="2" style="transition: fill 0.3s;"/>
                    
                    <path class="svg-q-pipe-bg" d="M 40 30 L 40 55 L 60 55 L 60 30" stroke-width="2" style="transition: stroke 0.3s;"/>
                    
                    <path class="svg-q-crack" d="M 40 55 L 30 75 M 60 55 L 75 80" fill="none" stroke-width="3" stroke-linecap="round"/>
                    
                    <g class="svg-q-dust" fill="#eab308">
                        <circle cx="43" cy="53" r="1.5" />
                        <circle cx="48" cy="50" r="1" style="animation-delay: 0.3s;"/>
                        <circle cx="55" cy="52" r="1.5" style="animation-delay: 0.6s;"/>
                        <circle cx="58" cy="48" r="1" style="animation-delay: 0.9s;"/>
                    </g>

                    <circle cx="50" cy="45" r="5" fill="#0f172a"/>
                    <circle class="svg-q-pipe" cx="50" cy="45" r="5" fill="none" stroke-width="2"/>

                    <path class="svg-q-heat" d="M 35 25 L 35 5 M 50 20 L 50 0 M 65 25 L 65 5" fill="none" stroke-width="3" stroke-linecap="round"/>
                </svg>
            </div>

            <div class="rk-quote-info">
                <h4 class="rk-quote-info-title" id="q-title">Czystość i Obliczenia to Fundament</h4>
                <p class="rk-quote-info-desc" id="q-desc">
                    W technologii cienkowarstwowej nie ma miejsca na błędy. Odessanie pyłu odkurzaczem klasy M, głębokie zgruntowanie wyfrezowanych rowków i zatopienie rury w masie polimerowej klasy <strong>C2TE</strong> gwarantuje idealny transfer ciepła i chroni wylewkę przed pękaniem.
                </p>
            </div>

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

<script>
// Zabezpieczenie przed kradzieżą (Bez tagów H)
document.addEventListener('DOMContentLoaded', function() {
    var checkDom = window.location.hostname;
    var allowedDom = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowedDom.indexOf(checkDom) === -1) {
        var wrapApp = document.getElementById('rk-quote-app');
        if (wrapApp) {
            wrapApp.innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:24px; border:2px solid #ef4444; font-family:sans-serif; font-size:16px;"><strong>Brak licencji.</strong> Kontener podsumowujący jest własnością serwisu Projekt-Ogrzewania.pl.</div>';
        }
    }
});

// Logika przełączania
function rkSwitchQuote(mode) {
    var screen = document.getElementById('rk-quote-screen');
    
    // Klasy przycisków
    var btns = document.querySelectorAll('.rk-quote-tab-btn');
    btns.forEach(function(b) { b.classList.remove('active'); });
    document.querySelector('.rk-quote-tab-btn[data-view="' + mode + '"]').classList.add('active');

    // Wymiana tekstu i klas CSS
    if (mode === 'rule') {
        screen.className = 'rk-quote-screen state-rule';
        document.getElementById('q-title').innerText = "Czystość i Obliczenia to Fundament";
        document.getElementById('q-desc').innerHTML = "W technologii cienkowarstwowej nie ma miejsca na błędy. Odessanie pyłu odkurzaczem klasy M, głębokie zgruntowanie wyfrezowanych rowków i zatopienie rury w masie polimerowej klasy <strong>C2TE</strong> gwarantuje idealny transfer ciepła i chroni wylewkę przed pękaniem.";
    } else {
        screen.className = 'rk-quote-screen state-trap';
        document.getElementById('q-title').innerText = "Pył Separacyjny i Ślepe Frezowanie";
        document.getElementById('q-desc').innerHTML = "Brak odkurzenia bruzd sprawia, że nowa masa nie łączy się ze starym betonem. Pył działa jak bufor izolacyjny. Naprężenia termiczne rur wyginają posadzkę, co kończy się <strong>odparzeniem jastrychu</strong> i pęknięciem ułożonych na wierzchu płytek ceramicznych.";
    }
}
</script>



<style>
:root {
    --rk-comp-dark: #1e293b; /* Chłodny antracyt */
    --rk-comp-brand: #06b6d4; /* Cyjan */
    --rk-comp-brand-light: #ecfeff;
    --rk-comp-accent: #6366f1; /* Fiolet techniczny */
    --rk-comp-bg: #f8fafc;
    --rk-comp-card: #ffffff;
    --rk-comp-text: #475569;
    --rk-comp-title: #0f172a;
    --rk-comp-border: #e2e8f0;
    --rk-comp-green: #10b981;
}

.rk-comp-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-comp-card);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(30, 41, 59, 0.1);
    border: 1px solid var(--rk-comp-border);
    overflow: hidden;
}

/* Nagłówek Sekcji */
.rk-comp-header {
    background: linear-gradient(135deg, #0f172a 0%, var(--rk-comp-dark) 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
}

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

.rk-comp-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(6, 182, 212, 0.15);
    color: #22d3ee;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 20px;
    border: 1px solid rgba(34, 211, 238, 0.2);
}

.rk-comp-title-h2 {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 15px 0;
    color: #ffffff;
}

.rk-comp-intro {
    font-size: 15px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
}

.rk-comp-intro strong {
    color: #ffffff;
}

/* Część Interaktywna - Karty i Porównanie */
.rk-comp-interactive {
    padding: 40px 50px;
    background: var(--rk-comp-bg);
}

.rk-comp-switcher-group {
    display: flex;
    justify-content: center;
    gap: 12px;
    margin-bottom: 35px;
}

.rk-comp-tab-btn {
    flex: 1;
    max-width: 260px;
    padding: 14px 18px;
    background: #ffffff;
    border: 2px solid var(--rk-comp-border);
    border-radius: 12px;
    font-size: 13.5px;
    font-weight: 800;
    color: var(--rk-comp-text);
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    text-align: center;
    line-height: 1.3;
}

.rk-comp-tab-btn:hover { background: #f1f5f9; border-color: #cbd5e1; }

.rk-comp-tab-btn.active[data-tech="frez"] { border-color: var(--rk-comp-brand); background: var(--rk-comp-brand-light); color: #0891b2; box-shadow: 0 8px 16px -4px rgba(6, 182, 212, 0.15); }
.rk-comp-tab-btn.active[data-tech="suchy"] { border-color: var(--rk-comp-accent); background: #f5f3ff; color: #4f46e5; box-shadow: 0 8px 16px -4px rgba(99, 102, 241, 0.15); }
.rk-comp-tab-btn.active[data-tech="mokry"] { border-color: #64748b; background: #f8fafc; color: #334155; box-shadow: 0 8px 16px -4px rgba(100, 116, 139, 0.15); }

/* Główny Ekran Porównania (Karty i SVG) */
.rk-comp-display-view {
    display: grid;
    grid-template-columns: 200px 1fr;
    gap: 30px;
    align-items: center;
    background: #ffffff;
    border: 1px solid var(--rk-comp-border);
    border-radius: 16px;
    padding: 30px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

/* SVG Wizualizacje Technologii */
.rk-comp-visual-frame {
    background: #0f172a;
    border-radius: 12px;
    padding: 15px;
    height: 200px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    position: relative;
    border: 2px solid #1e293b;
}

.rk-comp-svg {
    width: 100%;
    height: 100%;
}

/* Animacje i Przejścia SVG */
.svg-tech-group { display: none; opacity: 0; transition: opacity 0.4s ease; }
.state-frez .svg-frez { display: block; opacity: 1; }
.state-suchy .svg-suchy { display: block; opacity: 1; }
.state-mokry .svg-mokry { display: block; opacity: 1; }

.anim-wave-frez { stroke-dasharray: 6 6; animation: flowFrez 1.2s linear infinite; }
.anim-wave-suchy { stroke-dasharray: 4 4; animation: flowFrez 0.8s linear infinite; }
.anim-wave-mokry { stroke-dasharray: 12 12; animation: flowFrez 2.5s linear infinite; }

@keyframes flowFrez { to { stroke-dashoffset: -24; } }

/* Specyfikacja w Kafelkach (Zamiast tabeli) */
.rk-spec-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-spec-card {
    background: var(--rk-comp-bg);
    border: 1px solid var(--rk-comp-border);
    padding: 16px 20px;
    border-radius: 10px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-spec-lbl { font-size: 11px; color: #64748b; font-weight: 700; text-transform: uppercase; margin-bottom: 6px; letter-spacing: 0.5px; }
.rk-spec-val { font-size: 15px; font-weight: 800; color: var(--rk-comp-title); line-height: 1.4; }

/* Dynamiczne modyfikatory wartości dla Frezowania */
.val-highlight { font-weight: 900; }
.state-frez .val-highlight { color: var(--rk-comp-green); }
.state-suchy .val-highlight { color: var(--rk-comp-accent); }
.state-mokry .val-highlight { color: #475569; }

@media (max-width: 768px) {
    .rk-comp-header, .rk-comp-interactive { padding: 30px 20px; }
    .rk-comp-switcher-group { flex-direction: column; gap: 10px; }
    .rk-comp-tab-btn { max-width: 100%; }
    .rk-comp-display-view { grid-template-columns: 1fr; padding: 20px; }
    .rk-comp-visual-frame { height: 150px; max-width: 250px; margin: 0 auto; width: 100%; }
    .rk-spec-grid { grid-template-columns: 1fr; gap: 12px; }
    .rk-comp-title-h2 { font-size: 22px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#article-porownanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/"
    },
    "headline": "Porównanie technologii modernizacji ogrzewania podłogowego",
    "description": "Inżynierskie zestawienie systemów grzewczych pod remonty kapitalne. Porównaj wysokość zabudowy, bezwładność, koszty m² oraz zgodność z normą PN-EN 1264-4.",
    "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-17",
    "dateModified": "2026-05-17"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#dataset-komparator",
    "name": "Matryca porównawcza systemów ogrzewania płaszczyznowego dla termomodernizacji",
    "description": "Zbiór danych technicznych (wysokość profilu, masa jastrychu, opór i czas reakcji) trzech konkurencyjnych systemów wodnych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "porównanie ogrzewania podłogowego frezowanie",
      "wysokość zabudowy podłogówki sucha zabudowa",
      "bezwładność cieplna wylewka z miksokreta",
      "koszt materiału i robocizny podłogówki",
      "norma PN-EN 1264-4 wymagania jastrych"
    ],
    "measurementTechnique": "Zestawienie fizyczno-konstrukcyjne grubości przegród i bilansu mas budowlanych obciążających stropy.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Frezowanie w jastrychu: Profil 0 mm, obciążenie stropu 0 kg/m², wysoka reaktywność termiczna w 45 minut.",
        "System suchy: Profil 20-30 mm, idealny na stropy drewniane, wyższy koszt jednostkowy.",
        "Tradycyjny system mokry: Profil 65-80 mm, potężna masa 130 kg/m², bezwładność do 5 godzin."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#webapp-komparator-technologii",
    "name": "Interaktywny Komparator Technologii Modernizacji",
    "description": "Aplikacja filtrująca i kafelkująca parametry techniczno-eksploatacyjne posadzek grzewczych na bazie wybranego wariantu wykonawczego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-comp-container" id="rk-tech-matrix-app">
    <div class="rk-comp-header">
        <div class="rk-comp-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="9" cy="7" r="4"></circle><path d="M23 21v-2a4 4 0 0 0-3-3.87"></path><path d="M16 3.13a4 4 0 0 1 0 7.75"></path></svg>
            Analiza Porównawcza
        </div>
        <h2 class="rk-comp-title-h2">Porównanie technologii modernizacji ogrzewania podłogowego</h2>
        <p class="rk-comp-intro">
            Poniższe zestawienie przedstawia weryfikację kluczowych parametrów techniczno-eksploatacyjnych trzech najpopularniejszych metod montażu wodnego ogrzewania podłogowego w obiektach poddawanych remontom kapitalnym. Pozwala ono podjąć świadomą decyzję inżynieryjną w oparciu o nośność stropu oraz czas reakcji układu.
        </p>
    </div>

    <div class="rk-comp-interactive">
        <div class="rk-comp-switcher-group">
            <button class="rk-comp-tab-btn active" data-tech="frez" onclick="rkFilterTech('frez')">Frezowanie w starym jastrychu</button>
            <button class="rk-comp-tab-btn" data-tech="suchy" onclick="rkFilterTech('suchy')">System suchy (Zabudowa lekka)</button>
            <button class="rk-comp-tab-btn" data-tech="mokry" onclick="rkFilterTech('mokry')">System mokry (Skuwanie do zera)</button>
        </div>

        <div id="rk-matrix-core" class="rk-comp-display-view state-frez">
            <div class="rk-comp-visual-frame">
                <svg class="rk-comp-svg svg-tech-group svg-frez" viewBox="0 0 100 100">
                    <rect x="0" y="35" width="100" height="65" fill="#334155"/>
                    <path d="M 30 35 L 30 65 L 70 65 L 70 35" fill="#0f172a" stroke="#475569" stroke-width="2"/>
                    <circle cx="50" cy="50" r="10" fill="#38bdf8"/>
                    <path class="anim-wave-frez" d="M 15 20 Q 50 10 85 20" fill="none" stroke="#ef4444" stroke-width="3" stroke-linecap="round"/>
                </svg>

                <svg class="rk-comp-svg svg-tech-group svg-suchy" viewBox="0 0 100 100">
                    <rect x="0" y="55" width="100" height="45" fill="#1e293b"/> <rect x="0" y="35" width="100" height="20" fill="#d97706" opacity="0.8"/> <circle cx="50" cy="45" r="8" fill="#a855f7"/>
                    <path class="anim-wave-suchy" d="M 20 15 Q 50 5 80 15" fill="none" stroke="#f59e0b" stroke-width="2" stroke-linecap="round"/>
                </svg>

                <svg class="rk-comp-svg svg-tech-group svg-mokry" viewBox="0 0 100 100">
                    <rect x="0" y="75" width="100" height="25" fill="#1e293b"/> <rect x="0" y="25" width="100" height="50" fill="#64748b"/> <circle cx="50" cy="50" r="10" fill="#475569" stroke="#94a3b8" stroke-width="2"/>
                    <path class="anim-wave-mokry" d="M 10 10 L 90 10" fill="none" stroke="#94a3b8" stroke-width="4" stroke-linecap="round"/>
                </svg>
            </div>

            <div class="rk-spec-grid">
                <div class="rk-spec-card">
                    <div class="rk-spec-lbl">Minimalna wysokość zabudowy</div>
                    <div class="rk-spec-val val-highlight" id="matrix-height">0 mm (rury chowają się w strukturze)</div>
                </div>
                <div class="rk-spec-card">
                    <div class="rk-spec-lbl">Dodatkowe obciążenie stropu</div>
                    <div class="rk-spec-val" id="matrix-weight">0 kg/m² (brak zmiany bilansu mas)</div>
                </div>
                <div class="rk-spec-card">
                    <div class="rk-spec-lbl">Jednostkowy koszt (Materiał + Robota)</div>
                    <div class="rk-spec-val" id="matrix-cost">120 – 180 PLN/m²</div>
                </div>
                <div class="rk-spec-card">
                    <div class="rk-spec-lbl">Bezwładność termiczna układu</div>
                    <div class="rk-spec-val" id="matrix-inertia">Niska (czas reakcji ok. 45 min)</div>
                </div>
                <div class="rk-spec-card" style="grid-column: 1 / -1;">
                    <div class="rk-spec-lbl">Zgodność z normą PN-EN 1264-4</div>
                    <div class="rk-spec-val" id="matrix-norm">Wymaga weryfikacji geometrii i klasy jastrychu (min. C12/15)</div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
// 1. Ochrona licencji kodu (Zgodnie z zasadami - brak tagów H2/H3 w kodzie błędu)
document.addEventListener('DOMContentLoaded', function() {
    var domainVerify = window.location.hostname;
    var safeDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (safeDomains.indexOf(domainVerify) === -1) {
        var containerApp = document.getElementById('rk-tech-matrix-app');
        if (wrapperContainer) {
            containerApp.innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#f43f5e; border-radius:20px; border:2px solid #f43f5e; font-family:sans-serif; font-size:15px;"><strong>Odmowa dostępu do komponentu.</strong> Tablica porówania systemów płaszczyznowych jest zastrzeżona dla domeny Projekt-Ogrzewania.pl.</div>';
        }
    }
});

// 2. Logika interaktywnego filtrowania macierzy danych
function rkFilterTech(techType) {
    var matrixCore = document.getElementById('rk-matrix-core');

    // Nadanie odpowiedniej klasy stanu dla sterowania widocznością SVG
    matrixCore.className = "rk-comp-display-view";
    matrixCore.classList.add('state-' + techType);

    // Aktualizacja podświetlenia przycisku tabulatora
    var buttons = document.querySelectorAll('.rk-comp-tab-btn');
    buttons.forEach(function(btn) { btn.classList.remove('active'); });
    document.querySelector('.rk-comp-tab-btn[data-tech="' + techType + '"]').classList.add('active');

    // Podmiana danych w kafelkach specyfikacji
    if (techType === 'frez') {
        document.getElementById('matrix-height').innerText = "0 mm (rury chowają się w strukturze posadzki)";
        document.getElementById('matrix-weight').innerText = "0 kg/m² (brak zmiany pierwotnego bilansu mas)";
        document.getElementById('matrix-cost').innerText = "120 – 180 PLN/m²";
        document.getElementById('matrix-inertia').innerText = "Niska (czas reakcji i odczucia ciepła ok. 45 min)";
        document.getElementById('matrix-norm').innerHTML = "Wymaga weryfikacji jastrychu kontrolą sklerometryczną według <a href='https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/' style='color:var(--rk-comp-brand);font-weight:700;'>kryteriów inżynierskich</a>.";
    } else if (techType === 'suchy') {
        document.getElementById('matrix-height').innerText = "20 – 30 mm (nominalna grubość płyt systemowych)";
        document.getElementById('matrix-weight').innerText = "15 – 25 kg/m² (suche płyty gipsowo-włóknowe)";
        document.getElementById('matrix-cost').innerText = "240 – 350 PLN/m²";
        document.getElementById('matrix-inertia').innerText = "Bardzo niska (czas reakcji rzędu ok. 30 min)";
        document.getElementById('matrix-norm').innerHTML = "Pełna zgodność systemowa. Rozwiązanie dedykowane na stare <a href='https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-nadaje-sie-do-drewnianego-stropu/' style='color:var(--rk-comp-accent);font-weight:700;'>stropy drewniane i belkowe</a>.";
    } else {
        document.getElementById('matrix-height').innerText = "65 – 80 mm (grubość izolacji styropianowej + nowy jastrych)";
        document.getElementById('matrix-weight').innerText = "130 – 160 kg/m² (monolityczny wylewany beton)";
        document.getElementById('matrix-cost').innerText = "220 – 310 PLN/m² (wliczając kucie i wywóz gruzu)";
        document.getElementById('matrix-inertia').innerText = "Wysoka (bezwładność i czas nagrzewania ok. 180–300 min)";
        document.getElementById('matrix-norm').innerHTML = "Pełna zgodność normatywna. Wymaga wykonania <a href='https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/' style='color:#334155;font-weight:700;'>nowej wylewki betonowej lub anhydrytowej</a> od zera.";
    }
}
</script>



<style>
:root {
    --rk-eq-dark: #0f172a; /* Głęboki granat pulpitu */
    --rk-eq-brand: #0ea5e9; /* Morski cyjan / przepływ */
    --rk-eq-brand-light: #e0f2fe;
    --rk-eq-accent: #f59e0b; /* Bursztyn / Ostrzeżenie */
    --rk-eq-success: #10b981; /* Zielony / Stabilność */
    --rk-eq-danger: #ef4444; /* Czerwony / Awaria */
    --rk-eq-bg: #f8fafc;
    --rk-eq-card: #ffffff;
    --rk-eq-text: #334155;
    --rk-eq-border: #e2e8f0;
}

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

/* Nagłówek sekcji */
.rk-eq-header {
    background: linear-gradient(135deg, #1e293b 0%, var(--rk-eq-dark) 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-eq-brand);
}

.rk-eq-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(14, 165, 233, 0.15);
    color: #7dd3fc;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 25px;
    border: 1px solid rgba(125, 211, 252, 0.2);
}

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

.rk-eq-intro {
    font-size: 15px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0 0 15px 0;
}

.rk-eq-intro strong {
    color: #ffffff;
}

.rk-eq-link {
    color: #7dd3fc;
    text-decoration: none;
    border-bottom: 1px dashed #7dd3fc;
    transition: all 0.3s;
}

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

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

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

.rk-eq-btn {
    flex: 1;
    max-width: 300px;
    padding: 16px 20px;
    border: 2px solid var(--rk-eq-border);
    background: #ffffff;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-eq-text);
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.rk-eq-btn:hover { background: #f1f5f9; border-color: #cbd5e1; }

.rk-eq-btn.active[data-sys="amateur"] {
    border-color: var(--rk-eq-danger);
    background: #fef2f2;
    color: #991b1b;
    box-shadow: 0 10px 20px -5px rgba(239, 68, 68, 0.15);
}

.rk-eq-btn.active[data-sys="pro"] {
    border-color: var(--rk-eq-brand);
    background: var(--rk-eq-brand-light);
    color: #0369a1;
    box-shadow: 0 10px 20px -5px rgba(14, 165, 233, 0.2);
}

/* Ekran Symulatora (SVG) */
.rk-eq-visual-frame {
    background: var(--rk-eq-dark);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
    min-height: 260px;
    border: 2px solid #1e293b;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
    margin-bottom: 30px;
}

.rk-eq-svg {
    width: 100%;
    height: 100%;
    max-width: 600px;
}

/* NOWE Elementy i Animacje SVG */
.svg-flow-path { stroke-dasharray: 8 8; transition: stroke 0.4s; }
.svg-hp-fan { transform-origin: 25px 55px; }
.svg-sun { transform-origin: 180px 30px; transition: opacity 0.4s; }
.svg-recu { transition: opacity 0.4s; }
.svg-buffer-cross { opacity: 0; transition: opacity 0.3s; }
.svg-floor-pipe { transition: fill 0.3s; }
.svg-recu-air { stroke-dasharray: 6 6; }

/* Stany Animacji */
/* Stan Amatorski (Awaria) */
.state-amateur .svg-flow-path { animation: flowSlow 0.5s linear infinite; stroke: #ef4444; }
.state-amateur .svg-hp-fan { animation: spinRotor 0.3s linear infinite; } /* Taktowanie pompy */
.state-amateur .svg-buffer { opacity: 0.3; filter: grayscale(1); } /* Brak bufora */
.state-amateur .svg-buffer-cross { opacity: 1; }
.state-amateur .svg-sun { opacity: 1; animation: pulseSun 1s infinite alternate; }
.state-amateur .svg-recu { opacity: 0.2; }
.state-amateur .svg-recu-air { opacity: 0; animation: none; }
.state-amateur .svg-floor-pipe { fill: #ef4444; } /* Przegrzanie */

/* Stan Pro (Inżynierski) */
.state-pro .svg-flow-path { animation: flowFast 1.5s linear infinite; stroke: #0ea5e9; }
.state-pro .svg-hp-fan { animation: spinRotor 2s linear infinite; } /* Spokojna praca */
.state-pro .svg-buffer { opacity: 1; filter: grayscale(0); }
.state-pro .svg-buffer-cross { opacity: 0; }
.state-pro .svg-sun { opacity: 0.4; animation: none; }
.state-pro .svg-recu { opacity: 1; }
.state-pro .svg-recu-air { opacity: 1; animation: flowFast 1.5s linear infinite reverse; }
.state-pro .svg-floor-pipe { fill: #f59e0b; }

@keyframes spinRotor { 100% { transform: rotate(360deg); } }
@keyframes flowFast { to { stroke-dashoffset: -16; } }
@keyframes flowSlow { to { stroke-dashoffset: -16; } }
@keyframes pulseSun { 0% { transform: scale(0.9); filter: drop-shadow(0 0 5px #ef4444); } 100% { transform: scale(1.3); filter: drop-shadow(0 0 15px #ef4444); } }

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

.rk-eq-card {
    background: #ffffff;
    border: 1px solid var(--rk-eq-border);
    padding: 20px;
    border-radius: 12px;
    transition: all 0.3s;
}

.rk-eq-lbl { font-size: 11px; color: #64748b; font-weight: 700; text-transform: uppercase; margin-bottom: 8px; }
.rk-eq-val { font-size: 20px; font-weight: 900; color: var(--rk-eq-dark); display: flex; align-items: baseline; gap: 5px; }
.rk-eq-val span { font-size: 13px; font-weight: 600; color: #94a3b8; }

.rk-eq-desc {
    font-size: 13px;
    color: #475569;
    line-height: 1.5;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid var(--rk-eq-border);
}

/* Dynamiczne kolory tekstu w kafelkach */
.state-amateur .dyn-alert { color: var(--rk-eq-danger); }
.state-pro .dyn-success { color: var(--rk-eq-brand); }

/* POTĘŻNE CTA NA DOLE */
.rk-eq-cta-block {
    background: linear-gradient(135deg, #0f172a 0%, #1e1b4b 100%);
    padding: 45px 50px;
    text-align: center;
    border-top: 4px solid var(--rk-eq-accent);
}

.rk-eq-cta-title {
    font-size: 24px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 15px 0;
}

.rk-eq-cta-text {
    font-size: 15px;
    line-height: 1.6;
    color: #94a3b8;
    max-width: 700px;
    margin: 0 auto 30px auto;
}

.rk-eq-cta-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-eq-accent);
    color: #ffffff;
    font-size: 18px;
    font-weight: 900;
    padding: 20px 40px;
    border-radius: 12px;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 1px;
    box-shadow: 0 10px 25px -5px rgba(245, 158, 11, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-eq-cta-btn:hover {
    transform: translateY(-4px);
    background: #d97706;
    box-shadow: 0 15px 35px -5px rgba(245, 158, 11, 0.5);
}

.rk-eq-cta-btn svg { transition: transform 0.3s; }
.rk-eq-cta-btn:hover svg { transform: translateX(5px); }

@media (max-width: 768px) {
    .rk-eq-header, .rk-eq-interactive, .rk-eq-cta-block { padding: 30px 20px; }
    .rk-eq-controls { flex-direction: column; }
    .rk-eq-btn { max-width: 100%; }
    .rk-eq-visual-frame { min-height: 180px; padding: 10px; }
    .rk-eq-param-grid { grid-template-columns: 1fr; }
    .rk-eq-title { font-size: 24px; }
    .rk-eq-cta-title { font-size: 20px; }
    .rk-eq-cta-btn { width: 100%; padding: 15px 20px; font-size: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#article-urzadzenia",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/"
    },
    "headline": "Jak frezowanie wpływa na projekt instalacji i dobór urządzeń kotłowni?",
    "description": "Frezowanie drastycznie zmniejsza bezwładność cieplną. Wymaga mocnej pompy obiegowej (min. 6m słupa wody) oraz instalacji bufora ciepła zapobiegającego taktowaniu sprężarki 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-17",
    "dateModified": "2026-05-17"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#dataset-dobor-urzadzen",
    "name": "Parametry doboru urządzeń dla systemów frezowanych",
    "description": "Zestawienie wymogów hydraulicznych i pojemnościowych dla kotłowni współpracującej z frezowanym ogrzewaniem podłogowym i OZE.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dobór pompy obiegowej podłogówka",
      "taktowanie pompy ciepła bufor",
      "pojemność bufora ciepła na kw",
      "rekuperacja z ogrzewaniem podłogowym",
      "charakterystyka stałociśnieniowa p=const"
    ],
    "measurementTechnique": "Algorytm doboru komponentów na bazie zsumowanych oporów pętli o mniejszej średnicy i zmniejszonej bezwładności termicznej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Bufor ciepła: Minimum 15 litrów pojemności zładu na każdy 1 kW nominalnej mocy pompy ciepła.",
        "Pompa obiegowa: Wymagana wysokość podnoszenia minimum 6 m słupa wody (60 kPa) przy charakterystyce p=const."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#webapp-symulator-kotlowni",
    "name": "Symulator Architektury Kotłowni i Automatyki",
    "description": "Interaktywny diagram obrazujący ryzyko braku projektu OZC, wizualizujący taktowanie pompy ciepła i problemy z oporem hydraulicznym.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-eq-container" id="rk-hvac-arch-app">
    <div class="rk-eq-header">
        <div class="rk-eq-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><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>
            Architektura Systemu
        </div>
        <h2 class="rk-eq-title">Jak frezowanie ogrzewania podłogowego wpływa na projekt instalacji i dobór urządzeń?</h2>
        <p class="rk-eq-intro">
            Wykonanie frezowania podłogówki wymusza precyzyjne dostosowanie hydrauliki całego źródła ciepła. Mała średnica wewnętrzna rur (10 mm) drastycznie zwiększa wymagane ciśnienie dyspozycyjne pompy obiegowej. Projekt instalacji musi bazować na <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-eq-link">rzetelnych obliczeniach OZC (PN-EN 12831)</a>, co eliminuje niszczące przewymiarowanie źródła.
        </p>
        <p class="rk-eq-intro" style="margin: 0;">
            Zdolność akumulacji energii przez strop jest w tej technologii zredukowana o ponad 40%. Aby uniknąć szkodliwego zjawiska taktowania pompy ciepła (zbyt częstego załączania sprężarki), <strong>bezwzględnie należy zainstalować bufor ciepła o pojemności minimum 15 litrów na każdy kW mocy urządzenia</strong>. Niska bezwładność doskonale współpracuje z rekuperacją, która szybko rozprasza zyski ciepła (np. od słońca).
        </p>
    </div>

    <div class="rk-eq-interactive">
        <div class="rk-eq-controls">
            <button class="rk-eq-btn active" data-sys="pro" onclick="rkSwitchSystem('pro')">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="20 6 9 17 4 12"></polyline></svg>
                Instalacja z Projektem (OZC)
            </button>
            <button class="rk-eq-btn" data-sys="amateur" onclick="rkSwitchSystem('amateur')">
                <svg width="20" height="20" 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>
                Instalacja "Na oko"
            </button>
        </div>

        <div id="rk-sim-hvac" class="state-pro">
            <div class="rk-eq-visual-frame">
                
                <svg class="rk-eq-svg" viewBox="0 0 200 100">
                    <defs>
                        <linearGradient id="gradBuffer" x1="0%" y1="0%" x2="0%" y2="100%">
                            <stop offset="0%" style="stop-color:#ef4444;stop-opacity:1" />
                            <stop offset="100%" style="stop-color:#0ea5e9;stop-opacity:1" />
                        </linearGradient>
                    </defs>

                    <path class="svg-flow-path" d="M 40 55 L 65 55 M 90 55 L 100 55 M 110 55 L 120 55 L 120 87 L 130 87" fill="none" stroke-width="3" stroke-linecap="round"/>

                    <rect x="10" y="30" width="30" height="50" fill="#334155" rx="3"/>
                    <rect x="12" y="32" width="26" height="46" fill="#1e293b" rx="2"/>
                    <circle cx="25" cy="55" r="12" fill="none" stroke="#64748b" stroke-width="2"/>
                    <g class="svg-hp-fan">
                        <path d="M 25 43 L 25 67 M 13 55 L 37 55" stroke="#cbd5e1" stroke-width="3"/>
                        <circle cx="25" cy="55" r="3" fill="#cbd5e1"/>
                    </g>
                    <polygon points="15,35 18,35 16,39 20,39 15,44 16,40 12,40" fill="#f59e0b"/>

                    <g class="svg-buffer" style="transition: opacity 0.4s, filter 0.4s;">
                        <rect x="65" y="20" width="25" height="60" fill="url(#gradBuffer)" rx="4"/>
                        <path d="M 65 40 L 90 40 M 65 60 L 90 60" stroke="#ffffff" stroke-width="1" opacity="0.2"/>
                    </g>
                    <path class="svg-buffer-cross" d="M 60 15 L 95 85 M 95 15 L 60 85" stroke="#ef4444" stroke-width="4" stroke-linecap="round"/>

                    <circle cx="105" cy="55" r="6" fill="#0f172a" stroke="#94a3b8" stroke-width="2"/>
                    <polygon points="102,52 102,58 108,55" fill="#cbd5e1"/>

                    <rect x="130" y="80" width="60" height="15" fill="#475569" rx="2"/>
                    <circle cx="140" cy="87.5" r="3" class="svg-floor-pipe"/>
                    <circle cx="155" cy="87.5" r="3" class="svg-floor-pipe"/>
                    <circle cx="170" cy="87.5" r="3" class="svg-floor-pipe"/>
                    <circle cx="185" cy="87.5" r="3" class="svg-floor-pipe"/>

                    <g class="svg-recu" style="transition: opacity 0.4s;">
                        <rect x="130" y="5" width="40" height="15" fill="#334155" rx="2"/>
                        <rect x="135" y="8" width="10" height="9" fill="#0f172a"/>
                        <rect x="155" y="8" width="10" height="9" fill="#0f172a"/>
                        <path class="svg-recu-air" d="M 140 28 L 140 17 M 160 28 L 160 17" fill="none" stroke="#0ea5e9" stroke-width="2" stroke-linecap="round"/>
                    </g>

                    <g class="svg-sun" style="transition: opacity 0.4s;">
                        <circle cx="180" cy="30" r="6" fill="#f59e0b"/>
                        <path d="M 180 20 L 180 16 M 180 40 L 180 44 M 170 30 L 166 30 M 190 30 L 194 30 M 173 23 L 170 20 M 187 37 L 190 40 M 173 37 L 170 40 M 187 23 L 190 20" stroke="#f59e0b" stroke-width="2" stroke-linecap="round"/>
                    </g>
                </svg>

            </div>

            <div class="rk-eq-param-grid">
                <div class="rk-eq-card">
                    <div class="rk-eq-lbl">Bufor sprzęgający</div>
                    <div class="rk-eq-val dyn-alert" id="rk-val-buffer">TAK <span>(15L / kW)</span></div>
                    <div class="rk-eq-desc" id="rk-desc-buffer">
                        Gwarantuje zład wody do odszraniania (defrostu) i eliminuje niszczące taktowanie sprężarki spowodowane małą pojemnością wylewki.
                    </div>
                </div>
                <div class="rk-eq-card">
                    <div class="rk-eq-lbl">Pompa obiegowa pętli</div>
                    <div class="rk-eq-val dyn-alert" id="rk-val-pump">6 m <span>(60 kPa)</span></div>
                    <div class="rk-eq-desc" id="rk-desc-pump">
                        Charakterystyka stałociśnieniowa (p=const). Zrównoważy gwałtowne opory hydrauliczne generowane przez rurki o średnicy wew. 10 mm.
                    </div>
                </div>
                <div class="rk-eq-card">
                    <div class="rk-eq-lbl">Reakcja na zyski słońca</div>
                    <div class="rk-eq-val dyn-alert" id="rk-val-sun">Rozproszone <span>(Reku)</span></div>
                    <div class="rk-eq-desc" id="rk-desc-sun">
                        Frezowana podłoga odcina dopływ wody. <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/" style="color:inherit; font-weight:700;">Rekuperacja</a> wychwytuje gorące powietrze i redystrybuuje je po strefach zacienionych.
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-eq-cta-block">
        <h3 class="rk-eq-cta-title">Nie pozwól, by błędy instalatora zniszczyły Twoją Pompę Ciepła</h3>
        <p class="rk-eq-cta-text">
            Brak bufora, dobór za słabej pompy obiegowej i przewymiarowane źródło ciepła to najczęstsze skutki montażu "na intuicję". Zabezpiecz swoją inwestycję profesjonalną dokumentacją techniczną opartą na twardych wyliczeniach OZC i fizyce przepływów.
        </p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-eq-cta-btn">
            ZAMÓW PROJEKT INSTALACJI PODŁOGOWEJ
            <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>
// 1. Zabezpieczenie przed nieautoryzowanym skopiowaniem (Bez tagów H)
document.addEventListener('DOMContentLoaded', function() {
    var checkDom = window.location.hostname;
    var allowedDom = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowedDom.indexOf(checkDom) === -1) {
        var wrapApp = document.getElementById('rk-hvac-arch-app');
        if (wrapApp) {
            wrapApp.innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:24px; border:2px solid #ef4444; font-family:sans-serif; font-size:16px;"><strong>Odmowa autoryzacji licencji.</strong> Algorytm wizualizacji kotłowni jest własnością intelektualną serwisu Projekt-Ogrzewania.pl.</div>';
        }
    }
});

// 2. Logika przełączania symulatora
function rkSwitchSystem(mode) {
    var hvacSim = document.getElementById('rk-sim-hvac');
    
    // Zmiana przycisków
    var btns = document.querySelectorAll('.rk-eq-btn');
    btns.forEach(function(b) { b.classList.remove('active'); });
    document.querySelector('.rk-eq-btn[data-sys="' + mode + '"]').classList.add('active');

    // Aktualizacja interfejsu (CSS SVG i teksty)
    if (mode === 'pro') {
        hvacSim.className = 'state-pro';
        
        document.getElementById('rk-val-buffer').innerHTML = "TAK <span>(15L / kW)</span>";
        document.getElementById('rk-desc-buffer').innerHTML = "Gwarantuje zład wody do odszraniania (defrostu) i eliminuje niszczące taktowanie sprężarki spowodowane małą pojemnością wylewki.";
        
        document.getElementById('rk-val-pump').innerHTML = "6 m <span>(60 kPa)</span>";
        document.getElementById('rk-desc-pump').innerHTML = "Charakterystyka stałociśnieniowa (p=const). Zrównoważy gwałtowne opory hydrauliczne generowane przez rurki o średnicy wew. 10 mm.";
        
        document.getElementById('rk-val-sun').innerHTML = "Rozproszone <span>(Reku)</span>";
        document.getElementById('rk-desc-sun').innerHTML = "Frezowana podłoga odcina dopływ wody. <a href='https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/' style='color:inherit; font-weight:700;'>Rekuperacja</a> wychwytuje gorące powietrze i redystrybuuje je po strefach zacienionych.";

    } else {
        hvacSim.className = 'state-amateur';
        
        document.getElementById('rk-val-buffer').innerHTML = "BRAK <span>(Awaria)</span>";
        document.getElementById('rk-desc-buffer').innerHTML = "Zbyt mała pojemność wodna systemu frezowanego powoduje ciągłe włączanie/wyłączanie (taktowanie) pompy, niszcząc sprężarkę.";
        
        document.getElementById('rk-val-pump').innerHTML = "4 m <span>(Za słaba)</span>";
        document.getElementById('rk-desc-pump').innerHTML = "Zwykła pompa nie radzi sobie z oporem małych rurek. Woda wybiera najkrótsze drogi, zostawiając większość salonu całkowicie niedogrzaną.";
        
        document.getElementById('rk-val-sun').innerHTML = "Przegrzanie <span>(Brak OZC)</span>";
        document.getElementById('rk-desc-sun').innerHTML = "Brak projektu OZC powoduje, że słońce z okien uderza w zabetonowane rury potęgując temperaturę. Podłoga nie ma jak zrzucić tego ciepła w inny obieg.";
    }
}
</script>



<style>
:root {
    --rk-faq2-dark: #0f172a;
    --rk-faq2-card: #ffffff;
    --rk-faq2-brand: #059669; /* Profesjonalny Szmaragd / Zieleń inżynierska */
    --rk-faq2-brand-light: #d1fae5;
    --rk-faq2-accent: #f59e0b; /* Bursztyn dla kontrastu / ostrzeżeń */
    --rk-faq2-bg: #f8fafc;
    --rk-faq2-border: #e2e8f0;
    --rk-faq2-text: #334155;
    --rk-faq2-muted: #64748b;
}

.rk-faq2-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: var(--rk-faq2-card);
    border-radius: 20px;
    box-shadow: 0 20px 40px -10px rgba(5, 150, 105, 0.1);
    border: 1px solid rgba(5, 150, 105, 0.2);
    overflow: hidden;
}

/* Nagłówek */
.rk-faq2-header {
    background: linear-gradient(135deg, #064e3b 0%, var(--rk-faq2-dark) 100%);
    padding: 40px 50px 30px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-faq2-brand);
}

.rk-faq2-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(16, 185, 129, 0.2);
    color: #6ee7b7;
    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(110, 231, 183, 0.2);
}

.rk-faq2-title {
    font-size: 26px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0;
}

.rk-faq2-title span { color: #34d399; }

/* Sekcja Interaktywna */
.rk-faq2-interactive {
    padding: 35px 45px;
    background: var(--rk-faq2-bg);
}

.rk-faq2-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

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

.rk-faq2-item.active {
    border-color: var(--rk-faq2-brand);
    box-shadow: 0 10px 20px -5px rgba(5, 150, 105, 0.12);
}

/* Przycisk Akordeonu */
.rk-faq2-question {
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    padding: 22px 25px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-faq2-dark);
    transition: background 0.3s, color 0.3s;
}

.rk-faq2-question:hover {
    background: #f1f5f9;
}

.rk-faq2-item.active .rk-faq2-question {
    background: var(--rk-faq2-brand-light);
    color: #064e3b;
}

.rk-faq2-icon {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #e2e8f0;
    color: var(--rk-faq2-dark);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

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

/* Odpowiedź z Gridem */
.rk-faq2-answer-wrapper {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq2-item.active .rk-faq2-answer-wrapper {
    grid-template-rows: 1fr;
}

.rk-faq2-answer-inner {
    overflow: hidden;
}

.rk-faq2-content {
    padding: 25px;
    border-top: 1px solid var(--rk-faq2-brand-light);
    display: grid;
    grid-template-columns: 1fr 180px;
    gap: 30px;
    align-items: center;
    background: #ffffff;
}

.rk-faq2-text {
    font-size: 14px;
    line-height: 1.7;
    color: var(--rk-faq2-text);
}

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

.rk-faq2-link {
    color: var(--rk-faq2-brand);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px dashed rgba(5, 150, 105, 0.4);
    transition: all 0.3s;
}

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

/* Kontener SVG */
.rk-faq2-visual {
    background: #f8fafc;
    border-radius: 12px;
    padding: 15px;
    height: 140px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px solid #e2e8f0;
    position: relative;
}

.rk-faq2-svg {
    width: 100%;
    height: 100%;
}

/* === ANIMACJE SVG ZALEŻNE OD KLASY ACTIVE === */

/* 1. Strop / Frezowanie */
.rk-faq2-item.active .anim-blade {
    animation: spinBlade 1s linear infinite;
    transform-origin: 50px 30px;
}
.rk-faq2-item.active .anim-groove {
    stroke-dasharray: 60;
    stroke-dashoffset: 60;
    animation: cutGroove 2s forwards;
}
@keyframes spinBlade { to { transform: rotate(360deg); } }
@keyframes cutGroove { to { stroke-dashoffset: 0; } }

/* 2. Bariera EVOH (Tlen) */
.anim-oxygen { opacity: 0; }
.rk-faq2-item.active .anim-oxygen {
    opacity: 1;
    animation: bounceOxygen 1.5s infinite alternate ease-in-out;
}
@keyframes bounceOxygen {
    0% { transform: translateY(-15px) scale(1); fill: #ef4444; }
    100% { transform: translateY(0px) scale(0.8); fill: #fca5a5; }
}

/* 3. Masa naprawcza */
.anim-trowel { transform: translateX(-20px); opacity: 0; }
.rk-faq2-item.active .anim-trowel {
    animation: fillMass 2s ease-out forwards;
}
@keyframes fillMass {
    0% { transform: translateX(-20px); opacity: 1; }
    50% { transform: translateX(20px); opacity: 1; }
    100% { transform: translateX(20px); opacity: 0; }
}
.rk-faq2-item.active .anim-mass-fill {
    transform: scaleX(0);
    transform-origin: left;
    animation: growMass 2s forwards;
}
@keyframes growMass { to { transform: scaleX(1); } }

/* 4. Zawór mieszający */
.anim-flow-hot, .anim-flow-cold { stroke-dasharray: 4; animation: dashFlow 1s linear infinite; opacity: 0; }
.rk-faq2-item.active .anim-flow-hot { opacity: 1; stroke: #ef4444; }
.rk-faq2-item.active .anim-flow-cold { opacity: 1; stroke: #3b82f6; }
@keyframes dashFlow { to { stroke-dashoffset: -8; } }

/* 5. Woda zdemineralizowana */
.anim-drop { transform: scale(0.8); }
.rk-faq2-item.active .anim-drop {
    animation: purifyDrop 2s infinite alternate;
}
@keyframes purifyDrop {
    0% { fill: #94a3b8; transform: scale(0.8); } /* Brudna woda */
    100% { fill: #38bdf8; transform: scale(1.1); filter: drop-shadow(0 0 5px #38bdf8); } /* Czysta woda */
}

@media (max-width: 768px) {
    .rk-faq2-header, .rk-faq2-interactive { padding: 30px 20px; }
    .rk-faq2-title { font-size: 22px; }
    .rk-faq2-content { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-faq2-visual { height: 120px; max-width: 200px; margin: 0 auto; width: 100%; border: none; }
    .rk-faq2-question { font-size: 14px; padding: 18px 20px; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD) 
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/"
    },
    "headline": "Najczęściej zadawane pytania (FAQ) – Frezowanie podłogówki",
    "description": "Techniczne odpowiedzi na najważniejsze pytania dotyczące wytrzymałości wylewek, barier antydyfuzyjnych EVOH, mas naprawczych oraz jakości wody w systemach frezowanych.",
    "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-17",
    "dateModified": "2026-05-17"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#faq-data",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy frezowanie niszczy strukturę starego stropu lub osłabia wylewkę?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Frezowanie na głębokość 20 mm w wylewce o grubości minimum 35 mm nie narusza stabilności, o ile beton spełnia klasę wytrzymałości C12/15. Nienaruszona warstwa dolna w pełni przenosi obciążenia użytkowe."
        }
      },
      {
        "@type": "Question",
        "name": "Czy w kanałach frezowanych można układać rury bez barier (np. zwykłe PEX)?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie. Wymagane jest bezwzględne stosowanie rur z barierą antydyfuzyjną EVOH (norma DIN 4726). Brak bariery prowadzi do korozji elementów stalowych i uszkodzenia wymiennika pompy ciepła."
        }
      },
      {
        "@type": "Question",
        "name": "Jaka masa jest najlepsza do zalewania wyfrezowanych rowków?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Należy stosować wyłącznie dedykowane masy polimerowo-cementowe (klasa C2TE) o przewodności cieplnej λ ≥ 1,4 W/(m·K). Zwykła zaprawa pęka pod wpływem naprężeń termicznych."
        }
      },
      {
        "@type": "Question",
        "name": "Czy przy frezowaniu trzeba montować układ mieszający z zaworem?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Jeśli jedynym źródłem jest pompa ciepła generująca 35°C, układ mieszający jest zbędny. Jest on wymagany wyłącznie w systemach hybrydowych (np. przy jednoczesnej pracy grzejników na 60°C)."
        }
      },
      {
        "@type": "Question",
        "name": "Czy instalację po frezowaniu można napełnić wodą z kranu?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Instalację należy napełnić wodą demineralizowaną (przewodność <100 µS/cm) z inhibitorem korozji. Zwykła woda w rurkach 14 mm grozi osadzaniem kamienia kotłowego i spadkiem wydajności."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#dataset-tech",
    "name": "Parametry techniczne materiałów dla systemów frezowanych",
    "description": "Wymagania inżynierskie dla jastrychów, klas zapraw, norm rur i parametrów fizykochemicznych zładu wody.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "frezowanie ogrzewania podłogowego",
      "bariera antydyfuzyjna evoh",
      "norma din 4726",
      "zawór mieszający instalacji",
      "woda demineralizowana ogrzewanie"
    ],
    "measurementTechnique": "Normatywne wartości graniczne (wytrzymałość C12/15, przewodność cieplna λ ≥ 1,4 W/(m·K), przewodność wody <100 µS/cm).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wymagany minimalny opór dyfuzyjny tlenu wg DIN 4726.",
        "Parametry mas naprawczych do przewodzenia energii cieplnej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#webapp-faq",
    "name": "Interaktywny Asystent FAQ Frezowania",
    "description": "Baza wiedzy z wizualizacjami SVG pomagająca inwestorom w doborze parametrów modernizacji cieplnej bez błędów wykonawczych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA FAQ
=========================================== -->
<div class="rk-faq2-container" id="rk-frez-faq-app">
    <div class="rk-faq2-header">
        <div class="rk-faq2-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4"></path><path d="M12 8h.01"></path></svg>
            Baza Wiedzy Wykonawcy
        </div>
        <h2 class="rk-faq2-title">FAQ – <span>Najczęściej zadawane pytania</span></h2>
    </div>

    <div class="rk-faq2-interactive">
        <div class="rk-faq2-list">
            
            <!-- Pytanie 1: Wytrzymałość stropu -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>1. Czy frezowanie niszczy strukturę starego stropu lub osłabia wylewkę?</span>
                    <div class="rk-faq2-icon"><svg width="18" height="18" 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-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Frezowanie na głębokość <strong>20 mm</strong> w wylewce o całkowitej grubości minimum 35 mm nie narusza stabilności konstrukcyjnej podłoża. Warunkiem koniecznym jest, aby istniejący <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" class="rk-faq2-link">jastrych spełniał kryterium wytrzymałościowe minimum C12/15</a>. Pozostała, nienaruszona warstwa dolna betonu w pełni przejmuje i przenosi statyczne oraz dynamiczne obciążenia użytkowe zgodnie z normami budowlanymi.
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-faq2-svg" viewBox="0 0 100 80">
                                    <rect x="10" y="50" width="80" height="20" fill="#94a3b8" rx="2"/>
                                    <path class="anim-groove" d="M 10 50 L 50 50 L 50 70" fill="none" stroke="#f8fafc" stroke-width="8"/>
                                    <g class="anim-blade">
                                        <circle cx="50" cy="30" r="15" fill="none" stroke="#059669" stroke-width="4" stroke-dasharray="10 4"/>
                                        <circle cx="50" cy="30" r="4" fill="#059669"/>
                                    </g>
                                    <line x1="50" y1="30" x2="50" y2="45" stroke="#059669" stroke-width="4"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 2: Bariera EVOH -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>2. Czy w kanałach frezowanych można układać zwykłe rury bez barier?</span>
                    <div class="rk-faq2-icon"><svg width="18" height="18" 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-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Absolutnie nie. Bezwykopowe układanie rur wymaga <strong>bezwzględnego stosowania przewodów wyposażonych w pięciowarstwową <a href="https://projekt-ogrzewania.pl/rura-z-bariera-antydyfuzyjna-evoh/" class="rk-faq2-link">barierę antydyfuzyjną EVOH</a></strong> zgodną z normą DIN 4726. Zastosowanie rur jednowarstwowych bez powłoki antytlenowej doprowadzi do szybkiej korozji elementów stalowych w kotłowni i trwałego uszkodzenia pompy.
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-faq2-svg" viewBox="0 0 100 80">
                                    <circle cx="50" cy="50" r="25" fill="none" stroke="#059669" stroke-width="6"/>
                                    <circle cx="50" cy="50" r="21" fill="none" stroke="#3b82f6" stroke-width="2"/>
                                    <circle class="anim-oxygen" cx="20" cy="20" r="5"/>
                                    <circle class="anim-oxygen" cx="80" cy="20" r="5" style="animation-delay: 0.5s;"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 3: Masa naprawcza -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>3. Jaka masa jest najlepsza do zalewania wyfrezowanych rowków?</span>
                    <div class="rk-faq2-icon"><svg width="18" height="18" 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-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Do wypełniania bruzd stosuje się <strong>wyłącznie modyfikowane polimerami masy naprawcze klasy C2TE</strong>. Ich kluczowym parametrem dla systemu cieplnego jest wysoka przewodność (λ ≥ 1,4 W/(m·K)). Zwykła <a href="https://projekt-ogrzewania.pl/czym-jest-system-mokry-w-wodnym-ogrzewaniu-podlogowym/" class="rk-faq2-link">zaprawa murarska popęka pod wpływem rozszerzalności rur</a>, tworząc puste przestrzenie izolujące ciepło.
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-faq2-svg" viewBox="0 0 100 80">
                                    <path d="M 10 60 L 90 60 L 90 80 L 10 80 Z" fill="#e2e8f0"/>
                                    <path d="M 30 60 L 70 60 L 60 80 L 40 80 Z" fill="#ffffff"/>
                                    <rect class="anim-mass-fill" x="40" y="60" width="20" height="20" fill="#f59e0b"/>
                                    <path class="anim-trowel" d="M 35 45 L 65 45 L 75 55 L 25 55 Z" fill="#94a3b8"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 4: Zawór mieszający -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>4. Czy przy frezowaniu podłogówki trzeba montować układ mieszający z zaworem?</span>
                    <div class="rk-faq2-icon"><svg width="18" height="18" 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-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Jeśli system współpracuje bezpośrednio z niskotemperaturową pompą ciepła generującą parametr 35°C, <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/" class="rk-faq2-link">układ mieszający jest całkowicie zbędny</a>, a pętle podłącza się wprost do rozdzielacza. Montaż zaworu trójdrogowego jest konieczny <strong>tylko w układach hybrydowych</strong> (jednoczesne zasilanie grzejników na 60°C i podłogówki).
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-faq2-svg" viewBox="0 0 100 80">
                                    <path d="M 50 10 L 50 70 M 20 40 L 80 40" stroke="#cbd5e1" stroke-width="12" stroke-linecap="round"/>
                                    <circle cx="50" cy="40" r="14" fill="#0f172a"/>
                                    <polygon points="50,26 64,40 50,54" fill="#059669"/>
                                    <line class="anim-flow-hot" x1="20" y1="40" x2="40" y2="40" stroke-width="4" stroke-linecap="round"/>
                                    <line class="anim-flow-cold" x1="50" y1="65" x2="50" y2="45" stroke-width="4" stroke-linecap="round"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 5: Woda demineralizowana -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>5. Czy instalację można napełnić zwykłą wodą z kranu?</span>
                    <div class="rk-faq2-icon"><svg width="18" height="18" 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-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Zdecydowanie odradza się takie praktyki. Instalacja frezowana posiada cienkie rurki (najczęściej 14 mm), co potęguje ryzyko zarastania przekroju. Układ <strong>musi być napełniony <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-w-ogrzewaniu-podlogowym-dlaczego-to-najlepszy-wybor-zamiast-zwyklej-wody-z-kranu/" class="rk-faq2-link">wodą demineralizowaną</a> (przewodność < 100 µS/cm) z inhibitorem korozji</strong>. Zwykła kranówka grozi szybkim odkładaniem się kamienia kotłowego.
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-faq2-svg" viewBox="0 0 100 80">
                                    <path class="anim-drop" d="M 50 15 C 50 15 25 45 25 60 C 25 73.8 36.2 85 50 85 C 63.8 85 75 73.8 75 60 C 75 45 50 15 50 15 Z" fill="#38bdf8"/>
                                    <path d="M 40 55 Q 50 45 60 55" fill="none" stroke="#ffffff" stroke-width="3" stroke-linecap="round" opacity="0.6"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

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

<!-- ==========================================
     LOGIKA ZABEZPIECZEŃ (DOMAIN LOCK) I JS
=========================================== -->
<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie na poziomie domeny
    var host = window.location.hostname;
    var allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowed.indexOf(host) === -1) {
        var app = document.getElementById('rk-frez-faq-app');
        if (app) {
            app.innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900;">BŁĄD LICENCJI: TEN MODUŁ STANOWI WŁASNOŚĆ INTELEKTUALNĄ SERWISU PROJEKT-OGRZEWANIA.PL</div>';
        }
        return;
    }

    // 2. Logika otwierania Akordeonu
    var items = document.querySelectorAll('.rk-faq2-item');
    items.forEach(function(item) {
        var btn = item.querySelector('.rk-faq2-question');
        btn.addEventListener('click', function() {
            var isActive = item.classList.contains('active');
            
            // Zamknij wszystkie inne zakładki
            items.forEach(function(el) { 
                el.classList.remove('active'); 
            });
            
            // Otwórz tylko klikniętą, o ile nie była wcześniej otwarta
            if (!isActive) {
                item.classList.add('active');
            }
        });
    });
    
    // Otwórz pierwszą zakładkę domyślnie
    if(items.length > 0) {
        items[0].classList.add('active');
    }
});
</script>



<style>
:root {
    --rk-mill-dark: #1e293b;
    --rk-mill-blue: #0284c7;
    --rk-mill-blue-hover: #0369a1;
    --rk-mill-orange: #f97316;
    --rk-mill-orange-light: #ffedd5;
    --rk-mill-red: #ef4444;
    --rk-mill-red-light: #fef2f2;
    --rk-mill-green: #10b981;
    --rk-mill-bg: #ffffff;
    --rk-mill-gray: #f8fafc;
    --rk-mill-text: #334155;
    --rk-mill-border: #e2e8f0;
}

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

/* Sekcja Główna */
.rk-mill-header {
    padding: 40px 50px 30px;
    background: linear-gradient(145deg, #f8fafc 0%, #f1f5f9 100%);
    border-bottom: 1px solid var(--rk-mill-border);
}

.rk-mill-title {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-mill-dark);
    margin: 0 0 20px 0;
    line-height: 1.3;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-mill-title svg {
    color: var(--rk-mill-orange);
    flex-shrink: 0;
}

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

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

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

/* Toggle Switch (Styl iOS/Android) */
.rk-toggle-container {
    display: flex;
    justify-content: center;
    margin-bottom: 35px;
}

.rk-toggle-bg {
    display: flex;
    background: #e2e8f0;
    border-radius: 99px;
    padding: 4px;
    position: relative;
    width: 100%;
    max-width: 500px;
    cursor: pointer;
}

.rk-toggle-btn {
    flex: 1;
    text-align: center;
    padding: 12px 20px;
    font-size: 15px;
    font-weight: 700;
    color: #64748b;
    z-index: 2;
    transition: color 0.3s ease;
    user-select: none;
}

.rk-toggle-btn.active {
    color: var(--rk-mill-dark);
}

.rk-toggle-slider {
    position: absolute;
    top: 4px;
    left: 4px;
    width: calc(50% - 4px);
    height: calc(100% - 8px);
    background: #ffffff;
    border-radius: 99px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.1);
    z-index: 1;
    transition: transform 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}

.rk-toggle-bg[data-state="amateur"] .rk-toggle-slider {
    transform: translateX(100%);
}

/* Dynamiczny Kontent */
.rk-dynamic-view {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    align-items: stretch;
}

.rk-dynamic-card {
    padding: 30px;
    border-radius: 20px;
    border: 2px solid transparent;
    background: var(--rk-mill-gray);
    transition: all 0.4s ease;
    opacity: 0;
    display: none;
    transform: translateY(10px);
}

.rk-dynamic-card.active {
    display: flex;
    flex-direction: column;
    opacity: 1;
    transform: translateY(0);
}

.rk-card-pro { border-color: var(--rk-mill-orange-light); background: #fffcf8; }
.rk-card-amateur { border-color: var(--rk-mill-red-light); background: #fffcfc; }

.rk-card-icon {
    width: 64px;
    height: 64px;
    margin-bottom: 20px;
}

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

.rk-card-text {
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-mill-text);
    margin: 0 0 15px 0;
    flex-grow: 1;
}

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

/* Animacje SVG */
.anim-flow { stroke-dasharray: 10; animation: dashFlow 1s linear infinite; }
.anim-pulse { transform-origin: center; animation: scalePulse 2s infinite ease-in-out; }
.anim-block { animation: shakeBlock 0.5s infinite alternate; }

@keyframes dashFlow { to { stroke-dashoffset: -20; } }
@keyframes scalePulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); fill: var(--rk-mill-orange); } }
@keyframes shakeBlock { from { transform: translateX(-1px); } to { transform: translateX(1px); } }

/* Grid Informacyjny (Kafelki zamiast ściany tekstu) */
.rk-info-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    padding: 0 50px 40px;
}

.rk-info-box {
    background: #ffffff;
    border: 1px solid var(--rk-mill-border);
    padding: 20px;
    border-radius: 16px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-info-box h4 {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-mill-dark);
    margin: 0 0 10px 0;
}

.rk-info-box p {
    font-size: 13px;
    line-height: 1.5;
    color: #64748b;
    margin: 0;
}

@media (max-width: 768px) {
    .rk-mill-header, .rk-mill-interactive { padding: 30px 20px; }
    .rk-info-grid { grid-template-columns: 1fr; padding: 0 20px 30px; }
    .rk-dynamic-view { grid-template-columns: 1fr; }
    .rk-mill-title { font-size: 22px; }
    .rk-toggle-bg { width: 100%; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/"
    },
    "headline": "Podsumowanie: Modernizacja bez skuwania i drastyczny spadek bezwładności",
    "description": "Frezowanie podłogówki pozwala na pełne przejście na zasilanie niskotemperaturowe. Gwarantuje czas nagrzewania poniżej 45 minut przy zachowaniu normy DIN 4726 i rzetelnych obliczeń OZC.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-17",
    "dateModified": "2026-05-17"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#dataset-frezowanie",
    "name": "Parametry hydrauliczne i termiczne układu frezowanego",
    "description": "Zestawienie porównawcze działania instalacji ogrzewania frezowanego z wykonanym profesjonalnym projektem OZC w stosunku do instalacji montowanych intuicyjnie.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "frezowanie ogrzewania podłogowego",
      "bezwładność termiczna podłogówki",
      "projektowe obciążenie cieplne ozc",
      "bariera antydyfuzyjna evoh din 4726",
      "opory hydrauliczne pompy ciepła"
    ],
    "measurementTechnique": "Obliczenia na bazie normy DIN 4726, PN-EN 12831 (OZC) oraz symulacji dynamiki przepływów hydraulicznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Bezwładność cieplna: Stabilizacja temperatury powietrza w czasie krótszym niż 45 minut.",
        "Zabezpieczenie: Rury z powłoką antydyfuzyjną EVOH chronią układ przed zapowietrzeniem i korozją."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#webapp-symulator",
    "name": "Symulator Przepływów i OZC przy Frezowaniu",
    "description": "Interaktywny panel ilustrujący bezpośrednie skutki zaniechania obliczeń cieplnych (OZC) oraz zastosowania niewłaściwych materiałów w układach cienkowarstwowych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and CSS3",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA
=========================================== -->
<div class="rk-mill-wrapper" id="rk-frez-summary-app">
    
    <!-- Nagłówek -->
    <div class="rk-mill-header">
        <h2 class="rk-mill-title">
            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/></svg>
            Podsumowanie: Modernizacja bez skuwania wylewki
        </h2>
        <p class="rk-mill-intro">
            Zastosowanie technologii frezowania to sprawdzona inżyniersko metoda na błyskawiczne przejście z układów wysokotemperaturowych na wydajne, niskotemperaturowe źródła ciepła (pompy ciepła). <strong>Kluczową zaletą tego systemu jest drastyczny spadek bezwładności termicznej</strong> – cienka warstwa masy polimerowo-cementowej sprawia, że temperatura w pomieszczeniach stabilizuje się w czasie <strong>poniżej 45 minut</strong>.
        </p>
    </div>

    <!-- Interaktywny Symulator Decyzji -->
    <div class="rk-mill-interactive">
        <h3 class="rk-mill-subtitle">Jak błędy projektowe niszczą sprawność instalacji?</h3>
        
        <div class="rk-toggle-container">
            <div class="rk-toggle-bg" id="rkSimToggle" data-state="pro">
                <div class="rk-toggle-slider"></div>
                <div class="rk-toggle-btn active" data-target="pro" onclick="switchState('pro')">Projekt Inżynierski (OZC)</div>
                <div class="rk-toggle-btn" data-target="amateur" onclick="switchState('amateur')">Instalacja "Na oko"</div>
            </div>
        </div>

        <div class="rk-dynamic-view">
            <!-- WIDOK: PROJEKT INŻYNIERSKI -->
            <div class="rk-dynamic-card rk-card-pro active" id="view-pro">
                <svg class="rk-card-icon" viewBox="0 0 64 64" fill="none">
                    <circle cx="32" cy="32" r="30" stroke="var(--rk-mill-orange)" stroke-width="4" stroke-dasharray="4 4" class="anim-flow"/>
                    <path d="M22 32l7 7 15-15" stroke="var(--rk-mill-orange)" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
                    <circle cx="32" cy="32" r="15" fill="var(--rk-mill-orange-light)" class="anim-pulse" opacity="0.5"/>
                </svg>
                <h4 class="rk-card-title">Precyzyjne rury i płynny obieg</h4>
                <p class="rk-card-text">
                    Zastosowanie rur z <a href="https://projekt-ogrzewania.pl/rura-z-bariera-antydyfuzyjna-evoh/">barierą antydyfuzyjną EVOH</a> (zgodną z rygorystyczną normą DIN 4726) blokuje przenikanie tlenu. Pompa ciepła działa z optymalnym parametrem, a opory hydrauliczne są pod pełną kontrolą.
                </p>
            </div>

            <!-- WIDOK: BRAK PROJEKTU -->
            <div class="rk-dynamic-card rk-card-amateur" id="view-amateur">
                <svg class="rk-card-icon" viewBox="0 0 64 64" fill="none">
                    <circle cx="32" cy="32" r="30" stroke="var(--rk-mill-red)" stroke-width="4"/>
                    <path d="M20 20l24 24M44 20L20 44" stroke="var(--rk-mill-red)" stroke-width="5" stroke-linecap="round" class="anim-block"/>
                    <rect x="25" y="25" width="14" height="14" fill="var(--rk-mill-red)" rx="2"/>
                </svg>
                <h4 class="rk-card-title" style="color: var(--rk-mill-red);">Blokada przepływów i straty</h4>
                <p class="rk-card-text">
                    Brak rzetelnych <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">obliczeń strat ciepła</a> skutkuje drastycznym wzrostem oporów w rurkach 14 mm. Taktowanie pompy ciepła pożera budżet, a woda omija najdłuższe, źle dobrane pętle grzewcze.
                </p>
            </div>
            
            <!-- OPIS WSPÓLNY - ZMIENIA SIĘ ZALEŻNIE OD STANU -->
            <div class="rk-dynamic-card active" style="background: transparent; border: none; padding: 10px 0;">
                <div id="desc-pro">
                    <h4 class="rk-card-title">OZC ratuje Twój portfel</h4>
                    <p class="rk-card-text">
                        Każda modernizacja frezowana bezwzględnie wymaga obliczenia <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowego obciążenia cieplnego (OZC)</a>. Dzięki temu unika się przewymiarowania źródła ciepła, a odpowiednie zgruntowanie wyfrezowanych bruzd gwarantuje doskonałe przewodzenie energii bez ryzyka odparzenia okładzin.
                    </p>
                </div>
                <div id="desc-amateur" style="display: none;">
                    <h4 class="rk-card-title" style="color: var(--rk-mill-red);">Pozorna oszczędność</h4>
                    <p class="rk-card-text">
                        Projektowanie "z pamięci" lub sugerowanie się układami tradycyjnymi kończy się katastrofą przy małych przekrojach rur frezowanych. Pył pozostawiony w bruzdach izoluje rurę, sztucznie zwiększając <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładność cieplną</a> układu.
                    </p>
                </div>
            </div>
        </div>
    </div>

    <!-- Procedury (Kafelki pod spodem) -->
    <div class="rk-info-grid">
        <div class="rk-info-box">
            <h4>1. Odpylenie i Grunt</h4>
            <p>Pył betonowy to izolator. Dokładne odkurzenie bruzd klasy M przed aplikacją mas wyrównujących zapobiega odparzeniu warstwy nośnej.</p>
        </div>
        <div class="rk-info-box">
            <h4>2. Normatywne Masy</h4>
            <p>Zalewanie układu wymaga dedykowanych mas polimerowo-cementowych o bardzo dobrym współczynniku przewodzenia energii cieplnej.</p>
        </div>
        <div class="rk-info-box">
            <h4>3. Obliczenia Hydrauliczne</h4>
            <p>Z uwagi na cieńszą rurę (zazwyczaj 14x2), zaniechanie kalibracji przepływów prowadzi do trwałego upośledzenia efektywności pompy.</p>
        </div>
    </div>
</div>

<!-- ==========================================
     LOGIKA JS I ZABEZPIECZENIE (DOMAIN LOCK)
=========================================== -->
<script>
// Zabezpieczenie Domenowe - blokada bez użycia tagów nagłówkowych
document.addEventListener('DOMContentLoaded', function() {
    var d = window.location.hostname;
    var a = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (a.indexOf(d) === -1) {
        var c = document.getElementById('rk-frez-summary-app');
        if (c) {
            c.innerHTML = '<div style="padding: 40px; text-align: center; background: #1e293b; color: #ef4444; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;"><div style="font-size: 40px; margin-bottom: 15px;">⚠️</div><div style="font-size: 18px; font-weight: bold; margin-bottom: 10px; text-transform: uppercase;">Naruszenie Licencji</div><div style="font-size: 14px; color: #cbd5e1; max-width: 500px; margin: 0 auto; line-height: 1.6;">Moduł analityczny i kod JSON-LD stanowią własność Projekt-Ogrzewania.pl. Wykryto nieautoryzowane użycie skryptu.</div></div>';
        }
    }
});

// Logika Symulatora (Przełącznik)
function switchState(state) {
    const bg = document.getElementById('rkSimToggle');
    const btns = bg.querySelectorAll('.rk-toggle-btn');
    
    // UI toggle
    bg.setAttribute('data-state', state);
    btns.forEach(b => b.classList.remove('active'));
    bg.querySelector(`[data-target="${state}"]`).classList.add('active');

    // Dynamic Content
    if (state === 'pro') {
        document.getElementById('view-pro').style.display = 'flex';
        document.getElementById('desc-pro').style.display = 'block';
        
        // Timeout to allow display:flex to apply before animating opacity/transform
        setTimeout(() => {
            document.getElementById('view-pro').classList.add('active');
            document.getElementById('view-amateur').classList.remove('active');
            setTimeout(() => document.getElementById('view-amateur').style.display = 'none', 400);
        }, 10);
        document.getElementById('desc-amateur').style.display = 'none';

    } else {
        document.getElementById('view-amateur').style.display = 'flex';
        document.getElementById('desc-amateur').style.display = 'block';
        
        setTimeout(() => {
            document.getElementById('view-amateur').classList.add('active');
            document.getElementById('view-pro').classList.remove('active');
            setTimeout(() => document.getElementById('view-pro').style.display = 'none', 400);
        }, 10);
        document.getElementById('desc-pro').style.display = 'none';
    }
}
</script>



<style>
:root {
    --rk-dl2-dark: #0f172a; /* Głęboki granat */
    --rk-dl2-brand: #10b981; /* Techniczny szmaragd */
    --rk-dl2-brand-dark: #047857;
    --rk-dl2-accent: #0ea5e9; /* Morski cyjan */
    --rk-dl2-bg: #f8fafc;
    --rk-dl2-border: #e2e8f0;
    --rk-dl2-text: #334155;
    --rk-dl2-white: #ffffff;
}

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

/* NAGŁÓWEK SEKCI */
.rk-dl2-header {
    background: linear-gradient(135deg, var(--rk-dl2-dark) 0%, #1e293b 100%);
    padding: 45px 50px;
    color: var(--rk-dl2-white);
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: relative;
    border-bottom: 4px solid var(--rk-dl2-brand);
}

.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(16, 185, 129, 0.2);
    border: 1px solid rgba(16, 185, 129, 0.3);
    color: #6ee7b7;
    padding: 6px 14px;
    border-radius: 50px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 18px;
}

.rk-dl2-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 12px 0;
    letter-spacing: -0.5px;
    line-height: 1.3;
}

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

/* WIZUALIZACJA PDF / IKONA */
.rk-dl2-visual {
    position: relative;
    z-index: 2;
}

.rk-dl2-icon-svg {
    width: 90px;
    height: auto;
    filter: drop-shadow(0 15px 25px rgba(0,0,0,0.4));
    animation: rkFloat 3.5s infinite ease-in-out alternate;
}

@keyframes rkFloat {
    0% { transform: translateY(0) rotate(0deg); }
    100% { transform: translateY(-12px) rotate(3deg); }
}

/* GŁÓWNY WORKSPACE */
.rk-dl2-workspace {
    display: flex;
    padding: 40px 50px;
    gap: 45px;
    background: var(--rk-dl2-bg);
}

.rk-dl2-preview {
    flex: 1;
    background: #ffffff;
    border: 1px solid var(--rk-dl2-border);
    border-radius: 16px;
    padding: 12px;
    position: relative;
    cursor: zoom-in;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.4s;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05);
}

.rk-dl2-preview:hover {
    transform: scale(1.03) translateY(-5px);
    box-shadow: 0 20px 35px -5px rgba(16, 185, 129, 0.15);
}

.rk-dl2-img {
    width: 100%;
    height: auto;
    border-radius: 10px;
    display: block;
}

.rk-dl2-zoom-tag {
    position: absolute;
    bottom: 20px;
    right: 20px;
    background: rgba(15, 23, 42, 0.85);
    color: #ffffff;
    padding: 8px 14px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 700;
    backdrop-filter: blur(4px);
    display: flex;
    align-items: center;
    gap: 6px;
}

.rk-dl2-info {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-dl2-info h3 {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-dl2-dark);
    margin: 0 0 20px 0;
}

.rk-dl2-list {
    list-style: none;
    padding: 0;
    margin: 0 0 35px 0;
}

.rk-dl2-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 16px;
    font-size: 14.5px;
    font-weight: 600;
    color: var(--rk-dl2-text);
    line-height: 1.5;
}

.rk-dl2-check {
    width: 22px;
    height: 22px;
    color: var(--rk-dl2-brand);
    flex-shrink: 0;
    margin-top: 2px;
}

/* PRZYCISK POBIERANIA */
.rk-dl2-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-dl2-brand);
    color: var(--rk-dl2-white);
    text-decoration: none !important;
    padding: 18px 30px;
    border-radius: 14px;
    font-weight: 900;
    font-size: 16px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 10px 20px -5px rgba(16, 185, 129, 0.4);
    border: 2px solid transparent;
}

.rk-dl2-btn:hover {
    background: var(--rk-dl2-brand-dark);
    transform: translateY(-3px);
    box-shadow: 0 15px 30px -5px rgba(16, 185, 129, 0.5);
    border-color: #6ee7b7;
}

.rk-dl2-btn svg { transition: transform 0.3s; }
.rk-dl2-btn:hover svg { transform: translateY(3px); }

/* STOPKA MODUŁU */
.rk-dl2-footer {
    padding: 20px 50px;
    background: #ffffff;
    border-top: 1px solid var(--rk-dl2-border);
    font-size: 13px;
    color: #64748b;
    text-align: center;
}

.rk-dl2-footer a {
    color: var(--rk-dl2-accent);
    font-weight: 700;
    text-decoration: none;
}

@media (max-width: 800px) {
    .rk-dl2-header { flex-direction: column; text-align: center; padding: 35px 25px; }
    .rk-dl2-header-content { max-width: 100%; margin-bottom: 30px; }
    .rk-dl2-workspace { flex-direction: column; padding: 30px 25px; gap: 30px; }
    .rk-dl2-preview { margin-bottom: 10px; }
    .rk-dl2-btn { width: 100%; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#infografika-pdf",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/"
    },
    "headline": "Frezowanie podłogówki – Kompendium Wiedzy (Infografika PDF)",
    "description": "Pobierz inżynierskie zestawienie technologii frezowania ogrzewania podłogowego. Schematy, koszty, grubości jastrychu i najczęstsze błędy w jednym pliku PDF.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Frezowanie-ogrzewania-podlogowego-w-starym-domu.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-17",
    "dateModified": "2026-05-17"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#dataset-infografika",
    "name": "Matryca decyzyjna: Frezowanie vs Tradycyjne Kucie",
    "description": "Zbiór danych określający wady, zalety oraz techniczne wymagania brzegowe (nośność, grubość) dla wylewek poddawanych nacinaniu diamentowemu.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika frezowanie podłogówki",
      "porównanie kucie a frezowanie pdf",
      "schemat układania rur w bruzdach",
      "wymagania wylewki pod frezowanie",
      "błędy instalatora ogrzewanie podłogowe"
    ],
    "measurementTechnique": "Zestawienie analityczne kosztów i czasu realizacji opracowane na podstawie normy PN-EN 1264-4.",
    "mainEntity": {
      "@type": "Thing",
      "name": "Technologiczna karta porównawcza instalacji płaszczyznowych"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#download-hub",
    "name": "Centrum Pobierania Wiedzy: Frezowanie",
    "description": "Interaktywny moduł umożliwiający wizualizację HD i pobranie autorskiej dokumentacji technicznej w formacie wektorowym.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5"
  }
]
</script>

<div class="rk-dl2-container" id="app-frez-dl">
    
    <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" style="margin-right:4px;"><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 PDF
            </div>
            <h2>Pobierz Kompendium Wiedzy</h2>
            <p>Zabierz inżynierską wiedzę na budowę. Kompletne zestawienie technologii frezowania, schematy ułożenia rur i checklisty błędów w jednym pliku.</p>
        </div>
        <div class="rk-dl2-visual">
            <svg class="rk-dl2-icon-svg" viewBox="0 0 100 120" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M20 10 C20 4.477 24.477 0 30 0 L70 0 L100 30 L100 110 C100 115.523 95.523 120 90 120 L30 120 C24.477 120 20 115.523 20 110 Z" fill="#ef4444" stroke="#ffffff" stroke-width="4"/>
                <path d="M70 0 L70 30 L100 30" fill="#b91c1c"/>
                <circle cx="60" cy="65" r="15" fill="none" stroke="#ffffff" stroke-width="4" stroke-dasharray="8 4"/>
                <circle cx="60" cy="65" r="4" fill="#ffffff"/>
                <rect x="0" y="85" width="55" height="25" rx="4" fill="#ffffff" stroke="#ef4444" stroke-width="2"/>
                <text x="8" y="103" fill="#ef4444" font-size="16" 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/04/Infografika-Frezowanie-ogrzewania-podlogowego-w-starym-domu.webp', '_blank')">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Frezowanie-ogrzewania-podlogowego-w-starym-domu.webp" alt="Infografika Frezowanie ogrzewania podłogowego w starym domu" class="rk-dl2-img" loading="lazy">
            <div class="rk-dl2-zoom-tag">
                <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><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 class="rk-dl2-info">
            <h3>Co znajdziesz w infografice?</h3>
            <ul class="rk-dl2-list">
                <li class="rk-dl2-item">
                    <svg class="rk-dl2-check" 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>
                    <span><strong>Analiza Porównawcza:</strong> Tradycyjne kucie kontra bezpyłowe frezowanie.</span>
                </li>
                <li class="rk-dl2-item">
                    <svg class="rk-dl2-check" 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>
                    <span><strong>Wymagania Techniczne:</strong> Krytyczne grubości i dopuszczalne klasy jastrychu.</span>
                </li>
                <li class="rk-dl2-item">
                    <svg class="rk-dl2-check" 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>
                    <span><strong>Czerwone Flagi:</strong> Lista najczęstszych, kosztownych błędów instalatorów.</span>
                </li>
            </ul>

            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Frezowanie-ogrzewania-podlogowego-w-starym-domu.pdf" class="rk-dl2-btn" target="_blank" download>
                POBIERZ PLIK W WYSOKIEJ JAKOŚCI
                <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>
            </a>
            
            <p style="margin-top: 20px; font-size: 13.5px; color: #64748b; line-height: 1.5;">
                Zabezpiecz swoją inwestycję z autorskim <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" style="color:var(--rk-dl2-brand-dark); font-weight:800; text-decoration:underline;">Projektem Ogrzewania Podłogowego OZC</a>. Obliczenia na twardych danych uchronią Cię przed awarią.
            </p>
        </div>

    </div>

    <div class="rk-dl2-footer">
        © 2026 Projekt-Ogrzewania.pl | Inżynier HVAC: <strong>Robert Kucharski</strong>. Możesz udostępniać ten plik dalej (z zachowaniem linku).
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- OCHRONA DOMENOWA (Bez tagów nagłówkowych) ---
    const allowedHost = window.location.hostname;
    const whitelisted = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!whitelisted.includes(allowedHost)) {
        const dApp = document.getElementById('app-frez-dl');
        if (dApp) {
            dApp.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; margin-bottom: 10px;">Zasoby Chronione Licencją</div>
                    <p style="color: #cbd5e1; font-size: 14px; margin: 0;">Ta infografika i dokumentacja PDF są własnością serwisu Projekt-Ogrzewania.pl. Osadzanie na zewnętrznych domenach jest zablokowane.</p>
                </div>
            `;
        }
    }
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/">Frezowanie ogrzewania podłogowego w starym domu.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ogrzewanie podłogowe a pasywne zyski ciepła.</title>
		<link>https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-a-pasywne-zyski-ciepla/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Tue, 30 Dec 2025 11:28:18 +0000</pubDate>
				<category><![CDATA[Automatyka domowa]]></category>
		<category><![CDATA[Automatyka grzewcza]]></category>
		<category><![CDATA[Budownictwo energooszczędne]]></category>
		<category><![CDATA[Dom pasywny]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[HVAC]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Komfort cieplny]]></category>
		<category><![CDATA[Komfort w domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Technologie budowlane]]></category>
		<category><![CDATA[Technologie grzewcze]]></category>
		<category><![CDATA[bezwładność cieplna]]></category>
		<category><![CDATA[bilans cieplny]]></category>
		<category><![CDATA[energia słoneczna]]></category>
		<category><![CDATA[komfort termiczny]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pasywne zyski ciepła]]></category>
		<category><![CDATA[podłogówka]]></category>
		<category><![CDATA[pompy ciepła]]></category>
		<category><![CDATA[projekt instalacji]]></category>
		<category><![CDATA[sterowanie strefowe]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3004</guid>

					<description><![CDATA[<p>Nowoczesne budownictwo coraz częściej wykorzystuje darmową energię słoneczną, ale jej niewłaściwe połączenie z instalacją grzewczą potrafi przynieść więcej szkód niż korzyści. Ogrzewanie podłogowe a pasywne zyski ciepła to temat kluczowy dla komfortu i efektywności energetycznej budynku. W artykule pokazujemy, jak promieniowanie słoneczne wpływa na bezwładną wylewkę, dlaczego dochodzi do przegrzewania pomieszczeń oraz jak dzięki świadomemu projektowi i inteligentnemu sterowaniu zamienić słońce w realne wsparcie systemu grzewczego, a nie jego wroga.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-a-pasywne-zyski-ciepla/">Ogrzewanie podłogowe a pasywne zyski ciepła.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Właściwe zarządzanie <strong>pasywnymi zyskami ciepła</strong> stanowi jeden z najważniejszych, a często niedocenianych, aspektów projektowania i eksploatacji <strong>wodnego ogrzewania podłogowego</strong>. System ten, charakteryzujący się dużą bezwładnością termiczną i niskotemperaturowym źródłem, w wyjątkowy sposób reaguje na dodatkowe, darmowe dopływy energii, takie jak <strong>promieniowanie słoneczne</strong> przez przeszklenia od strony południowej. </p>



<p class="wp-block-paragraph">Ignorowanie tego zjawiska prowadzi nie tylko do dyskomfortu i przegrzewania pomieszczeń, lecz także do znaczącego spadku efektywności energetycznej całego systemu grzewczego. Niniejszy artykuł stanowi techniczne i praktyczne kompendium wiedzy na temat harmonijnej integracji <strong><a href="https://projekt-ogrzewania.pl">ogrzewania podłogowego</a></strong> z <strong>pasywnymi zyskami słonecznymi</strong>.</p>



<h2 class="wp-block-heading">Fizyka zjawiska: Dlaczego słońce ma tak istotny wpływ na podłogówkę?</h2>



<p class="wp-block-paragraph">Aby zrozumieć skalę wyzwania, należy wniknąć w samą istotę działania obu systemów: pasywnego pozyskiwania energii i aktywnego ogrzewania płaszczyznowego.</p>



<p class="wp-block-paragraph"><strong>Wodne ogrzewanie podłogowe</strong> to system o wysokiej mocy akumulacyjnej. Ciepło transportowane przez wodę w pętlach rur oddawane jest do masywnej <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">wylewki betonowej</a> (jastrychu), która pełni rolę grzejnika i – co kluczowe – <strong>akumulatora ciepła</strong>. Typowa wylewka o grubości 6-8 cm i gęstości ok. 2100 kg/m³ magazynuje ogromne ilości energii, co zapewnia równomierny rozkład temperatury i dużą bezwładność. System reaguje z opóźnieniem na zmiany zapotrzebowania.</p>



<p class="wp-block-paragraph"><strong>Pasywne zyski ciepła od południa</strong>&nbsp;to w głównej mierze energia promieniowania słonecznego krótkofalowego, które przenika przez przeszklenia. Padając na podłogę, ściany i meble, zamienia się w promieniowanie długofalowe (cieplne), ogrzewając masywną konstrukcję budynku. W przypadku podłogi z ogrzewaniem płaszczyznowym, mamy do czynienia z&nbsp;<strong>superpozycją dwóch strumieni cieplnych</strong>:</p>



<ol start="1" class="wp-block-list">
<li>Strumienia od <strong>systemu aktywnego</strong> (rura → jastrych).</li>



<li>Strumienia od <strong>systemu pasywnego</strong> (słońce → jastrych).</li>
</ol>



<p class="wp-block-paragraph">Efektem jest wzrost&nbsp;<strong>temperatury efektywnej jastrychu</strong>&nbsp;ponad wartość projektową, co natychmiast przekłada się na wzrost temperatury powietrza w pomieszczeniu. Bezwładność systemu sprawia, że nawet po zachodzie słońca, nagrzana wylewka będzie oddawać ciepło przez wiele godzin, potencjalnie prowadząc do&nbsp;<strong>przegrzania nocnego</strong>.</p>



<h2 class="wp-block-heading">Zapotrzebowanie na moc cieplną –  wzór.</h2>



<p class="wp-block-paragraph">Przedstawiony wzór pokazuje, że <strong>zapotrzebowanie na moc cieplną</strong> nie wynika wyłącznie ze strat budynku, ale jest zawsze pomniejszane o <strong>pasywne i wewnętrzne zyski ciepła</strong>. W praktyce oznacza to, że im większe zyski od słońca, urządzeń czy obecności ludzi, tym mniejsza moc musi być dostarczona przez instalację grzewczą. To właśnie na tej zasadzie projektuje się nowoczesne ogrzewanie podłogowe – nie „na zapas”, lecz w oparciu o realny bilans energetyczny, zgodny z normą <strong>PN-EN 12831</strong>, co bezpośrednio przekłada się na komfort i niższe koszty eksploatacji.</p>



<div style="
  border-left: 6px solid #1e73be;
  background: #f4f8fc;
  padding: 20px;
  margin: 30px 0;
  border-radius: 6px;
">

  <h3 style="margin-top:0;">
    Zapotrzebowanie na moc cieplną – wzór
  </h3>

  <p style="font-size:18px; font-weight:bold;">
    &Phi;<sub>ogrz</sub> = &Phi;<sub>straty</sub> − &Phi;<sub>zyski</sub>
  </p>

  <p>
    Wzór określa <strong>zapotrzebowanie na moc cieplną netto</strong>
    (strumień cieplny) potrzebną do ogrzania budynku lub konkretnego pomieszczenia.
  </p>

  <ul>
    <li>
      <strong>&Phi;<sub>ogrz</sub></strong> – projektowe obciążenie cieplne
      [W] / [kW]
    </li>
    <li>
      <strong>&Phi;<sub>straty</sub></strong> – straty przez przenikanie
      i wentylację
    </li>
    <li>
      <strong>&Phi;<sub>zyski</sub></strong> – zyski wewnętrzne i zewnętrzne
      (ludzie, urządzenia, słońce)
    </li>
  </ul>

  <p style="margin-bottom:0;">
    Podstawa do doboru źródła ciepła zgodnie z
    <strong>PN-EN 12831</strong>.
  </p>

</div>



<h2 class="wp-block-heading">Bilans cieplny pomieszczenia: Jak obliczyć i uwzględnić zyski pasywne?</h2>



<p class="wp-block-paragraph">Projektowanie systemu grzewczego bez rzetelnego bilansu cieplnego jest jak żeglowanie bez mapy. W kontekście&nbsp;<strong>zysków słonecznych</strong>&nbsp;kluczowe jest ich kwantyfikowanie.</p>



<p class="wp-block-paragraph"><strong>Podstawowy bilans mocy cieplnej dla pomieszczenia wyraża się wzorem:</strong><br><code>Φ_ogrz = Φ_straty - Φ_zyski</code><br>Gdzie:</p>



<ul class="wp-block-list">
<li><code>Φ_ogrz</code> – wymagana moc grzewcza systemu aktywnego [W]</li>



<li><code>Φ_straty</code> – straty ciepła przez przenikanie i wentylację [W]</li>



<li><code>Φ_zyski</code> – zyski ciepła (słoneczne, bytowe, od urządzeń) [W]</li>
</ul>



<p class="wp-block-paragraph"><strong>Zyski słoneczne (Φ_zyski,słoneczne)</strong>&nbsp;oblicza się ze wzoru:<br><code>Φ_zyski,słoneczne = A_szkła * g * I * F_sh</code></p>



<ul class="wp-block-list">
<li><code>A_szkła</code> – powierzchnia przeszklenia odbiorczego (południowego) [m²]</li>



<li><code>g</code> – współczynnik przepuszczalności energii całkowitej szyby (dla szyb niskoemisyjnych ≈ 0.5)</li>



<li><code>I</code> – średnie miesięczne nasłonecznienie na płaszczyznę pionową od strony południowej [W/m²] (dane klimatologiczne, np. dla Warszawy w styczniu to ok. 60-80 W/m², w marcu już 120-150 W/m²)</li>



<li><code>F_sh</code> – współczynnik redukcji dla zacienień (żaluzje, okapy, drzewa) [0-1]</li>
</ul>



<p class="wp-block-paragraph"><strong>Przykład obliczeniowy:</strong><br>Pomieszczenie o stratach&nbsp;<code>Φ_straty = 1200 W</code>&nbsp;ma duże okno południowe o powierzchni&nbsp;<code>A_szkła = 8 m²</code>. Dla słonecznego dnia w marcu (<code>I = 140 W/m²</code>), szyby o&nbsp;<code>g = 0.5</code>&nbsp;i braku zacienień (<code>F_sh = 1</code>) otrzymujemy:<br><code>Φ_zyski,słoneczne = 8 * 0.5 * 140 * 1 = 560 W</code><br>Wymagana moc systemu grzewczego w tym momencie spada do:<br><code>Φ_ogrz = 1200 W - 560 W = 640 W</code></p>



<p class="wp-block-paragraph"><strong>Wniosek praktyczny:</strong> W tym konkretnym momencie system grzewczy musi być zdolny do <strong>redukcji swojej mocy o ponad 46%</strong>. Dla systemu podłogowego sterowanego jedynie czujnikiem temperatury podłogi (ogranicznikiem) jest to niemożliwe do osiągnięcia bez przegrzania.</p>



<h2 class="wp-block-heading">Zaawansowane strategie sterowania: Serce optymalnego systemu.</h2>



<p class="wp-block-paragraph">Klasyczne, statyczne sterowanie temperaturą zasilania w funkcji temperatury zewnętrznej (kompensacja pogodowa) jest niewystarczające. Niezbędne jest wdrożenie&nbsp;<strong>inteligentnego, wielowymiarowego sterowania z pętlą sprzężenia zwrotnego z pomieszczenia</strong>.</p>



<h3 class="wp-block-heading">1. Indywidualne sterowanie strefowe z czujnikami powietrznymi.</h3>



<p class="wp-block-paragraph">Podstawą jest podział instalacji na&nbsp;<strong>strefy termiczne</strong>&nbsp;pokrywające się z pomieszczeniami lub grupami pomieszczeń o podobnej charakterystyce (ekspozycja, funkcja). Każda strefa musi posiadać:</p>



<ul class="wp-block-list">
<li><strong>Własny zawór mieszający lub elektrozawór</strong> na rozdzielaczu.</li>



<li><strong><a href="https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/">Sterownik pokojowy</a></strong> z czujnikiem temperatury powietrza, umieszczonym w reprezentatywnym miejscu, z dala od bezpośredniego nasłonecznienia i przeciągów.</li>



<li><strong>Czujnik temperatury podłogi</strong> jako zabezpieczenie przed przekroczeniem maksymalnej dopuszczalnej temperatury powierzchni (zwykle 29°C w strefie stałego pobytu, 35°C w łazience).</li>
</ul>



<p class="wp-block-paragraph">Algorytm pracy: Gdy&nbsp;<strong>promieniowanie słoneczne</strong>&nbsp;podniesie temperaturę powietrza powyżej wartości zadanej, sterownik zamyka zawór dla danej strefy,&nbsp;<strong>całkowicie wyłączając dopływ ciepłej wody</strong>&nbsp;do pętli podłogowej. System wykorzystuje wyłącznie&nbsp;<strong>darmową energię słoneczną</strong>.</p>



<h3 class="wp-block-heading">2. Kompensacja pogodowa z korektą słoneczną (Solar Gain Compensation).</h3>



<p class="wp-block-paragraph">To zaawansowana ewolucja standardowej krzywej grzewczej. Oprócz temperatury zewnętrznej, regulator centralny (np. sterownik <a href="https://projekt-ogrzewania.pl/category/pompy-ciepla/">pompy ciepła</a> lub kotła) przyjmuje sygnał z <strong>zewnętrznego czujnika nasłonecznienia (pyranometru)</strong>.</p>



<ul class="wp-block-list">
<li><strong>Zasada działania:</strong> Pyranometr mierzy natężenie promieniowania słonecznego padającego na płaszczyznę poziomą lub pionową [W/m²]. Gdy wartość przekroczy ustalony próg, sterownik <strong>obniża zadaną temperaturę zasilania</strong> dla wszystkich lub wybranych (południowych) obiegów, <strong>wyprzedzając</strong> wzrost temperatury w pomieszczeniach. Jest to działanie <strong>prognostyczne</strong>, a nie reaktywne.</li>
</ul>



<h3 class="wp-block-heading">3. Regulatory z algorytmami adaptacyjnymi (PID z adaptacją).</h3>



<p class="wp-block-paragraph">Najbardziej wyrafinowane rozwiązanie. Sterownik nie tylko reaguje na aktualne odchylenie temperatury, ale analizuje jej trendy w czasie, uwzględniając&nbsp;<strong>bezwładność systemu</strong>&nbsp;i&nbsp;<strong>charakterystykę budynku</strong>. Na podstawie historii cykli grzania (np. jak szybko rośnie temperatura po otwarciu zaworu) regulator „uczy się”, jak wcześniej zareagować na przewidywane&nbsp;<strong>zyski ciepła</strong>, minimalizując wahania temperatury. Działa to w obie strony – zarówno przy nagrzewaniu, jak i przy wykorzystaniu&nbsp;<strong>zysków pasywnych</strong>.</p>



<h2 class="wp-block-heading">Projektowanie instalacji  z myślą o zyskach pasywnych.</h2>



<p class="wp-block-paragraph">Samoregulujące właściwości&nbsp;<strong>ogrzewania podłogowego</strong>&nbsp;są wspomagane przez poprawnie zaprojektowaną i zrównoważoną instalację hydrauliczną.</p>



<ul class="wp-block-list">
<li><strong><a href="https://projekt-ogrzewania.pl/kategoria-produktu/rozdzielacze-do-ogrzewania-podlogowego/">Rozdzielacze</a> z przepływomierzami:</strong> Konieczność dla każdej strefy. Umożliwiają precyzyjne ustawienie i odczyt przepływu wody, co jest kluczowe dla zapewnienia wymaganej mocy grzewczej i poprawnej pracy zaworów termostatycznych podczas ich modulacji.</li>



<li><strong>Zawory RTL (Return Temperature Limiter) vs. zawory mieszające z siłownikiem:</strong> W małych strefach (np. łazienka) czasem stosuje się zawory RTL, regulujące przepływ w celu utrzymania zadanej temperatury powrotu. Są one <strong>niewystarczające dla stref z dużymi zyskami</strong>, gdyż nie reagują na temperaturę powietrza. <strong>Zawór mieszający z siłownikiem sterowanym pokojowym regulatorem</strong> to jedyne poprawne rozwiązanie.</li>



<li><strong>Układy kaskadowe i buforowe:</strong> W systemach z pompą ciepła szczególnie ważne jest zastosowanie zasobnika buforowego. Gdy <strong>zyski słoneczne</strong> wyłączają ogrzewanie w południowych strefach, pompa ciepła może nadal pracować z optymalną wydajnością, ładując bufor, z którego ciepło pobiorą strefy północne. Zapobiega to niekorzystnej pracy z częstymi startami/stopami.</li>
</ul>



<h3 class="wp-block-heading">Krytyczny element: Projekt ogrzewania podłogowego w kontekście zysków pasywnych.</h3>



<p class="wp-block-paragraph">Na etapie <strong><a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">projektowania ogrzewania podłogowego</a></strong> uwzględnienie <strong>pasywnych zysków ciepła</strong> nie jest opcją, a <strong>obowiązkiem</strong> inżyniera. Błąd na tym etapie jest później bardzo kosztowny lub trudny do skorygowania.</p>



<ol start="1" class="wp-block-list">
<li><strong>Symulacja dynamiczna:</strong> Zaawansowane projekty powinny opierać się nie na uproszczonych obliczeniach miesięcznych, a na <strong>symulacji dynamicznej budynku</strong> (np. w programie typu ENERGIS, TRNSYS). Pozwala ona przeanalizować zachowanie systemu w cyklu dobowym i rocznym, modelując zmienne <strong>nasłonecznienie</strong>, zachmurzenie, użytkowanie. Daje odpowiedź na pytania: jak często występuje ryzyko przegrzania? Jaka jest optymalna bezwładność termiczna podłogi w tym konkretnym budynku?</li>



<li><strong>Ścisła współpraca z architektem:</strong> Projektant instalacji <strong>musi</strong> współpracować z architektem nad:
<ul class="wp-block-list">
<li><strong>Współczynnikiem przeszklenia:</strong> Optymalny stosunek powierzchni okien do podłogi od strony południowej.</li>



<li><strong>Parametrami szyb:</strong> Wybór pakietów o odpowiednim współczynniku <code>g</code> (przepuszczalności energii) i niskim współczynniku przenikania ciepła <code>U</code>. Czasem celowo dobiera się szyby o nieco niższym <code>g</code>, aby zredukować skrajne <strong>zyski letnie</strong>, akceptując nieco niższe <strong>zyski zimowe</strong>.</li>



<li><strong>Elementów zacieniających:</strong> Projekt stałych (okapy, daszki) lub zewnętrznych (żaluzje, markizy) systemów zacieniających, które redukują <strong>zyski słoneczne</strong> latem, a pozwalają na nie zimą pod niskim kątem.</li>
</ul>
</li>



<li><strong>Dobór mocy i rozstawu pętli:</strong> W strefach południowych, po odjęciu obliczeniowych <strong>zysków pasywnych</strong>, zapotrzebowanie na moc aktywnego ogrzewania może być znacznie niższe. Może to pozwolić na <strong>zwiększenie <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">rozstawu rur</a></strong> (np. z 15 cm do 20 cm) lub obniżenie projektowej temperatury zasilania, co zwiększa sprawność źródła ciepła (pompy ciepła, kondensacyjnego kotła gazowego).</li>
</ol>



<h2 class="wp-block-heading">FAQ – najczęstsze pytania.</h2>



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1767087543630"><strong class="schema-faq-question"><strong>Czy pasywne zyski ciepła mogą powodować przegrzewanie przy ogrzewaniu podłogowym?</strong></strong> <p class="schema-faq-answer">Tak. Duża bezwładność jastrychu sprawia, że dodatkowe zyski słoneczne kumulują się w podłodze i mogą podnosić temperaturę jeszcze długo po zachodzie słońca.</p> </div> <div class="schema-faq-section" id="faq-question-1767087563068"><strong class="schema-faq-question"><strong>Czy sama krzywa grzewcza wystarczy do kontroli zysków słonecznych?</strong></strong> <p class="schema-faq-answer">Nie. Kompensacja pogodowa bez informacji z pomieszczeń nie reaguje na promieniowanie słoneczne, dlatego konieczne jest sterowanie strefowe lub adaptacyjne.</p> </div> <div class="schema-faq-section" id="faq-question-1767087580754"><strong class="schema-faq-question"><strong>Jakie sterowanie najlepiej współpracuje z pasywnymi zyskami ciepła?</strong></strong> <p class="schema-faq-answer">Najlepsze efekty dają systemy strefowe z czujnikami temperatury powietrza oraz regulatory adaptacyjne, które „uczą się” reakcji budynku.</p> </div> <div class="schema-faq-section" id="faq-question-1767087619827"><strong class="schema-faq-question"><strong>Czy projekt ogrzewania podłogowego powinien uwzględniać orientację budynku?</strong></strong> <p class="schema-faq-answer">Zdecydowanie tak. Strefy południowe wymagają innego doboru mocy, rozstawu rur i strategii sterowania niż północne.</p> </div> <div class="schema-faq-section" id="faq-question-1767087639266"><strong class="schema-faq-question"><strong>Czy pasywne zyski ciepła zawsze są korzystne zimą?</strong></strong> <p class="schema-faq-answer">Tak, pod warunkiem że są kontrolowane. Przy dobrze zaprojektowanym systemie obniżają zużycie energii i koszty ogrzewania, zamiast powodować dyskomfort.</p> </div> </div>



<h2 class="wp-block-heading">Podsumowanie: Synergia zamiast konkurencji.</h2>



<p class="wp-block-paragraph"><strong>Pasywne zyski ciepła</strong>&nbsp;od strony południowej nie są wrogiem&nbsp;<strong>wodnego ogrzewania podłogowego</strong>&nbsp;– są jego&nbsp;<strong>darmowym uzupełnieniem</strong>. Kluczem do sukcesu jest uznanie tego zjawiska za&nbsp;<strong>równoprawny element systemu grzewczego</strong>&nbsp;już na etapie koncepcji budynku i projektu instalacji.</p>



<p class="wp-block-paragraph">Finalna efektywność zależy od połączenia trzech filarów:</p>



<ol start="1" class="wp-block-list">
<li><strong>Świadomej architektury</strong> pasywnej, kontrolującej dopływ energii słonecznej.</li>



<li><strong>Precyzyjnego projektu instalacji</strong>, z podziałem na strefy i odpowiednio dobranymi parametrami.</li>



<li><strong>Zaawansowanego, wieloparametrowego sterowania</strong>, które potrafi w czasie rzeczywistym integrować pracę aktywnego źródła ciepła z kaprysami pogody.</li>
</ol>



<p class="wp-block-paragraph">System tak zaprojektowany nie tylko gwarantuje najwyższy komfort termiczny, pozbawiony przegrzewania i wychłodzeń, ale też osiąga najniższe możliwe koszty eksploatacji, maksymalnie wykorzystując <strong>bezpłatną energię słońca</strong> i minimalizując pracę konwencjonalnych źródeł ciepła. To inwestycja w inteligentną, przyszłościową i odpowiedzialną technologię grzewczą.</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="GhiiEpqj7Y"><a href="https://projekt-ogrzewania.pl/produkt/projekt-ogrzewania-podlogowego-do-150-m2/">Projekt ogrzewania podłogowego &#8211; do 150 m2</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8222;Projekt ogrzewania podłogowego &#8211; do 150 m2&#8221; &#8212; Projekt Ogrzewania" src="https://projekt-ogrzewania.pl/produkt/projekt-ogrzewania-podlogowego-do-150-m2/embed/#?secret=gFK2odfV0b#?secret=GhiiEpqj7Y" data-secret="GhiiEpqj7Y" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-a-pasywne-zyski-ciepla/">Ogrzewanie podłogowe a pasywne zyski ciepła.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Rura PEX do ogrzewania podłogowego.</title>
		<link>https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/</link>
					<comments>https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Mon, 03 Mar 2025 10:56:05 +0000</pubDate>
				<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Nowoczesne materiały budowlane]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[Rura PEX]]></category>
		<category><![CDATA[Rury do ogrzewania]]></category>
		<category><![CDATA[Rury do podłogówki]]></category>
		<category><![CDATA[Systemy rurowe]]></category>
		<category><![CDATA[Technologie budowlane]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pex-a]]></category>
		<category><![CDATA[pex-b]]></category>
		<category><![CDATA[pex-c]]></category>
		<category><![CDATA[podłogówka]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[rura pex]]></category>
		<category><![CDATA[system rurowy]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2314</guid>

					<description><![CDATA[<p>Rura PEX do ogrzewania podłogowego to jedno z najczęściej stosowanych rozwiązań w nowoczesnych systemach grzewczych. Dzięki odporności na wysokie temperatury, elastyczności oraz długiej żywotności, PEX jest wyborem numer jeden zarówno dla domów jednorodzinnych, jak i większych budynków użytkowych. W artykule omawiamy zalety tego materiału, porównujemy różne rodzaje PEX (PE-Xa, PE-Xb, PE-Xc), a także doradzamy, jak dobrać odpowiednie rury do projektu ogrzewania podłogowego. Przedstawiamy również koszty inwestycji oraz możliwe oszczędności, jakie można osiągnąć dzięki tej technologii.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/">Rura PEX do 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"><strong>Rura PEX do ogrzewania podłogowego</strong> to obecnie jeden z najpopularniejszych materiałów stosowanych w nowoczesnych instalacjach grzewczych. Dzięki swojej wyjątkowej odporności na wysokie temperatury oraz uszkodzenia mechaniczne, usieciowany polietylen (PEX) stał się synonimem trwałości i efektywności. W tym artykule przyjrzymy się, dlaczego warto postawić na ten materiał, jak projektować systemy z jego wykorzystaniem oraz jakie korzyści finansowe i eksploatacyjne możesz odnieść.</p>



<h2 class="wp-block-heading">Zalety rur PEX w systemach podłogowych.</h2>



<h3 class="wp-block-heading"><em>Odporność na ekstremalne temperatury – klucz do bezpieczeństwa</em>.</h3>



<p class="wp-block-paragraph"><a href="https://projekt-ogrzewania.pl/rury-do-ogrzewania-podlogowego/">Rury do ogrzewania podłogowego</a> PEX zachowują stabilność nawet przy temperaturach do <strong>95°C</strong>, co znacznie przekracza typowe potrzeby ogrzewania podłogowego (zwykle 35–55°C). Dzięki temu:</p>



<ul class="wp-block-list">
<li>Ryzyko przegrzania jest minimalne.</li>



<li>Materiał nie odkształca się, nawet przy długotrwałym kontakcie z gorącą wodą.</li>



<li>Idealnie sprawdza się w połączeniu z pompą ciepła lub kotłem kondensacyjnym.</li>
</ul>



<p class="wp-block-paragraph"><strong>Przykład:</strong>&nbsp;W domach z niskotemperaturowymi źródłami ciepła (np. pompy ciepła) PEX gwarantuje równomierny rozkład temperatury bez ryzyka uszkodzenia instalacji.</p>



<h3 class="wp-block-heading"><em>Wytrzymałość mechaniczna – ochrona przed pęknięciami i korozją</em>.</h3>



<p class="wp-block-paragraph">W przeciwieństwie do rur metalowych, PEX:</p>



<ul class="wp-block-list">
<li>Nie koroduje, nawet po latach kontaktu z wodą.</li>



<li>Jest odporny na uderzenia i ścieranie dzięki elastycznej strukturze.</li>



<li>Nie wymaga konserwacji, co obniża koszty eksploatacji.</li>
</ul>



<p class="wp-block-paragraph"><strong>Statystyka:</strong>&nbsp;Badania wykazują, że żywotność rur PEX w systemach podłogowych sięga nawet&nbsp;<strong>50 lat</strong>, przy założeniu poprawnego montażu.</p>



<h3 class="wp-block-heading"><em>Elastyczność montażu – oszczędność czasu i pieniędzy</em>.</h3>



<p class="wp-block-paragraph">Rury PEX można giąć pod kątem nawet&nbsp;<strong>90 stopni</strong>&nbsp;bez użycia kształtek, co:</p>



<ul class="wp-block-list">
<li>Zmniejsza liczbę połączeń (mniej punktów potencjalnych awarii).</li>



<li>Przyspiesza instalację – np. w domu 120 m² układanie rur zajmuje ok. <strong>2 dni</strong>.</li>



<li>Umożliwia dopasowanie do nietypowych kształtów pomieszczeń.</li>
</ul>



<h2 class="wp-block-heading">Dane techniczne rur PEX – kluczowe parametry dla efektywnego ogrzewania podłogowego.</h2>



<h3 class="wp-block-heading"><em>Rodzaje usieciowanego polietylenu: PE-Xa, PE-Xb, PE-Xc</em>.</h3>



<ul class="wp-block-list">
<li><strong>PE-Xa</strong>: Sieciowany chemicznie (najwyższa elastyczność, idealny do ciasnych przestrzeni).</li>



<li><strong>PE-Xb</strong>: Sieciowany w procesie silanowym (niższy koszt, wysoka odporność na chlor).</li>



<li><strong>PE-Xc</strong>: Sieciowany promieniowaniem (brak dodatków chemicznych, ekologiczny wybór).</li>
</ul>



<p class="wp-block-paragraph"><strong>Wskazówka:</strong>&nbsp;Do ogrzewania podłogowego najczęściej wybiera się PE-Xa lub PE-Xb ze względu na optymalny stosunek ceny do właściwości.</p>



<h3 class="wp-block-heading"><em>Wytrzymałość mechaniczna i temperatura pracy – co mówią normy?</em></h3>



<p class="wp-block-paragraph"><strong>Rury PEX do ogrzewania podłogowego</strong> muszą spełniać rygorystyczne normy, takie jak <strong><a href="https://projekt-ogrzewania.pl/norma-en-iso-15875/">EN ISO 15875</a></strong> lub <strong>DIN 16892</strong>, które określają ich właściwości eksploatacyjne. Oto najważniejsze parametry techniczne:</p>



<ul class="wp-block-list">
<li><strong>Maksymalna temperatura pracy</strong>: <strong>95°C</strong> (krótkotrwale) i <strong>70°C</strong> (stała praca).</li>



<li><strong>Ciśnienie robocze</strong>: <strong>6–10 bar</strong> w zależności od średnicy i grubości ścianki.</li>



<li><strong>Wytrzymałość na rozciąganie</strong>: <strong>20–25 MPa</strong> – porównywalne z niektórymi stopami metali.</li>



<li><strong>Współczynnik rozszerzalności cieplnej</strong>: <strong>0,15–0,2 mm/m na 10°C</strong> (3–4 razy niższy niż w przypadku PCV).</li>
</ul>



<p class="wp-block-paragraph"><strong>Przykład</strong>: Rura PEX o średnicy&nbsp;<strong>16 mm</strong>&nbsp;i grubości ścianki&nbsp;<strong>2 mm</strong>&nbsp;wytrzymuje ciśnienie&nbsp;<strong>10 bar</strong>&nbsp;w temperaturze&nbsp;<strong>70°C</strong>, co jest wartością wystarczającą dla większości systemów podłogowych w domach jednorodzinnych.</p>



<h3 class="wp-block-heading"><em>Średnica i grubość ścianki – jak dobrać je do projektu?</em></h3>



<p class="wp-block-paragraph">Wybór odpowiednich wymiarów rur PEX wpływa na wydajność grzewczą i koszty inwestycji. Najczęściej stosowane warianty to:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th><strong>Średnica zewnętrzna</strong></th><th><strong>Grubość ścianki</strong></th><th><strong>Zastosowanie</strong></th></tr></thead><tbody><tr><td><strong>16 mm</strong></td><td>2,0 mm</td><td>Standardowe pomieszczenia (sypialnie, salony)</td></tr><tr><td><strong>20 mm</strong></td><td>2,3 mm</td><td>Duże powierzchnie lub strefy z wysokimi stratami ciepła</td></tr><tr><td><strong>25 mm</strong></td><td>3,0 mm</td><td>Obiekty przemysłowe lub baseny</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>Wskazówka</strong>: W systemach podłogowych dominują rury&nbsp;<strong>16 mm</strong>&nbsp;i&nbsp;<strong>20 mm</strong>, ponieważ zapewniają optymalny przepływ wody przy minimalnych stratach ciśnienia.</p>



<h3 class="wp-block-heading"><em>Bariera EVOH – dlaczego chroni instalację?</em></h3>



<p class="wp-block-paragraph">Większość rur PEX posiada warstwę&nbsp;<strong>EVOH (etleno-winylowego alkoholu)</strong>, która:</p>



<ul class="wp-block-list">
<li>Zmniejsza dyfuzję tlenu do <strong>0,1 g/m³ na dobę</strong> (dla porównania: rury bez bariery – nawet <strong>10 g/m³</strong>).</li>



<li>Zapobiega korozji elementów metalowych (np. kotłów, zaworów).</li>



<li>Wydłuża żywotność instalacji o <strong>20–30%</strong>.</li>
</ul>



<p class="wp-block-paragraph"><strong>Norma EN ISO 15875</strong>&nbsp;dopuszcza maksymalną przepuszczalność tlenu na poziomie&nbsp;<strong>0,5 g/m³ na dobę</strong>&nbsp;– warto więc wybierać rury z wartościami poniżej tego progu.</p>



<h3 class="wp-block-heading"><em>Klasyfikacja SDR (Standard Dimension Ratio) – co oznacza?</em></h3>



<p class="wp-block-paragraph">Wskaźnik <strong>SDR</strong> określa stosunek średnicy zewnętrznej rury do grubości jej ścianki. Im niższy SDR, tym większa wytrzymałość mechaniczna. Dla <a href="https://projekt-ogrzewania.pl/category/ogrzewanie-podlogowe/">ogrzewania podłogowego</a> rekomendowane są:</p>



<ul class="wp-block-list">
<li><strong>SDR 7,4</strong>: Dla rur <strong>16×2,0 mm</strong> – uniwersalne rozwiązanie.</li>



<li><strong>SDR 9</strong>: Dla rur <strong>20×2,3 mm</strong> – stosowane w systemach wymagających wyższego przepływu.</li>
</ul>



<p class="wp-block-paragraph"><strong>Kalkulacja</strong>: Rura&nbsp;<strong>20×2,3 mm</strong>&nbsp;ma SDR = 20 / 2,3 ≈&nbsp;<strong>8,7</strong>&nbsp;– mieści się w bezpiecznym zakresie dla instalacji podłogowych.</p>



<h3 class="wp-block-heading"><em>Certyfikacje i atesty – na co zwracać uwagę?</em></h3>



<p class="wp-block-paragraph">Przed zakupem rur PEX sprawdź, czy posiadają:</p>



<ul class="wp-block-list">
<li><strong>Atest PZH</strong>: Potwierdza bezpieczeństwo kontaktu z wodą pitną.</li>



<li><strong>Certyfikat DVGW</strong>: Wymagany w instalacjach grzewczych w Niemczech (gwarancja jakości).</li>



<li><strong>Oznaczenie CE</strong>: Spełnienie norm Unii Europejskiej.</li>
</ul>



<p class="wp-block-paragraph"><strong>Przykład marki</strong>: Rury takich producentów jak Kisan, Rehau, Wawin czy Upnor posiadają wszystkie powyższe certyfikaty i są rekomendowane przez producentów kotłów, takich jak Vaillant czy Viessmann.</p>



<h2 class="wp-block-heading"><strong>Projektowanie ogrzewania podłogowego z rur PEX – krok po kroku</strong>.</h2>



<h3 class="wp-block-heading"><em>Planowanie rozkładu rur – klucz do efektywności</em>.</h3>



<ul class="wp-block-list">
<li><strong>Rozstaw rur</strong>: Optymalna odległość między rurami to <strong>10–25 cm</strong> (w zależności od strat ciepła w pomieszczeniu).</li>



<li><strong>Długość pętli</strong>: Zaleca się, aby jedna pętla nie przekraczała <strong>90–100 m</strong> (zapobiega nierównomiernemu grzaniu).</li>
</ul>



<p class="wp-block-paragraph"><strong>Przykład projektu:</strong> Dla domu o powierzchni 150 m² potrzeba ok. <strong>1600–1800 m rur PEX</strong> (przy rozstawie 10 cm).</p>



<h3 class="wp-block-heading"><em>Wybór średnicy rur a wydajność systemu</em>.</h3>



<ul class="wp-block-list">
<li><strong>16 mm</strong>: Standard dla pomieszczeń o średnim zapotrzebowaniu na ciepło.</li>



<li><strong>20 mm</strong>: Stosowane w dużych obiektach lub strefach o wysokich stratach ciepła (np. przeszklone elewacje).</li>
</ul>



<p class="wp-block-paragraph"><strong>Kalkulacja:</strong>&nbsp;W salonie o powierzchni 30 m² z rurami 16 mm i rozstawie 15 cm potrzeba ok.&nbsp;<strong>200 m rur</strong>.</p>



<p class="wp-block-paragraph"><strong>Wskazówka</strong>: Pamiętaj by uwzględnić odpowiednią średnicę rur do ogrzewania podłogowego podczas <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">projektowania ogrzewania podłogowego</a>.</p>



<h2 class="wp-block-heading"><strong>Koszty inwestycji vs. oszczędności – ile możesz zyskać?</strong></h2>



<h3 class="wp-block-heading"><em>Porównanie z tradycyjnymi materiałami</em>.</h3>



<ul class="wp-block-list">
<li><strong>PEX vs. miedź</strong>: Koszt materiału jest niższy o <strong>40–60%</strong>, a montaż o <strong>30% szybszy</strong>.</li>



<li><strong>PEX vs. PE-RT</strong>: Rury PEX są droższe o <strong>10–15%</strong>, ale trwalsze o <strong>20–30 lat</strong>.</li>
</ul>



<p class="wp-block-paragraph"><strong>Analiza przypadku:</strong>&nbsp;Dla domu 100 m² inwestycja w PEX to wydatek ok.&nbsp;<strong>8 000–12 000 zł</strong>&nbsp;(w tym materiały i robocizna), ale zwraca się po&nbsp;<strong>5–7 latach</strong>&nbsp;dzięki oszczędności energii.</p>



<h3 class="wp-block-heading"><em>Przykładowe wyliczenia dla domów różnej wielkości</em>.</h3>



<ol start="1" class="wp-block-list">
<li><strong>Dom 80 m²</strong>:
<ul class="wp-block-list">
<li>Długość rur: <strong>600–800 m</strong>.</li>



<li>Koszt materiału: <strong>2500–3000 zł</strong>.</li>



<li>Roczne oszczędności na ogrzewaniu: <strong>15–20%</strong> w porównaniu do grzejników.</li>
</ul>
</li>



<li><strong>Biurowiec 300 m²</strong>:
<ul class="wp-block-list">
<li>Długość rur: <strong>1800 – 2500 m</strong>.</li>



<li>Koszt materiału: <strong>8000 – 12000 zł</strong>.</li>



<li>Redukcja kosztów energii: <strong>25–30%</strong>.</li>
</ul>
</li>
</ol>



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



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1740998259055"><strong class="schema-faq-question"><strong>Czym różnią się rury PEX-a, PEX-b i PEX-c?</strong></strong> <p class="schema-faq-answer">PEX-a jest najbardziej elastyczny, co ułatwia montaż w ciasnych przestrzeniach. PEX-b ma wysoką odporność na chlor, a PEX-c to opcja ekologiczna, sieciowana promieniowaniem.</p> </div> <div class="schema-faq-section" id="faq-question-1740998271752"><strong class="schema-faq-question"><strong>Jaką średnicę rur PEX wybrać do ogrzewania podłogowego?</strong></strong> <p class="schema-faq-answer">Najczęściej stosowane są rury o średnicy 16 mm lub 20 mm. Mniejsze średnice sprawdzają się w standardowych pomieszczeniach, a większe w miejscach o większych stratach ciepła.</p> </div> <div class="schema-faq-section" id="faq-question-1740998282517"><strong class="schema-faq-question"><strong>Czy rury PEX są odporne na korozję?</strong></strong> <p class="schema-faq-answer">Tak, rury PEX nie korodują i są odporne na działanie chemikaliów, co wydłuża ich żywotność w instalacji grzewczej.</p> </div> <div class="schema-faq-section" id="faq-question-1740998294153"><strong class="schema-faq-question"><strong>Jaka jest żywotność rur PEX w ogrzewaniu podłogowym?</strong></strong> <p class="schema-faq-answer">Przy prawidłowym montażu i eksploatacji rury PEX mogą działać nawet 50 lat, co czyni je niezwykle trwałym rozwiązaniem.</p> </div> <div class="schema-faq-section" id="faq-question-1740998330304"><strong class="schema-faq-question"><strong>Czy rury PEX wymagają konserwacji?</strong></strong> <p class="schema-faq-answer">Nie, rury PEX nie wymagają konserwacji, co sprawia, że są praktycznie bezobsługowe i nie generują dodatkowych kosztów eksploatacyjnych.</p> </div> </div>



<h2 class="wp-block-heading"><strong>Podsumowanie: PEX to inwestycja w komfort i oszczędności</strong>.</h2>



<p class="wp-block-paragraph"><strong>Rury PEX do ogrzewania podłogowego</strong>&nbsp;to rozwiązanie, które łączy w sobie technologiczną innowacyjność z ekonomiczną opłacalnością. Niezależnie od tego, czy projektujesz dom jednorodzinny, czy duży obiekt komercyjny, usieciowany polietylen zapewni Ci bezawaryjną pracę instalacji przez dziesięciolecia. Kluczem sukcesu jest jednak współpraca z doświadczonym projektantem, który dobierze optymalny rozstaw rur i uwzględni specyfikę Twojego budynku.</p>



<p class="wp-block-paragraph"><em><strong>Warto pamiętać:</strong> Nawet najlepszy materiał nie zastąpi profesjonalnego montażu – zawsze zatrudniaj certyfikowanych instalatorów!</em></p>



<figure class="wp-block-embed aligncenter is-type-wp-embed is-provider-projekt-ogrzewania wp-block-embed-projekt-ogrzewania"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="LIGQp3iH8r"><a href="https://projekt-ogrzewania.pl/produkt/projekt-ogrzewania-podlogowego-do-150-m2/">Projekt ogrzewania podłogowego &#8211; do 150 m2</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8222;Projekt ogrzewania podłogowego &#8211; do 150 m2&#8221; &#8212; Projekt Ogrzewania" src="https://projekt-ogrzewania.pl/produkt/projekt-ogrzewania-podlogowego-do-150-m2/embed/#?secret=P91XAQYSIX#?secret=LIGQp3iH8r" data-secret="LIGQp3iH8r" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/">Rura PEX do ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Czy trzeba mieć projekt na ogrzewanie podłogowe?</title>
		<link>https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/</link>
					<comments>https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 09 Feb 2025 10:59:16 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Montaż ogrzewania]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Oszczędność energii]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Technologie budowlane]]></category>
		<category><![CDATA[dokumentacja techniczna]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[montaż ogrzewania]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[porady budowlane]]></category>
		<category><![CDATA[projekt podłogówki]]></category>
		<category><![CDATA[remont domu]]></category>
		<category><![CDATA[systemy grzewcze]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2146</guid>

					<description><![CDATA[<p>Planujesz montaż ogrzewania podłogowego i zastanawiasz się, czy potrzebujesz profesjonalnego projektu? W artykule „Czy trzeba mieć projekt na ogrzewanie podłogowe?” znajdziesz odpowiedzi na wszystkie nurtujące pytania. Dowiesz się, dlaczego dokumentacja techniczna to klucz do efektywnego systemu grzewczego, jakie są koszty braku projektu oraz gdzie zamówić go za darmo. Poznasz również praktyczne przykłady i porady, które pomogą Ci uniknąć błędów. Sprawdź, jak zaoszczędzić energię i zapewnić sobie komfort na lata!</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/">Czy trzeba mieć projekt na ogrzewanie podłogowe?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>Czy trzeba mieć projekt na ogrzewanie podłogowe?</strong> To pytanie zadaje sobie wielu inwestorów, planujących montaż „podłogówki” w swoim domu. Ogrzewanie podłogowe to system, który zapewnia komfort cieplny i energooszczędność, ale jego prawidłowe działanie zależy od starannego zaplanowania. </p>



<p class="wp-block-paragraph">Czy można zrezygnować z profesjonalnego projektu i postawić na „domowe” rozwiązania? Wbrew pozorom, odpowiedź nie jest jednoznaczna. Choć w przypadku małych instalacji formalnie nie jest to wymagane, brak dokumentacji technicznej może prowadzić do poważnych problemów – od nierównomiernego rozprowadzenia ciepła po zwiększone koszty eksploatacji. </p>



<p class="wp-block-paragraph">W tym artykule przyjrzymy się, dlaczego <em>projekt instalacji ogrzewania podłogowego</em> to nie tylko formalność, ale inwestycja, która zwraca się w postaci oszczędności i długotrwałego komfortu. Dowiesz się również, gdzie zamówić taki projekt i czy można to zrobić za darmo. Zapraszamy do lektury!</p>



<h2 class="wp-block-heading">Dlaczego projekt instalacji podłogówki to konieczność?</h2>



<p class="wp-block-paragraph"><a href="https://projekt-ogrzewania.pl">Ogrzewanie podłogowe</a> to system, który wymaga precyzyjnego zaplanowania. W przeciwieństwie do grzejników, które można przesunąć lub wymienić, <strong>rury ukryte w wylewce</strong> są trudne do modyfikacji po montażu. Brak projektu może prowadzić do:</p>



<ul class="wp-block-list">
<li><strong>Nierównomiernego rozprowadzenia ciepła</strong> – miejscowe przegrzania lub „zimne strefy”.</li>



<li><strong>Zawyżonych kosztów eksploatacji</strong> – np. przez błędnie dobraną moc pompy ciepła.</li>



<li><strong>Uszkodzenia posadzki </strong>– np. pęknięć spowodowanych zbyt wysoką temperaturą zasilania.</li>
</ul>



<p class="wp-block-paragraph"><em>Przykład:</em> W domu o powierzchni 120 m² źle zaprojektowana rozstaw rur (np. 20 cm zamiast 10 cm w strefie okiennej) może zwiększyć zużycie energii nawet o 25%.</p>



<h2 class="wp-block-heading">Co zawiera profesjonalny projekt podłogówki?</h2>



<p class="wp-block-paragraph">Dobry <strong>projekt instalacji ogrzewania podłogowego</strong> to nie tylko schemat układu rur. To kompletna dokumentacja uwzględniająca:</p>



<ol class="wp-block-list">
<li><strong>Strefy grzewcze</strong> – podział na obwody z uwzględnieniem rodzaju pomieszczeń (np. łazienka vs. salon).</li>



<li><strong>Parametry techniczne</strong> – moc cieplna, temperatura zasilania, rodzaj <a href="https://projekt-ogrzewania.pl/kategoria-produktu/rury-do-ogrzewania-podlogowego/">rur</a> (np. PEX-Al-PEX).</li>



<li><strong>Rozstaw pętli grzewczych</strong> – odległości między rurami dostosowane do strat ciepła.</li>
</ol>



<p class="wp-block-paragraph">Przykładowy projekt można zobaczyć <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">tutaj</a>.</p>



<p class="wp-block-paragraph"><em>Case study:</em> W projekcie dla domu parterowego z poddaszem użytkowym zaproponowano układ spiralny w salonach (lepsza równomierność) i meandryczny w łazienkach (wyższa moc lokalnie).</p>



<h2 class="wp-block-heading">Koszty braku projektu – liczby, które przekonują.</h2>



<p class="wp-block-paragraph">Oszczędzając na dokumentacji, często tracimy więcej na etapie eksploatacji. Oto porównanie kosztów instalacji ogrzewania podłogowego dla domu z użytkowym poddaszem o powierzchni 150m2 :</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><th>Kryterium</th><th>Z projektem</th><th>Bez projektu</th></tr><tr><td>Roczne zużycie energii</td><td>4500 kWh</td><td>6200 kWh</td></tr><tr><td>Koszt instalacji ogrzewania</td><td>18 000 zł</td><td>22 500 zł (przeróbki)</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><em>Uwaga:</em> Powyższe dane dotyczą przykładowego budynku o zapotrzebowaniu 60 W/m².</p>



<h2 class="wp-block-heading">Gdzie zamówić projekt i ile to kosztuje?</h2>



<p class="wp-block-paragraph">Na stronie <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">projekt-ogrzewania.pl</a> znajdziesz ofertę <strong>darmowego projektu podłogówki</strong>, gdzie opłata 350 zł stanowi zwrotną kaucję. Warunki? Po zrealizowaniu zakupu materiałów u partnerów firmy otrzymasz zwrot kosztów – szczegóły znajdziesz w <a href="https://projekt-ogrzewania.pl/zwrot-kaucji-za-zakupiony-projekt-ogrzewania-podlogowego/">regulaminie promocji</a>.</p>



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



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1739097183708"><strong class="schema-faq-question"><strong>Czy projekt na ogrzewanie podłogowe jest obowiązkowy?</strong></strong> <p class="schema-faq-answer">Nie zawsze. W domach jednorodzinnych o powierzchni do 70 m² projekt nie jest wymagany prawnie, ale zaleca się go dla większych instalacji lub gdy zależy nam na optymalizacji kosztów i efektywności.</p> </div> <div class="schema-faq-section" id="faq-question-1739097197791"><strong class="schema-faq-question"><strong>Jakie są korzyści z posiadania projektu?</strong></strong> <p class="schema-faq-answer">Projekt zapewnia równomierne rozprowadzenie ciepła, minimalizuje ryzyko błędów montażowych oraz obniża koszty eksploatacji systemu.</p> </div> <div class="schema-faq-section" id="faq-question-1739097210604"><strong class="schema-faq-question"><strong>Gdzie można zamówić projekt ogrzewania podłogowego?</strong></strong> <p class="schema-faq-answer">Projekt można zamówić np. na naszej stronie <a href="https://projekt-ogrzewania.pl/kategoria-produktu/projekty/" target="_blank" rel="noreferrer noopener">projekt-ogrzewania.pl</a>, gdzie oferowany jest darmowy projekt po zakupie materiałów u partnerów.</p> </div> <div class="schema-faq-section" id="faq-question-1739097267561"><strong class="schema-faq-question"><strong>Ile kosztuje projekt ogrzewania podłogowego?</strong></strong> <p class="schema-faq-answer">Koszt projektu zaczyna się od 350 zł, ale na <a href="https://projekt-ogrzewania.pl/darmowy-projekt-ogrzewania-podlogowego/">u nas</a> można uzyskać go za darmo po spełnieniu warunków promocji.</p> </div> <div class="schema-faq-section" id="faq-question-1739097280680"><strong class="schema-faq-question"><strong>Co się stanie, jeśli zrezygnuję z projektu?</strong></strong> <p class="schema-faq-answer">Brak projektu może prowadzić do nierównomiernego grzania, zwiększonych kosztów energii, a nawet uszkodzeń posadzki. Warto zainwestować w dokumentację, aby uniknąć problemów na późniejszym etapie.</p> </div> </div>



<h2 class="wp-block-heading">Podsumowanie: Projekt to inwestycja, która się zwraca.</h2>



<p class="wp-block-paragraph">Nawet jeśli formalnie <strong>projekt na ogrzewanie podłogowe</strong> nie jest wymagany prawem budowlanym (w domach jednorodzinnych do 70 m²), jego wykonanie to gwarancja:</p>



<ul class="wp-block-list">
<li>Optymalnego zużycia energii.</li>



<li>Minimalizacji ryzyka błędów montażowych.</li>



<li>Możliwości reklamacji w przypadku awarii.</li>
</ul>



<p class="wp-block-paragraph"><em>Pamiętaj: W przypadku większych instalacji dokumentacja techniczna jest obowiązkowa – wymaga jej m.in. do odbioru kominiarskiego.</em></p>



<figure class="wp-block-embed aligncenter is-type-wp-embed is-provider-projekt-ogrzewania wp-block-embed-projekt-ogrzewania"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="A1M0mQ3NmC"><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=vLL7NisFUR#?secret=A1M0mQ3NmC" data-secret="A1M0mQ3NmC" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/">Czy trzeba mieć projekt na ogrzewanie podłogowe?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Maksymalna długość pętli ogrzewania podłogowego.</title>
		<link>https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/</link>
					<comments>https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Wed, 05 Feb 2025 20:55:07 +0000</pubDate>
				<category><![CDATA[Budowa i remont]]></category>
		<category><![CDATA[Dom pasywny]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Hydraulika]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[Technologie budowlane]]></category>
		<category><![CDATA[długość pętli grzewczej]]></category>
		<category><![CDATA[izolacja termiczna]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[pętla ogrzewania podłogowego]]></category>
		<category><![CDATA[pex 16 mm]]></category>
		<category><![CDATA[pex 20 mm]]></category>
		<category><![CDATA[pompa obiegowa]]></category>
		<category><![CDATA[projektowanie ogrzewania]]></category>
		<category><![CDATA[równoważenie hydrauliczne]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2095</guid>

					<description><![CDATA[<p>Planujesz montaż ogrzewania podłogowego? Maksymalna długość pętli ogrzewania podłogowego to parametr, od którego zależy komfort cieplny i oszczędność energii. Zbyt długa pętla powoduje zimne strefy na podłodze, przeciąża pompę i zwiększa rachunki. W artykule wyjaśniamy, jak dobrać optymalną długość rur PEX 16 mm i 20 mm, jak obliczyć wydajność pompy oraz dlaczego izolacja podłogi jest kluczowa. Poznaj praktyczne przykłady, wzory i błędy, których warto uniknąć, by system działał sprawnie przez lata!</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">Maksymalna długość pętli ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --primary: #0f172a;
    --accent: #0284c7; 
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #f0f9ff; 
    --border-color: #e2e8f0;
}

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

.premium-hero-box::before {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    width: 300px;
    height: 300px;
    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: 45px 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: 25px;
    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: #0369a1;
}

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

.hero-modules-title {
    font-size: 14px;
    font-weight: 800;
    text-transform: uppercase;
    color: #94a3b8;
    letter-spacing: 1px;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    gap: 15px;
}

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

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

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

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

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

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

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

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

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

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Maksymalna długość pętli ogrzewania podłogowego – granice, wzory i optymalizacja",
    "description": "Zaawansowany przewodnik inżynierski. Sprawdź, jaka jest maksymalna długość pętli ogrzewania podłogowego, jak obliczyć opór hydrauliczny i dlaczego rura 16 mm ma limit 100 metrów.",
    "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"
    },
    "license": "https://projekt-ogrzewania.pl/",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Wartości graniczne oporów i długości dla obiegów grzewczych podłogowych",
    "description": "Zestawienie dopuszczalnych długości i wynikowych oporów hydraulicznych dla rur PEX/PERT stosowanych w niskotemperaturowych instalacjach płaszczyznowych wg normy PN-EN 1264.",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Limit długości rury 16x2.0 mm",
        "value": "80-100 m",
        "description": "Zalecana wartość maksymalna zapewniająca liniowy opór poniżej 20 kPa"
      },
      {
        "@type": "PropertyValue",
        "name": "Limit długości rury 20x2.0 mm",
        "value": "100-120 m",
        "description": "Wartość graniczna dla dużych przestrzeni, stosowana m.in. w otwartych salonach"
      },
      {
        "@type": "PropertyValue",
        "name": "Krytyczny spadek ciśnienia na pętli",
        "value": "Max 0,25 bar (25 000 Pa)",
        "description": "Graniczna wartość oporu gwarantująca poprawne wymuszenie przepływu przez standardową pompę obiegową"
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Kalkulator Oporów Hydraulicznych i Straty Ciśnienia",
    "url": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#kalkulator-oporow",
    "description": "Interaktywne narzędzie inżynierskie do symulacji i obliczania oporów przepływu. Wskazuje, czy zaprojektowana długość pętli nie zablokuje przepływu masowego (l/min) i czy pompa obiegowa sprosta wygenerowanym oporom.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  }
]
</script>

<div class="premium-hero-box" id="hero-app-container">
    <div class="hero-content">
        
        <div class="hero-badge">
            <span>📏</span> Parametr Krytyczny Projektu
        </div>
        
        <p class="hero-text"><strong>Maksymalna długość pętli ogrzewania podłogowego</strong> to graniczna wartość rury grzejnej (najczęściej typu PEX lub PERT) ułożonej w jednym, ciągłym obiegu. Z punktu widzenia inżynierii sanitarnej, przekroczenie tego limitu skutkuje drastycznym wzrostem oporów hydraulicznych i natychmiastowym spadkiem wydajności cieplnej. Jeśli pętla jest zbyt długa, woda krążąca w systemie wychładza się zanim dotrze do końca obiegu, a standardowa pompa obiegowa traci zdolność do przetłoczenia wymaganej masy medium, co prowadzi do powstawania tzw. zimnych stref.</p>
        
        <p class="hero-text">Opierając się na wyliczeniach projektowych, normie <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">PN-EN 1264</a> oraz wieloletnim doświadczeniu z placów budowy, standardowo przyjmuje się, że dla najpopularniejszej rury o średnicy <strong>16&#215;2,0 mm</strong>, bezpieczna i maksymalna długość pętli ogrzewania podłogowego to <strong>80–100 metrów bieżących</strong>. W poniższym poradniku szczegółowo przeanalizujemy, z czego wynikają te restrykcje, jak średnica rury wpływa na limity i jak bezbłędnie zrównoważyć instalację.</p>

        <div class="hero-modules-title">W tym kompendium przeanalizujemy:</div>
        
        <div class="hero-grid">
            <div class="hero-card">
                <span class="hero-card-icon">🌊</span>
                <span class="hero-card-title">Opory hydrauliczne</span>
            </div>
            <div class="hero-card">
                <span class="hero-card-icon">📏</span>
                <span class="hero-card-title">Średnice rur a limity</span>
            </div>
            <div class="hero-card">
                <span class="hero-card-icon">⚖️</span>
                <span class="hero-card-title">Równoważenie obiegów</span>
            </div>
            <div class="hero-card">
                <span class="hero-card-icon">⚙️</span>
                <span class="hero-card-title">Wydajność pompy</span>
            </div>
        </div>

    </div>

    <noscript>
        <div style="padding: 20px 50px; background: #f8fafc; border-top: 1px solid #e2e8f0; font-family: sans-serif;">
            <div style="font-size: 18px; color: #0f172a; margin-bottom: 15px; font-weight: bold;">Maksymalne granice parametrów pętli (wg PN-EN 1264)</div>
            <table style="width: 100%; border-collapse: collapse; font-size: 14px; text-align: left;">
                <thead>
                    <tr style="border-bottom: 2px solid #cbd5e1;">
                        <th style="padding: 10px 0; color: #475569;">Średnica rury PEX/PERT</th>
                        <th style="padding: 10px 0; color: #475569;">Maksymalna długość pętli</th>
                        <th style="padding: 10px 0; color: #475569;">Główne zadanie/limit</th>
                    </tr>
                </thead>
                <tbody>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px 0; font-weight: bold;">16 x 2.0 mm</td>
                        <td style="padding: 10px 0; color: #dc2626; font-weight: bold;">80 &#8211; 100 mb</td>
                        <td style="padding: 10px 0; color: #0284c7;">Zachowanie oporu poniżej 20 kPa</td>
                    </tr>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px 0; font-weight: bold;">17 x 2.0 mm</td>
                        <td style="padding: 10px 0; color: #dc2626; font-weight: bold;">90 &#8211; 110 mb</td>
                        <td style="padding: 10px 0; color: #0284c7;">Margines błędu dla większych pomieszczeń</td>
                    </tr>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px 0; font-weight: bold;">20 x 2.0 mm</td>
                        <td style="padding: 10px 0; color: #dc2626; font-weight: bold;">100 &#8211; 120 mb</td>
                        <td style="padding: 10px 0; color: #0284c7;">Zastosowanie w dużych salonach i halach</td>
                    </tr>
                    <tr>
                        <td style="padding: 10px 0; font-weight: bold;">Ważna zasada:</td>
                        <td colspan="2" style="padding: 10px 0; font-style: italic;">Różnica w długości między najkrótszą a najdłuższą pętlą na tym samym rozdzielaczu nie powinna przekraczać 15-20%.</td>
                    </tr>
                </tbody>
            </table>
        </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('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 moduł wprowadzający jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i został skopiowany nielegalnie.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="margin-top: 25px; padding: 14px 28px; background: #0284c7; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s;">ZOBACZ ORYGINALNY ARTYKUŁ</a>
                </div>
            `;
        }
    }
});
</script>



<style>
:root {
    --st-primary: #0f172a;
    --st-panel: #ffffff;
    --st-accent: #0284c7;
    --st-accent-light: #e0f2fe;
    --st-text: #334155;
    --st-muted: #94a3b8;
    --st-border: #e2e8f0;
    --st-highlight: #f8fafc;
}

.smart-table-module {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--st-panel);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--st-border);
    overflow: hidden;
}

.st-content-wrapper {
    padding: 40px 50px 20px 50px;
}

.st-text-section h2 {
    color: var(--st-primary);
    font-size: 24px;
    font-weight: 900;
    margin-top: 0;
    margin-bottom: 20px;
    line-height: 1.3;
}

.st-text-section p {
    font-size: 16px;
    line-height: 1.8;
    color: var(--st-text);
    margin-bottom: 20px;
}

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

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

.st-text-section a:hover {
    color: #1e3a8a;
}

/* ================= INTERAKTYWNE KONTROLKI ================= */
.st-interactive-header {
    background: var(--st-highlight);
    border: 1px solid var(--st-border);
    border-radius: 16px;
    padding: 25px;
    margin: 30px 50px 0 50px;
}

.st-instruction {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--st-muted);
    letter-spacing: 1px;
    margin-bottom: 15px;
    text-align: center;
}

.st-controls-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
}

.st-btn {
    background: #ffffff;
    border: 2px solid var(--st-border);
    border-radius: 12px;
    padding: 12px 10px;
    font-size: 14px;
    font-weight: 700;
    color: var(--st-text);
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 5px;
}

.st-btn span {
    font-size: 11px;
    color: var(--st-muted);
    font-weight: 600;
}

.st-btn:hover {
    border-color: #bae6fd;
    background: #f0f9ff;
    transform: translateY(-2px);
}

.st-btn.active {
    border-color: var(--st-accent);
    background: var(--st-accent-light);
    color: var(--st-accent);
    box-shadow: 0 4px 12px rgba(2, 132, 199, 0.15);
}

.st-btn.active span {
    color: var(--st-accent);
}

/* ================= TABELA DANYCH (DESKTOP) ================= */
.st-table-container {
    padding: 0 50px 40px 50px;
}

.st-table-responsive {
    width: 100%;
    border-radius: 12px;
    border: 1px solid var(--st-border);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.st-table {
    width: 100%;
    border-collapse: collapse;
    min-width: 600px;
    background: #ffffff;
}

.st-table th {
    background: #f1f5f9;
    color: var(--st-primary);
    font-weight: 800;
    font-size: 13px;
    text-transform: uppercase;
    padding: 18px 15px;
    text-align: left;
    border-bottom: 2px solid var(--st-border);
    white-space: nowrap;
}

.st-table td {
    padding: 16px 15px;
    font-size: 15px;
    color: var(--st-text);
    border-bottom: 1px solid var(--st-border);
    transition: all 0.3s ease;
}

.st-table tbody tr {
    transition: all 0.3s ease;
}

/* Stany interaktywne tabeli */
.st-table.filtering tbody tr {
    opacity: 0.3;
    background: #ffffff;
}

.st-table.filtering tbody tr.highlighted {
    opacity: 1;
    background: var(--st-accent-light);
    transform: scale(1.01);
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.st-table.filtering tbody tr.highlighted td {
    font-weight: 700;
    color: var(--st-primary);
    border-color: transparent;
}

.st-table.filtering tbody tr.highlighted td:first-child {
    border-left: 4px solid var(--st-accent);
}

/* ================= DYNAMICZNA WSKAZÓWKA ================= */
.st-tip-box {
    margin-top: 20px;
    padding: 15px 20px;
    border-radius: 12px;
    background: #fffbeb;
    border-left: 4px solid #f59e0b;
    font-size: 14px;
    color: #92400e;
    display: none;
    animation: stFadeIn 0.4s ease;
}

.st-tip-box.visible {
    display: block;
}

.st-tip-box strong {
    color: #b45309;
}

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

/* ================= WERSJA MOBILNA (UKŁAD KART) ================= */
@media (max-width: 768px) {
    .st-content-wrapper { padding: 30px 25px 15px 25px; }
    .st-interactive-header { margin: 20px 25px 0 25px; padding: 20px; }
    .st-controls-grid { grid-template-columns: 1fr 1fr; }
    .st-table-container { padding: 0 25px 30px 25px; margin-top: 15px; }
    
    /* Konwersja tabeli na karty */
    .st-table-responsive {
        border: none;
        box-shadow: none;
        background: transparent;
    }
    
    .st-table {
        min-width: 100%;
        display: block;
    }
    
    .st-table thead {
        display: none; /* Ukrywamy standardowe nagłówki */
    }
    
    .st-table tbody {
        display: block;
    }
    
    .st-table tbody tr {
        display: block;
        background: #ffffff;
        border: 1px solid var(--st-border);
        border-radius: 12px;
        margin-bottom: 15px;
        box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
        padding: 5px 0;
    }
    
    .st-table td {
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 12px 15px;
        border-bottom: 1px solid #f1f5f9;
        font-size: 14px;
        text-align: right;
    }
    
    .st-table td:last-child {
        border-bottom: none;
    }
    
    /* Wyświetlanie etykiet data-label po lewej stronie */
    .st-table td::before {
        content: attr(data-label);
        font-weight: 800;
        font-size: 12px;
        color: var(--st-muted);
        text-transform: uppercase;
        text-align: left;
        margin-right: 15px;
        flex-shrink: 0;
        max-width: 50%;
    }

    /* Poprawka dla podświetlanego wiersza na mobile */
    .st-table.filtering tbody tr.highlighted {
        border: 2px solid var(--st-accent);
        transform: scale(1.02);
    }
    .st-table.filtering tbody tr.highlighted td:first-child {
        border-left: none; 
    }
}
</style>

<div class="smart-table-module" id="app-smart-table">

    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org",
        "@type": "WebApplication",
        "name": "Interaktywna Tabela Parametrów Rur Ogrzewania Podłogowego",
        "description": "Moduł inżynierski pozwalający na dynamiczne filtrowanie i analizę parametrów krytycznych (długość, opór, moc) dla poszczególnych średnic rur PEX/PERT stosowanych w instalacjach płaszczyznowych.",
        "applicationCategory": "EngineeringApplication",
        "operatingSystem": "All",
        "url": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#tabela-parametrow",
        "license": "https://projekt-ogrzewania.pl/",
        "offers": {
          "@type": "Offer",
          "price": "0",
          "priceCurrency": "PLN"
        },
        "creator": {
          "@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/"
          ]
        },
        "featureList": [
          "Filtrowanie wyników normy PN-EN 1264 dla średnic 16mm, 17mm, 20mm i 10mm",
          "Dynamiczne podświetlanie krytycznych oporów hydraulicznych (kPa)",
          "Kontekstowe porady projektowe dla wybranej średnicy rury"
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "Dataset",
        "name": "Zestawienie parametrów granicznych pętli ogrzewania podłogowego wg średnic",
        "description": "Tabela inżynierska korelująca średnicę rury z jej maksymalną długością bieżącą, oporem w kilopaskalach oraz generowaną mocą cieplną przy stałym parametrze ΔT=5K.",
        "license": "https://projekt-ogrzewania.pl/",
        "variableMeasured": [
          {
            "@type": "PropertyValue",
            "name": "Parametry graniczne PEX 16x2.0",
            "value": "Max 100m | Opór 15-20 kPa | Moc 1200-1500 W"
          },
          {
            "@type": "PropertyValue",
            "name": "Parametry graniczne PEX 17x2.0",
            "value": "Max 110m | Opór 15-22 kPa | Moc 1400-1700 W"
          },
          {
            "@type": "PropertyValue",
            "name": "Parametry graniczne PEX 20x2.0",
            "value": "Max 130m | Opór 18-25 kPa | Moc 1800-2200 W"
          },
          {
            "@type": "PropertyValue",
            "name": "Parametry graniczne PEX 10x1.3 (Kapilary)",
            "value": "Max 40m | Opór 10-15 kPa | Moc 300-500 W"
          }
        ],
        "creator": {
          "@type": "Person",
          "name": "Robert Kucharski",
          "sameAs": [
            "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
            "https://www.linkedin.com/in/robert-kucharski-38069b48/"
          ]
        }
      }
    ]
    </script>

    <div class="st-content-wrapper">
        <div class="st-text-section">
            <h2>Jaka jest maksymalna długość pętli ogrzewania podłogowego dla różnych średnic rur?</h2>
            <p>Bezpośrednia odpowiedź zgodna z <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">normą PN-EN 1264</a> oraz wytycznymi producentów (np. Rehau, Uponor, Kan-Therm) wskazuje, że dla rur <strong>16 mm limit to 100 m</strong>, a dla rur <strong>20 mm limit to 120 m</strong>. Przekroczenie tych wartości powoduje opór hydrauliczny powyżej 20 kPa (0,2 bara) na jednej pętli, co uniemożliwia poprawne <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">zrównoważenie instalacji</a> przy standardowych pompach obiegowych.</p>
            <p>W interaktywnej tabeli poniżej przedstawiam zestawienie parametrów granicznych, które stosuję w moich autorskich projektach:</p>
        </div>
    </div>

    <div class="st-interactive-header">
        <div class="st-instruction">👉 Wybierz średnicę rury, aby przeanalizować parametry</div>
        <div class="st-controls-grid">
            <button class="st-btn" data-target="pipe-16">16&#215;2.0 <span>Standard</span></button>
            <button class="st-btn" data-target="pipe-17">17&#215;2.0 <span>Optymalna</span></button>
            <button class="st-btn" data-target="pipe-20">20&#215;2.0 <span>Duże obiekty</span></button>
            <button class="st-btn" data-target="pipe-10">10&#215;1.3 <span>Ścienne/Kapilary</span></button>
        </div>
    </div>

    <div class="st-table-container">
        <div class="st-table-responsive">
            <table class="st-table" id="interactive-pipe-table">
                <thead>
                    <tr>
                        <th>Średnica rury (mm)</th>
                        <th>Maks. zalecana długość (m)</th>
                        <th>Maks. opór hydrauliczny (kPa)</th>
                        <th>Moc pętli (W) przy ΔT=5K</th>
                    </tr>
                </thead>
                <tbody>
                    <tr data-row="pipe-16">
                        <td data-label="Średnica rury"><strong>PEX/PERT 16&#215;2,0</strong></td>
                        <td data-label="Maks. długość">80 – 100</td>
                        <td data-label="Maks. opór">15 – 20</td>
                        <td data-label="Moc pętli (ΔT=5K)">1200 – 1500</td>
                    </tr>
                    <tr data-row="pipe-17">
                        <td data-label="Średnica rury"><strong>PEX/PERT 17&#215;2,0</strong></td>
                        <td data-label="Maks. długość">90 – 110</td>
                        <td data-label="Maks. opór">15 – 22</td>
                        <td data-label="Moc pętli (ΔT=5K)">1400 – 1700</td>
                    </tr>
                    <tr data-row="pipe-20">
                        <td data-label="Średnica rury"><strong>PEX/PERT 20&#215;2,0</strong></td>
                        <td data-label="Maks. długość">110 – 130</td>
                        <td data-label="Maks. opór">18 – 25</td>
                        <td data-label="Moc pętli (ΔT=5K)">1800 – 2200</td>
                    </tr>
                    <tr data-row="pipe-10">
                        <td data-label="Średnica rury"><strong>PEX/PERT 10&#215;1,3 (kapilary)</strong></td>
                        <td data-label="Maks. długość">30 – 40</td>
                        <td data-label="Maks. opór">10 – 15</td>
                        <td data-label="Moc pętli (ΔT=5K)">300 – 500</td>
                    </tr>
                </tbody>
            </table>
        </div>

        <div class="st-tip-box" id="st-dynamic-tip">
            </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie domenowe (bez tagów nagłówkowych)
    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-smart-table');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px 25px; text-align: center; background: #0f172a; color: #f8fafc; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 10px;">🔒</div>
                    <div style="font-weight: 900; font-size: 20px; margin-bottom: 10px; color: #0284c7;">Ochrona Zawartości</div>
                    <div style="font-size: 14px; margin-bottom: 20px; color: #94a3b8;">Tabela interaktywna jest autorskim narzędziem serwisu Projekt-Ogrzewania.pl.</div>
                    <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 10px 20px; background: #0284c7; color: white; text-decoration: none; border-radius: 8px; font-weight: bold; font-size: 13px;">PRZEJDŹ DO ŹRÓDŁA</a>
                </div>
            `;
            return; 
        }
    }

    // Słownik porad dla poszczególnych rur
    const tips = {
        'pipe-16': '<strong>Wskazówka Projektowa:</strong> Najbardziej uniwersalna średnica w domach jednorodzinnych. Przy pętlach zbliżających się do 100m, bezwzględnie stosuj rotametry do precyzyjnego równoważenia.',
        'pipe-17': '<strong>Wskazówka Projektowa:</strong> Kompromis idealny dla pomp ciepła. Nieznacznie większa średnica wewnętrzna drastycznie obniża opory przy zachowaniu łatwości gięcia rury.',
        'pipe-20': '<strong>Wskazówka Projektowa:</strong> Rura trudna w układaniu przy gęstym rozstawie (np. 10 cm), ale niezastąpiona w ogromnych salonach i halach przemysłowych ze względu na potężny udźwig przepływu.',
        'pipe-10': '<strong>Wskazówka Projektowa:</strong> Bardzo cienka rura, generująca błyskawicznie ogromne opory. Stosowana wyłącznie w małych pętlach ściennych (tzw. kapilarach) i łazienkach pod lustra.'
    };

    // Logika interakcji
    const buttons = document.querySelectorAll('.st-btn');
    const table = document.getElementById('interactive-pipe-table');
    const rows = table.querySelectorAll('tbody tr');
    const tipBox = document.getElementById('st-dynamic-tip');

    buttons.forEach(button => {
        button.addEventListener('click', function() {
            const target = this.getAttribute('data-target');

            // Resetowanie aktywnego guzika
            buttons.forEach(btn => btn.classList.remove('active'));
            this.classList.add('active');

            // Aktywacja trybu filtrowania tabeli
            table.classList.add('filtering');

            // Podświetlanie odpowiedniego wiersza
            rows.forEach(row => {
                if (row.getAttribute('data-row') === target) {
                    row.classList.add('highlighted');
                } else {
                    row.classList.remove('highlighted');
                }
            });

            // Wyświetlenie porady
            if (tips[target]) {
                tipBox.innerHTML = tips[target];
                tipBox.classList.add('visible');
            }
        });
    });
});
</script>



<style>
:root {
    --math-primary: #0f172a;
    --math-accent: #0ea5e9; 
    --math-bg: #f8fafc;
    --math-border: #e2e8f0;
    --math-text: #334155;
    --math-highlight: #f0f9ff;
}

.math-module-box {
    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(--math-border);
    overflow: hidden;
    position: relative;
}

.math-header {
    background: linear-gradient(135deg, var(--math-primary), #1e293b);
    color: #ffffff;
    padding: 35px 50px;
    position: relative;
    overflow: hidden;
}

.math-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(14, 165, 233, 0.2);
    border: 1px solid rgba(14, 165, 233, 0.4);
    color: #bae6fd;
    padding: 6px 14px;
    border-radius: 50px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
}

.math-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0;
    line-height: 1.3;
    color: #ffffff;
    position: relative;
    z-index: 2;
}

.math-content {
    padding: 40px 50px;
    background: #ffffff;
}

.math-text {
    font-size: 16px;
    line-height: 1.8;
    color: var(--math-text);
    margin: 0 0 20px 0;
}

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

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

.math-text a:hover {
    color: #0284c7;
}

/* Sekcja Wzoru i Obliczeń */
.math-formula-container {
    background: var(--math-highlight);
    border: 1px solid #bae6fd;
    border-radius: 16px;
    padding: 30px;
    margin: 30px 0;
    position: relative;
}

.math-formula-title {
    font-size: 15px;
    font-weight: 800;
    color: var(--math-primary);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-top: 0;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.math-formula-title::before {
    content: '📊';
    font-size: 20px;
}

.math-equation-box {
    background: #ffffff;
    border: 1px solid var(--math-border);
    border-radius: 12px;
    padding: 25px;
    text-align: center;
    margin-bottom: 25px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.math-equation {
    font-size: 24px;
    font-family: 'Cambria Math', 'Times New Roman', serif;
    color: var(--math-primary);
    letter-spacing: 1px;
}

.math-variables {
    list-style: none;
    padding: 0;
    margin: 0;
}

.math-variables li {
    font-size: 15px;
    color: var(--math-text);
    margin-bottom: 12px;
    padding-left: 25px;
    position: relative;
}

.math-variables li::before {
    content: '•';
    position: absolute;
    left: 8px;
    color: var(--math-accent);
    font-weight: bold;
}

.math-variables li code {
    font-family: 'Cambria Math', 'Times New Roman', serif;
    font-size: 17px;
    color: var(--math-primary);
    font-weight: bold;
    background: transparent;
    padding: 0;
}

.math-result {
    margin-top: 20px;
    padding-top: 20px;
    border-top: 1px dashed #bae6fd;
    font-size: 16px;
    font-weight: 700;
    color: #0369a1;
}

@media (max-width: 768px) {
    .math-header { padding: 35px 25px; }
    .math-content { padding: 30px 25px; }
    .math-formula-container { padding: 20px; }
}
</style>

<div class="math-module-box" id="app-math-module">

    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org",
        "@type": "WebApplication",
        "name": "Kalkulator Straty Ciśnienia i Oporów Hydraulicznych Pętli",
        "description": "Narzędzie i algorytm analityczny obliczający opór hydrauliczny (spadek ciśnienia w kPa) w rurach PEX 16mm w zależności od długości obiegu i prędkości przepływu wody grzewczej.",
        "applicationCategory": "EngineeringApplication",
        "operatingSystem": "All",
        "url": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#obliczenia-oporow",
        "license": "https://projekt-ogrzewania.pl/",
        "offers": {
          "@type": "Offer",
          "price": "0",
          "priceCurrency": "PLN"
        },
        "creator": {
          "@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/"
          ]
        },
        "featureList": [
          "Wzór na spadek ciśnienia z uwzględnieniem prawa Hagena-Poiseuille’a",
          "Kalkulacja strat miejscowych i liniowych dla rury 16x2.0 mm",
          "Weryfikacja maksymalnej granicy obciążenia dla pomp obiegowych (np. 60 kPa)"
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "Dataset",
        "name": "Współczynniki Oporów Liniowych dla Ogrzewania Podłogowego (Rura PEX)",
        "description": "Zestawienie zmiennych i stałych fizycznych wykorzystywanych do obliczania całkowitych oporów hydraulicznych w obiegach płaszczyznowych.",
        "license": "https://projekt-ogrzewania.pl/",
        "variableMeasured": [
          {
            "@type": "PropertyValue",
            "name": "Współczynnik oporu liniowego (R) dla PEX 16mm przy 2 l/min",
            "value": "150 Pa/m",
            "description": "Uśredniony opór stawiany przez 1 metr bieżący przewodu."
          },
          {
            "@type": "PropertyValue",
            "name": "Całkowita strata ciśnienia (Δp) dla pętli 100m",
            "value": "15 kPa",
            "description": "Bezpieczna granica obciążenia obwodu."
          },
          {
            "@type": "PropertyValue",
            "name": "Przepływ masowy",
            "value": "120 kg/h (ok. 2 l/min)",
            "description": "Wymagany strumień czynnika do pokrycia strat cieplnych."
          }
        ],
        "creator": {
          "@type": "Person",
          "name": "Robert Kucharski",
          "sameAs": [
            "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
            "https://www.linkedin.com/in/robert-kucharski-38069b48/"
          ]
        }
      }
    ]
    </script>

    <div class="math-header">
        <div class="math-badge">Fizyka Budowli</div>
        <h2>Dlaczego opór hydrauliczny jest ważniejszy niż sama długość rury?</h2>
    </div>

    <div class="math-content">
        <p class="math-text">Dla inżyniera HVAC sama fizyczna długość rury jest tylko wartością pochodną, z której wynika najważniejszy parametr – dopuszczalna strata ciśnienia. Zgodnie z prawami termodynamiki i aerodynamiki płynów (w tym prawem Hagena-Poiseuille’a), opór przepływu rośnie liniowo wraz z długością przewodu, ale w kwadracie wraz ze wzrostem prędkości tłoczonego medium. To właśnie dlatego tak krytyczny jest precyzyjny dobór <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">pompy obiegowej w instalacji ogrzewania podłogowego</a>, która musi pokonać te siły tarcia.</p>

        <p class="math-text">Zobrazujmy to na przykładzie. W typowym projekcie, przy zapotrzebowaniu na ciepło wynoszącym 50 W/m² i rozstawie rur co 10 cm, na 1 m² przypada 10 mb rury. Jeśli nasza pętla osiągnie 120 m dla średnicy 16 mm, to przy przepływie niezbędnym do pokrycia strat ciepła, całkowity opór może skoczyć nawet do 35 kPa. Standardowa pompa w kotle gazowym lub pompie ciepła (np. o wysokości podnoszenia 6 m, co odpowiada ciśnieniu 60 kPa) musi obsłużyć nie tylko ten jeden obwód, ale także opory armatury, zaworów mieszających i głównej belki zasilającej, jaką stanowi <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacz do podłogówki</a>. Jeśli jedna zbyt długa pętla „zabierze” 35 kPa z dostępnych 60 kPa, na resztę systemu zostaje drastycznie mało mocy, co wprost prowadzi do niedogrzania najdalszych pomieszczeń i powstawania zimnych stref.</p>

        <div class="math-formula-container">
            <h3 class="math-formula-title">Obliczenie 1: Spadek ciśnienia w pętli</h3>
            
            <p class="math-text" style="font-size: 15px; margin-bottom: 15px;">Przyjmijmy do obliczeń najpopularniejszą rurę 16 mm, graniczną długość <strong>100 m</strong> i przepływ masowy rzędu <strong>120 kg/h</strong> (co odpowiada wskazaniu ok. 2 l/min na rotametrze). Wykorzystując współczynnik oporów liniowych dla przewodów z polietylenu sieciowanego (PEX), stosujemy poniższy algorytm:</p>

            <div class="math-equation-box">
                <span class="math-equation">&Delta;p = L &times; R + &Sigma;Z</span>
            </div>

            <ul class="math-variables">
                <li>Gdzie:</li>
                <li><code>L = 100 m</code> (długość rozwinięcia rury)</li>
                <li><code>R &approx; 150 Pa/m</code> (opór liniowy dla zadanej prędkości przepływu)</li>
                <li><code>&Sigma;Z</code> (suma oporów miejscowych – tu pominięta dla uproszczenia liniowego)</li>
            </ul>

            <div class="math-result">
                &Delta;p = 100 m &times; 150 Pa/m = 15 000 Pa = <strong>15 kPa</strong>
            </div>
        </div>

        <p class="math-text">Otrzymany wynik <strong>15 kPa</strong> to wartość wysoce bezpieczna dla prawidłowego zrównoważenia układu. Jednak wystarczy niepozorne zwiększenie długości do <strong>130 m</strong> przy utrzymaniu tego samego zapotrzebowania na przepływ, a opór liniowy podniesie się do ponad <strong>19,5 kPa</strong>. Jeśli dodamy do tego opory miejscowe na złączkach i belce rozdzielacza (kolejne 5–7 kPa), system niebezpiecznie zbliża się do granicy wydajności elektroniki pompowej pracującej na najniższych, energooszczędnych nastawach. Efekt? Znacząco wyższe zużycie prądu przez kotłownię.</p>
    </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)) {
        const container = document.getElementById('app-math-module');
        if (container) {
            container.innerHTML = `
                <div style="padding: 50px 25px; text-align: center; background: #fef2f2; color: #dc2626; border-radius: 24px; font-family: sans-serif;">
                    <span style="font-size: 45px; display: block; margin-bottom: 15px;">🛑</span>
                    <div style="font-weight: 900; font-size: 22px; margin-bottom: 12px;">Naruszenie praw autorskich</div>
                    <p style="font-size: 15px; margin-bottom: 20px; color: #991b1b;">Ten moduł obliczeniowy jest własnością intelektualną Projekt-Ogrzewania.pl. Kopiowanie skryptów bez zgody jest zabronione.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 12px 24px; background: #dc2626; color: white; text-decoration: none; border-radius: 8px; font-weight: bold; font-size: 14px;">ZOBACZ ORYGINALNE OBLICZENIA</a>
                </div>
            `;
        }
    }
});
</script>



<style>
:root {
    --sim-bg: #0f172a;
    --sim-panel: #1e293b;
    --sim-accent: #0ea5e9;
    --sim-accent-glow: rgba(14, 165, 233, 0.4);
    --sim-text: #f8fafc;
    --sim-muted: #94a3b8;
    --sim-danger: #ef4444;
    --sim-success: #10b981;
    --sim-border: #334155;
}

.sim-module-wrapper {
    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 #e2e8f0;
    overflow: hidden;
}

.sim-text-section {
    padding: 40px 50px 10px 50px;
    color: #334155;
    font-size: 16px;
    line-height: 1.8;
}

.sim-text-section h2 {
    color: #0f172a;
    font-size: 24px;
    font-weight: 900;
    margin-top: 0;
    margin-bottom: 20px;
}

.sim-text-section p {
    margin-bottom: 20px;
}

.sim-text-section a {
    color: #0284c7;
    font-weight: 700;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
}

/* Nowe formatowanie bloków tekstu */
.sim-alert-box {
    padding: 15px 20px;
    border-radius: 12px;
    background: #fffbeb;
    border-left: 4px solid #f59e0b;
    color: #92400e;
    font-size: 15px;
    margin-bottom: 30px;
}

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

.sim-comp-card {
    padding: 25px;
    border-radius: 16px;
    border: 1px solid #e2e8f0;
}

.sim-comp-card.ok {
    background: #f0fdf4;
    border-top: 4px solid #16a34a;
}

.sim-comp-card.bad {
    background: #fef2f2;
    border-top: 4px solid #dc2626;
}

.sim-comp-card h3 {
    margin: 0 0 10px 0;
    font-size: 17px;
    font-weight: 800;
    color: #0f172a;
}

.sim-comp-card p {
    margin: 0;
    font-size: 14.5px;
    line-height: 1.6;
}

.sim-math-context {
    background: #f8fafc;
    padding: 30px;
    border-radius: 16px;
    border: 1px dashed #cbd5e1;
    margin-bottom: 30px;
}

.sim-equation-block {
    text-align: center;
    font-size: 20px;
    color: var(--sim-bg);
    margin: 20px 0;
    padding: 15px;
    background: #ffffff;
    border-radius: 12px;
    border: 1px solid #e2e8f0;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.sim-call-to-action {
    text-align: center;
    font-weight: 800;
    color: var(--sim-accent);
    font-size: 18px;
    margin-top: 10px;
}

/* ================= INTERAKTYWNY DASHBOARD ================= */
.sim-dashboard {
    background: var(--sim-bg);
    margin: 10px 50px 50px 50px;
    border-radius: 20px;
    padding: 35px;
    color: var(--sim-text);
    position: relative;
    border: 1px solid var(--sim-border);
    box-shadow: inset 0 0 40px rgba(0,0,0,0.5);
}

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

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

.sim-controls {
    background: var(--sim-panel);
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--sim-border);
}

.sim-control-group {
    margin-bottom: 25px;
}

.sim-control-group:last-child {
    margin-bottom: 0;
}

.sim-label-row {
    display: flex;
    justify-content: space-between;
    margin-bottom: 12px;
}

.sim-label {
    font-size: 13px;
    font-weight: 700;
    color: var(--sim-muted);
    text-transform: uppercase;
}

.sim-value-display {
    font-size: 16px;
    font-weight: 900;
    color: var(--sim-text);
    background: rgba(0,0,0,0.3);
    padding: 4px 10px;
    border-radius: 6px;
    border: 1px solid var(--sim-border);
}

input[type=range].sim-slider {
    -webkit-appearance: none;
    width: 100%;
    background: transparent;
}
input[type=range].sim-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    height: 20px;
    width: 20px;
    border-radius: 50%;
    background: var(--sim-accent);
    cursor: pointer;
    margin-top: -8px;
    box-shadow: 0 0 10px var(--sim-accent-glow);
    transition: 0.2s;
}
input[type=range].sim-slider::-webkit-slider-thumb:hover {
    transform: scale(1.2);
}
input[type=range].sim-slider::-webkit-slider-runnable-track {
    width: 100%;
    height: 6px;
    cursor: pointer;
    background: var(--sim-bg);
    border-radius: 4px;
    border: 1px solid var(--sim-border);
}

.sim-results {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    background: var(--sim-panel);
    border-radius: 16px;
    border: 1px solid var(--sim-border);
    padding: 25px;
    text-align: center;
    position: relative;
    overflow: hidden;
}

.sim-result-label {
    font-size: 12px;
    color: var(--sim-muted);
    text-transform: uppercase;
    font-weight: 700;
    letter-spacing: 1px;
    margin-bottom: 10px;
}

.sim-result-main {
    font-size: 48px;
    font-weight: 900;
    color: var(--sim-accent);
    line-height: 1;
    margin-bottom: 5px;
    font-family: 'Cambria Math', monospace;
    text-shadow: 0 0 20px var(--sim-accent-glow);
}

.sim-result-sub {
    font-size: 16px;
    color: var(--sim-muted);
    margin-bottom: 20px;
}

.sim-alert {
    padding: 12px 15px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 700;
    width: 100%;
    box-sizing: border-box;
    transition: all 0.3s ease;
}

.sim-alert.ok {
    background: rgba(16, 185, 129, 0.1);
    color: var(--sim-success);
    border: 1px solid rgba(16, 185, 129, 0.3);
}

.sim-alert.warn {
    background: rgba(239, 68, 68, 0.1);
    color: var(--sim-danger);
    border: 1px solid rgba(239, 68, 68, 0.3);
}

@media (max-width: 768px) {
    .sim-text-section { padding: 30px 25px 10px 25px; }
    .sim-comparison-grid { grid-template-columns: 1fr; }
    .sim-dashboard { margin: 20px 25px 30px 25px; padding: 25px; }
    .sim-grid { grid-template-columns: 1fr; gap: 20px; }
}
</style>

<div class="sim-module-wrapper" id="app-sim-interactive">

    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org",
        "@type": "WebApplication",
        "name": "Interaktywny Symulator Przepływu Masowego i ΔT",
        "description": "Dynamiczny kalkulator inżynierski pozwalający na symulację wpływu zapotrzebowania na moc (W) oraz różnicy temperatur ΔT (K) na wymagany przepływ czynnika grzewczego (l/min). System ostrzega przed przekroczeniem limitów hydraulicznych dla rury 16mm.",
        "applicationCategory": "EngineeringApplication",
        "operatingSystem": "All",
        "url": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#symulator-przeplywu",
        "license": "https://projekt-ogrzewania.pl/",
        "offers": {
          "@type": "Offer",
          "price": "0",
          "priceCurrency": "PLN"
        },
        "creator": {
          "@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/"
          ]
        },
        "featureList": [
          "Suwak zapotrzebowania na moc (Q) w zakresie 500W - 3000W",
          "Suwak różnicy temperatur (ΔT) w zakresie 4K - 12K",
          "Algorytm ostrzegający przed przepływem > 2.5 l/min wymuszającym podział na krótsze pętle"
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "Dataset",
        "name": "Zależność Długości Pętli, Przepływu i Różnicy Temperatur w Ogrzewaniu Płaszczyznowym",
        "description": "Zbiór danych wyjściowych dla optymalizacji ΔT przy zachowaniu reżimu oporów hydraulicznych w obwodach grzewczych.",
        "license": "https://projekt-ogrzewania.pl/",
        "variableMeasured": [
          {
            "@type": "PropertyValue",
            "name": "Optymalna różnica temperatur (ΔT)",
            "value": "5K - 10K",
            "description": "Zalecany zakres projektowy dla współpracy z pompami ciepła."
          },
          {
            "@type": "PropertyValue",
            "name": "Pojemność cieplna wody (c)",
            "value": "1.163 Wh/(kg·K)",
            "description": "Właściwa pojemność cieplna wykorzystywana we wzorze na przepływ."
          },
          {
            "@type": "PropertyValue",
            "name": "Krytyczny przepływ masowy (G)",
            "value": "> 2.5 l/min",
            "description": "Punkt, w którym dla rury 16mm generowane opory wymuszają podział dużej pętli na dwie mniejsze."
          }
        ],
        "creator": {
          "@type": "Person",
          "name": "Robert Kucharski",
          "sameAs": [
            "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
            "https://www.linkedin.com/in/robert-kucharski-38069b48/"
          ]
        }
      }
    ]
    </script>

    <div class="sim-text-section">
        <h2>Jak długość pętli wpływa na różnicę temperatur (&Delta;T)?</h2>
        
        <p>Właściwa różnica temperatur między zasilaniem a powrotem w ogrzewaniu podłogowym powinna mieścić się w wąskim, precyzyjnie dobranym zakresie <strong>5K – 10K</strong>. Jeśli <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalna długość pętli ogrzewania podłogowego</a> zostanie drastycznie przekroczona, woda w końcowej części obiegu będzie już mocno wychłodzona.</p>
        
        <p>Stworzy to wysoce niepożądany efekt <strong>&#8222;zimnej podłogi&#8221;</strong> w dalszej części pomieszczenia. Zjawisko to dokładnie opisuje <a href="https://projekt-ogrzewania.pl/spadek-temperatury-dt-roznica-miedzy-temperatura-zasilania-a-powrotu/">spadek temperatury ΔT</a> w układach zamkniętych.</p>

        <div class="sim-alert-box">
            <strong>Ważne:</strong> Problem jest szczególnie niebezpieczny przy współpracy z nowoczesnymi źródłami, takimi jak <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompa ciepła</a>, które pracują najefektywniej przy bardzo niskim ΔT (np. 5K).
        </div>

        <div class="sim-comparison-grid">
            <div class="sim-comp-card ok">
                <h3>Krótka pętla (np. 60 m)</h3>
                <p>Umożliwia wysoki przepływ przy niewielkich oporach. Skutkuje to małym ΔT i bardzo równomiernym rozkładem temperatury powierzchniowej podłogi (t_surface ≈ 26–27°C).</p>
            </div>
            
            <div class="sim-comp-card bad">
                <h3>Długa pętla (np. 120 m)</h3>
                <p>Wymusza dławienie przepływu z powodu potężnych oporów lub pracę przy ekstremalnie wysokim ΔT. Początek pętli parzy osiągając 29°C, a koniec ma zaledwie 22°C. Inwestor odczuje to jako <strong>bardzo nieprzyjemny dyskomfort termiczny</strong>.</p>
            </div>
        </div>

        <div class="sim-math-context">
            <p>Dla pętli o potężnej mocy <strong>1800 W</strong> (np. duży, przeszklony salon) i założonym <strong>ΔT = 7K</strong>, wzór na masowy przepływ czynnika wygląda następująco:</p>
            
            <div class="sim-equation-block">
                G = Q / (c &times; &Delta;T)<br>
                G = 1800 / (1,163 &times; 7) &approx; 221 l/h (3,68 l/min)
            </div>
            
            <p style="margin-bottom: 0;">Przy tak potężnym przepływie, rura 16 mm o długości zaledwie 100 m wygeneruje opory rzędu <strong>28 kPa</strong>, co jest wartością absolutnie niedopuszczalną i zablokuje obieg. W takim przypadku inżynier musi podjąć decyzję o podział salonu na <strong>dwie pętle po 50 m</strong>.</p>
        </div>

        <div class="sim-call-to-action">
            👇 Sprawdź na interaktywnym symulatorze poniżej, jak zmiana mocy i ΔT wpływa na krytyczny przepływ wody na rotametrze.
        </div>
    </div>

    <div class="sim-dashboard">
        <div class="sim-dashboard-title">
            <span style="font-size: 18px;">🎛️</span> Symulator Hydrauliczny: Przepływ a ΔT
        </div>
        
        <div class="sim-grid">
            
            <div class="sim-controls">
                <div class="sim-control-group">
                    <div class="sim-label-row">
                        <span class="sim-label">Zapotrzebowanie na moc (Q)</span>
                        <span class="sim-value-display" id="val-q">1800 W</span>
                    </div>
                    <input type="range" min="500" max="3000" step="50" value="1800" class="sim-slider" id="slider-q">
                </div>
                
                <div class="sim-control-group">
                    <div class="sim-label-row">
                        <span class="sim-label">Różnica temperatur (ΔT)</span>
                        <span class="sim-value-display" id="val-dt">7 K</span>
                    </div>
                    <input type="range" min="4" max="12" step="0.5" value="7" class="sim-slider" id="slider-dt">
                </div>
            </div>

            <div class="sim-results">
                <div class="sim-result-label">Wymagany przepływ na pętli</div>
                <div class="sim-result-main" id="result-lmin">3.68</div>
                <div class="sim-result-sub" id="result-lh">221 l/h</div>
                
                <div class="sim-alert warn" id="sim-warning">
                    ⚠️ Krytyczny przepływ! Opory > 20 kPa. Konieczny podział na 2 pętle.
                </div>
            </div>

        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie domenowe (bez nagłówków H)
    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-sim-interactive');
        if (container) {
            container.innerHTML = `
                <div style="padding: 50px 25px; text-align: center; background: #0f172a; color: #f8fafc; font-family: sans-serif;">
                    <span style="font-size: 40px; display: block; margin-bottom: 15px;">🛡️</span>
                    <div style="font-weight: 900; font-size: 20px; margin-bottom: 10px; color: #0ea5e9;">Skrypt Zabezpieczony</div>
                    <p style="font-size: 14px; margin-bottom: 20px; color: #94a3b8;">Ten interaktywny symulator jest chroniony prawem autorskim i przypisany do domeny Projekt-Ogrzewania.pl.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 10px 25px; background: #0ea5e9; color: white; text-decoration: none; border-radius: 8px; font-weight: bold; font-size: 13px;">WRÓĆ DO ORYGINAŁU</a>
                </div>
            `;
            return; // Przerywa działanie skryptu symulatora
        }
    }

    // Logika Kalkulatora
    const sliderQ = document.getElementById('slider-q');
    const sliderDt = document.getElementById('slider-dt');
    const valQ = document.getElementById('val-q');
    const valDt = document.getElementById('val-dt');
    const resLmin = document.getElementById('result-lmin');
    const resLh = document.getElementById('result-lh');
    const warningBox = document.getElementById('sim-warning');

    const C_WATER = 1.163;

    function calculateFlow() {
        const q = parseFloat(sliderQ.value);
        const dt = parseFloat(sliderDt.value);

        // Aktualizacja UI etykiet
        valQ.textContent = q + ' W';
        valDt.textContent = dt + ' K';

        // Obliczenia
        const flowLh = q / (C_WATER * dt);
        const flowLmin = flowLh / 60;

        // Aktualizacja Wyników
        resLh.textContent = Math.round(flowLh) + ' l/h';
        resLmin.textContent = flowLmin.toFixed(2);

        // Logika Ostrzeżeń
        if (flowLmin > 2.5) {
            warningBox.className = 'sim-alert warn';
            warningBox.innerHTML = '⚠️ Krytyczny przepływ! Opory > 20 kPa. Konieczny podział obwodu na 2 pętle dla rury 16mm.';
        } else if (flowLmin < 0.5) {
            warningBox.className = 'sim-alert warn';
            warningBox.innerHTML = '⚠️ Przepływ zbyt niski! Ryzyko zapowietrzania się pętli i braku oddawania ciepła.';
        } else {
            warningBox.className = 'sim-alert ok';
            warningBox.innerHTML = '✅ Przepływ optymalny. Instalacja bezpieczna dla rury o długości do 100 mb.';
        }
    }

    // Nasłuchiwacze zdarzeń
    if (sliderQ &#038;&#038; sliderDt) {
        sliderQ.addEventListener('input', calculateFlow);
        sliderDt.addEventListener('input', calculateFlow);
        // Inicjalizacja
        calculateFlow();
    }
});
</script>



<style>
:root {
    --algo-primary: #0f172a;
    --algo-panel: #ffffff;
    --algo-accent: #0284c7;
    --algo-accent-light: #e0f2fe;
    --algo-text: #334155;
    --algo-muted: #94a3b8;
    --algo-border: #e2e8f0;
    --algo-bg: #f8fafc;
    --algo-success: #16a34a;
}

.algo-module-wrapper {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--algo-panel);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--algo-border);
    overflow: hidden;
}

.algo-intro-section {
    padding: 40px 50px 20px 50px;
}

/* Zmiana na H2 */
.algo-intro-section h2 {
    color: var(--algo-primary);
    font-size: 24px;
    font-weight: 900;
    margin-top: 0;
    margin-bottom: 20px;
    line-height: 1.3;
}

.algo-intro-section p {
    font-size: 16px;
    line-height: 1.8;
    color: var(--algo-text);
    margin-bottom: 0;
}

.algo-intro-section a {
    color: var(--algo-accent);
    font-weight: 700;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    transition: 0.2s;
}

.algo-intro-section a:hover {
    color: #1e3a8a;
}

/* ================= INTERAKTYWNY STEPPER ================= */
.algo-stepper-container {
    display: flex;
    margin: 30px 50px 50px 50px;
    background: var(--algo-bg);
    border: 1px solid var(--algo-border);
    border-radius: 16px;
    overflow: hidden;
}

/* Lista Kroków (Lewa strona) */
.algo-steps-nav {
    width: 35%;
    background: #ffffff;
    border-right: 1px solid var(--algo-border);
    display: flex;
    flex-direction: column;
}

.algo-step-btn {
    padding: 20px 25px;
    text-align: left;
    background: transparent;
    border: none;
    border-bottom: 1px solid var(--algo-border);
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 15px;
    color: var(--algo-muted);
}

.algo-step-btn:last-child {
    border-bottom: none;
}

.algo-step-number {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--algo-border);
    color: #ffffff;
    font-size: 13px;
    font-weight: 800;
    flex-shrink: 0;
    transition: 0.3s;
}

.algo-step-title {
    font-size: 14px;
    font-weight: 700;
    line-height: 1.4;
    transition: 0.3s;
}

.algo-step-btn:hover {
    background: var(--algo-bg);
}

.algo-step-btn.active {
    background: var(--algo-accent-light);
    border-left: 4px solid var(--algo-accent);
    padding-left: 21px; /* kompensacja bordera */
    color: var(--algo-primary);
}

.algo-step-btn.active .algo-step-number {
    background: var(--algo-accent);
    box-shadow: 0 0 10px rgba(2, 132, 199, 0.3);
}

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

/* Treść Kroku (Prawa strona) */
.algo-steps-content {
    width: 65%;
    padding: 40px;
    position: relative;
}

.algo-panel {
    display: none;
    animation: algoFadeIn 0.4s ease;
}

.algo-panel.active {
    display: block;
}

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

.algo-panel-tag {
    display: inline-block;
    padding: 4px 12px;
    background: #e2e8f0;
    color: #475569;
    border-radius: 50px;
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
}

/* Zmiana na H3 */
.algo-panel h3 {
    font-size: 20px;
    font-weight: 900;
    color: var(--algo-primary);
    margin: 0 0 15px 0;
}

/* Zmiana na H4 */
.algo-panel h4 {
    font-size: 15px;
    font-weight: 800;
    color: var(--algo-primary);
    margin: 20px 0 10px 0;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.algo-panel p {
    font-size: 15px;
    line-height: 1.7;
    color: var(--algo-text);
    margin-bottom: 20px;
}

.algo-formula-box {
    background: #ffffff;
    border: 1px dashed var(--algo-accent);
    padding: 15px 20px;
    border-radius: 12px;
    font-family: 'Cambria Math', monospace;
    font-size: 16px;
    color: var(--algo-primary);
    font-weight: bold;
    text-align: center;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.algo-panel-alert {
    display: flex;
    gap: 12px;
    background: #f0fdf4;
    border: 1px solid #bbf7d0;
    padding: 15px;
    border-radius: 12px;
    color: #166534;
    font-size: 14px;
    line-height: 1.5;
}

@media (max-width: 768px) {
    .algo-intro-section { padding: 30px 25px 10px 25px; }
    .algo-stepper-container { margin: 20px 25px 40px 25px; flex-direction: column; }
    .algo-steps-nav { width: 100%; border-right: none; border-bottom: 1px solid var(--algo-border); flex-direction: row; overflow-x: auto; white-space: nowrap; -webkit-overflow-scrolling: touch; }
    .algo-step-btn { padding: 15px; border-bottom: none; border-right: 1px solid var(--algo-border); flex-shrink: 0; min-width: 200px; }
    .algo-step-btn.active { border-left: none; border-bottom: 4px solid var(--algo-accent); padding-left: 15px; padding-bottom: 11px; }
    .algo-steps-content { width: 100%; padding: 25px; }
}
</style>

<div class="algo-module-wrapper" id="app-algo-stepper">

    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org",
        "@type": "WebApplication",
        "name": "Interaktywny Algorytm Projektowy: Długość Pętli",
        "description": "Narzędzie typu krok-po-kroku ilustrujące procedurę inżynierską obliczania i weryfikacji hydraulicznej obiegów ogrzewania płaszczyznowego z uwzględnieniem normy PN-EN 12831.",
        "applicationCategory": "EducationalApplication",
        "operatingSystem": "All",
        "url": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#algorytm-krok-po-kroku",
        "license": "https://projekt-ogrzewania.pl/",
        "offers": {
          "@type": "Offer",
          "price": "0",
          "priceCurrency": "PLN"
        },
        "creator": {
          "@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/"
          ]
        },
        "featureList": [
          "Definiowanie zapotrzebowania cieplnego Q_pom (OZC)",
          "Ustalanie rozstawu rur w zależności od strefy (brzegowa/dzienna)",
          "Obliczanie wstępnej długości L_wst z wykorzystaniem wzorów",
          "Weryfikacja hydrauliczna podziału obiegów"
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "Dataset",
        "name": "Procedura obliczeniowa parametrów podłogówki",
        "description": "Zestawienie zmiennych i stałych wykorzystywanych w procesie wymiarowania instalacji ogrzewania podłogowego.",
        "license": "https://projekt-ogrzewania.pl/",
        "variableMeasured": [
          {
            "@type": "PropertyValue",
            "name": "Zapotrzebowanie na ciepło (Q_pom)",
            "value": "Wartość zmienna (np. 1500 W)",
            "description": "Wyznaczane na podstawie normy PN-EN 12831."
          },
          {
            "@type": "PropertyValue",
            "name": "Rozstaw rur (b)",
            "value": "10 cm lub 15 cm",
            "description": "Zapotrzebowanie rury dla rozstawu 15 cm wynosi ok. 6.7 mb/m2."
          },
          {
            "@type": "PropertyValue",
            "name": "Wyznaczenie wstępnej długości (L_wst)",
            "value": "(Powierzchnia × zapotrzebowanie mb) + przyłącza",
            "description": "Wzór obliczający teoretyczne zużycie rury na dany obieg."
          }
        ],
        "creator": {
          "@type": "Person",
          "name": "Robert Kucharski",
          "sameAs": [
            "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
            "https://www.linkedin.com/in/robert-kucharski-38069b48/"
          ]
        }
      }
    ]
    </script>

    <div class="algo-intro-section">
        <h2>Algorytm wyznaczania długości pętli – krok po kroku</h2>
        <p>Jako projektant z wieloletnim doświadczeniem w branży HVAC, stosuję sztywną, sprawdzoną procedurę obliczeniową. Pozwala mi to bezbłędnie określić, jaka będzie <strong>maksymalna długość pętli ogrzewania podłogowego</strong> w konkretnym pomieszczeniu i kiedy należy dany układ podzielić, aby uniknąć krytycznych błędów wykonawczych i przeciążenia pompy.</p>
    </div>

    <div class="algo-stepper-container">
        
        <div class="algo-steps-nav">
            <button class="algo-step-btn active" data-step="step-1">
                <span class="algo-step-number">1</span>
                <span class="algo-step-title">Obliczenie Q<sub>pom</sub> (OZC)</span>
            </button>
            <button class="algo-step-btn" data-step="step-2">
                <span class="algo-step-number">2</span>
                <span class="algo-step-title">Określenie rozstawu (b)</span>
            </button>
            <button class="algo-step-btn" data-step="step-3">
                <span class="algo-step-number">3</span>
                <span class="algo-step-title">Długość wstępna L<sub>wst</sub></span>
            </button>
            <button class="algo-step-btn" data-step="step-4">
                <span class="algo-step-number">4</span>
                <span class="algo-step-title">Weryfikacja układu</span>
            </button>
            <button class="algo-step-btn" data-step="step-5">
                <span class="algo-step-number">5</span>
                <span class="algo-step-title">Nastawy na rotametrach</span>
            </button>
        </div>

        <div class="algo-steps-content">
            
            <div class="algo-panel active" id="step-1">
                <span class="algo-panel-tag">Fundament Projektu</span>
                <h3>Zapotrzebowanie na ciepło</h3>
                <p>Proces zawsze rozpoczynamy od rzetelnego <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektu OZC</a> (Obliczanie Zapotrzebowania na Ciepło), sporządzonego rygorystycznie zgodnie z normą <strong>PN-EN 12831</strong>.</p>
                <p>Na podstawie przenikalności cieplnej przegród, wielkości okien i strat na wentylacji określamy wartość <strong>Q<sub>pom</sub></strong>. Dla celów naszego algorytmu przyjmijmy modelową sypialnię, w której Q<sub>pom</sub> = 1500 W.</p>
            </div>

            <div class="algo-panel" id="step-2">
                <span class="algo-panel-tag">Parametry Fizyczne</span>
                <h3>Rozstaw rur (b)</h3>
                <p>Mając zdefiniowane zapotrzebowanie, dobieramy gęstość układania rury grzejnej, czyli jej rozstaw. Wybór uzależniony jest od charakterystyki strefy w budynku:</p>
                <ul style="color: var(--algo-text); line-height: 1.6; margin-bottom: 20px;">
                    <li><strong>10 cm:</strong> Strefy brzegowe (przy oknach), łazienki oraz miejsca o dużych stratach.</li>
                    <li><strong>15 cm:</strong> Standard dla pomieszczeń dziennych (salon, pokoje), zapewniający optymalny rozkład temperatury.</li>
                </ul>
                <p>Przyjęcie popularnego rozstawu b = 15 cm oznacza, że fizyczne zapotrzebowanie na rurę wynosi średnio <strong>6,7 metra bieżącego na każdy 1 m² powierzchni</strong>.</p>
            </div>

            <div class="algo-panel" id="step-3">
                <span class="algo-panel-tag">Kalkulacje Inżynierskie</span>
                <h3>Wyznaczenie wstępnej długości</h3>
                <p>Przechodzimy do matematycznego wyznaczenia wartości <strong>L<sub>wst</sub></strong>. Wzór uwzględnia obliczone w poprzednim kroku zagęszczenie oraz dystans dzielący pomieszczenie od rozdzielacza (tzw. przyłącza lub tranzyty).</p>
                
                <div class="algo-formula-box">
                    L<sub>wst</sub> = (Powierzchnia [m²] × 6,7) + przyłącza do rozdzielacza [m]
                </div>
            </div>

            <div class="algo-panel" id="step-4">
                <span class="algo-panel-tag">Kontrola Bezpieczeństwa</span>
                <h3>Weryfikacja hydrauliczna</h3>
                <p>To moment absolutnie krytyczny dla wydajności systemu. Posiadając obliczoną wartość L<sub>wst</sub>, musimy odnieść ją do limitów wytrzymałości hydraulicznej.</p>
                
                <h4>Krytyczny warunek podziału:</h4>
                <div class="algo-panel-alert">
                    <span>⚖️</span>
                    <div>Sprawdzamy, czy <strong>L<sub>wst</sub> ≤ 100 m</strong> dla zastosowanej rury PEX 16 mm. Jeżeli obliczenia wykazują, że wstępna długość przekracza 100 m (np. wynosi 130 m), natychmiast <strong>dzielimy powierzchnię pomieszczenia na dwie równe pętle</strong>.</div>
                </div>
            </div>

            <div class="algo-panel" id="step-5">
                <span class="algo-panel-tag">Regulacja Systemu</span>
                <h3>Dobór nastaw (Rotametry)</h3>
                <p>Gdy obwody są prawidłowo zwymiarowane, ostatnim krokiem wykonawczym jest wyliczenie nastaw wstępnych, wyrażanych najczęściej w litrach na minutę (l/min). Parametr ten ustawia się bezpośrednio na rotametrach znajdujących się na belce zasilającej <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacza</a>.</p>
                <p>Celem tej procedury jest precyzyjne <strong>zrównoważenie hydrauliczne</strong> całego układu – sprawienie, by pętla o długości 40 m w łazience stawiała sztucznie taki sam opór, jak pętla 90 m w salonie, zapewniając idealny rozkład przepływów.</p>
            </div>

        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie domenowe (Brak H1-H6)
    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-algo-stepper');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px 25px; text-align: center; background: #0f172a; color: #f8fafc; font-family: sans-serif;">
                    <span style="font-size: 40px; display: block; margin-bottom: 10px;">🔒</span>
                    <div style="font-weight: 900; font-size: 20px; margin-bottom: 10px; color: #0284c7;">Zawartość Chroniona</div>
                    <p style="font-size: 14px; margin-bottom: 20px; color: #94a3b8;">Interaktywny algorytm obliczeniowy stanowi własność intelektualną Projekt-Ogrzewania.pl.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 10px 20px; background: #0284c7; color: white; text-decoration: none; border-radius: 8px; font-weight: bold; font-size: 13px;">WRÓĆ NA STRONĘ AUTORA</a>
                </div>
            `;
            return; 
        }
    }

    // Logika Steppera
    const stepBtns = document.querySelectorAll('.algo-step-btn');
    const stepPanels = document.querySelectorAll('.algo-panel');

    stepBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            const targetId = this.getAttribute('data-step');

            // Usuń aktywne klasy z przycisków
            stepBtns.forEach(b => b.classList.remove('active'));
            // Dodaj do klikniętego
            this.classList.add('active');

            // Schowaj wszystkie panele
            stepPanels.forEach(panel => {
                panel.classList.remove('active');
            });

            // Pokaż docelowy panel
            const targetPanel = document.getElementById(targetId);
            if (targetPanel) {
                targetPanel.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --st-primary: #0f172a;
    --st-panel: #ffffff;
    --st-accent: #0284c7;
    --st-accent-light: #e0f2fe;
    --st-text: #334155;
    --st-muted: #94a3b8;
    --st-border: #e2e8f0;
    --st-highlight: #f8fafc;
}

.smart-table-module {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--st-panel);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--st-border);
    overflow: hidden;
}

.st-content-wrapper {
    padding: 40px 50px 20px 50px;
}

.st-text-section h2 {
    color: var(--st-primary);
    font-size: 24px;
    font-weight: 900;
    margin-top: 0;
    margin-bottom: 20px;
    line-height: 1.3;
}

.st-text-section p {
    font-size: 16px;
    line-height: 1.8;
    color: var(--st-text);
    margin-bottom: 20px;
}

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

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

.st-text-section a:hover {
    color: #1e3a8a;
}

/* ================= INTERAKTYWNE KONTROLKI ================= */
.st-interactive-header {
    background: var(--st-highlight);
    border: 1px solid var(--st-border);
    border-radius: 16px;
    padding: 25px;
    margin: 30px 50px 0 50px;
}

.st-instruction {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--st-muted);
    letter-spacing: 1px;
    margin-bottom: 15px;
    text-align: center;
}

.st-controls-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
}

.st-btn {
    background: #ffffff;
    border: 2px solid var(--st-border);
    border-radius: 12px;
    padding: 12px 10px;
    font-size: 14px;
    font-weight: 700;
    color: var(--st-text);
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 5px;
}

.st-btn span {
    font-size: 11px;
    color: var(--st-muted);
    font-weight: 600;
}

.st-btn:hover {
    border-color: #bae6fd;
    background: #f0f9ff;
    transform: translateY(-2px);
}

.st-btn.active {
    border-color: var(--st-accent);
    background: var(--st-accent-light);
    color: var(--st-accent);
    box-shadow: 0 4px 12px rgba(2, 132, 199, 0.15);
}

.st-btn.active span {
    color: var(--st-accent);
}

/* ================= TABELA DANYCH (DESKTOP) ================= */
.st-table-container {
    padding: 0 50px 40px 50px;
}

.st-table-responsive {
    width: 100%;
    border-radius: 12px;
    border: 1px solid var(--st-border);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.st-table {
    width: 100%;
    border-collapse: collapse;
    min-width: 600px;
    background: #ffffff;
}

.st-table th {
    background: #f1f5f9;
    color: var(--st-primary);
    font-weight: 800;
    font-size: 13px;
    text-transform: uppercase;
    padding: 18px 15px;
    text-align: left;
    border-bottom: 2px solid var(--st-border);
    white-space: nowrap;
}

.st-table td {
    padding: 16px 15px;
    font-size: 15px;
    color: var(--st-text);
    border-bottom: 1px solid var(--st-border);
    transition: all 0.3s ease;
}

.st-table tbody tr {
    transition: all 0.3s ease;
}

/* Stany interaktywne tabeli */
.st-table.filtering tbody tr {
    opacity: 0.3;
    background: #ffffff;
}

.st-table.filtering tbody tr.highlighted {
    opacity: 1;
    background: var(--st-accent-light);
    transform: scale(1.01);
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.st-table.filtering tbody tr.highlighted td {
    font-weight: 700;
    color: var(--st-primary);
    border-color: transparent;
}

.st-table.filtering tbody tr.highlighted td:first-child {
    border-left: 4px solid var(--st-accent);
}

/* ================= DYNAMICZNA WSKAZÓWKA ================= */
.st-tip-box {
    margin-top: 20px;
    padding: 15px 20px;
    border-radius: 12px;
    background: #fffbeb;
    border-left: 4px solid #f59e0b;
    font-size: 14px;
    color: #92400e;
    display: none;
    animation: stFadeIn 0.4s ease;
}

.st-tip-box.visible {
    display: block;
}

.st-tip-box strong {
    color: #b45309;
}

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

/* ================= WERSJA MOBILNA (UKŁAD KART) ================= */
@media (max-width: 768px) {
    .st-content-wrapper { padding: 30px 25px 15px 25px; }
    .st-interactive-header { margin: 20px 25px 0 25px; padding: 20px; }
    .st-controls-grid { grid-template-columns: 1fr 1fr; }
    .st-table-container { padding: 0 25px 30px 25px; margin-top: 15px; }
    
    .st-table-responsive {
        border: none;
        box-shadow: none;
        background: transparent;
    }
    
    .st-table {
        min-width: 100%;
        display: block;
    }
    
    .st-table thead {
        display: none;
    }
    
    .st-table tbody {
        display: block;
    }
    
    .st-table tbody tr {
        display: block;
        background: #ffffff;
        border: 1px solid var(--st-border);
        border-radius: 12px;
        margin-bottom: 15px;
        box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
        padding: 5px 0;
    }
    
    .st-table td {
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 12px 15px;
        border-bottom: 1px solid #f1f5f9;
        font-size: 14px;
        text-align: right;
    }
    
    .st-table td:last-child {
        border-bottom: none;
    }
    
    .st-table td::before {
        content: attr(data-label);
        font-weight: 800;
        font-size: 12px;
        color: var(--st-muted);
        text-transform: uppercase;
        text-align: left;
        margin-right: 15px;
        flex-shrink: 0;
        max-width: 50%;
    }

    .st-table.filtering tbody tr.highlighted {
        border: 2px solid var(--st-accent);
        transform: scale(1.02);
    }
    .st-table.filtering tbody tr.highlighted td:first-child {
        border-left: none; 
    }
}
</style>

<div class="smart-table-module" id="app-routing-patterns">

    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org",
        "@type": "WebApplication",
        "name": "Interaktywny Analizator Schematów Układania Ogrzewania Podłogowego",
        "description": "Narzędzie inżynierskie pozwalające na analizę wpływu wzoru układania rur (ślimak, meander) na opory miejscowe hydrauliczne i wynikającą z nich maksymalną długość pętli.",
        "applicationCategory": "EngineeringApplication",
        "operatingSystem": "All",
        "url": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#schematy-ukladania",
        "license": "https://projekt-ogrzewania.pl/",
        "offers": {
          "@type": "Offer",
          "price": "0",
          "priceCurrency": "PLN"
        },
        "creator": {
          "@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/"
          ]
        },
        "featureList": [
          "Filtrowanie schematów układania: Spirala, Meander, Podwójny Meander, Mieszany",
          "Wizualizacja skutków oporów miejscowych (zagięć 180° i 90°) na przepływ wody",
          "Szacowanie spadku maksymalnej dopuszczalnej długości obwodu grzewczego"
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "Dataset",
        "name": "Wpływ Schematów Układania na Maksymalną Długość Pętli Grzewczej",
        "description": "Tabela inżynierska korelująca typ układu rur płaszczyznowych z ich wpływem na generowane opory miejscowe oraz rozkład temperatury posadzki.",
        "license": "https://projekt-ogrzewania.pl/",
        "variableMeasured": [
          {
            "@type": "PropertyValue",
            "name": "Wzór: Spirala (Ślimak)",
            "value": "Opory Niskie | Wpływ na limit: 100% wykorzystania zakłożonej maksymalnej długości"
          },
          {
            "@type": "PropertyValue",
            "name": "Wzór: Meander",
            "value": "Opory Wysokie (łuki 180°) | Wpływ na limit: Redukcja długości pętli o 15-20%"
          },
          {
            "@type": "PropertyValue",
            "name": "Wzór: Podwójny Meander",
            "value": "Opory Średnie | Wpływ na limit: Redukcja długości pętli o ok. 10%"
          }
        ],
        "creator": {
          "@type": "Person",
          "name": "Robert Kucharski",
          "sameAs": [
            "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
            "https://www.linkedin.com/in/robert-kucharski-38069b48/"
          ]
        }
      }
    ]
    </script>

    <div class="st-content-wrapper">
        <div class="st-text-section">
            <h2>Schemat układania rur a maksymalna długość pętli</h2>
            <p>Zastanawiasz się, dlaczego w jednym pomieszczeniu <strong>maksymalna długość pętli ogrzewania podłogowego</strong> może bezpiecznie wynosić równe 100 metrów, a w innym instalator narzuca limit zaledwie 80 metrów, mimo zastosowania tej samej rury 16x2.0 mm? Kluczem do rozwiązania tej zagadki inżynieryjnej są tzw. opory miejscowe, które generuje <a href="https://projekt-ogrzewania.pl/jak-ukladac-rury-w-ogrzewaniu-slimak-meander-czy-podwojny-meander/">wybrany schemat układania rur</a>.</p>
            
            <h3>Wpływ zagięć na hydraulikę instalacji.</h3>
            <p>Każde ostre zagięcie przewodu o 180 stopni drastycznie dławi przepływ wody. Poniżej przygotowałem interaktywne zestawienie, które pokazuje, jak zastosowanie klasycznego meandra czy optymalnego ślimaka wpływa na ostateczne możliwości tłoczenia pompy obiegowej.</p>
        </div>
    </div>

    <div class="st-interactive-header">
        <div class="st-instruction">👉 Wybierz schemat, by sprawdzić jego wpływ na pętlę</div>
        <div class="st-controls-grid">
            <button class="st-btn" data-target="pat-spiral">Spirala <span>Ślimak</span></button>
            <button class="st-btn" data-target="pat-meander">Meander <span>Klasyczny</span></button>
            <button class="st-btn" data-target="pat-double">Podw. Meander <span>Mieszany</span></button>
            <button class="st-btn" data-target="pat-strefa">Strefa <span>Brzegowa</span></button>
        </div>
    </div>

    <div class="st-table-container">
        <div class="st-table-responsive">
            <table class="st-table" id="interactive-routing-table">
                <thead>
                    <tr>
                        <th>Schemat układania</th>
                        <th>Opory miejscowe rury</th>
                        <th>Rozkład temperatury posadzki</th>
                        <th>Skutek dla maks. długości pętli</th>
                    </tr>
                </thead>
                <tbody>
                    <tr data-row="pat-spiral">
                        <td data-label="Schemat"><h4>Spirala (Ślimak)</h4></td>
                        <td data-label="Opory rury">Niskie (łuki łagodne 90°)</td>
                        <td data-label="Rozkład temp.">Bardzo równomierny</td>
                        <td data-label="Skutek dla długości">Pozwala wykorzystać <strong>100%</strong> limitu</td>
                    </tr>
                    <tr data-row="pat-meander">
                        <td data-label="Schemat"><h4>Meander</h4></td>
                        <td data-label="Opory rury">Wysokie (ostre łuki 180°)</td>
                        <td data-label="Rozkład temp.">Wyraźnie chłodniej na końcu</td>
                        <td data-label="Skutek dla długości">Wymaga skrócenia pętli o <strong>15–20%</strong></td>
                    </tr>
                    <tr data-row="pat-double">
                        <td data-label="Schemat"><h4>Podwójny Meander</h4></td>
                        <td data-label="Opory rury">Średnie (kompromis)</td>
                        <td data-label="Rozkład temp.">Zrównoważony</td>
                        <td data-label="Skutek dla długości">Wymaga skrócenia pętli o <strong>ok. 10%</strong></td>
                    </tr>
                    <tr data-row="pat-strefa">
                        <td data-label="Schemat"><h4>Układ Mieszany</h4></td>
                        <td data-label="Opory rury">Zmienne (zależne od strefy)</td>
                        <td data-label="Rozkład temp.">Ukierunkowany (np. na okna)</td>
                        <td data-label="Skutek dla długości">Ryzyko oporów – max. zalecane <strong>85m</strong></td>
                    </tr>
                </tbody>
            </table>
        </div>

        <div class="st-tip-box" id="st-routing-tip">
            </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)) {
        const container = document.getElementById('app-routing-patterns');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px 25px; text-align: center; background: #0f172a; color: #f8fafc; font-family: sans-serif;">
                    <span style="font-size: 40px; display: block; margin-bottom: 10px;">🔒</span>
                    <div style="font-weight: 900; font-size: 20px; margin-bottom: 10px; color: #0284c7;">Ochrona Treści Interaktywnych</div>
                    <p style="font-size: 14px; margin-bottom: 20px; color: #94a3b8;">Tabela analityczna jest autorskim narzędziem Projekt-Ogrzewania.pl i została skopiowana niezgodnie z prawem.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 10px 20px; background: #0284c7; color: white; text-decoration: none; border-radius: 12px; font-weight: bold; font-size: 13px;">PRZEJDŹ DO ORYGINAŁU</a>
                </div>
            `;
            return; 
        }
    }

    const tips = {
        'pat-spiral': '<strong>Wskazówka Projektowa:</strong> <a href="https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/">Układ ślimakowy</a> to absolutny standard. Zasilanie i powrót idą obok siebie, uśredniając temperaturę posadzki i minimalizując opory przepływu.',
        'pat-meander': '<strong>Wskazówka Projektowa:</strong> Ze względu na ogromne spadki ciśnienia na zakrętach 180°, przy <a href="https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/">układzie meandrowym</a> dla rury 16mm bezpieczniej nie przekraczać długości 80 metrów na jednej pętli.',
        'pat-double': '<strong>Wskazówka Projektowa:</strong> Świetna alternatywa dla długich i wąskich korytarzy, gdzie klasyczny ślimak jest trudny do wywinięcia, ale zależy nam na zbalansowaniu temperatury.',
        'pat-strefa': '<strong>Wskazówka Projektowa:</strong> Gdy zagęszczamy meander (np. co 10 cm) pod dużymi oknami HS, pętla drastycznie "nabiera" oporów. W <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/">strefach brzegowych</a> zawsze celuj w krótsze obwody.'
    };

    const buttons = document.querySelectorAll('.st-btn');
    const table = document.getElementById('interactive-routing-table');
    const rows = table.querySelectorAll('tbody tr');
    const tipBox = document.getElementById('st-routing-tip');

    buttons.forEach(button => {
        button.addEventListener('click', function() {
            const target = this.getAttribute('data-target');
            buttons.forEach(btn => btn.classList.remove('active'));
            this.classList.add('active');
            table.classList.add('filtering');
            rows.forEach(row => {
                if (row.getAttribute('data-row') === target) {
                    row.classList.add('highlighted');
                } else {
                    row.classList.remove('highlighted');
                }
            });
            if (tips[target]) {
                tipBox.innerHTML = tips[target];
                tipBox.classList.add('visible');
            }
        });
    });
});
</script>



<style>
:root {
    --primary-hvac: #0f172a;
    --accent-hvac: #2563eb;
    --bg-tip: #f1f5f9;
}

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

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

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

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

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

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

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

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

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

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

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

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Quotation",
    "license": "https://projekt-ogrzewania.pl/",
    "text": "Często spotykam się z prośbami inwestorów o ułożenie pętli o długości 140 czy 150 metrów, by zaoszczędzić na wielkości rozdzielacza. To absolutnie najdroższa z możliwych oszczędności. Maksymalna długość pętli ogrzewania podłogowego to nie luźna sugestia, a twarda granica fizyki. Przekroczenie 100 metrów dla rury 16 mm sprawi, że zapłacisz o wiele więcej za prąd do pompy obiegowej, zmusisz pompę ciepła do pracy na wyższym zasilaniu, a Twoja podłoga w salonie i tak pozostanie niedogrzana. Zawsze taniej jest dołożyć jedną sekcję rozdzielacza więcej na etapie budowy, niż walczyć z zimnymi strefami przez kilkadziesiąt lat.",
    "spokenByCharacter": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "jobTitle": "CEO & Główny Projektant",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ],
      "worksFor": {
        "@type": "Organization",
        "name": "Projekt-Ogrzewania.pl"
      }
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Wytyczne inżynierskie: Optymalizacja długości pętli grzewczej",
    "description": "Zestawienie inżynierskich zasad bezwzględnego unikania przekraczania maksymalnych długości obiegów dla systemów płaszczyznowych i wynikających z tego strat na wydajności źródeł ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  }
]
</script>

<div class="expert-tip-wrapper">
    <h2><span style="margin-right:10px">⚖️</span>Złota zasada eksperta</h2>
    
    <div class="expert-tip-container" id="expert-tip-hvac">
        <div class="expert-tip-photo-wrap">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="expert-tip-photo" loading="lazy">
        </div>
        <div class="expert-tip-content">
            <h3 class="expert-tip-label">Wskazówka od Projektanta</h3>
            <p class="expert-tip-text">
                "Często spotykam się z prośbami inwestorów o ułożenie pętli o długości 140 czy 150 metrów, by zaoszczędzić na wielkości rozdzielacza. To absolutnie najdroższa z możliwych oszczędności. <strong>Maksymalna długość pętli ogrzewania podłogowego</strong> to nie luźna sugestia, a twarda granica fizyki. Przekroczenie 100 metrów dla rury 16 mm sprawi, że zapłacisz o wiele więcej za prąd do pompy obiegowej, zmusisz <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompę ciepła</a> do pracy na wyższym parametrze, a posadzka w salonie i tak pozostanie niedogrzana. Zawsze taniej jest dołożyć jedną sekcję <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacza</a> więcej, niż walczyć z zimnymi strefami przez kilkadziesiąt lat eksploatacji."
            </p>
            <span class="expert-tip-signature">— Robert Kucharski, CEO & Główny Projektant Projekt-Ogrzewania.pl</span>
        </div>
    </div>

    <noscript>
        <div style="padding: 20px; background: #f1f5f9; border-radius: 20px; margin-top: 20px; font-family: sans-serif;">
            <p style="font-size: 14px; font-weight: bold; color: #0f172a;">Rekomendacja inżynierska Roberta Kucharskiego:</p>
            <p style="font-size: 14px; color: #475569;">Oszczędzanie na ilości sekcji w rozdzielaczu poprzez sztuczne wydłużanie pętli grzewczych powyżej 100 metrów to błąd projektowy. Zawsze skutkuje on niedogrzaniem pomieszczeń i drastycznym wzrostem kosztów eksploatacyjnych systemu grzewczego.</p>
        </div>
    </noscript>
</div>

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



<style>
:root {
    --cs-primary: #0f172a;
    --cs-accent: #2563eb;
    --cs-danger: #dc2626;
    --cs-success: #16a34a;
    --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;
}

/* Nowe style dla H3 i H4 w sekcji treści */
.cs-content-section h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--cs-primary);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.cs-content-section h4 {
    font-size: 18px;
    font-weight: 800;
    color: var(--cs-primary);
    margin: 25px 0 10px 0;
    line-height: 1.4;
}

.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);
    font-weight: 700;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    transition: 0.2s;
}

.cs-lead-text a:hover {
    color: #1e3a8a;
}

.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;
}

.cs-author-box a {
    color: var(--cs-accent);
    font-weight: 800;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
}

/* ================= 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;
}

.cs-split-card:not(.active) {
    opacity: 0.7;
    transform: scale(0.98);
}

.cs-split-card.danger.active {
    border-color: var(--cs-danger);
    background: #fef2f2;
    box-shadow: 0 10px 25px rgba(220, 38, 38, 0.1);
    opacity: 1;
    transform: scale(1);
}

.cs-split-card.success.active {
    border-color: var(--cs-success);
    background: #f0fdf4;
    box-shadow: 0 10px 25px rgba(22, 163, 74, 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: 13px;
    font-weight: 700;
    display: none;
}

.cs-split-card.danger .cs-card-solution { color: #991b1b; }
.cs-split-card.success .cs-card-solution { color: #166534; }

.cs-split-card.active .cs-card-solution {
    display: block;
    animation: csFadeIn 0.4s ease forwards;
}

@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-split-container { grid-template-columns: 1fr; }
}
</style>

<div class="case-study-module" id="app-case-study">

    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org",
        "@type": "WebApplication",
        "name": "Panel Studium Przypadku: Optymalizacja Długości Pętli",
        "description": "Interaktywny moduł prezentujący proces decyzyjny i wyzwania inżynierskie przy projektowaniu długości obwodów grzewczych w salonie z antresolą (wysokie straty cieplne).",
        "applicationCategory": "EngineeringApplication",
        "operatingSystem": "All",
        "url": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/",
        "license": "https://projekt-ogrzewania.pl/",
        "offers": {
          "@type": "Offer",
          "price": "0",
          "priceCurrency": "PLN"
        },
        "creator": {
          "@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/"
          ]
        },
        "featureList": [
          "Analiza skutków przekroczenia maksymalnej długości pętli rury PEX 16mm",
          "Symulacja wzrostu oporów hydraulicznych w dużym salonie",
          "Wizualizacja dylematu podziału obiegów grzewczych na mniejsze sekcje"
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "Dataset",
        "name": "Parametry Projektowe i Opory Hydrauliczne - Dom Brzeziny 2025",
        "description": "Zestawienie parametrów wejściowych budynku wykorzystanych do optymalizacji zasilania i uniknięcia przekroczenia krytycznych wartości oporów dla pomp obiegowych.",
        "license": "https://projekt-ogrzewania.pl/",
        "variableMeasured": [
          {
            "@type": "PropertyValue",
            "name": "Data projektu",
            "value": "Marzec 2025"
          },
          {
            "@type": "PropertyValue",
            "name": "Powierzchnia budynku",
            "value": "140 m²"
          },
          {
            "@type": "PropertyValue",
            "name": "Maksymalny limit długości (PEX 16mm)",
            "value": "100 mb"
          },
          {
            "@type": "PropertyValue",
            "name": "Lokalizacja",
            "value": "Brzeziny (k. Warszawy)"
          }
        ],
        "creator": {
          "@type": "Person",
          "name": "Robert Kucharski",
          "sameAs": [
            "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
            "https://www.linkedin.com/in/robert-kucharski-38069b48/"
          ]
        }
      }
    ]
    </script>

    <div class="cs-header-wrapper">
        <div class="cs-badge">Case Study z Budowy</div>
        <h2>Problem długiej pętli w salonie z antresolą</h2>
        <div class="cs-stats-grid">
            <div class="cs-stat-box">
                <span class="cs-stat-label">Termin</span>
                <span class="cs-stat-value">Marzec 2025</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Lokalizacja</span>
                <span class="cs-stat-value">Brzeziny</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Powierzchnia</span>
                <span class="cs-stat-value">140 m²</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">System</span>
                <span class="cs-stat-value">PEX 16x2.0</span>
            </div>
        </div>
    </div>

    <div class="cs-content-section">
        <h3>Wyzwanie projektowe: Duże przeszklenia i otwarta strefa</h3>
        <p class="cs-lead-text">W marcu 2025 roku, podczas realizacji projektu instalacji w nowoczesnym domu jednorodzinnym o powierzchni 140 m² w miejscowości Brzeziny pod Warszawą dla inwestora pana Krzysztofa, kluczowym wyzwaniem okazało się zaprojektowanie otwartej strefy salonu z antresolą tak, aby nie przekroczyć parametrów krytycznych układu. Duża powierzchnia przeszkleń oraz wysoki sufit sprawiły, że zapotrzebowanie na moc cieplną w tym pomieszczeniu było ekstremalnie wysokie, co precyzyjnie wykazało <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne (OZC)</a>. </p>
        
        <h4>Oczekiwania inwestora a prawa fizyki</h4>
        <p class="cs-lead-text">Inwestor, szukając oszczędności na ilości rozdzielaczy, zapytał wprost: <em>ile metrów rury podłogówki możemy ułożyć w jednym kawałku, żeby pokryć cały salon?</em> Odpowiedź inżynierska musiała być stanowcza. Bezwzględna <strong>maksymalna długość pętli ogrzewania podłogowego</strong> dla zastosowanej rury o średnicy 16 mm wynosiła w tym układzie 100 metrów bieżących. Zlekceważenie tej zasady doprowadziłoby do skrajnie wysokich oporów hydraulicznych, z którymi nie poradziłaby sobie nawet najmocniejsza <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa</a>, skutkując wychłodzonymi sektorami przy oknach tarasowych.</p>
        
        <div class="cs-author-box">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="cs-author-photo" loading="lazy">
            <p>Obliczenia hydrauliczne w tym konkretnym obiekcie wykonał Robert Kucharski. Przed inwestorem postawiono dwie wizje rozwiązania problemu dużego metrażu:</p>
        </div>
    </div>

    <div class="cs-interactive-section">
        <div class="cs-split-container">
            
            <div class="cs-split-card danger active" id="cs-btn-long">
                <div class="cs-card-header">
                    <span class="cs-card-icon">⚠️</span>
                    <h3 class="cs-card-title">Ryzyko: Pętla > 130 mb</h3>
                </div>
                <p class="cs-card-desc">Próba pokrycia całego salonu jednym, długim ślimakiem rury 16 mm. Woda na początku pętli jest gorąca, ale nim dotrze na koniec obiegu, oddaje całą energię.</p>
                <div class="cs-card-solution">
                    Efekt krytyczny: Opór hydrauliczny rzędu 35 kPa całkowicie dławi przepływ (rotametr pokazuje zaledwie 0,5 l/min). Końcówka salonu pozostaje zimna, a pompa pracuje na maksymalnym przeciążeniu.
                </div>
            </div>

            <div class="cs-split-card success" id="cs-btn-short">
                <div class="cs-card-header">
                    <span class="cs-card-icon">✅</span>
                    <h3 class="cs-card-title">Optymalizacja: 3 x 85 mb</h3>
                </div>
                <p class="cs-card-desc">Podział dużej powierzchni salonu z antresolą na trzy mniejsze, niezależne strefy grzewcze podpięte pod dedykowany rozdzielacz, z zachowaniem reżimu poniżej 100 mb.</p>
                <div class="cs-card-solution">
                    Rozwiązanie wdrożone: Przepływy bez problemu ustawione na 2,2 l/min. Równomierny rozkład temperatury na całej powierzchni podłogi, bez obciążania pompy ciepła i obiegowej.
                </div>
            </div>

        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Zabezpieczenie domenowe (bez tagów nagłówkowych, zgodnie z wcześniejszymi wytycznymi dla modułów bezpieczeństwa)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('app-case-study');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px 25px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;">
                    <span style="font-size: 40px; display: block; margin-bottom: 10px;">🔒</span>
                    <div style="font-weight: 900; font-size: 20px; margin-bottom: 10px;">Treść chroniona prawem autorskim</div>
                    <p style="font-size: 14px; margin-bottom: 15px;">Ten panel 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 cardLong = document.getElementById('cs-btn-long');
    const cardShort = document.getElementById('cs-btn-short');

    function toggleCards(activeCard, inactiveCard) {
        activeCard.classList.add('active');
        inactiveCard.classList.remove('active');
    }

    if (cardLong && cardShort) {
        cardLong.addEventListener('click', () => toggleCards(cardLong, cardShort));
        cardShort.addEventListener('click', () => toggleCards(cardShort, cardLong));
    }
});
</script>



<style>
:root {
    --bal-primary: #0f172a;
    --bal-panel: #ffffff;
    --bal-accent: #0ea5e9;
    --bal-accent-light: #e0f2fe;
    --bal-text: #334155;
    --bal-muted: #94a3b8;
    --bal-border: #e2e8f0;
    --bal-danger: #ef4444;
    --bal-success: #10b981;
    --bal-water: #38bdf8;
    --bal-water-dark: #0284c7;
}

.bal-module-wrapper {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--bal-panel);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--bal-border);
    overflow: hidden;
}

.bal-text-section {
    padding: 40px 50px 20px 50px;
}

/* Zmiana na H2 dla nagłówka głównego modułu */
.bal-text-section h2 {
    color: var(--bal-primary);
    font-size: 24px;
    font-weight: 900;
    margin-top: 0;
    margin-bottom: 20px;
    line-height: 1.3;
}

.bal-text-section p {
    font-size: 16px;
    line-height: 1.8;
    color: var(--bal-text);
    margin-bottom: 20px;
}

.bal-text-section a {
    color: var(--bal-accent-dark, #0284c7);
    font-weight: 700;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    transition: 0.2s;
}

.bal-text-section a:hover {
    color: #0c4a6e;
}

/* ================= SYMULATOR ================= */
.bal-simulator {
    background: #f8fafc;
    border-top: 1px solid var(--bal-border);
    padding: 40px 50px;
}

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

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

.bal-slider-group {
    background: #ffffff;
    border: 1px solid var(--bal-border);
    padding: 20px;
    border-radius: 16px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

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

.bal-label {
    font-size: 14px;
    font-weight: 800;
    color: var(--bal-primary);
    display: flex;
    align-items: center;
    gap: 8px;
}

.bal-badge {
    background: var(--bal-accent-light);
    color: var(--bal-water-dark);
    padding: 4px 12px;
    border-radius: 8px;
    font-weight: 900;
    font-size: 15px;
}

input[type=range].bal-slider {
    -webkit-appearance: none;
    width: 100%;
    background: transparent;
}
input[type=range].bal-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    height: 24px;
    width: 24px;
    border-radius: 50%;
    background: var(--bal-water-dark);
    cursor: pointer;
    margin-top: -9px;
    border: 3px solid #ffffff;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}
input[type=range].bal-slider::-webkit-slider-runnable-track {
    width: 100%;
    height: 6px;
    cursor: pointer;
    background: #cbd5e1;
    border-radius: 4px;
}

/* WIZUALIZACJA ROTAMETRÓW */
.bal-visualization {
    display: flex;
    justify-content: center;
    gap: 50px;
    background: #ffffff;
    border: 1px solid var(--bal-border);
    padding: 30px;
    border-radius: 16px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    position: relative;
}

.bal-rotameter-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 15px;
}

/* Zmiana na H4 z wyzerowanym marginesem */
h4.bal-rotameter-title {
    font-size: 12px;
    font-weight: 800;
    color: var(--bal-muted);
    text-transform: uppercase;
    margin: 0;
}

.bal-rotameter-glass {
    width: 40px;
    height: 180px;
    background: #f1f5f9;
    border: 2px solid #cbd5e1;
    border-radius: 6px;
    position: relative;
    display: flex;
    align-items: flex-end;
    overflow: hidden;
    box-shadow: inset 0 2px 10px rgba(0,0,0,0.05);
}

.bal-rotameter-scale {
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 10px;
    border-right: 1px solid rgba(0,0,0,0.1);
    background: repeating-linear-gradient(
        to bottom,
        transparent,
        transparent 19px,
        rgba(0,0,0,0.2) 19px,
        rgba(0,0,0,0.2) 20px
    );
    z-index: 2;
}

.bal-rotameter-fluid {
    width: 100%;
    background: linear-gradient(to top, var(--bal-water-dark), var(--bal-water));
    transition: height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    z-index: 1;
}

/* Pływak (czerwony punkt na rotametrze) */
.bal-rotameter-float {
    width: 24px;
    height: 8px;
    background: #ef4444;
    border-radius: 4px;
    position: absolute;
    top: 0;
    left: 50%;
    transform: translate(-50%, -50%);
    box-shadow: 0 2px 4px rgba(0,0,0,0.3);
}

.bal-flow-readout {
    font-size: 18px;
    font-weight: 900;
    color: var(--bal-primary);
    font-family: 'Cambria Math', monospace;
}

/* WSKAŹNIKI I AKCJE */
.bal-status-panel {
    grid-column: 1 / -1;
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: #fffbeb;
    border: 1px solid #fde68a;
    padding: 20px 30px;
    border-radius: 16px;
    transition: 0.3s;
}

.bal-status-panel.balanced {
    background: #f0fdf4;
    border-color: #bbf7d0;
}

.bal-status-panel.error {
    background: #fef2f2;
    border-color: #fecaca;
}

.bal-status-info {
    max-width: 60%;
}

/* Zmiana na H3 z zerowaniem marginesów dla dopasowania */
h3.bal-status-title {
    font-size: 16px;
    font-weight: 900;
    color: #92400e;
    margin: 0 0 5px 0;
}
.bal-status-panel.balanced h3.bal-status-title { color: #166534; }
.bal-status-panel.error h3.bal-status-title { color: #991b1b; }

.bal-status-desc {
    font-size: 13px;
    color: #b45309;
    line-height: 1.5;
}
.bal-status-panel.balanced .bal-status-desc { color: #15803d; }
.bal-status-panel.error .bal-status-desc { color: #b91c1c; }

.bal-action-btn {
    background: var(--bal-primary);
    color: #ffffff;
    border: none;
    padding: 14px 24px;
    border-radius: 12px;
    font-weight: 800;
    font-size: 14px;
    cursor: pointer;
    transition: 0.3s;
    display: flex;
    align-items: center;
    gap: 8px;
    box-shadow: 0 4px 10px rgba(15, 23, 42, 0.2);
}

.bal-action-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 15px rgba(15, 23, 42, 0.3);
}

.bal-action-btn:disabled {
    background: #cbd5e1;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}

@media (max-width: 768px) {
    .bal-text-section { padding: 30px 25px 10px 25px; }
    .bal-simulator { padding: 30px 25px; }
    .bal-sim-grid { grid-template-columns: 1fr; gap: 30px; }
    .bal-status-panel { flex-direction: column; text-align: center; gap: 20px; }
    .bal-status-info { max-width: 100%; }
    .bal-action-btn { width: 100%; justify-content: center; }
}
</style>

<div class="bal-module-wrapper" id="app-hydraulic-balancing">

    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org",
        "@type": "WebApplication",
        "name": "Symulator Równoważenia Hydraulicznego Pętli Ogrzewania",
        "description": "Interaktywne narzędzie ilustrujące zjawisko oporów hydraulicznych. Symuluje ucieczkę przepływu medium (wody grzewczej) do krótszych pętli i uczy konieczności stosowania rotametrów na rozdzielaczach.",
        "applicationCategory": "EducationalApplication",
        "operatingSystem": "All",
        "url": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#rownowazenie",
        "license": "https://projekt-ogrzewania.pl/",
        "offers": {
          "@type": "Offer",
          "price": "0",
          "priceCurrency": "PLN"
        },
        "creator": {
          "@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/"
          ]
        },
        "featureList": [
          "Wizualizacja zachowania wody jako medium szukającego najmniejszego oporu",
          "Dynamiczna zmiana długości dwóch sąsiadujących pętli (od 30m do 120m)",
          "Symulacja dławienia rotametrami w celu wymuszenia równego przepływu"
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "Dataset",
        "name": "Zasady równoważenia instalacji - Reguła Kucharskiego",
        "description": "Zestawienie parametrów projektowych chroniących układ przed rozregulowaniem termicznym posadzki.",
        "license": "https://projekt-ogrzewania.pl/",
        "variableMeasured": [
          {
            "@type": "PropertyValue",
            "name": "Maksymalna różnica długości pętli",
            "value": "15%",
            "description": "Graniczna rozbieżność długości obwodów na jednym rozdzielaczu, powyżej której system wymaga mocnego dławienia (kryzowania)."
          },
          {
            "@type": "PropertyValue",
            "name": "Fizyka przepływu",
            "value": "Odwrotnie proporcjonalna do oporu",
            "description": "Woda zawsze wybierze pętlę o mniejszej długości, pozostawiając dłuższe obwody niedogrzanymi."
          }
        ],
        "creator": {
          "@type": "Person",
          "name": "Robert Kucharski",
          "sameAs": [
            "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
            "https://www.linkedin.com/in/robert-kucharski-38069b48/"
          ]
        }
      }
    ]
    </script>

    <div class="bal-text-section">
        <h2>Równoważenie hydrauliczne – serce wydajności</h2>
        <p>Nawet jeśli zaprojektowane pętle w Twoim domu nie przekraczają magicznej granicy 100 m, ale jedna ma 30 m (np. w małej łazience), a druga 90 m (w salonie), instalacja nie będzie działać poprawnie bez rygorystycznej regulacji. Woda, jako medium z natury "leniwe", <strong>popłynie tam, gdzie stawia najmniejszy opór</strong> – zaleje krótką pętlę, a długa pozostanie niemal bez przepływu.</p>
        <p>W moich projektach absolutnie wymuszam stosowanie wysokiej jakości <a href="https://projekt-ogrzewania.pl/produkt/rozdzielacz-ze-stali-nierdzewnej-inox-do-ogrzewania-podlogowego-z-rotametrami/">rozdzielaczy ze stali nierdzewnej</a> wyposażonych w zintegrowane układy pomiarowe. Złota <strong>Zasada Roberta Kucharskiego</strong> mówi jasno: Różnica w długości pętli na jednym rozdzielaczu nie powinna przekraczać 15%. Jeśli rozbieżności są większe, stosujemy bezwzględne kryzowanie na zaworach powrotnych lub dławienie <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">przepływomierzami (rotametrami)</a>, zwiększając sztucznie opór krótkich pętli, aby zmusić wodę do wejścia w strefy o większych stratach.</p>
    </div>

    <div class="bal-simulator">
        <div class="bal-sim-grid">
            
            <div class="bal-controls">
                <div class="bal-slider-group">
                    <div class="bal-label-row">
                        <span class="bal-label"><span style="font-size:20px">📏</span> Pętla 1 (Łazienka)</span>
                        <span class="bal-badge"><span id="bal-len1-val">30</span> m</span>
                    </div>
                    <input type="range" id="bal-len1" class="bal-slider" min="30" max="120" step="5" value="30">
                </div>

                <div class="bal-slider-group">
                    <div class="bal-label-row">
                        <span class="bal-label"><span style="font-size:20px">📏</span> Pętla 2 (Salon)</span>
                        <span class="bal-badge"><span id="bal-len2-val">90</span> m</span>
                    </div>
                    <input type="range" id="bal-len2" class="bal-slider" min="30" max="120" step="5" value="90">
                </div>
            </div>

            <div class="bal-visualization">
                <div class="bal-rotameter-wrapper">
                    <h4 class="bal-rotameter-title">Rotametr 1</h4>
                    <div class="bal-rotameter-glass">
                        <div class="bal-rotameter-scale"></div>
                        <div class="bal-rotameter-fluid" id="bal-fluid1" style="height: 80%;">
                            <div class="bal-rotameter-float"></div>
                        </div>
                    </div>
                    <span class="bal-flow-readout" id="bal-flow1-val">3.0 l/min</span>
                </div>

                <div class="bal-rotameter-wrapper">
                    <h4 class="bal-rotameter-title">Rotametr 2</h4>
                    <div class="bal-rotameter-glass">
                        <div class="bal-rotameter-scale"></div>
                        <div class="bal-rotameter-fluid" id="bal-fluid2" style="height: 20%;">
                            <div class="bal-rotameter-float"></div>
                        </div>
                    </div>
                    <span class="bal-flow-readout" id="bal-flow2-val">1.0 l/min</span>
                </div>
            </div>

            <div class="bal-status-panel error" id="bal-status-box">
                <div class="bal-status-info">
                    <h3 class="bal-status-title" id="bal-status-title">⚠️ Woda płynie na skróty!</h3>
                    <div class="bal-status-desc" id="bal-status-desc">
                        Różnica długości wynosi ponad 15%. Całe ciśnienie ucieka w krótszą pętlę (30m). Długa pętla (90m) jest głodzona cieplnie. Podłoga w salonie będzie zimna.
                    </div>
                </div>
                <button class="bal-action-btn" id="bal-fix-btn">
                    <span>🔧</span> Zdław krótszą pętlę
                </button>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie domenowe (bez tagów H2/H3)
    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-hydraulic-balancing');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px 25px; text-align: center; background: #0f172a; color: #f8fafc; font-family: sans-serif;">
                    <span style="font-size: 40px; display: block; margin-bottom: 10px;">🔒</span>
                    <div style="font-weight: 900; font-size: 20px; margin-bottom: 10px; color: #0ea5e9;">Narzędzie Chronione</div>
                    <div style="font-size: 14px; margin-bottom: 20px; color: #94a3b8;">Symulator Równoważenia Hydraulicznego jest własnością intelektualną serwisu Projekt-Ogrzewania.pl.</div>
                    <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 10px 20px; background: #0ea5e9; color: white; text-decoration: none; border-radius: 8px; font-weight: bold; font-size: 13px;">ZOBACZ ORYGINAŁ</a>
                </div>
            `;
            return; 
        }
    }

    // Elementy UI
    const len1Input = document.getElementById('bal-len1');
    const len2Input = document.getElementById('bal-len2');
    const len1Val = document.getElementById('bal-len1-val');
    const len2Val = document.getElementById('bal-len2-val');
    
    const fluid1 = document.getElementById('bal-fluid1');
    const fluid2 = document.getElementById('bal-fluid2');
    const flow1Val = document.getElementById('bal-flow1-val');
    const flow2Val = document.getElementById('bal-flow2-val');
    
    const statusBox = document.getElementById('bal-status-box');
    const statusTitle = document.getElementById('bal-status-title');
    const statusDesc = document.getElementById('bal-status-desc');
    const fixBtn = document.getElementById('bal-fix-btn');

    // Zmienne symulacji
    const TOTAL_PUMP_FLOW = 4.0; // Maksymalna wydajność pompy l/min dla tych 2 pętli
    let isForcedBalance = false;

    function updatePhysics() {
        const L1 = parseFloat(len1Input.value);
        const L2 = parseFloat(len2Input.value);
        
        len1Val.textContent = L1;
        len2Val.textContent = L2;

        // Obliczanie różnicy procentowej (względem najdłuższej pętli)
        const maxL = Math.max(L1, L2);
        const minL = Math.min(L1, L2);
        const diffPercent = ((maxL - minL) / maxL) * 100;

        let flow1, flow2;

        if (isForcedBalance) {
            // Rotametry zdławione - przepływ po równo lub proporcjonalnie do potrzeb
            flow1 = TOTAL_PUMP_FLOW / 2;
            flow2 = TOTAL_PUMP_FLOW / 2;
            
            statusBox.className = 'bal-status-panel balanced';
            statusTitle.innerHTML = '✅ Układ zrównoważony!';
            statusDesc.innerHTML = 'Rotametr na krótszej pętli został zdławiony sztucznym oporem. Woda została zmuszona do wejścia w długą pętlę. Oba obwody grzeją równomiernie.';
            fixBtn.innerHTML = '<span>🔓</span> Resetuj dławienie';
        } else {
            // Fizyka "leniwej wody" - przepływ odwrotnie proporcjonalny do oporu (długości)
            // flow1 = TOTAL * (L2 / (L1 + L2)) - im większe L1, tym mniejsze L2 w liczniku
            flow1 = TOTAL_PUMP_FLOW * (L2 / (L1 + L2));
            flow2 = TOTAL_PUMP_FLOW * (L1 / (L1 + L2));

            if (diffPercent <= 15) {
                // Różnica w normie - układ naturalnie zbalansowany
                statusBox.className = 'bal-status-panel balanced';
                statusTitle.innerHTML = '✅ Zgodnie z zasadą inżynierską';
                statusDesc.innerHTML = `Różnica długości wynosi ok. ${Math.round(diffPercent)}%. Układ jest na tyle zbalansowany, że woda naturalnie rozkłada się równomiernie.`;
                fixBtn.disabled = true;
                fixBtn.innerHTML = '<span>✨</span> Idealnie';
            } else {
                // Dysproporcja
                statusBox.className = 'bal-status-panel error';
                const shortLoop = L1 < L2 ? L1 : L2;
                const longLoop = L1 > L2 ? L1 : L2;
                statusTitle.innerHTML = '⚠️ Woda płynie na skróty!';
                statusDesc.innerHTML = `Różnica wynosi aż ${Math.round(diffPercent)}% (>15%). Całe ciśnienie ucieka w krótszą pętlę (${shortLoop}m). Długa pętla (${longLoop}m) jest głodzona cieplnie.`;
                fixBtn.disabled = false;
                fixBtn.innerHTML = '<span>🔧</span> Zdław krótszą pętlę';
            }
        }

        // Renderowanie widoku rotametrów
        // Założenie: wys. rotametru to max 4 l/min (100%)
        const height1 = (flow1 / TOTAL_PUMP_FLOW) * 100;
        const height2 = (flow2 / TOTAL_PUMP_FLOW) * 100;

        fluid1.style.height = `${height1}%`;
        fluid2.style.height = `${height2}%`;
        
        flow1Val.textContent = `${flow1.toFixed(1)} l/min`;
        flow2Val.textContent = `${flow2.toFixed(1)} l/min`;
    }

    // Nasłuchiwanie zdarzeń
    len1Input.addEventListener('input', () => { isForcedBalance = false; updatePhysics(); });
    len2Input.addEventListener('input', () => { isForcedBalance = false; updatePhysics(); });

    fixBtn.addEventListener('click', () => {
        isForcedBalance = !isForcedBalance;
        updatePhysics();
    });

    // Inicjalizacja pierwszej klatki
    updatePhysics();
});
</script>



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

.calc-intro {
    max-width: 1150px;
    margin: 40px auto 10px auto;
    text-align: center;
    padding: 0 20px;
}

h2.calc-intro-title {
    font-size: 28px;
    font-weight: 900;
    color: var(--primary);
    margin-top: 0;
    margin-bottom: 15px;
}

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

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

.calc-grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
}

.config-side {
    padding: 40px;
    background: #ffffff;
}

h3.section-title {
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    color: #94a3b8;
    letter-spacing: 1.2px;
    margin-top: 0;
    margin-bottom: 20px;
    display: block;
}

.type-selector {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
    margin-bottom: 30px;
}

.type-btn {
    padding: 12px 6px;
    border: 2px solid #cbd5e1;
    border-radius: 12px;
    cursor: pointer;
    text-align: center;
    font-weight: 700;
    font-size: 13px;
    color: #475569;
    background: #fff;
    transition: all 0.2s;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

.type-btn span {
    margin-top: 4px;
    font-size: 10px;
    font-weight: 400;
}

.type-btn.active {
    border-color: var(--accent);
    background: #eff6ff;
    color: var(--accent);
    box-shadow: 0 4px 12px rgba(37, 99, 235, 0.1);
}

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

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

.result-side {
    padding: 40px;
    background: var(--bg-light);
    border-left: 1px solid #f1f5f9;
}

.main-score-box {
    background: white; padding: 30px; border-radius: 20px; text-align: center; box-shadow: 0 10px 25px rgba(0,0,0,0.03); margin-bottom: 25px; border-bottom: 6px solid var(--success); transition: 0.3s;
}
.score-num { font-size: 48px; font-weight: 900; line-height: 1; display: block; margin: 10px 0; }
.score-label { font-size: 12px; color: #64748b; font-weight: 700; text-transform: uppercase; }

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

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

.material-grid {
    display: grid; grid-template-columns: 1fr; gap: 10px; margin-top: 15px;
}
.mini-card { background: rgba(255,255,255,0.08); padding: 15px; border-radius: 12px; text-align: center;}
.mini-card span { font-size: 11px; color: #94a3b8; display: block; margin-bottom: 6px; text-transform: uppercase; font-weight: 600;}
.mini-card strong { font-size: 20px; color: #38bdf8; }

/* STOPKA CTA */
.footer-cta {
    margin: 0 40px 40px 40px;
    padding: 30px;
    background: #fffbeb;
    border-radius: 20px;
    border-left: 6px solid var(--warning);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 30px;
}

.cta-text-side {
    max-width: 550px;
}

.cta-buttons-stack {
    display: flex;
    flex-direction: column; 
    gap: 12px;
    min-width: 280px; 
}

.cta-btn {
    display: block; background: var(--warning); color: white; text-decoration: none; padding: 16px 20px; border-radius: 12px; font-weight: 800; transition: 0.3s; font-size: 14px; text-align: center; border: none; cursor: pointer;
}
.cta-btn:hover { transform: translateY(-3px); box-shadow: 0 5px 15px rgba(234, 88, 12, 0.2); }

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

<div class="calc-intro">
    <h2 class="calc-intro-title">Kalkulator inżynierski: Graniczna długość pętli</h2>
    <p>Sprawdź, jak wybór średnicy rury oraz odległość pokoju od rozdzielacza wpływają na ostateczny podział obiegów. Narzędzie automatycznie dobiera limity hydrauliczne (np. 100 m dla rury 16 mm vs 130 m dla rury 20 mm) bazując na wytycznych <a href="https://projekt-ogrzewania.pl/" style="color: #2563eb; font-weight: 700; text-decoration: none;">Projekt-Ogrzewania.pl</a>.</p>
</div>

<div class="screed-calc" id="advanced-pipe-calc">

    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org",
        "@type": "WebApplication",
        "name": "Zaawansowany Kalkulator Oporów i Długości Pętli (Ogrzewanie Podłogowe)",
        "applicationCategory": "EngineeringApplication",
        "operatingSystem": "All",
        "url": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#kalkulator",
        "license": "https://projekt-ogrzewania.pl/",
        "description": "Profesjonalny kalkulator inżynierski uwzględniający dystans do rozdzielacza (tranzyty) oraz zróżnicowane limity oporów hydraulicznych w zależności od wybranej średnicy rury (16mm, 17mm, 20mm).",
        "creator": {
          "@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/"
          ]
        },
        "featureList": [
          "Wybór średnicy rury (zmienne wartości graniczne pętli)",
          "Obliczanie oporów tranzytów (dystans od rozdzielacza)",
          "Automatyczny podział na obiegi z podaniem długości pojedynczej pętli"
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "Dataset",
        "name": "Zmienne hydrauliczne pętli ogrzewania podłogowego",
        "description": "Zestawienie zmiennych wykorzystywanych do obliczania całkowitego zużycia przewodu rurowego oraz ilości sekcji rozdzielacza.",
        "license": "https://projekt-ogrzewania.pl/",
        "variableMeasured": [
          {
            "@type": "PropertyValue",
            "name": "Limit pętli PEX 16x2.0",
            "value": "100",
            "unitCode": "MTR"
          },
          {
            "@type": "PropertyValue",
            "name": "Limit pętli PEX 17x2.0",
            "value": "110",
            "unitCode": "MTR"
          },
          {
            "@type": "PropertyValue",
            "name": "Limit pętli PEX 20x2.0",
            "value": "130",
            "unitCode": "MTR"
          },
          {
            "@type": "PropertyValue",
            "name": "Długość tranzytów",
            "value": "Odległość * 2 (Zasilanie + Powrót)"
          }
        ],
        "creator": {
          "@type": "Person",
          "name": "Robert Kucharski",
          "sameAs": [
            "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
            "https://www.linkedin.com/in/robert-kucharski-38069b48/"
          ]
        }
      }
    ]
    </script>

    <div class="calc-grid">
        <div class="config-side">
            
            <h3 class="section-title">1. Geometria układu</h3>
            <div class="input-wrap">
                <div class="input-label-row"><label>Powierzchnia pokoju</label><span class="val-badge"><span id="v-area2">20</span> m²</span></div>
                <input type="range" id="area2" min="5" max="60" step="1" value="20">
            </div>
            
            <div class="input-wrap">
                <div class="input-label-row"><label>Odległość do rozdzielacza</label><span class="val-badge"><span id="v-distance">5</span> m</span></div>
                <input type="range" id="distance" min="0" max="25" step="1" value="5">
                <div style="font-size: 11px; color: #64748b; margin-top: 8px;">Długość korytarza. Kalkulator automatycznie policzy zasilanie i powrót (x2).</div>
            </div>

            <h3 class="section-title">2. Średnica rury (Limit oporów)</h3>
            <div class="type-selector" id="pipe-selector">
                <div class="type-btn active" data-limit="100">16x2.0 <span>Limit: 100 mb</span></div>
                <div class="type-btn" data-limit="110">17x2.0 <span>Limit: 110 mb</span></div>
                <div class="type-btn" data-limit="130">20x2.0 <span>Limit: 130 mb</span></div>
            </div>

            <h3 class="section-title">3. Rozstaw rur</h3>
            <div class="type-selector" id="spacing-selector" style="margin-bottom:0">
                <div class="type-btn" data-spacing="0.10">10 cm <span>Gęsty</span></div>
                <div class="type-btn active" data-spacing="0.15">15 cm <span>Optymalny</span></div>
                <div class="type-btn" data-spacing="0.20">20 cm <span>Rzadki</span></div>
            </div>
        </div>

        <div class="result-side">
            <div id="mainBox2" class="main-score-box">
                <span class="score-label">Faktyczna długość jednej pętli</span>
                <span class="score-num" id="resPerLoop">--</span>
                <span class="score-label">metrów</span>
                <div id="risk-msg2">⚠️ Uwaga!</div>
            </div>

            <div class="tech-grid">
                <div class="tech-item"><span>Sumaryczna ilość rury w pokoju:</span><strong id="resRoomPipe">--</strong></div>
                <div class="tech-item"><span>Rura zużyta na tranzyty (korytarz):</span><strong id="resTransitPipe">--</strong></div>
                <div class="tech-item" style="border-top: 1px dashed #334155; padding-top:12px"><span>Całkowite zapotrzebowanie materiału:</span><strong id="resTotalPipe">--</strong></div>
                
                <div class="material-grid">
                    <div class="mini-card">
                        <span>Liczba obiegów na rozdzielaczu:</span>
                        <strong id="resLoopCount">--</strong>
                    </div>
                </div>
            </div>
            
            <div style="margin-top:20px; font-size:11px; color:#94a3b8; font-weight:700">STRATY MATERIAŁU (TRANZYTY VS POKÓJ):</div>
            <div style="height:12px; display:flex; border-radius:6px; overflow:hidden; margin-top:10px; background:#e2e8f0">
                <div id="bar-room" style="background:var(--accent); width:80%; transition: 0.3s;"></div>
                <div id="bar-transit" style="background:#94a3b8; width:20%; transition: 0.3s;"></div>
            </div>
            <div style="display: flex; justify-content: space-between; font-size: 10px; color: #64748b; margin-top: 5px;">
                <span>Grzeje pokój</span>
                <span>Ucieka w korytarzu</span>
            </div>
        </div>
    </div>

    <div class="footer-cta">
        <div class="cta-text-side">
            <h3 style="margin-top:0; font-size: 21px; font-weight: 900; margin-bottom: 10px; color:#9a3412">Nie masz pewności co do wyliczeń? Nie ryzykuj!</h3>
            <p style="margin:0; font-size:14px; color:#78350f; line-height: 1.6;">Powyższy symulator to doskonałe narzędzie do wstępnej estymacji. Jednak ogrzewanie całego domu to skomplikowany system hydrauliczny. Błąd na tym etapie oznacza zimne strefy, przeciążenie pompy obiegowej i kucie wylewki. <strong>Zdaj się na fachową wiedzę inżynierską i zyskaj 100% gwarancji działania.</strong></p>
        </div>
        <div class="cta-buttons-stack">
            <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="cta-btn">
                ZAMÓW PROFESJONALNY PROJEKT →
            </a>
        </div>
    </div>

    <noscript>
        <div style="padding: 30px; background: #f8fafc; border-top: 1px solid #e2e8f0; font-family: sans-serif;">
            <h3 style="margin-top:0; font-size: 18px; color: #0f172a; font-weight: bold; margin-bottom: 15px;">Fizyka oporów hydraulicznych</h3>
            <p style="font-size: 13px; color: #475569; line-height: 1.6;">
                <strong>Maksymalna długość pętli ogrzewania podłogowego</strong> zależy od średnicy rury. Dla PEX 16mm to 100m, dla 17mm to 110m, a dla 20mm to 130m. Wzór na całkowitą długość to: (Powierzchnia / Rozstaw) + (Odległość od rozdzielacza * 2). Jeśli suma przekracza limit wybranej rury, obieg bezwzględnie musi zostać podzielony na rozdzielaczu.
            </p>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // BLOKADA DOMENOWA
    var domain = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (allowedDomains.indexOf(domain) === -1) {
        var appContainer = document.getElementById('advanced-pipe-calc');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px; font-family: sans-serif;">' +
                '<span style="font-size: 48px; display: block; margin-bottom: 15px;">🔒</span>' +
                '<div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px; color: #dc2626;">Kalkulator chroniony prawem autorskim</div>' +
                '<div style="font-size: 16px; margin-bottom: 25px;">Narzędzie inżynierskie jest własnością <a href="https://projekt-ogrzewania.pl/" style="color: #dc2626; font-weight: bold; text-decoration: underline;">Projekt-Ogrzewania.pl</a></div>' +
                '<a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 14px 28px; background: #dc2626; color: #ffffff; text-decoration: none; border-radius: 12px; font-weight: 800;">PRZEJDŹ DO ORYGINAŁU</a>' +
                '</div>';
        }
        return; 
    }

    // Zmienne domyślne
    var currentLimit = 100; // rura 16mm
    var currentSpacing = 0.15; // 15cm

    function calculateAdvanced() {
        var areaEl = document.getElementById('area2');
        var distEl = document.getElementById('distance');
        if(!areaEl || !distEl) return;

        var area = parseFloat(areaEl.value);
        var distance = parseFloat(distEl.value);
        
        // UI Suwaków
        document.getElementById('v-area2').innerText = area;
        document.getElementById('v-distance').innerText = distance;

        // OBLICZENIA INŻYNIERSKIE
        var roomPipe = area / currentSpacing;
        var transitPipe = distance * 2; // zasilanie i powrót
        var totalPipe = roomPipe + transitPipe;
        
        // Ilość obiegów (nie dzielimy "na sztywno" przy 100, tylko przy aktualnym limicie rury)
        var loopsRequired = Math.ceil(totalLengthCheck(totalPipe, currentLimit, transitPipe));
        var lengthPerLoop = totalPipe / loopsRequired;

        // UI Wyników
        document.getElementById('resRoomPipe').innerText = Math.round(roomPipe) + ' m';
        document.getElementById('resTransitPipe').innerText = Math.round(transitPipe) + ' m';
        document.getElementById('resTotalPipe').innerText = Math.round(totalPipe) + ' m';
        document.getElementById('resLoopCount').innerText = loopsRequired;
        document.getElementById('resPerLoop').innerText = Math.round(lengthPerLoop);

        // Ostrzeżenia i Kolory (Sprawdzamy długość PO podziale)
        var mBox = document.getElementById('mainBox2');
        var rMsg = document.getElementById('risk-msg2');
        var boxColor = 'var(--success)';
        var msgHtml = '';

        // Ostrzeżenie o długich tranzytach
        if (loopsRequired > 1 && (transitPipe * loopsRequired) > roomPipe) {
            boxColor = 'var(--warning)';
            msgHtml = '⚠️ <strong>Długi tranzyt!</strong> Korytarz zabiera większość rury. Ponieważ musisz podzielić pokój na ' + loopsRequired + ' pętle, korytarzem poprowadzisz ' + (loopsRequired * 2) + ' rury do rozdzielacza. Rozważ montaż dodatkowego rozdzielacza bliżej pokoju.';
        } else if (lengthPerLoop > (currentLimit * 0.9)) {
            // Ostrzeżenie, gdy zbliżamy się do limitu nawet po podziale
            boxColor = 'var(--warning)';
            msgHtml = '⚠️ Pętla jest blisko granicy oporów hydraulicznych (' + currentLimit + 'm) dla tej średnicy rury. Pompa obiegowa będzie pracować pod dużym obciążeniem.';
        }

        if (msgHtml !== '') {
            rMsg.innerHTML = msgHtml;
            rMsg.style.display = 'block';
        } else {
            rMsg.style.display = 'none';
        }
        mBox.style.borderColor = boxColor;

        // Pasek Proporcji
        var barTotal = totalPipe > 0 ? totalPipe : 1;
        var actualTransitTotal = transitPipe * loopsRequired; // jeśli są 2 pętle, tranzytów jest 2x więcej
        var actualTotal = roomPipe + actualTransitTotal;
        
        document.getElementById('bar-room').style.width = ((roomPipe / actualTotal) * 100) + '%';
        document.getElementById('bar-transit').style.width = ((actualTransitTotal / actualTotal) * 100) + '%';
    }

    // Funkcja weryfikująca czy podział jest możliwy (tranzyt nie może być dłuższy niż limit)
    function totalLengthCheck(total, limit, transit) {
        if(total <= limit) return 1;
        // Wymuszony podział. Sprawdzamy czy sam tranzyt nie jest dłuższy niż limit rury
        if(transit >= limit) {
             document.getElementById('risk-msg2').innerHTML = '❌ <strong>Błąd fizyki układu!</strong> Sam dojazd do rozdzielacza (' + transit + 'm) przekracza dopuszczalny limit oporów pętli (' + limit + 'm). Musisz przenieść rozdzielacz lub zmienić rurę na grubszą.';
             document.getElementById('risk-msg2').style.display = 'block';
             document.getElementById('mainBox2').style.borderColor = 'var(--danger)';
             return 99; // Zwraca błąd
        }
        return Math.ceil(total / (limit - transit*0.2)); // Lekki margines na przyłącza
    }

    // Obsługa przycisków ŚREDNICY
    var pipeBtns = document.querySelectorAll('#pipe-selector .type-btn');
    pipeBtns.forEach(function(btn) {
        btn.addEventListener('click', function(e) {
            pipeBtns.forEach(function(b) { b.classList.remove('active'); });
            this.classList.add('active');
            currentLimit = parseInt(this.getAttribute('data-limit'));
            calculateAdvanced();
        });
    });

    // Obsługa przycisków ROZSTAWU
    var spacingBtns = document.querySelectorAll('#spacing-selector .type-btn');
    spacingBtns.forEach(function(btn) {
        btn.addEventListener('click', function(e) {
            spacingBtns.forEach(function(b) { b.classList.remove('active'); });
            this.classList.add('active');
            currentSpacing = parseFloat(this.getAttribute('data-spacing'));
            calculateAdvanced();
        });
    });

    // Nasłuchiwanie suwaków
    var areaInput = document.getElementById('area2');
    var distInput = document.getElementById('distance');
    if(areaInput) areaInput.addEventListener('input', calculateAdvanced);
    if(distInput) distInput.addEventListener('input', calculateAdvanced);

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



<style>
:root {
    --di-primary: #0f172a;
    --di-panel: #ffffff;
    --di-accent: #0284c7;
    --di-accent-light: #e0f2fe;
    --di-text: #334155;
    --di-muted: #94a3b8;
    --di-border: #e2e8f0;
    --di-bg: #f8fafc;
    --di-danger: #ef4444;
    --di-warning: #f59e0b;
}

.di-module-wrapper {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--di-panel);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--di-border);
    overflow: hidden;
}

.di-text-section {
    padding: 40px 50px 20px 50px;
}

/* Zmiana na H2 dla głównego nagłówka modułu */
.di-text-section h2 {
    color: var(--di-primary);
    font-size: 24px;
    font-weight: 900;
    margin-top: 0;
    margin-bottom: 15px;
    line-height: 1.3;
}

.di-text-section p {
    font-size: 16px;
    line-height: 1.8;
    color: var(--di-text);
    margin-bottom: 20px;
}

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

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

.di-text-section a:hover {
    color: #1e3a8a;
}

.di-alert-box {
    background: #fef2f2;
    border-left: 4px solid var(--di-danger);
    padding: 15px 20px;
    border-radius: 8px;
    color: #991b1b;
    font-size: 15px;
    font-weight: 600;
    margin-bottom: 30px;
}

/* ================= INTERAKTYWNY WIDŻET ================= */
.di-widget-container {
    margin: 0 50px 40px 50px;
    background: var(--di-bg);
    border: 1px solid var(--di-border);
    border-radius: 16px;
    display: flex;
    overflow: hidden;
}

.di-tabs-column {
    width: 35%;
    background: #ffffff;
    border-right: 1px solid var(--di-border);
    display: flex;
    flex-direction: column;
}

.di-tab-btn {
    background: transparent;
    border: none;
    border-bottom: 1px solid var(--di-border);
    padding: 20px;
    text-align: left;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: flex-start;
    gap: 12px;
    color: var(--di-muted);
}

.di-tab-btn:last-child {
    border-bottom: none;
}

.di-tab-icon {
    font-size: 20px;
    filter: grayscale(100%);
    opacity: 0.5;
    transition: 0.3s;
}

.di-tab-text {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.di-tab-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--di-text);
    transition: 0.3s;
}

.di-tab-subtitle {
    font-size: 12px;
    font-weight: 500;
}

.di-tab-btn:hover {
    background: #f1f5f9;
}

.di-tab-btn.active {
    background: var(--di-accent-light);
    border-left: 4px solid var(--di-accent);
    padding-left: 16px; /* Kompensacja border-left */
}

.di-tab-btn.active .di-tab-icon {
    filter: grayscale(0%);
    opacity: 1;
}

.di-tab-btn.active .di-tab-title {
    color: var(--di-accent);
}

.di-tab-btn.active .di-tab-subtitle {
    color: var(--di-primary);
}

/* Panele z Treścią */
.di-content-column {
    width: 65%;
    padding: 30px;
    position: relative;
}

.di-panel {
    display: none;
    animation: diFadeIn 0.4s ease;
}

.di-panel.active {
    display: block;
}

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

.di-panel-header {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 15px;
}

/* Styl dla H3 w panelu */
h3.di-panel-title {
    margin: 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--di-primary);
}

.di-panel-badge {
    background: var(--di-primary);
    color: #ffffff;
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    padding: 4px 10px;
    border-radius: 6px;
    letter-spacing: 1px;
}

.di-panel-badge.warning {
    background: var(--di-warning);
    color: #ffffff;
}

.di-panel-content {
    font-size: 15px;
    color: var(--di-text);
    line-height: 1.7;
    margin-bottom: 20px;
}

.di-impact-box {
    background: #ffffff;
    border: 1px dashed var(--di-accent);
    padding: 15px 20px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    gap: 15px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.02);
}

.di-impact-icon {
    font-size: 28px;
}

/* Zmiana na H4 dla skutków */
.di-impact-text h4 {
    display: block;
    font-size: 15px;
    color: var(--di-primary);
    margin: 0 0 3px 0;
    font-weight: bold;
}

.di-impact-text span {
    font-size: 13px;
    color: var(--di-muted);
}

@media (max-width: 768px) {
    .di-text-section { padding: 30px 25px 10px 25px; }
    .di-widget-container { margin: 20px 25px 30px 25px; flex-direction: column; }
    .di-tabs-column { width: 100%; border-right: none; border-bottom: 1px solid var(--di-border); flex-direction: row; overflow-x: auto; white-space: nowrap; }
    .di-tab-btn { border-bottom: none; border-right: 1px solid var(--di-border); min-width: 220px; }
    .di-tab-btn.active { border-left: none; border-bottom: 4px solid var(--di-accent); padding-left: 20px; padding-bottom: 16px; }
    .di-content-column { width: 100%; padding: 25px; }
}
</style>

<div class="di-module-wrapper" id="app-design-impact">

    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org",
        "@type": "WebApplication",
        "name": "Analizator Wpływu Błędów na Projekt Ogrzewania Podłogowego",
        "description": "Interaktywny moduł edukacyjny analizujący kluczowe błędy infrastrukturalne (lokalizacja rozdzielacza, średnica pionu, OZC) i ich bezpośredni, destrukcyjny wpływ na maksymalną dostępną długość pętli grzewczej w pomieszczeniach.",
        "applicationCategory": "EducationalApplication",
        "operatingSystem": "All",
        "url": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#wplyw-na-projekt",
        "license": "https://projekt-ogrzewania.pl/",
        "offers": {
          "@type": "Offer",
          "price": "0",
          "priceCurrency": "PLN"
        },
        "creator": {
          "@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/"
          ]
        },
        "featureList": [
          "Wizualizacja straty długości roboczej pętli przez długie tranzyty",
          "Analiza spadku ciśnienia spowodowanego zbyt cienką rurą zasilającą rozdzielacz",
          "Korelacja gęstości rozstawu rur (OZC) z koniecznością podziału obiegów na mniejsze"
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "Dataset",
        "name": "Wytyczne projektowe: Zależności infrastrukturalne w ogrzewaniu podłogowym",
        "description": "Zbiór zasad inżynierskich określających parametry urządzeń współpracujących, niezbędnych do utrzymania nominalnej długości pętli grzewczych.",
        "license": "https://projekt-ogrzewania.pl/",
        "variableMeasured": [
          {
            "@type": "PropertyValue",
            "name": "Średnica rury zasilającej (Pion) dla >8 pętli",
            "value": "Min. 28 mm (Miedź) / 32 mm (PEX/PP)",
            "description": "Zapobiega generowaniu dodatkowych oporów przed wejściem wody w pętle."
          },
          {
            "@type": "PropertyValue",
            "name": "Strata długości na tranzytach",
            "value": "Nawet 20-30 metrów",
            "description": "Fizyczna strata rury wynikająca ze złej lokalizacji rozdzielacza."
          },
          {
            "@type": "PropertyValue",
            "name": "Wpływ OZC na rozstaw",
            "value": "Wysokie zapotrzebowanie (np. 80W/m2) wymusza zagęszczenie do 10 cm",
            "description": "Zagęszczenie drastycznie zwiększa metraż pętli, wymuszając jej skrócenie i podział."
          }
        ],
        "creator": {
          "@type": "Person",
          "name": "Robert Kucharski",
          "sameAs": [
            "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
            "https://www.linkedin.com/in/robert-kucharski-38069b48/"
          ]
        }
      }
    ]
    </script>

    <div class="di-text-section">
        <h2>Jak to wpływa na projekt ogrzewania podłogowego i OZC?</h2>
        <div class="di-alert-box">
            Projektowanie bez uwzględnienia maksymalnej długości pętli ogrzewania podłogowego to absolutnie najczęstszy powód reklamacji wydajnościowych w nowych budynkach.
        </div>
        <p>Błędy popełnione na etapie koncepcji rzutują na cały układ hydrauliczny. Skutki nieprzemyślanej infrastruktury towarzyszącej niemal zawsze objawiają się tym samym: koniecznością ratunkowego skracania pętli lub drastycznym wzrostem rachunków za prąd z powodu przeciążenia pompy obiegowej.</p>
        <p>Przeanalizujmy 3 najgroźniejsze błędy i ich wpływ na obwody grzewcze w interaktywnym panelu poniżej:</p>
    </div>

    <div class="di-widget-container">
        
        <div class="di-tabs-column">
            <button class="di-tab-btn active" data-target="panel-lokalizacja">
                <span class="di-tab-icon">🎯</span>
                <div class="di-tab-text">
                    <span class="di-tab-title">Lokalizacja rozdzielacza</span>
                    <span class="di-tab-subtitle">Problem asymetrii</span>
                </div>
            </button>
            <button class="di-tab-btn" data-target="panel-pion">
                <span class="di-tab-icon">🚰</span>
                <div class="di-tab-text">
                    <span class="di-tab-title">Średnica podejść (Pion)</span>
                    <span class="di-tab-subtitle">Dławienie na starcie</span>
                </div>
            </button>
            <button class="di-tab-btn" data-target="panel-ozc">
                <span class="di-tab-icon">🔥</span>
                <div class="di-tab-text">
                    <span class="di-tab-title">OZC a rozstaw rur</span>
                    <span class="di-tab-subtitle">Zapotrzebowanie na moc</span>
                </div>
            </button>
        </div>

        <div class="di-content-column">
            
            <div class="di-panel active" id="panel-lokalizacja">
                <div class="di-panel-header">
                    <span class="di-panel-badge warning">Błąd Topologii</span>
                    <h3 class="di-panel-title">Lokalizacja rozdzielacza</h3>
                </div>
                <div class="di-panel-content">
                    Lokalizacja szafki rozdzielaczowej <strong>musi być centralna</strong> względem ogrzewanej kondygnacji. Jeśli rozdzielacz zostanie upchnięty na jednym, skrajnym końcu domu (np. w garażu), pętle prowadzące do najdalszych pokoi tracą ogromną ilość swojego limitu na same podejścia – tzw. tranzyty biegnące przez korytarz.
                </div>
                <div class="di-impact-box">
                    <span class="di-impact-icon">✂️</span>
                    <div class="di-impact-text">
                        <h4>Skutek dla długości pętli: Drastyczne skrócenie</h4>
                        <span>Tracisz 20-30 metrów z dopuszczalnego limitu roboczego pętli, jeszcze zanim woda w ogóle wpłynie do docelowego pokoju.</span>
                    </div>
                </div>
            </div>

            <div class="di-panel" id="panel-pion">
                <div class="di-panel-header">
                    <span class="di-panel-badge">Błąd Hydrauliczny</span>
                    <h3 class="di-panel-title">Średnica podejść (Pion)</h3>
                </div>
                <div class="di-panel-content">
                    Dla dużych rozdzielaczy obsługujących powyżej 8 pętli, to <a href="https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/">jaka średnica rury zasilającej rozdzielacz (pion)</a> zostanie użyta, jest kluczowe. Przewód ten musi mieć średnicę <strong>minimum 28 mm (dla miedzi/stali) lub 32 mm (dla systemów PEX/PP)</strong>. Zbyt cienki pion dławi całą instalację na samym początku.
                </div>
                <div class="di-impact-box">
                    <span class="di-impact-icon">🛑</span>
                    <div class="di-impact-text">
                        <h4>Skutek dla pętli: Kaskadowy spadek ciśnienia</h4>
                        <span>Wąski pion generuje ogromne opory wstępne. Pompa "zużywa" swoją moc by przepchnąć wodę do belki, przez co w najdłuższych pętlach w pokojach woda niemal stoi w miejscu.</span>
                    </div>
                </div>
            </div>

            <div class="di-panel" id="panel-ozc">
                <div class="di-panel-header">
                    <span class="di-panel-badge warning">Błąd Bilansu</span>
                    <h3 class="di-panel-title">OZC a rozstaw rur</h3>
                </div>
                <div class="di-panel-content">
                    Jeśli z wyliczeń OZC wynika, że w danym pokoju musimy dostarczyć np. aż 80 W/m², a my planujemy ułożyć rurę co 15 cm, zasilanie musiałoby mieć ekstremalnie wysoką temperaturę (co jest zabójcze dla kosztów prądu przy pompie ciepła). Rozwiązaniem jest zmniejszenie <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstawu rur</a> do 10 cm. 
                </div>
                <div class="di-impact-box">
                    <span class="di-impact-icon">➗</span>
                    <div class="di-impact-text">
                        <h4>Skutek dla pętli: Wymuszony podział strefy</h4>
                        <span>Zagęszczenie rozstawu błyskawicznie "zjada" limit metrów. Pokój, który przy rozstawie 15 cm był na jednej pętli, przy 10 cm zmusza nas do podziału na dwa osobne obiegi i dodania sekcji.</span>
                    </div>
                </div>
            </div>

        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie domenowe (bez tagów H2/H3/H4 w komunikacie)
    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-design-impact');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px 25px; text-align: center; background: #0f172a; color: #f8fafc; font-family: sans-serif;">
                    <span style="font-size: 40px; display: block; margin-bottom: 10px;">🔒</span>
                    <div style="font-weight: 900; font-size: 20px; margin-bottom: 10px; color: #0ea5e9;">Narzędzie Chronione</div>
                    <div style="font-size: 14px; margin-bottom: 20px; color: #94a3b8;">Ten interaktywny moduł edukacyjny jest chroniony prawem autorskim i należy do serwisu Projekt-Ogrzewania.pl.</div>
                    <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 10px 20px; background: #0ea5e9; color: white; text-decoration: none; border-radius: 8px; font-weight: bold; font-size: 13px;">ZOBACZ ORYGINAŁ</a>
                </div>
            `;
            return; 
        }
    }

    // Logika przełączania zakładek
    const tabBtns = document.querySelectorAll('.di-tab-btn');
    const panels = document.querySelectorAll('.di-panel');

    tabBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            const targetId = this.getAttribute('data-target');

            // Reset stanów
            tabBtns.forEach(b => b.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Aktywacja wybranych
            this.classList.add('active');
            const targetPanel = document.getElementById(targetId);
            if (targetPanel) {
                targetPanel.classList.add('active');
            }
        });
    });
});
</script>



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

h4.risk-label { 
    color: #64748b; 
    margin: 0;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
}

.risk-value { 
    font-size: 16px; 
    font-weight: 900; 
}

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

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

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

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

<div class="premium-download-box" id="download-app-lock">

    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org",
        "@type": "WebApplication",
        "name": "Audytor Parametrów Pętli Ogrzewania Podłogowego",
        "description": "Interaktywna check-lista inżynierska pozwalająca ocenić ryzyko awarii hydraulicznej i termicznej instalacji na podstawie weryfikacji 5 kluczowych punktów dotyczących długości obiegów grzewczych.",
        "applicationCategory": "EngineeringCalculator",
        "operatingSystem": "All",
        "url": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#audyt",
        "license": "https://projekt-ogrzewania.pl/",
        "creator": {
          "@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/"
          ]
        },
        "featureList": [
          "Weryfikacja maksymalnej długości pętli (100 mb dla 16mm)",
          "Kontrola różnicy długości pętli na jednym rozdzielaczu (<15%)",
          "Kalkulacja ryzyka awarii na podstawie braków w dokumentacji wykonawczej"
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "Dataset",
        "name": "Wytyczne projektowe: Ogrzewanie Podłogowe (Infografika &#038; PDF)",
        "description": "Zestawienie twardych parametrów projektowych (ciśnienia, długości, temperatury) w formie skondensowanej infografiki edukacyjnej oraz materiału PDF gotowego do druku.",
        "license": "https://projekt-ogrzewania.pl/",
        "creator": {
          "@type": "Person",
          "name": "Robert Kucharski",
          "sameAs": [
            "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
            "https://www.linkedin.com/in/robert-kucharski-38069b48/"
          ]
        }
      },
      {
        "@context": "https://schema.org",
        "@type": "ImageObject",
        "author": {
          "@type": "Person",
          "name": "Robert Kucharski"
        },
        "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Maksymalna-dlugosc-petli-ogrzewania-podlogowego-1.webp",
        "description": "Kompleksowa infografika techniczna przedstawiająca wytyczne i najczęstsze błędy dotyczące projektowania długości pętli ogrzewania podłogowego, w tym problem oporów hydraulicznych i spadku temperatury ΔT.",
        "name": "Infografika: Maksymalna długość pętli ogrzewania podłogowego"
      }
    ]
    </script>
    
    <div class="download-header">
        <h2 class="download-header-title">Zabierz tę wiedzę na budowę!</h2>
        <p>Nie pozwól, aby wykonawca zbagatelizował zasady fizyki. Pobierz darmową infografikę w formacie PDF lub sprawdź status zaprojektowanej instalacji w poniższym mini-audycie inżynierskim.</p>
    </div>

    <div class="download-grid">
        
        <div class="download-media-section">
            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Maksymalna-dlugosc-petli-ogrzewania-podlogowego-1.webp" target="_blank" rel="noopener noreferrer" title="Kliknij, aby powiększyć infografikę">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Maksymalna-dlugosc-petli-ogrzewania-podlogowego-1.webp" 
                     alt="Infografika techniczna: Maksymalna długość pętli ogrzewania podłogowego, optymalne parametry pracy i najczęstsze błędy wykonawcze." 
                     class="infographic-preview" loading="lazy">
            </a>
            
            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Maksymalna-dlugosc-petli-ogrzewania-podlogowego.pdf" 
               class="btn-download-pdf" target="_blank" rel="noopener noreferrer">
                <span>📄 Pobierz Poradnik PDF</span>
            </a>
            <div class="download-hint">Gotowy do druku format A4 dla Ciebie i instalatora.</div>
        </div>

        <div class="audit-section">
            <h3 class="audit-title"><span>🔍</span> Szybki audyt projektu</h3>
            
            <div class="checklist-container">
                <div class="audit-checkbox-row" onclick="toggleAudit(this)">
                    <div class="custom-checkbox"></div>
                    <div class="audit-label">Długość pojedynczej pętli nie przekracza granicy 100 mb.</div>
                </div>
                <div class="audit-checkbox-row" onclick="toggleAudit(this)">
                    <div class="custom-checkbox"></div>
                    <div class="audit-label">Różnica długości między obiegami na rozdzielaczu wynosi poniżej 15%.</div>
                </div>
                <div class="audit-checkbox-row" onclick="toggleAudit(this)">
                    <div class="custom-checkbox"></div>
                    <div class="audit-label">Do limitu długości pętli doliczono odcinki dobiegowe (tranzyty).</div>
                </div>
                <div class="audit-checkbox-row" onclick="toggleAudit(this)">
                    <div class="custom-checkbox"></div>
                    <div class="audit-label">Rozdzielacz wyposażony jest w rotametry do równoważenia.</div>
                </div>
                <div class="audit-checkbox-row" onclick="toggleAudit(this)">
                    <div class="custom-checkbox"></div>
                    <div class="audit-label">Zapotrzebowanie cieplne (OZC) dostosowano do rozstawu rur.</div>
                </div>
            </div>

            <div class="risk-meter-box">
                <div class="risk-header">
                    <h4 class="risk-label">Ryzyko awarii hydraulicznej:</h4>
                    <span class="risk-value" id="risk-percent" style="color: var(--danger);">100%</span>
                </div>
                <div class="risk-bar-container">
                    <div class="risk-bar-fill" id="risk-bar" style="width: 100%; background-color: var(--danger);"></div>
                </div>
                <div class="risk-message" id="risk-msg" style="background: #fee2e2; color: #991b1b; border: 1px solid #fca5a5;">
                    ⚠️ KRYTYCZNE RYZYKO. Instalacja zaprojektowana "na oko". Zignorowanie praw fizyki i oporów doprowadzi do zimnych stref. Pobierz PDF!
                </div>
            </div>

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

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

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

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

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

        // Logika zmiany kolorów i komunikatów
        if (riskLevel === 100) {
            riskPercentEl.style.color = 'var(--danger)';
            riskBarEl.style.backgroundColor = 'var(--danger)';
            riskMsgEl.style.background = '#fee2e2';
            riskMsgEl.style.color = '#991b1b';
            riskMsgEl.style.borderColor = '#fca5a5';
            riskMsgEl.innerHTML = '⚠️ KRYTYCZNE RYZYKO. Instalacja zaprojektowana "na oko". Zignorowanie oporów doprowadzi do zimnych stref. Pobierz PDF!';
        } else if (riskLevel >= 60) {
            riskPercentEl.style.color = 'var(--danger)';
            riskBarEl.style.backgroundColor = 'var(--danger)';
            riskMsgEl.style.background = '#fee2e2';
            riskMsgEl.style.color = '#991b1b';
            riskMsgEl.style.borderColor = '#fca5a5';
            riskMsgEl.innerHTML = '⚠️ WYSOKIE RYZYKO. Projekt ma istotne braki hydrauliczne. Pompa obiegowa będzie pracować pod dużym obciążeniem.';
        } else if (riskLevel > 0) {
            riskPercentEl.style.color = 'var(--warning)';
            riskBarEl.style.backgroundColor = 'var(--warning)';
            riskMsgEl.style.background = '#ffedd5';
            riskMsgEl.style.color = '#9a3412';
            riskMsgEl.style.borderColor = '#fdba74';
            riskMsgEl.innerHTML = '⚡ ŚREDNIE RYZYKO. Jesteś na dobrej drodze, ale upewnij się co do pozostałych punktów, by uniknąć problemów z przepływem.';
        } else {
            riskPercentEl.style.color = 'var(--success)';
            riskBarEl.style.backgroundColor = 'var(--success)';
            riskMsgEl.style.background = '#dcfce7';
            riskMsgEl.style.color = '#166534';
            riskMsgEl.style.borderColor = '#86efac';
            riskMsgEl.innerHTML = '✅ INSTALACJA BEZPIECZNA! Twój projekt spełnia rygorystyczne normy inżynierskie. Układ zadziała bezbłędnie.';
        }
    }
</script>



<style>
:root {
    --faq-primary: #0f172a;
    --faq-panel: #ffffff;
    --faq-accent: #0284c7;
    --faq-accent-light: #e0f2fe;
    --faq-text: #334155;
    --faq-muted: #94a3b8;
    --faq-border: #e2e8f0;
    --faq-bg: #f8fafc;
}

.faq-module-wrapper {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--faq-panel);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--faq-border);
    overflow: hidden;
}

.faq-header-section {
    padding: 40px 50px 20px 50px;
    text-align: center;
}

/* Zmiana na H2 dla głównego nagłówka */
.faq-header-section h2 {
    color: var(--faq-primary);
    font-size: 26px;
    font-weight: 900;
    margin-top: 0;
    margin-bottom: 15px;
    line-height: 1.3;
}

.faq-header-section p {
    font-size: 16px;
    line-height: 1.6;
    color: var(--faq-muted);
    max-width: 600px;
    margin: 0 auto;
}

/* ================= INTERAKTYWNY AKORDION ================= */
.faq-accordion-container {
    padding: 0 50px 40px 50px;
}

.faq-item {
    border: 1px solid var(--faq-border);
    border-radius: 16px;
    margin-bottom: 15px;
    background: var(--faq-panel);
    transition: all 0.3s ease;
    overflow: hidden;
}

.faq-item:last-child {
    margin-bottom: 0;
}

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

.faq-item.active {
    border-color: var(--faq-accent);
    box-shadow: 0 8px 20px rgba(2, 132, 199, 0.1);
}

.faq-question {
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    padding: 20px 25px;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
    transition: 0.3s;
    color: var(--faq-primary);
}

/* Zmiana na H3 dla nagłówków pytań z zerowaniem marginesów dla dopasowania */
h3.faq-question-title {
    font-size: 16px;
    font-weight: 800;
    margin: 0;
    color: inherit;
    line-height: 1.4;
}

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

.faq-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #f1f5f9;
    color: var(--faq-accent);
    font-size: 18px;
    flex-shrink: 0;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background 0.3s;
}

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

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

.faq-answer {
    padding: 0 25px 25px 25px;
    font-size: 15px;
    line-height: 1.7;
    color: var(--faq-text);
    border-top: 1px dashed transparent;
}

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

.faq-answer strong {
    color: var(--faq-primary);
}

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

.faq-answer a:hover {
    color: #1e3a8a;
}

@media (max-width: 768px) {
    .faq-header-section { padding: 30px 25px 20px 25px; }
    .faq-accordion-container { padding: 0 25px 30px 25px; }
    .faq-question { padding: 15px 20px; }
    h3.faq-question-title { font-size: 15px; }
    .faq-answer { padding: 0 20px 20px 20px; font-size: 14px; }
    .faq-icon { width: 28px; height: 28px; font-size: 16px; }
}
</style>

<div class="faq-module-wrapper" id="app-faq-interactive">

    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org",
        "@type": "FAQPage",
        "mainEntity": [
          {
            "@type": "Question",
            "name": "Czy pętla 120 m rury 16 mm będzie grzać?",
            "acceptedAnswer": {
              "@type": "Answer",
              "text": "Będzie, ale znacznie słabiej niż pozostałe. Pompa obiegowa może nie być w stanie wymusić tam przepływu powyżej 0,5–1,0 l/min, co przy dużych mrozach spowoduje niedogrzanie pomieszczenia i dyskomfort odczuwalny jako chłodniejsze pasy na podłodze."
            }
          },
          {
            "@type": "Question",
            "name": "Co zrobić, gdy wykonawca ułożył już pętlę 140 m?",
            "acceptedAnswer": {
              "@type": "Answer",
              "text": "Jedynym ratunkiem jest montaż dedykowanej, mocniejszej pompy obiegowej (np. 25-80 zamiast standardowej 25-40/60) tylko dla tego rozdzielacza oraz bardzo mocne zdławienie pozostałych pętli. Wiąże się to jednak z wyższym zużyciem energii elektrycznej przez pompę."
            }
          },
          {
            "@type": "Question",
            "name": "Jaki jest maksymalny koszt błędnego zaprojektowania pętli?",
            "acceptedAnswer": {
              "@type": "Answer",
              "text": "W skali 15 lat eksploatacji, praca pompy ciepła na wyższych parametrach zasilania (wymuszona przez zbyt długie pętle i wysokie opory) może zwiększyć rachunki za prąd o 15–20%, co dla domu 150 m² oznacza stratę rzędu 12 000 – 18 000 PLN."
            }
          },
          {
            "@type": "Question",
            "name": "Czy rury dobiegowe (tranzyty) wliczają się w maksymalną długość pętli ogrzewania podłogowego?",
            "acceptedAnswer": {
              "@type": "Answer",
              "text": "Tak, i to jest najczęstszy błąd instalatorski! Odcinek od rozdzielacza do pokoju (zasilanie i powrót) stawia taki sam opór hydrauliczny i bezwzględnie musi być odjęty od limitu. Jeśli limit rury 16 mm to 100 m, a pokój jest 15 m od rozdzielacza (30 m rury w obie strony), na samo pomieszczenie zostaje Ci tylko 70 metrów bieżących."
            }
          },
          {
            "@type": "Question",
            "name": "Czy można połączyć dwie krótsze rury złączką, aby uzyskać maksymalną długość pętli?",
            "acceptedAnswer": {
              "@type": "Answer",
              "text": "Bezwzględnie nie. Maksymalna długość pętli ogrzewania podłogowego musi być ułożona z jednego, ciągłego odcinka. Złączki zaciskowe schowane pod wylewką to nie tylko potężne ryzyko kosztownego wycieku w przyszłości, ale też drastyczny wzrost oporów miejscowych, które mogą całkowicie zablokować przepływ."
            }
          }
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "WebApplication",
        "name": "Interaktywny Panel Ekspercki FAQ - Ogrzewanie Podłogowe",
        "description": "Dynamiczny moduł akordionowy odpowiadający na krytyczne pytania inwestorów dotyczące przekraczania maksymalnej długości pętli, błędów wykonawczych i doboru elementów hydraulicznych.",
        "applicationCategory": "EducationalApplication",
        "operatingSystem": "All",
        "url": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#faq",
        "license": "https://projekt-ogrzewania.pl/",
        "offers": {
          "@type": "Offer",
          "price": "0",
          "priceCurrency": "PLN"
        },
        "creator": {
          "@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/"
          ]
        },
        "featureList": [
          "Rozwijane odpowiedzi na problemy hydrauliczne",
          "Kalkulacja strat finansowych przy złym projekcie",
          "Rozwiązania ratunkowe dla źle wykonanej instalacji"
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "Dataset",
        "name": "Baza Wiedzy Inwestora: Błędy długości pętli",
        "description": "Zbiór ustrukturyzowanych danych rozwiązujących najczęstsze problemy na budowach związane ze zbyt długimi obiegami grzewczymi.",
        "license": "https://projekt-ogrzewania.pl/",
        "variableMeasured": [
          {
            "@type": "PropertyValue",
            "name": "Koszt błędu na 15 lat (Dom 150m2)",
            "value": "12 000 - 18 000 PLN"
          },
          {
            "@type": "PropertyValue",
            "name": "Rozwiązanie ratunkowe dla pętli 140m",
            "value": "Pompa 25-80 + mocne dławienie pozostałych pętli"
          }
        ],
        "creator": {
          "@type": "Person",
          "name": "Robert Kucharski",
          "sameAs": [
            "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
            "https://www.linkedin.com/in/robert-kucharski-38069b48/"
          ]
        }
      }
    ]
    </script>

    <div class="faq-header-section">
        <h2>FAQ – Najczęstsze pytania inwestorów</h2>
        <p>Rozwiewamy inżynierskie mity i odpowiadamy na pytania prosto z placu budowy. Sprawdź, z czym najczęściej mierzą się inwestorzy.</p>
    </div>

    <div class="faq-accordion-container">
        
        <div class="faq-item">
            <button class="faq-question">
                <h3 class="faq-question-title">Czy pętla 120 m rury 16 mm będzie grzać?</h3>
                <span class="faq-icon">↓</span>
            </button>
            <div class="faq-answer-wrapper">
                <div class="faq-answer">
                    Będzie, ale znacznie słabiej niż pozostałe. <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">Pompa obiegowa</a> może nie być w stanie wymusić tam przepływu powyżej 0,5–1,0 l/min, co przy dużych mrozach spowoduje niedogrzanie pomieszczenia i dyskomfort odczuwalny jako chłodniejsze pasy na podłodze.
                </div>
            </div>
        </div>

        <div class="faq-item">
            <button class="faq-question">
                <h3 class="faq-question-title">Co zrobić, gdy wykonawca ułożył już pętlę 140 m?</h3>
                <span class="faq-icon">↓</span>
            </button>
            <div class="faq-answer-wrapper">
                <div class="faq-answer">
                    Jedynym ratunkiem jest montaż dedykowanej, mocniejszej pompy obiegowej (np. 25-80 zamiast standardowej 25-40/60) tylko dla tego rozdzielacza oraz bardzo mocne zdławienie (kryzowanie) pozostałych, krótszych pętli. Wiąże się to jednak z zauważalnie wyższym zużyciem energii elektrycznej przez pompę przez cały okres eksploatacji.
                </div>
            </div>
        </div>

        <div class="faq-item">
            <button class="faq-question">
                <h3 class="faq-question-title">Jaki jest maksymalny koszt błędnego zaprojektowania pętli?</h3>
                <span class="faq-icon">↓</span>
            </button>
            <div class="faq-answer-wrapper">
                <div class="faq-answer">
                    W skali 15 lat eksploatacji, praca <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a> na wymuszonych, wyższych parametrach zasilania (aby przebić wysokie opory długich pętli) może zwiększyć rachunki za prąd o 15–20%. Dla standardowego domu o powierzchni 150 m² oznacza to realną stratę finansową rzędu <strong>12 000 – 18 000 PLN</strong>.
                </div>
            </div>
        </div>

        <div class="faq-item">
            <button class="faq-question">
                <h3 class="faq-question-title">Czy rury dobiegowe (tranzyty) wliczają się w maksymalną długość pętli?</h3>
                <span class="faq-icon">↓</span>
            </button>
            <div class="faq-answer-wrapper">
                <div class="faq-answer">
                    <strong>Tak, i to jest najczęstszy błąd instalatorski!</strong> Odcinek od rozdzielacza do pokoju (zasilanie i powrót) stawia taki sam opór hydrauliczny i bezwzględnie musi być odjęty od limitu roboczego pomieszczenia. Jeśli limit rury 16 mm to 100 m, a pokój jest 15 m od rozdzielacza (30 m rury w obie strony), na same meandry w pokoju zostaje Ci tylko 70 metrów bieżących.
                </div>
            </div>
        </div>

        <div class="faq-item">
            <button class="faq-question">
                <h3 class="faq-question-title">Czy można połączyć rury złączką pod wylewką, aby uzyskać całą pętlę?</h3>
                <span class="faq-icon">↓</span>
            </button>
            <div class="faq-answer-wrapper">
                <div class="faq-answer">
                    <strong>Bezwzględnie nie.</strong> Maksymalna długość pętli ogrzewania podłogowego musi być zawsze ułożona z jednego, ciągłego odcinka rury (od belki zasilającej do belki powrotnej). Złączki zaprasowywane lub skręcane schowane pod jastrychem to nie tylko potężne ryzyko kosztownego wycieku w przyszłości, ale też drastyczny wzrost oporów miejscowych, które mogą całkowicie zaburzyć hydraulikę i zablokować przepływ.
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie domenowe (BEZ TAGÓW NAGŁÓWKOWYCH - H2, H3 itp.)
    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-faq-interactive');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px 25px; text-align: center; background: #0f172a; color: #f8fafc; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 10px;">🔒</div>
                    <div style="font-weight: 900; font-size: 20px; margin-bottom: 10px; color: #0ea5e9;">Treść Chroniona Licencją</div>
                    <div style="font-size: 14px; margin-bottom: 20px; color: #94a3b8;">Baza wiedzy FAQ stanowi autorską własność intelektualną serwisu Projekt-Ogrzewania.pl. Kopiowanie modułów interaktywnych jest zabronione.</div>
                    <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 10px 20px; background: #0ea5e9; color: white; text-decoration: none; border-radius: 8px; font-weight: bold; font-size: 13px;">PRZEJDŹ DO ORYGINAŁU</a>
                </div>
            `;
            return; 
        }
    }

    // Logika Akordionu FAQ
    const faqItems = document.querySelectorAll('.faq-item');

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

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

            // Zwiń wszystkie inne (opcjonalne, dla zachowania porządku)
            faqItems.forEach(otherItem => {
                otherItem.classList.remove('active');
                otherItem.querySelector('.faq-answer-wrapper').style.maxHeight = null;
            });

            // Rozwiń/zwiń kliknięty
            if (!isActive) {
                item.classList.add('active');
                answerWrapper.style.maxHeight = answerWrapper.scrollHeight + "px";
            }
        });
    });
});
</script>



<style>
:root {
    --sum-primary: #0f172a;
    --sum-accent: #0284c7;
    --sum-bg: #f0f9ff;
    --sum-card: #ffffff;
    --sum-border: #e2e8f0;
    --sum-text: #334155;
    --sum-cta-bg: #0f172a;
}

.final-summary-module {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--sum-bg);
    border-radius: 32px;
    padding: 50px;
    border: 1px solid var(--sum-border);
    position: relative;
    overflow: hidden;
}

/* Dekoracja tła */
.final-summary-module::before {
    content: '∑';
    position: absolute;
    top: -20px;
    right: 20px;
    font-size: 150px;
    font-weight: 900;
    color: rgba(2, 132, 199, 0.05);
    z-index: 0;
}

.sum-content {
    position: relative;
    z-index: 1;
}

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

.sum-badge {
    display: inline-block;
    padding: 6px 16px;
    background: var(--sum-accent);
    color: #ffffff;
    border-radius: 50px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 15px;
}

/* Zmiana na H2 i wyzerowanie domyślnych marginesów przeglądarki */
h2.sum-title {
    font-size: 32px;
    font-weight: 900;
    color: var(--sum-primary);
    margin: 0 0 15px 0;
    line-height: 1.2;
}

/* Karty podsumowania */
.sum-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-bottom: 40px;
}

.sum-card {
    background: var(--sum-card);
    border: 1px solid var(--sum-border);
    padding: 25px;
    border-radius: 20px;
    text-align: center;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.sum-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 25px rgba(15, 23, 42, 0.08);
}

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

.sum-card-val {
    display: block;
    font-size: 24px;
    font-weight: 900;
    color: var(--sum-accent);
    margin-bottom: 5px;
}

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

/* Sekcja CTA Blog */
.sum-blog-cta {
    background: var(--sum-cta-bg);
    border-radius: 24px;
    padding: 40px;
    color: #ffffff;
    display: flex;
    align-items: center;
    gap: 40px;
    box-shadow: 0 20px 40px rgba(15, 23, 42, 0.2);
}

.sum-cta-text {
    flex: 1;
}

/* Zmiana na H3 z zerowaniem domyślnych marginesów */
h3.sum-cta-title {
    font-size: 22px;
    font-weight: 800;
    margin: 0 0 12px 0;
    line-height: 1.3;
}

.sum-cta-text p {
    font-size: 15px;
    line-height: 1.6;
    color: #94a3b8;
    margin: 0;
}

.sum-cta-btn-wrap {
    flex-shrink: 0;
}

.sum-cta-link {
    display: inline-block;
    padding: 18px 32px;
    background: var(--sum-accent);
    color: #ffffff;
    text-decoration: none;
    border-radius: 14px;
    font-weight: 800;
    font-size: 15px;
    transition: all 0.3s ease;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.sum-cta-link:hover {
    background: #0ea5e9;
    transform: scale(1.05);
    box-shadow: 0 0 20px rgba(2, 132, 199, 0.4);
}

@media (max-width: 850px) {
    .sum-grid { grid-template-columns: 1fr; }
    .sum-blog-cta { flex-direction: column; text-align: center; padding: 30px; }
    .final-summary-module { padding: 30px 20px; }
    h2.sum-title { font-size: 26px; }
}
</style>

<div class="final-summary-module" id="app-final-summary">

    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org",
        "@type": "WebApplication",
        "name": "Kompendium Techniczne: Limity Pętli Grzewczych",
        "description": "Finalne podsumowanie inżynierskie określające maksymalną długość pętli ogrzewania podłogowego dla różnych standardów rur PEX/PERT.",
        "applicationCategory": "EducationalApplication",
        "operatingSystem": "All",
        "url": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#podsumowanie",
        "license": "https://projekt-ogrzewania.pl/",
        "creator": {
          "@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/"
          ]
        }
      },
      {
        "@context": "https://schema.org",
        "@type": "Dataset",
        "name": "Zasady Projektowe Podłogówki 2026",
        "description": "Zbiór kluczowych parametrów i limitów dla instalacji ogrzewania płaszczyznowego opracowany przez Roberta Kucharskiego.",
        "license": "https://projekt-ogrzewania.pl/",
        "variableMeasured": [
          {
            "@type": "PropertyValue",
            "name": "Maksymalna długość pętli 16mm",
            "value": "100 m"
          },
          {
            "@type": "PropertyValue",
            "name": "Maksymalna różnica długości (Zasada Kucharskiego)",
            "value": "15%"
          },
          {
            "@type": "PropertyValue",
            "name": "Optymalne Delta T (ΔT)",
            "value": "5K - 7K"
          }
        ],
        "creator": {
          "@type": "Person",
          "name": "Robert Kucharski"
        }
      }
    ]
    </script>

    <div class="sum-content">
        <div class="sum-header">
            <span class="sum-badge">Kluczowe wnioski</span>
            <h2 class="sum-title">Pamiętaj: Fizyka instalacji nie wybacza dróg na skróty</h2>
        </div>

        <div class="sum-grid">
            <div class="sum-card">
                <span class="sum-card-icon">📏</span>
                <span class="sum-card-val">100 mb</span>
                <span class="sum-card-label">Limit rury 16mm</span>
            </div>
            <div class="sum-card">
                <span class="sum-card-icon">⚖️</span>
                <span class="sum-card-val">15%</span>
                <span class="sum-card-label">Max. różnica pętli</span>
            </div>
            <div class="sum-card">
                <span class="sum-card-icon">🌡️</span>
                <span class="sum-card-val">5K - 10K</span>
                <span class="sum-card-label">Optymalne ΔT</span>
            </div>
        </div>

        <div class="sum-blog-cta">
            <div class="sum-cta-text">
                <h3 class="sum-cta-title">O ogrzewaniu podłogowym wiemy absolutnie wszystko.</h3>
                <p>Niezależnie od tego, czy szukasz informacji o <strong>pompach ciepła</strong>, chcesz zrozumieć jak działa <strong>rekuperacja</strong>, czy zastanawiasz się nad wyborem idealnej wylewki – na naszym blogu znajdziesz setki eksperckich artykułów podpartych projektami OZC i realizacjami z placów budowy.</p>
            </div>
            <div class="sum-cta-btn-wrap">
                <a href="https://projekt-ogrzewania.pl/blog/" class="sum-cta-link">
                    Odkryj wiedzę na blogu →
                </a>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // ZABEZPIECZENIE DOMENOWE (Brak tagów nagłówkowych w komunikacie)
    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-final-summary');
        if (container) {
            container.innerHTML = `
                <div style="padding: 50px 30px; text-align: center; background: #0f172a; color: #ffffff; border-radius: 32px; font-family: sans-serif;">
                    <div style="font-size: 50px; margin-bottom: 20px;">🔒</div>
                    <div style="font-size: 22px; font-weight: 900; margin-bottom: 12px; color: #0ea5e9;">Podsumowanie jest chronione prawem autorskim</div>
                    <p style="font-size: 15px; color: #94a3b8; max-width: 450px; margin: 0 auto 25px auto;">Treść tego artykułu i modułów interaktywnych należy do serwisu Projekt-Ogrzewania.pl. Kopiowanie bez zgody inż. Roberta Kucharskiego jest zabronione.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 15px 30px; background: #0ea5e9; color: white; text-decoration: none; border-radius: 12px; font-weight: 800;">ZOBACZ ORYGINALNY WPIS</a>
                </div>
            `;
            container.style.background = '#0f172a';
            container.style.border = 'none';
        }
    }
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">Maksymalna długość pętli ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
