<?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 system ogrzewania - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/tag/system-ogrzewania/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/tag/system-ogrzewania/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Sat, 06 Jun 2026 08:34:34 +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 system ogrzewania - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/system-ogrzewania/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Ile rury na m² ogrzewania podłogowego?</title>
		<link>https://projekt-ogrzewania.pl/ile-rury-na-m%c2%b2-ogrzewania-podlogowego/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Mon, 16 Dec 2024 13:46:32 +0000</pubDate>
				<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Planowanie instalacji grzewczych]]></category>
		<category><![CDATA[Poradniki budowlane]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projekty ogrzewania]]></category>
		<category><![CDATA[Rozstaw pętli]]></category>
		<category><![CDATA[ile rury na m2]]></category>
		<category><![CDATA[instalacja grzewcza]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[planowanie instalacji]]></category>
		<category><![CDATA[porady budowlane]]></category>
		<category><![CDATA[rozstaw pętli]]></category>
		<category><![CDATA[rury do podłogówki]]></category>
		<category><![CDATA[system ogrzewania]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=1771</guid>

					<description><![CDATA[<p>Ogrzewanie podłogowe to doskonały wybór dla każdego domu, ale ile rury potrzeba na m² instalacji? Sprawdź przeliczniki dla rozstawów pętli i dowiedz się, jak zaplanować efektywną instalację. W artykule znajdziesz szczegółowe wskazówki, obliczenia i praktyczne porady. Dowiedz się, jak rozstaw pętli wpływa na efektywność systemu, jakie są najważniejsze zasady przy doborze rur i dlaczego warto skorzystać z darmowego projektu instalacji.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-rury-na-m%c2%b2-ogrzewania-podlogowego/">Ile rury na m² ogrzewania podłogowego?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-panel: #1e293b;
    --rk-intro-brand: #0284c7; /* Expert Blue */
    --rk-intro-brand-light: #e0f2fe;
    --rk-intro-accent: #0ea5e9;
    --rk-intro-success: #10b981;
    --rk-intro-bg: #f8fafc;
    --rk-intro-card: #ffffff;
    --rk-intro-border: #e2e8f0;
    --rk-intro-text: #334155;
    --rk-intro-text-light: #64748b;
}

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

/* Nagłówek i Hook */
.rk-intro-header {
    background: var(--rk-intro-dark);
    padding: 45px 50px 40px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-intro-brand);
}

.rk-intro-header::before {
    content: '';
    position: absolute;
    right: 0;
    top: 0;
    width: 40%;
    height: 100%;
    background: radial-gradient(ellipse at top right, rgba(2, 132, 199, 0.2) 0%, transparent 70%);
    pointer-events: none;
}

.rk-intro-header h2 {
    font-size: 32px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 20px 0;
    line-height: 1.25;
    position: relative;
    z-index: 2;
}

.rk-intro-header p {
    font-size: 17px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
    max-width: 800px;
    position: relative;
    z-index: 2;
}

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

/* Szybka Odpowiedź (Quick Answer Box) */
.rk-intro-quick-answer {
    margin: -20px 50px 30px;
    background: var(--rk-intro-card);
    border-radius: 16px;
    padding: 30px;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.1);
    border: 1px solid var(--rk-intro-border);
    border-left: 6px solid var(--rk-intro-brand);
    position: relative;
    z-index: 3;
    display: flex;
    align-items: flex-start;
    gap: 20px;
}

.rk-intro-qa-icon {
    flex-shrink: 0;
    width: 48px;
    height: 48px;
    background: var(--rk-intro-brand-light);
    color: var(--rk-intro-brand);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-intro-qa-icon svg { width: 28px; height: 28px; stroke-width: 2.5; }

.rk-intro-qa-content h3 {
    margin: 0 0 10px 0;
    font-size: 14px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    color: var(--rk-intro-brand);
}

.rk-intro-qa-content p {
    margin: 0;
    font-size: 19px;
    font-weight: 700;
    line-height: 1.5;
    color: var(--rk-intro-dark);
}

.rk-intro-qa-content span {
    display: block;
    font-size: 15px;
    font-weight: 400;
    color: var(--rk-intro-text-light);
    margin-top: 8px;
}

/* Agenda / Narzędzia w artykule */
.rk-intro-tools-section {
    padding: 10px 50px 45px;
}

.rk-intro-tools-title {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-intro-dark);
    margin: 0 0 20px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-intro-tools-title svg {
    color: var(--rk-intro-success);
}

.rk-intro-tools-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 15px;
}

.rk-intro-tool-card {
    background: #ffffff;
    border: 1px solid var(--rk-intro-border);
    padding: 20px;
    border-radius: 14px;
    display: flex;
    align-items: center;
    gap: 15px;
    transition: transform 0.2s, box-shadow 0.2s;
}

.rk-intro-tool-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 15px -3px rgba(0,0,0,0.05);
    border-color: #bae6fd;
}

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

.rk-intro-tool-icon svg { width: 20px; height: 20px; }

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

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

@media (max-width: 768px) {
    .rk-intro-header { padding: 35px 25px 50px; }
    .rk-intro-header h2 { font-size: 26px; }
    .rk-intro-quick-answer { margin: -30px 20px 30px; padding: 25px 20px; flex-direction: column; gap: 15px; }
    .rk-intro-tools-section { padding: 10px 20px 35px; }
    .rk-intro-tools-grid { grid-template-columns: 1fr; }
    .rk-intro-qa-content p { font-size: 17px; }
}
</style>

<div class="rk-intro-wrapper">
    <div class="rk-intro-header">
        <h2>Ile rury na m² ogrzewania podłogowego? Kompletny przewodnik inwestora</h2>
        <p>Wybór odpowiedniej ilości materiałów to być albo nie być Twojego systemu grzewczego. To, ile rury na m² ogrzewania podłogowego musisz kupić, zależy bezpośrednio od rozstawu pętli. Kupowanie rur &#8222;na oko&#8221; to najprostsza droga do niedogrzanego domu, tzw. zebry cieplnej i wyrzucania pieniędzy na ścinki. <strong>Z perspektywy specjalisty HVAC z ponad tysiącem projektów na koncie, powiem wprost: tu liczy się fizyka, nie intuicja instalatora.</strong></p>
    </div>

    <div class="rk-intro-quick-answer">
        <div class="rk-intro-qa-icon">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
        </div>
        <div class="rk-intro-qa-content">
            <h3>Szybka odpowiedź</h3>
            <p>Standardowo na 1 m² podłogówki przypada od 4 do 10 metrów bieżących (mb) rury PEX/PERT. Najpopularniejszy w salonach rozstaw co 15 cm wymaga użycia dokładnie 7 mb rury na każdy metr kwadratowy powierzchni.</p>
            <span>Aby uniknąć braku materiału, do całkowitego wyniku obliczeń dla budynku dolicza się zawsze 10% zapasu operacyjnego na dobiegi do rozdzielacza i łuki.</span>
        </div>
    </div>

    <div class="rk-intro-tools-section">
        <h3 class="rk-intro-tools-title">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            Narzędzia interaktywne w tym artykule:
        </h3>
        
        <div class="rk-intro-tools-grid">
            <div class="rk-intro-tool-card">
                <div class="rk-intro-tool-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                </div>
                <div class="rk-intro-tool-text">
                    <h4>Symulator Zapotrzebowania</h4>
                    <p>Oblicz zużycie materiału i dopasowanie do stref (np. łazienka vs salon) w zależności od rozstawu.</p>
                </div>
            </div>

            <div class="rk-intro-tool-card">
                <div class="rk-intro-tool-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
                </div>
                <div class="rk-intro-tool-text">
                    <h4>Kalkulator Zakupowy Domu</h4>
                    <p>Gotowe wyliczenia kompletnych zwojów i zapasów dla domów 100 m², 150 m² oraz 200 m².</p>
                </div>
            </div>

            <div class="rk-intro-tool-card">
                <div class="rk-intro-tool-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12H2"></path><path d="M5 8v8M10 8v8M14 8v8M19 8v8"></path></svg>
                </div>
                <div class="rk-intro-tool-text">
                    <h4>Limity Hydrauliczne (Opory)</h4>
                    <p>Weryfikacja maksymalnej długości pętli (np. 100 mb dla 16mm) i wpływu średnic na przepływ.</p>
                </div>
            </div>

            <div class="rk-intro-tool-card">
                <div class="rk-intro-tool-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                </div>
                <div class="rk-intro-tool-text">
                    <h4>Skaner Błędów Wykonawczych</h4>
                    <p>Checklista najgroźniejszych uchybień instalacyjnych grożących kuciem wylewki.</p>
                </div>
            </div>
        </div>
    </div>
</div>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#article-intro",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/"
    },
    "headline": "Ile rury na m² ogrzewania podłogowego? Kompletny przewodnik inwestora",
    "description": "Szybka odpowiedź: na 1 m2 podłogówki przy rozstawie co 15 cm przypada 7 metrów bieżących rury. Poznaj profesjonalne wyliczenia, kalkulatory OZC i limity hydrauliczne instalacji.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-05",
    "dateModified": "2026-06-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#dataset-intro",
    "name": "Baza danych zapotrzebowania materiałowego ogrzewania płaszczyznowego",
    "description": "Ogólne zestawienie najważniejszych wskaźników inżynierskich potrzebnych do wyliczenia zużycia rur instalacji podłogowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ile rury na m2 ogrzewania podłogowego",
      "ile metrów rury na m2",
      "rozstaw pętli ogrzewania podłogowego",
      "zapotrzebowanie rury podłogówka",
      "kalkulator rur ogrzewanie podłogowe"
    ],
    "measurementTechnique": "Przeliczenie standardowych wytycznych branżowych dla rur PEX/PERT na uśrednione zużycie mb/m2 ze stałym uwzględnieniem 10% naddatku montażowego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Szybka Odpowiedź: Rozstaw 15 cm wymaga zużycia operacyjnego na poziomie 7 mb/m2.",
        "Limity: Całkowity rozrzut zużycia materiału waha się od 4 mb/m2 do 10 mb/m2 w zależności od docelowej temperatury pomieszczenia.",
        "Zapas materiałowy: 10% doliczane do całkowitej sumy na tranzyty (dobiegi) i opory gięcia na łukach."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#webapp-intro",
    "name": "Przewodnik po kalkulatorach ogrzewania podłogowego",
    "description": "Panel nawigacyjny (Dashboard) stanowiący bezpośrednie odniesienie do interaktywnych narzędzi technicznych zamieszczonych w artykule, informujący algorytmy o obecności interaktywnych elementów DOM.",
    "applicationCategory": "ReferenceApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-pipe-dark: #0f172a;
    --rk-pipe-panel: #1e293b;
    --rk-pipe-brand: #0891b2; /* Cyan 600 */
    --rk-pipe-brand-light: #cffafe;
    --rk-pipe-accent: #22d3ee;
    --rk-pipe-alert: #eab308;
    --rk-pipe-alert-bg: #fefce8;
    --rk-pipe-bg: #f8fafc;
    --rk-pipe-card: #ffffff;
    --rk-pipe-border: #e2e8f0;
    --rk-pipe-text: #334155;
    --rk-pipe-text-light: #64748b;
}

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

/* Nagłówek */
.rk-pipe-header {
    background: var(--rk-pipe-dark);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-pipe-brand);
}

.rk-pipe-header::after {
    content: '';
    position: absolute;
    right: 0;
    top: 0;
    width: 300px;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(8, 145, 178, 0.15));
    pointer-events: none;
}

.rk-pipe-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    color: #ffffff;
    display: flex;
    align-items: center;
    gap: 12px;
    position: relative;
    z-index: 2;
}

.rk-pipe-header p {
    font-size: 16px;
    line-height: 1.6;
    color: #cbd5e1;
    margin: 0;
    max-width: 750px;
    position: relative;
    z-index: 2;
}

/* Obszar Roboczy */
.rk-pipe-body {
    padding: 40px 50px;
}

/* Panel Kontrolny (Przełączniki) */
.rk-pipe-controls {
    display: flex;
    gap: 15px;
    background: var(--rk-pipe-panel);
    padding: 12px;
    border-radius: 20px;
    margin-bottom: 30px;
}

.rk-pipe-btn {
    flex: 1;
    background: transparent;
    border: none;
    padding: 16px 20px;
    border-radius: 14px;
    color: #94a3b8;
    font-size: 16px;
    font-weight: 800;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.rk-pipe-btn:hover {
    color: #ffffff;
    background: rgba(255, 255, 255, 0.05);
}

.rk-pipe-btn.active {
    background: var(--rk-pipe-brand);
    color: #ffffff;
    box-shadow: 0 4px 15px rgba(8, 145, 178, 0.4);
}

.rk-pipe-btn-icon {
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Wizualizacja Rury (SVG) */
.rk-pipe-visual-box {
    background: #ffffff;
    border: 1px solid var(--rk-pipe-border);
    border-radius: 20px;
    height: 120px;
    margin-bottom: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    box-shadow: inset 0 4px 6px rgba(0,0,0,0.02);
}

.rk-pipe-visual-box::before {
    content: 'PRZEKRÓJ / STRUMIEŃ';
    position: absolute;
    top: 15px;
    left: 20px;
    font-size: 11px;
    font-weight: 800;
    color: var(--rk-pipe-text-light);
    letter-spacing: 1.5px;
}

.rk-pipe-svg-container {
    width: 100%;
    max-width: 500px;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: opacity 0.3s;
}

/* Siatka 2x2 */
.rk-pipe-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    margin-bottom: 35px;
}

.rk-pipe-card {
    background: var(--rk-pipe-card);
    border: 1px solid var(--rk-pipe-border);
    padding: 25px 20px;
    border-radius: 16px;
    text-align: center;
    transition: transform 0.3s ease, border-color 0.3s;
}

.rk-pipe-card:hover {
    transform: translateY(-4px);
    border-color: var(--rk-pipe-accent);
    box-shadow: 0 10px 20px -5px rgba(8, 145, 178, 0.1);
}

.rk-pipe-icon {
    width: 48px;
    height: 48px;
    margin: 0 auto 15px auto;
    background: var(--rk-pipe-brand-light);
    color: var(--rk-pipe-brand);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-pipe-icon svg { width: 24px; height: 24px; stroke-width: 2; }

.rk-pipe-label {
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-pipe-text-light);
    letter-spacing: 1px;
    margin-bottom: 8px;
}

.rk-pipe-val {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-pipe-dark);
    margin-bottom: 6px;
}

.rk-pipe-desc {
    font-size: 13px;
    color: var(--rk-pipe-text);
    line-height: 1.4;
}

/* Złota Zasada (Alert) */
.rk-pipe-alert {
    background: var(--rk-pipe-alert-bg);
    border: 1px solid #fde047;
    border-left: 5px solid var(--rk-pipe-alert);
    border-radius: 16px;
    padding: 25px 30px;
    display: flex;
    gap: 20px;
    align-items: flex-start;
}

.rk-pipe-alert-icon {
    flex-shrink: 0;
    width: 40px;
    height: 40px;
    background: var(--rk-pipe-alert);
    color: #ffffff;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-pipe-alert-content h4 {
    margin: 0 0 8px 0;
    font-size: 18px;
    font-weight: 800;
    color: #854d0e;
}

.rk-pipe-alert-content p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: #a16207;
}

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

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

.rk-pipe-cta p {
    color: var(--rk-pipe-text-light);
    margin: 0 auto 25px auto;
    max-width: 600px;
    line-height: 1.6;
}

.rk-pipe-btn-massive {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-pipe-dark);
    color: #ffffff;
    font-size: 16px;
    font-weight: 800;
    padding: 18px 35px;
    border-radius: 14px;
    text-decoration: none;
    transition: all 0.3s;
}

.rk-pipe-btn-massive:hover {
    background: var(--rk-pipe-panel);
    transform: translateY(-4px);
    box-shadow: 0 10px 20px -5px rgba(15, 23, 42, 0.3);
}

/* Animacje Wody */
@keyframes rk-flow {
    from { stroke-dashoffset: 40; }
    to { stroke-dashoffset: 0; }
}
.rk-anim-flow { stroke-dasharray: 10 10; animation: rk-flow 0.8s linear infinite; }
.rk-anim-flow-fast { stroke-dasharray: 15 15; animation: rk-flow 0.5s linear infinite; }

/* RWD */
@media (max-width: 768px) {
    .rk-pipe-header, .rk-pipe-body, .rk-pipe-cta { padding: 30px 20px; }
    .rk-pipe-controls { flex-direction: row; overflow-x: auto; padding: 10px; }
    .rk-pipe-btn { min-width: 130px; padding: 14px 10px; }
    .rk-pipe-grid { grid-template-columns: 1fr; } /* Na mobilkach spada jedno pod drugie */
    .rk-pipe-alert { flex-direction: column; padding: 20px; gap: 15px; }
    .rk-pipe-btn-massive { width: 100%; }
}
</style>

