<?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 porady budowlane - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/tag/porady-budowlane/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/tag/porady-budowlane/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Mon, 15 Jun 2026 15:52:43 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.1</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa porady budowlane - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/porady-budowlane/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Najczęstsze błędy przy montażu ogrzewania podłogowego i jak ich uniknąć.</title>
		<link>https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Tue, 04 Mar 2025 12:55:06 +0000</pubDate>
				<category><![CDATA[Błędy budowlane]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Materiały budowlane]]></category>
		<category><![CDATA[Montaż instalacji grzewczych]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradniki budowlane]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[błędy montażowe]]></category>
		<category><![CDATA[dylatacje]]></category>
		<category><![CDATA[instalacja podłogówki]]></category>
		<category><![CDATA[izolacja termiczna]]></category>
		<category><![CDATA[materiały budowlane]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[porady budowlane]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[remont domu]]></category>
		<category><![CDATA[rozstaw rur]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2342</guid>

					<description><![CDATA[<p>Planujesz montaż ogrzewania podłogowego? Sprawdź, jakie najczęstsze błędy przy montażu ogrzewania podłogowego popełniają zarówno amatorzy, jak i niektórzy profesjonaliści. W tym artykule znajdziesz praktyczne porady, jak uniknąć problemów z izolacją, rozstawem rur, dylatacjami czy brakiem projektu. Dowiesz się, dlaczego profesjonalny projekt jest kluczowy i jakie materiały wybrać, aby Twoja instalacja działała bez zarzutu przez lata. Niezależnie od tego, czy robisz to samodzielnie, czy zatrudniasz ekipę – te wskazówki pomogą Ci zaoszczędzić czas, pieniądze i nerwy.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">Najczęstsze błędy przy montażu ogrzewania podłogowego i jak ich uniknąć.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>Ogrzewanie podłogowe</strong> to rozwiązanie, które zapewnia komfort cieplny i energooszczędność, ale jego montaż wymaga precyzji. Niestety, wiele osób popełnia błędy podczas instalacji, które później prowadzą do awarii, nierównomiernego grzania lub wysokich kosztów eksploatacji. W tym artykule omówimy <em>najczęstsze błędy przy montażu ogrzewania podłogowego</em> oraz podpowiemy, jak ich uniknąć – zwłaszcza jeśli planujesz instalację samodzielnie lub chcesz skontrolować pracę ekipy.</p>



<h2 class="wp-block-heading">1. Brak projektu ogrzewania podłogowego</h2>



<p class="wp-block-paragraph"><strong>Błąd:</strong><br>Jednym z najpoważniejszych błędów jest rezygnacja z&nbsp;<strong>profesjonalnego projektu ogrzewania podłogowego</strong>. Wielu inwestorów decyduje się na montaż „na oko”, co prowadzi do nierównomiernego grzania, przegrzewania niektórych pomieszczeń lub niedogrzania innych. Bez projektu trudno jest też dobrać odpowiednią moc źródła ciepła, rozstaw rur czy długość pętli grzewczych.</p>



<p class="wp-block-paragraph"><strong>Rozwiązanie:</strong><br>Zawsze inwestuj w&nbsp;<strong>projekt ogrzewania podłogowego</strong>, który uwzględni specyfikę Twojego budynku. Projektant obliczy straty cieplne, dobierze optymalny rozstaw rur (np. 10-15 cm) oraz długość pętli (maksymalnie 80-100 m). Dzięki temu unikniesz problemów z wydajnością instalacji i zaoszczędzisz na kosztach eksploatacji.</p>



<p class="wp-block-paragraph">Przykładowo, dla domu o powierzchni 100 m² warto zamówić&nbsp;<a href="https://projekt-ogrzewania.pl/produkt/projekt-ogrzewania-podlogowego-do-100-m2/">projekt ogrzewania podłogowego do 100 m²</a>, który będzie dostosowany do Twoich potrzeb i źródła ciepła (np. pompy ciepła lub kotła gazowego).</p>



<h2 class="wp-block-heading">2. Brak odpowiedniej izolacji termicznej pod instalacją.</h2>



<p class="wp-block-paragraph"><strong>Błąd:</strong> Pominięcie warstwy izolacji lub użycie materiałów o zbyt niskiej jakości to klasyczny przykład oszczędności, która kosztuje. Bez dobrej izolacji ciepło „ucieka” w stronę gruntu lub niższych kondygnacji, zamiast ogrzewać pomieszczenie.</p>



<p class="wp-block-paragraph"><strong>Rozwiązanie:</strong></p>



<ul class="wp-block-list">
<li>Stosuj płyty styropianowe <strong>EPS 200</strong> (np. <a href="https://projekt-ogrzewania.pl/produkt/plyta-styropianowa-eps-200-z-wypustkami/">Płyta styropianowa EPS 200 z wypustkami</a>) – mają wyższą gęstość i lepszą izolacyjność niż standardowy EPS 100.</li>



<li>Warstwa izolacji powinna mieć minimum 5 cm grubości (w domach energooszczędnych nawet 10 cm).</li>
</ul>



<h2 class="wp-block-heading">3. Nieprawidłowy rozstaw rur grzewczych.</h2>



<p class="wp-block-paragraph"><strong>Błąd:</strong> Zbyt duża odległość między rurami (np. 20 cm zamiast 10-15 cm) powoduje powstawanie „zimnych stref” na podłodze.</p>



<p class="wp-block-paragraph"><strong>Rozwiązanie:</strong></p>



<ul class="wp-block-list">
<li>W pomieszczeniach o wysokich stratach ciepła (np. łazienki) stosuj rozstaw co <strong>10 cm</strong>.</li>



<li>W salonie lub sypialni wystarczy rozstaw <strong>10-15 cm</strong> (więcej na ten temat: <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">Rozstaw rur a pompa ciepła</a>).</li>
</ul>



<h2 class="wp-block-heading">4. Brak dylatacji i izolacji brzegowej.</h2>



<p class="wp-block-paragraph"><strong>Błąd:</strong> Ignorowanie konieczności pozostawienia szczelin dylatacyjnych przy ścianach lub między obszarami grzewczymi. To prowadzi do pękania posadzki pod wpływem rozszerzalności termicznej.</p>



<p class="wp-block-paragraph"><strong>Rozwiązanie:</strong></p>



<ul class="wp-block-list">
<li>Użyj <strong>taśmy brzegowej z pianki poliuretanowej</strong> (np. <a href="https://projekt-ogrzewania.pl/produkt/tasma-przyscienna-z-pianki-poliuretanowej-do-ogrzewania-podlogowego/">Taśma przyscienna</a>), która kompensuje ruch podłoża.</li>



<li>Wykonaj dylatacje co każde 40 m² powierzchni oraz w drzwiach.</li>
</ul>



<h2 class="wp-block-heading">5. Niedopasowanie rodzaju rur do systemu grzewczego.</h2>



<p class="wp-block-paragraph"><strong>Błąd:</strong> Wybór rur o zbyt małej średnicy lub niskiej odporności na temperaturę. To powoduje spadek wydajności instalacji.</p>



<p class="wp-block-paragraph"><strong>Rozwiązanie:</strong></p>



<ul class="wp-block-list">
<li>Stosuj rury wielowarstwowe, np. <strong>PE-RT AL-PE</strong> (np. <a href="https://projekt-ogrzewania.pl/produkt/rura-wielowarstwowa-kisan-redart-pe-rt-al-pe/">Rura Kisan Redart</a>), które łączą trwałość i elastyczność.</li>



<li>Średnica rur powinna wynosić <strong>16-20 mm</strong> (w zależności od projektu).</li>
</ul>



<h2 class="wp-block-heading">6. Zbyt długie pętle grzewcze.</h2>



<p class="wp-block-paragraph"><strong>Błąd:</strong> Montaż pętli o długości przekraczającej 120 metrów. Powoduje to spadek ciśnienia i nierównomierne grzanie.</p>



<p class="wp-block-paragraph"><strong>Rozwiązanie:</strong></p>



<ul class="wp-block-list">
<li>Dziel większe pomieszczenia na kilka pętli (np. salon 30 m² – 2-3 pętle).</li>



<li>Maksymalna długość jednej pętli to <strong>80-100 m</strong> (szczegóły: <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">Maksymalna długość pętli</a>).</li>
</ul>



<h2 class="wp-block-heading">7. Błędy przy podłączaniu rozdzielacza.</h2>



<p class="wp-block-paragraph"><strong>Błąd:</strong> Montaż rozdzielacza bez regulacji przepływu (rotametrów) lub brak równoważenia hydraulicznego. Skutkuje to tym, że niektóre pętle są niedogrzane.</p>



<p class="wp-block-paragraph"><strong>Rozwiązanie:</strong></p>



<ul class="wp-block-list">
<li>Wybierz rozdzielacz z <strong>rotametrami i zaworami termostatycznymi</strong> (np. <a href="https://projekt-ogrzewania.pl/produkt/rozdzielacz-mosiezny-do-ogrzewania-podlogowego-z-rotametrami/">Rozdzielacz mosiężny</a>).</li>



<li>Ustaw przepływ osobno dla każdej pętli, uwzględniając jej długość i obciążenie cieplne.</li>
</ul>



<h2 class="wp-block-heading">8. Niewłaściwa wylewka betonowa.</h2>



<p class="wp-block-paragraph"><strong>Błąd:</strong> Użycie zwykłego betonu zamiast <strong>mieszanki samopoziomującej</strong> lub zalanie zbyt cienkiej warstwy (poniżej 4 cm). To prowadzi do pękania posadzki i uszkodzeń rur.</p>



<p class="wp-block-paragraph"><strong>Rozwiązanie:</strong></p>



<ul class="wp-block-list">
<li>Grubość wylewki nad rurami powinna wynosić <strong>4-5 cm</strong>.</li>



<li>Dodaj do mieszanki <strong>plastyfikatory</strong>, które zwiększą jej elastyczność (więcej: <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">Wylewka pod ogrzewanie podłogowe</a>).</li>
</ul>



<h2 class="wp-block-heading">9. Pomijanie próby ciśnieniowej instalacji.</h2>



<p class="wp-block-paragraph"><strong>Błąd:</strong> Nieprzeprowadzenie testu szczelności przed zalaniem wylewką. Wykrycie przecieku po zakończeniu prac jest trudne i kosztowne.</p>



<p class="wp-block-paragraph"><strong>Rozwiązanie:</strong></p>



<ul class="wp-block-list">
<li>Przed wylaniem betonu wypełnij instalację wodą pod ciśnieniem <strong>6 bar</strong> i obserwuj manometr przez 24 godziny.</li>
</ul>



<h2 class="wp-block-heading">Dlaczego profesjonalny projekt ogrzewania podłogowego jest kluczowy?</h2>



<p class="wp-block-paragraph">Wiele opisanych błędów wynika z braku <strong>profesjonalnego projektu ogrzewania podłogowego</strong>. Projektant obliczy straty cieplne pomieszczeń, dobierze optymalny rozstaw rur, długość pętli oraz parametry rozdzielacza. Przykładowo, w przypadku domu o powierzchni 150 m², warto zamówić <a href="https://projekt-ogrzewania.pl/produkt/projekt-ogrzewania-podlogowego-do-150-m2/">projekt ogrzewania podłogowego do 150 m²</a>, który uwzględni specyfikę budynku i źródła ciepła (np. pompę ciepła).</p>



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



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1741091403804"><strong class="schema-faq-question"><strong>Czy można samodzielnie zamontować ogrzewanie podłogowe?</strong></strong> <p class="schema-faq-answer">Tak, ale wymaga to wiedzy i precyzji. Najlepiej skonsultować się z projektantem lub doświadczonym instalatorem, aby uniknąć błędów, takich jak nieprawidłowy rozstaw rur czy brak izolacji.</p> </div> <div class="schema-faq-section" id="faq-question-1741091487279"><strong class="schema-faq-question"><strong>Jaka grubość izolacji jest potrzebna pod ogrzewaniem podłogowym?</strong></strong> <p class="schema-faq-answer">Minimalna grubość to 5 cm, ale w domach energooszczędnych zaleca się nawet 10 cm. Warto użyć płyt styropianowych EPS 200 dla lepszej izolacyjności.</p> </div> <div class="schema-faq-section" id="faq-question-1741091497565"><strong class="schema-faq-question"><strong> Jakie rury są najlepsze do ogrzewania podłogowego?</strong></strong> <p class="schema-faq-answer">Rury wielowarstwowe PE-RT AL-PE (np. Kisan Redart) są trwałe i elastyczne, co sprawdza się w większości instalacji.</p> </div> <div class="schema-faq-section" id="faq-question-1741091509504"><strong class="schema-faq-question"><strong>Dlaczego dylatacje są ważne w ogrzewaniu podłogowym?</strong></strong> <p class="schema-faq-answer">Dylatacje zapobiegają pękaniu posadzki pod wpływem rozszerzalności termicznej. Należy je wykonać przy ścianach oraz co każde 40 m² powierzchni.</p> </div> <div class="schema-faq-section" id="faq-question-1741091530037"><strong class="schema-faq-question"><strong>Czy warto zainwestować w profesjonalny projekt ogrzewania podłogowego?</strong></strong> <p class="schema-faq-answer">Tak, projektant obliczy straty cieplne, dobierze optymalny rozstaw rur i długość pętli, co zapobiegnie problemom z nierównomiernym grzaniem lub awariami.</p> </div> </div>



<h2 class="wp-block-heading">Podsumowanie: Lepiej zapobiegać niż naprawiać.</h2>



<p class="wp-block-paragraph"><em>Najczęstsze błędy przy montażu ogrzewania podłogowego</em> często wynikają z prób oszczędzania lub niedostatecznej wiedzy. Inwestycja w <strong>jakościowe materiały</strong> (np. <a href="https://projekt-ogrzewania.pl/produkt/folia-do-ogrzewania-podlogowego-laminat-metalizowany-z-rastrem/">folia metalizowana</a>), <strong>profesjonalny projekt</strong> oraz współpracę z doświadczonymi instalatorami zwróci się w postaci bezawaryjnej instalacji i niższych rachunków za energię. Pamiętaj, że nawet drobne niedociągnięcia mogą kosztować Cię tysiące złotych w przyszłości!</p>



<figure class="wp-block-embed aligncenter is-type-wp-embed is-provider-projekt-ogrzewania wp-block-embed-projekt-ogrzewania"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="48h27w0rbC"><a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Projekt instalacji ogrzewania podłogowego &#8211; podłogówki</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8222;Projekt instalacji ogrzewania podłogowego &#8211; podłogówki&#8221; &#8212; Projekt Ogrzewania" src="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/embed/#?secret=jnysDCeVWl#?secret=48h27w0rbC" data-secret="48h27w0rbC" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">Najczęstsze błędy przy montażu ogrzewania podłogowego i jak ich uniknąć.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Norma EN ISO 15875.</title>
		<link>https://projekt-ogrzewania.pl/norma-en-iso-15875/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Thu, 27 Feb 2025 18:39:53 +0000</pubDate>
				<category><![CDATA[Bezpieczeństwo instalacji]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Materiały budowlane]]></category>
		<category><![CDATA[Normy budowlane]]></category>
		<category><![CDATA[Normy grzewcze]]></category>
		<category><![CDATA[Normy i certyfikaty]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Technologie grzewcze]]></category>
		<category><![CDATA[bezpieczeństwo instalacji]]></category>
		<category><![CDATA[certyfikaty jakości]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[norma en iso 15875]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[porady budowlane]]></category>
		<category><![CDATA[projektowanie ogrzewania]]></category>
		<category><![CDATA[rury grzewcze]]></category>
		<category><![CDATA[tworzywa sztuczne]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2301</guid>

					<description><![CDATA[<p>Planujesz montaż ogrzewania podłogowego? Dowiedz się, dlaczego norma EN ISO 15875 jest kluczowa dla bezpieczeństwa i trwałości Twojej instalacji. W artykule omawiamy wymagania tej normy, korzyści z jej stosowania oraz praktyczne wskazówki dotyczące projektowania systemów grzewczych. Sprawdź, jak wybrać odpowiednie rury i uniknąć błędów, które mogą wpłynąć na efektywność ogrzewania.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/norma-en-iso-15875/">Norma EN ISO 15875.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Wybór odpowiednich materiałów do <em>ogrzewania podłogowego</em> ma kluczowe znaczenie dla efektywności i bezpieczeństwa całej instalacji. Jednym z najważniejszych dokumentów potwierdzających jakość rur stosowanych w tego typu systemach jest <strong>norma EN ISO 15875</strong>. </p>



<p class="wp-block-paragraph">W artykule przyjrzymy się, dlaczego ten standard jest tak istotny, jakie wymagania stawia przed producentami oraz jak wpływa na trwałość i niezawodność instalacji grzewczych. Dowiesz się również, jak wykorzystać go w praktyce podczas projektowania ogrzewania podłogowego.</p>



<h2 class="wp-block-heading">Czym jest norma EN ISO 15875 i dlaczego warto ją znać?</h2>



<p class="wp-block-paragraph"><strong>Norma EN ISO 15875</strong> to międzynarodowy standard określający <strong>wymagania dla <a href="https://projekt-ogrzewania.pl/rury-do-ogrzewania-podlogowego/">rur z tworzyw sztucznych</a></strong> stosowanych w instalacjach wodnych, w tym w systemach ogrzewania podłogowego. Dokument ten precyzuje kryteria dotyczące:</p>



<ul class="wp-block-list">
<li><strong>Materiałów</strong> – dopuszczalnych rodzajów tworzyw (np. PE-X, PB),</li>



<li><strong>Wytrzymałości mechanicznej</strong> – odporności na uszkodzenia i odkształcenia,</li>



<li><strong>Odporności termicznej</strong> – stabilności w wysokich temperaturach,</li>



<li><strong>Bezpieczeństwa sanitarnego</strong> – braku negatywnego wpływu na jakość wody.</li>
</ul>



<p class="wp-block-paragraph">Certyfikacja zgodnie z tą normą oznacza, że produkt przeszedł rygorystyczne testy, a jego parametry są zgodne z europejskimi wymaganiami. To właśnie dlatego <strong>rury oznaczone EN ISO 15875</strong> są rekomendowane przez ekspertów jako podstawa niezawodnych instalacji grzewczych.</p>



<h2 class="wp-block-heading">Wymagania normy EN ISO 15875 – na co zwrócić uwagę?</h2>



<p class="wp-block-paragraph">Aby rury mogły spełnić <strong>normę EN ISO 15875</strong>, muszą przejść serię badań, które potwierdzają ich właściwości techniczne. Oto najważniejsze aspekty oceniane w procesie certyfikacji:</p>



<h3 class="wp-block-heading">1. Odporność na wysokie temperatury i ciśnienie.</h3>



<p class="wp-block-paragraph">W systemach <strong><a href="https://projekt-ogrzewania.pl">ogrzewania podłogowego</a></strong> rury narażone są na działanie wody o temperaturze nawet do <strong>70°C</strong> (w zależności od projektu). Norma wymaga, aby tworzywo zachowało stabilność przez co najmniej <strong>50 lat</strong> w takich warunkach. Przykładem są rury PE-X, które dzięki sieciowanej strukturze wykazują wyjątkową odporność na rozciąganie i pękanie.</p>



<h3 class="wp-block-heading">2. Minimalizacja strat ciepła.</h3>



<p class="wp-block-paragraph"><strong>Dobrze izolowane rury</strong> to mniejsze zużycie energii i niższe rachunki. Norma EN ISO 15875 określa dopuszczalne współczynniki przewodzenia ciepła, co przekłada się na optymalną grubość ścianek rur. Na przykład rury PB (polibutylenowe) charakteryzują się niższym współczynnikiem niż PE-X, co może być istotne w projektach wymagających wysokiej efektywności.</p>



<h3 class="wp-block-heading">3. Bezpieczeństwo dla zdrowia.</h3>



<p class="wp-block-paragraph">W przypadku instalacji łączących ogrzewanie podłogowe z systemem ciepłej wody użytkowej, norma gwarantuje, że materiały nie uwalniają szkodliwych substancji. Przykładowo, rury certyfikowane <strong>EN ISO 15875</strong> są wolne od metali ciężkich i ftalanów.</p>



<h2 class="wp-block-heading">Korzyści stosowania rur zgodnych z normą EN ISO 15875</h2>



<p class="wp-block-paragraph">Inwestycja w certyfikowane produkty to nie tylko spełnienie wymogów prawnych, ale też szereg praktycznych zalet:</p>



<ul class="wp-block-list">
<li><strong>Długowieczność</strong> – instalacje wytrzymują nawet kilkadziesiąt lat bez awarii,</li>



<li><strong>Oszczędność energii</strong> – precyzyjna dystrybucja ciepła redukuje straty,</li>



<li><strong>Bezpieczeństwo</strong> – brak ryzyka przecieków czy pęknięć,</li>



<li><strong>Gwarancja producenta</strong> – wiele firm udziela nawet 10-letniej ochrony na swoje produkty.</li>
</ul>



<h3 class="wp-block-heading">Przykłady zastosowań w praktyce</h3>



<p class="wp-block-paragraph">W projektach <strong>ogrzewania podłogowego</strong> w domach jednorodzinnych często wykorzystuje się rury PE-X ze względu na ich elastyczność i łatwość układania. Z kolei w obiektach przemysłowych, gdzie wymagana jest większa odporność na obciążenia mechaniczne, sprawdzają się rury PB. W obu przypadkach norma EN ISO 15875 działa jako „filtrujący” standard, eliminujący produkty niskiej jakości.</p>



<h2 class="wp-block-heading">Projekt ogrzewania podłogowego a norma EN ISO 15875 – kluczowe etapy</h2>



<p class="wp-block-paragraph">Planując instalację grzewczą, warto uwzględnić wymagania normy już na etapie <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">projektu ogrzewania podłogowego</a>. Oto jak to zrobić:</p>



<h3 class="wp-block-heading">1. Wybór materiałów.</h3>



<p class="wp-block-paragraph">Zawsze sprawdzaj, czy rury posiadają certyfikat <strong>EN ISO 15875</strong>. Unikaj produktów bez oznaczeń lub z niejasnymi deklaracjami. Przykład: rury marki Kisan, TECE, Uponor lub Rehau są standardowo certyfikowane, co potwierdzają dokumentacje techniczne.</p>



<h3 class="wp-block-heading">2. Rozmieszczenie rur.</h3>



<p class="wp-block-paragraph">Norma nie reguluje bezpośrednio układu pętli grzewczych, ale zaleca zachowanie minimalnych odległości między rurami (zwykle ok. 10-30 cm), aby uniknąć lokalnych przegrzewów. W projektach złożonych, np. w łazienkach z wieloma strefami grzewczymi, warto użyć rur o mniejszych średnicach (np. 14 mm), które łatwiej dopasować do kształtu pomieszczenia.</p>



<h3 class="wp-block-heading">3. Dokumentacja i gwarancje.</h3>



<p class="wp-block-paragraph">Przechowuj certyfikaty zgodności z normą – mogą być wymagane przez inspektorów nadzoru budowlanego lub w przypadku roszczeń gwarancyjnych. Niektóre firmy, jak np. Viega, oferują dodatkowe ubezpieczenie instalacji, pod warunkiem użycia certyfikowanych komponentów.</p>



<h3 class="wp-block-heading">4. Testy ciśnieniowe.</h3>



<p class="wp-block-paragraph">Przed zalaniem posadzki, przeprowadź próbę szczelności instalacji zgodnie z parametrami normy (np. ciśnienie 6 bar przez 24 godziny). To pozwoli wykryć ewentualne wady materiałów lub montażu.</p>



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



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1740680812103"><strong class="schema-faq-question"><strong>Dlaczego norma EN ISO 15875 jest ważna w ogrzewaniu podłogowym?</strong></strong> <p class="schema-faq-answer">Norma EN ISO 15875 gwarantuje, że rury spełniają wymagania dotyczące wytrzymałości, odporności termicznej i bezpieczeństwa, co przekłada się na trwałość i niezawodność instalacji.</p> </div> <div class="schema-faq-section" id="faq-question-1740680822708"><strong class="schema-faq-question"><strong>Jakie materiały są dopuszczone przez normę EN ISO 15875?</strong></strong> <p class="schema-faq-answer">Norma dopuszcza rury z tworzyw sztucznych, takich jak PE-X (polietylen sieciowany) i PB (polibutylen), które są odporne na wysokie temperatury i ciśnienie.</p> </div> <div class="schema-faq-section" id="faq-question-1740680838734"><strong class="schema-faq-question"><strong>Czy rury zgodne z normą EN ISO 15875 są droższe?</strong></strong> <p class="schema-faq-answer">Choć mogą być nieco droższe, ich wyższa jakość i dłuższa żywotność sprawiają, że inwestycja zwraca się dzięki mniejszym kosztom eksploatacji i napraw.</p> </div> <div class="schema-faq-section" id="faq-question-1740680846736"><strong class="schema-faq-question"><strong>Jak sprawdzić, czy rury są zgodne z normą EN ISO 15875?</strong></strong> <p class="schema-faq-answer">Należy szukać certyfikatów zgodności wydanych przez producenta lub niezależne instytucje certyfikujące. Informacje te często znajdują się na opakowaniu lub w dokumentacji technicznej.</p> </div> <div class="schema-faq-section" id="faq-question-1740680859276"><strong class="schema-faq-question"><strong>Czy norma EN ISO 15875 dotyczy tylko ogrzewania podłogowego?</strong></strong> <p class="schema-faq-answer">Nie, norma dotyczy również innych instalacji wodnych, ale w przypadku ogrzewania podłogowego jest szczególnie istotna ze względu na specyficzne warunki pracy rur.</p> </div> </div>



<h2 class="wp-block-heading">Podsumowanie: Dlaczego norma EN ISO 15875 to niezbędny standard?</h2>



<p class="wp-block-paragraph">Stosowanie rur zgodnych z <strong>normą EN ISO 15875</strong> to inwestycja w bezawaryjność i energooszczędność ogrzewania podłogowego. Dzięki precyzyjnym wymaganiom dotyczącym wytrzymałości, bezpieczeństwa i trwałości, standard ten stał się synonimem jakości w branży instalacyjnej. Niezależnie od tego, czy projektujesz system dla małego mieszkania, czy wielkopowierzchniowego magazynu – wybór certyfikowanych komponentów to najlepsza droga do sukcesu.</p>



<figure class="wp-block-embed aligncenter is-type-wp-embed is-provider-projekt-ogrzewania wp-block-embed-projekt-ogrzewania"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="YkhGD03zx4"><a href="https://projekt-ogrzewania.pl/produkt/projekt-ogrzewania-podlogowego-do-100-m2/">Projekt ogrzewania podłogowego &#8211; do 100 m2</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8222;Projekt ogrzewania podłogowego &#8211; do 100 m2&#8221; &#8212; Projekt Ogrzewania" src="https://projekt-ogrzewania.pl/produkt/projekt-ogrzewania-podlogowego-do-100-m2/embed/#?secret=kROEAMOUhR#?secret=YkhGD03zx4" data-secret="YkhGD03zx4" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/norma-en-iso-15875/">Norma EN ISO 15875.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Wylewka na ogrzewanie podłogowe – kompletny przewodnik.</title>
		<link>https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/</link>
					<comments>https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Tue, 18 Feb 2025 19:48:37 +0000</pubDate>
				<category><![CDATA[Budowa i remont]]></category>
		<category><![CDATA[Jastrych]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradniki budowlane]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Porady budowlane]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Remonty i budowa]]></category>
		<category><![CDATA[Wylewka]]></category>
		<category><![CDATA[Wylewka anhydrytowa]]></category>
		<category><![CDATA[Wylewka cementowa]]></category>
		<category><![CDATA[grubość wylewki]]></category>
		<category><![CDATA[izolacja termiczna]]></category>
		<category><![CDATA[jastrych]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[podkład podłogowy]]></category>
		<category><![CDATA[porady budowlane]]></category>
		<category><![CDATA[system grzewczy]]></category>
		<category><![CDATA[wylewka]]></category>
		<category><![CDATA[wylewka anhydrytowa]]></category>
		<category><![CDATA[wylewka cementowa]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2254</guid>

					<description><![CDATA[<p>Planujesz montaż ogrzewania podłogowego? Wylewka na ogrzewanie podłogowe to kluczowy element, który wpływa na efektywność i trwałość całego systemu. W naszym artykule dowiesz się, jak wybrać odpowiedni rodzaj wylewki (cementową lub anhydrytową), jaką grubość zastosować oraz na co zwrócić uwagę podczas jej wykonywania. Poznasz również najczęstsze błędy i praktyczne wskazówki, które pomogą Ci uniknąć kosztownych pomyłek. Sprawdź, jak prawidłowo przygotować podłoże i ciesz się równomiernym ciepłem w swoim domu!</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">Wylewka na ogrzewanie podłogowe – kompletny przewodnik.</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-blue: #2563eb;
    --rk-intro-cyan: #06b6d4;
    --rk-intro-red: #dc2626;
    --rk-intro-green: #16a34a;
    --rk-intro-bg: #ffffff;
    --rk-intro-surface: #f8fafc;
    --rk-intro-border: #e2e8f0;
    --rk-intro-text: #334155;
}

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

/* Sekcja Treści - Wstęp */
.rk-intro-content {
    padding: 45px 50px 30px;
    background: linear-gradient(180deg, #ffffff 0%, var(--rk-intro-surface) 100%);
    border-bottom: 1px solid var(--rk-intro-border);
}

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

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

.rk-intro-text-block {
    font-size: 17px;
    line-height: 1.8;
    color: var(--rk-intro-text);
    margin-bottom: 20px;
}

.rk-intro-text-block strong {
    color: var(--rk-intro-dark);
    font-weight: 700;
}

.rk-intro-text-block a {
    color: var(--rk-intro-blue);
    font-weight: 600;
    text-decoration: none;
    border-bottom: 2px solid rgba(37, 99, 235, 0.2);
    transition: all 0.3s ease;
}

.rk-intro-text-block a:hover {
    border-bottom-color: var(--rk-intro-blue);
    background: rgba(37, 99, 235, 0.05);
}

.rk-intro-alert {
    background: #fff1f2;
    border-left: 4px solid var(--rk-intro-red);
    padding: 20px;
    border-radius: 0 12px 12px 0;
    margin: 25px 0 0 0;
    font-size: 16px;
    line-height: 1.6;
    color: #881337;
}

/* Sekcja Interaktywna - Skaner */
.rk-intro-scanner {
    padding: 40px 50px;
    background: var(--rk-intro-dark);
    color: #ffffff;
}

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

.rk-scanner-header h3 {
    font-size: 22px;
    font-weight: 800;
    margin: 0 0 10px 0;
    color: #f8fafc;
}

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

/* Suwak w stylu aplikacji */
.rk-slider-container {
    padding: 20px 0;
    margin-bottom: 30px;
}

.rk-range-input {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    background: linear-gradient(90deg, var(--rk-intro-red) 0%, var(--rk-intro-cyan) 50%, var(--rk-intro-green) 100%);
    border-radius: 10px;
    outline: none;
    cursor: grab;
}

.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #ffffff;
    box-shadow: 0 0 15px rgba(255,255,255,0.5);
    border: 4px solid var(--rk-intro-dark);
    cursor: grabbing;
    transition: transform 0.1s;
}

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

.rk-slider-labels {
    display: flex;
    justify-content: space-between;
    margin-top: 15px;
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.rk-label-bad { color: #f87171; }
.rk-label-good { color: #4ade80; }

/* Ekran diagnostyczny */
.rk-diag-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    align-items: center;
}

.rk-diag-svg {
    width: 100%;
    max-width: 350px;
    margin: 0 auto;
    background: #1e293b;
    border-radius: 16px;
    padding: 20px;
    box-shadow: inset 0 4px 6px rgba(0,0,0,0.3);
}

.rk-diag-stats {
    background: rgba(255,255,255,0.05);
    padding: 25px;
    border-radius: 16px;
    border: 1px solid rgba(255,255,255,0.1);
}

.rk-stat-item {
    margin-bottom: 20px;
}
.rk-stat-item:last-child { margin-bottom: 0; }

.rk-stat-title {
    font-size: 13px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 700;
    margin-bottom: 5px;
}

.rk-stat-value {
    font-size: 24px;
    font-weight: 900;
    display: flex;
    align-items: baseline;
    gap: 5px;
    transition: color 0.3s;
}

.rk-stat-value small {
    font-size: 14px;
    font-weight: 600;
    opacity: 0.7;
}

/* Dynamika klas JS */
.status-critical .rk-stat-value { color: var(--rk-intro-red); }
.status-warning .rk-stat-value { color: var(--rk-intro-cyan); }
.status-optimal .rk-stat-value { color: var(--rk-intro-green); }

/* SVG Animacje wewnątrz Skanera */
.anim-heat-ray {
    stroke-dasharray: 10;
    animation: flowHeat 2s linear infinite;
}

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

@media (max-width: 768px) {
    .rk-intro-content, .rk-intro-scanner { padding: 30px 20px; }
    .rk-diag-grid { grid-template-columns: 1fr; }
    .rk-intro-title { font-size: 22px; }
    .rk-diag-svg { padding: 10px; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/"
    },
    "headline": "Rola jastrychu grzejnego w systemie ogrzewania podłogowego",
    "description": "Czym jest wylewka na ogrzewanie podłogowe? Wyjaśniamy funkcje jastrychu grzejnego, normę PN-EN 1264-4 oraz zagrożenia płynące ze złego wykonawstwa (cisi zabójcy budżetu).",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-18",
    "dateModified": "2026-05-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#dataset-wstep",
    "name": "Parametry Prawidłowego Jastrychu wg PN-EN 1264-4",
    "description": "Baza wiedzy definiująca techniczne uwarunkowania wylewki grzejnej, z naciskiem na bezwładność, dylatacje i straty energii.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jastrych grzejny grubość 50-80mm",
      "norma PN-EN 1264-4 otulina rury",
      "bezwładność cieplna wylewki",
      "dylatacje ogrzewania podłogowego",
      "cisi zabójcy sprawności energetycznej"
    ],
    "measurementTechnique": "Analiza zgodności warstwy jastrychu z normami budowlanymi i termodynamiką.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Płyta akumulacyjna: Optymalna grubość to 50-80 mm dla zachowania balansu bezwładności.",
        "Otulina rury: Brak szczelnego przylegania betonu powoduje powstawanie izolatora powietrznego.",
        "Ryzyka awarii: Pęknięcia z powodu braku dylatacji zmniejszają przewodność i uszkadzają posadzkę."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#webapp-skaner",
    "name": "Inżynierski Skaner Jakości Jastrychu",
    "description": "Interaktywna aplikacja typu suwak (slider) pozwalająca użytkownikowi zobaczyć różnicę między wylewką wadliwą (pęcherze powietrza, pęknięcia) a zgodną z normą PN-EN 1264-4.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 Range Input and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA
=========================================== -->
<div class="rk-intro-app" id="wylewka-intro-app">
    
    <!-- Treść Wstępu -->
    <div class="rk-intro-content">
        <h2 class="rk-intro-title">
            <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="2" y="3" width="20" height="14" rx="2" ry="2"></rect><line x1="8" y1="21" x2="16" y2="21"></line><line x1="12" y1="17" x2="12" y2="21"></line></svg>
            Fundament sprawności systemu
        </h2>
        
        <p class="rk-intro-text-block">
            <strong>Wylewka na ogrzewanie podłogowe</strong>, fachowo nazywana <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">jastrychem grzejnym</a>, to warstwa podkładu podłogowego o grubości zazwyczaj od <strong>50 mm do 80 mm</strong>, pełniąca funkcję emitora ciepła, ochrony mechanicznej przewodów oraz płyty akumulacyjnej. 
        </p>
        
        <p class="rk-intro-text-block">
            Według normy <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">PN-EN 1264-4</a>, jastrych musi szczelnie otaczać rury grzejne, aby zapewnić maksymalną przewodność cieplną i równomierny rozkład temperatury na powierzchni posadzki (T<sub>surf</sub>).
        </p>

        <div class="rk-intro-alert">
            <strong>Problem z wylewką to nie tylko kwestia estetyki, ale przede wszystkim sprawności energetycznej.</strong> Zbyt duża <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładność cieplna</a>, pęknięcia wynikające z braku <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">dylatacji</a> czy niska przewodność materiału to „cisi zabójcy” Twojego portfela. Poniżej rozbijam ten temat na czynniki pierwsze.
        </div>
    </div>

    <!-- Interaktywny Skaner -->
    <div class="rk-intro-scanner">
        <div class="rk-scanner-header">
            <h3>Skaner Jakości Wylewki (Symulator)</h3>
            <p>Przesuń suwak, aby zobaczyć, co dzieje się wewnątrz posadzki.</p>
        </div>

        <div class="rk-slider-container">
            <input type="range" min="0" max="100" value="100" class="rk-range-input" id="rkQualitySlider">
            <div class="rk-slider-labels">
                <span class="rk-label-bad">Błędy Wykonawcze</span>
                <span class="rk-label-good">Norma PN-EN 1264</span>
            </div>
        </div>

        <div class="rk-diag-grid" id="rkDiagGrid">
            
            <!-- Grafika SVG -->
            <div class="rk-diag-svg">
                <svg viewBox="0 0 300 200" xmlns="http://www.w3.org/2000/svg">
                    <!-- Izolacja EPS -->
                    <rect x="0" y="160" width="300" height="40" fill="#334155"/>
                    <text x="10" y="185" fill="#64748b" font-size="12" font-family="sans-serif">EPS (Izolacja)</text>
                    
                    <!-- Rury -->
                    <circle cx="80" cy="130" r="14" fill="#ef4444" stroke="#ffffff" stroke-width="2"/>
                    <circle cx="220" cy="130" r="14" fill="#ef4444" stroke="#ffffff" stroke-width="2"/>
                    
                    <!-- Dylatacja brzegowa -->
                    <rect x="290" y="50" width="10" height="110" fill="#0ea5e9" id="svgDylatacja" opacity="1"/>

                    <!-- Zły Jastrych (Widoczny przy niskiej jakości) -->
                    <g id="svgBadScreed" opacity="0">
                        <path d="M0 50 H290 V160 H0 Z" fill="#475569"/>
                        <!-- Pęknięcie z powodu braku dylatacji -->
                        <path d="M150 50 L140 80 L160 110 L150 160" fill="none" stroke="#0f172a" stroke-width="3"/>
                        <!-- Pęcherze powietrza (Izolator) wokół rur -->
                        <circle cx="80" cy="130" r="22" fill="none" stroke="#94a3b8" stroke-width="2" stroke-dasharray="4"/>
                        <circle cx="220" cy="130" r="22" fill="none" stroke="#94a3b8" stroke-width="2" stroke-dasharray="4"/>
                        <text x="100" y="100" fill="#f87171" font-size="10" font-weight="bold">Powietrze = Izolator</text>
                        <!-- Zaburzony strumień ciepła -->
                        <path d="M80 100 Q60 70 90 40" fill="none" stroke="#ef4444" stroke-width="2" opacity="0.3"/>
                    </g>

                    <!-- Dobry Jastrych (Widoczny przy wysokiej jakości) -->
                    <g id="svgGoodScreed" opacity="1">
                        <path d="M0 50 H290 V160 H0 Z" fill="#94a3b8"/>
                        <!-- Prawidłowy otulina -->
                        <circle cx="80" cy="130" r="18" fill="none" stroke="#10b981" stroke-width="2"/>
                        <circle cx="220" cy="130" r="18" fill="none" stroke="#10b981" stroke-width="2"/>
                        <!-- Idealny strumień ciepła -->
                        <path class="anim-heat-ray" d="M80 110 V30" fill="none" stroke="#ef4444" stroke-width="3"/>
                        <path class="anim-heat-ray" d="M220 110 V30" fill="none" stroke="#ef4444" stroke-width="3"/>
                    </g>
                </svg>
            </div>

            <!-- Dane diagnostyczne -->
            <div class="rk-diag-stats">
                <div class="rk-stat-item">
                    <div class="rk-stat-title">Straty energetyczne</div>
                    <div class="rk-stat-value" id="valLoss">0<small>%</small></div>
                </div>
                <div class="rk-stat-item">
                    <div class="rk-stat-title">Zgodność z normą PN-EN</div>
                    <div class="rk-stat-value" id="valNorm">Pełna <small>(Akceptacja)</small></div>
                </div>
                <div class="rk-stat-item">
                    <div class="rk-stat-title">Ocena ryzyka awarii</div>
                    <div class="rk-stat-value" id="valRisk">Brak <small>(Dylatacje aktywne)</small></div>
                </div>
            </div>

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

<!-- ==========================================
     LOGIKA JS I ZABEZPIECZENIE (DOMAIN LOCK)
=========================================== -->
<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez nagłówków H-tag)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('wylewka-intro-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 30px; text-align: center; background: #fff1f2; color: #be123c; border: 2px solid #f43f5e; border-radius: 16px; font-family: sans-serif; margin: 20px;">
                    <div style="font-size: 32px; margin-bottom: 10px;">⚠️</div>
                    <div style="font-size: 16px; font-weight: 800; text-transform: uppercase;">Naruszenie Praw Autorskich</div>
                    <div style="font-size: 14px; margin-top: 10px;">
                        Moduł "Skaner Jakości" i dane JSON-LD są przypisane do domeny Projekt-Ogrzewania.pl. Uruchomienie zablokowane.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Skanera Jakości
    const slider = document.getElementById('rkQualitySlider');
    const svgGood = document.getElementById('svgGoodScreed');
    const svgBad = document.getElementById('svgBadScreed');
    const svgDylatacja = document.getElementById('svgDylatacja');
    
    const valLoss = document.getElementById('valLoss');
    const valNorm = document.getElementById('valNorm');
    const valRisk = document.getElementById('valRisk');
    const diagGrid = document.getElementById('rkDiagGrid');

    function updateScanner(val) {
        // Przeliczenie na skale 0-1
        const goodOpacity = val / 100;
        const badOpacity = 1 - goodOpacity;

        // Aktualizacja SVG
        svgGood.style.opacity = goodOpacity;
        svgBad.style.opacity = badOpacity;
        
        // Dylatacja zanika poniżej 40% jakości
        if(val < 40) {
            svgDylatacja.style.opacity = '0.2';
            svgDylatacja.setAttribute('fill', '#ef4444');
        } else {
            svgDylatacja.style.opacity = '1';
            svgDylatacja.setAttribute('fill', '#0ea5e9');
        }

        // Aktualizacja tekstów i klas kolorów
        diagGrid.classList.remove('status-optimal', 'status-warning', 'status-critical');

        if (val >= 80) {
            diagGrid.classList.add('status-optimal');
            valLoss.innerHTML = `${Math.round((100 - val) * 0.2)}<small>%</small>`;
            valNorm.innerHTML = `Pełna <small>(Akceptacja)</small>`;
            valRisk.innerHTML = `Niskie <small>(Otulina OK)</small>`;
        } else if (val >= 40) {
            diagGrid.classList.add('status-warning');
            valLoss.innerHTML = `${Math.round((100 - val) * 0.4)}<small>%</small>`;
            valNorm.innerHTML = `Częściowa <small>(Ostrzeżenie)</small>`;
            valRisk.innerHTML = `Średnie <small>(Pęcherze powietrza)</small>`;
        } else {
            diagGrid.classList.add('status-critical');
            valLoss.innerHTML = `${Math.round((100 - val) * 0.6)}<small>%</small>`;
            valNorm.innerHTML = `Brak <small>(Odrzucenie)</small>`;
            valRisk.innerHTML = `Krytyczne <small>(Pęknięcia/Izolator)</small>`;
        }
    }

    // Inicjalizacja nasłuchu na suwak
    slider.addEventListener('input', (e) => {
        updateScanner(e.target.value);
    });

    // Uruchomienie początkowe
    updateScanner(slider.value);
});
</script>



<style>
:root {
    --rk-vs-dark: #0f172a;
    --rk-vs-panel: #1e293b;
    --rk-vs-anhydrite: #fbbf24; /* Ciepły, płynny kolor */
    --rk-vs-cement: #94a3b8; /* Chłodny, betonowy szary */
    --rk-vs-heat: #ef4444;
    --rk-vs-bg: #ffffff;
    --rk-vs-border: #e2e8f0;
    --rk-vs-text: #334155;
}

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

/* Nagłówek Sekcji */
.rk-vs-header {
    padding: 40px 50px 25px;
    background: linear-gradient(to right, #ffffff, #f8fafc);
    border-bottom: 1px solid var(--rk-vs-border);
}

.rk-vs-title {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-vs-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

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

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

.rk-vs-desc a {
    color: #2563eb;
    font-weight: 600;
    text-decoration: none;
    box-shadow: inset 0 -2px 0 rgba(37, 99, 235, 0.2);
    transition: all 0.2s;
}

.rk-vs-desc a:hover {
    box-shadow: inset 0 -10px 0 rgba(37, 99, 235, 0.1);
}

/* Interfejs Symulatora */
.rk-vs-app {
    display: grid;
    grid-template-columns: 350px 1fr;
    background: var(--rk-vs-panel);
    color: #ffffff;
}

/* Panel Boczny z Wyborem */
.rk-vs-sidebar {
    padding: 30px;
    border-right: 1px solid rgba(255,255,255,0.1);
    background: #0f172a;
}

.rk-vs-sidebar h3 {
    font-size: 16px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #94a3b8;
    margin: 0 0 20px 0;
    font-weight: 800;
}

.rk-type-btn {
    display: block;
    width: 100%;
    padding: 20px;
    margin-bottom: 15px;
    background: rgba(255,255,255,0.03);
    border: 2px solid rgba(255,255,255,0.1);
    border-radius: 16px;
    color: #ffffff;
    text-align: left;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
}

.rk-type-btn:hover {
    background: rgba(255,255,255,0.08);
}

.rk-type-btn.active[data-target="anhydrite"] {
    background: rgba(251, 191, 36, 0.1);
    border-color: var(--rk-vs-anhydrite);
}

.rk-type-btn.active[data-target="cement"] {
    background: rgba(148, 163, 184, 0.1);
    border-color: var(--rk-vs-cement);
}

.rk-type-name {
    font-size: 18px;
    font-weight: 800;
    margin-bottom: 5px;
    display: block;
}

.rk-type-hint {
    font-size: 13px;
    color: #94a3b8;
}

/* Główny Ekran Symulacji */
.rk-vs-main {
    padding: 40px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

/* Wizualizacja SVG */
.rk-vs-visual {
    width: 100%;
    max-width: 400px;
    margin: 0 auto 30px auto;
    position: relative;
}

.rk-svg-cross {
    width: 100%;
    height: auto;
    filter: drop-shadow(0 10px 15px rgba(0,0,0,0.3));
}

/* Animacje fal ciepła */
.heat-wave {
    opacity: 0;
    transform-origin: bottom center;
}

.state-anhydrite .heat-wave {
    animation: flowUpFast 1.5s infinite linear;
    stroke: var(--rk-vs-anhydrite);
}

.state-cement .heat-wave {
    animation: flowUpSlow 3s infinite linear;
    stroke: #fca5a5;
}

/* Opóźnienia dla płynności */
.hw-1 { animation-delay: 0.0s !important; }
.hw-2 { animation-delay: 0.5s !important; }
.hw-3 { animation-delay: 1.0s !important; }

@keyframes flowUpFast {
    0% { transform: translateY(10px) scale(0.8); opacity: 0; }
    50% { opacity: 0.8; }
    100% { transform: translateY(-40px) scale(1.2); opacity: 0; }
}

@keyframes flowUpSlow {
    0% { transform: translateY(10px) scale(0.8); opacity: 0; }
    50% { opacity: 0.5; }
    100% { transform: translateY(-20px) scale(1.1); opacity: 0; }
}

/* Zmienne elementy SVG za pomocą klas */
.mesh-layer { transition: opacity 0.3s; }
.state-anhydrite .mesh-layer { opacity: 0; }
.state-cement .mesh-layer { opacity: 1; }

.screed-mass { transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); }
.state-anhydrite .screed-mass { height: 50px; y: 70; fill: #fef3c7; }
.state-cement .screed-mass { height: 65px; y: 55; fill: #cbd5e1; }

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

.rk-param-box {
    background: rgba(0,0,0,0.2);
    padding: 15px;
    border-radius: 12px;
    border: 1px solid rgba(255,255,255,0.05);
}

.rk-param-label {
    font-size: 12px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 700;
    margin-bottom: 8px;
    display: block;
}

.rk-param-value {
    font-size: 20px;
    font-weight: 900;
    color: #ffffff;
}

.rk-param-value small {
    font-size: 12px;
    font-weight: 400;
    color: #94a3b8;
}

.status-badge {
    display: inline-block;
    padding: 4px 8px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    margin-top: 5px;
}

.badge-pro { background: rgba(16, 185, 129, 0.2); color: #34d399; }
.badge-con { background: rgba(239, 68, 68, 0.2); color: #f87171; }

@media (max-width: 768px) {
    .rk-vs-app { grid-template-columns: 1fr; }
    .rk-vs-sidebar { border-right: none; border-bottom: 1px solid rgba(255,255,255,0.1); padding: 25px; }
    .rk-params-grid { grid-template-columns: 1fr; }
    .rk-vs-header { padding: 30px 25px; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#article-wybor",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/"
    },
    "headline": "Jaka wylewka na ogrzewanie podłogowe jest najlepsza? Anhydryt vs Cement",
    "description": "Porównanie jastrychu anhydrytowego i cementowego pod ogrzewanie podłogowe. Poznaj współczynniki lambda (przewodność cieplna), grubości oraz klasy wytrzymałości.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-18",
    "dateModified": "2026-05-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#dataset-materialy",
    "name": "Baza Danych: Właściwości termiczne jastrychów grzejnych 2026",
    "description": "Zestawienie parametrów inżynierskich określających wydajność ogrzewania płaszczyznowego w zależności od użytej wylewki.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "współczynnik przewodzenia ciepła lambda",
      "jastrych anhydrytowy parametry",
      "wylewka cementowa plastyfikator",
      "wytrzymałość na ściskanie C20/F4",
      "bezwładność cieplna podłogówki"
    ],
    "measurementTechnique": "Określanie parametrów fizycznych (Lambda, MPa) na podstawie testów laboratoryjnych materiałów budowlanych oraz normy PN-EN.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Jastrych Anhydrytowy: Przewodność cieplna λ ≈ 1,6 - 2,0 W/(m·K), brak konieczności zbrojenia, grubość nad rurką min. 35mm.",
        "Jastrych Cementowy: Przewodność cieplna λ ≈ 1,1 - 1,4 W/(m·K), wysoka bezwładność, wymaga zbrojenia i plastyfikatorów."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#webapp-lambda",
    "name": "Symulator Przewodności Cieplnej (Lambda) i Doboru Wylewki",
    "description": "Interaktywny widget inżynierski analizujący przepływ ciepła i wymagania konstrukcyjne dla wylewek anhydrytowych i betonowych (cementowych).",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and SVG Support",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA
=========================================== -->
<div class="rk-vs-container" id="wylewka-vs-app">
    
    <!-- Nagłówek merytoryczny -->
    <div class="rk-vs-header">
        <h2 class="rk-vs-title">Jaka wylewka na ogrzewanie podłogowe jest najlepsza?</h2>
        <p class="rk-vs-desc">
            Najlepsza wylewka to taka, która posiada wysoki <strong>współczynnik przewodzenia ciepła (lambda)</strong> oraz wysoką wytrzymałość na ściskanie (klasa minimum <strong>C20/F4</strong>). W nowoczesnym budownictwie wybieramy między jastrychem anhydrytowym (płynnym) a <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">cementowym (półsuchym z miksokreta)</a>. Zrozumienie, <a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/">jak działa ogrzewanie podłogowe</a>, zaczyna się od wyboru tego materiału, ponieważ anhydryt dominuje w salonach i sypialniach ze względu na bezkonkurencyjne parametry termiczne.
        </p>
    </div>

    <!-- Moduł Interaktywny -->
    <div class="rk-vs-app state-anhydrite" id="rkVsEngine">
        
        <!-- Sidebar wyboru -->
        <div class="rk-vs-sidebar">
            <h3>Wybierz technologię</h3>
            
            <button class="rk-type-btn active" data-target="anhydrite">
                <span class="rk-type-name">Jastrych Anhydrytowy</span>
                <span class="rk-type-hint">System płynny, samopoziomujący</span>
            </button>
            
            <button class="rk-type-btn" data-target="cement">
                <span class="rk-type-name">Jastrych Cementowy</span>
                <span class="rk-type-hint">System półsuchy (miksokret)</span>
            </button>
        </div>

        <!-- Obszar symulacji i wyników -->
        <div class="rk-vs-main">
            
            <!-- Wizualizacja przekroju SVG -->
            <div class="rk-vs-visual">
                <svg viewBox="0 0 400 160" class="rk-svg-cross" xmlns="http://www.w3.org/2000/svg">
                    <!-- Fale Ciepła (Animowane klasy CSS) -->
                    <g class="heat-waves-group">
                        <path class="heat-wave hw-1" d="M100 110 Q110 70 100 20" fill="none" stroke-width="4" stroke-linecap="round"/>
                        <path class="heat-wave hw-2" d="M200 110 Q190 70 200 20" fill="none" stroke-width="4" stroke-linecap="round"/>
                        <path class="heat-wave hw-3" d="M300 110 Q310 70 300 20" fill="none" stroke-width="4" stroke-linecap="round"/>
                    </g>

                    <!-- Płytki / Wykończenie -->
                    <rect x="20" y="45" width="360" height="8" fill="#334155" rx="2"/>

                    <!-- Zmienna masa wylewki -->
                    <rect x="20" class="screed-mass" width="360" rx="3"/>

                    <!-- Siatka Zbrojeniowa (Widoczna tylko w cemencie) -->
                    <g class="mesh-layer" stroke="#64748b" stroke-width="1.5" opacity="0">
                        <line x1="20" y1="80" x2="380" y2="80" stroke-dasharray="8 4"/>
                        <line x1="20" y1="90" x2="380" y2="90" stroke-dasharray="8 4"/>
                    </g>

                    <!-- Rury PEX -->
                    <circle cx="100" cy="110" r="12" fill="#ef4444" stroke="#ffffff" stroke-width="3"/>
                    <circle cx="200" cy="110" r="12" fill="#ef4444" stroke="#ffffff" stroke-width="3"/>
                    <circle cx="300" cy="110" r="12" fill="#ef4444" stroke="#ffffff" stroke-width="3"/>

                    <!-- Izolacja EPS z folią -->
                    <rect x="20" y="125" width="360" height="4" fill="#3b82f6"/> <!-- Folia -->
                    <rect x="20" y="129" width="360" height="25" fill="#475569" rx="2"/> <!-- EPS -->
                </svg>
            </div>

            <!-- Dynamiczne parametry inżynierskie -->
            <div class="rk-params-grid">
                <div class="rk-param-box">
                    <span class="rk-param-label">Przewodność (Lambda)</span>
                    <span class="rk-param-value" id="valLambda">1,6 &#8211; 2,0 <small>W/(m·K)</small></span>
                    <div class="status-badge badge-pro" id="badgeLambda">Wysoka (Szybki nagrzew)</div>
                </div>
                <div class="rk-param-box">
                    <span class="rk-param-label">Wymagane zbrojenie</span>
                    <span class="rk-param-value" id="valZbroj">Brak</span>
                    <div class="status-badge badge-pro" id="badgeZbroj">Oszczędność czasu</div>
                </div>
                <div class="rk-param-box">
                    <span class="rk-param-label">Min. otulina nad rurą</span>
                    <span class="rk-param-value" id="valGrubosc">35 mm</span>
                    <div class="status-badge badge-pro" id="badgeGrubosc">Mniejsze obciążenie</div>
                </div>
            </div>

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

<!-- ==========================================
     LOGIKA JS I ZABEZPIECZENIE (DOMAIN LOCK)
=========================================== -->
<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Dyskretne zabezpieczenie domenowe (bez H-tagów)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('wylewka-vs-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif; max-width: 950px; margin: 40px auto;">
                    <div style="font-size: 36px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Ochrona Własności Intelektualnej</div>
                    <div style="font-size: 14px; color: #cbd5e1; line-height: 1.6;">
                        Moduł interaktywny "Symulator Przewodności Cieplnej" stanowi własność Projekt-Ogrzewania.pl. Wykryto użycie na nieautoryzowanej domenie.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Silnika Symulacji
    const engine = document.getElementById('rkVsEngine');
    const buttons = document.querySelectorAll('.rk-type-btn');
    
    // Elementy DOM do aktualizacji danych
    const vLambda = document.getElementById('valLambda');
    const vZbroj = document.getElementById('valZbroj');
    const vGrubosc = document.getElementById('valGrubosc');
    
    const bLambda = document.getElementById('badgeLambda');
    const bZbroj = document.getElementById('badgeZbroj');
    const bGrubosc = document.getElementById('badgeGrubosc');

    // Baza danych materiałów (Zgodna z wytycznymi)
    const materialsData = {
        anhydrite: {
            lambda: "1,6 - 2,0",
            zbroj: "Brak",
            grubosc: "35 mm",
            bLText: "Wysoka (Szybki nagrzew)",
            bLClass: "badge-pro",
            bZText: "Oszczędność czasu",
            bZClass: "badge-pro",
            bGText: "Mniejsze obciążenie",
            bGClass: "badge-pro"
        },
        cement: {
            lambda: "1,1 - 1,4",
            zbroj: "Siatka / Włókna",
            grubosc: "Min. 45 mm",
            bLText: "Wysoka bezwładność",
            bLClass: "badge-con",
            bZText: "Wymaga plastyfikatorów",
            bZClass: "badge-con",
            bGText: "Większa masa stropu",
            bGClass: "badge-con"
        }
    };

    function updateSimulator(type) {
        const data = materialsData[type];
        
        // Aktualizacja Wartości
        vLambda.innerHTML = `${data.lambda} <small>W/(m·K)</small>`;
        vZbroj.innerHTML = data.zbroj;
        vGrubosc.innerHTML = data.grubosc;

        // Aktualizacja Etykiet (Badges)
        bLambda.textContent = data.bLText;
        bLambda.className = `status-badge ${data.bLClass}`;
        
        bZbroj.textContent = data.bZText;
        bZbroj.className = `status-badge ${data.bZClass}`;
        
        bGrubosc.textContent = data.bGText;
        bGrubosc.className = `status-badge ${data.bGClass}`;

        // Zmiana klas silnika dla animacji SVG
        engine.className = `rk-vs-app state-${type}`;
    }

    // Nasłuchiwanie na kliknięcia
    buttons.forEach(btn => {
        btn.addEventListener('click', function() {
            // Zarządzanie stanem 'active'
            buttons.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            // Pobranie celu i aktualizacja
            const target = this.getAttribute('data-target');
            updateSimulator(target);
        });
    });
});
</script>



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



<style>
:root {
    --rk-thick-dark: #0f172a;
    --rk-thick-panel: #f8fafc;
    --rk-thick-primary: #3b82f6; /* Techniczny niebieski */
    --rk-thick-success: #10b981; /* Optymalnie */
    --rk-thick-warning: #f59e0b; /* Zbyt grubo */
    --rk-thick-danger: #ef4444; /* Zbyt cienko - ryzyko */
    --rk-thick-border: #cbd5e1;
    --rk-thick-text: #334155;
    --rk-thick-bg: #ffffff;
}

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

/* Nagłówek i Treść */
.rk-thick-header {
    padding: 45px 50px 30px;
    background: var(--rk-thick-bg);
    border-bottom: 2px dashed var(--rk-thick-border);
}

.rk-thick-title {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-thick-dark);
    margin: 0 0 20px 0;
    line-height: 1.3;
}

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

.rk-thick-text strong {
    color: var(--rk-thick-dark);
}

.rk-thick-text a {
    color: var(--rk-thick-primary);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(59, 130, 246, 0.2);
    transition: all 0.3s;
}

.rk-thick-text a:hover {
    border-bottom-color: var(--rk-thick-primary);
    background: rgba(59, 130, 246, 0.05);
}

/* Aplikacja: Kalibrator Bezwładności */
.rk-thick-app {
    background: var(--rk-thick-dark);
    color: #ffffff;
    padding: 40px 50px;
}

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

.rk-app-header h3 {
    font-size: 22px;
    font-weight: 800;
    margin: 0 0 10px 0;
    color: #f1f5f9;
}

/* Przełącznik Materiału */
.rk-material-switch {
    display: flex;
    justify-content: center;
    gap: 15px;
    margin-bottom: 35px;
}

.rk-mat-btn {
    background: rgba(255,255,255,0.05);
    border: 2px solid rgba(255,255,255,0.1);
    color: #94a3b8;
    padding: 12px 24px;
    border-radius: 12px;
    font-weight: 700;
    font-size: 15px;
    cursor: pointer;
    transition: all 0.3s;
}

.rk-mat-btn.active {
    background: rgba(59, 130, 246, 0.2);
    border-color: var(--rk-thick-primary);
    color: #ffffff;
    box-shadow: 0 0 20px rgba(59, 130, 246, 0.3);
}

/* Sekcja Suwaka */
.rk-slider-wrapper {
    position: relative;
    padding: 20px 0 40px;
}

.rk-range-input {
    -webkit-appearance: none;
    width: 100%;
    height: 12px;
    background: #334155;
    border-radius: 10px;
    outline: none;
    cursor: ew-resize;
    position: relative;
    z-index: 2;
}

.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: #ffffff;
    border: 5px solid var(--rk-thick-primary);
    box-shadow: 0 0 15px rgba(0,0,0,0.5);
    cursor: grab;
    transition: transform 0.1s;
}

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

/* Strefy optymalne wizualizacja pod suwakiem */
.rk-slider-zones {
    position: absolute;
    top: 20px;
    left: 0;
    width: 100%;
    height: 12px;
    border-radius: 10px;
    z-index: 1;
    overflow: hidden;
    display: flex;
    opacity: 0.5;
}

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

/* SVG Wizualizacja */
.rk-svg-box {
    background: #1e293b;
    border-radius: 16px;
    padding: 30px 15px;
    box-shadow: inset 0 10px 20px rgba(0,0,0,0.2);
    position: relative;
}

.rk-svg-scene {
    width: 100%;
    height: auto;
    max-width: 320px;
    margin: 0 auto;
    display: block;
}

.anim-screed-level {
    transition: all 0.3s ease-out;
}

.rk-alert-badge {
    position: absolute;
    top: 15px;
    right: 15px;
    padding: 6px 12px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    display: flex;
    align-items: center;
    gap: 6px;
    opacity: 0;
    transform: translateY(-10px);
    transition: all 0.3s;
    z-index: 10;
}

.rk-alert-badge.show {
    opacity: 1;
    transform: translateY(0);
}

/* Dynamiczne stany dla kalibratora */
.state-danger-low .rk-range-input::-webkit-slider-thumb { border-color: var(--rk-thick-danger); }
.state-danger-low .anim-screed-level { fill: #7f1d1d; }
.state-danger-low .rk-alert-badge { background: rgba(239, 68, 68, 0.2); color: #fca5a5; }

.state-optimal .rk-range-input::-webkit-slider-thumb { border-color: var(--rk-thick-success); }
.state-optimal .anim-screed-level { fill: #064e3b; }
.state-optimal .rk-alert-badge { background: rgba(16, 185, 129, 0.2); color: #6ee7b7; }

.state-danger-high .rk-range-input::-webkit-slider-thumb { border-color: var(--rk-thick-warning); }
.state-danger-high .anim-screed-level { fill: #78350f; }
.state-danger-high .rk-alert-badge { background: rgba(245, 158, 11, 0.2); color: #fcd34d; }

/* Panel Danych */
.rk-data-panel {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-data-row {
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.05);
    padding: 15px 20px;
    border-radius: 12px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.rk-data-label {
    font-size: 14px;
    color: #94a3b8;
    font-weight: 600;
}

.rk-data-val {
    font-size: 22px;
    font-weight: 900;
    color: #ffffff;
    font-variant-numeric: tabular-nums;
}

.rk-data-val small {
    font-size: 14px;
    font-weight: 500;
    color: #64748b;
    margin-left: 4px;
}

@media (max-width: 768px) {
    .rk-thick-header, .rk-thick-app { padding: 30px 20px; }
    .rk-results-grid { grid-template-columns: 1fr; }
    .rk-data-row { flex-direction: column; align-items: flex-start; gap: 5px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#article-grubosc",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/"
    },
    "headline": "Optymalna grubość wylewki na ogrzewanie podłogowe - Złoty środek inżynierii",
    "description": "Zgodnie z normą PN-EN 1264 optymalna grubość jastrychu to 65 mm (cement) i 50-60 mm (anhydryt). Sprawdź, jak każdy dodatkowy centymetr wpływa na bezwładność termiczną i obciążenie stropu.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-18",
    "dateModified": "2026-05-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#dataset-bezwladnosc",
    "name": "Tabela Bezwładności i Obciążeń Wylewek 2026",
    "description": "Zestawienie wzrostu masy jastrychu (kg/m2) oraz opóźnienia w reakcji systemu na zmianę temperatury w funkcji grubości warstwy przykrywającej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "optymalna grubość wylewki na podłogówkę",
      "norma obliczeń ogrzewania podłogowego EN 1264",
      "minimalna warstwa przykrycia rury sd",
      "obciążenie stropu ogrzewanie podłogowe",
      "czas reakcji ogrzewania bezwładność"
    ],
    "measurementTechnique": "Algorytmiczne obliczenia inżynierskie przyrostu masy (ok. 18 kg na każde 10mm) i czasu nagrzewania (ok. 38 minut na każde 10mm) w stosunku do wylewki odniesienia.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Jastrych Cementowy: Całkowita optymalna grubość 65 mm (min. przykrycie 45 mm).",
        "Jastrych Anhydrytowy: Całkowita optymalna grubość 50-60 mm (min. przykrycie 35 mm).",
        "Konsekwencje: Zwiększenie grubości o 10 mm to +15-20 kg obciążenia/m² i +30-45 min. opóźnienia."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#webapp-kalibrator",
    "name": "Inżynierski Kalibrator Bezwładności Wylewki",
    "description": "Interaktywny suwak obliczający w czasie rzeczywistym wpływ grubości jastrychu (w mm) na obciążenie stropu, czas odpowiedzi termostatu oraz zgodność grubości sd z normą PN-EN 1264.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 Range Input, JavaScript and SVG animations",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-thick-container" id="grubosc-app-core">
    
    <div class="rk-thick-header">
        <h2 class="rk-thick-title">Jaka jest optymalna grubość wylewki na ogrzewanie podłogowe?</h2>
        
        <p class="rk-thick-text">
            Optymalna całkowita <a href="https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/">grubość wylewki</a> wynosi <strong>65 mm dla jastrychu cementowego</strong> oraz <strong>50-60 mm dla anhydrytowego</strong>, licząc od warstwy izolacji termicznej. Zgodnie z <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">normą PN-EN 1264</a>, minimalna warstwa przykrycia ponad zewnętrzną średnicą rury (s<sub>d</sub>) powinna wynosić <strong>45 mm</strong> dla cementu i <strong>35 mm</strong> dla anhydrytu (przy klasie wytrzymałości min. C20).
        </p>

        <p class="rk-thick-text">
            Zwiększenie grubości o każde 10 mm to dodatkowe <strong>15-20 kg obciążenia na m²</strong> stropu i drastyczne wydłużenie <a href="https://projekt-ogrzewania.pl/ile-czasu-nagrzewa-sie-podlogowka/">czasu nagrzewania</a> (reakcji na zmianę nastawy na <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">termostacie pokojowym</a>) o około <strong>30-45 minut</strong>. W moich projektach dążymy do inżynierskiego złotego środka: balansu między stabilnością temperatury a sterowalnością.
        </p>
    </div>

    <div class="rk-thick-app">
        <div class="rk-app-header">
            <h3>Kalibrator Bezwładności Wylewki (Symulator)</h3>
            <p style="color: #94a3b8; margin:0; font-size: 14px;">Sprawdź, jak grubość wpływa na fizykę budynku. Zmień parametry poniżej.</p>
        </div>

        <div class="rk-material-switch">
            <button class="rk-mat-btn active" data-mat="cement">Jastrych Cementowy</button>
            <button class="rk-mat-btn" data-mat="anhydryt">Jastrych Anhydrytowy</button>
        </div>

        <div class="rk-slider-wrapper" id="rkZoneContainer">
            <div class="rk-slider-zones" id="rkZones"></div>
            
            <input type="range" min="30" max="100" value="65" class="rk-range-input" id="rkThickSlider">
            <div style="display: flex; justify-content: space-between; margin-top: 10px; font-size: 12px; color: #64748b; font-weight: 700;">
                <span>30 mm (Zbyt cienko)</span>
                <span>100 mm (Bunkier)</span>
            </div>
        </div>

        <div class="rk-results-grid" id="rkResultEngine">
            
            <div class="rk-svg-box">
                <div class="rk-alert-badge" id="rkAlertBadge">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                    <span id="rkAlertText">Ryzyko Pęknięć</span>
                </div>

                <svg viewBox="0 0 230 200" class="rk-svg-scene" xmlns="http://www.w3.org/2000/svg">
                    <rect x="0" y="0" width="230" height="200" fill="none" />
                    
                    <rect x="20" y="150" width="160" height="40" fill="#334155" rx="2" />
                    <text x="30" y="175" fill="#64748b" font-size="12">Izolacja EPS</text>
                    
                    <circle cx="100" cy="142" r="8" fill="#ef4444" stroke="#ffffff" stroke-width="2" />
                    <line x1="100" y1="142" x2="100" y2="150" stroke="#fff" stroke-dasharray="2 2" /> <rect id="svgScreed" class="anim-screed-level" x="20" y="85" width="160" height="65" rx="2" opacity="0.9"/>
                    
                    <path id="svgMeasureLine" class="anim-screed-level" d="M 185 150 L 185 85" stroke="#cbd5e1" stroke-width="2" marker-start="url(#arrow)" marker-end="url(#arrow)"/>
                    <text id="svgMeasureText" x="205" y="120" fill="#f8fafc" font-size="16" font-weight="bold" text-anchor="middle">65</text>
                    
                    <defs>
                        <marker id="arrow" viewBox="0 0 10 10" refX="5" refY="5" markerWidth="4" markerHeight="4" orient="auto-start-reverse">
                            <path d="M 0 0 L 10 5 L 0 10 z" fill="#cbd5e1" />
                        </marker>
                    </defs>
                </svg>
            </div>

            <div class="rk-data-panel">
                <div class="rk-data-row">
                    <span class="rk-data-label">Całkowita Grubość</span>
                    <span class="rk-data-val" id="valTotal">65<small>mm</small></span>
                </div>
                <div class="rk-data-row">
                    <span class="rk-data-label">Otulina nad rurą (s<sub>d</sub>)</span>
                    <span class="rk-data-val" id="valSd">49<small>mm</small></span>
                </div>
                <div class="rk-data-row">
                    <span class="rk-data-label">Szacunkowa masa jastrychu</span>
                    <span class="rk-data-val" id="valWeight">143<small>kg/m²</small></span>
                </div>
                <div class="rk-data-row">
                    <span class="rk-data-label">Dodatkowe opóźnienie reakcji</span>
                    <span class="rk-data-val" style="color: #fca5a5;" id="valLag">+0<small>min</small></span>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domeny (Bez znaczników nagłówków)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('grubosc-app-core');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; max-width: 950px; margin: 40px auto; font-family: sans-serif;">
                    <div style="font-size: 36px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Ochrona Skryptów Narzędziowych</div>
                    <div style="font-size: 14px; color: #cbd5e1; line-height: 1.6;">
                        Kalibrator Bezwładności Wylewki oraz dane strukturalne JSON-LD podlegają ochronie prawnoautorskiej serwisu Projekt-Ogrzewania.pl.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Kalibratora
    const slider = document.getElementById('rkThickSlider');
    const matBtns = document.querySelectorAll('.rk-mat-btn');
    const engineBox = document.getElementById('rkResultEngine');
    const zonesBox = document.getElementById('rkZones');
    
    // SVG Elements
    const svgScreed = document.getElementById('svgScreed');
    const svgMeasureLine = document.getElementById('svgMeasureLine');
    const svgMeasureText = document.getElementById('svgMeasureText');
    const alertBadge = document.getElementById('rkAlertBadge');
    const alertText = document.getElementById('rkAlertText');

    // Wartości liczbowe
    const vTotal = document.getElementById('valTotal');
    const vSd = document.getElementById('valSd');
    const vWeight = document.getElementById('valWeight');
    const vLag = document.getElementById('valLag');

    // Konfiguracja norm i fizyki
    let currentMat = 'cement'; // 'cement' lub 'anhydryt'
    const RURA_DIA = 16;
    
    const matConfig = {
        cement: {
            minSdNorm: 45,
            densityKgMm: 2.2, // ~2200 kg/m3
            optimalMin: 60,
            optimalMax: 70
        },
        anhydryt: {
            minSdNorm: 35,
            densityKgMm: 2.0, // ~2000 kg/m3
            optimalMin: 50,
            optimalMax: 60
        }
    };

    function drawZones() {
        const conf = matConfig[currentMat];
        const totalRange = 100 - 30; // 70 jednostek
        
        // Poniżej normy (Czerwony)
        const pDangerLow = ((conf.optimalMin - 30) / totalRange) * 100;
        // Optymalna (Zielony)
        const pOptimal = ((conf.optimalMax - conf.optimalMin) / totalRange) * 100;
        // Za gruba (Żółty)
        const pDangerHigh = 100 - pDangerLow - pOptimal;

        zonesBox.innerHTML = `
            <div style="width: ${pDangerLow}%; background: var(--rk-thick-danger);"></div>
            <div style="width: ${pOptimal}%; background: var(--rk-thick-success);"></div>
            <div style="width: ${pDangerHigh}%; background: var(--rk-thick-warning);"></div>
        `;
    }

    function updateCalculator() {
        const t = parseInt(slider.value); // grubość całkowita (30 do 100)
        const conf = matConfig[currentMat];
        
        // Obliczenia
        const sd = t - RURA_DIA; // grubość nad rurą
        const weight = Math.round(t * conf.densityKgMm);
        
        // Obliczenie opóźnienia (delta względem minimum optymalnego)
        // Zakładamy, że każde 10mm PONAD optimum = +38 min (średnia z 30-45)
        let lag = 0;
        if (t > conf.optimalMax) {
            lag = Math.round(((t - conf.optimalMax) / 10) * 38);
        }

        // Aktualizacja UI Tekstowego
        vTotal.innerHTML = `${t}<small>mm</small>`;
        vSd.innerHTML = `${sd}<small>mm</small>`;
        vWeight.innerHTML = `${weight}<small>kg/m²</small>`;
        
        if (lag > 0) {
            vLag.innerHTML = `+${lag}<small>min</small>`;
            vLag.style.color = '#fca5a5';
        } else {
            vLag.innerHTML = `Norma`;
            vLag.style.color = '#6ee7b7';
        }

        // Aktualizacja SVG i Oceny (Klas CSS)
        engineBox.classList.remove('state-danger-low', 'state-optimal', 'state-danger-high');
        
        // Skalowanie w SVG: Y base = 150. 1mm = 1px na rysunku (skala 1:1 dla uproszczenia wizualnego 30-100)
        const rectHeight = t; 
        const rectY = 150 - t;
        
        svgScreed.setAttribute('height', rectHeight);
        svgScreed.setAttribute('y', rectY);
        svgMeasureLine.setAttribute('d', `M 185 150 L 185 ${rectY}`);
        // Wyrównanie Y do środka linii
        svgMeasureText.setAttribute('y', rectY + (rectHeight/2) + 5);
        svgMeasureText.textContent = t;

        // Logika statusu inżynierskiego
        if (sd < conf.minSdNorm) {
            engineBox.classList.add('state-danger-low');
            alertText.textContent = "Brak normy - Spękania!";
            alertBadge.classList.add('show');
        } else if (t >= conf.optimalMin && t <= conf.optimalMax) {
            engineBox.classList.add('state-optimal');
            alertText.textContent = "Złoty Środek";
            alertBadge.classList.add('show');
        } else {
            engineBox.classList.add('state-danger-high');
            alertText.textContent = "Wysoka Bezwładność!";
            alertBadge.classList.add('show');
        }
    }

    // Nasłuch na Slider
    slider.addEventListener('input', updateCalculator);

    // Nasłuch na zmianę materiału
    matBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            matBtns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            
            currentMat = this.getAttribute('data-mat');
            
            // Dopasuj domyślny slider do optimum materiału przy przełączeniu
            if(currentMat === 'anhydryt') slider.value = 55;
            if(currentMat === 'cement') slider.value = 65;

            drawZones();
            updateCalculator();
        });
    });

    // Inicjalizacja Startowa
    drawZones();
    updateCalculator();
});
</script>



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



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



<style>
:root {
    --rk-heat-dark: #0f172a;
    --rk-heat-panel: #1e293b;
    --rk-heat-blue: #0ea5e9; /* Woda/Wilgoć */
    --rk-heat-orange: #f97316; /* Ciepło */
    --rk-heat-red: #ef4444; /* Maksymalna temperatura */
    --rk-heat-green: #10b981; /* Gotowość */
    --rk-heat-bg: #ffffff;
    --rk-heat-text: #334155;
    --rk-heat-border: #e2e8f0;
}

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

/* Sekcja Treści */
.rk-heat-content {
    padding: 40px 50px 30px;
    background: #ffffff;
    border-bottom: 2px dashed var(--rk-heat-border);
}

.rk-heat-title {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-heat-dark);
    margin: 0 0 20px 0;
    line-height: 1.3;
}

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

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

.rk-heat-text a {
    color: var(--rk-heat-orange);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(249, 115, 22, 0.2);
    transition: all 0.3s;
}

.rk-heat-text a:hover {
    border-bottom-color: var(--rk-heat-orange);
    background: rgba(249, 115, 22, 0.05);
}

.rk-heat-alert {
    display: flex;
    gap: 15px;
    background: #fff7ed;
    border-left: 4px solid var(--rk-heat-orange);
    padding: 20px;
    border-radius: 0 12px 12px 0;
    margin-top: 25px;
}

.rk-heat-alert-icon {
    color: var(--rk-heat-orange);
    flex-shrink: 0;
}

.rk-heat-alert p {
    margin: 0;
    font-size: 15px;
    color: #9a3412;
}

/* Aplikacja Interaktywna */
.rk-heat-app {
    background: var(--rk-heat-dark);
    color: #ffffff;
    padding: 40px 50px;
}

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

.rk-app-header h3 {
    font-size: 22px;
    font-weight: 800;
    margin: 0 0 10px 0;
    color: #f8fafc;
}

.rk-app-header p {
    color: #94a3b8;
    font-size: 14px;
    margin: 0;
}

/* Material Toggle */
.rk-heat-mat-toggle {
    display: flex;
    justify-content: center;
    gap: 15px;
    margin-bottom: 35px;
}

.rk-btn-mat {
    background: rgba(255,255,255,0.05);
    border: 2px solid rgba(255,255,255,0.1);
    color: #94a3b8;
    padding: 12px 25px;
    border-radius: 12px;
    font-weight: 700;
    font-size: 15px;
    cursor: pointer;
    transition: all 0.3s;
}

.rk-btn-mat.active {
    background: rgba(249, 115, 22, 0.15);
    border-color: var(--rk-heat-orange);
    color: #ffffff;
    box-shadow: 0 0 20px rgba(249, 115, 22, 0.2);
}

/* Czas Oczekiwania (Dynamiczny) */
.rk-wait-phase {
    text-align: center;
    background: rgba(14, 165, 233, 0.1);
    border: 1px dashed var(--rk-heat-blue);
    padding: 15px;
    border-radius: 12px;
    margin-bottom: 30px;
}

.rk-wait-phase span {
    display: block;
    font-size: 13px;
    color: var(--rk-heat-blue);
    text-transform: uppercase;
    font-weight: 700;
    margin-bottom: 5px;
}

.rk-wait-phase strong {
    font-size: 24px;
    color: #ffffff;
}

/* Suwak Dni Wygrzewania */
.rk-timeline-slider {
    margin-bottom: 40px;
}

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

.rk-range-days::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: var(--rk-heat-orange);
    border: 4px solid #ffffff;
    box-shadow: 0 0 15px rgba(249, 115, 22, 0.6);
    cursor: pointer;
    transition: transform 0.1s;
}

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

.rk-slider-ticks {
    display: flex;
    justify-content: space-between;
    margin-top: 15px;
    font-size: 12px;
    color: #64748b;
    font-weight: 600;
}

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

/* SVG Wizualizacja */
.rk-heat-svg-box {
    background: #1e293b;
    border-radius: 16px;
    padding: 30px 20px;
    box-shadow: inset 0 10px 20px rgba(0,0,0,0.3);
    position: relative;
    text-align: center;
}

.rk-svg-cross {
    width: 100%;
    max-width: 280px;
    height: auto;
}

/* Animacje i dynamiczne kolory SVG */
.anim-pipe { transition: fill 0.5s ease, filter 0.5s ease; }
.anim-therm-fill { transition: height 0.5s ease, y 0.5s ease, fill 0.5s ease; }
.anim-moisture { transition: opacity 0.5s ease; animation: floatUp 2s infinite linear; }

@keyframes floatUp {
    0% { transform: translateY(0) scale(0.8); opacity: 0; }
    50% { opacity: 0.6; }
    100% { transform: translateY(-30px) scale(1.2); opacity: 0; }
}

.delay-1 { animation-delay: 0s; }
.delay-2 { animation-delay: 0.6s; }
.delay-3 { animation-delay: 1.2s; }

/* Panel Danych */
.rk-stats-list {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-stat-item {
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.05);
    padding: 15px 20px;
    border-radius: 12px;
    display: flex;
    flex-direction: column;
}

.rk-stat-label {
    font-size: 13px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 700;
    margin-bottom: 5px;
}

.rk-stat-val {
    font-size: 22px;
    font-weight: 900;
    color: #ffffff;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-badge {
    font-size: 11px;
    padding: 4px 8px;
    border-radius: 6px;
    font-weight: 800;
    text-transform: uppercase;
}

.badge-wait { background: rgba(14, 165, 233, 0.2); color: #7dd3fc; }
.badge-heat { background: rgba(249, 115, 22, 0.2); color: #fdba74; }
.badge-done { background: rgba(16, 185, 129, 0.2); color: #6ee7b7; }

@media (max-width: 768px) {
    .rk-heat-header, .rk-heat-app { padding: 30px 20px; }
    .rk-heat-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#article-wygrzewanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/"
    },
    "headline": "Ile trwa schnięcie i kiedy można uruchomić wygrzewanie podłogówki?",
    "description": "Harmonogram wygrzewania technologicznego wylewki. Sprawdź, dlaczego anhydryt schnie 7 dni, a beton 28 dni. Instrukcja podnoszenia temperatury zasilania krok po kroku.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-18",
    "dateModified": "2026-05-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#dataset-harmonogram",
    "name": "Harmonogram Wygrzewania Technologicznego Jastrychu",
    "description": "Zestawienie ram czasowych oraz przyrostów temperatury krzywej grzewczej wymaganych do bezpiecznego usunięcia wilgoci z jastrychu.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "czas schnięcia wylewki anhydrytowej",
      "wygrzewanie technologiczne jastrychu",
      "maksymalna temperatura zasilania podłogówki",
      "harmonogram podnoszenia temperatury",
      "skurcz i spękania betonu"
    ],
    "measurementTechnique": "Algorytm temperaturowy: start 20-25°C przez 3 dni, następnie przyrost +5°C/dobę aż do osiągnięcia projektowej temperatury zasilania Tz (np. 45°C).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Faza 1 (Oczekiwanie): Cement = 28 dni, Anhydryt = 7 dni naturalnego wiązania.",
        "Faza 2 (Start): Utrzymanie 25°C przez 3 doby robocze.",
        "Faza 3 (Progresja): Podnoszenie temperatury zasilania równe 5°C każdego dnia.",
        "Cel końcowy: Pozbycie się resztkowej wilgoci CM przed montażem okładzin (płytek/paneli)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#webapp-wygrzewanie",
    "name": "Symulator Wygrzewania Technologicznego",
    "description": "Interaktywny kalendarz budowlany z suwakiem pozwalający sprawdzić wymaganą temperaturę zasilania w danym dniu procesu wygrzewania posadzki.",
    "applicationCategory": "ConstructionCalculator",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 Range Input, JavaScript and SVG animations",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-heat-container" id="wygrzewanie-app-core">
    
    <div class="rk-heat-content">
        <h2 class="rk-heat-title">Ile trwa schnięcie i kiedy można uruchomić wygrzewanie?</h2>
        
        <div class="rk-heat-text">
            <p>
                Czas schnięcia jastrychu cementowego wynosi standardowo <strong>28 dni</strong>, natomiast jastrych anhydrytowy osiąga gotowość do wygrzewania już po <strong>7 dniach</strong>. Należy pamiętać, gdy planujesz <a href="https://projekt-ogrzewania.pl/kiedy-najlepiej-planowac-montaz-ogrzewania-podlogowego-w-nowym-domu/">montaż ogrzewania w nowym domu</a>, że proces ten absolutnie nie może być przyspieszany przeciągami. Wilgoć musi uchodzić naturalnie i powoli, aby uniknąć destrukcyjnego skurczu materiału i spękań.
            </p>
            <p>
                Wygrzewanie wylewki (tzw. wygrzewanie technologiczne) zaczynamy od temperatury <strong>20-25°C</strong>, którą utrzymujemy stabilnie przez 3 dni. Następnie podnosimy nastawę o <strong>5°C na dobę</strong>, aż do osiągnięcia <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">projektowej temperatury zasilania</a> (np. 45°C). 
            </p>
        </div>

        <div class="rk-heat-alert">
            <svg class="rk-heat-alert-icon" 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="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>
            <p><strong>Uwaga inżynierska:</strong> Pominięcie tego kroku przed kładzeniem docelowych <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/">płytek lub paneli</a> to gwarancja ich całkowitego odspojenia (tzw. wysadzenia posadzki) już w pierwszym sezonie grzewczym.</p>
        </div>
    </div>

    <div class="rk-heat-app">
        <div class="rk-app-header">
            <h3>Termo-Symulator Wygrzewania Technologicznego</h3>
            <p>Przeprowadź wirtualny proces pozbywania się wilgoci z posadzki.</p>
        </div>

        <div class="rk-heat-mat-toggle">
            <button class="rk-btn-mat active" data-mat="anhydryt">Anhydryt</button>
            <button class="rk-btn-mat" data-mat="cement">Cement</button>
        </div>

        <div class="rk-wait-phase">
            <span>Czas wiązania przed startem pompy ciepła</span>
            <strong id="valWaitTime">7 Dni</strong>
        </div>

        <div class="rk-timeline-slider">
            <input type="range" min="1" max="8" value="1" class="rk-range-days" id="rkDaySlider">
            <div class="rk-slider-ticks">
                <span>Dzień 1 (Start)</span>
                <span>Dzień 4 (Progresja)</span>
                <span>Dzień 8 (Koniec)</span>
            </div>
        </div>

        <div class="rk-heat-grid">
            
            <div class="rk-heat-svg-box">
                <svg viewBox="0 0 200 160" class="rk-svg-cross" xmlns="http://www.w3.org/2000/svg">
                    <rect x="170" y="20" width="12" height="100" fill="#334155" rx="6"/>
                    <rect id="svgThermometer" class="anim-therm-fill" x="170" y="90" width="12" height="30" fill="#3b82f6" rx="6"/>
                    <circle id="svgThermBulb" class="anim-therm-fill" cx="176" cy="120" r="12" fill="#3b82f6"/>
                    
                    <g id="svgMoistureGroup">
                        <path class="anim-moisture delay-1" d="M 60 70 Q 65 60 60 50 Q 55 60 60 70" fill="#0ea5e9"/>
                        <path class="anim-moisture delay-2" d="M 100 80 Q 105 70 100 60 Q 95 70 100 80" fill="#0ea5e9"/>
                        <path class="anim-moisture delay-3" d="M 140 70 Q 145 60 140 50 Q 135 60 140 70" fill="#0ea5e9"/>
                    </g>

                    <rect x="20" y="90" width="140" height="60" fill="#64748b" rx="2" opacity="0.8"/>
                    
                    <circle id="svgPipe1" class="anim-pipe" cx="50" cy="125" r="10" fill="#3b82f6" stroke="#fff" stroke-width="2"/>
                    <circle id="svgPipe2" class="anim-pipe" cx="90" cy="125" r="10" fill="#3b82f6" stroke="#fff" stroke-width="2"/>
                    <circle id="svgPipe3" class="anim-pipe" cx="130" cy="125" r="10" fill="#3b82f6" stroke="#fff" stroke-width="2"/>
                </svg>
            </div>

            <div class="rk-stats-list">
                <div class="rk-stat-item">
                    <span class="rk-stat-label">Dzień Protokołu</span>
                    <span class="rk-stat-val" id="valDay">1</span>
                </div>
                <div class="rk-stat-item">
                    <span class="rk-stat-label">Nastawa Temperatury Zasilania</span>
                    <div class="rk-stat-val">
                        <span id="valTemp">25°C</span>
                        <span class="rk-badge badge-wait" id="valBadge">Utrzymanie</span>
                    </div>
                </div>
                <div class="rk-stat-item">
                    <span class="rk-stat-label">Status Wilgoci (Metoda CM)</span>
                    <span class="rk-stat-val" id="valStatus" style="font-size: 16px;">Intensywne odparowywanie</span>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Dyskretne zabezpieczenie domenowe (bez znaczników nagłówków)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('wygrzewanie-app-core');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; max-width: 950px; margin: 40px auto; font-family: sans-serif;">
                    <div style="font-size: 36px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Naruszenie Praw Autorskich</div>
                    <div style="font-size: 14px; color: #cbd5e1; line-height: 1.6;">
                        Termo-Symulator Wygrzewania Technologicznego jest wyłączną własnością serwisu Projekt-Ogrzewania.pl. Wykryto nieautoryzowaną domenę.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora
    const matBtns = document.querySelectorAll('.rk-btn-mat');
    const waitTimeText = document.getElementById('valWaitTime');
    const slider = document.getElementById('rkDaySlider');
    
    // UI Elements
    const vDay = document.getElementById('valDay');
    const vTemp = document.getElementById('valTemp');
    const vBadge = document.getElementById('valBadge');
    const vStatus = document.getElementById('valStatus');
    
    // SVG Elements
    const pipes = [document.getElementById('svgPipe1'), document.getElementById('svgPipe2'), document.getElementById('svgPipe3')];
    const thermFill = document.getElementById('svgThermometer');
    const thermBulb = document.getElementById('svgThermBulb');
    const moistureGrp = document.getElementById('svgMoistureGroup');

    // Obsługa przełącznika materiałów
    matBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            matBtns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            
            const mat = this.getAttribute('data-mat');
            if(mat === 'anhydryt') {
                waitTimeText.textContent = "7 Dni";
            } else {
                waitTimeText.textContent = "28 Dni";
            }
        });
    });

    // Mechanizm obliczania protokołu wygrzewania
    function updateProtocol() {
        const day = parseInt(slider.value);
        let temp = 25; // Baza
        let color = '#3b82f6'; // Niebieski (chłodny/startowy)
        let stateText = "";
        let badgeClass = "";
        let badgeText = "";
        let moistureOpacity = "1";

        // Obliczenia logiki z tekstu: 
        // Dni 1-3: 25°C
        // Dzień 4+: +5°C na dobę aż do 45°C
        if (day >= 1 && day <= 3) {
            temp = 25;
            color = '#f59e0b'; // Ciepły żółty
            stateText = "Intensywne odparowywanie";
            badgeClass = "badge-wait";
            badgeText = "Utrzymanie";
            moistureOpacity = "1";
        } else if (day > 3 && day < 8) {
            temp = 25 + ((day - 3) * 5); // Dzień 4 = 30C, Dzień 5 = 35C, itd.
            color = '#f97316'; // Pomarańczowy
            stateText = "Zmniejszona emisja pary wodnej";
            badgeClass = "badge-heat";
            badgeText = "+5°C / Dobę";
            moistureOpacity = (1 - ((day - 3) * 0.2)).toString(); // Zanikanie wilgoci
        } else if (day >= 8) {
            temp = 45; // Max 45°C w 7/8 dniu podnoszenia
            color = '#ef4444'; // Czerwony (Gorący)
            stateText = "Wylewka sucha - Gotowa na płytki!";
            badgeClass = "badge-done";
            badgeText = "Sukces";
            moistureOpacity = "0"; // Brak wilgoci
        }

        // Aktualizacja Tekstów
        vDay.textContent = day;
        vTemp.textContent = temp + "°C";
        vStatus.textContent = stateText;
        
        vBadge.textContent = badgeText;
        vBadge.className = "rk-badge " + badgeClass;

        // Aktualizacja SVG - Rury
        pipes.forEach(p => {
            p.setAttribute('fill', color);
            p.style.filter = `drop-shadow(0 0 5px ${color})`;
        });

        // Aktualizacja SVG - Termometr (Max wys = 100, Min Y = 20, Max Y = 120)
        // Zakres temperatur do symulacji: 20C do 50C (30 jednostek). 
        // 25C to 5 z 30 jednostek = 16%. 45C to 25 z 30 jednostek = 83%.
        const percentFill = ((temp - 15) / 35); // Przepustowość wizualna
        const thermHeight = 100 * percentFill;
        const thermY = 120 - thermHeight;

        thermFill.setAttribute('height', thermHeight);
        thermFill.setAttribute('y', thermY);
        thermFill.setAttribute('fill', color);
        thermBulb.setAttribute('fill', color);

        // Aktualizacja SVG - Zanikanie wilgoci
        moistureGrp.style.opacity = moistureOpacity;
    }

    // Nasłuch na suwak
    slider.addEventListener('input', updateProtocol);

    // Inicjalizacja początkowa
    updateProtocol();
});
</script>



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



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



<style>
:root {
    --rk-comp-dark: #0f172a;
    --rk-comp-accent: #3b82f6;
    --rk-comp-cement: #94a3b8;
    --rk-comp-anhydryt: #fbbf24;
    --rk-comp-bg: #ffffff;
    --rk-comp-border: #e2e8f0;
    --rk-comp-text: #334155;
}

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

/* Nagłówek Komparatora */
.rk-comp-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
    border-bottom: 1px solid var(--rk-comp-border);
}

.rk-comp-header h2 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-comp-dark);
    margin: 0 0 15px 0;
}

.rk-comp-intro {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-comp-text);
    max-width: 800px;
}

.rk-comp-intro a {
    color: var(--rk-comp-accent);
    text-decoration: none;
    font-weight: 700;
    border-bottom: 2px solid rgba(59, 130, 246, 0.1);
}

.rk-comp-intro a:hover {
    border-bottom-color: var(--rk-comp-accent);
}

/* Panel sterowania (Mobile Tabs Style) */
.rk-comp-controls {
    display: flex;
    padding: 20px 50px;
    gap: 10px;
    overflow-x: auto;
    background: #ffffff;
    scrollbar-width: none;
}

.rk-comp-tab {
    white-space: nowrap;
    padding: 10px 20px;
    background: #f1f5f9;
    border: 1px solid var(--rk-comp-border);
    border-radius: 99px;
    font-size: 14px;
    font-weight: 700;
    color: #64748b;
    cursor: pointer;
    transition: all 0.3s;
}

.rk-comp-tab.active {
    background: var(--rk-comp-dark);
    color: #ffffff;
    border-color: var(--rk-comp-dark);
}

/* Obszar wizualizacji danych */
.rk-comp-display {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
    padding: 40px 50px;
    background: #ffffff;
    align-items: center;
}

.rk-comp-info h3 {
    font-size: 22px;
    font-weight: 800;
    margin: 0 0 10px 0;
    color: var(--rk-comp-dark);
}

.rk-comp-info p {
    font-size: 15px;
    line-height: 1.6;
    color: #64748b;
    margin-bottom: 20px;
}

/* Wykresy SVG */
.rk-svg-viz {
    width: 100%;
    max-width: 350px;
    margin: 0 auto;
}

.rk-bar-group {
    margin-bottom: 25px;
}

.rk-bar-label {
    display: flex;
    justify-content: space-between;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    margin-bottom: 8px;
    color: var(--rk-comp-dark);
}

.rk-bar-bg {
    height: 12px;
    background: #f1f5f9;
    border-radius: 6px;
    overflow: hidden;
    position: relative;
}

.rk-bar-fill {
    height: 100%;
    border-radius: 6px;
    transition: width 0.8s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.fill-cement { background: var(--rk-comp-cement); }
.fill-anhydryt { background: var(--rk-comp-anhydryt); }

/* Legenda */
.rk-comp-legend {
    display: flex;
    gap: 20px;
    margin-top: 20px;
    font-size: 13px;
    font-weight: 600;
}

.leg-item { display: flex; align-items: center; gap: 8px; }
.dot { width: 10px; height: 10px; border-radius: 50%; }

/* Tabela mobilna (Fallback) */
.rk-comp-table-box {
    padding: 0 50px 40px;
}

.rk-tech-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 14px;
}

.rk-tech-table th {
    text-align: left;
    padding: 15px;
    background: #f8fafc;
    border-bottom: 2px solid var(--rk-comp-border);
    color: var(--rk-comp-dark);
}

.rk-tech-table td {
    padding: 15px;
    border-bottom: 1px solid var(--rk-comp-border);
    color: var(--rk-comp-text);
}

.rk-tech-table tr:hover { background: #fcfcfc; }

@media (max-width: 768px) {
    .rk-comp-display { grid-template-columns: 1fr; padding: 30px 25px; }
    .rk-comp-header, .rk-comp-controls, .rk-comp-table-box { padding: 25px; }
    .rk-comp-header h2 { font-size: 22px; }
    .rk-comp-info h3 { font-size: 18px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#article-porownanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/"
    },
    "headline": "Parametry techniczne wylewek – Porównanie inżynierskie",
    "description": "Zestawienie kluczowych parametrów jastrychów grzejnych: przewodność cieplna lambda, grubość s_d, wytrzymałość i dylatacje wg normy PN-EN 1264.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-18",
    "dateModified": "2026-05-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#dataset-tabela",
    "name": "Tabela Porównawcza Jastrychów Grzejnych 2026",
    "description": "Dane techniczne jastrychu cementowego i anhydrytowego używane w obliczeniach projektowych OZC i doboru instalacji podłogowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "przewodność cieplna wylewki lambda",
      "norma PN-EN 1264 jastrych",
      "wytrzymałość jastrychu C20/F4",
      "dylatacje wylewki cementowej",
      "ciężar właściwy jastrychu"
    ],
    "measurementTechnique": "Porównanie parametrów znormalizowanych wg normy PN-EN 1264 oraz danych producentów chemii budowlanej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        { "@type": "ListItem", "name": "Lambda Cement", "value": "1.2 W/(m·K)" },
        { "@type": "ListItem", "name": "Lambda Anhydryt", "value": "1.8 W/(m·K)" },
        { "@type": "ListItem", "name": "Min s_d Cement", "value": "45 mm" },
        { "@type": "ListItem", "name": "Min s_d Anhydryt", "value": "35 mm" }
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#webapp-komparator",
    "name": "Interaktywny Komparator Technologii Jastrychowych",
    "description": "Narzędzie symulujące różnice w wydajności i konstrukcji wylewek na ogrzewanie podłogowe.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and SVG Support",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-comparator-app" id="rk-comp-app">
    
    <div class="rk-comp-header">
        <h2>Parametry techniczne wylewek – porównanie</h2>
        <p class="rk-comp-intro">
            Wybór między jastrychem cementowym a anhydrytowym to nie kwestia gustu, a czysta inżynieria. Według <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">normy PN-EN 1264</a>, to parametry takie jak przewodność cieplna (lambda) i grubość s<sub>d</sub> determinują wydajność całego układu.
        </p>
    </div>

    <div class="rk-comp-controls">
        <div class="rk-comp-tab active" data-param="lambda">Przewodność (lambda)</div>
        <div class="rk-comp-tab" data-param="thickness">Grubość (s<sub>d</sub>)</div>
        <div class="rk-comp-tab" data-param="dilatation">Dylatacje</div>
        <div class="rk-comp-tab" data-param="weight">Ciężar właściwy</div>
    </div>

    <div class="rk-comp-display">
        <div class="rk-comp-info" id="rk-comp-text">
            <h3 id="comp-title">Przewodność cieplna (lambda)</h3>
            <p id="comp-desc">Anhydryt wygrywa w kategorii szybkości oddawania ciepła. Wyższa wartość lambda pozwala na obniżenie temperatury zasilania pompy ciepła.</p>
            <div class="rk-comp-legend">
                <div class="leg-item"><span class="dot" style="background:var(--rk-comp-cement)"></span> Cement</div>
                <div class="leg-item"><span class="dot" style="background:var(--rk-comp-anhydryt)"></span> Anhydryt</div>
            </div>
        </div>

        <div class="rk-svg-viz">
            <div class="rk-bar-group">
                <div class="rk-bar-label">
                    <span>Cement</span>
                    <span id="val-cement">1.2 W/mK</span>
                </div>
                <div class="rk-bar-bg">
                    <div class="rk-bar-fill fill-cement" id="bar-cement" style="width: 60%"></div>
                </div>
            </div>
            <div class="rk-bar-group">
                <div class="rk-bar-label">
                    <span>Anhydryt</span>
                    <span id="val-anhydryt">1.8 W/mK</span>
                </div>
                <div class="rk-bar-bg">
                    <div class="rk-bar-fill fill-anhydryt" id="bar-anhydryt" style="width: 90%"></div>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-comp-table-box">
        <h4 style="margin: 0 0 20px 0; color: var(--rk-comp-dark); font-size: 16px;">Tabela zbiorcza parametrów (Standard Inżynierski)</h4>
        <div style="overflow-x: auto;">
            <table class="rk-tech-table">
                <thead>
                    <tr>
                        <th>Parametr</th>
                        <th>Jastrych Cementowy</th>
                        <th>Jastrych Anhydrytowy</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td><strong>Wytrzymałość (Klasa)</strong></td>
                        <td>C20/F4 do C30/F5</td>
                        <td>C20/F5 do C35/F7</td>
                    </tr>
                    <tr>
                        <td><strong>Odporność na wilgoć</strong></td>
                        <td>Wysoka (Łazienki)</td>
                        <td>Niska (Pomieszczenia suche)</td>
                    </tr>
                    <tr>
                        <td><strong>Czas do wejścia</strong></td>
                        <td>2-3 dni</td>
                        <td>24-48 godzin</td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Zgodnie z Twoim wzorem)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-comp-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif; margin: 20px;">
                    <div style="font-size: 36px; margin-bottom: 15px;">🛑</div>
                    <div style="font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Naruszenie Praw Autorskich</div>
                    <div style="font-size: 14px; color: #cbd5e1; max-width: 500px; margin: 0 auto; line-height: 1.6;">
                        Interaktywny Komparator Jastrychów oraz struktura Dataset są własnością intelektualną Projekt-Ogrzewania.pl. Użycie nieautoryzowane.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Komparatora
    const tabs = document.querySelectorAll('.rk-comp-tab');
    const title = document.getElementById('comp-title');
    const desc = document.getElementById('comp-desc');
    const barCement = document.getElementById('bar-cement');
    const barAnhydryt = document.getElementById('bar-anhydryt');
    const valCement = document.getElementById('val-cement');
    const valAnhydryt = document.getElementById('val-anhydryt');

    const data = {
        lambda: {
            title: "Przewodność cieplna (lambda)",
            desc: "Anhydryt wygrywa w kategorii szybkości oddawania ciepła. Pozwala to na szybszą reakcję systemu i wyższą sprawność energetyczną.",
            cCement: "1.2 W/mK",
            cAnhy: "1.8 W/mK",
            pCement: "60%",
            pAnhy: "90%"
        },
        thickness: {
            title: "Min. grubość nad rurką (s<sub>d</sub>)",
            desc: "Anhydryt pozwala na cieńszą warstwę (35mm), co redukuje bezwładność. Cement wymaga min. 45mm dla zachowania stabilności płyty.",
            cCement: "45 mm",
            cAnhy: "35 mm",
            pCement: "85%",
            pAnhy: "60%"
        },
        dilatation: {
            title: "Pole dylatacyjne (Max m²)",
            desc: "Cement wymaga gęstej siatki nacięć co 30-40m². Anhydryt jest niemal bezskurczowy, co pozwala na pola do 600m² bez przerw.",
            cCement: "40 m²",
            cAnhy: "600 m²",
            pCement: "15%",
            pAnhy: "100%"
        },
        weight: {
            title: "Ciężar właściwy (kg/m³)",
            desc: "Oba materiały są ciężkie, ale cement z racji wymaganej większej grubości generuje o ok. 20% większe obciążenie stropu.",
            cCement: "2200 kg/m³",
            cAnhy: "2100 kg/m³",
            pCement: "100%",
            pAnhy: "95%"
        }
    };

    tabs.forEach(tab => {
        tab.addEventListener('click', function() {
            tabs.forEach(t => t.classList.remove('active'));
            this.classList.add('active');

            const p = this.getAttribute('data-param');
            const d = data[p];

            // Animacja tekstu i słupków
            title.innerHTML = d.title;
            desc.innerHTML = d.desc;
            
            barCement.style.width = d.pCement;
            barAnhydryt.style.width = d.pAnhy;
            
            valCement.innerText = d.cCement;
            valAnhydryt.innerText = d.cAnhy;
        });
    });
});
</script>



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



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-panel: #1e293b;
    --rk-calc-primary: #06b6d4; /* Cyjan - techniczny/kalkulacyjny */
    --rk-calc-primary-dark: #0891b2;
    --rk-calc-accent: #8b5cf6; /* Fiolet - inżynieria */
    --rk-calc-warning: #f59e0b;
    --rk-calc-bg: #ffffff;
    --rk-calc-text: #334155;
    --rk-calc-border: #e2e8f0;
}

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

/* Sekcja Nagłówkowa */
.rk-calc-header {
    padding: 45px 50px 30px;
    background: #ffffff;
}

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

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

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

/* Interfejs Kalkulatora */
.rk-calc-app {
    background: var(--rk-calc-dark);
    padding: 40px 50px;
    color: #ffffff;
}

.rk-app-title {
    font-size: 20px;
    font-weight: 800;
    color: #f8fafc;
    margin: 0 0 30px 0;
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 1px;
}

/* Panel sterowania */
.rk-controls-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    margin-bottom: 40px;
}

.rk-control-group {
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.1);
    padding: 25px;
    border-radius: 16px;
}

.rk-control-label {
    display: flex;
    justify-content: space-between;
    font-size: 14px;
    font-weight: 700;
    color: #94a3b8;
    margin-bottom: 15px;
    text-transform: uppercase;
}

.rk-control-val {
    color: var(--rk-calc-primary);
    font-size: 18px;
    font-weight: 900;
}

/* Suwak Metrażu */
.rk-area-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    background: #334155;
    border-radius: 8px;
    outline: none;
    margin-top: 10px;
}

.rk-area-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--rk-calc-primary);
    border: 4px solid #ffffff;
    cursor: ew-resize;
    transition: transform 0.1s;
    box-shadow: 0 0 15px rgba(6, 182, 212, 0.5);
}

.rk-area-slider::-webkit-slider-thumb:active {
    transform: scale(1.15);
}

/* Przełącznik Materiału */
.rk-mat-toggle {
    display: flex;
    gap: 10px;
}

.rk-mat-btn {
    flex: 1;
    background: rgba(0,0,0,0.2);
    border: 2px solid rgba(255,255,255,0.1);
    color: #94a3b8;
    padding: 12px;
    border-radius: 10px;
    font-weight: 700;
    font-size: 14px;
    cursor: pointer;
    transition: all 0.3s;
}

.rk-mat-btn.active {
    background: rgba(139, 92, 246, 0.2);
    border-color: var(--rk-calc-accent);
    color: #ffffff;
}

/* Wyniki (Algorytm) */
.rk-results-board {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-bottom: 30px;
}

.rk-res-card {
    background: var(--rk-calc-panel);
    border: 1px solid rgba(255,255,255,0.05);
    border-top: 4px solid var(--rk-calc-primary);
    padding: 25px;
    border-radius: 12px;
    position: relative;
    overflow: hidden;
}

.rk-res-card.accent {
    border-top-color: var(--rk-calc-accent);
    background: linear-gradient(180deg, rgba(139, 92, 246, 0.1) 0%, var(--rk-calc-panel) 100%);
}

.rk-res-step {
    font-size: 12px;
    color: #64748b;
    font-weight: 800;
    text-transform: uppercase;
    margin-bottom: 5px;
}

.rk-res-title {
    font-size: 15px;
    color: #cbd5e1;
    font-weight: 600;
    margin-bottom: 15px;
}

.rk-res-formula {
    font-family: 'Courier New', monospace;
    font-size: 12px;
    color: #94a3b8;
    background: rgba(0,0,0,0.3);
    padding: 5px 8px;
    border-radius: 4px;
    margin-bottom: 15px;
    display: inline-block;
}

.rk-res-output {
    font-size: 32px;
    font-weight: 900;
    color: #ffffff;
    display: flex;
    align-items: baseline;
    gap: 5px;
}

.rk-res-output small {
    font-size: 16px;
    font-weight: 600;
    color: #94a3b8;
}

/* SVG Animacja Obciążenia */
.rk-svg-viz {
    width: 100%;
    height: 120px;
    background: rgba(0,0,0,0.2);
    border-radius: 12px;
    margin-top: 20px;
}

.anim-weight-block {
    transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.anim-heat-arrow {
    transition: stroke-dashoffset 0.5s;
    animation: flowResistance 2s infinite linear;
}

@keyframes flowResistance {
    to { stroke-dashoffset: -20; }
}

/* Mocne CTA - Sprzedażowe */
.rk-cta-box {
    background: linear-gradient(135deg, #f8fafc 0%, #e0e7ff 100%);
    padding: 45px 50px;
    border-top: 1px solid var(--rk-calc-border);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.rk-cta-warning {
    color: #4338ca;
    font-size: 14px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 10px;
}

.rk-cta-title {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-calc-dark);
    margin: 0 0 15px 0;
}

.rk-cta-desc {
    font-size: 16px;
    color: #475569;
    max-width: 700px;
    line-height: 1.6;
    margin: 0 0 30px 0;
}

.rk-cta-btn {
    background: #4f46e5;
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 18px 40px;
    border-radius: 12px;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 12px;
    box-shadow: 0 10px 20px -5px rgba(79, 70, 229, 0.4);
    transition: all 0.3s;
    border: 2px solid transparent;
}

.rk-cta-btn:hover {
    background: #4338ca;
    transform: translateY(-3px);
    box-shadow: 0 15px 25px -5px rgba(79, 70, 229, 0.5);
}

@media (max-width: 768px) {
    .rk-calc-header, .rk-calc-app, .rk-cta-box { padding: 30px 20px; }
    .rk-controls-grid, .rk-results-board { grid-template-columns: 1fr; gap: 20px; }
    .rk-res-output { font-size: 26px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#article-algorytm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/"
    },
    "headline": "Kalkulator ilości materiału i parametrów termicznych (Algorytm)",
    "description": "Zrozum fizykę swojej posadzki. Kalkulator inżynierski obliczający objętość (V), masę (M) oraz opór cieplny (Rλ) dla jastrychu cementowego i anhydrytowego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-18",
    "dateModified": "2026-05-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#dataset-algorytm",
    "name": "Algorytm Obliczeniowy Jastrychu Grzejnego OZC",
    "description": "Zestaw wzorów matematycznych i stałych fizycznych używanych do doboru parametrów ogrzewania podłogowego: Objętość, Masa, Opór Cieplny.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczanie objętości betonu na wylewkę",
      "opór cieplny jastrychu R lambda",
      "masa jastrychu obciążenie stropu",
      "algorytm OZC projektowanie ogrzewania",
      "wzór na parametry termiczne podłogówki"
    ],
    "measurementTechnique": "Kalkulacja oparta na wzorach fizycznych: V = A × h, M = V × ρ, Rλ = d / λ. Gęstość cementu ~2200 kg/m³, anhydrytu ~2100 kg/m³.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Krok 1: Objętość (V) = Metraż (A) × Grubość (h).",
        "Krok 2: Masa (M) = Objętość (V) × Gęstość materiału (ρ).",
        "Krok 3: Opór cieplny (Rλ) = Grubość (d) / Przewodność cieplna (λ)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#webapp-kalkulator-wylewki",
    "name": "Inżynierski Kalkulator Jastrychu",
    "description": "Interaktywny kalkulator przeliczający w czasie rzeczywistym metraż domu na metry sześcienne betonu, tony obciążenia stropu oraz opór termiczny Rλ.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 Range Input, JavaScript and SVG rendering",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-container" id="rk-algorytm-app">
    
    <div class="rk-calc-header">
        <h2 class="rk-calc-title">
            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" style="color: var(--rk-calc-primary);"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><rect x="9" y="9" width="6" height="6"></rect><line x1="9" y1="1" x2="9" y2="4"></line><line x1="15" y1="1" x2="15" y2="4"></line><line x1="9" y1="20" x2="9" y2="23"></line><line x1="15" y1="20" x2="15" y2="23"></line><line x1="20" y1="9" x2="23" y2="9"></line><line x1="20" y1="14" x2="23" y2="14"></line><line x1="1" y1="9" x2="4" y2="9"></line><line x1="1" y1="14" x2="4" y2="14"></line></svg>
            Kalkulator materiału i parametrów termicznych
        </h2>
        <p class="rk-calc-intro">
            Jako inżynier, nie operuję na „workach”, ale na objętości i oporze przewodzenia. W moich projektach liczy się każdy niuans, bo ma on wpływ na końcowe <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">obliczenia OZC</a>. Anhydryt stawia o <strong>50% mniejszy opór cieplny</strong> niż tradycyjny beton. Sprawdź, jak matematyka fizyki budowli wygląda dla Twojego domu.
        </p>
    </div>

    <div class="rk-calc-app">
        <h3 class="rk-app-title">Kalkulator Inżynierski Jastrychu</h3>

        <div class="rk-controls-grid">
            <div class="rk-control-group">
                <div class="rk-control-label">
                    <span>Powierzchnia (A)</span>
                    <span class="rk-control-val" id="valAreaOut">150 m²</span>
                </div>
                <input type="range" min="50" max="350" value="150" step="5" class="rk-area-slider" id="rkSliderArea">
            </div>

            <div class="rk-control-group">
                <div class="rk-control-label"><span>Rodzaj Mieszanki</span></div>
                <div class="rk-mat-toggle">
                    <button class="rk-mat-btn active" data-mat="cement">Jastrych Cementowy</button>
                    <button class="rk-mat-btn" data-mat="anhydryt">Anhydryt (Płynny)</button>
                </div>
            </div>
        </div>

        <div class="rk-results-board">
            <div class="rk-res-card">
                <div class="rk-res-step">Krok 1: Objętość</div>
                <div class="rk-res-title">Ilość betonu (V)</div>
                <div class="rk-res-formula">V = A × h</div>
                <div class="rk-res-output" id="outVol">9.75 <small>m³</small></div>
            </div>

            <div class="rk-res-card">
                <div class="rk-res-step">Krok 2: Masa</div>
                <div class="rk-res-title">Obciążenie stropu (M)</div>
                <div class="rk-res-formula">M = V × ρ</div>
                <div class="rk-res-output" id="outMass">21.4 <small>ton</small></div>
            </div>

            <div class="rk-res-card accent">
                <div class="rk-res-step">Krok 3: Termika</div>
                <div class="rk-res-title">Opór cieplny (R<sub>λ</sub>)</div>
                <div class="rk-res-formula">R<sub>λ</sub> = d / λ</div>
                <div class="rk-res-output" id="outRes" style="color: #c4b5fd;">0.054 <small>m²·K/W</small></div>
            </div>
        </div>

        <svg class="rk-svg-viz" viewBox="0 0 800 120" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice">
            <rect x="0" y="80" width="800" height="40" fill="#334155" />
            <circle cx="400" cy="80" r="16" fill="#ef4444" stroke="#fff" stroke-width="3"/>
            
            <rect id="svgScreedBlock" class="anim-weight-block" x="250" y="20" width="300" height="60" fill="#64748b" rx="4" opacity="0.8"/>
            <text id="svgScreedText" x="400" y="55" fill="#ffffff" font-size="14" font-weight="bold" text-anchor="middle">Obciążenie: 21.4 ton</text>

            <path class="anim-heat-arrow" id="svgHeat1" d="M 360 80 L 360 10" stroke="#f59e0b" stroke-width="4" stroke-dasharray="8" fill="none" stroke-linecap="round"/>
            <path class="anim-heat-arrow" id="svgHeat2" d="M 440 80 L 440 10" stroke="#f59e0b" stroke-width="4" stroke-dasharray="8" fill="none" stroke-linecap="round"/>
        </svg>

    </div>

    <div class="rk-cta-box">
        <div class="rk-cta-warning">Decyzja, której nie cofniesz</div>
        <h3 class="rk-cta-title">Zaraz, zaraz&#8230; Różnica to 50%!</h3>
        <p class="rk-cta-desc">
            Zauważyłeś? Opór cieplny wylewki cementowej jest o połowę wyższy. Jeśli dobierzesz rozstaw rur i parametry pompy ciepła pod anhydryt, a wylejesz grubszy beton – <strong>będziesz miał niedogrzany dom</strong>. System podłogowy musi być zaprojektowany z uwzględnieniem docelowego jastrychu!
        </p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-cta-btn">
            Zamów Profesjonalny Projekt Podłogówki
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez H-tags w alercie)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-algorytm-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif; max-width: 950px; margin: 40px auto;">
                    <div style="font-size: 36px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Zabezpieczenie Antypirackie</div>
                    <div style="font-size: 14px; color: #cbd5e1; line-height: 1.6;">
                        Kalkulator Inżynierski Jastrychu jest prawnie chronionym kodem domeny Projekt-Ogrzewania.pl.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Algorytmu Kalkulatora
    const sliderArea = document.getElementById('rkSliderArea');
    const valAreaOut = document.getElementById('valAreaOut');
    const matBtns = document.querySelectorAll('.rk-mat-btn');
    
    const outVol = document.getElementById('outVol');
    const outMass = document.getElementById('outMass');
    const outRes = document.getElementById('outRes');
    
    const svgBlock = document.getElementById('svgScreedBlock');
    const svgText = document.getElementById('svgScreedText');
    const heatArr1 = document.getElementById('svgHeat1');
    const heatArr2 = document.getElementById('svgHeat2');

    let currentMat = 'cement';

    const physics = {
        cement: { h: 0.065, rho: 2200, lambda: 1.2, color: '#64748b', heatSpeed: '3s' },
        anhydryt: { h: 0.050, rho: 2100, lambda: 1.8, color: '#8b5cf6', heatSpeed: '1.5s' }
    };

    function runAlgorithm() {
        const A = parseInt(sliderArea.value);
        valAreaOut.innerText = `${A} m²`;

        const mat = physics[currentMat];
        
        // Obliczenia
        const V = A * mat.h;
        const M_kg = V * mat.rho;
        const M_ton = M_kg / 1000;
        const R = mat.h / mat.lambda;

        // Aktualizacja DOM
        outVol.innerHTML = `${V.toFixed(2)} <small>m³</small>`;
        outMass.innerHTML = `${M_ton.toFixed(1)} <small>ton</small>`;
        outRes.innerHTML = `${R.toFixed(3)} <small>m²·K/W</small>`;

        // Aktualizacja SVG wizualizacji (Szerokość rośnie z metrażem bazowo)
        const blockWidth = 150 + (A * 1.5); // Skalowanie wizualne
        const blockX = 400 - (blockWidth / 2);
        const blockHeight = mat.h * 1000; // Skalowanie grubości
        const blockY = 80 - blockHeight;

        svgBlock.setAttribute('width', blockWidth > 700 ? 700 : blockWidth);
        svgBlock.setAttribute('x', blockWidth > 700 ? 50 : blockX);
        svgBlock.setAttribute('height', blockHeight);
        svgBlock.setAttribute('y', blockY);
        svgBlock.setAttribute('fill', mat.color);
        
        svgText.setAttribute('y', blockY + (blockHeight/2) + 5);
        svgText.textContent = `Obciążenie: ${M_ton.toFixed(1)} ton`;

        // Prędkość animacji ciepła
        heatArr1.style.animationDuration = mat.heatSpeed;
        heatArr2.style.animationDuration = mat.heatSpeed;
    }

    // Eventy
    sliderArea.addEventListener('input', runAlgorithm);

    matBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            matBtns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            currentMat = this.getAttribute('data-mat');
            runAlgorithm();
        });
    });

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



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-panel: #1e293b;
    --rk-err-red: #ef4444; /* Błąd krytyczny */
    --rk-err-orange: #f97316; /* Ostrzeżenie */
    --rk-err-blue: #3b82f6; /* Woda / Mróz */
    --rk-err-gray: #64748b;
    --rk-err-bg: #ffffff;
    --rk-err-border: #e2e8f0;
    --rk-err-text: #334155;
}

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

/* Nagłówek i Wstęp */
.rk-err-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #fff1f2 0%, #ffffff 100%);
    border-bottom: 2px dashed #fecdd3;
}

.rk-err-title {
    font-size: 26px;
    font-weight: 900;
    color: #9f1239;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 12px;
}

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

.rk-err-intro a {
    color: #be123c;
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(190, 18, 60, 0.2);
    transition: all 0.3s;
}

.rk-err-intro a:hover {
    border-bottom-color: #be123c;
    background: rgba(190, 18, 60, 0.05);
}

/* Panel Symulatora */
.rk-err-app {
    display: grid;
    grid-template-columns: 350px 1fr;
    background: var(--rk-err-dark);
    color: #ffffff;
}

/* Przyciski (Lista Błędów) */
.rk-err-sidebar {
    padding: 30px;
    border-right: 1px solid rgba(255,255,255,0.05);
    background: #0b1120;
}

.rk-err-sidebar h3 {
    font-size: 15px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #94a3b8;
    margin: 0 0 20px 0;
    font-weight: 800;
}

.rk-fault-btn {
    display: flex;
    flex-direction: column;
    width: 100%;
    text-align: left;
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.05);
    padding: 15px;
    border-radius: 12px;
    margin-bottom: 10px;
    cursor: pointer;
    transition: all 0.3s;
    color: #cbd5e1;
}

.rk-fault-btn:hover {
    background: rgba(255,255,255,0.08);
}

.rk-fault-btn.active {
    background: rgba(239, 68, 68, 0.15);
    border-color: var(--rk-err-red);
    color: #ffffff;
    box-shadow: inset 4px 0 0 var(--rk-err-red);
}

.rk-fault-name {
    font-size: 15px;
    font-weight: 800;
    margin-bottom: 4px;
}

.rk-fault-hint {
    font-size: 12px;
    color: #64748b;
}

/* Wizualizacja i Opis (Prawa strona) */
.rk-err-main {
    padding: 40px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

/* Moduł SVG */
.rk-err-svg-box {
    background: var(--rk-err-panel);
    border-radius: 16px;
    padding: 20px;
    box-shadow: inset 0 10px 20px rgba(0,0,0,0.4);
    margin-bottom: 30px;
    position: relative;
}

.rk-svg-scene {
    width: 100%;
    max-width: 320px;
    height: auto;
    margin: 0 auto;
    display: block;
}

/* Opis wybranego błędu */
.rk-err-details {
    background: rgba(0,0,0,0.2);
    border-left: 4px solid var(--rk-err-red);
    padding: 25px;
    border-radius: 0 12px 12px 0;
}

.rk-err-details h4 {
    font-size: 20px;
    font-weight: 800;
    margin: 0 0 10px 0;
    color: #f8fafc;
}

.rk-err-details p {
    font-size: 15px;
    line-height: 1.7;
    color: #94a3b8;
    margin: 0 0 15px 0;
}

.rk-err-tech {
    display: inline-block;
    background: rgba(239, 68, 68, 0.2);
    color: #fca5a5;
    padding: 6px 12px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 700;
    font-family: 'Courier New', monospace;
}

/* ANIMACJE SVG (Sterowane klasami z JS) */
.anim-layer { opacity: 0; transition: opacity 0.4s; }

/* 1. Dylatacje (Pęknięcia) */
.state-dylatacja .svg-crack { opacity: 1; stroke-dasharray: 100; animation: drawCrack 1s forwards; }
@keyframes drawCrack { from { stroke-dashoffset: 100; } to { stroke-dashoffset: 0; } }
.state-dylatacja .svg-foam { fill: #ef4444; }

/* 2. Powietrze (Izolator) */
.state-powietrze .svg-bubbles { opacity: 1; animation: pulseBubbles 1.5s infinite alternate; }
@keyframes pulseBubbles { from { transform: scale(0.95); stroke-width: 1; } to { transform: scale(1.05); stroke-width: 2.5; } }
.state-powietrze .svg-heat { stroke: #64748b; opacity: 0.3; } /* Słabe ciepło */

/* 3. Temperatura (Mróz/Smażenie) */
.state-temperatura .svg-screed { animation: flashTemp 2s infinite; }
@keyframes flashTemp { 0% { fill: #64748b; } 50% { fill: #3b82f6; } 100% { fill: #64748b; } }

/* 4. Plastyfikator (Pustki) */
.state-chemia .svg-voids { opacity: 1; }
.state-chemia .svg-screed { fill: #475569; }

/* Domyślne ciepło */
.svg-heat { stroke: #ef4444; animation: flowHeat 1.5s infinite linear; }
@keyframes flowHeat { to { stroke-dashoffset: -20; } }

@media (max-width: 768px) {
    .rk-err-app { grid-template-columns: 1fr; }
    .rk-err-header, .rk-err-sidebar, .rk-err-main { padding: 25px; }
    .rk-fault-btn { padding: 12px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/"
    },
    "headline": "Najczęstsze błędy niszczące instalację ogrzewania podłogowego",
    "description": "Zestawienie krytycznych błędów wykonawczych: brak dylatacji, złe odpowietrzenie anhydrytu, szok termiczny oraz złe proporcje plastyfikatora w miksokrecie.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-18",
    "dateModified": "2026-05-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#dataset-bledy",
    "name": "Rejestr Błędów Wykonawczych Jastrychu Grzejnego",
    "description": "Baza danych dokumentująca fizyczne i termodynamiczne skutki błędów instalatorskich na wylewkach betonowych i anhydrytowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "brak dylatacji brzegowej pękanie posadzki",
      "odpowietrzenie anhydrytu powietrze izolator",
      "plastyfikator do ogrzewania podłogowego",
      "najczęstsze błędy montażu ogrzewania podłogowego",
      "wygrzewanie wylewki w ujemnych temperaturach"
    ],
    "measurementTechnique": "Wizualizacja defektów strukturalnych za pomocą animacji SVG oraz estymacja spadku sprawności z uwzględnieniem oporu cieplnego powietrza (λ ≈ 0,025).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Brak dylatacji (min. 8-10 mm): skutkuje prężeniem i pękaniem na obwodzie.",
        "Pęcherze powietrza: działają jak izolator (Lambda pow. = 0.025), blokując transfer ciepła z rur PEX.",
        "Szok termiczny: zamarzanie lub przesuszenie (smażenie) degraduje strukturę krystaliczną.",
        "Zła chemia: brak plastyfikatora (0.2kg/worek) powoduje pustki powietrzne w miksokrecie."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#webapp-symulator-awarii",
    "name": "X-Ray: Symulator Awarii Wylewki",
    "description": "Narzędzie inżynierskie pozwalające na interaktywny podgląd struktury wewnętrznej posadzki poddanej błędom wykonawczym.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and SVG Support",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container" id="rk-bledy-core">
    
    <div class="rk-err-header">
        <h2 class="rk-err-title">
            <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="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 niszczące instalację
        </h2>
        <p class="rk-err-intro">
            Fizyka budowli nie wybacza amatorszczyzny. <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">Błędy przy montażu ogrzewania podłogowego</a> na etapie wylewania jastrychu to wyrok na całą instalację hydrauliczną. Kucie gotowej posadzki to koszmar każdego inwestora. Zobacz, co dzieje się wewnątrz betonu, gdy wykonawca oszczędza na dylatacjach lub chemii.
        </p>
    </div>

    <div class="rk-err-app" id="rkErrEngine">
        
        <div class="rk-err-sidebar">
            <h3>Wybierz błąd wykonawczy</h3>
            
            <button class="rk-fault-btn active" data-err="dylatacja">
                <span class="rk-fault-name">1. Brak dylatacji</span>
                <span class="rk-fault-hint">Pękanie progów i narożników</span>
            </button>
            
            <button class="rk-fault-btn" data-err="powietrze">
                <span class="rk-fault-name">2. Złe odpowietrzenie</span>
                <span class="rk-fault-hint">Pęcherze w anhydrycie (Izolator)</span>
            </button>
            
            <button class="rk-fault-btn" data-err="temperatura">
                <span class="rk-fault-name">3. Szok termiczny</span>
                <span class="rk-fault-hint">Zamarznięcie lub &#8222;smażenie&#8221; betonu</span>
            </button>
            
            <button class="rk-fault-btn" data-err="chemia">
                <span class="rk-fault-name">4. Brak plastyfikatora</span>
                <span class="rk-fault-hint">Pustki powietrzne w miksokrecie</span>
            </button>
        </div>

        <div class="rk-err-main">
            
            <div class="rk-err-svg-box">
                <svg viewBox="0 0 300 160" class="rk-svg-scene" xmlns="http://www.w3.org/2000/svg">
                    <rect x="270" y="20" width="30" height="140" fill="#334155" />
                    <rect class="svg-foam" x="260" y="20" width="10" height="140" fill="#0ea5e9" transition="fill 0.3s"/>
                    
                    <rect x="0" y="130" width="260" height="30" fill="#475569" />
                    
                    <circle cx="80" cy="110" r="10" fill="#ef4444" stroke="#fff" stroke-width="2"/>
                    <circle cx="180" cy="110" r="10" fill="#ef4444" stroke="#fff" stroke-width="2"/>
                    
                    <path class="svg-heat" d="M 80 90 V 40" stroke-width="3" stroke-dasharray="6" fill="none" stroke-linecap="round"/>
                    <path class="svg-heat" d="M 180 90 V 40" stroke-width="3" stroke-dasharray="6" fill="none" stroke-linecap="round"/>

                    <rect class="svg-screed" x="0" y="50" width="260" height="80" fill="#94a3b8" opacity="0.8" rx="2"/>

                    <path class="anim-layer svg-crack" d="M 260 55 L 230 80 L 250 110 L 220 130" fill="none" stroke="#020617" stroke-width="3" stroke-linejoin="round"/>
                    <path class="anim-layer svg-crack" d="M 150 50 L 140 70 L 160 90" fill="none" stroke="#020617" stroke-width="2" />

                    <g class="anim-layer svg-bubbles">
                        <circle cx="80" cy="110" r="16" fill="none" stroke="#f8fafc" stroke-width="2" stroke-dasharray="4"/>
                        <circle cx="180" cy="110" r="16" fill="none" stroke="#f8fafc" stroke-width="2" stroke-dasharray="4"/>
                    </g>

                    <g class="anim-layer svg-voids" fill="#1e293b" opacity="0.6">
                        <circle cx="40" cy="70" r="5"/>
                        <circle cx="120" cy="90" r="8"/>
                        <circle cx="210" cy="65" r="6"/>
                        <circle cx="150" cy="110" r="4"/>
                        <circle cx="50" cy="100" r="7"/>
                    </g>
                </svg>
            </div>

            <div class="rk-err-details">
                <h4 id="errTitle">Brak dylatacji brzegowych</h4>
                <p id="errDesc">Wylewka stale „pracuje” termicznie (rozszerza się i kurczy). Brak <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/" style="color:#f8fafc; text-decoration:underline;">pianki dylatacyjnej</a> o grubości min. 8-10 mm uderzy rykoszetem – spowoduje potężne naprężenia i pękanie jastrychu w progach, narożnikach oraz uszkodzenie płytek.</p>
                <div class="rk-err-tech" id="errParam">Wymóg: Pianka min. 8-10 mm gr.</div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez nagłówków H-tags w alercie)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-bledy-core');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif; max-width: 950px; margin: 40px auto;">
                    <div style="font-size: 36px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Naruszenie Praw Autorskich</div>
                    <div style="font-size: 14px; color: #cbd5e1; line-height: 1.6;">
                        Moduł "Symulator Awarii Instalacji" to zintegrowany kod należący do Projekt-Ogrzewania.pl. Użycie nieautoryzowane.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora Błędów
    const btns = document.querySelectorAll('.rk-fault-btn');
    const engine = document.getElementById('rkErrEngine');
    
    // Pola tekstowe
    const titleObj = document.getElementById('errTitle');
    const descObj = document.getElementById('errDesc');
    const paramObj = document.getElementById('errParam');

    // Baza danych błędów
    const errorsData = {
        dylatacja: {
            title: "Brak dylatacji brzegowych i pośrednich",
            desc: "Wylewka stale „pracuje” termicznie. Brak <a href='https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/' style='color:#f8fafc; text-decoration:underline;'>pianki dylatacyjnej</a> uderzy rykoszetem – spowoduje prężenie betonu o mury, co doprowadzi do pękania jastrychu w progach, narożnikach oraz uszkodzenia okładzin wierzchnich.",
            param: "Wymóg: Pianka min. 8-10 mm gr."
        },
        powietrze: {
            title: "Niedokładne odpowietrzenie anhydrytu",
            desc: "Złe odpowietrzenie płynnej masy (np. brak wibrowania sztangą) zostawia pęcherzyki powietrza wokół <a href='https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/' style='color:#f8fafc; text-decoration:underline;'>rur PEX</a>. Powietrze działa jak idealny izolator termiczny, drastycznie obniżając moc oddawania ciepła z pętli do posadzki.",
            param: "Fizyka: Powietrze ma λ ≈ 0,025 W/(m·K)"
        },
        temperatura: {
            title: "Szok termiczny wylewki",
            desc: "Zbyt wczesne wyłączenie ogrzewania po wylaniu to proszenie się o kłopoty. W ujemnych temperaturach jastrych musi być chroniony przed zamarznięciem wody zarobowej. Z drugiej strony, wpuszczenie od razu 40°C spowoduje \"smażenie\" betonu i jego dezintegrację.",
            param: "Konsekwencja: Utrata nośności / Zamarzanie"
        },
        chemia: {
            title: "Złe proporcje plastyfikatora",
            desc: "Wykonywanie wylewki z miksokreta bez odpowiedniej chemii (plastyfikatora) to błąd inżynierski. Masa staje się zbyt gęsta, nie otula rur i tworzą się w niej mikroskopijne pustki powietrzne, które degradują ogólną wydajność cieplną o kilkanaście procent.",
            param: "Błąd: Brak dawki 0,2 kg chemii / worek cementu"
        }
    };

    // Nasłuch kliknięć
    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Reset UI
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            // Pobierz dane
            const errKey = this.getAttribute('data-err');
            const data = errorsData[errKey];

            // Animacja SVG poprzez klasy
            engine.className = "rk-err-app state-" + errKey;

            // Wypełnij tekst
            titleObj.innerHTML = data.title;
            descObj.innerHTML = data.desc;
            paramObj.innerHTML = data.param;
        });
    });

    // Inicjalizacja domyślnego błędu
    engine.classList.add('state-dylatacja');
});
</script>



<style>
:root {
    --rk-proj-dark: #0f172a;
    --rk-proj-panel: #1e293b;
    --rk-proj-primary: #10b981; /* Ekologiczna zieleń dla efektywności COP */
    --rk-proj-accent: #3b82f6; /* Techniczny niebieski */
    --rk-proj-warning: #f59e0b; /* Uwaga */
    --rk-proj-bg: #ffffff;
    --rk-proj-border: #e2e8f0;
    --rk-proj-text: #334155;
    --rk-proj-light: #f8fafc;
}

.rk-proj-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: var(--rk-proj-bg);
    border-radius: 20px;
    box-shadow: 0 25px 50px -15px rgba(16, 185, 129, 0.15);
    border: 1px solid var(--rk-proj-border);
    overflow: hidden;
}

/* Nagłówek i Wstęp */
.rk-proj-header {
    padding: 40px 50px 30px;
    background: linear-gradient(180deg, #ffffff 0%, var(--rk-proj-light) 100%);
    border-bottom: 1px solid var(--rk-proj-border);
}

.rk-proj-title {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-proj-dark);
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 12px;
}

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

.rk-proj-intro a {
    color: var(--rk-proj-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(59, 130, 246, 0.2);
    transition: all 0.3s ease;
}

.rk-proj-intro a:hover {
    border-bottom-color: var(--rk-proj-accent);
    background: rgba(59, 130, 246, 0.05);
}

/* Symulator Projektowy */
.rk-proj-app {
    background: var(--rk-proj-dark);
    padding: 40px 50px;
    color: #ffffff;
}

.rk-proj-app-title {
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: #94a3b8;
    margin: 0 0 25px 0;
    font-weight: 800;
    text-align: center;
}

/* Przełącznik Jastrychu */
.rk-proj-switch {
    display: flex;
    justify-content: center;
    gap: 10px;
    margin-bottom: 40px;
}

.rk-btn-proj {
    background: rgba(255,255,255,0.05);
    border: 2px solid rgba(255,255,255,0.1);
    color: #cbd5e1;
    padding: 14px 30px;
    border-radius: 12px;
    font-weight: 800;
    font-size: 15px;
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-btn-proj.active[data-mat="anhydryt"] {
    background: rgba(16, 185, 129, 0.15);
    border-color: var(--rk-proj-primary);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(16, 185, 129, 0.3);
}

.rk-btn-proj.active[data-mat="cement"] {
    background: rgba(148, 163, 184, 0.15);
    border-color: #94a3b8;
    color: #ffffff;
}

/* Dashboard Wyników */
.rk-dashboard-grid {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 20px;
}

.rk-dash-card {
    background: var(--rk-proj-panel);
    border: 1px solid rgba(255,255,255,0.05);
    padding: 25px 20px;
    border-radius: 16px;
    position: relative;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.rk-dash-card-title {
    font-size: 14px;
    color: #94a3b8;
    font-weight: 700;
    margin-bottom: 15px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.rk-val-main {
    font-size: 28px;
    font-weight: 900;
    color: #ffffff;
    margin-bottom: 5px;
    display: flex;
    align-items: baseline;
    gap: 5px;
}

.rk-val-main small {
    font-size: 14px;
    font-weight: 600;
    color: #64748b;
}

.rk-val-sub {
    font-size: 13px;
    color: var(--rk-proj-primary);
    font-weight: 700;
}

.status-warn { color: var(--rk-proj-warning); }

/* SVG Animacje w kartach */
.rk-card-svg {
    width: 100%;
    height: 60px;
    margin-top: 15px;
    background: rgba(0,0,0,0.2);
    border-radius: 8px;
}

/* Animacja rozstawu rur */
.anim-pipe { transition: transform 0.6s cubic-bezier(0.34, 1.56, 0.64, 1); }
.state-cement .pipe-left { transform: translateX(20px); }
.state-cement .pipe-right { transform: translateX(-20px); }
.state-anhydryt .pipe-left { transform: translateX(0px); }
.state-anhydryt .pipe-right { transform: translateX(0px); }

/* Animacja ciepła (Zebra vs Równomierne) */
.anim-heat-wave { transition: opacity 0.5s; }
.state-cement .heat-zebra { opacity: 1; }
.state-cement .heat-even { opacity: 0; }
.state-anhydryt .heat-zebra { opacity: 0; }
.state-anhydryt .heat-even { opacity: 1; }

/* Animacja Krzywej Grzewczej */
.anim-curve { transition: stroke-dashoffset 2s ease-in-out; }
.state-cement .curve-stable { opacity: 0; }
.state-cement .curve-overshoot { opacity: 1; stroke-dasharray: 200; animation: drawCurve 2s infinite linear; }
.state-anhydryt .curve-stable { opacity: 1; stroke-dasharray: 200; animation: drawCurve 2s infinite linear; }
.state-anhydryt .curve-overshoot { opacity: 0; }

@keyframes drawCurve {
    from { stroke-dashoffset: 200; }
    to { stroke-dashoffset: 0; }
}

@media (max-width: 768px) {
    .rk-proj-header, .rk-proj-app { padding: 30px 20px; }
    .rk-dashboard-grid { grid-template-columns: 1fr; }
    .rk-proj-switch { flex-direction: column; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#article-projekt",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/"
    },
    "headline": "Jak wylewka wpływa na projekt ogrzewania podłogowego (OZC)?",
    "description": "Rodzaj wylewki determinuje parametry OZC, krzywą grzewczą, rozstaw rur i współczynnik COP pompy ciepła. Zobacz symulację wpływu jastrychu na projekt.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-18",
    "dateModified": "2026-05-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#dataset-parametry-ozc",
    "name": "Wpływ Parametrów Wylewki na Projekt OZC i Hydraulikę",
    "description": "Dane projektowe dla oprogramowania InstalSystem wykazujące relacje między typem jastrychu a efektywnością systemu grzewczego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowe obciążenie cieplne ozc",
      "rozstaw rur w ogrzewaniu podłogowym",
      "krzywa grzewcza pompy ciepła",
      "pompa obiegowa bezwładność wylewki",
      "współczynnik COP pompy ciepła podłogówka"
    ],
    "measurementTechnique": "Symulacja termodynamiczna: obniżenie Tz o 2-3°C dla anhydrytu względem cementu powoduje przyrost sezonowego współczynnika SCOP o 5-7%.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "OZC i COP: Wyższa przewodność (lambda) anhydrytu pozwala na pracę pompy ciepła na niższej temperaturze zasilania Tz.",
        "Rozstaw rur: Lepsze otulenie rury pozwala na rzadszy rozstaw (np. 12,5 cm zamiast 10 cm) bez zjawiska zebry cieplnej.",
        "Krzywa Grzewcza: Większa masa betonu generuje bezwładność, co grozi tzw. overshootingiem i wymaga innych nastaw pompy obiegowej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#webapp-symulator-ozc",
    "name": "Inżynierski Symulator Wpływu Jastrychu na Projekt",
    "description": "Narzędzie typu dashboard wizualizujące różnice w nastawach pompy ciepła, rozstawie rur i zjawisku overshootingu w zależności od wybranego jastrychu.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and SVG Support",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-proj-container" id="rk-projekt-core">
    
    <div class="rk-proj-header">
        <h2 class="rk-proj-title">
            <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><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
            Jak wylewka wpływa na projekt ogrzewania podłogowego?
        </h2>
        <p class="rk-proj-intro">
            W moim biurze projektowym typ wylewki to jedna z pierwszych zmiennych wprowadzanych do oprogramowania (np. InstalSystem). Niezależnie czy robisz <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekt z pompą ciepła</a> czy kotłem gazowym, wybór jastrychu wprost determinuje całą hydraulikę, od <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">doboru pompy obiegowej</a> po ustawienia <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywej grzewczej</a>. Zobacz, dlaczego tak jest.
        </p>
    </div>

    <div class="rk-proj-app state-anhydryt" id="rkProjEngine">
        
        <h3 class="rk-proj-app-title">Symulator Parametrów Projektowych</h3>

        <div class="rk-proj-switch">
            <button class="rk-btn-proj" data-mat="cement">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path></svg>
                Tradycyjny Cement
            </button>
            <button class="rk-btn-proj active" data-mat="anhydryt">
                <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><path d="M8 14s1.5 2 4 2 4-2 4-2"></path><line x1="9" y1="9" x2="9.01" y2="9"></line><line x1="15" y1="9" x2="15.01" y2="9"></line></svg>
                Płynny Anhydryt
            </button>
        </div>

        <div class="rk-dashboard-grid">
            
            <div class="rk-dash-card">
                <div class="rk-dash-card-title">Zasilanie (T<sub>z</sub>) i Efektywność</div>
                <div class="rk-val-main" id="valTz">32°C</div>
                <div class="rk-val-sub" id="valCop">+7% wyższy COP pompy</div>
                
                <svg class="rk-card-svg" viewBox="0 0 100 60" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="none">
                    <rect x="20" y="30" width="20" height="20" fill="#475569" rx="2"/>
                    <rect id="svgCopBar" x="60" y="10" width="20" height="40" fill="#10b981" rx="2" style="transition: all 0.5s"/>
                    <path d="M 30 20 L 70 5" stroke="#fff" stroke-width="2" stroke-dasharray="4" fill="none"/>
                </svg>
            </div>

            <div class="rk-dash-card">
                <div class="rk-dash-card-title">
                    <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" style="color:#94a3b8; text-decoration:none;">Rozstaw Rur</a>
                </div>
                <div class="rk-val-main" id="valSpacing">12.5 <small>cm</small></div>
                <div class="rk-val-sub" id="valZebra" style="color:#f8fafc;">Brak „zebry cieplnej”</div>
                
                <svg class="rk-card-svg" viewBox="0 0 200 60" xmlns="http://www.w3.org/2000/svg">
                    <path class="anim-heat-wave heat-zebra" d="M 40 40 Q 60 10 80 40 Q 100 10 120 40 Q 140 10 160 40" fill="none" stroke="#ef4444" stroke-width="15" opacity="0.4" stroke-linecap="round"/>
                    <rect class="anim-heat-wave heat-even" x="20" y="20" width="160" height="20" fill="#ef4444" opacity="0.5" rx="10"/>
                    
                    <circle class="anim-pipe pipe-left" cx="60" cy="45" r="8" fill="#3b82f6" stroke="#fff" stroke-width="2"/>
                    <circle cx="100" cy="45" r="8" fill="#3b82f6" stroke="#fff" stroke-width="2"/>
                    <circle class="anim-pipe pipe-right" cx="140" cy="45" r="8" fill="#3b82f6" stroke="#fff" stroke-width="2"/>
                </svg>
            </div>

            <div class="rk-dash-card">
                <div class="rk-dash-card-title">Krzywa i Bezwładność</div>
                <div class="rk-val-main" id="valInertia" style="font-size: 20px;">Wysoka sterowalność</div>
                <div class="rk-val-sub status-warn" id="valOver" style="color:#6ee7b7;">Brak przegrzewów</div>
                
                <svg class="rk-card-svg" viewBox="0 0 200 60" xmlns="http://www.w3.org/2000/svg">
                    <line x1="10" y1="30" x2="190" y2="30" stroke="#64748b" stroke-width="2" stroke-dasharray="4"/>
                    
                    <path class="anim-curve curve-overshoot" d="M 10 30 Q 50 -10 100 30 T 190 30" fill="none" stroke="#ef4444" stroke-width="3"/>
                    
                    <path class="anim-curve curve-stable" d="M 10 30 Q 50 20 100 30 T 190 30" fill="none" stroke="#10b981" stroke-width="3"/>
                </svg>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Zgodnie z wytycznymi)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-projekt-core');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif; max-width: 950px; margin: 40px auto;">
                    <div style="font-size: 36px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Naruszenie Praw Autorskich</div>
                    <div style="font-size: 14px; color: #cbd5e1; line-height: 1.6;">
                        Moduł "Symulator Parametrów Projektowych" jest własnością intelektualną Projekt-Ogrzewania.pl.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora Projektowego
    const btns = document.querySelectorAll('.rk-btn-proj');
    const engine = document.getElementById('rkProjEngine');
    
    // Elementy Tekstowe
    const vTz = document.getElementById('valTz');
    const vCop = document.getElementById('valCop');
    const vSpacing = document.getElementById('valSpacing');
    const vZebra = document.getElementById('valZebra');
    const vInertia = document.getElementById('valInertia');
    const vOver = document.getElementById('valOver');
    
    // Elementy SVG
    const svgCopBar = document.getElementById('svgCopBar');

    const dataModel = {
        anhydryt: {
            tz: "32°C",
            copText: "+7% wyższy COP pompy",
            copColor: "var(--rk-proj-primary)",
            barHeight: "40", barY: "10", barColor: "#10b981",
            spacing: "12.5 <small>cm</small>",
            zebraText: "Brak „zebry cieplnej”",
            inertia: "Wysoka sterowalność",
            overText: "Brak przegrzewów",
            overColor: "#6ee7b7"
        },
        cement: {
            tz: "35°C",
            copText: "Standardowy COP pompy",
            copColor: "#94a3b8",
            barHeight: "20", barY: "30", barColor: "#64748b",
            spacing: "10.0 <small>cm</small>",
            zebraText: "Ryzyko wahań temperatury",
            inertia: "Wysoka bezwładność",
            overText: "Ryzyko overshootingu!",
            overColor: "#f59e0b"
        }
    };

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Zarządzanie przyciskami
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const mat = this.getAttribute('data-mat');
            const d = dataModel[mat];

            // Klasa główna dla animacji SVG
            engine.className = "rk-proj-app state-" + mat;

            // Aktualizacja tekstów
            vTz.innerHTML = d.tz;
            vCop.innerHTML = d.copText;
            vCop.style.color = d.copColor;
            
            vSpacing.innerHTML = d.spacing;
            vZebra.innerHTML = d.zebraText;
            
            vInertia.innerHTML = d.inertia;
            vOver.innerHTML = d.overText;
            vOver.style.color = d.overColor;

            // Aktualizacja słupka COP
            svgCopBar.setAttribute('height', d.barHeight);
            svgCopBar.setAttribute('y', d.barY);
            svgCopBar.setAttribute('fill', d.barColor);
        });
    });
});
</script>



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



<style>
:root {
    --rk-quote-primary: #0f172a;
    --rk-quote-accent: #ea580c; /* Termiczny pomarańczowy */
    --rk-quote-accent-light: #ffedd5;
    --rk-quote-danger: #ef4444;
    --rk-quote-bg: #f8fafc;
    --rk-quote-border: #e2e8f0;
}

.rk-expert-wrapper {
    max-width: 950px;
    margin: 50px auto 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
}

.rk-expert-header {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    margin-bottom: 25px;
}

.rk-expert-header h2 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-quote-primary);
    margin: 0;
}

.rk-expert-container {
    background: #ffffff;
    border-radius: 24px;
    padding: 35px 40px;
    display: flex;
    gap: 30px;
    align-items: flex-start;
    border: 1px solid var(--rk-quote-border);
    box-shadow: 0 20px 40px -15px rgba(234, 88, 12, 0.15);
    position: relative;
    overflow: hidden;
}

/* Dekoracyjne tło */
.rk-expert-container::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 6px; height: 100%;
    background: linear-gradient(to bottom, var(--rk-quote-accent), #fbd38d);
}

.rk-expert-container::after {
    content: '”';
    position: absolute;
    top: -20px;
    right: 20px;
    font-family: serif;
    font-size: 140px;
    color: var(--rk-quote-bg);
    line-height: 1;
    z-index: 0;
}

/* Animowane zdjęcie */
.rk-expert-photo-wrap {
    flex-shrink: 0;
    width: 110px;
    height: 110px;
    position: relative;
    z-index: 1;
}

.rk-expert-photo-ring {
    position: absolute;
    top: -5px; left: -5px; right: -5px; bottom: -5px;
    border-radius: 50%;
    border: 2px dashed var(--rk-quote-accent);
    animation: spinRing 12s linear infinite;
}

@keyframes spinRing {
    100% { transform: rotate(360deg); }
}

.rk-expert-photo {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    object-position: center top;
    border: 4px solid #ffffff;
    box-shadow: 0 8px 15px rgba(0,0,0,0.1);
    position: relative;
    z-index: 2;
}

.rk-expert-badge-icon {
    position: absolute;
    bottom: -5px;
    right: -5px;
    background: var(--rk-quote-accent);
    color: #ffffff;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 10px rgba(234, 88, 12, 0.4);
    z-index: 3;
}

/* Treść cytatu */
.rk-expert-content {
    flex-grow: 1;
    position: relative;
    z-index: 1;
}

.rk-expert-label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 800;
    color: var(--rk-quote-accent);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 12px;
    background: var(--rk-quote-accent-light);
    padding: 4px 12px;
    border-radius: 20px;
}

.rk-expert-text {
    font-size: 18px;
    line-height: 1.7;
    color: var(--rk-quote-primary);
    font-style: italic;
    margin: 0 0 15px 0;
    font-weight: 500;
}

.rk-expert-text strong {
    color: var(--rk-quote-accent);
    font-weight: 800;
}

.rk-expert-text a {
    color: var(--rk-quote-primary);
    text-decoration: underline;
    text-decoration-color: var(--rk-quote-accent);
    text-underline-offset: 3px;
    transition: color 0.2s;
    font-weight: 700;
}

.rk-expert-text a:hover {
    color: var(--rk-quote-accent);
}

.rk-expert-signature {
    display: block;
    font-size: 14px;
    font-weight: 700;
    color: #64748b;
    border-top: 1px solid var(--rk-quote-border);
    padding-top: 15px;
    margin-top: 15px;
}

/* Interaktywny Panel Ukryty */
.rk-expert-interactive {
    margin-top: 20px;
}

.rk-expert-btn {
    background: #ffffff;
    border: 2px solid var(--rk-quote-border);
    color: var(--rk-quote-primary);
    padding: 10px 20px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    transition: all 0.3s ease;
}

.rk-expert-btn:hover {
    border-color: var(--rk-quote-accent);
    color: var(--rk-quote-accent);
    background: var(--rk-quote-accent-light);
}

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

.rk-expert-btn.active svg {
    transform: rotate(180deg);
}

.rk-expert-data-panel {
    display: none;
    margin-top: 15px;
    padding: 20px;
    background: var(--rk-quote-bg);
    border-radius: 12px;
    border: 1px dashed var(--rk-quote-border);
    animation: fadeInDown 0.4s ease forwards;
}

.rk-expert-data-panel.active {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
}

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

.rk-data-stat {
    text-align: center;
    background: #ffffff;
    padding: 15px;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-data-val {
    display: block;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-quote-accent);
    margin-bottom: 5px;
}

.rk-data-lab {
    font-size: 11px;
    color: #64748b;
    text-transform: uppercase;
    font-weight: 700;
}

@media (max-width: 768px) {
    .rk-expert-container { flex-direction: column; text-align: center; padding: 30px 25px; align-items: center; }
    .rk-expert-header h2 { font-size: 22px; text-align: center; }
    .rk-expert-container::before { width: 100%; height: 6px; }
    .rk-expert-data-panel.active { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#article-cytat",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/"
    },
    "headline": "Robert Kucharski: Wylewka to serce Twojego systemu grzewczego",
    "description": "Ekspercka opinia na temat fizyki budowli. Jastrych to wymiennik ciepła, którego parametry decydują o sprawności pompy ciepła i wysokości rachunków.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-18",
    "dateModified": "2026-05-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Quotation",
    "license": "https://projekt-ogrzewania.pl/",
    "text": "Wylewka to nie jest zwykła podłoga. To największy wymiennik ciepła w Twoim domu. Błędy w proporcjach wody, brak dylatacji czy nadlane z lenistwa centymetry betonu to gwarancja, że zniszczysz sprawność nawet najlepszej pompy ciepła. Tu nie ma miejsca na wykonawcze 'zawsze tak robiliśmy', tu rządzi fizyka i norma PN-EN 1264.",
    "spokenByCharacter": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "jobTitle": "Inżynier HVAC & Właściciel Portalu",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ],
      "worksFor": {
        "@type": "Organization",
        "name": "Projekt-Ogrzewania.pl"
      }
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#dataset-cytat-parametry",
    "name": "Inżynierskie wskaźniki wylewek grzejnych",
    "description": "Kluczowe wartości fizyczne warunkujące poprawną pracę jastrychu jako wymiennika ciepła w instalacji płaszczyznowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wylewka jako wymiennik ciepła",
      "badanie wilgotności metodą CM",
      "opór cieplny anhydrytu",
      "zła grubość wylewki",
      "norma PN-EN 1264 jastrych"
    ],
    "measurementTechnique": "Parametry laboratoryjne i budowlane określające graniczną wilgotność resztkową, optymalną grubość oraz przewodność termiczną wylewki.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Dopuszczalna wilgotność (CM) pod panele: < 1.8%",
        "Zalecana grubość nad rurką (s_d): 35 - 45 mm",
        "Optymalny opór cieplny Rλ: < 0.05 m²·K/W"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#webapp-cytat-panel",
    "name": "Panel Analityczny: Twarde Dane Wylewki",
    "description": "Interaktywny widget rozwijany z cytatu eksperckiego, prezentujący graniczne wskaźniki inżynierskie dla jastrychu.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-expert-wrapper" id="rk-expert-wylewka-app">
    <div class="rk-expert-header">
        <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="var(--rk-quote-accent)" 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>
        <h2>Głos Inżyniera</h2>
    </div>
    
    <div class="rk-expert-container">
        <div class="rk-expert-photo-wrap">
            <div class="rk-expert-photo-ring"></div>
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-expert-photo" loading="lazy">
            <div class="rk-expert-badge-icon">
                <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="20 6 9 17 4 12"></polyline></svg>
            </div>
        </div>
        
        <div class="rk-expert-content">
            <span class="rk-expert-label">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="16"></line><line x1="8" y1="12" x2="16" y2="12"></line></svg>
                Fizyka budowli bez ściemy
            </span>
            <p class="rk-expert-text">
                "Wylewka to nie jest zwykła podłoga. To <strong>największy wymiennik ciepła</strong> w Twoim domu. Błędy w proporcjach wody, brak dylatacji czy nadlane z lenistwa centymetry betonu to gwarancja, że zniszczysz sprawność nawet najlepszej <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a>. Tu nie ma miejsca na wykonawcze 'zawsze tak robiliśmy'. Jeśli chcesz oszczędzać, tu rządzi fizyka i <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">norma PN-EN 1264</a>."
            </p>
            <span class="rk-expert-signature">— Robert Kucharski, Inżynier HVAC Projekt-Ogrzewania.pl</span>
            
            <div class="rk-expert-interactive">
                <button class="rk-expert-btn" id="toggleDataBtnWylewka">
                    Rozwiń twarde dane techniczne
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </button>
                
                <div class="rk-expert-data-panel" id="expertDataPanelWylewka">
                    <div class="rk-data-stat">
                        <span class="rk-data-val">35-45 mm</span>
                        <span class="rk-data-lab">Zalecana otulina (s<sub>d</sub>)</span>
                    </div>
                    <div class="rk-data-stat">
                        <span class="rk-data-val">< 1.8%</span>
                        <span class="rk-data-lab">Wilgotność CM (Panele)</span>
                    </div>
                    <div class="rk-data-stat">
                        <span class="rk-data-val" style="color: var(--rk-quote-primary);">< 0.05</span>
                        <span class="rk-data-lab">Opór cieplny (R<sub>λ</sub>)</span>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <noscript>
        <div style="padding: 20px; background: #f8fafc; border-radius: 16px; margin-top: 20px; font-family: sans-serif;">
            <p style="font-size: 14px; font-weight: bold; color: #0f172a; margin-top:0;">Wskaźniki inżynierskie (Robert Kucharski):</p>
            <ul style="font-size: 14px; color: #475569; margin-bottom:0;">
                <li>Zalecana grubość nad rurką (s_d): 35-45 mm</li>
                <li>Maksymalna wilgotność resztkowa (CM) pod panele: poniżej 1.8%</li>
                <li>Optymalny opór cieplny (R_lambda): poniżej 0.05 m²·K/W</li>
            </ul>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez nagłówków strukturalnych w alercie)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-expert-wylewka-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px 20px; text-align: center; background: #fff7ed; color: #c2410c; border-radius: 20px; border: 2px dashed #f97316;">
                    <div style="font-size: 32px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 18px; font-weight: 800; text-transform: uppercase; margin-bottom: 10px;">Blokada bezpieczeństwa</div>
                    <div style="font-size: 14px; color: #9a3412;">Własność intelektualna i cytat ekspercki przypisane do domeny Projekt-Ogrzewania.pl.</div>
                </div>
            `;
            // Reset styli dla bezpieczeństwa wizualnego komunikatu
            container.style.borderLeft = 'none';
            container.style.background = 'transparent';
            container.style.boxShadow = 'none';
            return;
        }
    }

    // 2. Interakcja z panelem danych
    const toggleBtn = document.getElementById('toggleDataBtnWylewka');
    const dataPanel = document.getElementById('expertDataPanelWylewka');

    if (toggleBtn && dataPanel) {
        toggleBtn.addEventListener('click', function() {
            this.classList.toggle('active');
            dataPanel.classList.toggle('active');
            
            if(this.classList.contains('active')) {
                this.innerHTML = `Zwiń dane techniczne <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>`;
            } else {
                this.innerHTML = `Rozwiń twarde dane techniczne <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>`;
            }
        });
    }
});
</script>



<style>
:root {
    --rk-cs-dark: #0f172a;
    --rk-cs-panel: #1e293b;
    --rk-cs-primary: #f43f5e; /* Malinowa czerwień - strata/błąd */
    --rk-cs-success: #10b981; /* Projektowa zieleń */
    --rk-cs-warning: #f59e0b;
    --rk-cs-bg: #ffffff;
    --rk-cs-border: #e2e8f0;
    --rk-cs-text: #334155;
    --rk-cs-light: #fff1f2;
}

.rk-cs-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    background: var(--rk-cs-bg);
    border-radius: 20px;
    box-shadow: 0 25px 50px -15px rgba(244, 63, 94, 0.15);
    border: 1px solid var(--rk-cs-border);
    overflow: hidden;
}

/* Nagłówek i Treść (Rozwinięta pod SEO) */
.rk-cs-header {
    padding: 40px 50px 30px;
    background: linear-gradient(180deg, var(--rk-cs-light) 0%, #ffffff 100%);
    border-bottom: 1px solid #fecdd3;
}

.rk-cs-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #ffe4e6;
    color: #e11d48;
    padding: 6px 14px;
    border-radius: 99px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid #fda4af;
}

.rk-cs-title {
    font-size: 26px;
    font-weight: 900;
    color: #881337;
    margin: 0 0 20px 0;
    line-height: 1.3;
}

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

.rk-cs-text strong {
    color: var(--rk-cs-dark);
}

.rk-cs-text a {
    color: #e11d48;
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(225, 29, 72, 0.2);
    transition: all 0.3s ease;
}

.rk-cs-text a:hover {
    border-bottom-color: #e11d48;
    background: rgba(225, 29, 72, 0.05);
}

/* Symulator Kosztów Błędu */
.rk-cs-app {
    background: var(--rk-cs-dark);
    padding: 40px 50px;
    color: #ffffff;
}

.rk-cs-app-title {
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: #94a3b8;
    margin: 0 0 25px 0;
    font-weight: 800;
    text-align: center;
}

/* Interaktywny Switch */
.rk-cs-switch {
    display: flex;
    justify-content: center;
    gap: 15px;
    margin-bottom: 40px;
}

.rk-btn-cs {
    background: rgba(255,255,255,0.05);
    border: 2px solid rgba(255,255,255,0.1);
    color: #cbd5e1;
    padding: 14px 30px;
    border-radius: 12px;
    font-weight: 800;
    font-size: 15px;
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-btn-cs.active[data-state="projekt"] {
    background: rgba(16, 185, 129, 0.15);
    border-color: var(--rk-cs-success);
    color: #ffffff;
}

.rk-btn-cs.active[data-state="blad"] {
    background: rgba(244, 63, 94, 0.15);
    border-color: var(--rk-cs-primary);
    color: #ffffff;
    box-shadow: 0 10px 25px -5px rgba(244, 63, 94, 0.4);
}

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

/* SVG Wizualizacja */
.rk-cs-svg-box {
    background: var(--rk-cs-panel);
    border-radius: 16px;
    padding: 30px 20px;
    box-shadow: inset 0 10px 20px rgba(0,0,0,0.3);
    position: relative;
    border: 1px solid rgba(255,255,255,0.05);
}

.rk-svg-scene {
    width: 100%;
    height: auto;
    max-width: 320px;
    margin: 0 auto;
    display: block;
}

/* Animacje SVG */
.anim-screed { transition: height 0.6s cubic-bezier(0.34, 1.56, 0.64, 1), y 0.6s cubic-bezier(0.34, 1.56, 0.64, 1), fill 0.6s; }
.anim-measure { transition: all 0.6s cubic-bezier(0.34, 1.56, 0.64, 1); }
.anim-heat { transition: opacity 0.5s, stroke 0.5s; animation: riseHeat 1.5s infinite linear; }

@keyframes riseHeat {
    0% { stroke-dashoffset: 20; opacity: 0; }
    50% { opacity: 1; }
    100% { stroke-dashoffset: 0; opacity: 0; }
}

/* Klasy stanów do SVG */
.state-projekt .svg-screed { height: 65px; y: 85px; fill: #475569; }
.state-projekt .svg-line { d: path("M 210 150 L 210 85"); stroke: #10b981; }
.state-projekt .svg-text { y: 120px; fill: #10b981; }
.state-projekt .svg-heat-good { opacity: 1; }
.state-projekt .svg-heat-bad { opacity: 0; }

.state-blad .svg-screed { height: 85px; y: 65px; fill: #334155; }
.state-blad .svg-line { d: path("M 210 150 L 210 65"); stroke: #f43f5e; }
.state-blad .svg-text { y: 110px; fill: #f43f5e; }
.state-blad .svg-heat-good { opacity: 0; }
.state-blad .svg-heat-bad { opacity: 1; stroke: #f43f5e; animation-duration: 3s; } /* Ciepło ledwo przechodzi */

/* Panel Danych */
.rk-cs-stats {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-stat-card {
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.05);
    padding: 20px;
    border-radius: 12px;
}

.rk-stat-label {
    font-size: 13px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 700;
    margin-bottom: 8px;
    display: block;
}

.rk-stat-val {
    font-size: 24px;
    font-weight: 900;
    color: #ffffff;
    display: flex;
    align-items: baseline;
    gap: 6px;
    font-variant-numeric: tabular-nums;
}

.rk-stat-val small {
    font-size: 14px;
    font-weight: 600;
    color: #64748b;
}

/* Licznik Kosztów */
.rk-loss-counter {
    background: linear-gradient(135deg, rgba(244, 63, 94, 0.1) 0%, rgba(225, 29, 72, 0.2) 100%);
    border-color: rgba(244, 63, 94, 0.3);
}

.rk-loss-val {
    color: var(--rk-cs-primary);
    font-size: 32px;
}

@media (max-width: 768px) {
    .rk-cs-header, .rk-cs-app { padding: 30px 20px; }
    .rk-cs-grid { grid-template-columns: 1fr; }
    .rk-cs-switch { flex-direction: column; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/"
    },
    "headline": "Case Study: Błąd o grubości 2 cm – nadlewka, która kosztuje",
    "description": "Analiza rzeczywistego błędu wykonawczego. Zobacz, jak nadlanie wylewki o 2 cm zwiększyło bezwładność systemu, zmusiło do podniesienia Tz i wygenerowało 850 PLN strat.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-18",
    "dateModified": "2026-05-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#dataset-straty",
    "name": "Koszty Błędów Grubości Jastrychu (ROI)",
    "description": "Zestawienie spadku sprawności pompy ciepła (SCOP) i dodatkowych kosztów w PLN wynikających z nieuzasadnionego pogrubienia wylewki grzejnej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błąd o grubości 2 cm wylewka",
      "koszt ogrzewania domu 2025 pompa ciepła",
      "bezwładność cieplna spadek COP",
      "nadlewka betonu na podłogówce",
      "temperatura zasilania Tz ogrzewania"
    ],
    "measurementTechnique": "Porównanie parametrów z projektu OZC (jastrych 6,5 cm) z weryfikacją powykonawczą (jastrych 8,5 cm) dla budynku 185m2.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Bezwładność: Przyrost o 40% utrudniający stabilizację temperatury w strefach dziennych.",
        "Korekta Pompy: Wymuszone podniesienie temperatury zasilania (Tz) o 4°C w sterowniku.",
        "Koszt roczny: Spadek współczynnika SCOP wygenerował nadmiarowe zużycie prądu o wartości ok. 850 PLN/sezon."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#webapp-symulator-strat",
    "name": "Symulator Strat Błędu Wykonawczego",
    "description": "Interaktywna wizualizacja pokazująca fizyczne i finansowe skutki nieliczenia się z wytycznymi projektu OZC (zmiana grubości wylewki na obiekcie).",
    "applicationCategory": "FinancialCalculator",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, CSS transitions and SVG rendering",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-cs-container" id="rk-cs-core">
    
    <div class="rk-cs-header">
        <div class="rk-cs-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><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>
            Case Study: Wrzesień 2025, Opole
        </div>
        <h2 class="rk-cs-title">Błąd o grubości 2 cm – dlaczego milimetry kosztują setki złotych?</h2>
        
        <div class="rk-cs-text">
            <p>
                We wrześniu 2025 roku nadzorowałem instalację, a w lutym 2026 korygowałem układ dla Pana Tomasza w Opolu (nowy dom 185 m²). Zignorowawszy precyzyjne <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">obliczenia strat ciepła</a>, wykonawca zalał rury wylewką cementową o grubości <strong>8,5 cm</strong> zamiast projektowanych <strong>6,5 cm</strong> (potoczna „nadlewka” dla wyrównania poziomów). 
            </p>
            <p>
                <strong>Zaraz... czy 2 centymetry robią różnicę?</strong><br>
                Zrobiły kolosalną. <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">Bezwładność układu</a> wzrosła o 40%, co doprowadziło do wychłodzeń nad ranem. Aby przebić się przez zaporę z betonu, temperatura zasilania (T<sub>z</sub>) na <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompie ciepła</a> musiała zostać podniesiona o 4°C. Ten pozornie drobny błąd drastycznie obniżył współczynnik efektywności SCOP urządzenia, co wywindowało <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/">koszty ogrzewania</a>.
            </p>
        </div>
    </div>

    <div class="rk-cs-app state-projekt" id="rkCsEngine">
        <h3 class="rk-cs-app-title">Kalkulator Strat (Symulacja Obiektu)</h3>

        <div class="rk-cs-switch">
            <button class="rk-btn-cs active" data-state="projekt">
                <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="20 6 9 17 4 12"></polyline></svg>
                Zgodnie z projektem
            </button>
            <button class="rk-btn-cs" data-state="blad">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" 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>
                Samowolka wykonawcy
            </button>
        </div>

        <div class="rk-cs-grid">
            
            <div class="rk-cs-svg-box">
                <svg viewBox="0 0 250 180" class="rk-svg-scene" xmlns="http://www.w3.org/2000/svg">
                    <rect x="10" y="150" width="160" height="30" fill="#334155" rx="2" />
                    
                    <circle cx="90" cy="142" r="8" fill="#ef4444" stroke="#fff" stroke-width="2" />

                    <g class="anim-heat svg-heat-good" stroke="#10b981" stroke-width="4" stroke-dasharray="8" fill="none" stroke-linecap="round">
                        <path d="M 70 120 L 50 20" />
                        <path d="M 90 120 L 90 20" />
                        <path d="M 110 120 L 130 20" />
                    </g>
                    
                    <g class="anim-heat svg-heat-bad" stroke-width="4" stroke-dasharray="4" fill="none" stroke-linecap="round">
                        <path d="M 70 120 L 50 40" />
                        <path d="M 90 120 L 90 40" />
                        <path d="M 110 120 L 130 40" />
                    </g>

                    <rect id="svoScreed" class="anim-screed svg-screed" x="10" y="85" width="160" height="65" rx="2" opacity="0.9"/>

                    <path class="anim-measure svg-line" d="M 210 150 L 210 85" stroke-width="2" marker-start="url(#arrowCs)" marker-end="url(#arrowCs)"/>
                    <text class="anim-measure svg-text" x="220" y="120" font-size="16" font-weight="bold">6.5 cm</text>
                    
                    <defs>
                        <marker id="arrowCs" viewBox="0 0 10 10" refX="5" refY="5" markerWidth="4" markerHeight="4" orient="auto-start-reverse">
                            <path d="M 0 0 L 10 5 L 0 10 z" fill="currentColor" />
                        </marker>
                    </defs>
                </svg>
            </div>

            <div class="rk-cs-stats">
                <div class="rk-stat-card">
                    <span class="rk-stat-label">Bezwładność układu</span>
                    <span class="rk-stat-val" id="valInertia" style="color: #6ee7b7;">Optymalna</span>
                </div>
                <div class="rk-stat-card">
                    <span class="rk-stat-label">Nastawa Zasilania (T<sub>z</sub>)</span>
                    <span class="rk-stat-val" id="valTz">32.0<small>°C</small></span>
                </div>
                <div class="rk-stat-card rk-loss-counter">
                    <span class="rk-stat-label" style="color:#fda4af;">Nadmiarowe koszty / sezon</span>
                    <span class="rk-stat-val rk-loss-val">+<span id="valCost">0</span><small>PLN</small></span>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez H-tags w powiadomieniu)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-cs-core');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif; max-width: 950px; margin: 40px auto;">
                    <div style="font-size: 36px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Zabezpieczenie Treści</div>
                    <div style="font-size: 14px; color: #cbd5e1; line-height: 1.6;">
                        Interaktywne Case Study oraz zintegrowane algorytmy są prawowitą własnością Projekt-Ogrzewania.pl.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora Błędu
    const btns = document.querySelectorAll('.rk-btn-cs');
    const engine = document.getElementById('rkCsEngine');
    
    // Obiekty DOM do nadpisania
    const vInertia = document.getElementById('valInertia');
    const vTz = document.getElementById('valTz');
    const vCost = document.getElementById('valCost');
    const svgText = document.querySelector('.svg-text');

    // Licznik numeryczny (Animacja od-do)
    function animateValue(obj, start, end, duration) {
        let startTimestamp = null;
        const step = (timestamp) => {
            if (!startTimestamp) startTimestamp = timestamp;
            const progress = Math.min((timestamp - startTimestamp) / duration, 1);
            obj.innerHTML = Math.floor(progress * (end - start) + start);
            if (progress < 1) {
                window.requestAnimationFrame(step);
            }
        };
        window.requestAnimationFrame(step);
    }

    const dataModel = {
        projekt: {
            inertia: "Optymalna",
            inertiaCol: "#6ee7b7",
            tz: "32.0<small>°C</small>",
            cost: 0,
            svgLabel: "6.5 cm"
        },
        blad: {
            inertia: "+40% (Przegrzewy)",
            inertiaCol: "#fca5a5",
            tz: "36.0<small>°C</small>",
            cost: 850,
            svgLabel: "8.5 cm"
        }
    };

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Zarządzanie UI Buttonów
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const state = this.getAttribute('data-state');
            const d = dataModel[state];

            // Aktywacja animacji CSS (SVG klasa główna)
            engine.className = "rk-cs-app state-" + state;

            // Wypełnianie danych
            vInertia.innerHTML = d.inertia;
            vInertia.style.color = d.inertiaCol;
            vTz.innerHTML = d.tz;
            svgText.textContent = d.svgLabel;

            // Uruchomienie animacji licznika strat finansowych
            const currentCost = parseInt(vCost.innerText) || 0;
            animateValue(vCost, currentCost, d.cost, 800);
        });
    });
});
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-primary: #2563eb; /* Mocny niebieski ekspercki */
    --rk-faq-primary-light: #eff6ff;
    --rk-faq-accent: #f59e0b; /* Akcent ostrzegawczy */
    --rk-faq-bg: #ffffff;
    --rk-faq-surface: #f8fafc;
    --rk-faq-border: #e2e8f0;
    --rk-faq-text: #475569;
}

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

/* Nagłówek */
.rk-faq-header {
    padding: 45px 50px 30px;
    background: linear-gradient(180deg, #ffffff 0%, var(--rk-faq-surface) 100%);
    border-bottom: 2px solid var(--rk-faq-primary);
    text-align: center;
}

.rk-faq-title {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-faq-dark);
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
}

.rk-faq-title svg {
    color: var(--rk-faq-primary);
}

.rk-faq-desc {
    font-size: 16px;
    color: var(--rk-faq-text);
    line-height: 1.6;
    max-width: 700px;
    margin: 0 auto;
}

/* Interaktywny Akordeon */
.rk-faq-app {
    background: #ffffff;
    padding: 30px 50px;
}

.rk-faq-item {
    border-bottom: 1px solid var(--rk-faq-border);
    margin-bottom: 10px;
}

.rk-faq-item:last-child {
    border-bottom: none;
    margin-bottom: 0;
}

.rk-faq-btn {
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: transparent;
    border: none;
    padding: 25px 10px;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-faq-dark);
    text-align: left;
    cursor: pointer;
    transition: all 0.3s ease;
}

.rk-faq-btn:hover {
    color: var(--rk-faq-primary);
}

.rk-faq-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-faq-surface);
    color: var(--rk-faq-primary);
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    flex-shrink: 0;
    margin-left: 20px;
}

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

/* Animowana treść odpowiedzi */
.rk-faq-answer-wrapper {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

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

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

.rk-faq-answer-content {
    padding: 0 10px 30px;
    display: flex;
    gap: 25px;
    align-items: flex-start;
}

.rk-faq-text {
    flex: 1;
    font-size: 16px;
    line-height: 1.8;
    color: var(--rk-faq-text);
    margin: 0;
}

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

.rk-faq-text a {
    color: var(--rk-faq-primary);
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 3px;
}

.rk-faq-text a:hover {
    color: #1e40af;
}

/* Badge do szybkich odpowiedzi */
.rk-ans-badge {
    display: inline-block;
    padding: 6px 12px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    margin-bottom: 12px;
}

.badge-no { background: #fee2e2; color: #dc2626; }
.badge-info { background: #e0f2fe; color: #0284c7; }
.badge-money { background: #dcfce7; color: #16a34a; }

/* SVG Ilustracje w odpowiedziach */
.rk-faq-svg {
    width: 100px;
    height: 100px;
    flex-shrink: 0;
    background: var(--rk-faq-surface);
    border-radius: 12px;
    padding: 15px;
    display: none; /* Mobile hide */
}

@media (min-width: 640px) {
    .rk-faq-svg { display: block; }
}

@media (max-width: 768px) {
    .rk-faq-header, .rk-faq-app { padding: 30px 20px; }
    .rk-faq-btn { font-size: 16px; padding: 20px 5px; }
    .rk-faq-answer-content { padding: 0 5px 25px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/"
    },
    "headline": "FAQ – Najczęstsze pytania inwestorów o wylewki",
    "description": "Odpowiedzi inżyniera na najważniejsze pytania dotyczące wylewek na ogrzewanie podłogowe: wygrzewanie, maksymalne temperatury, koszty i zbrojenie.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-18",
    "dateModified": "2026-05-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy można kłaść panele na wylewkę bez wygrzewania?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, jest to kategorycznie zabronione, ponieważ resztkowa wilgoć zamknięta pod podkładem doprowadzi do spuchnięcia paneli lub rozwoju pleśni po uruchomieniu ogrzewania."
        }
      },
      {
        "@type": "Question",
        "name": "Jaka jest maksymalna dopuszczalna temperatura wylewki?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Według normy PN-EN 1264, temperatura powierzchni jastrychu w strefie stałego przebywania ludzi nie może przekraczać 29°C (w łazienkach 33°C)."
        }
      },
      {
        "@type": "Question",
        "name": "Czy zbrojenie siatką stalową jest konieczne w anhydrycie?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, jastrychy anhydrytowe charakteryzują się wysoką wytrzymałością na zginanie i niskim skurczem, co eliminuje potrzebę stosowania siatek stalowych."
        }
      },
      {
        "@type": "Question",
        "name": "Czy wylewka cementowa jest tańsza od anhydrytowej?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Sam materiał i robocizna są tańsze o ok. 15-25%, jednak biorąc pod uwagę konieczność zbrojenia i niższą wydajność termiczną, różnica w koszcie całkowitym inwestycji często się zaciera."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#dataset-faq",
    "name": "Baza Wiedzy Inwestora - Zestawienie Błędów i Wytycznych",
    "description": "Zbiór ustandaryzowanych odpowiedzi rozwiązujących najczęstsze problemy wykonawcze z wylewkami grzejnymi.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wygrzewanie wylewki pod panele laminowane",
      "maksymalna temperatura jastrychu 29 stopni",
      "zbrojenie wylewki anhydrytowej siatka",
      "koszt wylewki cementowej vs anhydryt",
      "pleśń pod panelami wilgotność CM"
    ],
    "measurementTechnique": "Weryfikacja parametrów z wytycznymi norm budowlanych (m m.in. PN-EN 1264) oraz badaniami wilgotności resztkowej (CM).",
    "mainEntity": "FAQPage"
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#webapp-faq",
    "name": "Interaktywny Panel Ekspercki FAQ",
    "description": "Rozwijane, interaktywne menu akordeonowe ułatwiające skanowanie i przeglądanie kluczowych pytań i odpowiedzi inżynierskich.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-faq-container" id="rk-faq-core">
    
    <div class="rk-faq-header">
        <h2 class="rk-faq-title">
            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><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>
            FAQ – Najczęstsze pytania inwestorów
        </h2>
        <p class="rk-faq-desc">
            Podłogówka to system naczyń połączonych, a błędy na etapie wylewki kosztują tysiące złotych. Sprawdź inżynierskie odpowiedzi na pytania, które najczęściej słyszę od inwestorów na budowach.
        </p>
    </div>

    <div class="rk-faq-app">
        
        <div class="rk-faq-item">
            <button class="rk-faq-btn">
                1. Czy można kłaść panele na wylewkę bez wygrzewania?
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-answer-wrapper">
                <div class="rk-faq-answer-inner">
                    <div class="rk-faq-answer-content">
                        <div class="rk-faq-text">
                            <span class="rk-ans-badge badge-no">Kategorycznie Nie</span><br>
                            Jest to fundamentalny błąd. Resztkowa wilgoć zamknięta pod podkładem doprowadzi do spuchnięcia <a href="https://projekt-ogrzewania.pl/podlogi-drewniane-vs-panele-laminowane-co-wybrac-przy-ogrzewaniu-podlogowym/">paneli laminowanych</a> lub drewnianych, a także do agresywnego rozwoju pleśni po uruchomieniu pompy obiegowej. Zawsze wymagaj od wykonawcy protokołu wygrzewania i badania wilgotności metodą karbidową (CM).
                        </div>
                        <svg class="rk-faq-svg" viewBox="0 0 24 24" fill="none" stroke="#dc2626" 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="17 8 12 3 7 8"></polyline><line x1="12" y1="3" x2="12" y2="15"></line></svg>
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-btn">
                2. Jaka jest maksymalna dopuszczalna temperatura wylewki?
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-answer-wrapper">
                <div class="rk-faq-answer-inner">
                    <div class="rk-faq-answer-content">
                        <div class="rk-faq-text">
                            <span class="rk-ans-badge badge-info">Zgodnie z PN-EN 1264</span><br>
                            Zarówno ze względów zdrowotnych, jak i fizyki posadzki, <a href="https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/">optymalna i maksymalna temperatura</a> powierzchni jastrychu (T<sub>surf</sub>) w strefie stałego przebywania ludzi nie może przekraczać <strong>29°C</strong>. W łazienkach dopuszcza się <strong>33°C</strong>, a w <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/">strefach brzegowych</a> (np. przy dużych przeszkleniach) do <strong>35°C</strong>.
                        </div>
                        <svg class="rk-faq-svg" viewBox="0 0 24 24" fill="none" stroke="#0284c7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path></svg>
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-btn">
                3. Czy zbrojenie siatką stalową jest konieczne w anhydrycie?
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-answer-wrapper">
                <div class="rk-faq-answer-inner">
                    <div class="rk-faq-answer-content">
                        <div class="rk-faq-text">
                            <span class="rk-ans-badge badge-info">Brak zbrojenia</span><br>
                            Nie, siatka jest zbędna. Jastrychy anhydrytowe charakteryzują się bardzo wysoką wytrzymałością na zginanie i minimalnym skurczem przestrzennym w trakcie wiązania. W przeciwieństwie do tradycyjnej <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">wylewki betonowej z miksokreta</a>, eliminuje to potrzebę stosowania jakichkolwiek siatek stalowych czy zbrojenia rozproszonego (włókien).
                        </div>
                        <svg class="rk-faq-svg" viewBox="0 0 24 24" fill="none" stroke="#0284c7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line></svg>
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-btn">
                4. Czy wylewka cementowa jest tańsza od anhydrytowej?
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-answer-wrapper">
                <div class="rk-faq-answer-inner">
                    <div class="rk-faq-answer-content">
                        <div class="rk-faq-text">
                            <span class="rk-ans-badge badge-money">Analiza ROI</span><br>
                            Pozornie tak. Sam materiał i <a href="https://projekt-ogrzewania.pl/podlogowka-cena-za-m%c2%b2-robocizny/">robocizna ekipy</a> są tańsze o ok. 15-25%. Jednak biorąc pod uwagę konieczność zakupu zbrojenia, plastyfikatora, dłuższy czas schnięcia (przestoje budowy) oraz – co najważniejsze – wyższe rachunki za ogrzewanie z powodu mniejszej wydajności termicznej, różnica w <a href="https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/">koszcie całkowitym inwestycji</a> zaciera się w ciągu pierwszych 2-3 sezonów grzewczych.
                        </div>
                        <svg class="rk-faq-svg" viewBox="0 0 24 24" fill="none" stroke="#16a34a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="1" x2="12" y2="23"></line><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    </div>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez H-tags w bloku ostrzeżenia)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-faq-core');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif; max-width: 950px; margin: 40px auto;">
                    <div style="font-size: 36px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Ochrona Własności Intelektualnej</div>
                    <div style="font-size: 14px; color: #cbd5e1; line-height: 1.6;">
                        Interaktywny Panel FAQ oraz zintegrowane dane JSON-LD są chronione prawem autorskim serwisu Projekt-Ogrzewania.pl.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Akordeonu
    const faqItems = document.querySelectorAll('.rk-faq-item');

    faqItems.forEach(item => {
        const btn = item.querySelector('.rk-faq-btn');
        
        btn.addEventListener('click', () => {
            // Zamknij wszystkie inne (Opcjonalne - dla zachowania czystości interfejsu)
            faqItems.forEach(otherItem => {
                if (otherItem !== item && otherItem.classList.contains('active')) {
                    otherItem.classList.remove('active');
                }
            });
            
            // Przełącz kliknięty
            item.classList.toggle('active');
        });
    });
    
    // Otwórz pierwsze pytanie domyślnie
    if(faqItems.length > 0) {
        faqItems[0].classList.add('active');
    }
});
</script>



<style>
:root {
    --rk-end-dark: #1e293b;
    --rk-end-primary: #f97316; /* Pomarańcz - ciepło */
    --rk-end-primary-light: #ffedd5;
    --rk-end-accent: #0ea5e9; /* Niebieski - inżynieria */
    --rk-end-bg: #ffffff;
    --rk-end-gray-light: #f1f5f9;
    --rk-end-text: #334155;
    --rk-end-warning: #ef4444;
}

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

/* Header z gradientem ciepła */
.rk-final-header {
    background: linear-gradient(135deg, var(--rk-end-dark) 0%, #0f172a 100%);
    padding: 40px 40px 30px;
    text-align: center;
    position: relative;
    border-bottom: 4px solid var(--rk-end-primary);
}

.rk-final-header h2 {
    color: #ffffff;
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-final-lead {
    color: #cbd5e1;
    font-size: 18px;
    line-height: 1.6;
    max-width: 700px;
    margin: 0 auto;
    font-weight: 300;
}

.rk-final-lead strong {
    color: var(--rk-end-primary);
    font-weight: 700;
}

/* Interaktywny symulator */
.rk-final-sim {
    padding: 40px;
    background: var(--rk-end-gray-light);
}

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

/* Toggle Switch w stylu mobilnym */
.rk-toggle-wrapper {
    display: flex;
    justify-content: center;
    margin-bottom: 35px;
}

.rk-toggle-bg {
    display: flex;
    background: #e2e8f0;
    border-radius: 99px;
    padding: 6px;
    position: relative;
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.05);
}

.rk-toggle-btn {
    padding: 12px 30px;
    border-radius: 99px;
    font-size: 16px;
    font-weight: 700;
    color: #64748b;
    cursor: pointer;
    border: none;
    background: transparent;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    z-index: 2;
}

.rk-toggle-btn.active {
    color: #ffffff;
}

.rk-toggle-pill {
    position: absolute;
    top: 6px;
    bottom: 6px;
    left: 6px;
    width: calc(50% - 6px);
    background: var(--rk-end-primary);
    border-radius: 99px;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 4px 10px -2px rgba(249, 115, 22, 0.5);
    z-index: 1;
}

.state-cement .rk-toggle-pill {
    transform: translateX(100%);
    background: var(--rk-end-dark);
    box-shadow: 0 4px 10px -2px rgba(30, 41, 59, 0.5);
}

/* Obszar danych technicznych i SVG */
.rk-data-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    align-items: center;
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05);
}

.rk-svg-container {
    width: 100%;
    max-width: 300px;
    margin: 0 auto;
}

.anim-heat-wave {
    opacity: 0;
}

/* Animacje Anhydryt - Szybkie oddawanie ciepła */
.state-anhydryt .wave-1 { animation: riseHeat 1.5s infinite 0s; stroke: #f97316; }
.state-anhydryt .wave-2 { animation: riseHeat 1.5s infinite 0.5s; stroke: #fb923c; }
.state-anhydryt .wave-3 { animation: riseHeat 1.5s infinite 1.0s; stroke: #fdba74; }
.state-anhydryt .screed-layer { height: 55px; fill: #ffedd5; transition: all 0.5s; }

/* Animacje Cement - Wolne oddawanie ciepła */
.state-cement .wave-1 { animation: riseHeat 3s infinite 0s; stroke: #94a3b8; }
.state-cement .wave-2 { animation: riseHeat 3s infinite 1s; stroke: #cbd5e1; }
.state-cement .wave-3 { animation: riseHeat 3s infinite 2s; stroke: #e2e8f0; }
.state-cement .screed-layer { height: 65px; fill: #f1f5f9; transition: all 0.5s; }

@keyframes riseHeat {
    0% { transform: translateY(0) scale(0.9); opacity: 0; }
    50% { opacity: 1; }
    100% { transform: translateY(-40px) scale(1.1); opacity: 0; }
}

.rk-tech-stats {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-stat-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-bottom: 10px;
    border-bottom: 1px dashed #cbd5e1;
}

.rk-stat-label {
    font-size: 15px;
    color: var(--rk-end-text);
    font-weight: 500;
}

.rk-stat-value {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-end-dark);
    transition: color 0.3s;
}

.state-anhydryt .val-highlight { color: var(--rk-end-primary); }
.state-cement .val-highlight { color: var(--rk-end-accent); }

/* Sekcja ostrzeżeń i podsumowania tekstu */
.rk-final-content {
    padding: 40px;
}

.rk-warning-box {
    background: #fef2f2;
    border-left: 5px solid var(--rk-end-warning);
    padding: 20px 25px;
    border-radius: 0 12px 12px 0;
    margin-bottom: 30px;
}

.rk-warning-box h4 {
    margin: 0 0 10px 0;
    color: var(--rk-end-warning);
    font-size: 18px;
    font-weight: 800;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-warning-box p {
    margin: 0;
    font-size: 15px;
    color: #7f1d1d;
    line-height: 1.6;
}

.rk-final-text p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-end-text);
    margin: 0 0 20px 0;
}

.rk-final-text a {
    color: var(--rk-end-accent);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Footer / CTA */
.rk-final-footer {
    background: #0f172a;
    padding: 30px 40px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 20px;
}

.rk-signature {
    color: #94a3b8;
    font-size: 16px;
    font-weight: 400;
    font-style: italic;
}

.rk-signature span {
    color: var(--rk-end-primary);
    font-weight: 800;
    font-style: normal;
    display: block;
    font-size: 20px;
    margin-top: 5px;
}

.rk-cta-btn {
    background: var(--rk-end-primary);
    color: #fff;
    padding: 16px 32px;
    border-radius: 12px;
    font-weight: 800;
    text-decoration: none;
    font-size: 16px;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    transition: all 0.3s;
    border: 2px solid transparent;
}

.rk-cta-btn:hover {
    background: #ea580c;
    transform: scale(1.05);
    box-shadow: 0 10px 20px -5px rgba(234, 88, 12, 0.4);
}

@media (max-width: 768px) {
    .rk-data-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-final-header, .rk-final-sim, .rk-final-content { padding: 25px; }
    .rk-final-header h2 { font-size: 24px; }
    .rk-toggle-btn { padding: 10px 20px; font-size: 14px; }
    .rk-final-footer { flex-direction: column; text-align: center; justify-content: center; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/"
    },
    "headline": "Mocne podsumowanie – Wylewka to Twój wymiennik ciepła",
    "description": "Podsumowanie parametrów technicznych wylewek grzejnych. Zobacz, dlaczego grubość jastrychu decyduje o sprawności pompy ciepła i dlaczego błędy są nieodwracalne.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-10",
    "dateModified": "2026-05-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#dataset-wylewki",
    "name": "Parametry Termiczne i Geometryczne Wylewek 2026",
    "description": "Zestawienie optymalnych grubości i parametrów dla wylewki anhydrytowej oraz cementowej w kontekście współpracy z pompami ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jastrych anhydrytowy 55 mm",
      "wylewka cementowa 65 mm",
      "opór cieplny Rλ",
      "badanie wilgotności metodą CM",
      "wymiennik ciepła ogrzewania podłogowego"
    ],
    "measurementTechnique": "Obliczenia na podstawie normy PN-EN 1264 oraz fizyki budowli dla instalacji płaszczyznowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Anhydryt: Grubość całkowita 55mm, wysoka przewodność, niska bezwładność.",
        "Cement: Grubość całkowita 65mm, wyższa bezwładność, wymaga plastyfikatorów i dylatacji."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#webapp-wymiennik",
    "name": "Symulator Wymiennika Ciepła Jastrychu",
    "description": "Interaktywny panel przełączający parametry fizyczne i wizualizację emisji ciepła pomiędzy wylewką anhydrytową a tradycyjnym betonem.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and SVG support",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA
=========================================== -->
<div class="rk-final-container" id="wylewka-sum-app">
    
    <div class="rk-final-header">
        <h2>Mocne podsumowanie</h2>
        <div class="rk-final-lead">
            Wylewka to nie jest tylko „podłoga”. To Twój główny <strong>wymiennik ciepła</strong>, który decyduje o tym, czy Twoja <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" style="color:#fff; text-decoration:underline;">pompa ciepła</a> będzie pracować z maksymalnym COP, czy generować straty rzędu tysięcy złotych rocznie.
        </div>
    </div>

    <!-- Symulator Wymiennika -->
    <div class="rk-final-sim" id="rkSimCore">
        <h3>Symulacja parametrów na 2026 rok</h3>
        
        <div class="rk-toggle-wrapper">
            <div class="rk-toggle-bg">
                <div class="rk-toggle-pill"></div>
                <button class="rk-toggle-btn active" data-type="anhydryt">Anhydryt (Płynny)</button>
                <button class="rk-toggle-btn" data-type="cement">Cement (Miksokret)</button>
            </div>
        </div>

        <div class="rk-data-grid">
            <!-- Interaktywny przekrój podłogi -->
            <div class="rk-svg-container">
                <svg viewBox="0 0 200 150" xmlns="http://www.w3.org/2000/svg">
                    <!-- Fale ciepła -->
                    <path class="anim-heat-wave wave-1" d="M40,70 Q50,40 40,10" fill="none" stroke-width="3" stroke-linecap="round"/>
                    <path class="anim-heat-wave wave-2" d="M100,70 Q110,40 100,10" fill="none" stroke-width="3" stroke-linecap="round"/>
                    <path class="anim-heat-wave wave-3" d="M160,70 Q170,40 160,10" fill="none" stroke-width="3" stroke-linecap="round"/>
                    
                    <!-- Okładzina wierzchnia -->
                    <rect x="10" y="75" width="180" height="8" fill="#e5e7eb" rx="2" />
                    
                    <!-- Warstwa Jastrychu (Wysokość dynamiczna z CSS) -->
                    <rect class="screed-layer" x="10" y="83" width="180" rx="2" />
                    
                    <!-- Rury PEX -->
                    <circle cx="40" cy="115" r="8" fill="#ef4444" stroke="#ffffff" stroke-width="2"/>
                    <circle cx="100" cy="115" r="8" fill="#ef4444" stroke="#ffffff" stroke-width="2"/>
                    <circle cx="160" cy="115" r="8" fill="#ef4444" stroke="#ffffff" stroke-width="2"/>
                    
                    <!-- Izolacja EPS -->
                    <rect x="10" y="138" width="180" height="12" fill="#cbd5e1" rx="2"/>
                </svg>
            </div>

            <!-- Zmienne Dane -->
            <div class="rk-tech-stats">
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Rekomendowana grubość</span>
                    <span class="rk-stat-value val-highlight" id="val-thickness">55 mm</span>
                </div>
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Nadlewka nad rurą (sd)</span>
                    <span class="rk-stat-value" id="val-sd">min. 35 mm</span>
                </div>
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Opór cieplny Rλ</span>
                    <span class="rk-stat-value" id="val-r">Bardzo niski</span>
                </div>
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Gotowość do wygrzewania</span>
                    <span class="rk-stat-value" id="val-time">Po 7 dniach</span>
                </div>
            </div>
        </div>
    </div>

    <!-- Treść merytoryczna -->
    <div class="rk-final-content">
        <div class="rk-warning-box">
            <h4>
                <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="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>
                Ryzyko błędu jest nieodwracalne
            </h4>
            <p>Błąd na etapie wylewki jest praktycznie nieusuwalny bez kucia całego parteru. Dlatego <strong>zawsze wymagaj od wykonawcy protokołu z wygrzewania technologicznego</strong> oraz twardego sprawdzenia wilgotności metodą CM (karbidową) przed montażem docelowych okładzin posadzkowych.</p>
        </div>

        <div class="rk-final-text">
            <p>Jeśli masz wątpliwości, zajrzyj do swojego projektu instalacji ogrzewania. To tam powinny być czarno na białym określone parametry oporu cieplnego (Rλ) niezbędne dla optymalnego przepływu energii w Twoim budynku.</p>
            <p>Zastanawiasz się, która opcja będzie idealna dla Twojej inwestycji? Porównaj parametry fizyczne, używając narzędzi inżynierskich dostępnych w naszej bazie wiedzy.</p>
        </div>
    </div>

    <!-- Stopka CTA -->
    <div class="rk-final-footer">
        <div class="rk-signature">
            Masz pytania o konkretną mieszankę? Jako inżynier powtarzam:
            <span>BUDUJ BEZ ŚCIEMY, LICZ Z FIZYKĄ.</span>
        </div>
        <a href="https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/" class="rk-cta-btn">
            Uruchom Kalkulatory
            <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><polyline points="12 16 16 12 12 8"></polyline><line x1="8" y1="12" x2="16" y2="12"></line></svg>
        </a>
    </div>
</div>

<!-- ==========================================
     LOGIKA JS I ZABEZPIECZENIE (DOMAIN LOCK)
=========================================== -->
<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez nagłówków H2/H3)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('wylewka-sum-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif; max-width: 950px; margin: 40px auto;">
                    <div style="font-size: 36px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Naruszenie Praw Autorskich</div>
                    <div style="font-size: 14px; color: #cbd5e1; max-width: 500px; margin: 0 auto; line-height: 1.6;">
                        Kontener interaktywny "Symulator Wymiennika" oraz struktura JSON-LD są własnością serwisu Projekt-Ogrzewania.pl. Wykryto próbę uruchomienia skryptu na nieautoryzowanej domenie.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Toggle / Symulatora
    const simCore = document.getElementById('rkSimCore');
    const buttons = document.querySelectorAll('.rk-toggle-btn');
    
    // Pola tekstowe do podmiany
    const vThick = document.getElementById('val-thickness');
    const vSd = document.getElementById('val-sd');
    const vR = document.getElementById('val-r');
    const vTime = document.getElementById('val-time');

    // Domyślny stan
    simCore.classList.add('state-anhydryt');

    buttons.forEach(btn => {
        btn.addEventListener('click', function() {
            const type = this.getAttribute('data-type');
            
            // UI Toggle
            buttons.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            // Zmiana klas kontenera animacji
            simCore.classList.remove('state-anhydryt', 'state-cement');
            simCore.classList.add('state-' + type);

            // Zmiana danych
            if(type === 'anhydryt') {
                vThick.textContent = '55 mm';
                vSd.textContent = 'min. 35 mm';
                vR.textContent = 'Bardzo niski';
                vTime.textContent = 'Po 7 dniach';
            } else {
                vThick.textContent = '65 mm';
                vSd.textContent = 'min. 45 mm';
                vR.textContent = 'Większy (bufor)';
                vTime.textContent = 'Po 28 dniach';
            }
        });
    });
});
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-primary: #0284c7; /* Inżynierski niebieski */
    --rk-dl-accent: #f59e0b; /* Akcent złoty */
    --rk-dl-bg: #ffffff;
    --rk-dl-surface: #f8fafc;
    --rk-dl-border: #e2e8f0;
    --rk-dl-text: #334155;
}

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

/* Nagłówek Sekcji */
.rk-dl-header {
    padding: 45px 50px 30px;
    background: linear-gradient(135deg, var(--rk-dl-dark) 0%, #1e293b 100%);
    color: #ffffff;
    text-align: center;
}

.rk-dl-title {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-dl-intro {
    font-size: 17px;
    line-height: 1.6;
    color: #94a3b8;
    max-width: 750px;
    margin: 0 auto;
}

.rk-dl-intro strong {
    color: var(--rk-dl-accent);
}

/* Interaktywna Przeglądarka z Lupą */
.rk-dl-viewer {
    padding: 40px;
    background: var(--rk-dl-surface);
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-viewer-box {
    position: relative;
    width: 100%;
    max-width: 600px;
    background: #fff;
    border-radius: 16px;
    box-shadow: 0 10px 30px rgba(0,0,0,0.1);
    overflow: hidden;
    cursor: zoom-in;
    border: 1px solid var(--rk-dl-border);
}

.rk-infographic-img {
    width: 100%;
    height: auto;
    display: block;
    transition: transform 0.3s ease;
}

/* Lupa */
.rk-magnifier {
    position: absolute;
    width: 150px;
    height: 150px;
    border-radius: 50%;
    border: 4px solid #fff;
    box-shadow: 0 0 20px rgba(0,0,0,0.3);
    background-repeat: no-repeat;
    display: none;
    pointer-events: none;
    z-index: 10;
}

/* Przyciski Pobierania */
.rk-dl-dashboard {
    padding: 40px 50px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    background: #ffffff;
}

.rk-dl-card {
    background: var(--rk-dl-surface);
    border: 1px solid var(--rk-dl-border);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    transition: transform 0.3s, border-color 0.3s;
}

.rk-dl-card:hover {
    transform: translateY(-5px);
    border-color: var(--rk-dl-primary);
}

.rk-card-icon {
    width: 48px;
    height: 48px;
    background: #fff;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-dl-primary);
    margin-bottom: 20px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

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

.rk-card-desc {
    font-size: 14px;
    color: #64748b;
    line-height: 1.5;
    margin-bottom: 20px;
}

.rk-btn-action {
    width: 100%;
    padding: 14px;
    background: var(--rk-dl-primary);
    color: #fff;
    text-align: center;
    border-radius: 10px;
    font-weight: 800;
    text-decoration: none;
    font-size: 15px;
    transition: all 0.3s;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

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

.rk-btn-pdf {
    background: #ef4444;
}

.rk-btn-pdf:hover {
    background: #dc2626;
}

@media (max-width: 768px) {
    .rk-dl-dashboard { grid-template-columns: 1fr; padding: 30px 20px; }
    .rk-dl-header { padding: 30px 20px; }
    .rk-dl-title { font-size: 22px; }
    .rk-viewer-box { cursor: default; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#article-infografika",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/"
    },
    "headline": "Kompletna infografika: Wylewka na ogrzewanie podłogowe",
    "description": "Pobierz inżynierski przewodnik po jastrychach. Zobacz warstwy systemu, czasy schnięcia i harmonogram wygrzewania technologicznego na jednej, czytelnej grafice.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Wylewka-na-ogrzewanie-podlogowe-–-kompletny-przewodnik.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-02-18",
    "dateModified": "2026-05-10"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#dataset-przewodnik",
    "name": "Wytyczne Inżynierskie dla Wylewek Podłogowych 2026",
    "description": "Dane znormalizowane dotyczące grubości (5-7 cm), czasów schnięcia (7-28 dni) oraz krzywej wygrzewania posadzki grzejnej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "grubość wylewki 5-7 cm",
      "czas schnięcia betonu 28 dni",
      "schnięcie anhydrytu 7-14 dni",
      "warstwy ogrzewania podłogowego",
      "pobierz pdf wygrzewanie posadzki"
    ],
    "measurementTechnique": "Zbiór danych technicznych z infografiki opartej na normie PN-EN 1264 i fizyce budowli.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Optymalna grubość nad instalacją: 5-7 cm[cite: 5].",
        "Czas schnięcia Anhydryt: 7-14 dni[cite: 58].",
        "Czas schnięcia Beton: 21-28 dni[cite: 60].",
        "Faza wygrzewania: 20°C do 50°C ."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#webapp-infoviewer",
    "name": "Interaktywny Podgląd Dokumentacji Technicznej",
    "description": "Narzędzie pozwalające na powiększenie i analizę warstw instalacji podłogowej przed pobraniem schematu w wersji PDF.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and high-res image support",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-dl-container" id="rk-download-app">
    
    <div class="rk-dl-header">
        <h2 class="rk-dl-title">Pobierz Przewodnik Inżynierski</h2>
        <p class="rk-dl-intro">
            Zasady są proste: <strong>licz z fizyką, buduj bez ściemy.</strong> Przygotowałem dla Ciebie kompletny schemat, który możesz zabrać na budowę i pokazać swojemu wykonawcy. To Twoje ubezpieczenie przed błędami, których nie da się naprawić po wylaniu betonu.
        </p>
    </div>

    <div class="rk-dl-viewer">
        <div class="rk-viewer-box" id="rkViewer">
            <div id="rkMagnifier" class="rk-magnifier"></div>
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Wylewka-na-ogrzewanie-podlogowe-–-kompletny-przewodnik.webp" alt="Infografika Wylewka na ogrzewanie podłogowe – kompletny przewodnik" class="rk-infographic-img" id="rkMainImg">
        </div>
        <p style="margin-top: 15px; font-size: 13px; color: #64748b; font-weight: 600;">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="vertical-align: middle; margin-right: 5px;"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line></svg>
            Najechać na grafikę, aby powiększyć detale 
        </p>
    </div>

    <div class="rk-dl-dashboard">
        <div class="rk-dl-card">
            <div class="rk-card-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="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>
            <h3 class="rk-card-title">Wersja Graficzna (WEBP)</h3>
            <p class="rk-card-desc">Idealna do szybkiego podglądu na smartfonie. Wysoka rozdzielczość, lekki format.</p>
            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Wylewka-na-ogrzewanie-podlogowe-–-kompletny-przewodnik.webp" download class="rk-btn-action">
                Pobierz Obraz (HD)
                <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="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
            </a>
        </div>

        <div class="rk-dl-card">
            <div class="rk-card-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#ef4444" 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>
            <h3 class="rk-card-title">Format Drukarski (PDF)</h3>
            <p class="rk-card-desc">Wersja wektorowa do wydruku w formacie A3/A4. Niezbędna dokumentacja na placu budowy.</p>
            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Wylewka-na-ogrzewanie-podlogowe-–-kompletny-przewodnik.pdf" download class="rk-btn-action rk-btn-pdf">
                Pobierz Dokument PDF
                <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="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
            </a>
        </div>
    </div>
    
    <div style="background: #f1f5f9; padding: 20px 50px; border-top: 1px solid var(--rk-dl-border); text-align: center;">
        <p style="font-size: 14px; color: #475569; margin: 0;">
            Potrzebujesz obliczeń pod konkretny metraż? Użyj naszego <a href="https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/" style="color: var(--rk-dl-primary); font-weight: 700; text-decoration: underline;">Kalkulatora Inżynierskiego</a>.
        </p>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Dyskretne zabezpieczenie domenowe (bez znaczników H)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-download-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif; max-width: 950px; margin: 40px auto;">
                    <div style="font-size: 36px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Zasoby Zastrzeżone</div>
                    <div style="font-size: 14px; color: #cbd5e1; line-height: 1.6;">
                        Interaktywne Centrum Pobierania oraz schematy techniczne stanowią własność Projekt-Ogrzewania.pl. Wykryto próbę kradzieży kodu na nieautoryzowanej domenie.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Lupy (Magnifier)
    const viewer = document.getElementById('rkViewer');
    const mainImg = document.getElementById('rkMainImg');
    const magnifier = document.getElementById('rkMagnifier');

    if (viewer && magnifier && window.innerWidth > 768) {
        viewer.addEventListener('mousemove', function(e) {
            magnifier.style.display = 'block';
            
            const rect = viewer.getBoundingClientRect();
            const x = e.pageX - rect.left - window.scrollX;
            const y = e.pageY - rect.top - window.scrollY;

            // Pozycjonowanie lupy
            magnifier.style.left = (x - magnifier.offsetWidth / 2) + 'px';
            magnifier.style.top = (y - magnifier.offsetHeight / 2) + 'px';

            // Pozycjonowanie tła lupy (powiększenie 2x)
            const zoom = 2;
            magnifier.style.backgroundImage = `url('${mainImg.src}')`;
            magnifier.style.backgroundSize = (mainImg.width * zoom) + "px " + (mainImg.height * zoom) + "px";
            magnifier.style.backgroundPosition = "-" + ((x * zoom) - magnifier.offsetWidth / 2) + "px -" + ((y * zoom) - magnifier.offsetHeight / 2) + "px";
        });

        viewer.addEventListener('mouseleave', () => magnifier.style.display = 'none');
    }
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">Wylewka na ogrzewanie podłogowe – kompletny przewodnik.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Czy trzeba mieć projekt na ogrzewanie podłogowe?</title>
		<link>https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/</link>
					<comments>https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 09 Feb 2025 10:59:16 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Montaż ogrzewania]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Oszczędność energii]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Technologie budowlane]]></category>
		<category><![CDATA[dokumentacja techniczna]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[montaż ogrzewania]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[porady budowlane]]></category>
		<category><![CDATA[projekt podłogówki]]></category>
		<category><![CDATA[remont domu]]></category>
		<category><![CDATA[systemy grzewcze]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2146</guid>

					<description><![CDATA[<p>Planujesz montaż ogrzewania podłogowego i zastanawiasz się, czy potrzebujesz profesjonalnego projektu? W artykule „Czy trzeba mieć projekt na ogrzewanie podłogowe?” znajdziesz odpowiedzi na wszystkie nurtujące pytania. Dowiesz się, dlaczego dokumentacja techniczna to klucz do efektywnego systemu grzewczego, jakie są koszty braku projektu oraz gdzie zamówić go za darmo. Poznasz również praktyczne przykłady i porady, które pomogą Ci uniknąć błędów. Sprawdź, jak zaoszczędzić energię i zapewnić sobie komfort na lata!</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/">Czy trzeba mieć projekt na ogrzewanie podłogowe?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-primary: #0284c7;
    --rk-intro-bg: #ffffff;
    --rk-intro-surface: #f8fafc;
    --rk-intro-border: #e2e8f0;
    --rk-intro-text: #334155;
    --rk-intro-danger: #ef4444;
    --rk-intro-success: #10b981;
    --rk-intro-gold: #d97706;
}

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

/* Układ główny */
.rk-intro-layout {
    display: grid;
    grid-template-columns: 1fr 380px;
    background: var(--rk-intro-bg);
}

/* Lewa Kolumna - Hook i Szybka Odpowiedź */
.rk-intro-main {
    padding: 40px 50px;
    background: #ffffff;
    border-right: 1px solid var(--rk-intro-border);
}

.rk-intro-header {
    display: flex;
    align-items: center;
    gap: 20px;
    margin-bottom: 25px;
    padding-bottom: 25px;
    border-bottom: 2px solid var(--rk-intro-surface);
}

.rk-intro-author-img {
    width: 70px;
    height: 70px;
    border-radius: 50%;
    border: 3px solid var(--rk-intro-primary);
    object-fit: cover;
    flex-shrink: 0;
}

.rk-intro-header-text h2 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-intro-dark);
    margin: 0 0 5px 0;
    line-height: 1.2;
}

.rk-intro-header-text p {
    font-size: 14px;
    font-weight: 700;
    color: #64748b;
    margin: 0;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

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

.rk-intro-hook strong {
    color: var(--rk-intro-danger);
    font-weight: 800;
}

/* Quick Answer Box */
.rk-quick-answer {
    background: #f0f9ff;
    border-left: 5px solid var(--rk-intro-primary);
    padding: 25px 30px;
    border-radius: 0 12px 12px 0;
}

.rk-qa-title {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    font-weight: 900;
    color: var(--rk-intro-primary);
    text-transform: uppercase;
    margin: 0 0 10px 0;
}

.rk-qa-text {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-intro-dark);
    margin: 0;
    font-weight: 600;
}

/* Prawa Kolumna - Agenda i Długi Ogon */
.rk-intro-agenda {
    background: var(--rk-intro-surface);
    padding: 40px 30px;
    display: flex;
    flex-direction: column;
}

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

.rk-agenda-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-bottom: 30px;
}

.rk-agenda-item {
    background: #ffffff;
    border: 1px solid var(--rk-intro-border);
    border-radius: 12px;
    overflow: hidden;
}

.rk-agenda-btn {
    width: 100%;
    text-align: left;
    padding: 16px 20px;
    background: transparent;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-intro-dark);
    transition: background 0.2s;
}

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

.rk-agenda-btn.active {
    background: var(--rk-intro-primary);
    color: #ffffff;
}

.rk-agenda-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-intro-primary);
}

.rk-agenda-btn.active .rk-agenda-icon {
    color: #ffffff;
}

.rk-agenda-content {
    display: none;
    padding: 0 20px 20px 52px;
    font-size: 13px;
    line-height: 1.6;
    color: #64748b;
    border-top: 1px solid transparent;
}

.rk-agenda-btn.active + .rk-agenda-content {
    display: block;
    background: var(--rk-intro-primary);
    color: #e0f2fe;
}

/* Kluczowe zagadnienia (Długi Ogon w prawej kolumnie) */
.rk-related-topics {
    margin-top: auto; /* Wypycha na dół prawej kolumny */
    padding-top: 25px;
    border-top: 1px dashed var(--rk-intro-border);
}

.rk-related-title {
    font-size: 13px;
    font-weight: 800;
    color: #94a3b8;
    text-transform: uppercase;
    margin: 0 0 15px 0;
    letter-spacing: 0.5px;
}

.rk-related-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.rk-related-tag {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-intro-primary);
    background: #e0f2fe;
    padding: 6px 12px;
    border-radius: 6px;
    border: 1px solid #bae6fd;
    transition: all 0.2s ease;
}

.rk-related-tag:hover {
    background: var(--rk-intro-primary);
    color: #ffffff;
    border-color: var(--rk-intro-primary);
}

/* RWD - Mobile */
@media (max-width: 768px) {
    .rk-intro-layout { grid-template-columns: 1fr; }
    .rk-intro-main { padding: 30px 20px; border-right: none; border-bottom: 1px solid var(--rk-intro-border); }
    .rk-intro-header { flex-direction: column; text-align: center; gap: 15px; }
    .rk-intro-agenda { padding: 30px 20px; }
    .rk-quick-answer { padding: 20px; }
    .rk-agenda-content { padding-left: 20px; }
    .rk-related-topics { margin-top: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/"
    },
    "headline": "Czy trzeba mieć projekt na ogrzewanie podłogowe?",
    "description": "Zgodnie z Prawem Budowlanym projekt nie jest wymogiem do pozwolenia, jednak bez obliczeń inżynierskich OZC i spełnienia norm WT 2021 instalacja wygeneruje ogromne koszty.",
    "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-14",
    "dateModified": "2026-06-14"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#dataset-wstep",
    "name": "Zestawienie ryzyk i wymogów instalacyjnych HVAC",
    "description": "Baza danych określająca skutki prawne, finansowe i techniczne montażu instalacji ogrzewania płaszczyznowego bez oparcia o normatywny projekt wykonawczy.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "czy trzeba mieć projekt na ogrzewanie podłogowe",
      "weryfikacja projektu instalacji grzewczej",
      "wymagania warunków technicznych wt 2021 ogrzewanie",
      "projektowe obciążenie cieplne ozc",
      "wymogi dotacji czyste powietrze",
      "norma PN-EN 12831 w podłogówce",
      "zrównoważenie hydrauliczne rotametry",
      "maksymalna długość pętli ogrzewania"
    ],
    "measurementTechnique": "Weryfikacja rygorów technicznych w oparciu o normę PN-EN 1264 oraz Prawo Budowlane w aspekcie uzyskania odbioru technicznego i dofinansowań.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Prawo Budowlane: Brak formalnego wymogu do PNB, ale obowiązek dostosowania do WT 2021 (wskaźnik EP).",
        "Odbiór i dotacje: Brak OZC i protokołów zrównoważenia wyklucza odbiór kierownika budowy oraz blokuje wypłatę Czystego Powietrza.",
        "Ryzyko eksploatacyjne: Pozorna oszczędność 300-500 PLN prowadzi do drastycznego spadku sprawności pompy ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#webapp-wstep",
    "name": "Interaktywny Nawigator Merytoryczny (Agenda)",
    "description": "Moduł wprowadzający ułatwiający czytelnikowi nawigację po zaawansowanych narzędziach inżynierskich, z uwzględnieniem zagadnień z długiego ogona SEO.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and CSS3",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container">
    <div class="rk-intro-layout">
        
        <!-- Lewa Kolumna (Hook i TL;DR) -->
        <div class="rk-intro-main">
            <div class="rk-intro-header">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Ekspert HVAC" class="rk-intro-author-img">
                <div class="rk-intro-header-text">
                    <h2>Czy trzeba mieć projekt na ogrzewanie podłogowe?</h2>
                    <p>Weryfikacja specjalisty – Robert Kucharski</p>
                </div>
            </div>

            <p class="rk-intro-hook">
                Inwestorzy na etapie stanu surowego zadają sobie jedno kluczowe pytanie: zlecić profesjonalną dokumentację, czy zaufać &#8222;wieloletniemu doświadczeniu&#8221; hydraulika? Pozorna oszczędność rzędu 300–500 PLN na odrzuceniu dokumentacji to <strong>najdroższy błąd, jaki możesz popełnić na swojej budowie</strong>, który będzie drenował Twój portfel przez kolejne 30 lat.
            </p>

            <div class="rk-quick-answer">
                <div class="rk-qa-title">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>
                    Szybka Odpowiedź (TL;DR)
                </div>
                <p class="rk-qa-text">
                    Zgodnie z Prawem Budowlanym projekt nie jest wymogiem do uzyskania pozwolenia na budowę. Jednak bez inżynierskiego obliczenia OZC nie spełnisz norm prawnych <strong>WT 2021</strong>, kierownik budowy może odmówić odbioru technicznego, a Ty bezpowrotnie <strong>stracisz prawo do dotacji</strong> (Czyste Powietrze, Moje Ciepło) z powodu braku dowodów na zrównoważenie hydrauliczne instalacji.
                </p>
            </div>
        </div>

        <!-- Prawa Kolumna (Narzędzia / Agenda) -->
        <div class="rk-intro-agenda">
            <h3 class="rk-agenda-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="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>
                Co sprawdzisz w poradniku?
            </h3>
            
            <div class="rk-agenda-list" id="introAgendaList">
                
                <div class="rk-agenda-item">
                    <button class="rk-agenda-btn active">
                        <div class="rk-agenda-icon">
                            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line></svg>
                        </div>
                        Kalkulator Inwestycyjny (ROI)
                    </button>
                    <div class="rk-agenda-content">
                        Poniżej znajdziesz interaktywne zestawienie kosztów. Przekonasz się na twardych liczbach, jak szybko zwraca się zakup projektu.
                    </div>
                </div>

                <div class="rk-agenda-item">
                    <button class="rk-agenda-btn">
                        <div class="rk-agenda-icon">
                            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4M12 8h.01"></path></svg>
                        </div>
                        Algorytm Oporów Pętli
                    </button>
                    <div class="rk-agenda-content">
                        Udostępniamy inżynierski suwak. Sprawdzisz samodzielnie, w którym momencie zbyt długa pętla zablokuje przepływ wody.
                    </div>
                </div>

                <div class="rk-agenda-item">
                    <button class="rk-agenda-btn">
                        <div class="rk-agenda-icon">
                            <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="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                        </div>
                        Symulator Kosztów Prądu
                    </button>
                    <div class="rk-agenda-content">
                        Narzędzie pokazujące wpływ błędu instalatora na krzywą grzewczą pompy ciepła i drastyczny spadek wskaźnika COP.
                    </div>
                </div>

                <div class="rk-agenda-item">
                    <button class="rk-agenda-btn">
                        <div class="rk-agenda-icon">
                            <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>
                        </div>
                        Case Study inwestora
                    </button>
                    <div class="rk-agenda-content">
                        Na przykładzie budowy Pani Janiny wprost rozprawiamy się z absurdalnymi zaleceniami, z jakimi inwestorzy spotykają się na budowach.
                    </div>
                </div>

            </div>

            <!-- Zagospodarowanie pustej przestrzeni (Długi ogon SEO) -->
            <div class="rk-related-topics">
                <h4 class="rk-related-title">Kluczowe zagadnienia techniczne:</h4>
                <div class="rk-related-tags">
                    <span class="rk-related-tag">Obliczenia OZC</span>
                    <span class="rk-related-tag">Norma PN-EN 1264</span>
                    <span class="rk-related-tag">Zrównoważenie hydrauliczne</span>
                    <span class="rk-related-tag">Efektywność COP</span>
                    <span class="rk-related-tag">Straty ciśnienia</span>
                </div>
            </div>

        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const agendaBtns = document.querySelectorAll('.rk-agenda-btn');

    agendaBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            const isActive = this.classList.contains('active');
            
            // Zamknij wszystkie
            agendaBtns.forEach(b => b.classList.remove('active'));
            
            // Otwórz kliknięty, o ile nie był już aktywny
            if (!isActive) {
                this.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-law-dark: #0f172a;
    --rk-law-primary: #0284c7;
    --rk-law-bg: #ffffff;
    --rk-law-surface: #f8fafc;
    --rk-law-border: #e2e8f0;
    --rk-law-text: #334155;
    --rk-law-danger: #ef4444;
    --rk-law-danger-bg: #fef2f2;
    --rk-law-success: #10b981;
    --rk-law-success-bg: #ecfdf5;
    --rk-law-gold: #d97706;
}

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

/* Nagłówek */
.rk-law-header {
    padding: 35px 40px;
    background: var(--rk-law-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-law-gold);
    position: relative;
    overflow: hidden;
}

.rk-law-header::after {
    content: '';
    position: absolute;
    right: -20px;
    top: -20px;
    width: 150px;
    height: 150px;
    background: radial-gradient(circle, rgba(217,119,6,0.15) 0%, rgba(217,119,6,0) 70%);
}

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

.rk-law-header h2 svg {
    color: var(--rk-law-gold);
    flex-shrink: 0;
}

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

/* Układ główny - Jedna kolumna */
.rk-law-interactive {
    padding: 40px;
    background: var(--rk-law-surface);
    display: flex;
    flex-direction: column;
    align-items: center;
    border-bottom: 1px solid var(--rk-law-border);
}

/* Przełącznik opcji */
.rk-law-toggle-wrapper {
    display: flex;
    background: #e2e8f0;
    padding: 6px;
    border-radius: 16px;
    margin-bottom: 40px;
    width: 100%;
    max-width: 650px;
    position: relative;
}

.rk-law-toggle-btn {
    flex: 1;
    padding: 16px 20px;
    border: none;
    background: transparent;
    font-size: 15px;
    font-weight: 800;
    color: #64748b;
    border-radius: 12px;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.rk-law-toggle-btn.active[data-audit="fail"] {
    color: var(--rk-law-danger);
    background: #ffffff;
    box-shadow: 0 4px 10px rgba(239, 68, 68, 0.15);
}

.rk-law-toggle-btn.active[data-audit="pass"] {
    color: var(--rk-law-success);
    background: #ffffff;
    box-shadow: 0 4px 10px rgba(16, 185, 129, 0.15);
}

.rk-law-toggle-icon {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    border: 2px solid currentColor;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.rk-law-toggle-btn.active .rk-law-toggle-icon::after {
    content: '';
    width: 8px;
    height: 8px;
    background: currentColor;
    border-radius: 50%;
}

/* Wizualizacja dokumentu i pieczątki */
.rk-law-doc-container {
    position: relative;
    width: 160px;
    height: 180px;
    margin-bottom: 30px;
}

.rk-law-doc-svg {
    width: 100%;
    height: 100%;
    filter: drop-shadow(0 15px 25px rgba(0,0,0,0.08));
    overflow: visible; /* Zapobiega ucinaniu pieczątki */
}

/* Animacja Pieczątek z efektem uderzenia */
.rk-doc-stamp {
    transform-origin: center;
    transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.state-fail .rk-doc-stamp-fail {
    opacity: 1;
    transform: scale(1) rotate(-15deg);
}
.state-fail .rk-doc-stamp-pass { 
    opacity: 0; 
    transform: scale(3) translateY(-30px); 
}

.state-pass .rk-doc-stamp-pass {
    opacity: 1;
    transform: scale(1) rotate(10deg);
}
.state-pass .rk-doc-stamp-fail { 
    opacity: 0; 
    transform: scale(3) translateY(-30px); 
}

/* Wyniki - Paragrafy prawne */
.rk-law-articles {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    width: 100%;
    max-width: 750px;
}

.rk-article-item {
    background: #ffffff;
    padding: 20px;
    border-radius: 12px;
    border-top: 4px solid var(--rk-law-border);
    transition: all 0.4s ease;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.state-fail .rk-article-item {
    border-top-color: var(--rk-law-danger);
    background: var(--rk-law-danger-bg);
}

.state-pass .rk-article-item {
    border-top-color: var(--rk-law-success);
    background: var(--rk-law-success-bg);
}

.rk-article-title {
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    color: #64748b;
    margin: 0 0 8px 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.rk-article-status {
    font-weight: 900;
    font-size: 14px;
    padding: 2px 8px;
    border-radius: 6px;
    background: #ffffff;
}
.state-fail .rk-article-status { color: var(--rk-law-danger); }
.state-pass .rk-article-status { color: var(--rk-law-success); }

.rk-article-desc {
    font-size: 15px;
    color: var(--rk-law-dark);
    margin: 0;
    font-weight: 600;
    line-height: 1.5;
}

/* Sekcja Tekstowa */
.rk-law-text-section {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-law-text-section p {
    font-size: 16px;
    line-height: 1.8;
    color: var(--rk-law-text);
    margin: 0 0 20px 0;
}

.rk-law-text-section p:last-child {
    margin-bottom: 0;
}

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

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

.rk-law-text-section a:hover {
    color: #0369a1;
    border-bottom-color: #0369a1;
}

/* RWD - Mobile */
@media (max-width: 768px) {
    .rk-law-header { padding: 30px 20px; }
    .rk-law-header h2 { font-size: 22px; }
    
    .rk-law-interactive { padding: 30px 20px; }
    .rk-law-toggle-wrapper { flex-direction: column; padding: 4px; gap: 4px; }
    .rk-law-toggle-btn { padding: 14px; }
    
    .rk-law-articles { grid-template-columns: 1fr; gap: 15px; }
    .rk-law-text-section { padding: 30px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#article-prawo",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/"
    },
    "headline": "Czy projekt ogrzewania podłogowego jest wymagany przez prawo budowlane?",
    "description": "Audyt prawny instalacji HVAC. Sprawdź, dlaczego zgodnie z art. 34 Prawa Budowlanego i § 134 WT projekt techniczny OZC jest niezbędny do odbioru budynku.",
    "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-14",
    "dateModified": "2026-06-14"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#dataset-prawo",
    "name": "Wymogi Prawne i Normatywne dla Instalacji Ogrzewania Podłogowego",
    "description": "Zestawienie regulacji prawnych określających legalność i techniczne parametry odbiorowe instalacji grzewczych w nowo powstających obiektach budowlanych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "czy do ogrzewania podłogowego potrzebny jest projekt",
      "zgłoszenie zakończenia budowy ogrzewanie",
      "prawo budowlane projekt techniczny instalacji",
      "norma pn-en 12831 w podłogówce",
      "odbiór budynku z pompą ciepła"
    ],
    "measurementTechnique": "Weryfikacja zgodności parametrów projektowych (OZC) z aktami prawnymi (Prawo Budowlane, Warunki Techniczne WT 2021) na etapie odbioru kierownika budowy.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Art. 34 ust. 3 pkt 3 lit. b Prawa Budowlanego: Obowiązek posiadania projektu technicznego z rozwiązaniami instalacyjnymi.",
        "Warunki Techniczne § 134 ust. 1: Nakaz instalowania urządzeń dostosowanych do obliczeniowego zapotrzebowania na ciepło.",
        "Norma PN-EN ISO 12831: Metodologia obliczania projektowego obciążenia cieplnego (OZC)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#webapp-prawo",
    "name": "Symulator Odbioru Budowlanego Instalacji",
    "description": "Interaktywne narzędzie audytowe demonstrujące konsekwencje braku dokumentacji projektowej w zderzeniu z wymogami Prawa Budowlanego podczas urzędowego odbioru budynku.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-law-container">
    <div class="rk-law-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="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path>
                <path d="M12 8v4"></path>
                <path d="M12 16h.01"></path>
            </svg>
            Czy projekt jest wymagany przez prawo budowlane?
        </h2>
        <p>Wykonanie instalacji &#8222;z pamięci&#8221; to nie tylko błąd techniczny, ale również bezpośrednie złamanie obowiązujących przepisów i Warunków Technicznych.</p>
    </div>

    <div class="rk-law-interactive state-fail" id="uiLawAuditPanel">
        
        <div class="rk-law-toggle-wrapper">
            <button class="rk-law-toggle-btn active" data-audit="fail" id="btnAuditFail">
                <div class="rk-law-toggle-icon"></div>
                Instalacja z pamięci (Brak OZC)
            </button>
            <button class="rk-law-toggle-btn" data-audit="pass" id="btnAuditPass">
                <div class="rk-law-toggle-icon"></div>
                Pełen projekt wykonawczy
            </button>
        </div>

        <div class="rk-law-doc-container">
            <svg class="rk-law-doc-svg" viewBox="0 0 120 150" fill="none" style="overflow: visible;">
                <path d="M15 10 L105 10 C 110 10 115 15 115 20 L115 130 C 115 135 110 140 105 140 L15 140 C 10 140 5 135 5 130 L5 20 C 5 15 10 10 15 10 Z" fill="#ffffff" stroke="var(--rk-law-border)" stroke-width="4"/>
                
                <line x1="25" y1="35" x2="65" y2="35" stroke="#cbd5e1" stroke-width="4" stroke-linecap="round"/>
                <line x1="25" y1="55" x2="95" y2="55" stroke="#cbd5e1" stroke-width="3" stroke-linecap="round"/>
                <line x1="25" y1="70" x2="80" y2="70" stroke="#cbd5e1" stroke-width="3" stroke-linecap="round"/>
                <line x1="25" y1="85" x2="95" y2="85" stroke="#cbd5e1" stroke-width="3" stroke-linecap="round"/>
                <line x1="25" y1="100" x2="60" y2="100" stroke="#cbd5e1" stroke-width="3" stroke-linecap="round"/>
                
                <g transform="translate(60, 85)">
                    <g class="rk-doc-stamp rk-doc-stamp-fail">
                        <rect x="-45" y="-18" width="90" height="36" fill="#ffffff" stroke="var(--rk-law-danger)" stroke-width="4" rx="4"/>
                        <text x="0" y="6" font-family="Arial" font-size="13" font-weight="900" fill="var(--rk-law-danger)" text-anchor="middle">ODRZUCONE</text>
                    </g>

                    <g class="rk-doc-stamp rk-doc-stamp-pass">
                        <rect x="-50" y="-18" width="100" height="36" fill="#ffffff" stroke="var(--rk-law-success)" stroke-width="4" rx="4"/>
                        <text x="0" y="6" font-family="Arial" font-size="12" font-weight="900" fill="var(--rk-law-success)" text-anchor="middle">ZGODNOŚĆ WT</text>
                    </g>
                </g>
            </svg>
        </div>

        <div class="rk-law-articles">
            <div class="rk-article-item">
                <div class="rk-article-title">
                    Prawo Budowlane Art. 34
                    <span class="rk-article-status" id="txtStatusPB">NARUSZONY</span>
                </div>
                <p class="rk-article-desc">Wymóg posiadania projektu technicznego z wliczonymi rozwiązaniami instalacyjnymi budynku.</p>
            </div>
            <div class="rk-article-item">
                <div class="rk-article-title">
                    Warunki Techniczne § 134
                    <span class="rk-article-status" id="txtStatusWT">NARUSZONY</span>
                </div>
                <p class="rk-article-desc">Wydajność urządzeń grzewczych musi być ściśle dostosowana do obliczeniowego OZC.</p>
            </div>
        </div>

    </div>

    <div class="rk-law-text-section">
        <p>
            Zgodnie z <strong>art. 34 ust. 3 pkt 3 lit. b ustawy Prawo Budowlane</strong>, obiekt budowlany musi posiadać projekt techniczny zawierający m.in. projektowane rozwiązania instalacyjne. Oznacza to, że charakterystyka energetyczna i obliczeniowe obciążenie cieplne budynku według normy <strong><a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/">PN-EN ISO 12831</a></strong> są integralną częścią dokumentacji niezbędnej do prawidłowego zgłoszenia zakończenia budowy u Powiatowego Inspektora Nadzoru Budowlanego.
        </p>
        <p>
            Instalacja grzewcza wykonana bez precyzyjnych obliczeń inżynierskich bezpośrednio łamie <strong>rozporządzenie Ministra Infrastruktury w sprawie warunków technicznych</strong>, jakim powinny odpowiadać budynki i ich usytuowanie (§ 134 ust. 1). Przepis ten jednoznacznie nakazuje instalowanie urządzeń o wydajności dostosowanej do obliczeniowego zapotrzebowania na ciepło.
        </p>
        <p>
            Zastanawiając się, <a href="https://projekt-ogrzewania.pl/czy-do-ogrzewania-podlogowego-potrzebny-jest-projekt/">czy projekt instalacji ogrzewania podłogowego jest potrzebny</a>, pamiętaj: decydując się na montaż w systemie &#8222;zróbmy to na oko&#8221;, zmuszasz kierownika budowy do poświadczenia nieprawdy w dzienniku budowy, a w przypadku audytu związanego z programami dotacyjnymi – ryzykujesz nakaz zwrotu wypłaconych środków z powodu niespełnienia kryteriów <strong>Warunków Technicznych (WT 2021)</strong>.
        </p>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btnFail = document.getElementById('btnAuditFail');
    const btnPass = document.getElementById('btnAuditPass');
    const uiPanel = document.getElementById('uiLawAuditPanel');
    
    const txtStatusPB = document.getElementById('txtStatusPB');
    const txtStatusWT = document.getElementById('txtStatusWT');

    function setAuditState(state) {
        if (state === 'fail') {
            btnFail.classList.add('active');
            btnPass.classList.remove('active');
            
            uiPanel.classList.remove('state-pass');
            uiPanel.classList.add('state-fail');
            
            txtStatusPB.textContent = 'NARUSZONY';
            txtStatusWT.textContent = 'NARUSZONY';
        } else {
            btnPass.classList.add('active');
            btnFail.classList.remove('active');
            
            uiPanel.classList.remove('state-fail');
            uiPanel.classList.add('state-pass');
            
            txtStatusPB.textContent = 'ZGODNY';
            txtStatusWT.textContent = 'ZGODNY';
        }
    }

    btnFail.addEventListener('click', () => setAuditState('fail'));
    btnPass.addEventListener('click', () => setAuditState('pass'));
});
</script>



<style>
:root {
    --rk-roi-dark: #0f172a;
    --rk-roi-primary: #0284c7;
    --rk-roi-bg: #ffffff;
    --rk-roi-surface: #f8fafc;
    --rk-roi-border: #e2e8f0;
    --rk-roi-text: #334155;
    --rk-roi-danger: #ef4444;
    --rk-roi-danger-light: #fef2f2;
    --rk-roi-success: #10b981;
    --rk-roi-success-light: #ecfdf5;
}

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

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

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

.rk-roi-header h2 svg {
    color: var(--rk-roi-success);
    flex-shrink: 0;
}

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

/* Interaktywny Panel */
.rk-roi-interactive {
    padding: 40px 50px;
    background: var(--rk-roi-surface);
    display: flex;
    flex-direction: column;
    align-items: center;
}

/* Switcher / Toggle */
.rk-roi-toggle-wrapper {
    display: flex;
    background: #e2e8f0;
    padding: 6px;
    border-radius: 16px;
    margin-bottom: 40px;
    width: 100%;
    max-width: 600px;
    position: relative;
}

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

.rk-roi-toggle-btn.active[data-state="danger"] {
    color: var(--rk-roi-danger);
    background: #ffffff;
    box-shadow: 0 4px 10px rgba(239, 68, 68, 0.15);
}

.rk-roi-toggle-btn.active[data-state="success"] {
    color: var(--rk-roi-success);
    background: #ffffff;
    box-shadow: 0 4px 10px rgba(16, 185, 129, 0.15);
}

/* Karty danych */
.rk-roi-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    width: 100%;
}

.rk-roi-card {
    background: #ffffff;
    border: 2px solid var(--rk-roi-border);
    border-radius: 16px;
    padding: 25px;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
}

.rk-roi-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 6px;
    height: 100%;
    background: var(--rk-roi-border);
    transition: background 0.4s;
}

.rk-roi-card.state-danger {
    border-color: #fca5a5;
    background: var(--rk-roi-danger-light);
}
.rk-roi-card.state-danger::before { background: var(--rk-roi-danger); }

.rk-roi-card.state-success {
    border-color: #6ee7b7;
    background: var(--rk-roi-success-light);
}
.rk-roi-card.state-success::before { background: var(--rk-roi-success); }

.rk-roi-card-title {
    font-size: 13px;
    font-weight: 800;
    color: #64748b;
    text-transform: uppercase;
    margin: 0 0 10px 0;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-roi-card-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-roi-dark);
    margin: 0;
    transition: color 0.3s;
}

.state-danger .rk-roi-card-val { color: var(--rk-roi-danger); }
.state-success .rk-roi-card-val { color: var(--rk-roi-success); }

/* Tekst i Wyjaśnienia */
.rk-roi-content {
    padding: 40px 50px;
    background: #ffffff;
    border-top: 1px solid var(--rk-roi-border);
}

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

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

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

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

.rk-roi-content a:hover {
    color: #0369a1;
    border-bottom-color: #0369a1;
}

.rk-roi-highlight-box {
    background: var(--rk-roi-surface);
    border-radius: 12px;
    padding: 20px;
    margin: 25px 0;
    display: flex;
    align-items: center;
    gap: 20px;
    border: 1px solid var(--rk-roi-border);
}

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

.rk-roi-highlight-text {
    margin: 0 !important;
    font-size: 15px !important;
}

/* RWD - Mobile */
@media (max-width: 768px) {
    .rk-roi-header, .rk-roi-interactive, .rk-roi-content { padding: 30px 20px; }
    .rk-roi-header h2 { font-size: 24px; }
    
    .rk-roi-toggle-wrapper { flex-direction: column; padding: 4px; gap: 4px; }
    .rk-roi-toggle-btn { padding: 14px; }
    
    .rk-roi-grid { grid-template-columns: 1fr; }
    .rk-roi-highlight-box { flex-direction: column; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#article-koszty",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/"
    },
    "headline": "Ile kosztuje projekt ogrzewania podłogowego i dlaczego inwestycja zwraca się w pierwszym sezonie?",
    "description": "Zrozum opłacalność inżynieryjnego projektu OZC. Sprawdź interaktywne porównanie kosztów materiałowych, zużycia rur i temperatury zasilania dla domu 150m2.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski – Budowa bez ściemy",
      "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-14",
    "dateModified": "2026-06-14"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#dataset-koszty",
    "name": "Analiza zwrotu z inwestycji (ROI) w projekt ogrzewania płaszczyznowego",
    "description": "Szczegółowa macierz porównawcza parametrów kosztowych i technicznych instalacji wykonanej 'na oko' względem instalacji zoptymalizowanej inżyniersko dla budynku 150 m2.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski – Budowa bez ściemy"
    },
    "keywords": [
      "ile kosztuje projekt ogrzewania podłogowego",
      "rozstaw rur w wodnym ogrzewaniu podłogowym",
      "maksymalna temperatura zasilania podłogówki",
      "rotametr wskaźnik przepływu ogrzewania",
      "koszty materiałów instalacji grzewczej"
    ],
    "measurementTechnique": "Porównanie kosztorysu powykonawczego (zużycie rury PEX w mb) oraz parametrów hydraulicznych na podstawie audytu zrównoważenia przepływów na rotametrach.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Koszt projektu: 350 PLN – 900 PLN, zwraca się w 3 do 6 miesięcy sezonu grzewczego.",
        "Oszczędność materiałowa: Zmniejszenie zużycia rur PEX o 150–250 mb (z 1100 mb na 820-880 mb dla 150 m2).",
        "Zysk efektywności energetycznej: Spadek zużycia energii przez pompę ciepła o 15-22% rocznie."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#webapp-koszty",
    "name": "Interaktywny Kalkulator Zysków Inwestycyjnych",
    "description": "Narzędzie typu 'Toggle' (przełącznik) demonstrujące kolosalne straty ukryte w montażu bezdokumentacyjnym w opozycji do twardych danych z optymalizacji.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski – Budowa bez ściemy"
    }
  }
]
</script>

<div class="rk-roi-container" id="roi-kalkulator-app">
    <div class="rk-roi-header">
        <h2>
            <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                <line x1="12" y1="1" x2="12" y2="23"></line>
                <path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path>
            </svg>
            Dlaczego projekt ogrzewania to nie wydatek, a inwestycja?
        </h2>
        <p>Zobacz różnicę w materiałach i kosztach eksploatacji dla przykładowego domu o powierzchni 150 m².</p>
    </div>

    <div class="rk-roi-interactive">
        
        <div class="rk-roi-toggle-wrapper" id="roiToggle">
            <button class="rk-roi-toggle-btn" data-state="danger" id="btnDanger">
                <svg width="20" height="20" 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="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg>
                Instalacja &#8222;na oko&#8221; (Brak projektu)
            </button>
            <button class="rk-roi-toggle-btn active" data-state="success" id="btnSuccess">
                <svg width="20" height="20" 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 Inżynierski OZC
            </button>
        </div>

        <div class="rk-roi-grid">
            
            <div class="rk-roi-card state-success" id="cardSpacing">
                <p class="rk-roi-card-title">Średni rozstaw rur</p>
                <p class="rk-roi-card-val" id="valSpacing">Zmienny: 10, 15, 20 cm</p>
            </div>

            <div class="rk-roi-card state-success" id="cardPipe">
                <p class="rk-roi-card-title">Zużycie rury na 150 m²</p>
                <p class="rk-roi-card-val" id="valPipe">820 &#8211; 880 m.b.</p>
            </div>

            <div class="rk-roi-card state-success" id="cardTemp">
                <p class="rk-roi-card-title">Wymagana Temp. Zasilania (Tz)</p>
                <p class="rk-roi-card-val" id="valTemp">32°C &#8211; 35°C</p>
            </div>

            <div class="rk-roi-card state-success" id="cardCost">
                <p class="rk-roi-card-title">Startowe zużycie materiałów</p>
                <p class="rk-roi-card-val" id="valCost">Optymalne, wg normy</p>
            </div>

        </div>

    </div>

    <div class="rk-roi-content">
        <p>
            Profesjonalny, rzetelny projekt instalacji bazujący na pełnym OZC (Obliczeniowym Zapotrzebowaniu na Ciepło) <strong>kosztuje średnio od 350 PLN do 900 PLN</strong> dla standardowego domu jednorodzinnego. Zastanawiając się, <a href="https://projekt-ogrzewania.pl/ile-kosztuje-projekt-ogrzewania-podlogowego/">ile kosztuje projekt ogrzewania podłogowego</a>, musisz spojrzeć na to przez pryzmat natychmiastowego zwrotu.
        </p>

        <div class="rk-roi-highlight-box">
            <div class="rk-roi-highlight-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="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>
            <p class="rk-roi-highlight-text">
                <strong>Szybki zwrot (ROI):</strong> Inwestycja ta zwraca się całkowicie w ciągu pierwszych 3 do 6 miesięcy sezonu grzewczego. Wynika to z drastycznej redukcji kosztów zakupu nadmiarowych rur (często o 150–250 metrów) oraz spadku zużycia energii przez sprężarkę pompy ciepła o 15% do 22% w skali roku.
            </p>
        </div>

        <p>
            Układanie rur &#8222;z głowy&#8221; zawsze kończy się przewymiarowaniem. Instalator dla bezpieczeństwa zagęszcza <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur w ogrzewaniu podłogowym</a> wszędzie co 10 cm. Generuje to kolosalne straty na zakupie materiałów (często wyższe o 1200–1800 PLN).
        </p>
        <p>
            Dodatkowo, bez obliczeń dławień hydraulicznych, brakuje wytycznych nastaw dla belek. Skutkuje to losowymi przepływami na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach</a>, powodując, że by dogrzać chłodniejsze pętle, zmuszeni jesteśmy podnieść <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">temperaturę zasilania podłogówki</a> z optymalnych 35°C do rujnujących portfel 45°C.
        </p>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btnDanger = document.getElementById('btnDanger');
    const btnSuccess = document.getElementById('btnSuccess');
    
    // Karty
    const cards = [
        document.getElementById('cardSpacing'),
        document.getElementById('cardPipe'),
        document.getElementById('cardTemp'),
        document.getElementById('cardCost')
    ];

    // Wartości w kartach
    const valSpacing = document.getElementById('valSpacing');
    const valPipe = document.getElementById('valPipe');
    const valTemp = document.getElementById('valTemp');
    const valCost = document.getElementById('valCost');

    // Baza danych dla stanów
    const data = {
        danger: {
            spacing: "Stały (10 cm lub 15 cm)",
            pipe: "Ponad 1100 m.b.",
            temp: "Wysoka: 42°C - 45°C",
            cost: "+ 1200 do 1800 PLN"
        },
        success: {
            spacing: "Zmienny: 10, 15, 20 cm",
            pipe: "820 - 880 m.b.",
            temp: "Niska (optymalna): 32°C - 35°C",
            cost: "Optymalne, wg normy"
        }
    };

    function switchState(state) {
        // Zmiana przycisków
        if (state === 'danger') {
            btnDanger.classList.add('active');
            btnSuccess.classList.remove('active');
        } else {
            btnSuccess.classList.add('active');
            btnDanger.classList.remove('active');
        }

        // Zmiana klas kart (kolory)
        cards.forEach(card => {
            card.classList.remove('state-danger', 'state-success');
            card.classList.add('state-' + state);
        });

        // Wstrzykiwanie danych
        valSpacing.textContent = data[state].spacing;
        valPipe.textContent = data[state].pipe;
        valTemp.textContent = data[state].temp;
        valCost.textContent = data[state].cost;
    }

    btnDanger.addEventListener('click', () => switchState('danger'));
    btnSuccess.addEventListener('click', () => switchState('success'));
});
</script>



<style>
:root {
    --rk-cop-dark: #0f172a;
    --rk-cop-primary: #0284c7;
    --rk-cop-bg: #ffffff;
    --rk-cop-surface: #f8fafc;
    --rk-cop-border: #e2e8f0;
    --rk-cop-text: #334155;
    --rk-cop-success: #10b981;
    --rk-cop-warning: #f59e0b;
    --rk-cop-danger: #ef4444;
}

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

/* Nagłówek */
.rk-cop-header {
    padding: 35px 40px;
    background: var(--rk-cop-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-cop-primary);
}

.rk-cop-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 10px 0;
    color: #ffffff;
    line-height: 1.3;
    display: flex;
    align-items: center;
    gap: 12px;
}

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

/* Układ główny - Jedna kolumna */
.rk-cop-layout {
    display: flex;
    flex-direction: column;
    background: var(--rk-cop-bg);
}

/* Sekcja Symulatora (Góra) */
.rk-cop-sim-panel {
    padding: 40px 50px 30px 50px;
    display: flex;
    flex-direction: column;
    align-items: center;
    background: var(--rk-cop-surface);
}

/* Suwak */
.rk-slider-wrapper {
    width: 100%;
    max-width: 700px;
    background: #ffffff;
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-cop-border);
    margin-bottom: 25px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

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

.rk-slider-label {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-cop-dark);
    margin: 0;
}

.rk-slider-badge {
    background: var(--rk-cop-dark);
    color: #ffffff;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 18px;
    font-weight: 900;
}

input[type=range].rk-cop-slider {
    -webkit-appearance: none;
    width: 100%;
    background: transparent;
}
input[type=range].rk-cop-slider:focus { outline: none; }
input[type=range].rk-cop-slider::-webkit-slider-runnable-track {
    width: 100%;
    height: 10px;
    background: linear-gradient(90deg, var(--rk-cop-success) 0%, var(--rk-cop-warning) 50%, var(--rk-cop-danger) 100%);
    border-radius: 5px;
}
input[type=range].rk-cop-slider::-webkit-slider-thumb {
    height: 30px;
    width: 30px;
    border-radius: 50%;
    background: #ffffff;
    border: 5px solid var(--rk-cop-dark);
    cursor: pointer;
    -webkit-appearance: none;
    margin-top: -10px;
    box-shadow: 0 3px 8px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}
input[type=range].rk-cop-slider::-webkit-slider-thumb:active {
    transform: scale(1.15);
}

/* Wyniki finansowe na żywo */
.rk-cop-results {
    width: 100%;
    max-width: 700px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

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

.rk-cop-stat-title {
    font-size: 13px;
    font-weight: 800;
    color: #64748b;
    text-transform: uppercase;
    margin: 0 0 8px 0;
}

.rk-cop-stat-val {
    font-size: 36px;
    font-weight: 900;
    margin: 0;
    transition: color 0.3s;
}

/* Sekcja Wyjaśnień (Dół) */
.rk-cop-text-panel {
    padding: 40px 50px;
    background: #ffffff;
    border-top: 1px solid var(--rk-cop-border);
}

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

.rk-cop-text-panel p {
    font-size: 16px;
    line-height: 1.8;
    color: var(--rk-cop-text);
    margin: 0 0 20px 0;
}

.rk-cop-text-panel p strong {
    color: var(--rk-cop-dark);
}

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

.rk-cop-text-panel a:hover {
    color: #0369a1;
    border-bottom-color: #0369a1;
}

.rk-alert-card {
    background: #fff5f5;
    border-left: 4px solid var(--rk-cop-danger);
    padding: 20px;
    border-radius: 0 12px 12px 0;
    margin-top: 20px;
}

.rk-alert-card p {
    margin: 0;
    font-size: 15px;
    color: var(--rk-cop-dark);
}

/* RWD - Mobile */
@media (max-width: 768px) {
    .rk-cop-header { padding: 30px 20px; }
    .rk-cop-header h2 { font-size: 22px; }
    .rk-cop-sim-panel { padding: 30px 20px; }
    .rk-cop-text-panel { padding: 30px 20px; }
    .rk-cop-results { grid-template-columns: 1fr; gap: 15px; }
    .rk-cop-stat-val { font-size: 32px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#article-pompa",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/"
    },
    "headline": "Jak brak projektu ogrzewania podłogowego niszczy efektywność pompy ciepła?",
    "description": "Zobacz, jak przewymiarowany rozstaw rur i błędna hydraulika zmuszają pompę ciepła do pracy na wysokich parametrach, drastycznie obniżając jej wskaźnik COP i podnosząc rachunki.",
    "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-14",
    "dateModified": "2026-06-14"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#dataset-pompa",
    "name": "Spadek współczynnika COP pompy ciepła w funkcji temperatury zasilania",
    "description": "Zestawienie analityczne obrazujące spadek efektywności grzewczej i wzrost kosztów eksploatacyjnych na skutek braku zrównoważenia instalacji ogrzewania podłogowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "niska temperatura zasilania pompy ciepła",
      "sprawność pompy ciepła podłogówka",
      "rozstaw rur ogrzewania podłogowego przy pompie ciepła",
      "koszty prądu pompy ciepła kalkulator",
      "pompa obiegowa podłogówka"
    ],
    "measurementTechnique": "Algorytm wyliczający degradację wskaźnika COP o 12.5% na każde 5°C wzrostu temperatury zasilania instalacji płaszczyznowej, sprzężony z estymacją rocznych kosztów prądu.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Punkt optymalny: Temperatura zasilania 35°C (COP referencyjne, minimalne koszty).",
        "Degradacja COP: Spadek efektywności grzewczej urządzenia o 12,5% co każde dodatkowe 5°C.",
        "Wzrost oporów: Zbyt długie pętle zwiększają obciążenie pompy obiegowej i zużycie mechaniczne."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#webapp-pompa",
    "name": "Symulator Efektywności Pompy Ciepła (COP)",
    "description": "Narzędzie interaktywne ilustrujące wizualnie i finansowo konsekwencje nieprawidłowego wymiarowania rozstawu rur podłogówki dla sprężarki pompy ciepła.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-cop-container">
    <div class="rk-cop-header">
        <h2>
            <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="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path>
            </svg>
            Jak brak projektu niszczy efektywność pompy ciepła?
        </h2>
        <p>Błędny montaż wymusza drastyczne podniesienie temperatury zasilania. Zobacz na żywo, jak spadek wskaźnika COP wysysa pieniądze z Twojego portfela.</p>
    </div>

    <div class="rk-cop-layout">
        
        <div class="rk-cop-sim-panel">
            
            <div class="rk-slider-wrapper">
                <div class="rk-slider-header">
                    <p class="rk-slider-label">Wymuszone zasilanie (T<sub>z</sub>):</p>
                    <div class="rk-slider-badge" id="rkCopTempBadge">35°C</div>
                </div>
                <input type="range" class="rk-cop-slider" id="rkCopTempSlider" min="35" max="55" step="1" value="35">
            </div>

            <div class="rk-cop-results">
                <div class="rk-cop-stat-box">
                    <p class="rk-cop-stat-title">Wskaźnik COP</p>
                    <p class="rk-cop-stat-val" id="rkCopValCop" style="color: var(--rk-cop-success);">4.80</p>
                </div>
                <div class="rk-cop-stat-box">
                    <p class="rk-cop-stat-title">Roczne rachunki</p>
                    <p class="rk-cop-stat-val" id="rkCopValCost" style="color: var(--rk-cop-dark);">3000 zł</p>
                </div>
            </div>

        </div>

        <div class="rk-cop-text-panel">
            <h3>Spadek COP to ukryte koszty</h3>
            <p>
                Wykonanie instalacji bez precyzyjnych obliczeń zmusza instalatora do kompensacji błędów poprzez podniesienie krzywej grzewczej. Każde dodatkowe <strong>5°C</strong> powyżej wartości projektowej obniża współczynnik efektywności grzewczej (COP) urządzenia aż o <strong>12,5%</strong>.
            </p>
            <p>
                Zgodnie z inżynieryjną sztuką, <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">niska temperatura zasilania pompy ciepła</a> powinna wynosić <strong>35°C</strong> przy powrocie 30°C (różnica temperatur ΔT = 5K). Tylko to pozwala nowoczesnym sprężarkom na bezstresową pracę w optymalnym punkcie modulacji.
            </p>
            
            <div class="rk-alert-card">
                <p><strong>Zabójcze opory hydrauliczne:</strong> Gdy instalator układa rury bez znajomości strat ciepła, zagęszcza rozstaw lub rozciąga pętle poza bezpieczny limit. Skutkuje to drastycznym oporem wody, zmuszając <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompę obiegową</a> do pracy na najwyższym biegu, co podnosi pobór prądu i niszczy jej podzespoły.</p>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Używamy unikalnych ID dla tego kontenera
    const slider = document.getElementById('rkCopTempSlider');
    const badge = document.getElementById('rkCopTempBadge');
    const valCop = document.getElementById('rkCopValCop');
    const valCost = document.getElementById('rkCopValCost');

    // Parametry referencyjne
    const baseTemp = 35;
    const baseCOP = 4.80;
    const baseCost = 3000;

    function updateCOP() {
        if (!slider || !badge || !valCop || !valCost) return; // Zabezpieczenie przed brakiem elementu

        const currentTemp = parseInt(slider.value);
        badge.textContent = currentTemp + '°C';

        // Algorytm spadku COP: -12.5% co każde 5 stopni
        const steps = (currentTemp - baseTemp) / 5;
        const currentCOP = baseCOP * Math.pow(0.875, steps);
        
        // Wyliczenie rachunku
        const currentCost = baseCost * (baseCOP / currentCOP);

        // Aktualizacja UI
        valCop.textContent = currentCOP.toFixed(2);
        valCost.textContent = Math.round(currentCost) + ' zł';

        // Zmiana kolorystyki w zależności od obciążenia
        if (currentTemp <= 38) {
            valCop.style.color = 'var(--rk-cop-success)';
            valCost.style.color = 'var(--rk-cop-dark)';
        } else if (currentTemp > 38 && currentTemp <= 45) {
            valCop.style.color = 'var(--rk-cop-warning)';
            valCost.style.color = 'var(--rk-cop-warning)';
        } else {
            valCop.style.color = 'var(--rk-cop-danger)';
            valCost.style.color = 'var(--rk-cop-danger)';
        }
    }

    if (slider) {
        slider.addEventListener('input', updateCOP);
        // Inicjalizacja przy załadowaniu
        updateCOP();
    }
});
</script>



<style>
:root {
    --rk-opory-dark: #0f172a;
    --rk-opory-primary: #0284c7;
    --rk-opory-bg: #ffffff;
    --rk-opory-border: #e2e8f0;
    --rk-opory-text: #334155;
    --rk-opory-danger: #ef4444;
    --rk-opory-danger-bg: #fef2f2;
    --rk-opory-warning: #f59e0b;
    --rk-opory-success: #10b981;
}

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

/* Nagłówek */
.rk-opory-header {
    padding: 35px 40px;
    background: var(--rk-opory-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-opory-primary);
}

.rk-opory-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 10px 0;
    color: #ffffff;
    line-height: 1.3;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-opory-header h2 svg {
    color: var(--rk-opory-primary);
}

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

/* Główny układ - Jedna Kolumna */
.rk-opory-layout {
    display: flex;
    flex-direction: column;
    background: var(--rk-opory-bg);
}

/* Sekcja Symulatora (Góra) */
.rk-opory-sim-panel {
    padding: 40px;
    display: flex;
    flex-direction: column;
    align-items: center;
}

/* Animowany Wskaźnik (Gauge) */
.rk-gauge-wrapper {
    position: relative;
    width: 240px;
    height: 130px;
    margin-bottom: 30px;
}

.rk-gauge-svg {
    width: 100%;
    height: 100%;
    overflow: visible;
}

.rk-gauge-bg {
    fill: none;
    stroke: #e2e8f0;
    stroke-width: 12;
    stroke-linecap: round;
}

.rk-gauge-val {
    fill: none;
    stroke: var(--rk-opory-success);
    stroke-width: 12;
    stroke-linecap: round;
    stroke-dasharray: 283;
    stroke-dashoffset: 283;
    transition: stroke-dashoffset 0.4s ease, stroke 0.4s ease;
}

.rk-gauge-text {
    position: absolute;
    bottom: -15px;
    left: 0;
    width: 100%;
    text-align: center;
}

.rk-gauge-kpa {
    font-size: 38px;
    font-weight: 900;
    color: var(--rk-opory-dark);
    line-height: 1;
    margin: 0;
}

.rk-gauge-label {
    font-size: 14px;
    font-weight: 700;
    color: #64748b;
    text-transform: uppercase;
    margin: 6px 0 0 0;
}

/* Stan przepływu rury */
.rk-pipe-status {
    width: 100%;
    max-width: 600px;
    height: 14px;
    background: #e2e8f0;
    border-radius: 7px;
    margin-bottom: 40px;
    position: relative;
    overflow: hidden;
}

.rk-pipe-water {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
    background: repeating-linear-gradient(
        45deg,
        var(--rk-opory-primary),
        var(--rk-opory-primary) 12px,
        #38bdf8 12px,
        #38bdf8 24px
    );
    background-size: 34px 100%;
    animation: flowPipe 1s linear infinite;
    transition: opacity 0.3s;
}

@keyframes flowPipe {
    0% { background-position: 0 0; }
    100% { background-position: 34px 0; }
}

/* Sekcja Suwaka */
.rk-slider-box {
    width: 100%;
    max-width: 600px;
    background: #f8fafc;
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-opory-border);
}

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

.rk-slider-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-opory-dark);
    margin: 0;
}

.rk-slider-val-badge {
    background: var(--rk-opory-dark);
    color: #ffffff;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 18px;
    font-weight: 900;
}

input[type=range].rk-custom-slider {
    -webkit-appearance: none;
    width: 100%;
    background: transparent;
}

input[type=range].rk-custom-slider:focus { outline: none; }

input[type=range].rk-custom-slider::-webkit-slider-runnable-track {
    width: 100%;
    height: 10px;
    background: #cbd5e1;
    border-radius: 5px;
}

input[type=range].rk-custom-slider::-webkit-slider-thumb {
    height: 28px;
    width: 28px;
    border-radius: 50%;
    background: #ffffff;
    border: 5px solid var(--rk-opory-primary);
    cursor: pointer;
    -webkit-appearance: none;
    margin-top: -9px;
    box-shadow: 0 3px 6px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}

input[type=range].rk-custom-slider::-webkit-slider-thumb:active {
    transform: scale(1.15);
}

.rk-alert-msg {
    margin-top: 20px;
    padding: 12px;
    background: var(--rk-opory-danger-bg);
    border: 1px solid #fecaca;
    border-radius: 8px;
    color: var(--rk-opory-danger);
    font-size: 14px;
    font-weight: 800;
    text-align: center;
    display: none;
}

/* Sekcja Wyliczeń (Dół) */
.rk-opory-math-panel {
    padding: 0 40px 40px 40px;
}

.rk-opory-math-panel h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-opory-dark);
    margin: 0 0 20px 0;
    border-top: 1px solid var(--rk-opory-border);
    padding-top: 40px;
}

.rk-math-text {
    font-size: 16px;
    line-height: 1.8;
    color: var(--rk-opory-text);
    margin: 0 0 25px 0;
}

.rk-math-formula-box {
    background: #f8fafc;
    border-left: 4px solid var(--rk-opory-primary);
    padding: 25px;
    border-radius: 0 12px 12px 0;
    margin-bottom: 30px;
}

.rk-math-main-eq {
    font-family: 'Courier New', Courier, monospace;
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-opory-dark);
    margin: 0 0 20px 0;
    text-align: center;
    background: #ffffff;
    padding: 12px;
    border: 1px solid var(--rk-opory-border);
    border-radius: 8px;
}

.rk-math-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-math-list li {
    font-size: 15px;
    padding-left: 20px;
    position: relative;
    color: var(--rk-opory-text);
}

.rk-math-list li::before {
    content: '→';
    position: absolute;
    left: 0;
    color: var(--rk-opory-primary);
    font-weight: 900;
}

.rk-math-highlight {
    font-weight: 800;
    color: var(--rk-opory-dark);
}

.rk-math-danger {
    color: var(--rk-opory-danger);
    font-weight: 900;
}

/* RWD - Mobile */
@media (max-width: 768px) {
    .rk-opory-header { padding: 30px 20px; }
    .rk-opory-header h2 { font-size: 24px; }
    .rk-opory-sim-panel, .rk-opory-math-panel { padding: 25px 20px; }
    .rk-opory-math-panel h3 { padding-top: 30px; }
    .rk-math-list { grid-template-columns: 1fr; }
    .rk-gauge-wrapper { width: 200px; height: 110px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#article-opory",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/"
    },
    "headline": "Jak za długa pętla podłogówki blokuje przepływ wody i jak tego uniknąć?",
    "description": "Zrozum fizykę instalacji. Sprawdź inżynieryjne wyliczenia oporów hydraulicznych i przetestuj interaktywny symulator blokady przepływu wody w rurach PEX.",
    "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-14",
    "dateModified": "2026-06-14"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#dataset-opory",
    "name": "Parametry oporów hydraulicznych rury grzewczej 16 mm",
    "description": "Zestawienie obliczeniowe obrazujące przyrost strat ciśnienia w funkcji długości pętli ogrzewania płaszczyznowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna długość pętli ogrzewania podłogowego",
      "za długa pętla podłogówki",
      "opory hydrauliczne podłogówki",
      "obliczenia przepływu i strat ciśnienia",
      "zrównoważenie hydrauliczne rotametry"
    ],
    "measurementTechnique": "Algorytmiczne wyznaczanie strat ciśnienia z zastosowaniem fizycznego wzoru na ciepło właściwe wody i przepływ masowy w korelacji z oporem jednostkowym 180 Pa/m.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Limit normatywny: 120 metrów bieżących dla przewodu PEX 16mm (wraz z dobiegiem).",
        "Przepływ graniczny: Opór jednostkowy na poziomie ok. 180 Pa/m przy przepływie 3,4 l/min.",
        "Blokada hydrauliczna: Przekroczenie 120m generuje opory liniowe przekraczające 25-30 kPa, zatrzymując przepływ na rotametrach."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#webapp-opory",
    "name": "Symulator Oporów Hydraulicznych Pętli",
    "description": "Interaktywny panel wizualizujący na wirtualnym manometrze moment blokady przepływu wody w przypadku błędnego wytyczenia zbyt długiej pętli grzewczej.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-opory-container">
    <div class="rk-opory-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="M22 12h-4l-3 9L9 3l-3 9H2"></path>
            </svg>
            Jak za długa pętla blokuje instalację?
        </h2>
        <p>Maksymalna dopuszczalna długość pojedynczej pętli dla rury 16 mm wynosi dokładnie 120 mb. Zobacz, co się stanie na manometrze, gdy przekroczysz tę wartość.</p>
    </div>

    <div class="rk-opory-layout">
        
        <div class="rk-opory-sim-panel">
            
            <div class="rk-gauge-wrapper">
                <svg class="rk-gauge-svg" viewBox="0 0 200 100">
                    <path class="rk-gauge-bg" d="M 10 90 A 90 90 0 0 1 190 90"></path>
                    <path class="rk-gauge-val" id="svgGaugeVal" d="M 10 90 A 90 90 0 0 1 190 90"></path>
                </svg>
                <div class="rk-gauge-text">
                    <p class="rk-gauge-kpa" id="uiPressureVal">10.8</p>
                    <p class="rk-gauge-label">Strata (kPa)</p>
                </div>
            </div>

            <div class="rk-pipe-status" id="uiPipeFlow">
                <div class="rk-pipe-water" id="uiPipeWater"></div>
            </div>

            <div class="rk-slider-box">
                <div class="rk-slider-header">
                    <p class="rk-slider-title">Zaprojektowana długość pętli:</p>
                    <div class="rk-slider-val-badge" id="uiLengthBadge">60 mb</div>
                </div>
                <input type="range" class="rk-custom-slider" id="sliderLength" min="60" max="160" step="1" value="60">
                <div class="rk-alert-msg" id="uiAlertMsg">
                    UWAGA! Przepływ całkowicie zablokowany. Opory przekraczają wydolność standardowej pompy obiegowej.
                </div>
            </div>

        </div>

        <div class="rk-opory-math-panel">
            <h3>Inżynieryjne wyliczenie strat ciśnienia</h3>
            <p class="rk-math-text">
                W profesjonalnym projekcie dąży się do tego, aby długości poszczególnych pętli w obrębie jednego rozdzielacza były zbliżone do siebie z tolerancją do 10-15%. Przekroczenie limitu generuje potężne opory, co uniemożliwia hydrauliczne zrównoważenie instalacji na rotametrach.
            </p>
            
            <div class="rk-math-formula-box">
                <div class="rk-math-main-eq">Q = m &times; c<sub>w</sub> &times; &Delta;T</div>
                <ul class="rk-math-list">
                    <li>Zapotrzebowanie pokoju: <span class="rk-math-highlight">Q = 1200 W</span></li>
                    <li>Zakładana różnica temp.: <span class="rk-math-highlight">&Delta;T = 5 K</span></li>
                    <li>Ciepło właściwe wody: <span class="rk-math-highlight">c<sub>w</sub> = 4186 J/(kg&middot;K)</span></li>
                    <li>Wymagany przepływ masowy (m): <span class="rk-math-highlight">206 kg/h</span> (ok. 3,4 l/min)</li>
                </ul>
            </div>

            <p class="rk-math-text">
                Dla standardowej rury 16x2 mm przy takim przepływie, opór jednostkowy wynosi około <strong>180 Pa/m</strong>.
            </p>
            
            <p class="rk-math-text">
                Dla granicznej pętli 120 m łączna strata ciśnienia to:<br>
                <span class="rk-math-highlight" style="font-size: 18px;">120 &times; 180 = 21600 Pa = <span class="rk-math-danger">21,6 kPa</span></span>
            </p>
            <p class="rk-math-text">
                Otrzymana wartość to fizyczna granica tłoczenia dla standardowych pomp obiegowych wbudowanych w domowe urządzenia grzewcze. Ułożenie pętli o długości 150-160 mb generuje opory liniowe przekraczające 25-30 kPa, co całkowicie blokuje swobodny przepływ wody.
            </p>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const slider = document.getElementById('sliderLength');
    const badge = document.getElementById('uiLengthBadge');
    const pressureVal = document.getElementById('uiPressureVal');
    const gaugePath = document.getElementById('svgGaugeVal');
    const pipeWater = document.getElementById('uiPipeWater');
    const alertMsg = document.getElementById('uiAlertMsg');

    // Całkowity obwód ścieżki (dla promienia 90) to ok 283
    const maxDash = 283; 

    function updateSimulator() {
        const length = parseFloat(slider.value);
        badge.textContent = length + ' mb';

        // Wyliczenie: Długość * 180 Pa / 1000 = kPa
        const kpa = (length * 180) / 1000;
        pressureVal.textContent = kpa.toFixed(1);

        // Skalowanie manometru (zakres od 60m do 160m)
        const percentage = (length - 60) / (160 - 60); 
        const offset = maxDash - (percentage * maxDash);
        gaugePath.style.strokeDashoffset = offset;

        // Logika ostrzegawcza
        if (length > 120) {
            gaugePath.style.stroke = 'var(--rk-opory-danger)';
            pipeWater.style.opacity = '0.1'; // Brak przepływu
            alertMsg.style.display = 'block';
            pipeWater.style.animation = 'none';
        } else {
            const safePercentage = length / 120;
            
            // Kolorystyka wskaźnika
            if (length > 100) {
                gaugePath.style.stroke = 'var(--rk-opory-warning)';
            } else {
                gaugePath.style.stroke = 'var(--rk-opory-success)';
            }
            
            pipeWater.style.opacity = '1';
            alertMsg.style.display = 'none';
            
            // Szybkość animacji zwalnia w miarę wzrostu oporów
            const animDuration = 0.5 + (safePercentage * 1.5);
            pipeWater.style.animation = `flowPipe ${animDuration}s linear infinite`;
        }
    }

    slider.addEventListener('input', updateSimulator);
    
    // Inicjalizacja przy pierwszym załadowaniu
    updateSimulator();
});
</script>



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-primary: #0284c7;
    --rk-calc-bg: #ffffff;
    --rk-calc-surface: #f8fafc;
    --rk-calc-border: #e2e8f0;
    --rk-calc-text: #334155;
    --rk-calc-danger: #ef4444;
    --rk-calc-success: #10b981;
    --rk-calc-warning: #f59e0b;
}

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

/* Nagłówek */
.rk-calc-header {
    padding: 35px 40px;
    background: var(--rk-calc-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-calc-primary);
}

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

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

/* UI Kalkulatora */
.rk-calc-ui {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: var(--rk-calc-bg);
}

/* Sekcja Inputów */
.rk-calc-inputs {
    padding: 40px;
    background: #ffffff;
    border-right: 1px solid var(--rk-calc-border);
}

.rk-calc-group {
    margin-bottom: 25px;
}

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

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

.rk-calc-value-badge {
    color: var(--rk-calc-primary);
    background: #f0f9ff;
    padding: 4px 10px;
    border-radius: 6px;
    font-weight: 800;
    font-size: 14px;
}

input[type=range].rk-slider {
    -webkit-appearance: none;
    width: 100%;
    background: transparent;
}

input[type=range].rk-slider:focus {
    outline: none;
}

input[type=range].rk-slider::-webkit-slider-runnable-track {
    width: 100%;
    height: 8px;
    cursor: pointer;
    background: #e2e8f0;
    border-radius: 4px;
    border: 1px solid #cbd5e1;
}

input[type=range].rk-slider::-webkit-slider-thumb {
    height: 24px;
    width: 24px;
    border-radius: 50%;
    background: var(--rk-calc-primary);
    cursor: pointer;
    -webkit-appearance: none;
    margin-top: -9px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
    border: 3px solid #ffffff;
    transition: transform 0.1s;
}

input[type=range].rk-slider::-webkit-slider-thumb:active {
    transform: scale(1.15);
}

/* Sekcja Wyników */
.rk-calc-outputs {
    padding: 40px;
    background: var(--rk-calc-surface);
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 15px;
}

.rk-out-box {
    background: #ffffff;
    border: 1px solid var(--rk-calc-border);
    border-radius: 12px;
    padding: 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-out-title {
    font-size: 13px;
    font-weight: 700;
    color: #64748b;
    text-transform: uppercase;
    margin: 0;
}

.rk-out-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-calc-dark);
    margin: 5px 0 0 0;
}

/* Główny wynik - Długość pętli */
.rk-out-primary {
    background: var(--rk-calc-primary);
    color: #ffffff;
    border: none;
    flex-direction: column;
    align-items: flex-start;
    position: relative;
    overflow: hidden;
    transition: all 0.3s ease;
}

.rk-out-primary .rk-out-title {
    color: #bae6fd;
}

.rk-out-primary .rk-out-val {
    color: #ffffff;
    font-size: 38px;
    margin-bottom: 5px;
}

.rk-out-primary::after {
    content: 'm.b.';
    position: absolute;
    right: 20px;
    top: 20px;
    font-size: 24px;
    font-weight: 800;
    opacity: 0.3;
}

/* Stan Zmiany - Wymagany podział */
.rk-out-primary.is-warning {
    background: var(--rk-calc-danger);
}

.rk-out-primary.is-warning .rk-out-title {
    color: #fca5a5;
}

.rk-division-info {
    display: none;
    width: 100%;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid rgba(255,255,255,0.2);
}

.rk-out-primary.is-warning .rk-division-info {
    display: block;
}

.rk-division-text {
    font-size: 15px;
    font-weight: 800;
    color: #ffffff;
    margin: 0;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-division-text span {
    background: #ffffff;
    color: var(--rk-calc-danger);
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 16px;
}

/* Sekcja Algorytmu (Tekst) */
.rk-calc-text-section {
    padding: 40px;
    background: #ffffff;
    border-top: 1px solid var(--rk-calc-border);
}

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

.rk-step {
    margin-bottom: 20px;
    padding-left: 20px;
    border-left: 3px solid var(--rk-calc-primary);
}

.rk-step h4 {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    margin: 0 0 8px 0;
}

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

.rk-formula {
    display: inline-block;
    background: #f1f5f9;
    padding: 4px 10px;
    border-radius: 6px;
    font-family: monospace;
    font-weight: 700;
    color: var(--rk-calc-primary);
    border: 1px solid #e2e8f0;
    margin-top: 8px;
}

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

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

.rk-calc-cta p {
    color: #64748b;
    margin: 0 auto 25px auto;
    max-width: 600px;
    line-height: 1.6;
}

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

.rk-btn-action:hover {
    background: #0369a1;
    transform: translateY(-3px);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.4);
}

/* RWD - Mobile */
@media (max-width: 768px) {
    .rk-calc-header { padding: 25px 20px; }
    .rk-calc-header h2 { font-size: 22px; }
    
    .rk-calc-ui { grid-template-columns: 1fr; }
    .rk-calc-inputs, .rk-calc-outputs, .rk-calc-text-section, .rk-calc-cta { padding: 25px 20px; }
    
    .rk-calc-inputs { border-right: none; border-bottom: 1px solid var(--rk-calc-border); }
    
    .rk-out-primary .rk-out-val { font-size: 32px; }
    .rk-out-primary::after { display: none; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#article-kalkulator",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/"
    },
    "headline": "Algorytm kalkulatora doboru pętli i rozstawu rur ogrzewania podłogowego",
    "description": "Zweryfikuj poprawność instalacji. Inżynierski kalkulator obliczający optymalny rozstaw rur, długość pętli i konieczność jej podziału ze względów hydraulicznych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski – Budowa bez ściemy",
      "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-14",
    "dateModified": "2026-06-14"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#dataset-kalkulator",
    "name": "Parametry brzegowe pętli ogrzewania podłogowego według PN-EN 1264",
    "description": "Zbiór reguł matematycznych określających gęstość strumienia cieplnego, bezpieczną długość przewodu PEX 16mm oraz wymogi dotyczące podziału pętli.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski – Budowa bez ściemy"
    },
    "keywords": [
      "maksymalna długość pętli ogrzewania podłogowego",
      "jak gęsto układać rury podłogówki",
      "kalkulator długości rur ogrzewania",
      "obliczenia OZC dla podłogówki",
      "podział pętli ogrzewania podłogowego"
    ],
    "measurementTechnique": "Kalkulacja inżynierska korelująca OZC z powierzchnią grzewczą. Powyżej limitu hydraulicznego (120m) następuje matematyczny podział na wymaganą liczbę mniejszych pętli.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Dobór rozstawu: Zależny od gęstości q (W/m2). Powyżej 80 W/m2 - 10 cm, 50-80 W/m2 - 15 cm, poniżej 50 W/m2 - 20 cm.",
        "Limit hydrauliczny: Ostrzeżenie i rekomendacja podziału przy przekroczeniu długości pętli 120 mb.",
        "Optymalizacja ilości obwodów: Kalkulacja wymaganej liczby sekcji rozdzielacza do obsługi konkretnego pomieszczenia."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#webapp-kalkulator",
    "name": "Inżynierski Kalkulator Podziału Pętli Grzewczych",
    "description": "Dynamiczne narzędzie symulacyjne do wyliczania długości rur ogrzewania płaszczyznowego wraz ze zautomatyzowanym modułem sugerującym wymaganą ilość pętli.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski – Budowa bez ściemy"
    }
  }
]
</script>

<div class="rk-calc-container">
    <div class="rk-calc-header">
        <h2>Algorytm i kalkulator doboru pętli ogrzewania podłogowego</h2>
        <p>Zweryfikuj poprawność założeń instalacyjnych na podstawie inżynieryjnych wzorów fizyki budowli.</p>
    </div>

    <div class="rk-calc-ui">
        <div class="rk-calc-inputs">
            <div class="rk-calc-group">
                <div class="rk-calc-label">
                    <span>Powierzchnia grzejna pokoju</span>
                    <span class="rk-calc-value-badge" id="valArea">15 m&sup2;</span>
                </div>
                <input type="range" class="rk-slider" id="inArea" min="5" max="50" step="1" value="15">
            </div>

            <div class="rk-calc-group">
                <div class="rk-calc-label">
                    <span>Projektowe OZC pokoju</span>
                    <span class="rk-calc-value-badge" id="valOzc">1000 W</span>
                </div>
                <input type="range" class="rk-slider" id="inOzc" min="200" max="4500" step="50" value="1000">
            </div>

            <div class="rk-calc-group">
                <div class="rk-calc-label">
                    <span>Długość dobiegu do rozdzielacza</span>
                    <span class="rk-calc-value-badge" id="valDobieg">5 m</span>
                </div>
                <input type="range" class="rk-slider" id="inDobieg" min="1" max="25" step="1" value="5">
            </div>
        </div>

        <div class="rk-calc-outputs">
            <div class="rk-out-box">
                <div>
                    <p class="rk-out-title">Gęstość strumienia (q)</p>
                    <p class="rk-out-val" id="outFlux">76.7 W/m&sup2;</p>
                </div>
            </div>

            <div class="rk-out-box">
                <div>
                    <p class="rk-out-title">Zalecany rozstaw rur (b)</p>
                    <p class="rk-out-val" id="outSpacing">15 cm</p>
                </div>
            </div>

            <div class="rk-out-box rk-out-primary" id="boxLength">
                <p class="rk-out-title">Całkowita długość instalacji w pokoju</p>
                <p class="rk-out-val" id="outLength">110.5 m</p>
                
                <div class="rk-division-info" id="alertDivision">
                    <p class="rk-division-text">
                        Podział na: <span id="outLoopsCount">2 pętle</span> (śr. <span id="outSingleLoopLen">65</span> m/pętlę)
                    </p>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-calc-text-section">
        <h3>Procedura obliczeniowa krok po kroku:</h3>
        
        <div class="rk-step">
            <h4>Krok 1: Skorygowane obciążenie cieplne (Q<sub>obl</sub>)</h4>
            <p>Wyznaczamy realne zapotrzebowanie na moc grzewczą, uwzględniając sprawność systemu i straty w dół do gruntu. Współczynnik 1.15 to inżynierski zapas bezpieczeństwa.<br>
            <span class="rk-formula">Q<sub>obl</sub> = Q<sub>OZC</sub> &times; 1,15</span></p>
        </div>

        <div class="rk-step">
            <h4>Krok 2: Wymagana gęstość strumienia cieplnego (q)</h4>
            <p>Dzielimy moc przez powierzchnię. Według normy PN-EN 1264 maksymalna bezpieczna gęstość strumienia dla strefy stałego przebywania ludzi wynosi 100 W/m&sup2; (temperatura posadzki 29&deg;C).<br>
            <span class="rk-formula">q = Q<sub>obl</sub> / Powierzchnia [W/m&sup2;]</span></p>
        </div>

        <div class="rk-step">
            <h4>Krok 3: Wybór rozstawu rur (b)</h4>
            <p>Na podstawie gęstości strumienia dobieramy gęstość ułożenia rury:<br>
            &bull; <strong>q &gt; 80 W/m&sup2;</strong> &rarr; rozstaw <strong>10 cm</strong> (zapotrzebowanie: 10 m.b./m&sup2;)<br>
            &bull; <strong>q = 50 - 80 W/m&sup2;</strong> &rarr; rozstaw <strong>15 cm</strong> (zapotrzebowanie: 6,7 m.b./m&sup2;)<br>
            &bull; <strong>q &lt; 50 W/m&sup2;</strong> &rarr; rozstaw <strong>20 cm</strong> (zapotrzebowanie: 5 m.b./m&sup2;)</p>
        </div>

        <div class="rk-step">
            <h4>Krok 4: Całkowita długość rur i podział na pętle</h4>
            <p>Obliczamy całkowitą długość rury, uwzględniając dobiegi do rozdzielacza. Zgodnie z inżynierską sztuką, jeśli wynik przekracza bezpieczną granicę 100-120 mb, algorytm wymusza podział pomieszczenia na adekwatną liczbę mniejszych obwodów, aby zachować poprawne parametry hydrauliczne.<br>
            <span class="rk-formula">L = (Powierzchnia &times; Zapotrzebowanie/m&sup2;) + (Dobieg &times; 2)</span></p>
        </div>
    </div>

    <div class="rk-calc-cta">
        <h3>Nie zostawiaj hydrauliki przypadkowi</h3>
        <p>Błędnie dobrany rozstaw zablokuje przepływ i drastycznie podniesie rachunki za ogrzewanie. Zamów precyzyjne opracowanie inżynierskie.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-action">
            ZAMÓW PROJEKT PODŁOGÓWKI
            <svg width="20" height="20" 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() {
    // Referencje do suwaków i etykiet
    const inArea = document.getElementById('inArea');
    const valArea = document.getElementById('valArea');
    
    const inOzc = document.getElementById('inOzc');
    const valOzc = document.getElementById('valOzc');
    
    const inDobieg = document.getElementById('inDobieg');
    const valDobieg = document.getElementById('valDobieg');

    // Referencje do wyników
    const outFlux = document.getElementById('outFlux');
    const outSpacing = document.getElementById('outSpacing');
    const outLength = document.getElementById('outLength');
    
    const boxLength = document.getElementById('boxLength');
    const outLoopsCount = document.getElementById('outLoopsCount');
    const outSingleLoopLen = document.getElementById('outSingleLoopLen');

    // Główna funkcja licząca
    function calculate() {
        const area = parseFloat(inArea.value);
        const ozc = parseFloat(inOzc.value);
        const dobieg = parseFloat(inDobieg.value);

        // Krok 1 & 2
        const q_obl = ozc * 1.15;
        const q = q_obl / area;

        // Krok 3
        let spacing = 0;
        let factor = 0; // ile metrów rury na 1 m2

        if (q > 80) {
            spacing = 10;
            factor = 10;
        } else if (q >= 50 && q <= 80) {
            spacing = 15;
            factor = 6.7;
        } else {
            spacing = 20;
            factor = 5.0;
        }

        // Krok 4: Całkowita długość z dobiegami
        const totalLength = (area * factor) + (dobieg * 2);
        
        // Logika podziału na pętle (Limit 110m na jedną pętlę roboczą jako bezpieczny bufor)
        const safeLimit = 110; 
        const loopsNeeded = Math.ceil(totalLength / safeLimit);

        // Aktualizacja DOM
        outFlux.innerHTML = q.toFixed(1) + ' W/m&sup2;';
        outSpacing.innerHTML = spacing + ' cm';
        outLength.innerHTML = totalLength.toFixed(1);

        // Obsługa stanu z podziałem (wymagane > 1 pętli)
        if (loopsNeeded > 1) {
            boxLength.classList.add('is-warning');
            outLoopsCount.innerHTML = loopsNeeded + ' pętle';
            
            // Średnia długość pojedynczej pętli po podziale
            const singleLoopLen = totalLength / loopsNeeded;
            outSingleLoopLen.innerHTML = singleLoopLen.toFixed(1);
        } else {
            boxLength.classList.remove('is-warning');
        }
    }

    // Nasłuchiwacze na eventy 'input'
    inArea.addEventListener('input', function() {
        valArea.innerHTML = this.value + ' m&sup2;';
        calculate();
    });

    inOzc.addEventListener('input', function() {
        valOzc.innerHTML = this.value + ' W';
        calculate();
    });

    inDobieg.addEventListener('input', function() {
        valDobieg.innerHTML = this.value + ' m';
        calculate();
    });

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



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-primary: #dc2626; /* Czerwony jako główny akcent dla sekcji błędów */
    --rk-err-primary-hover: #b91c1c;
    --rk-err-bg: #ffffff;
    --rk-err-surface: #f8fafc;
    --rk-err-border: #e2e8f0;
    --rk-err-text: #334155;
    --rk-err-blue: #0284c7;
}

.rk-err-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-err-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(220, 38, 38, 0.1);
    border: 1px solid #fecaca;
    overflow: hidden;
}

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

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

.rk-err-header h2 svg {
    color: var(--rk-err-primary);
    flex-shrink: 0;
}

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

/* Układ główny */
.rk-err-layout {
    display: flex;
    background: var(--rk-err-bg);
}

/* Pasek boczny (Desktop) */
.rk-err-sidebar {
    width: 360px;
    background: var(--rk-err-surface);
    border-right: 1px solid var(--rk-err-border);
    padding: 30px 20px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.rk-err-tab-btn {
    width: 100%;
    text-align: left;
    padding: 16px 20px;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    color: #64748b;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 12px;
}

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

.rk-err-tab-btn.active {
    background: #ffffff;
    border-color: #fecaca;
    color: var(--rk-err-primary);
    box-shadow: 0 4px 10px rgba(220, 38, 38, 0.05);
}

.rk-err-tab-num {
    width: 28px;
    height: 28px;
    border-radius: 8px;
    background: #e2e8f0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: inherit;
    font-weight: 900;
    font-size: 13px;
    transition: all 0.3s;
    flex-shrink: 0;
}

.rk-err-tab-btn.active .rk-err-tab-num {
    background: var(--rk-err-primary);
    color: #ffffff;
}

/* Obszar treści */
.rk-err-content-area {
    flex: 1;
    padding: 40px;
    position: relative;
    min-height: 250px;
}

.rk-err-panel {
    display: none;
    animation: errFadeIn 0.4s ease forwards;
}

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

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

/* Triggery mobilne */
.rk-err-mobile-trigger {
    display: none;
    width: 100%;
    text-align: left;
    padding: 20px;
    background: var(--rk-err-surface);
    border: 1px solid var(--rk-err-border);
    border-radius: 12px;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-err-dark);
    margin-bottom: 10px;
    cursor: pointer;
    align-items: center;
    justify-content: space-between;
}

.rk-err-mobile-trigger.active {
    border-color: var(--rk-err-primary);
    color: var(--rk-err-primary);
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    margin-bottom: 0;
    border-bottom: none;
    background: #fff5f5;
}

.rk-err-toggle-icon {
    transition: transform 0.3s;
}

.rk-err-mobile-trigger.active .rk-err-toggle-icon {
    transform: rotate(180deg);
}

/* Wnętrze paneli */
.rk-err-panel-inner {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-err-panel h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-err-dark);
    margin: 0 0 10px 0;
}

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

.rk-err-panel p strong {
    color: var(--rk-err-primary);
}

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

.rk-err-panel a:hover {
    color: #0369a1;
    border-bottom-color: #0369a1;
}

/* RWD - Mobile */
@media (max-width: 768px) {
    .rk-err-header, .rk-err-content-area { padding: 30px 20px; }
    .rk-err-header h2 { font-size: 24px; }
    
    .rk-err-layout { flex-direction: column; }
    .rk-err-sidebar { display: none; }
    
    .rk-err-content-area { padding: 20px; }
    
    .rk-err-panel {
        display: block;
        margin-bottom: 10px;
    }
    
    .rk-err-mobile-trigger {
        display: flex;
    }
    
    .rk-err-panel-inner {
        padding: 20px;
        background: #ffffff;
        border: 1px solid var(--rk-err-primary);
        border-top: none;
        border-bottom-left-radius: 12px;
        border-bottom-right-radius: 12px;
        display: none;
    }
    
    .rk-err-panel.active .rk-err-panel-inner {
        display: flex;
    }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/"
    },
    "headline": "Najczęstsze błędy instalatorów przy montażu podłogówki bez projektu",
    "description": "Zestawienie krytycznych błędów instalacyjnych: brak dylatacji, błędne średnice rur, ignorowanie oporu okładzin i montaż pod stałą zabudową.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski – Budowa bez ściemy",
      "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-14",
    "dateModified": "2026-06-14"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#dataset-bledy",
    "name": "Rejestr Krytycznych Błędów Wykonawczych Ogrzewania Płaszczyznowego",
    "description": "Baza danych powiązanych błędów fizycznych instalacji z ich mierzalnymi skutkami eksploatacyjnymi, wykraczającymi poza normy ujęte w PN-EN 1264.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski – Budowa bez ściemy"
    },
    "keywords": [
      "jak rodzaj okładziny podłogowej wpływa na ogrzewanie",
      "strefa brzegowa obwodowa w ogrzewaniu podłogowym",
      "izolacja brzegowa i dylatacje w instalacji",
      "jaka średnica rury zasilającej rozdzielacz",
      "wodne ogrzewanie podłogowe a meble"
    ],
    "measurementTechnique": "Analiza inżynierska skutków odchyleń od normatywnych projektów technicznych, diagnozująca spadek sprawności systemu oraz uszkodzenia mechaniczne jastrychu.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Opór okładziny: Parkiet blokuje emisję cieplną, obniżając temp. o 4°C w stosunku do założeń.",
        "Brak dylatacji: Ryzyko pękania posadzek powyżej 40 m2 lub 8 mb długości.",
        "Zła średnica: Rura 20 mm dla 10 pętli tworzy wąskie gardło hydrauliczne.",
        "Strefy brzegowe: Ignorowanie przeszkleń prowadzi do strumieni zimna."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#webapp-bledy",
    "name": "Baza Błędów Instalacyjnych (Interaktywny Komponent)",
    "description": "Moduł edukacyjny pozwalający inwestorowi na identyfikację krytycznych punktów awarii w systemie ogrzewania płaszczyznowego wynikających z braku dokumentacji.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski – Budowa bez ściemy"
    }
  }
]
</script>

<div class="rk-err-container" id="skaner-bledow-app">
    <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>
            Skaner Krytycznych Błędów Instalatorskich
        </h2>
        <p>Montaż "na pamięć" niemal zawsze kończy się uszkodzeniem posadzki lub brakiem komfortu. Sprawdź 5 najczęstszych punktów zapalnych w instalacjach bez projektu.</p>
    </div>

    <div class="rk-err-layout">
        <div class="rk-err-sidebar">
            <button class="rk-err-tab-btn active" data-target="okladziny">
                <div class="rk-err-tab-num">1</div>
                Ignorowanie oporu okładzin
            </button>
            <button class="rk-err-tab-btn" data-target="strefy">
                <div class="rk-err-tab-num">2</div>
                Brak stref brzegowych
            </button>
            <button class="rk-err-tab-btn" data-target="dylatacje">
                <div class="rk-err-tab-num">3</div>
                Brak dylatacji (Pękanie)
            </button>
            <button class="rk-err-tab-btn" data-target="srednice">
                <div class="rk-err-tab-num">4</div>
                Złe średnice rury zasilającej
            </button>
            <button class="rk-err-tab-btn" data-target="meble">
                <div class="rk-err-tab-num">5</div>
                Montaż pod stałą zabudową
            </button>
        </div>

        <div class="rk-err-content-area" id="rkErrContentArea">
            
            <div class="rk-err-panel active" id="err-okladziny">
                <button class="rk-err-mobile-trigger active">
                    1. Ignorowanie oporu okładzin
                    <svg class="rk-err-toggle-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </button>
                <div class="rk-err-panel-inner">
                    <div>
                        <h3>Blokada strumienia cieplnego</h3>
                        <p>Najgroźniejszym błędem jest całkowite ignorowanie zjawiska oporu termicznego materiałów. Zastosowanie grubego parkietu drewnianego zamiast płytek ceramicznych tworzy izolator, który <strong>obniża temperaturę w pomieszczeniu nawet o 4°C</strong> w stosunku do początkowych założeń i wymusza wyższe koszty pracy pompy ciepła.</p>
                        <p>Dowiedz się więcej, <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">jak rodzaj okładziny podłogowej wpływa na wydajność</a> systemu.</p>
                    </div>
                </div>
            </div>

            <div class="rk-err-panel" id="err-strefy">
                <button class="rk-err-mobile-trigger">
                    2. Brak stref brzegowych
                    <svg class="rk-err-toggle-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </button>
                <div class="rk-err-panel-inner">
                    <div>
                        <h3>Kondensacja i strumienie zimna</h3>
                        <p>Instalatorzy rutynowo ignorują zwiększone zapotrzebowanie na moc przy oknach tarasowych typu HS. Prowadzi to do powstawania wychłodzonych mas powietrza ("strumieni zimna" spływających po szybie) oraz <strong>niebezpiecznej kondensacji pary wodnej</strong> na profilach okiennych.</p>
                        <p>Prawidłowo zaprojektowana <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-obwodowa-w-ogrzewaniu-podlogowym/">strefa brzegowa (obwodowa)</a> w 100% rozwiązuje ten problem.</p>
                    </div>
                </div>
            </div>

            <div class="rk-err-panel" id="err-dylatacje">
                <button class="rk-err-mobile-trigger">
                    3. Brak dylatacji (Pękanie)
                    <svg class="rk-err-toggle-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </button>
                <div class="rk-err-panel-inner">
                    <div>
                        <h3>Destrukcja jastrychu i płytek</h3>
                        <p>Brak wykonania szczelin dylatacyjnych na progach drzwiowych oraz przy powierzchniach jastrychu <strong>powyżej 40 m² (lub przy długości boku pow. 8 m)</strong> to pewna katastrofa. Praca termiczna posadzki niechybnie spowoduje pękanie płytek ceramicznych, a w skrajnych przypadkach zerwanie rur PEX pod wylewką.</p>
                        <p>Zobacz pełne normy na temat <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">izolacji brzegowej i dylatacji</a>.</p>
                    </div>
                </div>
            </div>

            <div class="rk-err-panel" id="err-srednice">
                <button class="rk-err-mobile-trigger">
                    4. Złe średnice rury zasilającej
                    <svg class="rk-err-toggle-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </button>
                <div class="rk-err-panel-inner">
                    <div>
                        <h3>Wąskie gardło hydrauliczne</h3>
                        <p>Nagminną praktyką jest podłączanie dużego rozdzielacza (obsługującego np. 10 lub 12 pętli grzewczych) zbyt cienką rurą. Użycie rury o średnicy <strong>20 mm zamiast wymaganej 26 mm lub 32 mm</strong> drastycznie ucina przepływ masowy czynnika do belek rozdzielacza, co dławi wydajność instalacji.</p>
                        <p>Zawsze weryfikuj projekt, sprawdzając, <a href="https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/">jaka średnica rury zasilającej rozdzielacz</a> jest wymagana fizycznie.</p>
                    </div>
                </div>
            </div>

            <div class="rk-err-panel" id="err-meble">
                <button class="rk-err-mobile-trigger">
                    5. Montaż pod stałą zabudową
                    <svg class="rk-err-toggle-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </button>
                <div class="rk-err-panel-inner">
                    <div>
                        <h3>Zniszczenie wyposażenia wnętrz</h3>
                        <p>Układanie obwodów grzewczych bezpośrednio pod szafkami kuchennymi, wannami z obudową czy kuchennymi wyspami prowadzi do <strong>ekstremalnego przegrzewania mebli</strong>. Odcięty obieg powietrza marnuje wyprodukowaną energię i drastycznie przyspiesza rozsuszanie się i pękanie konstrukcji meblowych.</p>
                        <p>Prawidłowy projekt przewiduje tzw. strefy wyłączone, integrując <a href="https://projekt-ogrzewania.pl/wodne-ogrzewanie-podlogowe-a-meble-jak-polaczyc-komfort-i-aranzacje/">wodne ogrzewanie podłogowe a meble</a> w sposób bezpieczny dla obu stron.</p>
                    </div>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const isMobile = window.innerWidth <= 768;
    
    // Obsługa dla Desktop (Tabs)
    const tabBtns = document.querySelectorAll('.rk-err-tab-btn');
    const panels = document.querySelectorAll('.rk-err-panel');
    
    tabBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            if (window.innerWidth <= 768) return; 
            
            // Reset
            tabBtns.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));
            
            // Activate
            this.classList.add('active');
            const targetId = 'err-' + this.getAttribute('data-target');
            document.getElementById(targetId).classList.add('active');
        });
    });

    // Obsługa dla Mobile (Akordeon)
    const mobileTriggers = document.querySelectorAll('.rk-err-mobile-trigger');
    
    mobileTriggers.forEach(trigger => {
        trigger.addEventListener('click', function() {
            if (window.innerWidth > 768) return; 
            
            const parentPanel = this.parentElement;
            const isActive = this.classList.contains('active');
            
            // Zamknij wszystkie
            document.querySelectorAll('.rk-err-panel').forEach(p => {
                p.classList.remove('active');
                p.querySelector('.rk-err-mobile-trigger').classList.remove('active');
            });
            
            // Otwórz kliknięty jeśli był zamknięty
            if (!isActive) {
                parentPanel.classList.add('active');
                this.classList.add('active');
            }
        });
    });

    window.addEventListener('resize', function() {
        if (window.innerWidth > 768) {
            let hasActive = false;
            panels.forEach(p => { if(p.classList.contains('active')) hasActive = true; });
            
            if(!hasActive) {
                tabBtns[0].classList.add('active');
                panels[0].classList.add('active');
            }
        }
    });
});
</script>



<style>
:root {
    --rk-mat-dark: #0f172a;
    --rk-mat-primary: #0284c7;
    --rk-mat-primary-hover: #0369a1;
    --rk-mat-bg: #ffffff;
    --rk-mat-surface: #f8fafc;
    --rk-mat-border: #e2e8f0;
    --rk-mat-text: #334155;
    --rk-mat-accent: #38bdf8;
    --rk-mat-success: #10b981;
    --rk-mat-warning: #f59e0b;
}

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

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

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

.rk-mat-header h2 svg {
    color: var(--rk-mat-accent);
    flex-shrink: 0;
}

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

/* Układ główny - Desktop Tabs, Mobile Accordion */
.rk-mat-layout {
    display: flex;
    background: var(--rk-mat-bg);
}

/* Pasek boczny (Desktop) */
.rk-mat-sidebar {
    width: 320px;
    background: var(--rk-mat-surface);
    border-right: 1px solid var(--rk-mat-border);
    padding: 30px 20px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.rk-mat-tab-btn {
    width: 100%;
    text-align: left;
    padding: 18px 20px;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 700;
    color: #64748b;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 15px;
}

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

.rk-mat-tab-btn.active {
    background: #ffffff;
    border-color: var(--rk-mat-border);
    color: var(--rk-mat-primary);
    box-shadow: 0 4px 10px rgba(0,0,0,0.03);
}

.rk-mat-tab-icon {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    background: #e2e8f0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: inherit;
    transition: all 0.3s;
}

.rk-mat-tab-btn.active .rk-mat-tab-icon {
    background: var(--rk-mat-primary);
    color: #ffffff;
}

/* Obszar treści */
.rk-mat-content-area {
    flex: 1;
    padding: 40px;
    position: relative;
    min-height: 250px;
}

.rk-mat-panel {
    display: none;
    animation: matFadeIn 0.4s ease forwards;
}

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

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

/* Triggery mobilne (ukryte na desktopie) */
.rk-mat-mobile-trigger {
    display: none;
    width: 100%;
    text-align: left;
    padding: 20px;
    background: var(--rk-mat-surface);
    border: 1px solid var(--rk-mat-border);
    border-radius: 12px;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-mat-dark);
    margin-bottom: 10px;
    cursor: pointer;
    align-items: center;
    justify-content: space-between;
}

.rk-mat-mobile-trigger.active {
    border-color: var(--rk-mat-primary);
    color: var(--rk-mat-primary);
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    margin-bottom: 0;
    border-bottom: none;
}

.rk-mat-toggle-icon {
    transition: transform 0.3s;
}

.rk-mat-mobile-trigger.active .rk-mat-toggle-icon {
    transform: rotate(180deg);
}

/* Wnętrze paneli */
.rk-mat-panel-inner {
    display: grid;
    gap: 15px;
}

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

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

.rk-mat-panel p strong {
    color: var(--rk-mat-dark);
}

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

.rk-mat-panel a:hover {
    color: var(--rk-mat-primary-hover);
    border-bottom-color: var(--rk-mat-primary);
}

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

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

.rk-mat-cta-section p {
    color: #64748b;
    margin: 0 auto 30px auto;
    max-width: 600px;
    line-height: 1.6;
}

.rk-btn-product {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-mat-primary);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 45px;
    border-radius: 16px;
    text-decoration: none !important;
    border: none;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-btn-product:hover {
    transform: translateY(-5px);
    background: var(--rk-mat-primary-hover);
    box-shadow: 0 20px 35px -5px rgba(2, 132, 199, 0.5);
}

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

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

/* RWD - Mobile (Układ Pionowy / Akordeon) */
@media (max-width: 768px) {
    .rk-mat-header, .rk-mat-content-area, .rk-mat-cta-section { padding: 30px 20px; }
    .rk-mat-header h2 { font-size: 24px; }
    
    .rk-mat-layout { flex-direction: column; }
    .rk-mat-sidebar { display: none; }
    
    .rk-mat-content-area { padding: 20px; }
    
    .rk-mat-panel {
        display: block;
        margin-bottom: 10px;
    }
    
    .rk-mat-mobile-trigger {
        display: flex;
    }
    
    .rk-mat-panel-inner {
        padding: 20px;
        background: #ffffff;
        border: 1px solid var(--rk-mat-primary);
        border-top: none;
        border-bottom-left-radius: 12px;
        border-bottom-right-radius: 12px;
        display: none;
    }
    
    .rk-mat-panel.active .rk-mat-panel-inner {
        display: grid;
    }
    
    .rk-btn-product { width: 100%; padding: 18px 20px; font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#article-obliczenia",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/"
    },
    "headline": "Jak profesjonalne obliczenia wpływają na projekt ogrzewania podłogowego?",
    "description": "Poznaj 4 filary poprawnej instalacji płaszczyznowej. Interaktywna matryca wpływu obliczeń OZC na dobór rur, izolacji i pompę obiegową.",
    "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-14",
    "dateModified": "2026-06-14"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#dataset-obliczenia",
    "name": "Matryca Parametrów Projektowych Ogrzewania Podłogowego",
    "description": "Zestawienie technicznych współzależności pomiędzy zapotrzebowaniem na energię cieplną a fizycznymi elementami instalacji (rury, styropian, pompa).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator strat ciepła budynku",
      "rozmieszczenie pętli grzewczych w ogrzewaniu podłogowym",
      "grubość styropianu pod ogrzewanie podłogowe",
      "dobór pompy obiegowej w ogrzewaniu podłogowym",
      "obliczeniowe zapotrzebowanie na ciepło OZC"
    ],
    "measurementTechnique": "Algorytmiczne mapowanie wyników OZC na parametry instalacji: opór cieplny izolacji, gęstość strumienia ciepła (rozstaw rur) oraz opory hydrauliczne (dobór pompy).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Integracja OZC: Precyzyjne zdefiniowanie mocy od 40 W/m2 do 90 W/m2 w zależności od przegród.",
        "Parametry izolacji: Minimum 15–20 cm EPS 100 dla podłóg na gruncie.",
        "Wysokość podnoszenia: Wyliczenie sumarycznego oporu dla doboru pompy na 4m lub 6m słupa wody."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#webapp-obliczenia",
    "name": "Symulator Wpływu Obliczeń na Instalację (Matryca HVAC)",
    "description": "Interaktywny panel ilustrujący powiązania między danymi wejściowymi (OZC) a wymiarowaniem poszczególnych komponentów systemu podłogowego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-mat-container" id="matryca-obliczen-app">
    <div class="rk-mat-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>
            Fundament Instalacji
        </h2>
        <p>Każdy aspekt fizyczny działania ogrzewania płaszczyznowego jest powiązany z dokumentacją techniczną, która spaja parametry źródła ciepła z właściwościami budynku.</p>
    </div>

    <div class="rk-mat-layout">
        <div class="rk-mat-sidebar">
            <button class="rk-mat-tab-btn active" data-target="ozc">
                <div class="rk-mat-tab-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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>
                Integracja z OZC
            </button>
            <button class="rk-mat-tab-btn" data-target="rozstaw">
                <div class="rk-mat-tab-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><path d="M3 9h18M9 21V9"></path></svg></div>
                Rozstaw rur (Geometria)
            </button>
            <button class="rk-mat-tab-btn" data-target="wylewka">
                <div class="rk-mat-tab-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg></div>
                Styropian i Wylewka
            </button>
            <button class="rk-mat-tab-btn" data-target="pompa">
                <div class="rk-mat-tab-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><path d="M12 16v-4M12 8h.01"></path></svg></div>
                Parametry Pompy
            </button>
        </div>

        <div class="rk-mat-content-area" id="rkMatContentArea">
            
            <div class="rk-mat-panel active" id="panel-ozc">
                <button class="rk-mat-mobile-trigger active">
                    1. Integracja z OZC
                    <svg class="rk-mat-toggle-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </button>
                <div class="rk-mat-panel-inner">
                    <div>
                        <h3>Obliczeniowe Zapotrzebowanie na Ciepło</h3>
                        <p>OZC determinuje dokładnie, ile watów energii ucieka przez każdą przegrodę w Twoim domu (ścianę, okno, podłogę na gruncie). Bez tego bilansu projektant nie wie, czy w danym pokoju potrzebuje dostarczyć <strong>40 W/m²</strong> czy może aż <strong>90 W/m²</strong>.</p>
                        <p>Działanie "w ciemno" skutkuje przewymiarowaniem źródła ciepła. Dowiedz się, jak wykorzystać <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">kalkulator strat ciepła budynku</a> do oceny inwestycji.</p>
                    </div>
                </div>
            </div>

            <div class="rk-mat-panel" id="panel-rozstaw">
                <button class="rk-mat-mobile-trigger">
                    2. Rozstaw rur (Geometria)
                    <svg class="rk-mat-toggle-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </button>
                <div class="rk-mat-panel-inner">
                    <div>
                        <h3>Precyzyjny dobór rozstawu rur</h3>
                        <p>Projekt jednoznacznie określa, gdzie zagęścić rury (np. <strong>co 10 cm</strong> w łazience i strefie podokiennej), a gdzie można je rozrzedzić (<strong>co 20 cm</strong> w sypialni). Takie podejście zapobiega efektowi „zimnych stref” lub nieznośnego przegrzania pomieszczeń.</p>
                        <p>Sprawdź, jak optymalnie <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">zaplanować rozmieszczenie pętli grzewczych</a>, aby uniknąć strat ciśnienia.</p>
                    </div>
                </div>
            </div>

            <div class="rk-mat-panel" id="panel-wylewka">
                <button class="rk-mat-mobile-trigger">
                    3. Styropian i Wylewka
                    <svg class="rk-mat-toggle-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </button>
                <div class="rk-mat-panel-inner">
                    <div>
                        <h3>Wpływ na grubość styropianu i jastrychu</h3>
                        <p>Obliczenia inżynieryjne definiują minimalny opór cieplny izolacji pionowej. Zastanawiasz się, <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">ile styropianu pod ogrzewanie podłogowe</a> na gruncie? Zazwyczaj wymaga się minimum <strong>15–20 cm EPS 100</strong>, aby ciepło nie uciekało do ziemi.</p>
                        <p>Ponadto, grubość wylewki (standardowo 4,5–5 cm powyżej korony rury dla wylewki anhydrytowej lub 6 cm dla cementowej) określa całkowitą bezwładność cieplną układu.</p>
                    </div>
                </div>
            </div>

            <div class="rk-mat-panel" id="panel-pompa">
                <button class="rk-mat-mobile-trigger">
                    4. Parametry Pompy
                    <svg class="rk-mat-toggle-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </button>
                <div class="rk-mat-panel-inner">
                    <div>
                        <h3>Parametry hydrauliczne pompy obiegowej</h3>
                        <p>Projektant wylicza sumaryczny opór hydrauliczny najdłuższej pętli wraz z oporami miejscowymi na rozdzielaczu i sprzęgle hydraulicznym. Na tej podstawie dobiera się wysokość podnoszenia pompy (np. <strong>4m lub 6m słupa wody</strong>).</p>
                        <p>Dzięki zastosowaniu <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulatora doboru pompy obiegowej</a> oraz średnicy rury zasilającej, eliminuje się ryzyko niedostatecznego zasilenia skrajnych pętli grzewczych.</p>
                    </div>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-mat-cta-section">
        <h3>Przestań zgadywać. Zacznij inwestować w pewność.</h3>
        <p>Brak projektu to gwarancja wyższych kosztów materiałowych i eksploatacyjnych. Zamów profesjonalną dokumentację wykonawczą i zyskaj 100% kontroli nad swoim budżetem i komfortem.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-product">
            ZAMÓW PROFESJONALNY PROJEKT PODŁOGÓWKI
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const isMobile = window.innerWidth <= 768;
    
    // Obsługa dla Desktop (Tabs)
    const tabBtns = document.querySelectorAll('.rk-mat-tab-btn');
    const panels = document.querySelectorAll('.rk-mat-panel');
    
    tabBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            if (window.innerWidth <= 768) return; 
            
            // Reset
            tabBtns.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));
            
            // Activate
            this.classList.add('active');
            const targetId = 'panel-' + this.getAttribute('data-target');
            document.getElementById(targetId).classList.add('active');
        });
    });

    // Obsługa dla Mobile (Akordeon)
    const mobileTriggers = document.querySelectorAll('.rk-mat-mobile-trigger');
    
    mobileTriggers.forEach(trigger => {
        trigger.addEventListener('click', function() {
            if (window.innerWidth > 768) return; 
            
            const parentPanel = this.parentElement;
            const isActive = this.classList.contains('active');
            
            // Zamknij wszystkie
            document.querySelectorAll('.rk-mat-panel').forEach(p => {
                p.classList.remove('active');
                p.querySelector('.rk-mat-mobile-trigger').classList.remove('active');
            });
            
            // Otwórz kliknięty jeśli był zamknięty
            if (!isActive) {
                parentPanel.classList.add('active');
                this.classList.add('active');
            }
        });
    });

    window.addEventListener('resize', function() {
        if (window.innerWidth > 768) {
            let hasActive = false;
            panels.forEach(p => { if(p.classList.contains('active')) hasActive = true; });
            
            if(!hasActive) {
                tabBtns[0].classList.add('active');
                panels[0].classList.add('active');
            }
        }
    });
});
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-primary: #0284c7;
    --rk-case-bg: #ffffff;
    --rk-case-surface: #f8fafc;
    --rk-case-border: #e2e8f0;
    --rk-case-text: #334155;
    --rk-case-danger: #ef4444;
    --rk-case-danger-bg: #fef2f2;
    --rk-case-success: #10b981;
    --rk-case-success-bg: #ecfdf5;
    --rk-case-accent: #8b5cf6; /* Fioletowy akcent dla Case Study */
}

.rk-case-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-case-bg);
    border-radius: 20px;
    box-shadow: 0 25px 50px -12px rgba(139, 92, 246, 0.1);
    border: 1px solid var(--rk-case-border);
    overflow: hidden;
}

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

.rk-case-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: rgba(139, 92, 246, 0.2);
    color: #c4b5fd;
    padding: 6px 12px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(139, 92, 246, 0.3);
}

.rk-case-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 10px 0;
    color: #ffffff;
    line-height: 1.3;
}

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

/* Układ główny */
.rk-case-layout {
    display: grid;
    grid-template-columns: 350px 1fr;
    background: var(--rk-case-bg);
}

/* Sekcja Historii (Lewa) */
.rk-case-story {
    padding: 40px 30px;
    background: var(--rk-case-surface);
    border-right: 1px solid var(--rk-case-border);
}

.rk-case-investor {
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 25px;
    padding-bottom: 20px;
    border-bottom: 2px dashed var(--rk-case-border);
}

.rk-case-avatar {
    width: 50px;
    height: 50px;
    background: var(--rk-case-accent);
    color: #ffffff;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    font-weight: 900;
}

.rk-case-investor-info h4 {
    margin: 0 0 4px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-case-dark);
}

.rk-case-investor-info p {
    margin: 0;
    font-size: 13px;
    color: #64748b;
    font-weight: 600;
}

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

.rk-case-quote {
    background: #ffffff;
    padding: 15px;
    border-left: 3px solid var(--rk-case-danger);
    border-radius: 0 8px 8px 0;
    font-style: italic;
    font-weight: 600;
    color: var(--rk-case-dark);
    margin: 20px 0;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

/* Interaktywny Audyt (Prawa) */
.rk-case-audit {
    padding: 40px;
}

.rk-case-audit-title {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-case-dark);
    margin: 0 0 20px 0;
    text-transform: uppercase;
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Zakładki / Toggles */
.rk-case-tabs {
    display: flex;
    gap: 10px;
    margin-bottom: 30px;
    background: var(--rk-case-surface);
    padding: 6px;
    border-radius: 12px;
    border: 1px solid var(--rk-case-border);
}

.rk-case-tab-btn {
    flex: 1;
    padding: 12px 15px;
    border: none;
    background: transparent;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 800;
    color: #64748b;
    cursor: pointer;
    transition: all 0.3s;
    text-align: center;
}

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

.rk-case-tab-btn.active {
    background: #ffffff;
    color: var(--rk-case-accent);
    box-shadow: 0 2px 5px rgba(0,0,0,0.05);
}

/* Karty Audytu */
.rk-case-panel {
    display: none;
    animation: caseFadeIn 0.4s ease forwards;
}

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

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

.rk-case-myth, .rk-case-fact {
    padding: 25px;
    border-radius: 16px;
    margin-bottom: 20px;
    position: relative;
}

.rk-case-myth {
    background: var(--rk-case-danger-bg);
    border: 1px solid #fecaca;
}

.rk-case-fact {
    background: var(--rk-case-success-bg);
    border: 1px solid #a7f3d0;
}

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

.rk-case-card-icon {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #ffffff;
    font-weight: 900;
}

.rk-case-myth .rk-case-card-icon { background: var(--rk-case-danger); }
.rk-case-fact .rk-case-card-icon { background: var(--rk-case-success); }

.rk-case-card-header h4 {
    margin: 0;
    font-size: 16px;
    font-weight: 900;
    text-transform: uppercase;
}

.rk-case-myth h4 { color: var(--rk-case-danger); }
.rk-case-fact h4 { color: var(--rk-case-success); }

.rk-case-card-text {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-case-dark);
    margin: 0;
    font-weight: 500;
}

.rk-case-card-text a {
    color: var(--rk-case-primary);
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* RWD - Mobile */
@media (max-width: 768px) {
    .rk-case-header { padding: 30px 20px; }
    .rk-case-header h2 { font-size: 24px; }
    
    .rk-case-layout { grid-template-columns: 1fr; }
    
    .rk-case-story { padding: 30px 20px; border-right: none; border-bottom: 1px solid var(--rk-case-border); }
    .rk-case-audit { padding: 30px 20px; }
    
    .rk-case-tabs { flex-direction: column; padding: 4px; gap: 4px; }
    .rk-case-tab-btn { padding: 14px; }
    
    .rk-case-myth, .rk-case-fact { padding: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/"
    },
    "headline": "Case Study: Zderzenie inwestora z mitami instalatorów",
    "description": "Analiza przypadku Pani Janiny z Suwałk. Weryfikacja popularnych mitów instalacyjnych: układania rur 'co 10 cm', losowych długości pętli oraz braku zapotrzebowania energetycznego OZC.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski – Budowa bez ściemy",
      "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-14",
    "dateModified": "2026-06-14"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#dataset-casestudy",
    "name": "Zestawienie: Praktyka potoczna vs Standard inżynierski HVAC",
    "description": "Porównanie błędnych, uogólnionych zaleceń monterskich z precyzyjnymi normami doboru parametrów ogrzewania podłogowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski – Budowa bez ściemy"
    },
    "keywords": [
      "rozstaw rur w wodnym ogrzewaniu podłogowym",
      "maksymalna długość pętli ogrzewania podłogowego",
      "projektowe obciążenie cieplne ozc",
      "najczęstsze błędy przy montażu ogrzewania podłogowego",
      "weryfikacja instalatora podłogówki"
    ],
    "measurementTechnique": "Jakościowa ocena poprawności parametrów brzegowych (długość obwodu, rozstaw przewodów, moc cieplna) względem rygorów technicznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Weryfikacja rozstawu: Obalenie mitu 'zawsze 10 cm' na rzecz rozstawu zmiennego opartego na gęstości strumienia cieplnego.",
        "Weryfikacja długości: Parametryzacja długości pętli (80m vs 120m) na podstawie oporów hydraulicznych i wydajności pompy.",
        "Weryfikacja OZC: Konieczność wykonania bilansu jako jedynej podstawy legalnego i sprawnego doboru komponentów."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#webapp-casestudy",
    "name": "Interaktywny Audyt Inwestorski",
    "description": "Narzędzie edukacyjne pozwalające na interaktywną weryfikację potocznych stwierdzeń wykonawców grzewczych z inżynieryjnym stanem faktycznym.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski – Budowa bez ściemy"
    }
  }
]
</script>

<div class="rk-case-container">
    <div class="rk-case-header">
        <div class="rk-case-badge">Case Study #402</div>
        <h2>Pani Janina z Suwałk i mit "Zawsze tak robimy"</h2>
        <p>Zobacz, jak inżynieryjne fakty demaskują zgubne rzemieślnicze nawyki na realnym przykładzie z budowy.</p>
    </div>

    <div class="rk-case-layout">
        
        <div class="rk-case-story">
            <div class="rk-case-investor">
                <div class="rk-case-avatar">J</div>
                <div class="rk-case-investor-info">
                    <h4>Pani Janina</h4>
                    <p>Budowa: Dom parterowy, 120 m² (Suwałki)</p>
                </div>
            </div>

            <p class="rk-case-story-text">
                Pani Janina zwróciła się do naszego zespołu kompletnie zdezorientowana. Była po wstępnych rozmowach z trzema różnymi ekipami hydraulicznymi i każda mówiła co innego. 
            </p>
            <p class="rk-case-story-text">
                Jeden z instalatorów zarzekał się, że pętle mogą mieć maksymalnie 80 metrów, inny twierdził, że spokojnie ułoży 120 metrów. Co ciekawe, <strong>wszyscy trzej byli całkowicie zgodni w jednym aspekcie:</strong>
            </p>

            <div class="rk-case-quote">
                "Pani Janino, rurkę kładziemy wszędzie gęsto, co 10 centymetrów. Będzie ciepło i na pewno będzie Pani zadowolona!"
            </div>

            <p class="rk-case-story-text">
                Gdy świadoma inwestorka dopytała, na jakiej podstawie dobrali ten rozstaw i czy wykonali wcześniej bilans energetyczny (OZC) budynku, usłyszała klasykę polskiej budowlanki: <em>"A po co te papiery? Zawsze tak robimy i nikt jeszcze nie narzekał"</em>.
            </p>
        </div>

        <div class="rk-case-audit">
            <h3 class="rk-case-audit-title">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--rk-case-accent)" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" style="margin-top:-2px;"><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="9" y1="15" x2="15" y2="15"></line></svg>
                Audyt Ekspercki
            </h3>

            <div class="rk-case-tabs">
                <button class="rk-case-tab-btn active" data-myth="ozc">Brak OZC</button>
                <button class="rk-case-tab-btn" data-myth="rozstaw">Rozstaw "co 10 cm"</button>
                <button class="rk-case-tab-btn" data-myth="dlugosc">Długość pętli</button>
            </div>

            <div class="rk-case-panel active" id="myth-ozc">
                <div class="rk-case-myth">
                    <div class="rk-case-card-header">
                        <div class="rk-case-card-icon">
                            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
                        </div>
                        <h4>Instalator mówił:</h4>
                    </div>
                    <p class="rk-case-card-text">"Po co te papiery i OZC? Przecież dom to dom, wrzuci się podłogówkę i będzie działać."</p>
                </div>

                <div class="rk-case-fact">
                    <div class="rk-case-card-header">
                        <div class="rk-case-card-icon">
                            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                        </div>
                        <h4>Werdykt Inżyniera:</h4>
                    </div>
                    <p class="rk-case-card-text">
                        Brak wyliczeń to absolutny fundament <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">najczęstszych błędów przy montażu</a>. Bez precyzyjnego <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowego obciążenia cieplnego (OZC)</a> nikt – nawet najlepszy fachowiec – nie wie, ile energii ucieka przez przegrody. To prowadzi do drastycznego przewymiarowania lub niedogrzania systemu.
                    </p>
                </div>
            </div>

            <div class="rk-case-panel" id="myth-rozstaw">
                <div class="rk-case-myth">
                    <div class="rk-case-card-header">
                        <div class="rk-case-card-icon">
                            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
                        </div>
                        <h4>Instalator mówił:</h4>
                    </div>
                    <p class="rk-case-card-text">"Dajemy wszędzie gęsto, równo co 10 centymetrów na całej powierzchni podłogi."</p>
                </div>

                <div class="rk-case-fact">
                    <div class="rk-case-card-header">
                        <div class="rk-case-card-icon">
                            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                        </div>
                        <h4>Werdykt Inżyniera:</h4>
                    </div>
                    <p class="rk-case-card-text">
                        Rozstaw rur to zmienna. W łazience możemy dać rurki co 10 cm, ale w dobrze wyizolowanej sypialni układanie co 10 cm to marnotrawstwo rury i gwarancja przegrzania (dyskomfortu do spania). Prawidłowy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur w wodnym ogrzewaniu podłogowym</a> wylicza się na podstawie gęstości strumienia cieplnego.
                    </p>
                </div>
            </div>

            <div class="rk-case-panel" id="myth-dlugosc">
                <div class="rk-case-myth">
                    <div class="rk-case-card-header">
                        <div class="rk-case-card-icon">
                            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
                        </div>
                        <h4>Instalator mówił:</h4>
                    </div>
                    <p class="rk-case-card-text">Jeden chciał robić pętle po 80 metrów, drugi twierdził, że "spokojnie pociągnie" do 120 metrów rury na jednym obwodzie.</p>
                </div>

                <div class="rk-case-fact">
                    <div class="rk-case-card-header">
                        <div class="rk-case-card-icon">
                            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                        </div>
                        <h4>Werdykt Inżyniera:</h4>
                    </div>
                    <p class="rk-case-card-text">
                        Prawda leży w hydraulice. <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">Maksymalna długość pętli</a> dla rury 16x2.0 nie powinna przekraczać 120m, ale dąży się do wyrównania długości pętli na jednym rozdzielaczu. Mieszanie pętli 40-metrowych ze 120-metrowymi uniemożliwi zrównoważenie układu na rotametrach. Woda poleci po linii najmniejszego oporu (najkrótszą pętlą).
                    </p>
                </div>
            </div>

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

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

    tabs.forEach(tab => {
        tab.addEventListener('click', function() {
            // Usunięcie klasy active ze wszystkich tabów i paneli
            tabs.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Dodanie klasy active do klikniętego
            this.classList.add('active');
            const targetId = 'myth-' + this.getAttribute('data-myth');
            document.getElementById(targetId).classList.add('active');
        });
    });
});
</script>



<style>
:root {
    --rk-auth-dark: #0f172a;
    --rk-auth-primary: #0284c7;
    --rk-auth-bg: #ffffff;
    --rk-auth-surface: #f8fafc;
    --rk-auth-border: #e2e8f0;
    --rk-auth-text: #334155;
    --rk-auth-gold: #d97706;
    --rk-auth-gold-light: #fef3c7;
}

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

/* Układ główny */
.rk-auth-layout {
    display: grid;
    grid-template-columns: 320px 1fr;
    background: var(--rk-auth-bg);
}

/* Lewa Kolumna - Zdjęcie i Social Media */
.rk-auth-profile {
    background: var(--rk-auth-dark);
    padding: 40px 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    border-right: 4px solid var(--rk-auth-gold);
}

.rk-auth-image-box {
    width: 160px;
    height: 160px;
    border-radius: 50%;
    border: 4px solid var(--rk-auth-gold);
    overflow: hidden;
    margin-bottom: 20px;
    background: #1e293b;
}

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

.rk-auth-name {
    font-size: 22px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 5px 0;
}

.rk-auth-role {
    font-size: 13px;
    font-weight: 700;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin: 0 0 25px 0;
}

.rk-auth-social {
    display: flex;
    gap: 15px;
    width: 100%;
    justify-content: center;
}

.rk-auth-social-link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: rgba(255,255,255,0.1);
    color: #ffffff;
    text-decoration: none;
    transition: background 0.2s, color 0.2s;
}

.rk-auth-social-link:hover {
    background: var(--rk-auth-primary);
    color: #ffffff;
}

/* Prawa Kolumna - Treść i Cytat */
.rk-auth-content {
    padding: 40px;
    display: flex;
    flex-direction: column;
}

.rk-auth-header h2 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0 0 25px 0;
    line-height: 1.3;
}

/* Sekcja Cytatu */
.rk-auth-quote-box {
    background: var(--rk-auth-gold-light);
    border-left: 5px solid var(--rk-auth-gold);
    padding: 25px 30px;
    border-radius: 0 12px 12px 0;
    margin-bottom: 35px;
    position: relative;
}

.rk-auth-quote-icon {
    position: absolute;
    top: -15px;
    left: 20px;
    background: var(--rk-auth-gold);
    color: #ffffff;
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
}

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

/* Zakładki (Tabs) statyczne */
.rk-auth-tabs-nav {
    display: flex;
    gap: 10px;
    border-bottom: 2px solid var(--rk-auth-border);
    margin-bottom: 25px;
}

.rk-auth-tab-btn {
    padding: 12px 20px;
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    font-size: 15px;
    font-weight: 800;
    color: #64748b;
    cursor: pointer;
    margin-bottom: -2px;
}

.rk-auth-tab-btn:hover {
    color: var(--rk-auth-primary);
}

.rk-auth-tab-btn.active {
    color: var(--rk-auth-primary);
    border-bottom-color: var(--rk-auth-primary);
}

.rk-auth-tab-content {
    display: none;
}

.rk-auth-tab-content.active {
    display: block;
}

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

.rk-auth-tab-text strong {
    color: var(--rk-auth-dark);
}

/* RWD - Mobile */
@media (max-width: 768px) {
    .rk-auth-layout { grid-template-columns: 1fr; }
    .rk-auth-profile { border-right: none; border-bottom: 4px solid var(--rk-auth-gold); padding: 30px 20px; }
    .rk-auth-content { padding: 30px 20px; }
    .rk-auth-header h2 { font-size: 22px; }
    .rk-auth-quote-box { padding: 25px 20px; }
    .rk-auth-tabs-nav { flex-direction: column; border-bottom: none; gap: 5px; }
    .rk-auth-tab-btn { border: 1px solid var(--rk-auth-border); border-radius: 8px; margin-bottom: 0; text-align: left; }
    .rk-auth-tab-btn.active { border-color: var(--rk-auth-primary); border-bottom-color: var(--rk-auth-primary); background: var(--rk-auth-surface); }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#article-ekspert",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/"
    },
    "headline": "Projekt ogrzewania podłogowego okiem eksperta – Robert Kucharski",
    "description": "Zrozum inżynierskie podejście do instalacji HVAC. Autorska perspektywa Roberta Kucharskiego na temat bezpieczeństwa i opłacalności projektów ogrzewania płaszczyznowego.",
    "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/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-14",
    "dateModified": "2026-06-14"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#dataset-ekspert",
    "name": "Standardy Inżynierskie i Wytyczne Wykonawcze HVAC",
    "description": "Zestawienie autorskich standardów projektowych Roberta Kucharskiego zderzających amatorskie praktyki monterskie z normami fizyki budowli.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": "https://www.linkedin.com/in/robert-kucharski-38069b48/"
    },
    "keywords": [
      "robert kucharski ogrzewanie",
      "ekspert hvac projektowanie",
      "budowa bez ściemy instalacje",
      "weryfikacja projektu podłogówki",
      "standardy wykonawcze ogrzewania"
    ],
    "measurementTechnique": "Weryfikacja jakości wykonawstwa na podstawie autorskich kryteriów bezpieczeństwa hydraulicznego i energetycznego (1000+ zweryfikowanych instalacji).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zasada Bezpieczeństwa: Instalacja to fizyka, a nie intuicja. Brak obliczeń OZC to gwarancja awarii.",
        "Weryfikacja Inżynierska: Opieranie parametrów zasilania wyłącznie na twardych danych z bilansu cieplnego.",
        "Ochrona inwestora: Projekt wykonawczy jako jedyna polisa ubezpieczeniowa przed błędami instalatora."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#webapp-ekspert",
    "name": "Baza Wiedzy i Standardów Inżynierskich",
    "description": "Moduł przełącznikowy prezentujący autorskie podejście do projektowania, różnice między rzemiosłem a inżynierią oraz gwarancje bezpieczeństwa inwestycji.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-auth-container">
    <div class="rk-auth-layout">
        
        <div class="rk-auth-profile">
            <div class="rk-auth-image-box">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Główny inżynier projekt-ogrzewania.pl">
            </div>
            <h3 class="rk-auth-name">Robert Kucharski</h3>
            <p class="rk-auth-role">Główny Specjalista HVAC & CEO</p>
            
            <div class="rk-auth-social">
                <a href="https://www.facebook.com/projektogrzewaniapl/" target="_blank" rel="noopener nofollow" class="rk-auth-social-link" aria-label="Facebook Projekt Ogrzewania">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="currentColor"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path></svg>
                </a>
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener nofollow" class="rk-auth-social-link" aria-label="LinkedIn Robert Kucharski">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="currentColor"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle></svg>
                </a>
            </div>
        </div>

        <div class="rk-auth-content">
            
            <div class="rk-auth-header">
                <h2>Projekt ogrzewania podłogowego okiem eksperta – Robert Kucharski</h2>
            </div>

            <div class="rk-auth-quote-box">
                <div class="rk-auth-quote-icon">
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M3 21c3 0 7-1 7-8V5c0-1.25-.756-2.017-2-2H4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2 1 0 1.5.5 1.5 1.5 0 1.5-1.5 2.5-2.5 2.5-1.25 0-2 .75-2 2s.75 2 2 2z"></path><path d="M15 21c3 0 7-1 7-8V5c0-1.25-.757-2.017-2-2h-4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2 1 0 1.5.5 1.5 1.5 0 1.5-1.5 2.5-2.5 2.5-1.25 0-2 .75-2 2s.75 2 2 2z"></path></svg>
                </div>
                <p class="rk-auth-quote-text">
                    Zdaniem Roberta Kucharskiego: Instalacja ogrzewania podłogowego to nie układanie rurek na styropianie, to precyzyjna inżynieria fizyki budowli. Błędy zignorowane na etapie braku obliczeń OZC mszczą się bezlitośnie przez kolejne dekady w postaci wyższych rachunków i pękających posadzek.
                </p>
            </div>

            <div class="rk-auth-tabs-nav" id="authTabsNav">
                <button class="rk-auth-tab-btn active" data-tab="filozofia">Filozofia Inżynierska</button>
                <button class="rk-auth-tab-btn" data-tab="bezpieczenstwo">Ochrona Inwestora</button>
            </div>

            <div class="rk-auth-tab-content active" id="tab-filozofia">
                <p class="rk-auth-tab-text">
                    W branży instalacyjnej panuje mit "doświadczonego montera", który rzekomo potrafi ułożyć optymalny rozstaw pętli wyłącznie na podstawie wieloletniej praktyki. <strong>Fizyka nie akceptuje kompromisów.</strong> Nawet najlepszy instalator nie jest w stanie bez obliczeń przewidzieć dokładnych strat ciepła przez przegrody, oporu wybranej okładziny czy parametrów hydraulicznych źródła ciepła dla konkretnego rzutu budynku.
                </p>
            </div>

            <div class="rk-auth-tab-content" id="tab-bezpieczenstwo">
                <p class="rk-auth-tab-text">
                    Dokumentacja techniczna to Twoja jedyna tarcza ochronna na budowie. Jeśli wykonawca popełni błąd – przegrzeje strefy, zablokuje przepływy zbyt długą pętlą lub zignoruje dylatacje – to <strong>brak projektu odbiera Ci wszelkie argumenty do reklamacji</strong>. Inżynieryjne podejście do instalacji to gwarancja, że system pracuje dla Ciebie, a nie Ty na poprawki systemu.
                </p>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tabBtns = document.querySelectorAll('.rk-auth-tab-btn');
    const tabContents = document.querySelectorAll('.rk-auth-tab-content');

    tabBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Czyszczenie klas active
            tabBtns.forEach(t => t.classList.remove('active'));
            tabContents.forEach(c => c.classList.remove('active'));

            // Dodawanie klasy active do klikniętego
            this.classList.add('active');
            const targetId = 'tab-' + this.getAttribute('data-tab');
            document.getElementById(targetId).classList.add('active');
        });
    });
});
</script>



<style>
:root {
    --rk-faq2-dark: #1e293b;
    --rk-faq2-primary: #0369a1; /* Ciemniejszy niebieski dla odróżnienia, buduje autorytet */
    --rk-faq2-primary-hover: #0284c7;
    --rk-faq2-bg: #ffffff;
    --rk-faq2-surface: #f1f5f9;
    --rk-faq2-border: #cbd5e1;
    --rk-faq2-text: #334155;
    --rk-faq2-accent: #f59e0b; /* Bursztynowy akcent dla ożywienia */
    --rk-faq2-danger: #ef4444;
}

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

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

.rk-faq2-header h2 {
    font-size: 30px;
    font-weight: 900;
    margin: 0 0 10px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    letter-spacing: -0.5px;
}

.rk-faq2-header h2 svg {
    color: var(--rk-faq2-accent);
}

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

/* Zawartość Akordeonu */
.rk-faq2-body {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-faq2-item {
    background: var(--rk-faq2-surface);
    border: 1px solid transparent;
    border-radius: 14px;
    margin-bottom: 12px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq2-item:hover {
    background: #e2e8f0;
}

.rk-faq2-item.active {
    background: var(--rk-faq2-bg);
    border-color: var(--rk-faq2-primary);
    box-shadow: 0 10px 20px -5px rgba(3, 105, 161, 0.15);
}

/* Przycisk pytania */
.rk-faq2-question {
    width: 100%;
    text-align: left;
    padding: 22px 30px;
    background: transparent;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
}

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

.rk-faq2-item.active .rk-faq2-question h3 {
    color: var(--rk-faq2-primary);
}

/* Ikona Toggle (+/-) */
.rk-faq2-toggle {
    flex-shrink: 0;
    width: 36px;
    height: 36px;
    border-radius: 10px;
    background: #ffffff;
    border: 1px solid var(--rk-faq2-border);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-faq2-primary);
    transition: all 0.3s;
    position: relative;
}

.rk-faq2-toggle::before, .rk-faq2-toggle::after {
    content: '';
    position: absolute;
    background: currentColor;
    border-radius: 2px;
    transition: transform 0.3s;
}

.rk-faq2-toggle::before { width: 14px; height: 2px; }
.rk-faq2-toggle::after { width: 2px; height: 14px; }

.rk-faq2-item.active .rk-faq2-toggle {
    background: var(--rk-faq2-primary);
    color: #ffffff;
    border-color: var(--rk-faq2-primary);
}

.rk-faq2-item.active .rk-faq2-toggle::after {
    transform: rotate(90deg) scale(0);
}

/* Odpowiedź */
.rk-faq2-answer-wrapper {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq2-answer-inner {
    padding: 0 30px 25px;
    display: flex;
    gap: 20px;
}

.rk-faq2-answer-icon {
    flex-shrink: 0;
    width: 24px;
    height: 24px;
    color: var(--rk-faq2-accent);
    margin-top: 2px;
}

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

.rk-faq2-answer-text a {
    color: var(--rk-faq2-primary);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px solid rgba(3, 105, 161, 0.3);
    transition: all 0.2s;
}

.rk-faq2-answer-text a:hover {
    border-bottom-color: var(--rk-faq2-primary);
    color: var(--rk-faq2-primary-hover);
}

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

/* RWD - Mobile */
@media (max-width: 768px) {
    .rk-faq2-header { padding: 30px 20px; }
    .rk-faq2-header h2 { font-size: 24px; }
    .rk-faq2-body { padding: 25px 20px; }
    .rk-faq2-question { padding: 20px; }
    .rk-faq2-question h3 { font-size: 16px; }
    .rk-faq2-answer-inner { padding: 0 20px 20px; gap: 15px; }
    .rk-faq2-answer-icon { display: none; } /* Ukrywamy ikonę odpowiedzi na telefonach by zaoszczędzić miejsce */
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#faq-section",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy bez projektu ogrzewania podłogowego otrzymam dotację z programu Czyste Powietrze?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, ponieważ nowoczesne procedury audytowe i odbiorcze wymagają przedstawienia dokumentacji potwierdzającej prawidłowe zrównoważenie hydrauliczne instalacji oraz dopasowanie źródła ciepła do parametrów technicznych budynku. Brak projektu uniemożliwi poprawne rozliczenie wniosku finansowego w urzędzie."
        }
      },
      {
        "@type": "Question",
        "name": "Co się stanie, jeśli wykonawca ułoży za długą pętlę ogrzewania podłogowego?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Za długa pętla (powyżej 120 m dla rury 16 mm) wygeneruje tak duże opory hydrauliczne, że woda grzewcza nie będzie w stanie przez nią swobodnie przepływać. W efekcie podłoga w tym pomieszczeniu pozostanie zimna, pomimo prawidłowej pracy pompy ciepła i maksymalnego otwarcia rotametrów."
        }
      },
      {
        "@type": "Question",
        "name": "Czy układ meandrowy można stosować zamiennie z układem ślimakowym bez obliczeń?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, ponieważ układ ślimakowy zapewnia idealnie równomierny rozkład temperatur na powierzchni posadzki dzięki naprzemiennemu układaniu rury zasilającej i powrotnej. Układ meandrowy generuje duże straty temperatury wzdłuż pętli, dlatego projektuje się go wyłącznie w strefach brzegowych o wysokim zapotrzebowaniu na moc."
        }
      },
      {
        "@type": "Question",
        "name": "Jak grubość wylewki betonowej wpływa na parametry projektowe ogrzewania podłogowego?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Zbyt gruba wylewka (powyżej 7-8 cm nad rurami) drastycznie zwiększa bezwładność cieplną układu, wydłużając czas reakcji automatyki na zmiany temperatury zewnętrznej. Z kolei zbyt cienka wylewka (poniżej 4 cm) grozi pękaniem jastrychu pod wpływem naprężeń termicznych i powoduje nierównomierny rozkład temperatury (efekt pasmowy)."
        }
      },
      {
        "@type": "Question",
        "name": "Czy można zalać instalację podłogówki zwykłą wodą z kranu bez projektu i badań?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Napełnienie instalacji surową wodą wodociągową prowadzi do szybkiego odkładania się kamienia kotłowego oraz przyspieszonej korozji metalowych elementów rozdzielacza. Zgodnie z normami technicznymi, instalację należy napełnić wodą demineralizowaną z dodatkiem odpowiednich inhibitorów korozji, gwarantujących stabilność fizykochemiczną zładu."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/"
    },
    "headline": "Często zadawane pytania (FAQ) - Parametry Projektowe Ogrzewania",
    "description": "Najważniejsze pytania techniczne dotyczące wymogów prawnych, długości pętli, rodzajów wylewek i wody kotłowej w ogrzewaniu podłogowym.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski – Budowa bez ściemy",
      "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-14",
    "dateModified": "2026-06-14"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#dataset-faq",
    "name": "Limity i Wymogi Techniczne Instalacji Płaszczyznowych (FAQ Data)",
    "description": "Zbiór kluczowych wartości brzegowych wymienianych w pytaniach FAQ, takich jak dopuszczalna długość rur, minimalna i maksymalna grubość jastrychu.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski – Budowa bez ściemy"
    },
    "keywords": [
      "wymogi dofinansowania Czyste Powietrze 2026",
      "maksymalna długość pętli ogrzewania",
      "grubość jastrychu podłogowego",
      "parametry wody kotłowej instalacyjnej",
      "układ ślimakowy i meandrowy"
    ],
    "measurementTechnique": "Określanie parametrów granicznych instalacji w oparciu o wytyczne producentów systemów i ogólne zasady fizyki budowli.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Limit hydrauliczny pętli: Maksymalnie 120 mb dla rury o średnicy 16x2.0.",
        "Grubość wylewki: Minimum 4 cm nad rurę w celu uniknięcia pęknięć, optymalnie do 7-8 cm w celu zachowania sterowalności.",
        "Chemia zładu: Obowiązkowe napełnianie wodą demineralizowaną w celu zatrzymania korozji elementów metalowych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#webapp-faq",
    "name": "Interaktywny Akordeon Edukacyjny HVAC",
    "description": "Komponent interfejsu użytkownika (UI) obsługujący ukrywanie i rozwijanie zaawansowanych odpowiedzi inżynieryjnych na pytania czytelników portalu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski – Budowa bez ściemy"
    }
  }
]
</script>

<div class="rk-faq2-container" id="faq-sekcja-podlogowka">
    <div class="rk-faq2-header">
        <h2>
            <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>
                <circle cx="12" cy="13" r="2"></circle>
                <line x1="12" y1="17" x2="12.01" y2="17"></line>
            </svg>
            Często zadawane pytania (FAQ)
        </h2>
        <p>Inżynieryjne odpowiedzi na najczęstsze obiekcje inwestorów. Zobacz, jak błędy w podejściu do wylewki czy dotacji wpływają na odbiór całego budynku.</p>
    </div>

    <div class="rk-faq2-body" id="rkFaq2Accordion">
        
        <div class="rk-faq2-item">
            <button class="rk-faq2-question" aria-expanded="false">
                <h3>Czy bez projektu ogrzewania podłogowego otrzymam dotację z programu Czyste Powietrze?</h3>
                <div class="rk-faq2-toggle"></div>
            </button>
            <div class="rk-faq2-answer-wrapper">
                <div class="rk-faq2-answer-inner">
                    <svg class="rk-faq2-answer-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    <p class="rk-faq2-answer-text">
                        <strong>Nie</strong>, ponieważ nowoczesne procedury audytowe i odbiorcze wymagają przedstawienia dokumentacji potwierdzającej prawidłowe zrównoważenie hydrauliczne instalacji oraz dopasowanie źródła ciepła do parametrów technicznych budynku. Zobacz, jak <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/">projekt techniczny wpływa na dotacje</a> – brak rzetelnego opracowania uniemożliwi poprawne rozliczenie wniosku finansowego w urzędzie.
                    </p>
                </div>
            </div>
        </div>

        <div class="rk-faq2-item">
            <button class="rk-faq2-question" aria-expanded="false">
                <h3>Co się stanie, jeśli wykonawca ułoży za długą pętlę ogrzewania podłogowego?</h3>
                <div class="rk-faq2-toggle"></div>
            </button>
            <div class="rk-faq2-answer-wrapper">
                <div class="rk-faq2-answer-inner">
                    <svg class="rk-faq2-answer-icon" 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>
                    <p class="rk-faq2-answer-text">
                        <strong>Za długa pętla</strong> (powyżej 120 m dla rury 16 mm) wygeneruje tak duże opory hydrauliczne, że woda grzewcza nie będzie w stanie przez nią swobodnie przepływać. Zjawisko to dokładnie opisuję w artykule o <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">konsekwencjach za długich pętli podłogówki</a>. W efekcie podłoga w tym pomieszczeniu pozostanie zimna, pomimo prawidłowej pracy pompy ciepła i maksymalnego otwarcia rotametrów na rozdzielaczu.
                    </p>
                </div>
            </div>
        </div>

        <div class="rk-faq2-item">
            <button class="rk-faq2-question" aria-expanded="false">
                <h3>Czy układ meandrowy można stosować zamiennie z układem ślimakowym bez obliczeń?</h3>
                <div class="rk-faq2-toggle"></div>
            </button>
            <div class="rk-faq2-answer-wrapper">
                <div class="rk-faq2-answer-inner">
                    <svg class="rk-faq2-answer-icon" 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="16"></line><line x1="8" y1="12" x2="16" y2="12"></line></svg>
                    <p class="rk-faq2-answer-text">
                        <strong>Nie.</strong> Układ ślimakowy zapewnia idealnie równomierny rozkład temperatur na powierzchni posadzki dzięki naprzemiennemu układaniu rury zasilającej i powrotnej. <a href="https://projekt-ogrzewania.pl/jak-ukladac-rury-w-ogrzewaniu-slimak-meander-czy-podwojny-meander/">Układ meandrowy</a> generuje potężne straty temperatury wzdłuż pętli, dlatego projektuje się go wyłącznie i świadomie w strefach brzegowych o wysokim zapotrzebowaniu na moc (np. przy oknach tarasowych HS).
                    </p>
                </div>
            </div>
        </div>

        <div class="rk-faq2-item">
            <button class="rk-faq2-question" aria-expanded="false">
                <h3>Jak grubość wylewki betonowej wpływa na parametry projektowe ogrzewania podłogowego?</h3>
                <div class="rk-faq2-toggle"></div>
            </button>
            <div class="rk-faq2-answer-wrapper">
                <div class="rk-faq2-answer-inner">
                    <svg class="rk-faq2-answer-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                    <p class="rk-faq2-answer-text">
                        Zbyt gruba wylewka (powyżej 7-8 cm nad rurami) drastycznie zwiększa bezwładność cieplną układu, wydłużając czas reakcji automatyki na zmiany temperatury zewnętrznej. Z kolei zbyt cienka <a href="https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/">wylewka betonowa</a> (poniżej 4 cm) grozi pękaniem jastrychu pod wpływem naprężeń termicznych i powoduje nierównomierny rozkład temperatury, odczuwalny jako tzw. efekt pasmowy.
                    </p>
                </div>
            </div>
        </div>

        <div class="rk-faq2-item">
            <button class="rk-faq2-question" aria-expanded="false">
                <h3>Czy można zalać instalację podłogówki zwykłą wodą z kranu bez projektu i badań?</h3>
                <div class="rk-faq2-toggle"></div>
            </button>
            <div class="rk-faq2-answer-wrapper">
                <div class="rk-faq2-answer-inner">
                    <svg class="rk-faq2-answer-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"></path></svg>
                    <p class="rk-faq2-answer-text">
                        Napełnienie instalacji surową wodą wodociągową prowadzi do szybkiego odkładania się kamienia kotłowego oraz przyspieszonej korozji metalowych elementów rozdzielacza. Zgodnie z normami technicznymi i gwarancjami producentów, instalację należy napełnić <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-z-inhibitorem-korozji-do-ogrzewania-podlogowego/">wodą demineralizowaną z dodatkiem odpowiednich inhibitorów korozji</a>, gwarantujących pełną stabilność fizykochemiczną zładu.
                    </p>
                </div>
            </div>
        </div>

    </div>
</div>

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

    faqItems.forEach(item => {
        const btn = item.querySelector('.rk-faq2-question');
        const wrapper = item.querySelector('.rk-faq2-answer-wrapper');
        const inner = item.querySelector('.rk-faq2-answer-inner');

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

            // Zamykamy inne otwarte elementy
            faqItems.forEach(otherItem => {
                otherItem.classList.remove('active');
                otherItem.querySelector('.rk-faq2-question').setAttribute('aria-expanded', 'false');
                otherItem.querySelector('.rk-faq2-answer-wrapper').style.maxHeight = null;
            });

            // Jeśli kliknięto w zamknięty element - otwórz go
            if (!isActive) {
                item.classList.add('active');
                btn.setAttribute('aria-expanded', 'true');
                wrapper.style.maxHeight = inner.scrollHeight + "px";
            }
        });
    });
});
</script>



<style>
:root {
    --rk-fin-dark: #0f172a;
    --rk-fin-primary: #0284c7;
    --rk-fin-bg: #ffffff;
    --rk-fin-surface: #f8fafc;
    --rk-fin-border: #e2e8f0;
    --rk-fin-text: #334155;
    --rk-fin-danger: #ef4444;
    --rk-fin-danger-bg: #fef2f2;
    --rk-fin-success: #10b981;
    --rk-fin-success-bg: #ecfdf5;
}

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

/* Nagłówek */
.rk-fin-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-fin-dark) 0%, #1e293b 100%);
    color: #ffffff;
}

.rk-fin-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    color: #ffffff;
    line-height: 1.3;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-fin-header h2 svg {
    color: #38bdf8;
    flex-shrink: 0;
}

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

.rk-fin-header p strong {
    color: #ffffff;
}

.rk-fin-header a {
    color: #38bdf8;
    text-decoration: underline;
    text-underline-offset: 3px;
    font-weight: 700;
    transition: color 0.2s;
}

.rk-fin-header a:hover {
    color: #ffffff;
}

/* Panel Nawigacyjny (Tabs) */
.rk-fin-interactive {
    padding: 40px 50px;
    background: var(--rk-fin-bg);
}

.rk-fin-tabs-wrapper {
    display: flex;
    gap: 10px;
    background: var(--rk-fin-surface);
    padding: 8px;
    border-radius: 14px;
    border: 1px solid var(--rk-fin-border);
    margin-bottom: 35px;
}

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

.rk-fin-tab-btn:hover {
    color: var(--rk-fin-primary);
    background: rgba(2, 132, 199, 0.05);
}

.rk-fin-tab-btn.active {
    background: #ffffff;
    color: var(--rk-fin-primary);
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.rk-fin-step-num {
    background: #cbd5e1;
    color: #ffffff;
    width: 24px;
    height: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    font-size: 12px;
    transition: background 0.2s;
}

.rk-fin-tab-btn.active .rk-fin-step-num {
    background: var(--rk-fin-primary);
}

/* Zawartość Paneli */
.rk-fin-panel {
    display: none;
    animation: finFadeIn 0.3s ease forwards;
}

.rk-fin-panel.active {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 25px;
}

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

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

.rk-fin-card.card-success { 
    border-top: 5px solid var(--rk-fin-success); 
    background: var(--rk-fin-success-bg);
}

.rk-fin-card.card-danger { 
    border-top: 5px solid var(--rk-fin-danger); 
    background: var(--rk-fin-danger-bg);
}

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

.card-success h4 { color: var(--rk-fin-success); }
.card-danger h4 { color: var(--rk-fin-danger); }

/* Subtelne ikony inline obok tytułu zamiast wielkich grafik */
.rk-fin-inline-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    color: #ffffff;
    flex-shrink: 0;
}

.card-success .rk-fin-inline-icon { background: var(--rk-fin-success); }
.card-danger .rk-fin-inline-icon { background: var(--rk-fin-danger); }

.rk-fin-card p {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-fin-dark);
    margin: 0;
    font-weight: 500;
}

/* Tagi Długiego Ogona (Bez hashtagów) */
.rk-fin-tags-section {
    padding: 0 50px 35px 50px;
    background: var(--rk-fin-bg);
}

.rk-fin-tags-title {
    font-size: 12px;
    font-weight: 800;
    color: #94a3b8;
    text-transform: uppercase;
    margin-bottom: 15px;
    display: block;
    text-align: center;
    letter-spacing: 0.5px;
}

.rk-fin-tag-wrapper {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
}

.rk-clean-tag {
    display: inline-flex;
    align-items: center;
    background: #f1f5f9;
    color: #475569;
    padding: 8px 16px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 700;
    border: 1px solid var(--rk-fin-border);
    transition: all 0.2s;
    cursor: default;
}

.rk-clean-tag:hover {
    background: #e2e8f0;
    color: var(--rk-fin-dark);
}

/* RWD - Mobile */
@media (max-width: 768px) {
    .rk-fin-header { padding: 30px 20px; }
    .rk-fin-interactive { padding: 30px 20px; }
    .rk-fin-tags-section { padding: 0 20px 30px 20px; }
    
    .rk-fin-tabs-wrapper {
        flex-direction: column;
        gap: 5px;
        background: transparent;
        border: none;
        padding: 0;
    }
    
    .rk-fin-tab-btn {
        background: var(--rk-fin-surface);
        border: 1px solid var(--rk-fin-border);
        justify-content: flex-start;
        padding: 16px;
    }
    
    .rk-fin-panel.active {
        grid-template-columns: 1fr;
        gap: 15px;
    }
    
    .rk-fin-card { padding: 25px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/"
    },
    "headline": "Podsumowanie: Instalacja Grzewcza jako System Naczyń Połączonych",
    "description": "Dlaczego rezygnacja z projektu podłogówki to pozorna oszczędność? Sprawdź inżynieryjne zestawienie zależności między OZC, geometrią pętli i hydrauliką.",
    "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-14",
    "dateModified": "2026-06-14"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#dataset-podsumowanie",
    "name": "Analiza Cyklu Życia Instalacji (LCC) – Projekt Inżynierski vs Brak Projektu",
    "description": "Zestawienie technologicznych współzależności wykazujące, jak błąd na etapie braku obliczeń OZC propaguje się na opory hydrauliczne i koszty eksploatacji.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "pękanie posadzki na podłogówce",
      "obliczenia OZC a hydraulika",
      "koszty eksploatacji bez projektu",
      "pozorna oszczędność na podłogówce",
      "system naczyń połączonych HVAC"
    ],
    "measurementTechnique": "Modelowanie kaskadowe błędów wykonawczych: analiza wpływu braku danych cieplnych na przewymiarowanie pętli i zaburzenie przepływów na rotametrach.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wpływ OZC: Brak obliczeń skutkuje błędnym rozstawem, co prowadzi do niedogrzania lub przegrzania.",
        "Wpływ Geometrii: Zbyt długie pętle blokują przepływ masowy czynnika.",
        "Wpływ Hydrauliki: Niezrównoważony układ drastycznie obniża sprawność pompy ciepła i podnosi rachunki."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#webapp-podsumowanie",
    "name": "Symulator Zależności Instalacyjnych HVAC",
    "description": "Interaktywny panel edukacyjny (tabbed UI) pozbawiony rozpraszaczy graficznych, ilustrujący jak etapy projektowania wpływają na komfort cieplny.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-fin-container" id="podsumowanie-techniczne">
    <div class="rk-fin-header">
        <h2>
            <svg width="30" height="30" 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>
            Podsumowanie: System naczyń połączonych
        </h2>
        <p>
            Decyzja o rezygnacji z projektu ogrzewania podłogowego to klasyczny przykład <strong>pozornej oszczędności finansowej</strong>, która generuje lawinę <a href="https://projekt-ogrzewania.pl/wady-wodnego-ogrzewania-podlogowego-na-co-zwrocic-uwage-przed-instalacja/">problemów technicznych na etapie eksploatacji budynku</a>. Prawidłowo zaprojektowana instalacja grzewcza to system naczyń połączonych – od dokładności obliczeń OZC, przez geometrię ułożenia pętli, aż po <a href="https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/">precyzyjną hydraulikę</a> dedykowaną dla niskotemperaturowych źródeł ciepła.
        </p>
        <br>
        <p>
            Zamiast ryzykować <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">pękaniem posadzek</a>, niedogrzaniem pomieszczeń i drastycznym zawyżeniem rachunków, należy bezwzględnie oprzeć inwestycję na profesjonalnej dokumentacji technicznej. Tylko precyzyjny projekt inżynierski gwarantuje, że instalacja osiągnie pełną sprawność.
        </p>
    </div>

    <div class="rk-fin-interactive">
        
        <!-- Nawigacja Tabs -->
        <div class="rk-fin-tabs-wrapper" id="rkFinTabs">
            <button class="rk-fin-tab-btn active" data-target="ozc">
                <span class="rk-fin-step-num">1</span> Obliczenia OZC
            </button>
            <button class="rk-fin-tab-btn" data-target="geometry">
                <span class="rk-fin-step-num">2</span> Geometria Pętli
            </button>
            <button class="rk-fin-tab-btn" data-target="hydraulics">
                <span class="rk-fin-step-num">3</span> Hydraulika
            </button>
        </div>

        <!-- Panel 1: OZC -->
        <div class="rk-fin-panel active" id="panel-ozc">
            <div class="rk-fin-card card-success">
                <h4>
                    <div class="rk-fin-inline-icon">
                        <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                    </div>
                    Z projektem: Precyzyjny dobór
                </h4>
                <p>Dokładne wyliczenie strat ciepła dla każdego pomieszczenia (OZC) pozwala idealnie dobrać moc źródła i zagęścić rury tylko tam, gdzie to fizycznie potrzebne (np. strefy brzegowe przy przeszkleniach).</p>
            </div>
            <div class="rk-fin-card card-danger">
                <h4>
                    <div class="rk-fin-inline-icon">
                        <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" 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>
                    </div>
                    Bez projektu: Gra w ruletkę
                </h4>
                <p>Układanie rur na ślepo "wszędzie co 10 cm" to marnowanie tysięcy złotych na zbędny materiał. Ignorowanie zysków pasywnych z okien gwarantuje nieznośne przegrzewanie salonu.</p>
            </div>
        </div>

        <!-- Panel 2: Geometria -->
        <div class="rk-fin-panel" id="panel-geometry">
            <div class="rk-fin-card card-success">
                <h4>
                    <div class="rk-fin-inline-icon">
                        <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                    </div>
                    Z projektem: Optymalne pętle
                </h4>
                <p>Długość żadnej pętli nie przekracza normatywnych 120 metrów dla rury 16mm. Układ ślimakowy gwarantuje równomierny rozkład temperatury na całej powierzchni jastrychu.</p>
            </div>
            <div class="rk-fin-card card-danger">
                <h4>
                    <div class="rk-fin-inline-icon">
                        <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" 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>
                    </div>
                    Bez projektu: Krytyczne opory
                </h4>
                <p>Zbyt długie pętle (np. 150m) drastycznie zwiększają opory liniowe. Woda krąży wolniej, oddaje ciepło na początku pętli, pozostawiając resztę pokoju całkowicie wyziębioną.</p>
            </div>
        </div>

        <!-- Panel 3: Hydraulika -->
        <div class="rk-fin-panel" id="panel-hydraulics">
            <div class="rk-fin-card card-success">
                <h4>
                    <div class="rk-fin-inline-icon">
                        <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                    </div>
                    Z projektem: Stabilny przepływ
                </h4>
                <p>Otrzymujesz dokładne nastawy dla rotametrów (np. 1.5 l/min). Pompa obiegowa i sprężarka pompy ciepła pracują w optymalnym punkcie krzywej, maksymalizując wskaźnik COP.</p>
            </div>
            <div class="rk-fin-card card-danger">
                <h4>
                    <div class="rk-fin-inline-icon">
                        <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" 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>
                    </div>
                    Bez projektu: Chaos sprzętowy
                </h4>
                <p>Krótkie pętle kradną cały przepływ, długie pętle stoją w miejscu. Próba ratowania sytuacji mocniejszą pompą podnosi rachunki za prąd i generuje uciążliwe szumy w rozdzielaczu.</p>
            </div>
        </div>

    </div>

    <!-- Pigułki wiedzy (Zamiast hashtagów) -->
    <div class="rk-fin-tags-section">
        <span class="rk-fin-tags-title">Kluczowe zagadnienia techniczne poruszane w artykule:</span>
        <div class="rk-fin-tag-wrapper">
            <span class="rk-clean-tag">Pękanie posadzki na podłogówce</span>
            <span class="rk-clean-tag">Wysokie rachunki za ogrzewanie</span>
            <span class="rk-clean-tag">Precyzyjna hydraulika pompy ciepła</span>
            <span class="rk-clean-tag">Obliczenia OZC a hydraulika</span>
            <span class="rk-clean-tag">Kompleksowy projekt inżynierski</span>
        </div>
    </div>
</div>

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

    tabs.forEach(tab => {
        tab.addEventListener('click', function() {
            // Czyszczenie
            tabs.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));
            
            // Aktywacja
            this.classList.add('active');
            const targetId = 'panel-' + this.getAttribute('data-target');
            document.getElementById(targetId).classList.add('active');
        });
    });
});
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-primary: #0284c7;
    --rk-dl-primary-hover: #0369a1;
    --rk-dl-bg: #ffffff;
    --rk-dl-surface: #f8fafc;
    --rk-dl-border: #e2e8f0;
    --rk-dl-text: #334155;
    --rk-dl-success: #10b981;
    --rk-dl-accent: #38bdf8;
}

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

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

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

.rk-dl-header h2 svg {
    color: var(--rk-dl-accent);
    flex-shrink: 0;
}

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

/* Układ 2-kolumnowy */
.rk-dl-layout {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    background: var(--rk-dl-bg);
}

/* Sekcja Podglądu Grafiki */
.rk-dl-preview {
    padding: 40px;
    background: var(--rk-dl-surface);
    border-right: 1px solid var(--rk-dl-border);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.rk-dl-image-box {
    width: 100%;
    position: relative;
    border-radius: 12px;
    overflow: hidden;
    border: 2px solid var(--rk-dl-border);
    box-shadow: 0 10px 20px rgba(0,0,0,0.05);
    cursor: zoom-in;
    transition: transform 0.3s ease, border-color 0.3s ease;
}

.rk-dl-image-box:hover {
    transform: translateY(-5px);
    border-color: var(--rk-dl-primary);
}

.rk-dl-image-box img {
    width: 100%;
    height: auto;
    display: block;
}

.rk-dl-zoom-overlay {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.4);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity 0.3s ease;
}

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

.rk-dl-zoom-icon {
    background: var(--rk-dl-primary);
    color: #ffffff;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 10px rgba(0,0,0,0.2);
}

/* Sekcja Informacji i Pobierania */
.rk-dl-info {
    padding: 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-dl-info h3 {
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-dl-dark);
    margin: 0 0 20px 0;
}

.rk-dl-list {
    list-style: none;
    padding: 0;
    margin: 0 0 30px 0;
}

.rk-dl-list li {
    font-size: 15px;
    color: var(--rk-dl-text);
    margin-bottom: 12px;
    padding-left: 32px;
    position: relative;
    line-height: 1.6;
    font-weight: 500;
}

.rk-dl-list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 2px;
    width: 20px;
    height: 20px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2310b981' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");
    background-size: contain;
    background-repeat: no-repeat;
}

.rk-btn-download {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-dl-primary);
    color: #ffffff;
    font-size: 16px;
    font-weight: 800;
    padding: 18px 30px;
    border-radius: 14px;
    text-decoration: none !important;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.3);
}

.rk-btn-download:hover {
    background: var(--rk-dl-primary-hover);
    transform: translateY(-3px);
    box-shadow: 0 15px 25px -5px rgba(2, 132, 199, 0.4);
}

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

.rk-btn-download:hover svg {
    transform: translateY(3px);
}

/* Stopka: Copyright i Tagi */
.rk-dl-footer {
    padding: 25px 40px;
    background: var(--rk-dl-surface);
    border-top: 1px solid var(--rk-dl-border);
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-dl-copyright {
    font-size: 13px;
    color: #64748b;
    margin: 0;
    line-height: 1.6;
    text-align: center;
}

.rk-dl-tags {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
}

.rk-dl-tag {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-dl-primary);
    background: #e0f2fe;
    padding: 6px 14px;
    border-radius: 6px;
    border: 1px solid #bae6fd;
}

/* --- LIGHTBOX (Modal) --- */
.rk-lightbox {
    position: fixed;
    inset: 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 ease;
    backdrop-filter: blur(5px);
}

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

.rk-lightbox-content {
    position: relative;
    max-width: 90vw;
    max-height: 90vh;
    transform: scale(0.95);
    transition: transform 0.3s ease;
}

.rk-lightbox.active .rk-lightbox-content {
    transform: scale(1);
}

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

.rk-lightbox-close {
    position: absolute;
    top: -20px;
    right: -20px;
    background: #ffffff;
    color: var(--rk-dl-dark);
    width: 44px;
    height: 44px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    box-shadow: 0 4px 10px rgba(0,0,0,0.3);
    border: none;
    transition: background 0.2s;
}

.rk-lightbox-close:hover {
    background: #f1f5f9;
}

/* RWD - Mobile */
@media (max-width: 768px) {
    .rk-dl-header { padding: 30px 20px; }
    .rk-dl-header h2 { font-size: 24px; }
    .rk-dl-layout { grid-template-columns: 1fr; }
    .rk-dl-preview { padding: 30px 20px; border-right: none; border-bottom: 1px solid var(--rk-dl-border); }
    .rk-dl-info { padding: 30px 20px; }
    .rk-dl-footer { padding: 25px 20px; }
    .rk-btn-download { width: 100%; font-size: 15px; }
    .rk-lightbox-close { top: 10px; right: 10px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#article-infografika",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/"
    },
    "headline": "Materiały dodatkowe: Infografika wymogów prawa budowlanego",
    "description": "Pobierz darmową infografikę w formacie PDF. Eksperckie zestawienie norm prawnych, wymogów odbioru i parametrów montażowych instalacji grzewczej.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe.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-15",
    "dateModified": "2026-06-15"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#dataset-infografika",
    "name": "Infografika techniczna: Prawo budowlane a projekt podłogówki",
    "description": "Graficzne zestawienie norm prawnych i parametrów montażowych, gotowe do wydruku dla inwestora.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "darmowy projekt ogrzewania podłogowego pdf",
      "schemat instalacji ogrzewania podłogowego",
      "odbiór instalacji ogrzewania podłogowego",
      "jak czytać projekt ogrzewania podłogowego",
      "warunki techniczne odbioru instalacji hvac"
    ],
    "measurementTechnique": "Zestawienie wizualne opierające się na wytycznych normy PN-EN 1264 oraz uwarunkowaniach Prawa Budowlanego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Format danych: Dokument PDF przystosowany do weryfikacji na budowie.",
        "Status prawny: Materiał autorski z możliwością redystrybucji z zachowaniem oryginalnego logotypu.",
        "Zawartość merytoryczna: Algorytmy doboru, wytyczne do odbioru technicznego i wymogi programu Czyste Powietrze."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/#webapp-infografika",
    "name": "Interaktywna Przeglądarka Dokumentacji",
    "description": "Wbudowany moduł Lightbox pozwalający na podgląd infografiki inżynierskiej w wysokiej rozdzielczości oraz bezpośrednie pobranie certyfikowanego dokumentu PDF.",
    "applicationCategory": "MultimediaApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5, CSS3",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-dl-container">
    <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="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path>
                <polyline points="14 2 14 8 20 8"></polyline>
                <line x1="12" y1="18" x2="12" y2="12"></line>
                <polyline points="9 15 12 18 15 15"></polyline>
            </svg>
            Baza Wiedzy: Podsumowanie w pigułce
        </h2>
        <p>Pobierz autorską infografikę. Zabierz twarde dane na budowę i miej pewność, że wykonawca przestrzega standardów inżynierskich.</p>
    </div>

    <div class="rk-dl-layout">
        
        <div class="rk-dl-preview">
            <div class="rk-dl-image-box" id="rkOpenLightbox" role="button" aria-label="Powiększ infografikę">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe.webp" alt="Podgląd infografiki: Czy trzeba mieć projekt na ogrzewanie podłogowe">
                <div class="rk-dl-zoom-overlay">
                    <div class="rk-dl-zoom-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"><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>
        </div>

        <div class="rk-dl-info">
            <h3>Co znajdziesz w materiale?</h3>
            <ul class="rk-dl-list">
                <li>Zestawienie twardych norm PN-EN dotyczących instalacji.</li>
                <li>Wizualny algorytm prawidłowego rozstawu pętli.</li>
                <li>Skrócony wykaz wymogów prawnych do odbioru budynku.</li>
                <li>Porównanie kosztów (instalacja z głowy vs dokumentacja).</li>
            </ul>
            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe.pdf" download="" class="rk-btn-download">
                <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="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 materiał PDF
            </a>
        </div>
    </div>

    <div class="rk-dl-footer">
        <div class="rk-dl-tags">
            <span class="rk-dl-tag">schemat instalacji ogrzewania podłogowego</span>
            <span class="rk-dl-tag">darmowy projekt ogrzewania podłogowego pdf</span>
            <span class="rk-dl-tag">odbiór instalacji ogrzewania podłogowego</span>
            <span class="rk-dl-tag">jak czytać projekt ogrzewania podłogowego</span>
        </div>
        <p class="rk-dl-copyright">
            © 2026 Projekt-Ogrzewania.pl | Autor: Robert Kucharski. Udostępnianie materiału PDF dozwolone wyłącznie z zachowaniem logotypu portalu i bez modyfikacji pliku.
        </p>
    </div>
</div>

<div class="rk-lightbox" id="rkLightboxOverlay">
    <div class="rk-lightbox-content">
        <button class="rk-lightbox-close" id="rkCloseLightbox" aria-label="Zamknij podgląd">
            <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="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-Czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe.webp" alt="Pełny podgląd infografiki" class="rk-lightbox-img">
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const openBtn = document.getElementById('rkOpenLightbox');
    const closeBtn = document.getElementById('rkCloseLightbox');
    const overlay = document.getElementById('rkLightboxOverlay');

    // Otwórz Lightbox
    openBtn.addEventListener('click', function() {
        overlay.classList.add('active');
        document.body.style.overflow = 'hidden'; // Zablokowanie scrollowania strony
    });

    // Zamknij Lightbox (X button)
    closeBtn.addEventListener('click', function() {
        overlay.classList.remove('active');
        document.body.style.overflow = '';
    });

    // Zamknij Lightbox klikając w tło
    overlay.addEventListener('click', function(e) {
        if (e.target === overlay) {
            overlay.classList.remove('active');
            document.body.style.overflow = '';
        }
    });

    // Zamknij Lightbox klawiszem ESC
    document.addEventListener('keydown', function(e) {
        if (e.key === 'Escape' && overlay.classList.contains('active')) {
            overlay.classList.remove('active');
            document.body.style.overflow = '';
        }
    });
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/">Czy trzeba mieć projekt na ogrzewanie podłogowe?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/czy-trzeba-miec-projekt-na-ogrzewanie-podlogowe/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>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>