<div class="rk-pipe-container">
    <div class="rk-pipe-header">
        <h2>
            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
            Maksymalna długość pętli a średnica rury
        </h2>
        <p>Przekroczenie granicznych długości drastycznie zwiększa opory hydrauliczne. W efekcie pompa obiegowa nie przepcha wody, a pomieszczenie będzie niedogrzane. Wybierz średnicę rury, by sprawdzić parametry dla zrównoważonego układu.</p>
    </div>

    <div class="rk-pipe-body">
        
        <div class="rk-pipe-controls">
            <button class="rk-pipe-btn active" data-diam="16">
                <span class="rk-pipe-btn-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="6"></circle></svg></span>
                Ø 16 mm
            </button>
            <button class="rk-pipe-btn" data-diam="17">
                <span class="rk-pipe-btn-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="8"></circle></svg></span>
                Ø 17 mm
            </button>
            <button class="rk-pipe-btn" data-diam="20">
                <span class="rk-pipe-btn-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle></svg></span>
                Ø 20 mm
            </button>
        </div>

        <div class="rk-pipe-visual-box">
            <div class="rk-pipe-svg-container" id="rkPipeVisual">
                </div>
        </div>

        <div class="rk-pipe-grid">
            <div class="rk-pipe-card">
                <div class="rk-pipe-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12H2"></path><path d="M5 8v8M10 8v8M14 8v8M19 8v8"></path></svg>
                </div>
                <div class="rk-pipe-label">Twardy Limit</div>
                <div class="rk-pipe-val" id="rkPipeMax">100 mb</div>
                <div class="rk-pipe-desc">Z podejściami do rozdzielacza</div>
            </div>

            <div class="rk-pipe-card">
                <div class="rk-pipe-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="6"></circle><circle cx="12" cy="12" r="2"></circle></svg>
                </div>
                <div class="rk-pipe-label">Zakres Optymalny</div>
                <div class="rk-pipe-val" id="rkPipeOpt">70–90 mb</div>
                <div class="rk-pipe-desc">Bezpieczny bufor pracy pompy</div>
            </div>

            <div class="rk-pipe-card">
                <div class="rk-pipe-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                </div>
                <div class="rk-pipe-label">Opór Hydrauliczny</div>
                <div class="rk-pipe-val" id="rkPipeRes">Max 20 kPa</div>
                <div class="rk-pipe-desc" id="rkPipeResDesc">Przy 1,5–2,0 l/min</div>
            </div>

            <div class="rk-pipe-card">
                <div class="rk-pipe-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
                </div>
                <div class="rk-pipe-label">Zastosowanie</div>
                <div class="rk-pipe-val" style="font-size: 20px;" id="rkPipeApp">Domy jednorodzinne</div>
                <div class="rk-pipe-desc" id="rkPipeAppDesc">PEX 16&#215;2 to standard rynkowy</div>
            </div>
        </div>

        <div class="rk-pipe-alert">
            <div class="rk-pipe-alert-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
            </div>
            <div class="rk-pipe-alert-content">
                <h4>Złota zasada: Różnice pętli max. 10–15%</h4>
                <p>Niezależnie od wybranej średnicy rury, długości obwodów wpiętych w jeden <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacz</a> nie powinny różnić się o więcej niż 15%. Spięcie pętli 100 mb z obwodem 20 mb sprawia, że woda płynie linią najmniejszego oporu. Najkrótsza pętla zabiera przepływ, uniemożliwiając regulację na rotametrach.</p>
            </div>
        </div>

    </div>

    <div class="rk-pipe-cta">
        <h4>Nie pozwól, aby instalator zgadywał opory</h4>
        <p>Błędnie dobrana długość pętli zrujnuje rachunki za prąd w pompie ciepła. Przeczytaj więcej wytycznych technicznych i zaprojektuj instalację jak inżynier.</p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-pipe-btn-massive">
            SPRAWDŹ BAZĘ WIEDZY EKSKLUZYWNEJ
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const buttons = document.querySelectorAll('.rk-pipe-btn');
    const visual = document.getElementById('rkPipeVisual');
    
    const elMax = document.getElementById('rkPipeMax');
    const elOpt = document.getElementById('rkPipeOpt');
    const elRes = document.getElementById('rkPipeRes');
    const elResDesc = document.getElementById('rkPipeResDesc');
    const elApp = document.getElementById('rkPipeApp');
    const elAppDesc = document.getElementById('rkPipeAppDesc');

    const db = {
        "16": {
            max: "100 mb", opt: "70–90 mb", res: "Max 20 kPa", resDesc: "Przy 1,5–2,0 l/min", app: "Domy jednorodz.", appDesc: "PEX 16x2 to standard rynkowy",
            svg: `<svg viewBox="0 0 400 100" fill="none" stroke="currentColor">
                    <path d="M 20 50 L 380 50" stroke="#e2e8f0" stroke-width="20" stroke-linecap="round"/>
                    <path d="M 20 50 L 380 50" stroke="#0891b2" stroke-width="8" stroke-linecap="round" class="rk-anim-flow"/>
                  </svg>`
        },
        "17": {
            max: "120 mb", opt: "80–100 mb", res: "Spadek -25%", resDesc: "Względem oporów rury 16mm", app: "Systemowe", appDesc: "Do dedykowanych rozwiązań",
            svg: `<svg viewBox="0 0 400 100" fill="none" stroke="currentColor">
                    <path d="M 20 50 L 380 50" stroke="#e2e8f0" stroke-width="26" stroke-linecap="round"/>
                    <path d="M 20 50 L 380 50" stroke="#06b6d4" stroke-width="14" stroke-linecap="round" class="rk-anim-flow"/>
                  </svg>`
        },
        "20": {
            max: "150 mb", opt: "100–130 mb", res: "Niskie opory", resDesc: "Większy zład i strumień wody", app: "Hale / Przemysł", appDesc: "Wymaga zasilania 1-calowego",
            svg: `<svg viewBox="0 0 400 100" fill="none" stroke="currentColor">
                    <path d="M 20 50 L 380 50" stroke="#e2e8f0" stroke-width="36" stroke-linecap="round"/>
                    <path d="M 20 50 L 380 50" stroke="#22d3ee" stroke-width="24" stroke-linecap="round" class="rk-anim-flow-fast"/>
                  </svg>`
        }
    };

    function updateData(diam) {
        const data = db[diam];
        elMax.innerHTML = data.max;
        elOpt.innerHTML = data.opt;
        elRes.innerHTML = data.res;
        elResDesc.innerHTML = data.resDesc;
        elApp.innerHTML = data.app;
        elAppDesc.innerHTML = data.appDesc;
        visual.innerHTML = data.svg;
    }

    buttons.forEach(btn => {
        btn.addEventListener('click', function() {
            buttons.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            
            visual.style.opacity = 0;
            setTimeout(() => {
                updateData(this.getAttribute('data-diam'));
                visual.style.opacity = 1;
            }, 200);
        });
    });

    updateData('16');
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#article-srednice-rur",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/"
    },
    "headline": "Maksymalna długość pętli a średnica rury – parametry hydrauliczne",
    "description": "Zestawienie parametrów hydraulicznych instalacji ogrzewania podłogowego. Sprawdź limity długości pętli (100 mb dla 16mm) oraz zasady zrównoważenia przepływów na rotametrach.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-05",
    "dateModified": "2026-06-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#dataset-srednice-rur",
    "name": "Kalkulator Oporów Hydraulicznych i Średnic Rur PEX/PERT",
    "description": "Inżynierskie zestawienie limitów określających maksymalne długości pętli grzewczych (100 mb, 120 mb, 150 mb) w zależności od dobranej średnicy rury.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna długość pętli ogrzewania podłogowego",
      "średnica rury do podłogówki 16 czy 17",
      "opory hydrauliczne ogrzewania podłogowego",
      "zrównoważenie pętli ogrzewania",
      "rura pex 20mm podłogówka"
    ],
    "measurementTechnique": "Analiza przepływów (l/min) i spadków ciśnień (kPa) w wężownicach polietylenowych na potrzeby doboru pomp obiegowych i rotametrów.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rura PEX 16 mm: Limit 100 mb, opór hydrauliczny do 20 kPa przy przepływie 1,5-2,0 l/min.",
        "Rura PEX 17 mm: Limit 120 mb, opory niższe o ok. 25% przy tym samym strumieniu wody.",
        "Rura PEX 20 mm: Limit 150 mb, dedykowana do przemysłu, wymaga większych rozdzielaczy.",
        "Zrównoważenie: Bezwzględny zakaz różnicowania długości pętli na jednym rozdzielaczu powyżej 15%."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#webapp-srednice-rur",
    "name": "Symulator Średnic i Oporów Hydraulicznych PEX",
    "description": "Interaktywny panel w architekturze siatki 2x2, umożliwiający sprawdzenie wpływu średnicy rury na graniczne długości pętli, opór hydrauliczny i docelowe zastosowanie w budownictwie.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-est-dark: #064e3b; /* Głęboka zieleń/szmaragd */
    --rk-est-panel: #065f46;
    --rk-est-brand: #10b981; /* Szmaragdowy */
    --rk-est-brand-light: #d1fae5;
    --rk-est-accent: #34d399;
    --rk-est-text: #334155;
    --rk-est-text-light: #64748b;
    --rk-est-bg: #f8fafc;
    --rk-est-card: #ffffff;
    --rk-est-border: #e2e8f0;
    --rk-est-highlight: #f59e0b;
}

.rk-estimate-wrapper {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-est-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(6, 78, 59, 0.15);
    border: 1px solid var(--rk-est-border);
    overflow: hidden;
}

/* Nagłówek H2 */
.rk-est-header {
    background: var(--rk-est-dark);
    padding: 45px 50px 30px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-est-brand);
}

.rk-est-header::after {
    content: '';
    position: absolute;
    right: 0;
    top: 0;
    height: 100%;
    width: 350px;
    background: linear-gradient(90deg, transparent, rgba(16, 185, 129, 0.15));
    pointer-events: none;
}

.rk-est-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 15px 0;
    line-height: 1.3;
    display: flex;
    align-items: center;
    gap: 12px;
    position: relative;
    z-index: 2;
}

.rk-est-header p {
    font-size: 16px;
    line-height: 1.6;
    color: #a7f3d0;
    margin: 0;
    max-width: 800px;
    position: relative;
    z-index: 2;
}

.rk-est-header a {
    color: var(--rk-est-highlight);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-est-highlight);
    transition: all 0.2s;
}

.rk-est-header a:hover {
    color: #ffffff;
    border-bottom-style: solid;
}

/* Obszar Roboczy */
.rk-est-body {
    padding: 40px 50px;
}

/* Przełączniki Metrażu (Tabs) */
.rk-est-tabs {
    display: flex;
    gap: 15px;
    background: #ffffff;
    padding: 10px;
    border-radius: 20px;
    margin-bottom: 35px;
    border: 1px solid var(--rk-est-border);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-est-tab-btn {
    flex: 1;
    padding: 18px 10px;
    border: 2px solid transparent;
    background: var(--rk-est-bg);
    border-radius: 14px;
    font-size: 17px;
    font-weight: 800;
    color: var(--rk-est-text-light);
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

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

.rk-est-tab-btn.active {
    background: var(--rk-est-brand-light);
    color: var(--rk-est-dark);
    border-color: var(--rk-est-brand);
    box-shadow: 0 4px 15px rgba(16, 185, 129, 0.2);
}

.rk-est-tab-icon {
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-est-tab-btn.active .rk-est-tab-icon {
    color: var(--rk-est-brand);
}

/* Główny Dashboard Wyników */
.rk-est-dashboard {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: 30px;
    margin-bottom: 30px;
}

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

.rk-est-card {
    background: var(--rk-est-card);
    border: 1px solid var(--rk-est-border);
    padding: 25px 20px;
    border-radius: 16px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    transition: transform 0.3s ease, border-color 0.3s;
    position: relative;
    overflow: hidden;
}

.rk-est-card:hover {
    transform: translateY(-3px);
    border-color: var(--rk-est-accent);
}

.rk-est-card-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 12px;
}

.rk-est-card-icon {
    width: 36px;
    height: 36px;
    background: var(--rk-est-bg);
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-est-brand);
}

.rk-est-card-icon svg { width: 20px; height: 20px; }

.rk-est-card-title {
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-est-text-light);
    letter-spacing: 0.5px;
    margin: 0;
}

.rk-est-card-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-est-dark);
    margin-bottom: 5px;
}

.rk-est-card-desc {
    font-size: 13px;
    color: var(--rk-est-text);
    line-height: 1.4;
}

/* Karta Głównego Wyniku (Suma) */
.rk-est-total-card {
    background: linear-gradient(145deg, var(--rk-est-dark) 0%, var(--rk-est-panel) 100%);
    border-radius: 20px;
    padding: 30px;
    color: #ffffff;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    box-shadow: 0 15px 30px -10px rgba(6, 78, 59, 0.4);
    position: relative;
    overflow: hidden;
}

.rk-est-total-card::before {
    content: '';
    position: absolute;
    top: -50px;
    right: -50px;
    width: 150px;
    height: 150px;
    background: rgba(16, 185, 129, 0.2);
    border-radius: 50%;
    pointer-events: none;
}

.rk-est-total-label {
    font-size: 14px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--rk-est-accent);
    margin-bottom: 10px;
}

.rk-est-total-val {
    font-size: 42px;
    font-weight: 900;
    margin-bottom: 10px;
    line-height: 1;
    text-shadow: 0 2px 10px rgba(0,0,0,0.2);
}

.rk-est-total-desc {
    font-size: 14px;
    color: var(--rk-est-brand-light);
    margin-bottom: 25px;
    line-height: 1.5;
}

.rk-est-svg-box {
    height: 100px;
    width: 100%;
    display: flex;
    align-items: flex-end;
    justify-content: center;
}

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

/* Alert Box na dole */
.rk-est-alert {
    background: #fffbeb;
    border: 1px solid #fde68a;
    border-left: 5px solid var(--rk-est-highlight);
    border-radius: 16px;
    padding: 20px 25px;
    display: flex;
    gap: 15px;
    align-items: center;
}

.rk-est-alert-icon {
    color: #b45309;
    flex-shrink: 0;
}

.rk-est-alert p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: #92400e;
}

.rk-est-alert a {
    color: #78350f;
    font-weight: 800;
    text-decoration: underline;
    text-decoration-color: rgba(120, 53, 15, 0.3);
}

/* Animacje w JS */
.val-update {
    animation: popVal 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

@keyframes popVal {
    0% { transform: scale(0.95); opacity: 0.5; }
    50% { transform: scale(1.05); }
    100% { transform: scale(1); opacity: 1; }
}

@keyframes drawLoop {
    0% { stroke-dashoffset: 200; }
    100% { stroke-dashoffset: 0; }
}
.anim-loop {
    stroke-dasharray: 200;
    animation: drawLoop 1.5s ease-out forwards;
}

/* RWD */
@media (max-width: 768px) {
    .rk-est-header, .rk-est-body { padding: 30px 20px; }
    .rk-est-tabs { flex-direction: column; padding: 10px; }
    .rk-est-dashboard { grid-template-columns: 1fr; }
    .rk-est-grid { grid-template-columns: 1fr; }
    .rk-est-total-card { min-height: 250px; }
}
</style>

<div class="rk-estimate-wrapper">
    <div class="rk-est-header">
        <h2>
            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
            Jak obliczyć całkowitą ilość rury dla domu?
        </h2>
        <p>Precyzyjne wyliczenie zapotrzebowania wymaga uwzględnienia trzech czynników: powierzchni netto, długości podejść do rozdzielacza (tranzytów) oraz naddatku montażowego. Poniższy algorytm bazuje na standardowym rozstawie 15 cm. Zobacz <a href="https://projekt-ogrzewania.pl/ile-kosztuje-100-m%c2%b2-ogrzewania-podlogowego/">jak to wpływa na koszty podłogówki</a>.</p>
    </div>

    <div class="rk-est-body">
        
        <div class="rk-est-tabs">
            <button class="rk-est-tab-btn active" data-size="100">
                <span class="rk-est-tab-icon"><svg width="20" height="20" 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></svg></span>
                Dom 100 m²
            </button>
            <button class="rk-est-tab-btn" data-size="150">
                <span class="rk-est-tab-icon"><svg width="20" height="20" 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><path d="M3 12h18"></path></svg></span>
                Dom 150 m²
            </button>
            <button class="rk-est-tab-btn" data-size="200">
                <span class="rk-est-tab-icon"><svg width="20" height="20" 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><path d="M3 9h18M3 15h18"></path></svg></span>
                Dom 200 m²
            </button>
        </div>

        <div class="rk-est-dashboard">
            <div class="rk-est-grid">
                <div class="rk-est-card">
                    <div class="rk-est-card-header">
                        <div class="rk-est-card-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg></div>
                        <h4 class="rk-est-card-title">Powierzchnia Grzewcza Netto</h4>
                    </div>
                    <div class="rk-est-card-val" id="estNetArea">90 m²</div>
                    <div class="rk-est-card-desc">Odejmując ok. 10% na stałą zabudowę (wanny, kominki).</div>
                </div>

                <div class="rk-est-card">
                    <div class="rk-est-card-header">
                        <div class="rk-est-card-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12H2"></path><path d="M5 8v8M10 8v8M14 8v8M19 8v8"></path></svg></div>
                        <h4 class="rk-est-card-title">Ilość Rury (Sama Podłoga)</h4>
                    </div>
                    <div class="rk-est-card-val" id="estBasePipe">630 mb</div>
                    <div class="rk-est-card-desc">Przy stałym wskaźniku zużycia wynoszącym 7 mb/m².</div>
                </div>

                <div class="rk-est-card">
                    <div class="rk-est-card-header">
                        <div class="rk-est-card-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg></div>
                        <h4 class="rk-est-card-title">Tranzyty i Podejścia</h4>
                    </div>
                    <div class="rk-est-card-val" id="estTransits">ok. 70 mb</div>
                    <div class="rk-est-card-desc" id="estTransitsDesc">Zakładając średnio 5m w obie strony dla 10 pętli.</div>
                </div>

                <div class="rk-est-card">
                    <div class="rk-est-card-header">
                        <div class="rk-est-card-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                        <h4 class="rk-est-card-title">Liczba Obwodów (Pętli)</h4>
                    </div>
                    <div class="rk-est-card-val" id="estLoops">8 &#8211; 10 pętli</div>
                    <div class="rk-est-card-desc">Istotne przy doborze odpowiedniego rozdzielacza.</div>
                </div>
            </div>

            <div class="rk-est-total-card">
                <div>
                    <div class="rk-est-total-label">Całkowity Zakup (z 10% zapasem)</div>
                    <div class="rk-est-total-val" id="estTotalVal">770 mb</div>
                    <div class="rk-est-total-desc" id="estTotalCoils">Rekomendacja: 4 kręgi po 200 m</div>
                </div>
                
                <div class="rk-est-svg-box" id="estVisual">
                    </div>
            </div>
        </div>

        <div class="rk-est-alert">
            <div class="rk-est-alert-icon">
                <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
            </div>
            <div>
                <p><strong>Uwaga na ścinki!</strong> Zawsze należy dopasowywać wyliczone długości pętli do fabrycznych zwojów (najczęściej 200 mb lub 600 mb). Jeśli instalator zrobi pętlę 85 mb z kręgu 200 mb, zostaną dwa odcinki po 85 mb i bezużyteczny odpad 30 mb. <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">Profesjonalne rozplanowanie układu</a> redukuje ten odpad do poziomu poniżej 2%.</p>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const buttons = document.querySelectorAll('.rk-est-tab-btn');
    
    // Elementy DOM do aktualizacji
    const elNetArea = document.getElementById('estNetArea');
    const elBasePipe = document.getElementById('estBasePipe');
    const elTransits = document.getElementById('estTransits');
    const elTransitsDesc = document.getElementById('estTransitsDesc');
    const elLoops = document.getElementById('estLoops');
    const elTotalVal = document.getElementById('estTotalVal');
    const elTotalCoils = document.getElementById('estTotalCoils');
    const elVisual = document.getElementById('estVisual');

    // Baza danych dla 3 wariantów
    const dataMap = {
        "100": {
            netArea: "90 m²",
            basePipe: "630 mb",
            transits: "ok. 70 mb",
            transitsDesc: "Zakładając 10 pętli × 7 m dobiegów.",
            loops: "8 - 10 pętli",
            totalVal: "770 mb",
            totalCoils: "Rekomendacja: 4 kręgi po 200 m",
            svg: `<svg viewBox="0 0 200 100" fill="none" stroke="currentColor">
                    <path d="M 20 80 L 20 20 L 100 20 L 100 80 Z" stroke="#34d399" stroke-width="4" fill="rgba(52, 211, 153, 0.1)"/>
                    <path d="M 30 70 Q 60 30 90 70" stroke="#a7f3d0" stroke-width="6" stroke-linecap="round" class="anim-loop"/>
                    <path d="M 40 70 Q 60 40 80 70" stroke="#a7f3d0" stroke-width="6" stroke-linecap="round" class="anim-loop"/>
                 </svg>`
        },
        "150": {
            netArea: "135 m²",
            basePipe: "945 mb",
            transits: "ok. 105 mb",
            transitsDesc: "Zakładając 15 pętli × 7 m dobiegów.",
            loops: "12 - 15 pętli",
            totalVal: "1155 mb",
            totalCoils: "Rekomendacja: 6 kręgów po 200 m",
            svg: `<svg viewBox="0 0 200 100" fill="none" stroke="currentColor">
                    <path d="M 20 80 L 20 20 L 150 20 L 150 80 Z" stroke="#34d399" stroke-width="4" fill="rgba(52, 211, 153, 0.1)"/>
                    <path d="M 30 70 Q 50 30 70 70" stroke="#a7f3d0" stroke-width="6" stroke-linecap="round" class="anim-loop"/>
                    <path d="M 60 70 Q 85 30 110 70" stroke="#a7f3d0" stroke-width="6" stroke-linecap="round" class="anim-loop"/>
                    <path d="M 100 70 Q 120 30 140 70" stroke="#a7f3d0" stroke-width="6" stroke-linecap="round" class="anim-loop"/>
                 </svg>`
        },
        "200": {
            netArea: "180 m²",
            basePipe: "1260 mb",
            transits: "ok. 140 mb",
            transitsDesc: "Zakładając 20 pętli × 7 m dobiegów.",
            loops: "16 - 20 pętli",
            totalVal: "1540 mb",
            totalCoils: "Rekomendacja: 8 kręgów po 200 m",
            svg: `<svg viewBox="0 0 200 100" fill="none" stroke="currentColor">
                    <path d="M 10 80 L 10 20 L 190 20 L 190 80 Z" stroke="#34d399" stroke-width="4" fill="rgba(52, 211, 153, 0.1)"/>
                    <path d="M 20 70 Q 40 30 60 70" stroke="#a7f3d0" stroke-width="5" stroke-linecap="round" class="anim-loop"/>
                    <path d="M 50 70 Q 75 30 100 70" stroke="#a7f3d0" stroke-width="5" stroke-linecap="round" class="anim-loop"/>
                    <path d="M 90 70 Q 115 30 140 70" stroke="#a7f3d0" stroke-width="5" stroke-linecap="round" class="anim-loop"/>
                    <path d="M 130 70 Q 155 30 180 70" stroke="#a7f3d0" stroke-width="5" stroke-linecap="round" class="anim-loop"/>
                 </svg>`
        }
    };

    function triggerAnimation(element) {
        element.classList.remove('val-update');
        void element.offsetWidth; // force reflow
        element.classList.add('val-update');
    }

    function updateDashboard(size) {
        const data = dataMap[size];
        
        elNetArea.innerHTML = data.netArea;
        elBasePipe.innerHTML = data.basePipe;
        elTransits.innerHTML = data.transits;
        elTransitsDesc.innerHTML = data.transitsDesc;
        elLoops.innerHTML = data.loops;
        
        elTotalVal.innerHTML = data.totalVal;
        elTotalCoils.innerHTML = data.totalCoils;
        
        // Zmiana SVG i reset animacji klas wewnątrz SVG
        elVisual.innerHTML = data.svg;

        // Uruchomienie animacji tekstu
        triggerAnimation(elNetArea);
        triggerAnimation(elBasePipe);
        triggerAnimation(elTotalVal);
    }

    buttons.forEach(btn => {
        btn.addEventListener('click', function() {
            buttons.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            updateDashboard(this.getAttribute('data-size'));
        });
    });

    // Inicjalizacja pierwszej zakładki
    updateDashboard('100');
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#article-domy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/"
    },
    "headline": "Jak obliczyć całkowitą ilość rury dla domu 100 m² i 150 m²?",
    "description": "Zestawienie parametrów technicznych i całkowitego zużycia rur PEX do podłogówki dla domów 100, 150 i 200 mkw. Sprawdź, jak dodać 10% zapasu na odpady.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-05",
    "dateModified": "2026-06-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#dataset-domy",
    "name": "Zestawienie zapotrzebowania na rury ogrzewania podłogowego (100-200 m2)",
    "description": "Tabele przeliczeniowe określające ilość rury bazowej, długości tranzytów do rozdzielaczy oraz bezpieczny bufor zakupowy.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ile rury do podłogówki 100m2",
      "zapotrzebowanie rur pex 150m2",
      "kalkulator rur ogrzewanie podłogowe dom 200m2",
      "tranzyty do rozdzielacza",
      "zapas rury na odpady"
    ],
    "measurementTechnique": "Algorytm uwzględniający powierzchnię netto (minus stała zabudowa), bazowe zużycie 7 mb/m2 przy rozstawie 15 cm oraz 10% naddatku montażowego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Dom 100 m²: Netto 90 m², Zapotrzebowanie: 770 mb (4 kręgi po 200 m).",
        "Dom 150 m²: Netto 135 m², Zapotrzebowanie: 1155 mb (6 kręgów po 200 m).",
        "Dom 200 m²: Netto 180 m², Zapotrzebowanie: 1540 mb (8 kręgów po 200 m)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#webapp-domy",
    "name": "Kalkulator Zakupowy Rur PEX",
    "description": "Interaktywny interfejs pozwalający na błyskawiczne sprawdzenie dokładnej ilości materiałów (rury, liczba obwodów) w zależności od metrażu budowanego domu jednorodzinnego.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-spc-dark: #0f172a; /* Głęboki granat */
    --rk-spc-panel: #1e293b;
    --rk-spc-brand: #f97316; /* Termo-pomarańcz (Orange 500) */
    --rk-spc-brand-light: #ffedd5;
    --rk-spc-accent: #fb923c;
    --rk-spc-blue: #0ea5e9;
    --rk-spc-text: #334155;
    --rk-spc-text-light: #64748b;
    --rk-spc-bg: #f8fafc;
    --rk-spc-card: #ffffff;
    --rk-spc-border: #e2e8f0;
}

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

/* Nagłówek H2 */
.rk-spc-header {
    background: var(--rk-spc-dark);
    padding: 45px 50px 30px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-spc-brand);
}

.rk-spc-header::after {
    content: '';
    position: absolute;
    right: 0;
    top: 0;
    height: 100%;
    width: 300px;
    background: linear-gradient(90deg, transparent, rgba(249, 115, 22, 0.15));
    pointer-events: none;
}

.rk-spc-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 15px 0;
    line-height: 1.3;
    display: flex;
    align-items: center;
    gap: 12px;
    position: relative;
    z-index: 2;
}

.rk-spc-header p {
    font-size: 16px;
    line-height: 1.6;
    color: #cbd5e1;
    margin: 0;
    max-width: 750px;
    position: relative;
    z-index: 2;
}

.rk-spc-header a {
    color: var(--rk-spc-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-spc-accent);
    transition: all 0.2s;
}

.rk-spc-header a:hover {
    color: #ffffff;
    border-bottom-style: solid;
}

/* Sekcja Główna */
.rk-spc-body {
    padding: 40px 50px;
}

/* Kontroler i SVG Wizualizacja */
.rk-spc-dashboard {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: 30px;
    margin-bottom: 30px;
}

.rk-spc-control-panel {
    background: var(--rk-spc-card);
    border: 1px solid var(--rk-spc-border);
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    display: flex;
    flex-direction: column;
    justify-content: center;
}

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

.rk-spc-control-header h3 {
    margin: 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-spc-dark);
}

.rk-spc-val-display {
    font-size: 32px;
    font-weight: 900;
    color: var(--rk-spc-brand);
    background: var(--rk-spc-brand-light);
    padding: 8px 20px;
    border-radius: 12px;
}

/* Custom Slider */
.rk-spc-slider {
    -webkit-appearance: none;
    width: 100%;
    background: transparent;
    margin: 15px 0;
}
.rk-spc-slider:focus { outline: none; }
.rk-spc-slider::-webkit-slider-runnable-track {
    width: 100%;
    height: 10px;
    background: #e2e8f0;
    border-radius: 8px;
    border: 1px solid #cbd5e1;
}
.rk-spc-slider::-webkit-slider-thumb {
    height: 32px;
    width: 32px;
    border-radius: 50%;
    background: var(--rk-spc-brand);
    cursor: pointer;
    -webkit-appearance: none;
    margin-top: -11px;
    box-shadow: 0 4px 10px rgba(249, 115, 22, 0.4);
    border: 4px solid #ffffff;
    transition: transform 0.1s;
}
.rk-spc-slider::-webkit-slider-thumb:hover {
    transform: scale(1.15);
}
.rk-spc-slider-marks {
    display: flex;
    justify-content: space-between;
    color: var(--rk-spc-text-light);
    font-size: 14px;
    font-weight: 700;
    padding: 0 10px;
}

/* SVG Wizualizator (1m2) */
.rk-spc-visualizer {
    background: var(--rk-spc-panel);
    border-radius: 20px;
    position: relative;
    overflow: hidden;
    box-shadow: inset 0 10px 20px rgba(0,0,0,0.3);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
}

.rk-spc-visualizer::before {
    content: 'POWIERZCHNIA 1 m²';
    position: absolute;
    top: 15px;
    left: 20px;
    font-size: 11px;
    font-weight: 800;
    color: #475569;
    letter-spacing: 1.5px;
}

.rk-spc-svg-box {
    width: 100%;
    height: 100%;
    max-height: 220px;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Siatka Wyników 2x2 */
.rk-spc-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    margin-bottom: 30px;
}

.rk-spc-card {
    background: var(--rk-spc-card);
    border: 1px solid var(--rk-spc-border);
    padding: 25px 20px;
    border-radius: 16px;
    transition: transform 0.3s ease, border-color 0.3s;
    display: flex;
    flex-direction: column;
}

.rk-spc-card:hover {
    transform: translateY(-4px);
    border-color: var(--rk-spc-accent);
    box-shadow: 0 10px 20px -5px rgba(249, 115, 22, 0.1);
}

.rk-spc-card-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 12px;
}

.rk-spc-icon {
    width: 40px;
    height: 40px;
    background: var(--rk-spc-brand-light);
    color: var(--rk-spc-brand);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-spc-icon svg { width: 22px; height: 22px; stroke-width: 2.5; }

.rk-spc-label {
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-spc-text-light);
    letter-spacing: 0.5px;
    margin: 0;
}

.rk-spc-val {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-spc-dark);
    margin-bottom: 5px;
    line-height: 1.1;
}

.rk-spc-desc {
    font-size: 13px;
    color: var(--rk-spc-text);
    line-height: 1.5;
}

/* Alert Box */
.rk-spc-alert {
    background: #f0f9ff;
    border: 1px solid #bae6fd;
    border-left: 5px solid var(--rk-spc-blue);
    border-radius: 16px;
    padding: 25px 30px;
    display: flex;
    gap: 20px;
    align-items: flex-start;
}

.rk-spc-alert-icon {
    flex-shrink: 0;
    width: 42px;
    height: 42px;
    background: var(--rk-spc-blue);
    color: #ffffff;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-spc-alert-content h4 {
    margin: 0 0 8px 0;
    font-size: 18px;
    font-weight: 800;
    color: #0369a1;
}

.rk-spc-alert-content p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: #0c4a6e;
}

/* Animacje w JS & SVG */
.anim-update {
    animation: popVal 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
@keyframes popVal {
    0% { transform: scale(0.95); opacity: 0.5; }
    50% { transform: scale(1.05); }
    100% { transform: scale(1); opacity: 1; }
}

@keyframes heatFlow {
    0% { stroke-dashoffset: 100; }
    100% { stroke-dashoffset: 0; }
}
.anim-heat {
    stroke-dasharray: 15 10;
    animation: heatFlow 1.5s linear infinite;
    stroke: var(--rk-spc-brand);
}

/* RWD */
@media (max-width: 768px) {
    .rk-spc-header, .rk-spc-body { padding: 30px 20px; }
    .rk-spc-dashboard { grid-template-columns: 1fr; gap: 20px; }
    .rk-spc-visualizer { height: 200px; }
    .rk-spc-grid { grid-template-columns: 1fr; }
    .rk-spc-alert { flex-direction: column; padding: 20px; gap: 15px; }
}
</style>

<div class="rk-spacing-wrapper">
    <div class="rk-spc-header">
        <h2>
            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
            Ile metrów rury potrzeba na m² podłogówki?
        </h2>
        <p>Bezpośrednia odpowiedź wynika ze wzoru matematycznego <strong>L = 1 / b</strong> (gdzie L to długość rury, a b to rozstaw). Parametry te ściśle reguluje norma <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">PN-EN 1264-4</a>. Zobacz na poniższym symulatorze, jak zagęszczenie wpływa na ilość materiału i opory hydrauliczne instalacji.</p>
    </div>

    <div class="rk-spc-body">
        
        <div class="rk-spc-dashboard">
            <div class="rk-spc-control-panel">
                <div class="rk-spc-control-header">
                    <h3>ROZSTAW OSIOWY</h3>
                    <div class="rk-spc-val-display" id="spcValDisplay">15 cm</div>
                </div>
                <input type="range" min="10" max="25" step="5" value="15" class="rk-spc-slider" id="spcInputSlider">
                <div class="rk-spc-slider-marks">
                    <span>10</span>
                    <span>15</span>
                    <span>20</span>
                    <span>25</span>
                </div>
            </div>

            <div class="rk-spc-visualizer">
                <div class="rk-spc-svg-box" id="spcVisualBox">
                    </div>
            </div>
        </div>

        <div class="rk-spc-grid">
            <div class="rk-spc-card">
                <div class="rk-spc-card-header">
                    <div class="rk-spc-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M22 12H2"></path><path d="M5 8v8M10 8v8M14 8v8M19 8v8"></path></svg></div>
                    <h4 class="rk-spc-label">Zużycie Matematyczne</h4>
                </div>
                <div class="rk-spc-val" id="spcMath">6,67 mb/m²</div>
                <div class="rk-spc-desc">Czysty wynik ze wzoru L = 1/b.</div>
            </div>

            <div class="rk-spc-card">
                <div class="rk-spc-card-header">
                    <div class="rk-spc-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M20 6L9 17l-5-5"></path></svg></div>
                    <h4 class="rk-spc-label">Zużycie Operacyjne</h4>
                </div>
                <div class="rk-spc-val" style="color: var(--rk-spc-brand);" id="spcOper">7,0 mb/m²</div>
                <div class="rk-spc-desc">Wartość uwzględniająca gięcia na łukach.</div>
            </div>

            <div class="rk-spc-card">
                <div class="rk-spc-card-header">
                    <div class="rk-spc-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg></div>
                    <h4 class="rk-spc-label">Przeznaczenie Strefy</h4>
                </div>
                <div class="rk-spc-val" style="font-size: 20px;" id="spcZone">Salony i Sypialnie</div>
                <div class="rk-spc-desc" id="spcZoneDesc">Standard dla budynków o zapotrzebowaniu 40-50 W/m².</div>
            </div>

            <div class="rk-spc-card">
                <div class="rk-spc-card-header">
                    <div class="rk-spc-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg></div>
                    <h4 class="rk-spc-label">Wymagania Cieplne</h4>
                </div>
                <div class="rk-spc-val" style="font-size: 20px;" id="spcTemp">Optymalne (20-22°C)</div>
                <div class="rk-spc-desc" id="spcTempDesc">Najlepszy kompromis pomiędzy kosztem a komfortem.</div>
            </div>
        </div>

        <div class="rk-spc-alert">
            <div class="rk-spc-alert-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            </div>
            <div class="rk-spc-alert-content">
                <h4>Prawo Hydrauliki: Więcej rury to większy opór</h4>
                <p>Każda zmiana rozstawu wpływa na opory hydrauliczne instalacji. Zacieśnienie <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">układu pętli</a> z 15 cm do 10 cm na tej samej powierzchni zwiększa długość rury o 50%. Przy zachowaniu stałego natężenia przepływu, generuje to niemal <strong>trzykrotny wzrost strat ciśnienia</strong> w danej pętli, co musi zostać uwzględnione w doborze pompy obiegowej.</p>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const slider = document.getElementById('spcInputSlider');
    const valDisplay = document.getElementById('spcValDisplay');
    
    // UI Elements
    const elMath = document.getElementById('spcMath');
    const elOper = document.getElementById('spcOper');
    const elZone = document.getElementById('spcZone');
    const elZoneDesc = document.getElementById('spcZoneDesc');
    const elTemp = document.getElementById('spcTemp');
    const elTempDesc = document.getElementById('spcTempDesc');
    const visualBox = document.getElementById('spcVisualBox');

    // Data Map
    const spacingData = {
        "10": {
            math: "10,0 mb/m²", oper: "10,5 mb/m²", 
            zone: "Łazienki, Okna HS", zoneDesc: "Strefy brzegowe i pomieszczenia o wysokich stratach.",
            temp: "Wysokie (24°C)", tempDesc: "Zgodne z rozporządzeniem Ministra Infrastruktury.",
            lines: 10
        },
        "15": {
            math: "6,67 mb/m²", oper: "7,0 mb/m²", 
            zone: "Salony i Sypialnie", zoneDesc: "Standard dla budynków o zapotrzebowaniu 40-50 W/m².",
            temp: "Optymalne (20-22°C)", tempDesc: "Najlepszy kompromis pomiędzy kosztem a komfortem.",
            lines: 7
        },
        "20": {
            math: "5,0 mb/m²", oper: "5,5 mb/m²", 
            zone: "Korytarze, Garderoby", zoneDesc: "Strefy przechodnie oraz budownictwo ściśle pasywne.",
            temp: "Niskie (18-20°C)", tempDesc: "Wystarczające dla pomieszczeń z pasywnym zyskiem.",
            lines: 5
        },
        "25": {
            math: "4,0 mb/m²", oper: "4,5 mb/m²", 
            zone: "Garaże, Hale", zoneDesc: "Pomieszczenia techniczne i magazynowe.",
            temp: "Bardzo niskie (8-12°C)", tempDesc: "Utrzymanie strefy wolnej od przemarzania.",
            lines: 4
        }
    };

    function generateSVG(linesCount) {
        // Generowanie wężyka (meandra) dla m2
        let pathD = "M 10 10 ";
        let step = 80 / (linesCount - 1);
        let direction = 1; // 1 = prawo, -1 = lewo

        for (let i = 0; i < linesCount; i++) {
            let y = 10 + (i * step);
            let xEnd = direction === 1 ? 190 : 10;
            
            if (i > 0) {
                // Łuk w dół
                let xStart = direction === 1 ? 10 : 190;
                pathD += ` L ${xStart} ${y}`;
            }
            
            pathD += ` L ${xEnd} ${y}`;
            direction *= -1;
        }

        return `
            <svg viewBox="0 0 200 100" fill="none" style="width:100%; height:100%;">
                <rect x="0" y="0" width="200" height="100" fill="#1e293b" />
                <path d="${pathD}" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" class="anim-heat" />
            </svg>
        `;
    }

    function triggerAnim(el) {
        el.classList.remove('anim-update');
        void el.offsetWidth;
        el.classList.add('anim-update');
    }

    function updateUI() {
        const val = slider.value;
        const data = spacingData[val];

        valDisplay.textContent = val + " cm";
        
        elMath.textContent = data.math;
        elOper.textContent = data.oper;
        elZone.textContent = data.zone;
        elZoneDesc.textContent = data.zoneDesc;
        elTemp.textContent = data.temp;
        elTempDesc.textContent = data.tempDesc;

        visualBox.innerHTML = generateSVG(data.lines);

        [elMath, elOper, elZone, elTemp].forEach(triggerAnim);
    }

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

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#article-rozstaw-zuzycie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/"
    },
    "headline": "Ile metrów rury potrzeba na m² podłogówki przy różnych rozstawach?",
    "description": "Kalkulacja zużycia rur do ogrzewania podłogowego zgodnie z normą PN-EN 1264-4. Zobacz wzór matematyczny na ilość mb/m2 i przeznaczenie stref grzewczych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-05",
    "dateModified": "2026-06-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#dataset-rozstaw",
    "name": "Wskaźniki zużycia rury ogrzewania podłogowego wg rozstawu",
    "description": "Zestawienie operacyjnego i matematycznego zapotrzebowania na rurę PEX (mb/m2) w zależności od kroku pętli grzewczej i strefy cieplnej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ile rury na m2 ogrzewania podłogowego",
      "rozstaw rur 10 czy 15 cm",
      "opory hydrauliczne podłogówki",
      "norma PN-EN 1264-4 podłogówka",
      "krok pętli grzewczej"
    ],
    "measurementTechnique": "Przeliczenie matematyczne na bazie wzoru L = 1/b z uwzględnieniem strat na łukach, zgodne ze standardami projektowania budynków jednorodzinnych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rozstaw 10 cm: Zużycie ok. 10 mb/m2. Dedykowane do łazienek (wymóg 24°C) i stref brzegowych.",
        "Rozstaw 15 cm: Zużycie ok. 7 mb/m2. Standard dla salonów i sypialni (40-50 W/m2).",
        "Rozstaw 20 cm: Zużycie ok. 5 mb/m2. Używane w korytarzach i domach pasywnych.",
        "Rozstaw 25 cm: Zużycie ok. 4 mb/m2. Stosowane wyłącznie w technicznych halach i garażach."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#webapp-rozstaw",
    "name": "Symulator Rozstawu i Zużycia Rur PN-EN",
    "description": "Interaktywny suwak pozwalający inwestorowi na dynamiczne dobieranie rozstawu osiowego rur i weryfikację wpływu tej decyzji na przeznaczenie pomieszczenia oraz zapotrzebowanie materiałowe.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-err-dark: #18181b; /* Ciemny grafit */
    --rk-err-panel: #27272a;
    --rk-err-brand: #e11d48; /* Czerwień ostrzegawcza */
    --rk-err-brand-light: #ffe4e6;
    --rk-err-accent: #f43f5e;
    --rk-err-warn: #d97706;
    --rk-err-text: #3f3f46;
    --rk-err-text-light: #71717a;
    --rk-err-bg: #fafafa;
    --rk-err-card: #ffffff;
    --rk-err-border: #e4e4e7;
}

.rk-error-scanner {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-err-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(225, 29, 72, 0.1);
    border: 1px solid var(--rk-err-border);
    overflow: hidden;
}

/* Nagłówek Sekcji */
.rk-err-header {
    background: var(--rk-err-dark);
    padding: 45px 50px 30px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-err-brand);
}

.rk-err-header::before {
    content: '!';
    position: absolute;
    right: 50px;
    top: -30px;
    font-size: 180px;
    font-weight: 900;
    color: rgba(255,255,255,0.04);
    line-height: 1;
    pointer-events: none;
}

.rk-err-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    color: #ffffff;
    display: flex;
    align-items: center;
    gap: 12px;
    position: relative;
    z-index: 2;
}

.rk-err-header p {
    font-size: 16px;
    line-height: 1.6;
    color: #a1a1aa;
    margin: 0;
    max-width: 750px;
    position: relative;
    z-index: 2;
}

/* Obszar Interaktywny */
.rk-err-app-body {
    padding: 40px 50px;
    display: grid;
    grid-template-columns: 320px 1fr;
    gap: 30px;
}

/* Menu Błędów (Sidebar) */
.rk-err-nav {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-err-btn {
    text-align: left;
    background: var(--rk-err-card);
    border: 1px solid var(--rk-err-border);
    padding: 16px 20px;
    border-radius: 16px;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 15px;
    position: relative;
    overflow: hidden;
}

.rk-err-btn::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    width: 4px;
    height: 100%;
    background: transparent;
    transition: background 0.3s;
}

.rk-err-btn:hover {
    border-color: #fca5a5;
    background: #fff1f2;
}

.rk-err-btn.active {
    background: #fff1f2;
    border-color: var(--rk-err-brand);
    box-shadow: 0 10px 15px -3px rgba(225, 29, 72, 0.08);
}

.rk-err-btn.active::before {
    background: var(--rk-err-brand);
}

.rk-err-btn-icon {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    background: #f4f4f5;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-err-text-light);
    transition: all 0.3s;
    flex-shrink: 0;
}

.rk-err-btn.active .rk-err-btn-icon {
    background: var(--rk-err-brand);
    color: #ffffff;
}

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

.rk-err-btn-text {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-err-text);
    line-height: 1.3;
}

.rk-err-btn.active .rk-err-btn-text {
    color: var(--rk-err-brand);
}

/* Wyświetlacz Błędu (Main Display) */
.rk-err-display {
    background: var(--rk-err-card);
    border: 1px solid var(--rk-err-border);
    border-radius: 20px;
    padding: 35px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    display: flex;
    flex-direction: column;
}

.rk-err-visual {
    height: 180px;
    background: var(--rk-err-dark);
    border-radius: 16px;
    margin-bottom: 25px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    position: relative;
    box-shadow: inset 0 10px 20px rgba(0,0,0,0.3);
}

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

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

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

.rk-err-content a {
    color: var(--rk-err-brand);
    font-weight: 700;
    text-decoration: underline;
    text-decoration-color: transparent;
    transition: all 0.2s;
}

.rk-err-content a:hover {
    text-decoration-color: var(--rk-err-brand);
}

.rk-err-alert-box {
    background: #fef2f2;
    border-left: 4px solid var(--rk-err-brand);
    padding: 15px 20px;
    border-radius: 0 12px 12px 0;
    font-size: 14px;
    font-weight: 700;
    color: #9f1239;
    display: flex;
    align-items: center;
    gap: 10px;
    line-height: 1.4;
}

.rk-err-alert-box svg { flex-shrink: 0; }

/* Animacje SVG zależne od błędu */
@keyframes fracturePulse {
    0% { opacity: 0; transform: scale(0.8); }
    50% { opacity: 1; transform: scale(1.2); }
    100% { opacity: 0; transform: scale(0.8); }
}
.anim-fracture { animation: fracturePulse 1.5s infinite; transform-origin: center; fill: var(--rk-err-brand); }

@keyframes waterDrip {
    0% { transform: translateY(-10px); opacity: 0; }
    30% { opacity: 1; }
    100% { transform: translateY(30px); opacity: 0; }
}
.anim-drip { animation: waterDrip 1.5s infinite linear; fill: var(--rk-err-brand); }
.anim-drip-delay { animation: waterDrip 1.5s infinite linear; animation-delay: 0.75s; fill: var(--rk-err-brand); }

@keyframes guillotineShift {
    0% { transform: translateY(0); }
    50% { transform: translateY(8px); }
    100% { transform: translateY(0); }
}
.anim-slab-move { animation: guillotineShift 2s infinite ease-in-out; }

@keyframes heatLossFlow {
    0% { stroke-dashoffset: 200; }
    100% { stroke-dashoffset: 0; }
}
.anim-flow-long { 
    stroke-dasharray: 20 10; 
    animation: heatLossFlow 3s linear infinite; 
}

@keyframes needleDrop {
    0% { transform: rotate(45deg); }
    20% { transform: rotate(45deg); }
    40% { transform: rotate(-45deg); }
    80% { transform: rotate(-45deg); }
    100% { transform: rotate(45deg); }
}
.anim-needle { animation: needleDrop 4s infinite cubic-bezier(0.4, 0, 0.2, 1); transform-origin: 100px 70px; }

/* RWD */
@media (max-width: 768px) {
    .rk-err-header, .rk-err-app-body { padding: 30px 20px; }
    .rk-err-app-body { grid-template-columns: 1fr; gap: 20px; }
    .rk-err-nav { flex-direction: row; overflow-x: auto; padding-bottom: 10px; scrollbar-width: none; }
    .rk-err-nav::-webkit-scrollbar { display: none; }
    .rk-err-btn { min-width: 220px; flex-shrink: 0; padding: 15px; }
    .rk-err-visual { height: 160px; }
    .rk-err-content h3 { font-size: 20px; }
}
</style>

<div class="rk-error-scanner">
    <div class="rk-err-header">
        <h2>
            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Najczęstsze błędy wykonawcze
        </h2>
        <p>Błędy popełnione na etapie rozkładania rur PEX/PERT są niemożliwe do skorygowania po wylaniu jastrychu. Uruchom skaner błędów, aby dowiedzieć się, co niszczy instalację i jak uniknąć kucia posadzek.</p>
    </div>

    <div class="rk-err-app-body">
        <div class="rk-err-nav" id="rkErrNav">
            <button class="rk-err-btn active" data-error="bend">
                <div class="rk-err-btn-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12A10 10 0 1 1 12 2"></path></svg>
                </div>
                <span class="rk-err-btn-text">Złamanie rury (Przewężenie)</span>
            </button>
            <button class="rk-err-btn" data-error="joint">
                <div class="rk-err-btn-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="4" y1="12" x2="20" y2="12"></line><line x1="12" y1="4" x2="12" y2="20"></line></svg>
                </div>
                <span class="rk-err-btn-text">Złączka w wylewce</span>
            </button>
            <button class="rk-err-btn" data-error="dilation">
                <div class="rk-err-btn-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="12" y1="3" x2="12" y2="21"></line></svg>
                </div>
                <span class="rk-err-btn-text">Brak dylatacji (Gilotyna)</span>
            </button>
            <button class="rk-err-btn" data-error="length">
                <div class="rk-err-btn-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
                </div>
                <span class="rk-err-btn-text">Zbyt długa pętla (>100mb)</span>
            </button>
            <button class="rk-err-btn" data-error="pressure">
                <div class="rk-err-btn-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                </div>
                <span class="rk-err-btn-text">Brak próby ciśnieniowej</span>
            </button>
        </div>

        <div class="rk-err-display">
            <div class="rk-err-visual" id="errVisual">
                </div>
            
            <div class="rk-err-content">
                <h3 id="errTitle">Złamanie rury (za mały promień gięcia)</h3>
                <p id="errDesc">Wykonawcy, próbując zagęścić rozstaw na siłę bez użycia sprężyn gnących, doprowadzają do załamania rury (tzw. przewężenia). W tym miejscu drastycznie rośnie opór hydrauliczny, a osłabiona struktura polimeru grozi pęknięciem. Więcej o trwałości materiałów w artykule o <a href="https://projekt-ogrzewania.pl/wytrzymalosc-rur-do-ogrzewania-podlogowego-kompleksowy-przewodnik/">wytrzymałości rur PEX</a>.</p>
                
                <div class="rk-err-alert-box" id="errAlert">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                    <span id="errAlertText">Norma EN ISO 15875: Min. promień gięcia to 5 x d (ok. 8 cm).</span>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const buttons = document.querySelectorAll('.rk-err-btn');
    const visual = document.getElementById('errVisual');
    const title = document.getElementById('errTitle');
    const desc = document.getElementById('errDesc');
    const alertText = document.getElementById('errAlertText');

    const errorData = {
        "bend": {
            title: "Złamanie rury (za mały promień gięcia)",
            desc: "Wykonawcy, próbując zagęścić rozstaw na siłę bez użycia sprężyn gnących, doprowadzają do załamania rury (tzw. przewężenia). W tym miejscu drastycznie rośnie opór hydrauliczny, a osłabiona struktura polimeru grozi pęknięciem. Więcej w <a href='https://projekt-ogrzewania.pl/wytrzymalosc-rur-do-ogrzewania-podlogowego-kompleksowy-przewodnik/'>przewodniku o wytrzymałości rur</a>.",
            alert: "Norma EN ISO 15875: Min. promień gięcia to 5 x d (ok. 8 cm dla rury 16mm).",
            svg: `<svg viewBox="0 0 200 100" fill="none" stroke="currentColor">
                    <path d="M 20 80 Q 100 -50 180 80" stroke="#4b5563" stroke-width="12" stroke-linecap="round"/>
                    <path d="M 90 25 L 110 25" stroke="#e11d48" stroke-width="8" stroke-linecap="round"/>
                    <circle cx="100" cy="25" r="8" class="anim-fracture" />
                  </svg>`
        },
        "joint": {
            title: "Łączenie rur w wylewce",
            desc: "Absolutną, nienaruszalną zasadą jest prowadzenie każdego obwodu od rozdzielacza do rozdzielacza w jednym kawałku. Zastosowanie złączki wewnątrz warstwy betonu w celu 'dosztukowania' brakującego metra rury to kardynalny błąd i potencjalne ognisko korozji galwanicznej.",
            alert: "Zagrożenie: Niewykrywalny wyciek, spadek ciśnienia i konieczność kucia posadzki.",
            svg: `<svg viewBox="0 0 200 100" fill="none" stroke="currentColor">
                    <rect x="20" y="40" width="75" height="12" fill="#4b5563" rx="4"/>
                    <rect x="105" y="40" width="75" height="12" fill="#4b5563" rx="4"/>
                    <rect x="85" y="34" width="30" height="24" fill="#a1a1aa" rx="2" stroke="#3f3f46" stroke-width="2"/>
                    <circle cx="100" cy="65" r="4" class="anim-drip" />
                    <circle cx="100" cy="65" r="3" class="anim-drip-delay" />
                  </svg>`
        },
        "dilation": {
            title: "Brak dylatacji i peszli w drzwiach",
            desc: "Płyta grzewcza pracuje termicznie. Brak <a href='https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/'>szczelin dylatacyjnych</a> w progach drzwi oraz brak rur ochronnych (peszli) powoduje, że naprężony, kurczący się beton działa jak gilotyna, ścinając rurę grzewczą po kilku sezonach.",
            alert: "Skutek: Płyty betonowe z czasem obcinają instalację mechaniczną w poprzek.",
            svg: `<svg viewBox="0 0 200 100" fill="none" stroke="currentColor">
                    <rect x="30" y="20" width="65" height="60" fill="#3f3f46" rx="2" />
                    <rect x="105" y="20" width="65" height="60" fill="#3f3f46" rx="2" class="anim-slab-move" />
                    <path d="M 20 50 L 180 50" stroke="#e11d48" stroke-width="8" stroke-linecap="round"/>
                    <path d="M 100 20 L 100 80" stroke="#f43f5e" stroke-width="2" stroke-dasharray="4 4" />
                  </svg>`
        },
        "length": {
            title: "Zbyt długa pętla (Przekroczenie limitu oporów)",
            desc: "Każda rura stawia opór płynącej wodzie. Jeśli ułożysz <a href='https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/'>pętlę dłuższą niż 100 mb</a> (dla średnicy 16mm), opór hydrauliczny przekroczy możliwości standardowej pompy obiegowej. Woda po prostu nie dopłynie do końca układu.",
            alert: "Skutek: Ostatnie metry podłogi pozostają permanentnie zimne pomimo działania kotła.",
            svg: `<svg viewBox="0 0 200 100" fill="none" stroke="currentColor">
                    <path d="M 20 50 Q 60 20 100 50 T 180 50" stroke="#4b5563" stroke-width="16" stroke-linecap="round"/>
                    <path d="M 20 50 Q 60 20 100 50 T 180 50" stroke="url(#heatGradient)" stroke-width="8" stroke-linecap="round" class="anim-flow-long"/>
                    <defs>
                      <linearGradient id="heatGradient" x1="0%" y1="0%" x2="100%" y2="0%">
                        <stop offset="0%" stop-color="#ef4444" />
                        <stop offset="50%" stop-color="#f59e0b" />
                        <stop offset="100%" stop-color="#3b82f6" />
                      </linearGradient>
                    </defs>
                  </svg>`
        },
        "pressure": {
            title: "Brak próby ciśnieniowej przed wylewką",
            desc: "Zalewanie rur jastrychem bez wcześniejszego nabicia ich wodą lub powietrzem (na min. 6 bar) to hazard. <a href='https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/'>Próba szczelności</a> nie tylko wykrywa fabryczne wady rury, ale też usztywnia ją, zapobiegając zgnieceniu pod ciężarem wylewki.",
            alert: "Zagrożenie: Odrzucenie roszczeń gwarancyjnych przez producenta rur w razie awarii.",
            svg: `<svg viewBox="0 0 200 100" fill="none" stroke="currentColor">
                    <circle cx="100" cy="70" r="40" fill="#3f3f46" stroke="#52525b" stroke-width="4"/>
                    <path d="M 70 70 A 30 30 0 0 1 130 70" stroke="#e11d48" stroke-width="6" stroke-linecap="round"/>
                    <path d="M 80 70 A 20 20 0 0 1 120 70" stroke="#10b981" stroke-width="6" stroke-linecap="round"/>
                    <circle cx="100" cy="70" r="4" fill="#ffffff"/>
                    <line x1="100" y1="70" x2="120" y2="50" stroke="#ffffff" stroke-width="3" stroke-linecap="round" class="anim-needle"/>
                  </svg>`
        }
    };

    function loadErrorData(errorKey) {
        const data = errorData[errorKey];
        title.innerHTML = data.title;
        desc.innerHTML = data.desc;
        alertText.innerHTML = data.alert;
        visual.innerHTML = data.svg;
    }

    buttons.forEach(btn => {
        btn.addEventListener('click', function() {
            buttons.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            
            const errKey = this.getAttribute('data-error');
            
            visual.style.opacity = 0;
            setTimeout(() => {
                loadErrorData(errKey);
                visual.style.opacity = 1;
            }, 200);
        });
    });

    loadErrorData('bend');
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/"
    },
    "headline": "Najczęstsze błędy wykonawcze przy układaniu rur",
    "description": "Zestawienie najgroźniejszych błędów instalacyjnych podłogówki: zbyt mały promień gięcia, łączenie rur w wylewce, brak dylatacji, przekroczenie długości 100mb pętli oraz brak próby ciśnieniowej.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-05",
    "dateModified": "2026-06-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#dataset-bledy",
    "name": "Katalog błędów i limitów mechanicznych rur PEX/PERT",
    "description": "Techniczne podsumowanie najczęstszych przyczyn awarii systemów ogrzewania płaszczyznowego z powiązaniem do norm montażowych i fizyki budowli.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błędy przy montażu podłogówki",
      "złamanie rury pex promień gięcia",
      "łączenie rur pod wylewką",
      "brak dylatacji ogrzewanie podłogowe",
      "maksymalna długość pętli podłogówki 16mm",
      "próba ciśnieniowa ogrzewania podłogowego"
    ],
    "measurementTechnique": "Weryfikacja jakości ułożenia pętli grzewczych na podstawie norm (EN ISO 15875 dla zginania polimerów), limitów hydraulicznych oraz wymogów dla jastrychów pływających.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Błąd 1: Przekroczenie minimalnego promienia gięcia 5 x d (8 cm dla rury 16mm), co niszczy strukturę polimeru.",
        "Błąd 2: Stosowanie jakichkolwiek złączek zaprasowywanych i skręcanych wewnątrz betonu.",
        "Błąd 3: Brak profili dylatacyjnych oraz peszli na rurach przechodzących przez strefy drzwiowe.",
        "Błąd 4: Ułożenie pętli grzewczej dłuższej niż 100 metrów bieżących, co blokuje przepływ wody.",
        "Błąd 5: Zalewanie rur jastrychem bez wcześniejszej weryfikacji szczelności (min. 6 bar)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#webapp-bledy",
    "name": "Skaner Ryzyka Błędów Wykonawczych",
    "description": "Aplikacja typu wizualizator, demonstrująca inwestorom mechanikę powstawania uszkodzeń instalacji (złamania, wycieki złączek, ścinanie przez beton, opory hydrauliczne i spadki ciśnienia) wraz z objaśnieniem norm zapobiegających usterkom.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-pro-dark: #1e1b4b; /* Głęboki granat/indygo dla sekcji premium */
    --rk-pro-panel: #312e81;
    --rk-pro-brand: #6366f1;
    --rk-pro-brand-light: #e0e7ff;
    --rk-pro-accent: #818cf8;
    --rk-pro-success: #10b981;
    --rk-pro-danger: #ef4444;
    --rk-pro-warning: #f59e0b;
    --rk-pro-text: #334155;
    --rk-pro-text-light: #64748b;
    --rk-pro-bg: #f8fafc;
    --rk-pro-card: #ffffff;
    --rk-pro-border: #e2e8f0;
}

.rk-project-wrapper {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-pro-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(30, 27, 75, 0.15);
    border: 1px solid var(--rk-pro-border);
    overflow: hidden;
}

/* Nagłówek H2 */
.rk-pro-header {
    background: var(--rk-pro-dark);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    overflow: hidden;
}

.rk-pro-header::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: radial-gradient(circle at 80% 20%, rgba(99, 102, 241, 0.3) 0%, transparent 60%);
    pointer-events: none;
}

.rk-pro-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 15px 0;
    line-height: 1.3;
    position: relative;
    z-index: 2;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-pro-header p {
    font-size: 16px;
    line-height: 1.6;
    color: #c7d2fe;
    margin: 0;
    max-width: 750px;
    position: relative;
    z-index: 2;
}

/* Sekcja Interaktywna - Przełącznik */
.rk-pro-interactive {
    padding: 40px 50px;
}

.rk-pro-toggle-container {
    background: #ffffff;
    border: 1px solid var(--rk-pro-border);
    border-radius: 20px;
    padding: 10px;
    display: flex;
    position: relative;
    margin-bottom: 40px;
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.02);
}

.rk-pro-toggle-btn {
    flex: 1;
    padding: 18px 20px;
    border: none;
    background: transparent;
    border-radius: 14px;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-pro-text-light);
    cursor: pointer;
    position: relative;
    z-index: 2;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.rk-pro-toggle-btn svg {
    width: 20px;
    height: 20px;
    transition: transform 0.3s;
}

.rk-pro-toggle-btn.active[data-state="amateur"] {
    color: var(--rk-pro-danger);
}

.rk-pro-toggle-btn.active[data-state="pro"] {
    color: var(--rk-pro-success);
}

/* Animowane tło przełącznika */
.rk-pro-toggle-bg {
    position: absolute;
    top: 10px;
    bottom: 10px;
    width: calc(50% - 10px);
    border-radius: 14px;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.4s;
    z-index: 1;
}

.rk-pro-toggle-container[data-current="amateur"] .rk-pro-toggle-bg {
    transform: translateX(0);
    background-color: #fef2f2;
    border: 1px solid #fecaca;
    box-shadow: 0 4px 6px -1px rgba(239, 68, 68, 0.1);
}

.rk-pro-toggle-container[data-current="pro"] .rk-pro-toggle-bg {
    transform: translateX(100%);
    background-color: #ecfdf5;
    border: 1px solid #a7f3d0;
    box-shadow: 0 4px 6px -1px rgba(16, 185, 129, 0.1);
}

/* Kafelki Wyników */
.rk-pro-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.rk-pro-card {
    background: var(--rk-pro-card);
    border: 1px solid var(--rk-pro-border);
    border-radius: 18px;
    padding: 30px 20px;
    text-align: center;
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.02);
    position: relative;
    overflow: hidden;
    transition: all 0.3s ease;
}

.rk-pro-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: #e2e8f0;
    transition: background-color 0.4s;
}

.rk-pro-card.state-danger::before { background: var(--rk-pro-danger); }
.rk-pro-card.state-success::before { background: var(--rk-pro-success); }

.rk-pro-icon-box {
    width: 60px;
    height: 60px;
    margin: 0 auto 20px auto;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f1f5f9;
    transition: all 0.4s;
}

.rk-pro-card.state-danger .rk-pro-icon-box { background: #fef2f2; color: var(--rk-pro-danger); }
.rk-pro-card.state-success .rk-pro-icon-box { background: #ecfdf5; color: var(--rk-pro-success); }

.rk-pro-icon-box svg {
    width: 30px;
    height: 30px;
}

.rk-pro-metric {
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--rk-pro-text-light);
    margin-bottom: 10px;
}

.rk-pro-value {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-pro-text);
    margin-bottom: 10px;
    min-height: 52px; /* Stabilizacja wysokości */
    display: flex;
    align-items: center;
    justify-content: center;
    transition: color 0.3s;
}

.rk-pro-card.state-danger .rk-pro-value { color: var(--rk-pro-danger); }
.rk-pro-card.state-success .rk-pro-value { color: var(--rk-pro-success); }

.rk-pro-desc {
    font-size: 14px;
    line-height: 1.5;
    color: var(--rk-pro-text);
}

.rk-pro-desc a {
    color: var(--rk-pro-brand);
    font-weight: 600;
    text-decoration: underline;
    text-decoration-color: transparent;
    transition: all 0.2s;
}

.rk-pro-desc a:hover {
    text-decoration-color: var(--rk-pro-brand);
}

/* Animacje SVG */
@keyframes shake {
    0%, 100% { transform: translateX(0); }
    25% { transform: translateX(-3px) rotate(-5deg); }
    75% { transform: translateX(3px) rotate(5deg); }
}
.state-danger .anim-icon { animation: shake 0.5s ease-in-out; }

@keyframes popIn {
    0% { transform: scale(0.8); opacity: 0; }
    100% { transform: scale(1); opacity: 1; }
}
.state-success .anim-icon { animation: popIn 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275); }

/* CTA Area */
.rk-pro-cta {
    background: #ffffff;
    padding: 40px 50px;
    text-align: center;
    border-top: 1px solid var(--rk-pro-border);
}

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

.rk-pro-cta p {
    color: var(--rk-pro-text-light);
    margin: 0 auto 25px auto;
    max-width: 600px;
    line-height: 1.6;
}

.rk-pro-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-pro-brand);
    color: #ffffff;
    font-size: 17px;
    font-weight: 800;
    padding: 18px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(99, 102, 241, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-pro-btn:hover {
    transform: translateY(-4px);
    background: #4f46e5;
    box-shadow: 0 15px 30px -5px rgba(99, 102, 241, 0.5);
}

@media (max-width: 768px) {
    .rk-pro-header, .rk-pro-interactive, .rk-pro-cta { padding: 30px 20px; }
    .rk-pro-toggle-container { flex-direction: column; }
    .rk-pro-toggle-bg { width: calc(100% - 20px); height: calc(50% - 10px); }
    .rk-pro-toggle-container[data-current="pro"] .rk-pro-toggle-bg { transform: translateY(100%); left: 10px; }
    .rk-pro-grid { grid-template-columns: 1fr; }
    .rk-pro-btn { width: 100%; padding: 16px; }
}
</style>

<div class="rk-project-wrapper">
    <div class="rk-pro-header">
        <h2>
            <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="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Przejście do realizacji: Dlaczego gotowy projekt to oszczędność?
        </h2>
        <p>Inwestorzy często rezygnują z profesjonalnego projektu instalacji, uznając go za zbędny wydatek rzędu kilkuset złotych, po czym wydają tysiące na przewymiarowane materiały lub borykają się z poprawkami. Zobacz na symulacji poniżej, jak decyzja o projekcie wpływa na koszty materiałowe i eksploatację.</p>
    </div>

    <div class="rk-pro-interactive">
        <div class="rk-pro-toggle-container" id="rkProToggle" data-current="amateur">
            <div class="rk-pro-toggle-bg"></div>
            <button class="rk-pro-toggle-btn active" data-state="amateur">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                Robota &#8222;na oko&#8221; (Brak projektu)
            </button>
            <button class="rk-pro-toggle-btn" data-state="pro">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                Projekt OZC i Podłogówki
            </button>
        </div>

        <div class="rk-pro-grid">
            <div class="rk-pro-card state-danger" id="proCard1">
                <div class="rk-pro-icon-box">
                    <svg class="anim-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" id="proIcon1"><path d="M22 12H2"></path><path d="M5 8v8M10 8v8M14 8v8M19 8v8"></path></svg>
                </div>
                <div class="rk-pro-metric">Zużycie i Odpady</div>
                <div class="rk-pro-value" id="proVal1">Odpady > 15%<br>Braki na budowie</div>
                <div class="rk-pro-desc" id="proDesc1">
                    Kupując rury w ciemno, pętle nie pasują do zwojów (np. 200 mb). Zostają bezużyteczne odcinki po 30 mb, a na ostatnią pętlę brakuje materiału.
                </div>
            </div>

            <div class="rk-pro-card state-danger" id="proCard2">
                <div class="rk-pro-icon-box">
                    <svg class="anim-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" id="proIcon2"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                </div>
                <div class="rk-pro-metric">Równoważenie układu</div>
                <div class="rk-pro-value" id="proVal2">2 sezony grzewcze<br>prób i błędów</div>
                <div class="rk-pro-desc" id="proDesc2">
                    Brak wytycznych nastaw dla <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrów</a>. Kręcisz zaworami na oślep, co powoduje, że jedna pętla grzeje za mocno, a inna wcale.
                </div>
            </div>

            <div class="rk-pro-card state-danger" id="proCard3">
                <div class="rk-pro-icon-box">
                    <svg class="anim-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" id="proIcon3"><path d="M18 20V10"></path><path d="M12 20V4"></path><path d="M6 20v-6"></path></svg>
                </div>
                <div class="rk-pro-metric">Koszty Eksploatacji</div>
                <div class="rk-pro-value" id="proVal3">Przepalanie<br>energii</div>
                <div class="rk-pro-desc" id="proDesc3">
                    Przewymiarowana pompa ciepła lub kocioł taktuje (często się włącza). Brak synergii ze źródłem ciepła to wyższe rachunki za prąd/gaz.
                </div>
            </div>
        </div>
    </div>

    <div class="rk-pro-cta">
        <h4>Projekt to dokumentacja gwarantująca jakość</h4>
        <p>Kompletny projekt to nie tylko rysunek – to <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">precyzyjne zestawienie materiałowe</a>, obliczenia OZC oraz pewność optymalnej pracy systemu przez dekady.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-pro-btn">
            ZAMÓW PROJEKT OGRZEWANIA PODŁOGOWEGO
            <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="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const toggleContainer = document.getElementById('rkProToggle');
    const buttons = document.querySelectorAll('.rk-pro-toggle-btn');
    
    const cards = [
        document.getElementById('proCard1'),
        document.getElementById('proCard2'),
        document.getElementById('proCard3')
    ];
    
    const contentData = {
        amateur: [
            {
                val: "Odpady > 15%<br>Braki na budowie",
                desc: "Kupując rury w ciemno, pętle nie pasują do zwojów (np. 200 mb). Zostają bezużyteczne odcinki po 30 mb, a na ostatnią pętlę brakuje materiału."
            },
            {
                val: "2 sezony grzewcze<br>prób i błędów",
                desc: "Brak wytycznych nastaw dla <a href='https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/'>rotametrów</a>. Kręcisz zaworami na oślep, co powoduje, że jedna pętla grzeje za mocno, a inna wcale."
            },
            {
                val: "Przepalanie<br>energii",
                desc: "Źle dobrana pompa ciepła lub kocioł taktuje (często się włącza). Brak hydraulicznej synergii ze źródłem ciepła to wyższe rachunki za prąd/gaz."
            }
        ],
        pro: [
            {
                val: "Odpady < 2%<br>Zestawienie co do metra",
                desc: "Właściwe rozplanowanie pętli w projekcie redukuje odpad. Otrzymujesz precyzyjną listę zakupową – kupujesz dokładnie to, co jest potrzebne."
            },
            {
                val: "Kalibracja<br>w 10 minut",
                desc: "Otrzymujesz dokładne wytyczne nastaw wstępnych na rotametrach dla każdej z pętli. Równoważenie hydrauliczne wykonujesz natychmiast po montażu."
            },
            {
                val: "Maksymalna<br>Sprawność (COP)",
                desc: "Pewność, że źródło ciepła będzie pracować stabilnie i z najwyższą możliwą sprawnością energetyczną, co bezpośrednio przekłada się na oszczędności."
            }
        ]
    };

    function updateCards(state) {
        const data = contentData[state];
        const isPro = state === 'pro';

        cards.forEach((card, index) => {
            // Remove animation class to re-trigger it
            const icon = card.querySelector('.anim-icon');
            icon.classList.remove('anim-icon');
            
            // Force reflow
            void card.offsetWidth;

            // Update content
            card.querySelector('.rk-pro-value').innerHTML = data[index].val;
            card.querySelector('.rk-pro-desc').innerHTML = data[index].desc;

            // Update state classes
            if (isPro) {
                card.classList.remove('state-danger');
                card.classList.add('state-success');
            } else {
                card.classList.remove('state-success');
                card.classList.add('state-danger');
            }

            // Re-add animation class
            icon.classList.add('anim-icon');
        });
    }

    buttons.forEach(btn => {
        btn.addEventListener('click', function() {
            const state = this.getAttribute('data-state');
            
            // Update buttons
            buttons.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            
            // Update container bg
            toggleContainer.setAttribute('data-current', state);
            
            // Update UI cards
            updateCards(state);
        });
    });
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#article-projekt",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/"
    },
    "headline": "Przejście do realizacji: Dlaczego gotowy projekt ogrzewania podłogowego to realna oszczędność?",
    "description": "Szczegółowa analiza opłacalności wykonania profesjonalnego projektu OZC i podłogówki. Zobacz, jak redukuje to odpady rur PEX do 2% i ułatwia równoważenie rotametrów.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-05",
    "dateModified": "2026-06-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#dataset-projekt",
    "name": "Porównanie kosztów i strat materiałowych: Montaż bez projektu vs. Projekt OZC",
    "description": "Zestawienie analityczne pokazujące różnice w zużyciu rur, czasie kalibracji układu oraz efektywności źródła ciepła dla instalacji realizowanych na podstawie projektu vs. intuicji wykonawcy.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt instalacji ogrzewania podłogowego",
      "odpady rury pex",
      "równoważenie hydrauliczne podłogówki",
      "nastawy rotametrów",
      "projekt ozc"
    ],
    "measurementTechnique": "Kwantyfikacja wskaźników montażowych: % odpadu z rolki 200m rury, czas potrzebny na kalibrację przepływów (rotametry) w jednostkach czasu.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zużycie rur: Projekt zmniejsza odpad na budowie z ponad 15% do poziomu poniżej 2%.",
        "Równoważenie hydrauliczne: Gotowe wytyczne pozwalają zredukować czas kalibracji z wielu miesięcy do 10 minut.",
        "Koszty eksploatacji: Uniknięcie przewymiarowania i taktowania pompy ciepła zapewnia maksymalny możliwy wskaźnik COP."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#webapp-projekt",
    "name": "Symulator opłacalności projektu HVAC",
    "description": "Interaktywny przełącznik wizualizujący konsekwencje techniczne i finansowe montażu na oko w porównaniu do realizacji na bazie inżynierskiego projektu OZC.",
    "applicationCategory": "BusinessApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-cs-dark: #111827;
    --rk-cs-panel: #1f2937;
    --rk-cs-brand: #2563eb; /* Royal Blue */
    --rk-cs-brand-light: #dbeafe;
    --rk-cs-success: #059669; /* Emerald */
    --rk-cs-success-light: #d1fae5;
    --rk-cs-danger: #dc2626; /* Red */
    --rk-cs-danger-light: #fee2e2;
    --rk-cs-bg: #f8fafc;
    --rk-cs-card: #ffffff;
    --rk-cs-border: #e2e8f0;
    --rk-cs-text: #334155;
    --rk-cs-text-light: #64748b;
}

.rk-case-wrapper {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-cs-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(37, 99, 235, 0.1);
    border: 1px solid var(--rk-cs-border);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

/* Nagłówek Case Study */
.rk-cs-header {
    background: var(--rk-cs-dark);
    padding: 40px 50px 30px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-cs-brand);
}

.rk-cs-header::before {
    content: '';
    position: absolute;
    right: 0;
    top: 0;
    width: 300px;
    height: 100%;
    background: radial-gradient(ellipse at right, rgba(37, 99, 235, 0.2) 0%, transparent 70%);
    pointer-events: none;
}

.rk-cs-title {
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 20px;
}

.rk-cs-badge {
    background: var(--rk-cs-brand);
    color: #ffffff;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
}

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

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

/* Profil Eksperta w Case Study */
.rk-cs-author-bar {
    display: flex;
    align-items: center;
    gap: 15px;
    background: var(--rk-cs-card);
    padding: 20px 50px;
    border-bottom: 1px solid var(--rk-cs-border);
}

.rk-cs-author-photo {
    width: 50px;
    height: 50px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid var(--rk-cs-brand);
}

.rk-cs-author-info h4 {
    margin: 0 0 2px 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-cs-dark);
}

.rk-cs-author-info p {
    margin: 0;
    font-size: 13px;
    color: var(--rk-cs-text-light);
    font-weight: 600;
}

/* Sekcja Interaktywna */
.rk-cs-body {
    padding: 40px 50px;
}

/* Przełącznik Przed/Po */
.rk-cs-toggle {
    display: flex;
    background: #ffffff;
    border: 1px solid var(--rk-cs-border);
    border-radius: 16px;
    padding: 8px;
    margin-bottom: 35px;
    position: relative;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-cs-btn {
    flex: 1;
    padding: 16px 20px;
    background: transparent;
    border: none;
    border-radius: 12px;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-cs-text-light);
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    position: relative;
    z-index: 2;
}

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

.rk-cs-toggle-bg {
    position: absolute;
    top: 8px;
    bottom: 8px;
    width: calc(50% - 8px);
    border-radius: 12px;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.4s;
    z-index: 1;
}

.rk-cs-toggle[data-state="before"] .rk-cs-toggle-bg {
    transform: translateX(0);
    background: var(--rk-cs-danger-light);
    border: 1px solid #fca5a5;
}

.rk-cs-toggle[data-state="after"] .rk-cs-toggle-bg {
    transform: translateX(100%);
    background: var(--rk-cs-success-light);
    border: 1px solid #6ee7b7;
}

.rk-cs-toggle[data-state="before"] .rk-cs-btn[data-view="before"] { color: var(--rk-cs-danger); }
.rk-cs-toggle[data-state="after"] .rk-cs-btn[data-view="after"] { color: var(--rk-cs-success); }

/* Główny układ wyników */
.rk-cs-dashboard {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 30px;
}

/* Lewa strona - Parametry */
.rk-cs-metrics {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.rk-cs-card {
    background: var(--rk-cs-card);
    border: 1px solid var(--rk-cs-border);
    padding: 25px;
    border-radius: 16px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    transition: all 0.3s;
}

.rk-cs-icon {
    width: 40px;
    height: 40px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 15px;
    transition: background 0.3s, color 0.3s;
}

.rk-cs-icon svg { width: 22px; height: 22px; }

.rk-cs-label {
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-cs-text-light);
    margin-bottom: 8px;
    letter-spacing: 0.5px;
}

.rk-cs-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-cs-dark);
    margin-bottom: 6px;
    transition: color 0.3s;
}

.rk-cs-desc {
    font-size: 13px;
    color: var(--rk-cs-text);
    line-height: 1.4;
}

/* Prawa strona - Finanse i Pompa */
.rk-cs-summary {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-cs-finance-card {
    background: var(--rk-cs-dark);
    color: #ffffff;
    padding: 30px;
    border-radius: 16px;
    position: relative;
    overflow: hidden;
    transition: background 0.4s;
}

.rk-cs-finance-card::before {
    content: 'KOSZTORYS';
    position: absolute;
    top: 15px;
    right: 20px;
    font-size: 10px;
    font-weight: 800;
    color: rgba(255,255,255,0.2);
    letter-spacing: 2px;
}

.rk-cs-fin-label {
    font-size: 13px;
    color: #94a3b8;
    font-weight: 600;
    margin-bottom: 5px;
}

.rk-cs-fin-val {
    font-size: 38px;
    font-weight: 900;
    margin-bottom: 15px;
    line-height: 1;
    transition: color 0.3s;
}

.rk-cs-fin-sub {
    font-size: 14px;
    color: #cbd5e1;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 15px;
    border-top: 1px solid rgba(255,255,255,0.1);
}

.rk-cs-fin-sub strong { color: #ffffff; font-size: 16px; }

/* Dynamiczne stany (Danger/Success) */
.state-danger .rk-cs-icon { background: var(--rk-cs-danger-light); color: var(--rk-cs-danger); }
.state-danger .rk-cs-val { color: var(--rk-cs-danger); }
.state-danger-bg { background: #7f1d1d; }
.state-danger-text { color: #fca5a5; }

.state-success .rk-cs-icon { background: var(--rk-cs-success-light); color: var(--rk-cs-success); }
.state-success .rk-cs-val { color: var(--rk-cs-success); }
.state-success-bg { background: #064e3b; }
.state-success-text { color: #6ee7b7; }

/* Animacje UI */
.cs-anim-update {
    animation: csPop 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
@keyframes csPop {
    0% { transform: scale(0.95); opacity: 0.5; }
    50% { transform: scale(1.02); }
    100% { transform: scale(1); opacity: 1; }
}

@keyframes pumpPulse {
    0% { filter: drop-shadow(0 0 2px rgba(220, 38, 38, 0.5)); }
    50% { filter: drop-shadow(0 0 10px rgba(220, 38, 38, 0.8)); transform: scale(1.05); }
    100% { filter: drop-shadow(0 0 2px rgba(220, 38, 38, 0.5)); }
}
.anim-pump-bad { animation: pumpPulse 1s infinite; stroke: #ef4444; }

@keyframes pumpSmooth {
    0% { stroke-dashoffset: 20; }
    100% { stroke-dashoffset: 0; }
}
.anim-pump-good { stroke-dasharray: 5 5; animation: pumpSmooth 2s linear infinite; stroke: #10b981; }

@media (max-width: 850px) {
    .rk-cs-header, .rk-cs-author-bar, .rk-cs-body { padding: 30px 20px; }
    .rk-cs-dashboard { grid-template-columns: 1fr; }
    .rk-cs-metrics { grid-template-columns: 1fr; }
    .rk-cs-title { flex-direction: column; align-items: flex-start; gap: 10px; }
    .rk-cs-header h2 { font-size: 24px; }
}
</style>

<div class="rk-case-wrapper">
    <div class="rk-cs-header">
        <div class="rk-cs-title">
            <span class="rk-cs-badge">Case Study</span>
            <h2>Dom 200 m²: Gotowy projekt z sieci vs Optymalizacja OZC</h2>
        </div>
        <p>Pan Stanisław z Częstochowy buduje dom o powierzchni 200 m². Wraz z adaptacją otrzymał &#8222;darmowy&#8221; projekt podłogówki, w którym wszędzie zaplanowano rozstaw rur co 10 cm. Zobacz, ile kosztowałby go materiał i co stałoby się z pompą ciepła, gdybyśmy nie zainterweniowali i nie przeliczyli układu na nowo.</p>
    </div>

    <div class="rk-cs-author-bar">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-cs-author-photo">
        <div class="rk-cs-author-info">
            <h4>Analiza i Obliczenia: Robert Kucharski</h4>
            <p>Specjalista HVAC | Projekt-Ogrzewania.pl</p>
        </div>
    </div>

    <div class="rk-cs-body">
        
        <div class="rk-cs-toggle" id="csToggle" data-state="before">
            <div class="rk-cs-toggle-bg"></div>
            <button class="rk-cs-btn" data-view="before">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                Projekt &#8222;Darmowy&#8221; (Co 10 cm)
            </button>
            <button class="rk-cs-btn" data-view="after">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                Optymalizacja (Projekt OZC)
            </button>
        </div>

        <div class="rk-cs-dashboard">
            <div class="rk-cs-metrics">
                <div class="rk-cs-card" id="csCardPipe">
                    <div class="rk-cs-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 12H2"></path><path d="M5 8v8M10 8v8M14 8v8M19 8v8"></path></svg></div>
                    <div class="rk-cs-label">Zapotrzebowanie na Rurę</div>
                    <div class="rk-cs-val" id="csValPipe">2400 mb</div>
                    <div class="rk-cs-desc" id="csDescPipe">Ogromne przewymiarowanie. Z każdego zwoju 200m zostawałyby olbrzymie, bezużyteczne odpady (ścinki).</div>
                </div>

                <div class="rk-cs-card" id="csCardPump">
                    <div class="rk-cs-icon" id="csIconPump">
                        <svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="anim-pump-bad"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    </div>
                    <div class="rk-cs-label">Wpływ na Pompę Ciepła</div>
                    <div class="rk-cs-val" id="csValPump">Taktowanie</div>
                    <div class="rk-cs-desc" id="csDescPump">Zbyt gęsty układ dławi przepływ. Sprężarka włącza się i wyłącza co chwilę, drastycznie skracając żywotność pompy.</div>
                </div>
            </div>

            <div class="rk-cs-summary">
                <div class="rk-cs-finance-card state-danger-bg" id="csCardFin">
                    <div class="rk-cs-fin-label">Koszt samych rur (przy 4 zł/mb)</div>
                    <div class="rk-cs-fin-val state-danger-text" id="csValFin">9 600 PLN</div>
                    
                    <div class="rk-cs-fin-sub">
                        <span>Koszt projektu instalacji:</span>
                        <strong id="csValProj">0 PLN (Gotowiec)</strong>
                    </div>
                </div>
                
                <div class="rk-cs-card" style="background: #fffbeb; border-color: #fde68a;">
                    <div class="rk-cs-label" style="color: #b45309;">Wniosek Eksperta</div>
                    <div class="rk-cs-desc" style="color: #92400e; font-weight: 600;" id="csConclusion">
                        Brak uwzględnienia strefy klimatycznej i wyliczeń oporów to ukryty podatek. Instalator i tak doliczyłby sobie za robociznę przy układaniu nadmiarowych metrów rury.
                    </div>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const toggle = document.getElementById('csToggle');
    const buttons = document.querySelectorAll('.rk-cs-btn');
    
    const cardPipe = document.getElementById('csCardPipe');
    const cardPump = document.getElementById('csCardPump');
    const cardFin = document.getElementById('csCardFin');
    const iconPump = document.getElementById('csIconPump');
    
    const valPipe = document.getElementById('csValPipe');
    const descPipe = document.getElementById('csDescPipe');
    const valPump = document.getElementById('csValPump');
    const descPump = document.getElementById('csDescPump');
    const valFin = document.getElementById('csValFin');
    const valProj = document.getElementById('csValProj');
    const conclusion = document.getElementById('csConclusion');

    const data = {
        before: {
            pipeVal: "2400 mb",
            pipeDesc: "Ogromne przewymiarowanie (rozstaw 10 cm). Brak optymalizacji zwojów generuje potężne odpady.",
            pumpVal: "Taktowanie",
            pumpDesc: "Zbyt gęsty układ dławi przepływy wodne. Sprężarka szarpie pracą, co niszczy żywotność pompy ciepła.",
            finVal: "9 600 PLN",
            projVal: "0 PLN (Gotowiec)",
            concl: "Brak uwzględnienia strefy klimatycznej i wyliczeń oporów to ukryty podatek. Wyższe koszty materiału i szybsza awaria pompy ciepła.",
            stateClass: "state-danger",
            bgClass: "state-danger-bg",
            textClass: "state-danger-text",
            svg: `<svg viewBox="0 0 24 24" fill="none" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="anim-pump-bad"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>`
        },
        after: {
            pipeVal: "1600 mb",
            pipeDesc: "Zoptymalizowany rozstaw (15 cm, łazienki 10 cm). Rury idealnie rozplanowane pod pełne kręgi, odpady zredukowane do 2%.",
            pumpVal: "Płynna praca",
            pumpDesc: "Zbilansowane opory hydrauliczne. Pompa ciepła pracuje na zadanym przepływie (Delta T), wydłużając żywotność sprężarki o lata.",
            finVal: "6 400 PLN",
            projVal: "700 PLN (Projekt)",
            concl: "Optymalizacja OZC obniżyła koszty materiału o 3 200 PLN. Odejmując 700 PLN za projekt, inwestor jest 2 500 PLN na plusie przed startem prac.",
            stateClass: "state-success",
            bgClass: "state-success-bg",
            textClass: "state-success-text",
            svg: `<svg viewBox="0 0 24 24" fill="none" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="anim-pump-good"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>`
        }
    };

    function triggerAnim(el) {
        el.classList.remove('cs-anim-update');
        void el.offsetWidth;
        el.classList.add('cs-anim-update');
    }

    function updateView(state) {
        const d = data[state];
        
        // Remove old states
        cardPipe.className = 'rk-cs-card';
        cardPump.className = 'rk-cs-card';
        cardFin.className = 'rk-cs-finance-card';
        valFin.className = 'rk-cs-fin-val';

        // Add new states
        cardPipe.classList.add(d.stateClass);
        cardPump.classList.add(d.stateClass);
        cardFin.classList.add(d.bgClass);
        valFin.classList.add(d.textClass);

        // Update Text
        valPipe.innerHTML = d.pipeVal;
        descPipe.innerHTML = d.pipeDesc;
        valPump.innerHTML = d.pumpVal;
        descPump.innerHTML = d.pumpDesc;
        valFin.innerHTML = d.finVal;
        valProj.innerHTML = d.projVal;
        conclusion.innerHTML = d.concl;
        iconPump.innerHTML = d.svg;

        // Animate
        [valPipe, valPump, valFin].forEach(triggerAnim);
    }

    buttons.forEach(btn => {
        btn.addEventListener('click', function() {
            const state = this.getAttribute('data-view');
            toggle.setAttribute('data-state', state);
            updateView(state);
        });
    });

    // Init
    cardPipe.classList.add('state-danger');
    cardPump.classList.add('state-danger');
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/"
    },
    "headline": "Case Study: Ile rur PEX potrzeba do domu 200 m² i jak oszczędzić 3200 zł?",
    "description": "Analiza rzeczywistego projektu z Częstochowy. Sprawdź, dlaczego rozstaw rur co 10 cm niszczy pompę ciepła i jak profesjonalne obliczenia OZC zmniejszyły rachunek za materiał.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-05",
    "dateModified": "2026-06-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#dataset-casestudy",
    "name": "Analiza finansowa i hydrauliczna: Gotowy projekt vs Projekt OZC",
    "description": "Zestawienie kosztów zakupu rur PEX oraz parametrów pracy pompy ciepła na podstawie optymalizacji instalacji dla budynku 200 mkw.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ile rury do ogrzewania podłogowego 200m2",
      "projekt ozc cena",
      "taktowanie pompy ciepła podłogówka",
      "rozstaw rur 10 czy 15 cm",
      "koszt materiału podłogówka"
    ],
    "measurementTechnique": "Kwantyfikacja strat finansowych (PLN) na bazie ceny 4 zł/mb rury PEX przy uwzględnieniu przewymiarowania rozstawu (10 cm) oraz weryfikacja oporów układu wpływających na zjawisko taktowania sprężarki.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Stan pierwotny (Błąd): Rozstaw 10 cm generował zapotrzebowanie 2400 mb. Koszt rury: 9600 PLN. Układ dławił pompę ciepła powodując taktowanie.",
        "Optymalizacja OZC: Zastosowanie rozstawu 15 cm i dopasowanie stref klimatycznych zmniejszyło zapotrzebowanie do 1600 mb.",
        "Wynik finansowy: Koszt rury spadł do 6400 PLN. Koszt projektu 700 PLN. Czysta oszczędność inwestora to 2500 PLN przed rozpoczęciem prac instalacyjnych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#webapp-casestudy",
    "name": "Symulator Oszczędności OZC - Case Study",
    "description": "Interaktywny panel przełączania (toggle) weryfikujący koszty zakupowe i ryzyko awarii pompy ciepła w zależności od wybranego wariantu projektowania (na oko vs inżyniersko).",
    "applicationCategory": "BusinessApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-panel: #1e293b;
    --rk-faq-brand: #0284c7;
    --rk-faq-brand-light: #e0f2fe;
    --rk-faq-accent: #38bdf8;
    --rk-faq-text: #334155;
    --rk-faq-text-light: #64748b;
    --rk-faq-bg: #ffffff;
    --rk-faq-bg-alt: #f8fafc;
    --rk-faq-border: #e2e8f0;
    --rk-faq-danger: #ef4444;
}

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

/* Nagłówek Sekcji */
.rk-faq-header {
    background: var(--rk-faq-dark);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-faq-brand);
}

.rk-faq-header::before {
    content: '?';
    position: absolute;
    right: 40px;
    top: -20px;
    font-size: 150px;
    font-weight: 900;
    color: rgba(255,255,255,0.03);
    line-height: 1;
    pointer-events: none;
}

.rk-faq-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    color: #ffffff;
    display: flex;
    align-items: center;
    gap: 12px;
    position: relative;
    z-index: 2;
}

.rk-faq-header p {
    font-size: 16px;
    line-height: 1.6;
    color: #cbd5e1;
    margin: 0;
    max-width: 750px;
    position: relative;
    z-index: 2;
}

/* Lista Akordeonowa */
.rk-faq-list {
    padding: 20px 50px 40px;
    background: var(--rk-faq-bg-alt);
}

.rk-faq-item {
    background: var(--rk-faq-bg);
    border: 1px solid var(--rk-faq-border);
    border-radius: 16px;
    margin-bottom: 15px;
    transition: all 0.3s ease;
    overflow: hidden;
}

.rk-faq-item:hover {
    border-color: #bae6fd;
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05);
}

.rk-faq-item.active {
    border-color: var(--rk-faq-brand);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.15);
}

/* Przycisk Pytania (H3 wewnątrz dla SEO) */
.rk-faq-trigger {
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    padding: 24px 30px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    transition: background 0.3s;
}

.rk-faq-trigger:hover {
    background: #fcfdfd;
}

.rk-faq-question-content {
    display: flex;
    align-items: center;
    gap: 18px;
}

.rk-faq-icon {
    flex-shrink: 0;
    width: 42px;
    height: 42px;
    background: var(--rk-faq-brand-light);
    color: var(--rk-faq-brand);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s;
}

.rk-faq-item.active .rk-faq-icon {
    background: var(--rk-faq-brand);
    color: #ffffff;
}

.rk-faq-icon svg {
    width: 22px;
    height: 22px;
    stroke-width: 2;
}

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

.rk-faq-item.active .rk-faq-trigger h3 {
    color: var(--rk-faq-brand);
}

.rk-faq-toggle-icon {
    flex-shrink: 0;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    border: 2px solid var(--rk-faq-border);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-faq-text-light);
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

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

/* Treść Odpowiedzi */
.rk-faq-answer {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s ease;
    opacity: 0;
}

.rk-faq-item.active .rk-faq-answer {
    opacity: 1;
}

.rk-faq-answer-inner {
    padding: 0 30px 30px 88px; /* Wcięcie dopasowane do ikony */
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-faq-text);
}

.rk-faq-answer-inner a {
    color: var(--rk-faq-brand);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: border-color 0.2s;
}

.rk-faq-answer-inner a:hover {
    border-color: var(--rk-faq-brand);
}

.rk-faq-highlight {
    background: #fef2f2;
    color: var(--rk-faq-danger);
    padding: 2px 6px;
    border-radius: 4px;
    font-weight: 700;
}

/* CTA na dole */
.rk-faq-cta {
    background: #ffffff;
    padding: 45px 50px;
    text-align: center;
    border-top: 1px solid var(--rk-faq-border);
}

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

.rk-faq-cta p {
    color: var(--rk-faq-text-light);
    margin: 0 auto 25px auto;
    max-width: 600px;
    line-height: 1.6;
}

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

.rk-faq-btn-massive:hover {
    transform: translateY(-5px);
    background: #1e293b;
    box-shadow: 0 15px 30px -5px rgba(15, 23, 42, 0.5);
    border-color: #475569;
}

.rk-faq-btn-massive svg {
    transition: transform 0.3s;
}

.rk-faq-btn-massive:hover svg {
    transform: translateX(5px);
}

@media (max-width: 768px) {
    .rk-faq-header, .rk-faq-cta { padding: 35px 25px; }
    .rk-faq-list { padding: 20px 20px 30px; }
    .rk-faq-trigger { padding: 20px; gap: 15px; }
    .rk-faq-question-content { gap: 15px; }
    .rk-faq-trigger h3 { font-size: 15px; }
    .rk-faq-answer-inner { padding: 0 20px 25px 20px; } /* Usunięte duże wcięcie na mobile */
    .rk-faq-btn-massive { width: 100%; padding: 16px; }
}
</style>

<div class="rk-faq-wrapper">
    <div class="rk-faq-header">
        <h2>
            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Najczęściej zadawane pytania (FAQ)
        </h2>
        <p>Masz wątpliwości przed zakupem rur lub rozpoczęciem montażu? Poniżej zebrałem szybkie, inżynierskie odpowiedzi na pytania, które najczęściej słyszę od inwestorów decydujących się na wodne ogrzewanie podłogowe.</p>
    </div>

    <div class="rk-faq-list" id="rkFaqAccordion">
        
        <div class="rk-faq-item">
            <button class="rk-faq-trigger" aria-expanded="false">
                <div class="rk-faq-question-content">
                    <div class="rk-faq-icon">
                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12H2"></path><path d="M5 8v8M10 8v8M14 8v8M19 8v8"></path></svg>
                    </div>
                    <h3>Ile metrów ma najdłuższa pętla ogrzewania podłogowego 16 mm?</h3>
                </div>
                <div class="rk-faq-toggle-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">Maksymalna długość pętli dla rury o średnicy 16 mm</a> wynosi <strong>100 metrów bieżących</strong> wraz z odcinkami przyłączeniowymi do rozdzielacza. Przekroczenie tej wartości generuje zbyt duże opory hydrauliczne, których standardowa pompa obiegowa zintegrowana ze źródłem ciepła nie jest w stanie pokonać.
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-trigger" aria-expanded="false">
                <div class="rk-faq-question-content">
                    <div class="rk-faq-icon">
                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
                    </div>
                    <h3>Jaki rozstaw rur podłogówki jest najlepszy do salonu?</h3>
                </div>
                <div class="rk-faq-toggle-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Optymalnym i standardowym rozstawem rur w salonie jest <strong>15 cm</strong>, co zapewnia odpowiednią moc grzewczą przy niskich temperaturach zasilania. W miejscach z dużymi przeszkleniami (np. okna tarasowe typu HS) bezwzględnie stosuje się zagęszczenie, czyli <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/">strefę brzegową z rozstawem 10 cm</a>, aby zniwelować chłód bijący od szyb.
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-trigger" aria-expanded="false">
                <div class="rk-faq-question-content">
                    <div class="rk-faq-icon">
                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                    </div>
                    <h3>Czy można łączyć rurę PEX w podłodze pod wylewką?</h3>
                </div>
                <div class="rk-faq-toggle-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    <span class="rk-faq-highlight">Absolutnie niedopuszczalne</span> jest jakiekolwiek łączenie rur wewnątrz warstwy jastrychu – pętla musi być wykonana z jednego ciągłego odcinka materiału od belki do belki rozdzielacza. Każde złącze mechaniczne pod wylewką to tykająca bomba, która drastycznie zwiększa ryzyko awarii i kosztownego kucia posadzek z powodu wycieku. Zobacz listę <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">innych błędów montażowych</a>.
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-trigger" aria-expanded="false">
                <div class="rk-faq-question-content">
                    <div class="rk-faq-icon">
                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M2 12h20M2 12c0 3.31 2.69 6 6 6h8c3.31 0 6-2.69 6-6M4 12V8c0-1.1.9-2 2-2h12c1.1 0 2 .9 2 2v4M12 6V3M8 3h8"></path></svg>
                    </div>
                    <h3>Ile rury PEX potrzeba na łazienkę o powierzchni 6 m²?</h3>
                </div>
                <div class="rk-faq-toggle-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    W łazienkach, ze względu na wyższą wymaganą temperaturę (24°C), zawsze stosuje się gęsty rozstaw rur co 10 cm. Oznacza to zużycie materiału na poziomie <strong>10 mb/m²</strong>. Dla powierzchni netto 6 m² potrzeba zatem minimum 60 mb rury, plus należy doliczyć dodatkowe metry na doprowadzenie tej pętli (tzw. tranzyt) do szafki rozdzielaczowej.
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-trigger" aria-expanded="false">
                <div class="rk-faq-question-content">
                    <div class="rk-faq-icon">
                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="21" r="1"></circle><circle cx="20" cy="21" r="1"></circle><path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"></path></svg>
                    </div>
                    <h3>Jak obliczyć zapas rury przy zakupie na cały dom?</h3>
                </div>
                <div class="rk-faq-toggle-icon">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Do czystych obliczeń z powierzchni metrażowej (powierzchnia × współczynnik rozstawu) zawsze <a href="https://projekt-ogrzewania.pl/ile-kosztuje-100-m%c2%b2-ogrzewania-podlogowego/">należy dodać ok. 10% naddatku</a> na odpady, ugięcia na łukach oraz podejścia instalacyjne. Wyliczoną sumę metrów zaokrągla się w górę do pełnych kręgów handlowych – najczęściej rury PEX pakowane są w kręgi po 200 mb, 400 mb lub 600 mb.
                </div>
            </div>
        </div>

    </div>

    <div class="rk-faq-cta">
        <h4>Nie ryzykuj błędów przy montażu podłogówki</h4>
        <p>Wiedza z zakresu hydrauliki to podstawa, by nie przepłacić za materiały i uniknąć usterek. Przeczytaj moje szczegółowe analizy, studia przypadków i porady projektowe.</p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-faq-btn-massive">
            PRZEJDŹ DO BAZY WIEDZY
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const faqItems = document.querySelectorAll('.rk-faq-item');

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

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

            // Zamknij wszystkie otwarte
            faqItems.forEach(otherItem => {
                otherItem.classList.remove('active');
                otherItem.querySelector('.rk-faq-trigger').setAttribute('aria-expanded', 'false');
                otherItem.querySelector('.rk-faq-answer').style.maxHeight = null;
            });

            // Otwórz kliknięty, jeśli był zamknięty
            if (!isActive) {
                item.classList.add('active');
                trigger.setAttribute('aria-expanded', 'true');
                // Ustawienie max-height na scrollHeight pozwala na płynną animację CSS
                answer.style.maxHeight = answer.scrollHeight + "px";
            }
        });
    });
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/"
    },
    "headline": "Najczęściej zadawane pytania (FAQ) o rury do podłogówki",
    "description": "Zbiór odpowiedzi eksperckich na pytania o maksymalną długość pętli, optymalny rozstaw rur w salonie i łazience oraz zakaz łączenia przewodów w wylewce.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-06-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#dataset-faq",
    "name": "Baza wiedzy Q&A: Zapotrzebowanie i układanie rur PEX",
    "description": "Techniczne zestawienie odpowiedzi na najtrudniejsze pytania inwestorów dotyczące instalacji płaszczyznowych i hydrauliki.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna długość pętli ogrzewania podłogowego 16 mm",
      "rozstaw rur podłogówki w salonie",
      "łączenie rury PEX pod wylewką",
      "ile rury na łazienkę 6m2",
      "zapas rury ogrzewanie podłogowe"
    ],
    "measurementTechnique": "Ekstrakcja danych hydraulicznych i montażowych dla inwestorów na podstawie wytycznych branżowych i wieloletniej praktyki HVAC.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Q: Długość pętli 16mm? A: Maksymalnie 100 mb z tranzytem.",
        "Q: Rozstaw w salonie? A: Optymalnie 15 cm, przy oknach 10 cm.",
        "Q: Łączenie w wylewce? A: Absolutnie zakazane, pętla musi być w jednym kawałku.",
        "Q: Łazienka 6m2? A: Rozstaw 10 cm daje ok. 60 mb + tranzyty.",
        "Q: Zapas rury? A: Dodaj 10% do wyliczeń i zaokrąglij do pełnego kręgu."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#webapp-faq",
    "name": "Interaktywny Akordeon Wiedzy HVAC",
    "description": "Narzędzie interfejsu użytkownika (UI) pozwalające na dynamiczne przełączanie i odkrywanie odpowiedzi inżynierskich bez przeładowywania strony, zwiększające przejrzystość długich tekstów technicznych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-auth-dark: #0f172a;
    --rk-auth-panel: #1e293b;
    --rk-auth-bg: #ffffff;
    --rk-auth-surface: #f8fafc;
    --rk-auth-border: #e2e8f0;
    --rk-auth-text: #334155;
    --rk-auth-muted: #64748b;
    
    --rk-auth-blue: #0284c7;
    --rk-auth-gold: #eab308;
    --rk-auth-fb: #1877F2;
    --rk-auth-li: #0A66C2;
}

.rk-auth-container {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-auth-bg);
    border-radius: 24px;
    box-shadow: 0 10px 30px -10px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-auth-border);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

/* Header Area */
.rk-auth-header {
    background: var(--rk-auth-dark);
    padding: 35px 50px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-auth-gold);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
}

.rk-auth-header-text h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 8px 0;
    line-height: 1.3;
    color: #ffffff;
}

.rk-auth-header-text p {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    font-weight: 500;
}

.rk-auth-trust-badge {
    background: rgba(234, 179, 8, 0.15);
    border: 1px solid rgba(234, 179, 8, 0.3);
    color: var(--rk-auth-gold);
    padding: 10px 20px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    gap: 10px;
    font-weight: 800;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 1px;
    flex-shrink: 0;
}

/* Main Layout Grid */
.rk-auth-grid {
    display: grid;
    grid-template-columns: 320px 1fr;
    background: var(--rk-auth-bg);
}

/* Left Sidebar: Profile */
.rk-auth-profile {
    background: var(--rk-auth-surface);
    padding: 40px 30px;
    border-right: 1px solid var(--rk-auth-border);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.rk-auth-photo-wrap {
    width: 160px;
    height: 160px;
    margin-bottom: 25px;
}

.rk-auth-photo {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid #ffffff;
    box-shadow: 0 4px 10px rgba(2, 132, 199, 0.2);
}

.rk-auth-name {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0 0 5px 0;
}

.rk-auth-title {
    font-size: 14px;
    color: var(--rk-auth-blue);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
}

.rk-auth-socials {
    display: flex;
    flex-direction: column;
    gap: 10px;
    width: 100%;
}

.rk-social-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 12px;
    border-radius: 12px;
    color: #ffffff;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
}

.rk-social-btn.fb { background: var(--rk-auth-fb); }
.rk-social-btn.fb:hover { background: #166fe5; }
.rk-social-btn.li { background: var(--rk-auth-li); }
.rk-social-btn.li:hover { background: #0959aa; }

/* Right Content Area */
.rk-auth-content {
    display: flex;
    flex-direction: column;
}

/* Cytat (Hook) */
.rk-auth-quote-box {
    padding: 35px 40px 25px;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-auth-border);
}

.rk-auth-quote-mark {
    font-size: 60px;
    color: var(--rk-auth-blue);
    line-height: 0;
    opacity: 0.2;
    margin-bottom: -15px;
    display: block;
    font-family: serif;
}

.rk-auth-quote-text {
    font-size: 19px;
    font-weight: 700;
    color: var(--rk-auth-dark);
    line-height: 1.5;
    margin: 0;
    font-style: italic;
}

/* Navigation Tabs */
.rk-auth-tabs {
    display: flex;
    border-bottom: 1px solid var(--rk-auth-border);
    background: var(--rk-auth-surface);
}

.rk-auth-tab {
    flex: 1;
    padding: 18px 10px;
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-auth-muted);
    cursor: pointer;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

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

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

/* Tab Panels */
.rk-auth-panel {
    padding: 40px;
    display: none;
}

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

.rk-auth-panel h3 {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0 0 15px 0;
}

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

.rk-auth-panel p:last-child { margin-bottom: 0; }

.rk-auth-panel a {
    color: var(--rk-auth-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px solid transparent;
}

.rk-auth-panel a:hover {
    border-color: var(--rk-auth-blue);
}

/* Stats Grid in Panel 2 */
.rk-auth-stats {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    margin-top: 25px;
}

.rk-stat-box {
    background: var(--rk-auth-surface);
    border: 1px solid var(--rk-auth-border);
    border-radius: 12px;
    padding: 20px;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-stat-icon {
    width: 42px;
    height: 42px;
    border-radius: 10px;
    background: #ffffff;
    color: var(--rk-auth-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--rk-auth-border);
    flex-shrink: 0;
}

.rk-stat-info { display: flex; flex-direction: column; }

.rk-stat-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    line-height: 1.2;
}

.rk-stat-label {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-auth-muted);
    text-transform: uppercase;
}

/* Mobile */
@media (max-width: 850px) {
    .rk-auth-grid { grid-template-columns: 1fr; }
    .rk-auth-header { flex-direction: column; text-align: center; padding: 30px 25px; }
    .rk-auth-trust-badge { width: 100%; justify-content: center; }
    .rk-auth-profile { border-right: none; border-bottom: 1px solid var(--rk-auth-border); padding: 30px 25px; }
    .rk-auth-socials { flex-direction: row; }
    .rk-auth-tabs { flex-direction: column; background: #ffffff; }
    .rk-auth-tab { border-bottom: none; border-left: 4px solid transparent; justify-content: flex-start; padding: 15px 25px; }
    .rk-auth-tab.active { border-left-color: var(--rk-auth-blue); border-bottom-color: transparent; background: var(--rk-auth-surface); }
    .rk-auth-quote-box { padding: 25px; }
    .rk-auth-panel { padding: 30px 25px; }
    .rk-auth-stats { grid-template-columns: 1fr; }
}
</style>

<div class="rk-auth-container">
    
    <div class="rk-auth-header">
        <div class="rk-auth-header-text">
            <h2>Ekspert HVAC Robert Kucharski: Dlaczego nie liczymy rur &#8222;na oko&#8221;?</h2>
            <p>Nie powielam internetowych mitów. Zobacz, kto odpowiada za wiedzę techniczną w tym artykule.</p>
        </div>
        <div class="rk-auth-trust-badge">
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            Zweryfikowany Ekspert HVAC
        </div>
    </div>

    <div class="rk-auth-grid">
        
        <div class="rk-auth-profile">
            <div class="rk-auth-photo-wrap">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Inżynier HVAC" class="rk-auth-photo">
            </div>
            
            <h3 class="rk-auth-name">Robert Kucharski</h3>
            <div class="rk-auth-title">Główny Specjalista HVAC</div>
            
            <div class="rk-auth-socials">
                <a href="https://www.facebook.com/projektogrzewaniapl/" target="_blank" rel="noopener noreferrer" class="rk-social-btn fb">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path></svg>
                    Projekt Ogrzewania
                </a>
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer" class="rk-social-btn li">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle></svg>
                    LinkedIn
                </a>
            </div>
        </div>

        <div class="rk-auth-content">
            
            <div class="rk-auth-quote-box">
                <span class="rk-auth-quote-mark">&#8222;</span>
                <p class="rk-auth-quote-text">
                    Nigdy nie kupuj rur &#8222;na oko&#8221;. Zbyt gęsty rozstaw zadławi hydraulicznie Twoją pompę obiegową, a zbyt rzadki wymusi podniesienie temperatury zasilania, niszcząc oszczędności z pompy ciepła. Matematyka układu wybacza znacznie mniej niż wylewka betonowa.
                </p>
            </div>

            <div class="rk-auth-tabs">
                <button class="rk-auth-tab active" data-panel="omnie">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg>
                    O Mnie
                </button>
                <button class="rk-auth-tab" data-panel="liczby">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                    Fakty i Liczby
                </button>
                <button class="rk-auth-tab" data-panel="filozofia">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg>
                    Filozofia OZC
                </button>
            </div>

            <div class="rk-auth-panel active" id="panel-omnie">
                <h3>Praktyka wygrywa z teorią</h3>
                <p>
                    Projektowanie systemów ogrzewania to czysta matematyka i fizyka budowli. Od lat doradzam inwestorom i audytuję błędy wykonawcze na placach budowy. Prowadzę również portal remont.biz.pl oraz sobir.pl, dzieląc się praktyczną wiedzą.
                </p>
                <p>
                    Wiem dokładnie, ile kosztuje instalatora pośpiech, a inwestora – ufność w &#8222;standardowe rozwiązania bez obliczeń&#8221;. W projekt-ogrzewania.pl łączę twardą wiedzę inżynierską z pragmatyzmem, udowadniając, że odpowiedni rozstaw rur to klucz do żywotności całego układu.
                </p>
            </div>

            <div class="rk-auth-panel" id="panel-liczby">
                <h3>Instalacje oparte na twardych danych</h3>
                <p>Każdy opór hydrauliczny, każdy metr rury PEX i każdy rotametr mają znaczenie. Moje podejście opiera się na wyliczeniach, nie na przypuszczeniach.</p>
                
                <div class="rk-auth-stats">
                    <div class="rk-stat-box">
                        <div class="rk-stat-icon">
                            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                        </div>
                        <div class="rk-stat-info">
                            <div class="rk-stat-val">1000+</div>
                            <div class="rk-stat-label">Wykonanych Projektów OZC</div>
                        </div>
                    </div>
                    
                    <div class="rk-stat-box">
                        <div class="rk-stat-icon">
                            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                        </div>
                        <div class="rk-stat-info">
                            <div class="rk-stat-val">~20%</div>
                            <div class="rk-stat-label">Oszczędności eksploatacyjnych</div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-auth-panel" id="panel-filozofia">
                <h3>Bezbłędny system zaczyna się na papierze</h3>
                <p>
                    Nie uznaję układania rur &#8222;co 15 cm wszędzie, bo tak się robi&#8221;. Każde pomieszczenie ma inne straty cieplne. Stosuję gęstszy rozstaw w łazienkach i przy strefach brzegowych (duże przeszklenia), rzadszy w sypialniach.
                </p>
                <p>
                    Wszystkie algorytmy i artykuły na tej stronie bazują na obowiązującej normie projektowej <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">PN-EN 1264</a>, co gwarantuje pełną zgodność prawno-techniczną i bezpieczeństwo dla jastrychów.
                </p>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tabs = document.querySelectorAll('.rk-auth-tab');
    const panels = document.querySelectorAll('.rk-auth-panel');

    tabs.forEach(tab => {
        tab.addEventListener('click', function() {
            // Remove active classes
            tabs.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Add active class to clicked tab
            this.classList.add('active');

            // Show corresponding panel
            const target = this.getAttribute('data-panel');
            document.getElementById('panel-' + target).classList.add('active');
        });
    });
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#article-autor",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/"
    },
    "headline": "Ekspert HVAC Robert Kucharski: Dlaczego nie liczymy rur \"na oko\"?",
    "description": "Profil ekspercki Roberta Kucharskiego, inżyniera HVAC weryfikującego błędy w układaniu rur PEX oraz optymalizującego rozstaw pętli grzewczych na bazie projektów OZC.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "Inżynier HVAC",
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-05",
    "dateModified": "2026-06-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#dataset-autor",
    "name": "Baza wiedzy i doświadczenia HVAC - Robert Kucharski",
    "description": "Zestawienie autorskich statystyk i kompetencji technicznych w zakresie normatywnego projektowania systemów ogrzewania płaszczyznowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowanie ogrzewania podłogowego OZC",
      "obliczanie ilości rur podłogówki",
      "norma PN-EN 1264 podłogówka",
      "inżynier hvac robert kucharski",
      "audyt hydrauliczny instalacji"
    ],
    "measurementTechnique": "Agregacja danych z ponad 1000 zrealizowanych projektów OZC, wykazująca redukcję oporów hydraulicznych i średni spadek kosztów ogrzewania u inwestorów o ok. 20%.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zrealizowane projekty instalacji płaszczyznowych na bazie OZC: 1000+",
        "Główny profil działalności: Redukcja kosztów inwestycyjnych poprzez unikanie przewymiarowania rur.",
        "Podstawa techniczna audytów: Norma PN-EN 1264-4."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#webapp-autor",
    "name": "Interaktywny Profil Autorski E-E-A-T",
    "description": "Statyczny interfejs weryfikujący autorytet inżynierski autora, integrujący jego wypowiedzi (hook), portfolio projektowe oraz filozofię zgodną z normami prawa budowlanego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-aud-dark: #111827;
    --rk-aud-panel: #1f2937;
    --rk-aud-brand: #3b82f6;
    --rk-aud-brand-light: #eff6ff;
    --rk-aud-accent: #60a5fa;
    --rk-aud-text: #4b5563;
    --rk-aud-text-light: #9ca3af;
    --rk-aud-bg: #ffffff;
    --rk-aud-border: #e5e7eb;
    --rk-aud-success: #10b981;
    --rk-aud-alert: #ef4444;
}

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

/* Nagłówek H2 */
.rk-aud-header {
    background: var(--rk-aud-dark);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    overflow: hidden;
}

.rk-aud-header::after {
    content: '';
    position: absolute;
    top: -50px;
    right: -50px;
    width: 200px;
    height: 200px;
    background: radial-gradient(circle, rgba(59, 130, 246, 0.2) 0%, transparent 70%);
    border-radius: 50%;
}

.rk-aud-header h2 {
    font-size: 30px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 15px 0;
    line-height: 1.3;
    position: relative;
    z-index: 2;
}

.rk-aud-header p {
    font-size: 16px;
    color: var(--rk-aud-text-light);
    line-height: 1.6;
    max-width: 700px;
    margin: 0;
    position: relative;
    z-index: 2;
}

/* Interaktywne Zakładki */
.rk-aud-interactive-zone {
    padding: 40px 50px;
}

.rk-aud-interactive-zone h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-aud-dark);
    margin: 0 0 25px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-aud-tabs {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
    background: #f3f4f6;
    padding: 8px;
    border-radius: 16px;
    overflow-x: auto;
    scrollbar-width: none;
}

.rk-aud-tabs::-webkit-scrollbar { display: none; }

.rk-aud-tab-btn {
    flex: 1;
    min-width: 150px;
    padding: 14px 20px;
    border: none;
    background: transparent;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-aud-text);
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    white-space: nowrap;
}

.rk-aud-tab-btn:hover {
    color: var(--rk-aud-dark);
}

.rk-aud-tab-btn.active {
    background: var(--rk-aud-bg);
    color: var(--rk-aud-brand);
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.rk-aud-tab-btn svg {
    width: 18px;
    height: 18px;
    transition: stroke 0.3s;
}

/* Panele z treścią (Karty) */
.rk-aud-panel {
    display: none;
    animation: fadeIn 0.4s ease forwards;
}

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

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

.rk-aud-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 25px;
}

.rk-aud-card {
    background: var(--rk-aud-bg);
    border: 1px solid var(--rk-aud-border);
    padding: 30px;
    border-radius: 20px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    position: relative;
    transition: transform 0.3s;
}

.rk-aud-card:hover {
    transform: translateY(-4px);
    border-color: var(--rk-aud-accent);
}

.rk-aud-icon-box {
    width: 50px;
    height: 50px;
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 20px;
}

.bg-blue { background: var(--rk-aud-brand-light); color: var(--rk-aud-brand); }
.bg-green { background: #ecfdf5; color: var(--rk-aud-success); }
.bg-red { background: #fef2f2; color: var(--rk-aud-alert); }

.rk-aud-icon-box svg {
    width: 26px;
    height: 26px;
}

.rk-aud-card h4 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-aud-dark);
    margin: 0 0 12px 0;
}

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

.rk-aud-card a {
    color: var(--rk-aud-brand);
    text-decoration: none;
    font-weight: 600;
    border-bottom: 1px solid transparent;
    transition: border-color 0.2s;
}

.rk-aud-card a:hover {
    border-color: var(--rk-aud-brand);
}

/* Sekcja CTA */
.rk-aud-cta {
    background: linear-gradient(135deg, var(--rk-aud-panel) 0%, var(--rk-aud-dark) 100%);
    padding: 50px;
    text-align: center;
    color: #ffffff;
}

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

.rk-aud-cta p {
    font-size: 16px;
    color: var(--rk-aud-text-light);
    margin: 0 auto 30px auto;
    max-width: 600px;
    line-height: 1.6;
}

.rk-aud-btn-massive {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    background: var(--rk-aud-brand);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 45px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(59, 130, 246, 0.5);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-aud-btn-massive:hover {
    transform: translateY(-5px);
    background: #2563eb;
    box-shadow: 0 20px 35px -5px rgba(59, 130, 246, 0.6);
    border-color: #93c5fd;
}

.rk-aud-btn-massive svg {
    transition: transform 0.3s;
}

.rk-aud-btn-massive:hover svg {
    transform: translateX(6px);
}

/* Animacje ścieżek SVG */
@keyframes drawPath {
    to { stroke-dashoffset: 0; }
}
.anim-draw {
    stroke-dasharray: 100;
    stroke-dashoffset: 100;
    animation: drawPath 1.5s ease forwards;
}

@media (max-width: 768px) {
    .rk-aud-header, .rk-aud-interactive-zone, .rk-aud-cta { padding: 35px 25px; }
    .rk-aud-tabs { flex-direction: column; background: transparent; padding: 0; }
    .rk-aud-tab-btn { background: #f3f4f6; justify-content: flex-start; padding: 16px 20px; }
    .rk-aud-grid { grid-template-columns: 1fr; }
    .rk-aud-btn-massive { width: 100%; justify-content: center; padding: 18px 20px; font-size: 16px; }
}
</style>

<div class="rk-audit-container">
    <div class="rk-aud-header">
        <h2>Podsumowanie: Ile rury na m² podłogówki – Checklista Inwestora</h2>
        <p>Prawidłowe określenie zapotrzebowania materiałowego na ogrzewanie płaszczyznowe to zaledwie początek. System grzewczy zadziała bezbłędnie tylko wtedy, gdy rozstaw pętli spotka się z fizyką przepływów i poprawnym montażem. Zobacz, o czym nie możesz zapomnieć.</p>
    </div>

    <div class="rk-aud-interactive-zone">
        <h3>
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--rk-aud-brand)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            Interaktywna Weryfikacja Systemu
        </h3>
        
        <div class="rk-aud-tabs">
            <button class="rk-aud-tab-btn active" data-target="panel-parametry">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                1. Limity Hydrauliczne
            </button>
            <button class="rk-aud-tab-btn" data-target="panel-bledy">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                2. Błędy Wykonawcze
            </button>
            <button class="rk-aud-tab-btn" data-target="panel-projekt">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                3. Złote Zasady
            </button>
        </div>

        <div class="rk-aud-panel active" id="panel-parametry">
            <div class="rk-aud-grid">
                <div class="rk-aud-card">
                    <div class="rk-aud-icon-box bg-blue">
                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path class="anim-draw" d="M4 10a4 4 0 0 1 4-4h8a4 4 0 0 1 4 4v4a4 4 0 0 1-4 4h-8a4 4 0 0 1-4-4v-4z"></path></svg>
                    </div>
                    <h4>Maksymalna długość pętli</h4>
                    <p>Fizyki nie oszukasz. Dla rury PEX o średnicy wewnętrznej 16 mm (16&#215;2) absolutny limit to <strong>100 metrów bieżących</strong> na jedną pętlę. Przekroczenie tego oporu zablokuje przepływ wody przez pompę obiegową.</p>
                </div>
                <div class="rk-aud-card">
                    <div class="rk-aud-icon-box bg-blue">
                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line class="anim-draw" x1="12" y1="2" x2="12" y2="22"></line><line class="anim-draw" x1="2" y1="12" x2="22" y2="12"></line></svg>
                    </div>
                    <h4>Gęstość a rachunki</h4>
                    <p>Zmniejszenie rozstawu rur z 15 cm na 10 cm obniża wymaganą temperaturę zasilania na kotle. Zyskujesz na <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">mniejszym zużyciu prądu przez pompę ciepła (wyższy COP)</a>.</p>
                </div>
            </div>
        </div>

        <div class="rk-aud-panel" id="panel-bledy">
            <div class="rk-aud-grid">
                <div class="rk-aud-card">
                    <div class="rk-aud-icon-box bg-red">
                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle class="anim-draw" cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg>
                    </div>
                    <h4>Gilotyna w drzwiach</h4>
                    <p>Brak peszli ochronnych i poprawnie wykonanej <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">szczeliny dylatacyjnej</a> w otworach drzwiowych sprawia, że pracująca termicznie <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">wylewka betonowa</a> &#8222;ścina&#8221; rury po kilku sezonach.</p>
                </div>
                <div class="rk-aud-card">
                    <div class="rk-aud-icon-box bg-red">
                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path class="anim-draw" d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    </div>
                    <h4>Oszczędność na jakości</h4>
                    <p>Zastosowanie najtańszych rur bez warstwy EVOH powoduje napowietrzanie instalacji i przyspiesza korozję rozdzielaczy mosiężnych. Zapoznaj się z listą <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">najczęstszych błędów montażowych</a>.</p>
                </div>
            </div>
        </div>

        <div class="rk-aud-panel" id="panel-projekt">
            <div class="rk-aud-grid">
                <div class="rk-aud-card">
                    <div class="rk-aud-icon-box bg-green">
                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path class="anim-draw" d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    </div>
                    <h4>Obliczenia OZC to fundament</h4>
                    <p>Nigdy nie dobieraj rozstawu rur &#8222;na oko&#8221;. Precyzyjne określenie strat energii poprzez wykonanie <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowego obciążenia cieplnego (OZC)</a> pozwala dopasować zagęszczenie dokładnie do potrzeb salonu czy łazienki.</p>
                </div>
                <div class="rk-aud-card">
                    <div class="rk-aud-icon-box bg-green">
                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path class="anim-draw" d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                    </div>
                    <h4>Protokół Próby Ciśnieniowej</h4>
                    <p>Nigdy nie zalewaj instalacji jastrychem przed wykonaniem testu szczelności ciśnieniem min. 6 barów przez 24 godziny. Ten dokument to Twoja przepustka do uznania gwarancji przez producenta rur.</p>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-aud-cta">
        <h3>Przestań zgadywać na własnej budowie</h3>
        <p>Instalacja hydrauliczna zaleje się w wylewce betonowej na kolejne 50 lat. Jeden błąd to konieczność kucia posadzek. Zdobądź profesjonalną wiedzę inżynierską, o której milczą instalatorzy.</p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-aud-btn-massive">
            Więcej artykułów na moim blogu.

            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tabs = document.querySelectorAll('.rk-aud-tab-btn');
    const panels = document.querySelectorAll('.rk-aud-panel');

    tabs.forEach(tab => {
        tab.addEventListener('click', () => {
            // Remove active classes
            tabs.forEach(t => t.classList.remove('active'));
            panels.forEach(p => {
                p.classList.remove('active');
                // Reset animation
                p.style.animation = 'none';
                p.offsetHeight; // trigger reflow
                p.style.animation = null;
            });

            // Add active class to clicked tab
            tab.classList.add('active');
            
            // Show corresponding panel
            const target = tab.getAttribute('data-target');
            document.getElementById(target).classList.add('active');
        });
    });
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#article-final-summary",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/"
    },
    "headline": "Podsumowanie: Ile rury na m² podłogówki – Checklista Inwestora",
    "description": "Zestawienie inżynierskich zasad montażu instalacji grzewczej podłogowej, maksymalnych długości pętli rur PEX oraz błędów wykonawczych przed wylaniem wylewki betonowej.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-05",
    "dateModified": "2026-06-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#dataset-final-summary",
    "name": "Standard inżynierski montażu ogrzewania płaszczyznowego 2026",
    "description": "Kompendium limitów hydraulicznych, zaleceń projektowych OZC oraz norm instalacyjnych dla rur polietylenowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna długość pętli ogrzewania podłogowego 16mm",
      "zapotrzebowanie materiałowe na podłogówkę",
      "błędy przy montażu podłogówki",
      "wylewka betonowa na ogrzewanie podłogowe",
      "projekt OZC a rozstaw rur"
    ],
    "measurementTechnique": "Weryfikacja jakości montażu instalacji hydraulicznej w relacji do normatywnego oporu rurociągów PEX (max 100 mb).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Reguła 100 metrów - limit zapobiegający blokadzie hydraulicznej i niedogrzaniu podłogi.",
        "Wymóg stosowania peszli i szczelin dylatacyjnych chroniących przed ścięciem rur przez jastrych.",
        "Obligatoryjne obliczenia OZC dla precyzyjnego doboru zagęszczenia rur zamiast dobierania na oko."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#webapp-final-summary",
    "name": "Interaktywny Audyt Ogrzewania Podłogowego",
    "description": "Narzędzie edukacyjne weryfikujące poprawność wykonania instalacji grzewczej, segregujące wiedzę na limity techniczne, błędy montażowe i zasady poprawnego wylewania betonu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-dl-dark: #1e293b;
    --rk-dl-panel: #334155;
    --rk-dl-brand: #f97316; /* Pomarańczowy nawiązujący do infografiki */
    --rk-dl-brand-light: #ffedd5;
    --rk-dl-accent: #fb923c;
    --rk-dl-bg: #f8fafc;
    --rk-dl-card: #ffffff;
    --rk-dl-border: #e2e8f0;
    --rk-dl-text: #475569;
    --rk-dl-text-light: #94a3b8;
}

.rk-download-wrapper {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-dl-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(249, 115, 22, 0.15);
    border: 1px solid var(--rk-dl-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-dl-header {
    background: var(--rk-dl-dark);
    padding: 40px 50px 30px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-dl-brand);
    position: relative;
}

.rk-dl-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
    display: flex;
    align-items: center;
    gap: 12px;
}

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

/* Obszar Główny */
.rk-dl-body {
    padding: 40px 50px;
    display: grid;
    grid-template-columns: 350px 1fr;
    gap: 40px;
    align-items: start;
}

/* Podgląd Infografiki */
.rk-dl-preview {
    background: var(--rk-dl-card);
    padding: 15px;
    border-radius: 16px;
    border: 1px solid var(--rk-dl-border);
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05);
    position: relative;
    overflow: hidden;
    cursor: pointer;
    transition: transform 0.3s;
}

.rk-dl-preview:hover {
    transform: translateY(-5px);
}

.rk-dl-preview img {
    width: 100%;
    height: auto;
    border-radius: 8px;
    display: block;
}

.rk-dl-zoom-overlay {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(30, 41, 59, 0.7);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity 0.3s;
}

.rk-dl-preview:hover .rk-dl-zoom-overlay {
    opacity: 1;
}

.rk-dl-zoom-overlay svg {
    color: #ffffff;
    width: 48px; height: 48px;
}

/* Sekcja Pobierania */
.rk-dl-actions {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-dl-card {
    background: var(--rk-dl-card);
    border: 1px solid var(--rk-dl-border);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    align-items: center;
    gap: 20px;
    transition: all 0.3s;
}

.rk-dl-card:hover {
    border-color: var(--rk-dl-accent);
    box-shadow: 0 10px 20px -5px rgba(249, 115, 22, 0.1);
}

.rk-dl-icon-box {
    width: 60px;
    height: 60px;
    background: var(--rk-dl-brand-light);
    color: var(--rk-dl-brand);
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.rk-dl-card-content {
    flex: 1;
}

.rk-dl-card-content h3 {
    margin: 0 0 5px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-dl-dark);
}

.rk-dl-card-content p {
    margin: 0 0 15px 0;
    font-size: 14px;
    color: var(--rk-dl-text);
}

.rk-dl-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--rk-dl-dark);
    color: #ffffff;
    padding: 10px 20px;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 700;
    text-decoration: none;
    transition: background 0.3s;
}

.rk-dl-btn:hover {
    background: var(--rk-dl-brand);
}

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

/* Stopka Prawa Autorskie */
.rk-dl-footer {
    background: var(--rk-dl-panel);
    padding: 20px 50px;
    color: #cbd5e1;
    font-size: 13px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-dl-footer svg {
    flex-shrink: 0;
    color: var(--rk-dl-brand);
}

/* Modal do podglądu pełnego zdjęcia */
.rk-dl-modal {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(15, 23, 42, 0.95);
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s;
}

.rk-dl-modal.active {
    opacity: 1;
    pointer-events: auto;
}

.rk-dl-modal-content {
    position: relative;
    max-width: 90%;
    max-height: 90vh;
}

.rk-dl-modal-img {
    max-width: 100%;
    max-height: 90vh;
    border-radius: 12px;
    box-shadow: 0 25px 50px rgba(0,0,0,0.5);
}

.rk-dl-modal-close {
    position: absolute;
    top: -40px; right: 0;
    background: transparent;
    border: none;
    color: #ffffff;
    cursor: pointer;
}

/* RWD */
@media (max-width: 768px) {
    .rk-dl-header, .rk-dl-body, .rk-dl-footer { padding: 30px 20px; }
    .rk-dl-body { grid-template-columns: 1fr; gap: 30px; }
    .rk-dl-preview { max-width: 400px; margin: 0 auto; }
}
</style>

<div class="rk-download-wrapper">
    <div class="rk-dl-header">
        <h2>
            <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="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
            Materiały dla Inwestora (Ściągawka)
        </h2>
        <p>Zabrać wiedzę na budowę? Przygotowałem dla Ciebie czytelną infografikę z najważniejszymi przelicznikami i najczęstszymi błędami. Pobierz PDF, wydrukuj i miej pod ręką podczas ustaleń z instalatorem.</p>
    </div>

    <div class="rk-dl-body">
        
        <div class="rk-dl-preview" id="rkDlPreviewTrigger">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Ile-rury-na-m²-ogrzewania-podlogowego.webp" alt="Infografika - Ile rury na m² ogrzewania podłogowego" loading="lazy">
            <div class="rk-dl-zoom-overlay">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="11" y1="8" x2="11" y2="14"></line><line x1="8" y1="11" x2="14" y2="11"></line></svg>
            </div>
        </div>

        <div class="rk-dl-actions">
            
            <div class="rk-dl-card">
                <div class="rk-dl-icon-box">
                    <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                </div>
                <div class="rk-dl-card-content">
                    <h3>Pobierz wersję PDF</h3>
                    <p>Format A4, idealny do druku. Zawiera przeliczniki rozstawów i limity pętli.</p>
                    <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Ile-rury-na-m²-ogrzewania-podlogowego.pdf" class="rk-dl-btn" download="">
                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
                        Pobierz PDF
                    </a>
                </div>
            </div>

            <div class="rk-dl-card">
                <div class="rk-dl-icon-box" style="background: #e0f2fe; color: #0284c7;">
                    <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline></svg>
                </div>
                <div class="rk-dl-card-content">
                    <h3>Pobierz wersję Graficzną (WebP)</h3>
                    <p>Lekki plik graficzny, idealny do zapisania w telefonie na placu budowy.</p>
                    <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Ile-rury-na-m²-ogrzewania-podlogowego.webp" class="rk-dl-btn" style="background: #0284c7;" download="">
                        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" 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>
                        Zapisz Obraz
                    </a>
                </div>
            </div>

        </div>

    </div>

    <div class="rk-dl-footer">
        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
        <span>© 2026 Projekt-Ogrzewania.pl | Autor: Robert Kucharski. Udostępnianie materiału dozwolone wyłącznie z zachowaniem logotypu portalu i bez modyfikacji pliku.</span>
    </div>
</div>

<div class="rk-dl-modal" id="rkDlModal">
    <div class="rk-dl-modal-content">
        <button class="rk-dl-modal-close" id="rkDlModalClose">
            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
        </button>
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Ile-rury-na-m²-ogrzewania-podlogowego.webp" alt="Infografika - Powiększenie" class="rk-dl-modal-img">
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const trigger = document.getElementById('rkDlPreviewTrigger');
    const modal = document.getElementById('rkDlModal');
    const closeBtn = document.getElementById('rkDlModalClose');

    trigger.addEventListener('click', () => {
        modal.classList.add('active');
        document.body.style.overflow = 'hidden'; // Blokada scrollowania tła
    });

    function closeModal() {
        modal.classList.remove('active');
        document.body.style.overflow = '';
    }

    closeBtn.addEventListener('click', closeModal);
    
    modal.addEventListener('click', (e) => {
        if (e.target === modal) {
            closeModal();
        }
    });

    document.addEventListener('keydown', (e) => {
        if (e.key === 'Escape' && modal.classList.contains('active')) {
            closeModal();
        }
    });
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#article-infografika",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/"
    },
    "headline": "Materiały dla Inwestora: Infografika z przelicznikami rur podłogowych",
    "description": "Pobierz darmową infografikę (PDF/WebP) zawierającą praktyczne przeliczniki rozstawu rur grzewczych oraz listę najczęstszych błędów montażowych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Ile-rury-na-m²-ogrzewania-podlogowego.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-05",
    "dateModified": "2026-06-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#dataset-infografika",
    "name": "Zestawienie wizualne: Przeliczniki i błędy instalacji podłogowych",
    "description": "Graficzne podsumowanie zapotrzebowania na mb rury na m2 w zależności od rozstawu (10-25 cm) wraz z listą kluczowych limitów hydraulicznych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika ogrzewanie podłogowe",
      "tabela zużycia rur podłogówka pdf",
      "rozstaw rur ściągawka",
      "błędy przy podłogówce grafika",
      "darmowy projekt ogrzewania pdf"
    ],
    "measurementTechnique": "Agregacja kluczowych wskaźników montażowych (mb/m2, długości pętli) w formę graficznej mapy myśli ułatwiającej inwestorom weryfikację prac na budowie.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przelicznik bazowy: Rozstaw 10cm = 10 mb/m2, 15cm = 7 mb/m2, 20cm = 5 mb/m2, 25cm = 4 mb/m2.",
        "Limity: Zbyt długa pętla pogarsza pracę instalacji.",
        "Zalecenia: Konieczność uwzględnienia dojść do rozdzielacza i zagęszczenia stref przy dużych oknach."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/#webapp-infografika",
    "name": "Interaktywna Galeria i Pobieralnia Plików",
    "description": "Moduł UI (Lightbox) umożliwiający powiększenie infografiki technicznej oraz bezpośrednie pobranie plików w formatach PDF i WebP na urządzenia użytkownika.",
    "applicationCategory": "MultimediaApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-rury-na-m%c2%b2-ogrzewania-podlogowego/">Ile rury na m² ogrzewania podłogowego?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
