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

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa regulacja temperatury - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/regulacja-temperatury/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Termostat w ogrzewaniu podłogowym.</title>
		<link>https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Fri, 16 Jan 2026 08:54:43 +0000</pubDate>
				<category><![CDATA[Budowa domu]]></category>
		<category><![CDATA[Energooszczędność]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Porady budowlane]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Smart home]]></category>
		<category><![CDATA[Sterowanie ogrzewaniem]]></category>
		<category><![CDATA[Technika grzewcza]]></category>
		<category><![CDATA[Technika instalacyjna]]></category>
		<category><![CDATA[czujnik podłogowy]]></category>
		<category><![CDATA[ogrzewanie podłogowe wodne]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[regulacja temperatury]]></category>
		<category><![CDATA[siłowniki termoelektryczne]]></category>
		<category><![CDATA[smart home ogrzewanie]]></category>
		<category><![CDATA[sterowanie podłogówką]]></category>
		<category><![CDATA[strefy grzewcze]]></category>
		<category><![CDATA[termostat ogrzewania podłogowego]]></category>
		<category><![CDATA[termostat pokojowy]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3186</guid>

					<description><![CDATA[<p>Prawidłowo dobrany i skonfigurowany termostat w ogrzewaniu podłogowym ma kluczowy wpływ nie tylko na komfort cieplny, ale również na zdrowie domowników i realne koszty eksploatacji budynku. W przypadku wodnej podłogówki, która charakteryzuje się dużą bezwładnością cieplną, sterowanie temperaturą wymaga wiedzy i przemyślanych decyzji. W artykule szczegółowo omawiamy zasady działania termostatów, ich rodzaje, parametry techniczne oraz powiązanie z projektem ogrzewania podłogowego – zarówno z perspektywy inwestora, jak i instalatora.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">Termostat w ogrzewaniu podłogowym.</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 i prawidłowa konfiguracja&nbsp;<strong>termostatu w ogrzewaniu podłogowym</strong>&nbsp;to kluczowa decyzja, która w bezpośredni sposób przekłada się na komfort termiczny, zdrowie domowników oraz wysokość rachunków za energię. Wodna podłogówka, jako system o dużej bezwładności cieplnej, wymaga precyzyjnego i przemyślanego sterowania. W tym artykule, przeznaczonym zarówno dla inwestorów, jak i instalatorów, dogłębnie przeanalizujemy rolę, typy, parametry techniczne oraz zasady doboru termostatów, będących &#8222;mózgiem&#8221; każdej nowoczesnej instalacji grzewczej.</p>



<h2 class="wp-block-heading">Zasada działania: Dlaczego termostat to nie tylko włącznik i wyłącznik?</h2>



<p class="wp-block-paragraph"><strong>Termostat w instalacji wodnego ogrzewania podłogowego</strong>&nbsp;pełni funkcję inteligentnego strażnika temperatury. Jego zadanie wykracza daleko poza prostą reakcję &#8222;za ciepło = wyłącz&#8221;. To zaawansowany układ regulacji, który w sposób ciągły dąży do zachowania równowagi między dostarczanym ciepłem a stratami budynku.</p>



<p class="wp-block-paragraph"><strong>Jak to działa w praktyce?</strong>&nbsp;Termostat, wyposażony w czujnik (lub kilka czujników), monitoruje aktualną temperaturę. Gdy spadnie ona poniżej wartości zadanej (tzw.&nbsp;<em>setpointu</em>), termostat zamyka obwód elektryczny, wysyłając sygnał do&nbsp;<strong>siłownika termoelektrycznego</strong>&nbsp;(zaworu). Siłownik otwiera przepływ ciepłej wody z obiegu kotła lub mieszacza do <a href="https://projekt-ogrzewania.pl/petla-grzewcza/">pętli grzewczej</a> w podłodze. Gdy temperatura zostanie osiągnięta, sygnał jest odcinany, siłownik zamyka zawór, a woda w pętli powoli oddaje zgromadzone ciepło. Ten cykl powtarza się, zapewniając stabilne warunki.</p>



<p class="wp-block-paragraph">Kluczową koncepcją jest&nbsp;<strong>histereza</strong>, czyli dopuszczalne odchylenie temperatury od wartości zadanej, które nie uruchamia reakcji termostatu. Zbyt mała histereza (np. 0,2°C) spowoduje zbyt częste załączanie siłowników. Dla ogrzewania podłogowego, z uwagi na jego bezwładność, zaleca się histerezę w zakresie&nbsp;<strong>0,5-1,0°C</strong>, co zapewni płynną i ekonomiczną pracę.</p>



<h3 class="wp-block-heading">Rodzaje termostatów: Od prostoty mechaniki po inteligencję chmury.</h3>



<p class="wp-block-paragraph">Wybór konkretnego typu termostatu determinuje nie tylko wygodę, ale i potencjał oszczędnościowy całego systemu.</p>



<h4 class="wp-block-heading"><strong>Termostaty mechaniczne (pokrętłowe)</strong>.</h4>



<p class="wp-block-paragraph">To najprostsze i najbardziej odporne urządzenia. Regulacja odbywa się za pomocą pokrętła z podziałką, często ze wskaźnikiem włączonego ogrzewania (świecąca lampka). Ich działanie opiera się najczęściej na&nbsp;<strong>elementach bimetalicznych</strong>, które odkształcają się pod wpływem temperatury, zwierając lub rozwierając styki.</p>



<ul class="wp-block-list">
<li><strong>Zalety:</strong>&nbsp;Niska cena, absolutna niezawodność, intuicyjna obsługa, brak potrzeby zasilania sieciowego (działają na własnym napięciu sterowania).</li>



<li><strong>Wady:</strong>&nbsp;Brak możliwości precyzyjnego ustawienia temperatury (podziałka jest przybliżona), brak funkcji programowania.</li>



<li><strong>Przykład zastosowania:</strong>&nbsp;Pomieszczenia techniczne, garaże, łazienki, gdzie priorytetem jest podstawowa funkcjonalność, a nie oszczędności.</li>
</ul>



<h4 class="wp-block-heading"><strong>Termostaty cyfrowe programowalne</strong>.</h4>



<p class="wp-block-paragraph">Stanowią standard w nowoczesnych instalacjach. Wyposażone w wyświetlacz LCD i przyciski, umożliwiają precyzyjne ustawienie temperatury z dokładnością do 0,5°C lub nawet 0,1°C.</p>



<ul class="wp-block-list">
<li><strong>Kluczowa funkcja:</strong>&nbsp;<strong>Program czasowy</strong>. Pozwala na ustawienie różnych temperatur dla różnych pór dnia (np.&nbsp;<strong>komfort</strong>&nbsp;21°C od 6:00 do 22:00) i dni tygodnia (np.&nbsp;<strong>oszczędność</strong>&nbsp;18°C w nocy i w czasie pracy). Tygodniowy harmonogram może być różny dla każdego dnia.</li>



<li><strong>Potencjał oszczędności:</strong>&nbsp;To właśnie programowanie przynosi realne oszczędności, szacowane na&nbsp;<strong>15-30%</strong>&nbsp;w skali sezonu grzewczego. System nie grzeje pełną mocą, gdy domownicy śpią lub są w pracy.</li>



<li><strong>Przykład konfiguracji:</strong>&nbsp;<code>Pon-Pt: 5:00-7:00 (21°C), 7:00-16:00 (17°C), 16:00-23:00 (21°C), 23:00-5:00 (18°C). Sob-Nd: 7:00-23:00 (21°C), 23:00-7:00 (18°C).</code></li>
</ul>



<h4 class="wp-block-heading"><strong>Termostaty sieciowe i inteligentne (Wi-Fi)</strong>.</h4>



<p class="wp-block-paragraph">To najbardziej zaawansowana grupa, będąca elementem&nbsp;<strong>systemu Smart Home</strong>. Łączą się z siecią domową Wi-Fi, dając pełną kontrolę przez aplikację na smartfonie z dowolnego miejsca na świecie.</p>



<ul class="wp-block-list">
<li><strong>Zaawansowane algorytmy:</strong>&nbsp;Niektóre modele (np. Nest, Tado, niektóre modele Uponor, Siemens) uczą się charakterystyki grzewczej domu i czasu jego nagrzewania, optymalizując moment startu.</li>



<li><strong>Geofencing (strefowanie geograficzne):</strong>&nbsp;Aplikacja, korzystając z lokalizacji telefonu, automatycznie przełącza system w tryb oszczędnościowy, gdy ostatni domownik wyjdzie z domu, i wraca do trybu komfortu, gdy ktoś zmierza do domu.</li>



<li><strong>Integracja:</strong>&nbsp;Możliwość integracji z asystentami głosowymi (Google Assistant, Alexa), systemami pogodowymi (korekta ogrzewania przy zmianie pogody) czy innymi urządzeniami smart home.</li>



<li><strong>Wady:</strong>&nbsp;Wyższa cena, zależność od stabilności łącza internetowego, potencjalne kwestie prywatności danych.</li>
</ul>



<h2 class="wp-block-heading">Kryteria techniczne wyboru: Na co patrzeć poza ceną i wyglądem?</h2>



<p class="wp-block-paragraph">Dobór&nbsp;<strong>modułu sterującego ogrzewaniem podłogowym</strong>&nbsp;musi opierać się na twardych parametrach technicznych, których niedopasowanie uniemożliwi poprawne działanie instalacji.</p>



<h3 class="wp-block-heading">Napięcie sterowania: 230V AC vs 24V AC/DC.</h3>



<p class="wp-block-paragraph">To&nbsp;<strong>najważniejszy parametr kompatybilnościowy</strong>. Musi być absolutnie zgodny z napięciem pracy siłowników termoelektrycznych zamontowanych na rozdzielaczu.</p>



<ul class="wp-block-list">
<li><strong>Termostat 230V AC:</strong>&nbsp;Steruje bezpośrednio siłownikami 230V. Prosty w instalacji (brak dodatkowych zasilaczy), ale w przypadku awarii termostatu do siłownika trafia pełne napięcie sieciowe.</li>



<li><strong>Termostat 24V AC/DC:</strong>&nbsp;Wymaga zastosowania&nbsp;<strong>transformatora (zasilacza)</strong>, który obniża napięcie do bezpiecznej wartości 24V. Rozwiązanie uważane za bezpieczniejsze i bardziej elastyczne, standard w nowoczesnych instalacjach. Zasilacz może obsługiwać grupę kilku termostatów.</li>
</ul>



<h3 class="wp-block-heading">Typ i lokalizacja czujnika temperatury.</h3>



<p class="wp-block-paragraph">To decyduje o tym,&nbsp;<em>co</em>&nbsp;tak naprawdę regulujemy.</p>



<ul class="wp-block-list">
<li><strong>Czujnik podłogowy (DS):</strong>&nbsp;Mały przewodowy czujnik umieszczany&nbsp;<strong>bezpośrednio w pętli grzewczej</strong>&nbsp;(np. w rurce ochronnej w wylewce). Jego rolą jest&nbsp;<strong>ograniczenie maksymalnej temperatury podłogi</strong>&nbsp;(zazwyczaj do 26-29°C dla pomieszczeń stałego pobytu, do 33-35°C dla łazienek). Jest&nbsp;<strong>niezbędny</strong>&nbsp;dla ochrony posadzek (zwłaszcza drewnianych, paneli, niektórych płytek) przed zniszczeniem i dla komfortu stóp.</li>



<li><strong>Czujnik powietrzny (wbudowany lub zdalny &#8211; TA):</strong>&nbsp;Mierzy temperaturę powietrza na wysokości montażu termostatu (~1,5 m). Idealny do utrzymania komfortu w pomieszczeniu.</li>



<li><strong>Sterowanie mieszane (DS+TA):</strong>&nbsp;Najbardziej uniwersalny i zalecany tryb. Termostat używa&nbsp;<strong>czujnika powietrznego jako głównego</strong>&nbsp;do osiągnięcia zadanej temperatury w pomieszczeniu, ale&nbsp;<strong>czujnik podłogowy pełni funkcję zabezpieczającą</strong>. Jeśli temperatura podłogi zbliży się do maksymalnej wartości granicznej, termostat ograniczy lub wyłączy grzanie, nawet jeśli temperatura powietrza nie jest jeszcze osiągnięta.</li>
</ul>



<p class="wp-block-paragraph"><strong>Tabela porównawcza: Tryby pracy termostatu</strong>.</p>



<style>
/* === Kontener tabeli === */
.thermostat-table-wrapper {
  width: 100%;
  overflow-x: auto;
  margin: 30px 0;
  font-family: Arial, sans-serif;
}

/* === Tabela === */
.thermostat-table {
  width: 100%;
  border-collapse: collapse;
  min-width: 900px;
  background: #ffffff;
}

/* === Nagłówki === */
.thermostat-table thead {
  background: #f5f7fa;
}

.thermostat-table th {
  padding: 14px 12px;
  text-align: left;
  font-weight: 600;
  font-size: 15px;
  border-bottom: 2px solid #ddd;
  white-space: nowrap;
}

/* === Komórki === */
.thermostat-table td {
  padding: 14px 12px;
  font-size: 14px;
  border-bottom: 1px solid #e5e5e5;
  vertical-align: top;
  font-weight: 400;
}

/* === Mobile: układ kart === */
@media (max-width: 768px) {
  .thermostat-table {
    min-width: 100%;
  }

  .thermostat-table thead {
    display: none;
  }

  .thermostat-table tr {
    display: block;
    margin-bottom: 20px;
    border: 1px solid #ddd;
    border-radius: 8px;
    padding: 10px;
    background: #fafafa;
  }

  .thermostat-table td {
    display: flex;
    justify-content: space-between;
    padding: 8px 6px;
    border: none;
    font-size: 14px;
  }

  .thermostat-table td::before {
    content: attr(data-label);
    font-weight: 600;
    color: #555;
    padding-right: 10px;
    flex: 0 0 45%;
  }
}
</style>

<div class="thermostat-table-wrapper">
  <table class="thermostat-table">
    <thead>
      <tr>
        <th>Tryb pracy</th>
        <th>Czujnik aktywny</th>
        <th>Cel regulacji</th>
        <th>Zalety</th>
        <th>Wady / Uwagi</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td data-label="Tryb pracy">Tylko podłogowy</td>
        <td data-label="Czujnik aktywny">Podłogowy (DS)</td>
        <td data-label="Cel regulacji">
          Utrzymanie stałej, bezpiecznej temperatury podłogi
        </td>
        <td data-label="Zalety">
          Chroni posadzkę, prostota
        </td>
        <td data-label="Wady / Uwagi">
          Nie reaguje na zmiany temperatury powietrza
          (np. nasłonecznienie, przeciąg)
        </td>
      </tr>

      <tr>
        <td data-label="Tryb pracy">Tylko powietrzny</td>
        <td data-label="Czujnik aktywny">Powietrzny (TA)</td>
        <td data-label="Cel regulacji">
          Utrzymanie zadanej temperatury powietrza w pomieszczeniu
        </td>
        <td data-label="Zalety">
          Bezpośredni wpływ na komfort
        </td>
        <td data-label="Wady / Uwagi">
          Ryzyko przegrzania podłogi; czujnik wrażliwy na lokalne warunki
        </td>
      </tr>

      <tr>
        <td data-label="Tryb pracy">Mieszany (Limit)</td>
        <td data-label="Czujnik aktywny">
          Głównie powietrzny (TA) z limitem podłogowym (DS)
        </td>
        <td data-label="Cel regulacji">
          Temperatura powietrza z priorytetem ochrony podłogi
        </td>
        <td data-label="Zalety">
          Optymalny komfort i bezpieczeństwo – najczęściej zalecany
        </td>
        <td data-label="Wady / Uwagi">
          Wymaga poprawnego rozmieszczenia obu czujników
        </td>
      </tr>

      <tr>
        <td data-label="Tryb pracy">Adaptacyjny (Alg.)</td>
        <td data-label="Czujnik aktywny">
          Oba + algorytmy uczenia
        </td>
        <td data-label="Cel regulacji">
          Komfort przy minimalnym zużyciu energii
        </td>
        <td data-label="Zalety">
          Maksymalna efektywność energetyczna
          (inteligentne termostaty)
        </td>
        <td data-label="Wady / Uwagi">
          Wyższa cena i bardziej złożona konfiguracja
        </td>
      </tr>
    </tbody>
  </table>
</div>



<h2 class="wp-block-heading">Projekt ogrzewania podłogowego a dobór termostatu: Nierozerwalny duet.</h2>



<p class="wp-block-paragraph"><strong>Planowanie systemu sterowania powinno być integralną częścią <a href="https://projekt-ogrzewania.pl/kategoria-produktu/projekty/">projektu ogrzewania podłogowego</a>, a nie myślą dodatkową.</strong> Profesjonalny projekt uwzględnia nie tylko rozmieszczenie pętli grzewczych i średnice rur, ale także:</p>



<ol start="1" class="wp-block-list">
<li><strong>Podział na strefy grzewcze:</strong>&nbsp;Każde pomieszczenie lub grupa pomieszczeń o podobnym charakterze użytkowania i bilansie cieplnym powinno stanowić oddzielną strefę z&nbsp;<strong>indywidualnym termostatem</strong>. Łazienka, salon, sypialnie – każda z nich ma inne wymagania czasowe i temperaturę komfortu.</li>



<li><strong>Dobór typu siłowników i napięcia sterowania:</strong>&nbsp;Projekt powinien precyzyjnie określać, czy na rozdzielaczu zastosujemy siłowniki&nbsp;<em>normalnie otwarte (NO)</em>&nbsp;czy&nbsp;<em>normalnie zamknięte (NC)</em>&nbsp;oraz czy będą to modele 230V czy 24V. Ta decyzja determinuje wybór termostatów.</li>



<li><strong>Lokalizacja czujników podłogowych:</strong>&nbsp;Projekt musi wskazać miejsca wprowadzenia rurek ochronnych na czujniki podłogowe, zwykle pomiędzy rurami grzewczymi, w odległości ok. 50-100 cm od ściany.</li>



<li><strong>Miejsce montażu termostatów:</strong>&nbsp;Należy zaplanować punkty montażowe standardowych puszek elektrycznych pod termostaty. Muszą one znajdować się&nbsp;<strong>na ścianie wewnętrznej, z dala od źródeł ciepła/chłodu</strong>&nbsp;(okna, drzwi balkonowe, kominki, kratki wentylacyjne), na wysokości ok. 1,5 m nad poziomem podłogi.</li>



<li><strong>Integracja z systemem nadrzędnym:</strong> W domach z kotłem kondensacyjnym, pompą ciepła czy systemem solarnym, projekt powinien rozważyć zastosowanie <strong><a href="https://projekt-ogrzewania.pl/sterownik-regulator-pogodowy/">sterownika pogodowego</a> lub multifunkcyjnego</strong> jako nadrzędnego, który będzie optymalizował pracę źródła ciepła w oparciu o krzywą grzewczą, a <strong>termostaty pokojowe</strong> będą pełnić rolę korekty lokalnej (tzw. funkcja <strong>priorytetu pogodowego</strong>). W takim układzie termostat wysyła sygnał &#8222;żądania ciepła&#8221; do centralnego sterownika, który decyduje o parametrach pracy źródła.</li>
</ol>



<p class="wp-block-paragraph"><strong>Przykład wyliczeniowy &#8211; koszt zaniedbania projektu sterowania:</strong>&nbsp;Załóżmy dom o zapotrzebowaniu na ciepło 12 000 kWh/rok. Brak strefowania i programowania może prowadzić do przegrzewania nieużywanych pomieszczeń. Jeśli w wyniku tego marnujemy tylko&nbsp;<strong>15%</strong>&nbsp;energii, jest to strata&nbsp;<strong>1800 kWh/rok</strong>. Przy cenie gazu ziemnego ok. 0,30 zł/kWh daje to&nbsp;<strong>540 zł rocznie</strong>. Inwestycja w dobre termostaty programowalne (ok. 200-300 zł/szt. dla 8 stref = 2000 zł) zwróci się więc w&nbsp;<strong>około 4 lata</strong>, a przez kolejne lata przynosząc czystą oszczędność.</p>



<h2 class="wp-block-heading">Zaawansowane funkcje i praktyczne porady montażowe.</h2>



<p class="wp-block-paragraph">Nowoczesne termostaty oferują szereg funkcji dodatkowych, zwiększających ich użyteczność:</p>



<ul class="wp-block-list">
<li><strong>Tryb &#8222;przeciwzamrożeniowy&#8221;:</strong>&nbsp;Utrzymuje minimalną temperaturę (np. +5°C lub +7°C), zabezpieczając instalację i wyposażenie domu podczas dłuższych nieobecności w sezonie zimowym.</li>



<li><strong>&#8222;Window function&#8221; (funkcja okienna):</strong>&nbsp;Po wykryciu gwałtownego spadku temperatury (np. po otwarciu okna na przewietrzenie) termostat automatycznie wyłącza ogrzewanie na ustalony czas, by nie marnować energii.</li>



<li><strong>Blokada rodzicielska/klawiszy:</strong>&nbsp;Zabezpiecza ustawienia przed przypadkową lub celową zmianą przez dzieci.</li>



<li><strong>Monitoring zużycia energii:</strong>&nbsp;Niektóre modele szacują zużycie energii na podstawie czasu otwarcia siłownika, co pomaga w zarządzaniu energią.</li>
</ul>



<p class="wp-block-paragraph"><strong>Porady montażowe i serwisowe:</strong></p>



<ul class="wp-block-list">
<li>Przed montażem&nbsp;<strong>koniecznie sprawdź poprawność działania czujnika podłogowego</strong>&nbsp;poprzez pomiar jego rezystancji (zgodnie z wartościami katalogowymi). Jego wymiana po wylaniu posadzki jest bardzo trudna lub niemożliwa.</li>



<li>Unikaj prowadzenia przewodów czujnika podłogowego w tych samych kanałach/trasach co przewody zasilające 230V, by uniknąć zakłóceń.</li>



<li>Pamiętaj, że termostat reguluje&nbsp;<strong>dostęp ciepłej wody do pętli</strong>, ale&nbsp;<strong>nie kontroluje temperatury tej wody</strong>. To zadanie&nbsp;<strong>modułu mieszającego</strong>&nbsp;(z pompą obiegową i głowicą termostatyczną lub sterownikiem). Termostat i mieszacz muszą współpracować.</li>
</ul>



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



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1768550517807"><strong class="schema-faq-question"><strong>Jaki termostat najlepiej sprawdzi się do ogrzewania podłogowego?</strong></strong> <p class="schema-faq-answer">Najlepszym wyborem są termostaty cyfrowe programowalne lub inteligentne, które uwzględniają bezwładność cieplną podłogówki i umożliwiają sterowanie strefowe.</p> </div> <div class="schema-faq-section" id="faq-question-1768550528216"><strong class="schema-faq-question"><strong>Czy w ogrzewaniu podłogowym potrzebny jest czujnik podłogowy?</strong></strong> <p class="schema-faq-answer">Tak. Czujnik podłogowy chroni posadzkę przed przegrzaniem i zwiększa komfort użytkowania, szczególnie przy podłogach drewnianych i panelach.</p> </div> <div class="schema-faq-section" id="faq-question-1768550550512"><strong class="schema-faq-question"><strong>Czy jeden termostat może sterować całym domem?</strong></strong> <p class="schema-faq-answer">Technicznie tak, ale jest to niezalecane. Brak strefowania prowadzi do strat energii i obniżenia komfortu w poszczególnych pomieszczeniach.</p> </div> <div class="schema-faq-section" id="faq-question-1768550573861"><strong class="schema-faq-question"><strong>230V czy 24V – jakie napięcie termostatu wybrać?</strong></strong> <p class="schema-faq-answer">Oba rozwiązania są poprawne, jednak systemy 24V są bezpieczniejsze i częściej stosowane w nowoczesnych instalacjach z wieloma strefami.</p> </div> <div class="schema-faq-section" id="faq-question-1768550581640"><strong class="schema-faq-question"><strong>Czy inteligentny termostat realnie obniża rachunki?</strong></strong> <p class="schema-faq-answer">Tak. Dzięki harmonogramom, geolokalizacji i algorytmom adaptacyjnym oszczędności mogą sięgać nawet 20–30% w skali sezonu grzewczego.</p> </div> </div>



<h2 class="wp-block-heading">Podsumowanie.</h2>



<p class="wp-block-paragraph">Podsumowując,&nbsp;<strong>termostat w ogrzewaniu podłogowym</strong>&nbsp;to znacznie więcej niż wygodny panel na ścianie. To precyzyjne narzędzie optymalizacji, którego wybór powinien wynikać z przemyślanego&nbsp;<strong>projektu</strong>, znajomości&nbsp;<strong>parametrów technicznych</strong>&nbsp;instalacji oraz realnych&nbsp;<strong>oczekiwań użytkowników</strong>. Inwestycja w zaawansowany, programowalny lub inteligentny system sterowania zwraca się w postaci wymiernych oszczędności, podniesionego komfortu życia oraz ochrony samej instalacji i wykończenia podłogi. W systemie wodnego ogrzewania podłogowego, gdzie reakcje są powolne, a skutki błędów długotrwałe, warto powierzyć kontrolę najlepszemu dostępnemu &#8222;mózgowi&#8221;.</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="SRberQLMf6"><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=TlzBAqBDC9#?secret=SRberQLMf6" data-secret="SRberQLMf6" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">Termostat w ogrzewaniu podłogowym.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Czy warto montować sterowniki do ogrzewania podłogowego?</title>
		<link>https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Thu, 11 Dec 2025 10:36:22 +0000</pubDate>
				<category><![CDATA[Automatyka domowa]]></category>
		<category><![CDATA[Energooszczędność]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Komfort w domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Projekty instalacji]]></category>
		<category><![CDATA[Smart home]]></category>
		<category><![CDATA[Sterowanie ogrzewaniem]]></category>
		<category><![CDATA[Sterowniki do podłogówki]]></category>
		<category><![CDATA[Technika grzewcza]]></category>
		<category><![CDATA[automatyka grzewcza]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[regulacja temperatury]]></category>
		<category><![CDATA[smart home]]></category>
		<category><![CDATA[sterownik pogodowy]]></category>
		<category><![CDATA[sterownik pokojowy]]></category>
		<category><![CDATA[sterowniki do podłogówki]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2934</guid>

					<description><![CDATA[<p>Czy warto montować sterowniki do ogrzewania podłogowego? To pytanie zadaje sobie dziś większość osób planujących nowoczesny system grzewczy w swoim domu. Podłogówka sama w sobie daje komfort, ale dopiero odpowiednia automatyka pozwala realnie oszczędzać, podnosić wygodę i wykorzystać pełen potencjał instalacji. W zajawce wyjaśniamy, dlaczego sterowniki stają się nieodłącznym elementem współczesnych systemów grzewczych i jak wpływają na ich efektywność, trwałość oraz codzienną eksploatację.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/">Czy warto montować sterowniki do 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-blue: #0284c7;
    --rk-intro-blue-light: #e0f2fe;
    --rk-intro-green: #10b981;
    --rk-intro-green-light: #dcfce7;
    --rk-intro-gray: #475569;
    --rk-intro-gray-light: #f8fafc;
    --rk-intro-bg: #ffffff;
    --rk-intro-border: #e2e8f0;
}

.rk-intro-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-intro-bg);
    border: 2px solid var(--rk-intro-dark);
    /* Brak border-radius - styl surowy, techniczny */
}

/* Sekcja Hook i Szybka Odpowiedź */
.rk-intro-hero {
    padding: 45px 50px;
    background: var(--rk-intro-dark);
    color: #ffffff;
    border-bottom: 5px solid var(--rk-intro-blue);
}

.rk-intro-hook {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-intro-blue-light);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-intro-hero h2 {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 25px 0;
    line-height: 1.2;
    color: #ffffff;
}

.rk-intro-answer-box {
    background: #1e293b;
    border-left: 6px solid var(--rk-intro-green);
    padding: 25px 30px;
}

.rk-intro-answer-title {
    font-size: 13px;
    color: var(--rk-intro-green);
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-intro-answer-text {
    font-size: 18px;
    font-weight: 700;
    line-height: 1.6;
    margin: 0;
    color: #f8fafc;
}

.rk-intro-answer-text strong {
    color: #ffffff;
    font-weight: 900;
    background: var(--rk-intro-green);
    padding: 2px 8px;
    border-radius: 4px;
}

/* Sekcja merytoryczna */
.rk-intro-content {
    padding: 40px 50px;
    font-size: 16px;
    color: var(--rk-intro-gray);
    line-height: 1.7;
}

.rk-intro-content p {
    margin: 0 0 20px 0;
}

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

/* Interaktywny Nawigator Artykułu (Brak animacji) */
.rk-intro-nav {
    margin-top: 40px;
    border: 1px solid var(--rk-intro-border);
    background: var(--rk-intro-gray-light);
}

.rk-intro-nav-header {
    background: var(--rk-intro-border);
    padding: 15px 30px;
    font-weight: 800;
    color: var(--rk-intro-dark);
    font-size: 15px;
    text-transform: uppercase;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-intro-nav-tabs {
    display: flex;
    border-bottom: 1px solid var(--rk-intro-border);
    background: #ffffff;
}

.rk-intro-tab-btn {
    flex: 1;
    padding: 15px 20px;
    background: #ffffff;
    border: none;
    border-bottom: 3px solid transparent;
    border-right: 1px solid var(--rk-intro-border);
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-intro-gray);
    cursor: pointer;
}

.rk-intro-tab-btn:last-child {
    border-right: none;
}

.rk-intro-tab-btn:hover {
    background: var(--rk-intro-gray-light);
}

.rk-intro-tab-btn.is-active {
    background: var(--rk-intro-blue-light);
    color: var(--rk-intro-blue);
    border-bottom-color: var(--rk-intro-blue);
}

.rk-intro-panels {
    padding: 30px;
    background: #ffffff;
}

.rk-intro-panel {
    display: none;
}

.rk-intro-panel.is-active {
    display: block;
}

.rk-intro-panel-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-intro-dark);
    margin: 0 0 10px 0;
}

.rk-intro-panel-desc {
    font-size: 14px;
    color: var(--rk-intro-gray);
    margin: 0;
    line-height: 1.6;
}

@media (max-width: 768px) {
    .rk-intro-container { margin: 20px auto; border-left: none; border-right: none; }
    .rk-intro-hero, .rk-intro-content { padding: 30px 20px; }
    .rk-intro-hero h2 { font-size: 24px; }
    .rk-intro-answer-box { padding: 20px; }
    .rk-intro-answer-text { font-size: 16px; }
    .rk-intro-nav-tabs { flex-direction: column; }
    .rk-intro-tab-btn { border-right: none; border-bottom: 1px solid var(--rk-intro-border); border-left: 4px solid transparent; text-align: left; }
    .rk-intro-tab-btn.is-active { border-left-color: var(--rk-intro-blue); border-bottom-color: var(--rk-intro-border); }
    .rk-intro-panels { padding: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Czy warto montować sterowniki do ogrzewania podłogowego? Szybka odpowiedź",
    "description": "Bezpośrednia inżynierska odpowiedź na pytanie o opłacalność automatyki podłogówki. Poznaj argumenty, które pozwolą Ci zaoszczędzić od 15% do 25% energii.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-wstep",
    "name": "Kluczowe wskaźniki efektywności (KPI) dla automatyki ogrzewania płaszczyznowego",
    "description": "Wstępne zestawienie danych wejściowych dotyczących redukcji kosztów eksploatacyjnych po montażu sterowników strefowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "czy warto montować sterowniki do ogrzewania podłogowego",
      "automatyka strefowa do podłogówki czy warto",
      "koszty eksploatacji budynku z pompą ciepła",
      "bezwładność termiczna jastrychu a sterowanie",
      "optymalizacja sprawności cop kotła"
    ],
    "measurementTechnique": "Deklaracja początkowego wskaźnika redukcji zużycia energii (15-25%) uzyskanego poprzez strefową blokadę przepływu czynnika grzewczego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Montaż sterowników jest w 100% technicznie i ekonomicznie uzasadniony.",
        "Automatyka zabezpiecza materiał posadzki przed przegrzewaniem i optymalizuje COP."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-wstep",
    "name": "Nawigator Narzędzi Inżynierskich",
    "description": "Moduł wprowadzający czytelnika do zagnieżdżonych w artykule interaktywnych kalkulatorów i symulatorów procesów cieplnych.",
    "applicationCategory": "NavigationApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container" id="rk-intro-app">
    <div class="rk-intro-hero">
        <div class="rk-intro-hook">
            <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><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
            Budowa bez ściemy
        </div>
        <h2>Czy warto montować sterowniki do ogrzewania podłogowego?</h2>
        
        <div class="rk-intro-answer-box">
            <div class="rk-intro-answer-title">
                <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>
                Inżynierski Werdykt
            </div>
            <p class="rk-intro-answer-text">
                <strong>TAK.</strong> Montaż sterowników do wodnego ogrzewania podłogowego jest opłacalny i technicznie uzasadniony. Pozwala obniżyć koszty eksploatacji budynku o <strong>15% do 25%</strong>, brutalnie eliminując zjawisko permanentnego przegrzewania pomieszczeń.
            </p>
        </div>
    </div>

    <div class="rk-intro-content">
        <p>Instalator mówi, że pompa ciepła &#8222;sama sobie poradzi&#8221;, a Ty zastanawiasz się, czy inwestować w dodatkową elektronikę? Prawda jest taka, że bez precyzyjnego sterowania oddajesz kontrolę nad swoimi rachunkami ślepemu trafowi.</p>
        
        <p>Automatyka strefowa bezpośrednio dopasowuje wydatek cieplny poszczególnych pętli do rzeczywistego zapotrzebowania, kompensując tym samym wysoką <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładność termiczną jastrychu</a>. Bezpośrednia kontrola nad przepływem czynnika grzewczego w każdej strefie z osobna chroni drogi materiał posadzki przed uszkodzeniem termicznym i drastycznie optymalizuje sprawność (COP) Twojej pompy ciepła lub kotła kondensacyjnego.</p>

        <div class="rk-intro-nav">
            <div class="rk-intro-nav-header">
                <svg width="20" height="20" 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>
                Co potrafią darmowe narzędzia w tym artykule?
            </div>
            
            <div class="rk-intro-nav-tabs">
                <button class="rk-intro-tab-btn is-active" data-show="n-roi">Kalkulator ROI</button>
                <button class="rk-intro-tab-btn" data-show="n-pwm">Symulator Algorytmu</button>
                <button class="rk-intro-tab-btn" data-show="n-ntc">Ochrona Posadzki</button>
            </div>

            <div class="rk-intro-panels">
                <div class="rk-intro-panel is-active" id="n-roi">
                    <h4 class="rk-intro-panel-title">Oblicz, kiedy zwróci Ci się inwestycja</h4>
                    <p class="rk-intro-panel-desc">Poniżej znajdziesz interaktywny kalkulator finansowy. Wpisz powierzchnię swojego domu oraz cenę prądu, aby natychmiast zobaczyć, w ile miesięcy oszczędności pokryją koszt zakupu listwy, siłowników i termostatów.</p>
                </div>
                
                <div class="rk-intro-panel" id="n-pwm">
                    <h4 class="rk-intro-panel-title">Zobacz fizykę w akcji (Algorytm PWM)</h4>
                    <p class="rk-intro-panel-desc">Oddajemy w Twoje ręce symulator inżynierski. Przekonaj się na własne oczy, jak uchyb temperatury wpływa na czas otwarcia siłownika przy wylewce betonowej, a jak przy anhydrytowej. Koniec z wróżeniem z fusów.</p>
                </div>
                
                <div class="rk-intro-panel" id="n-ntc">
                    <h4 class="rk-intro-panel-title">Ochrona paneli przed stopieniem (Czujnik NTC)</h4>
                    <p class="rk-intro-panel-desc">Wizualizacja trybu dwukanałowego. Sprawdź interaktywny model pokazujący, co dzieje się z Twoimi panelami winylowymi, gdy przekroczysz barierę 27°C i dlaczego czujnik w wylewce to absolutna konieczność.</p>
                </div>
            </div>
        </div>
        
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const navBtns = document.querySelectorAll('.rk-intro-tab-btn');
    const navPanels = document.querySelectorAll('.rk-intro-panel');

    navBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Twarde przełączanie (bez animacji, bez &&)
            const targetId = this.getAttribute('data-show');
            
            navBtns.forEach(function(b) {
                b.classList.remove('is-active');
            });
            
            navPanels.forEach(function(p) {
                p.classList.remove('is-active');
            });

            this.classList.add('is-active');
            
            const activePanel = document.getElementById(targetId);
            if (activePanel) {
                activePanel.classList.add('is-active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-flow-dark: #0f172a;
    --rk-flow-darker: #0b1120;
    --rk-flow-blue: #0284c7;
    --rk-flow-blue-light: #e0f2fe;
    --rk-flow-green: #10b981;
    --rk-flow-orange: #f59e0b;
    --rk-flow-red: #ef4444;
    --rk-flow-gray: #475569;
    --rk-flow-bg: #ffffff;
    --rk-flow-border: #e2e8f0;
}

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

.rk-flow-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-flow-dark) 0%, #1e293b 100%);
    color: #ffffff;
}

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

.rk-flow-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0 0 15px 0;
    line-height: 1.7;
}
.rk-flow-header p:last-child { margin-bottom: 0; }

.rk-flow-header a {
    color: #38bdf8;
    text-decoration: none;
    border-bottom: 1px dashed #38bdf8;
    font-weight: 600;
    transition: color 0.3s;
}

.rk-flow-header a:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

.rk-flow-body {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-flow-text-section {
    background: var(--rk-flow-bg);
    border: 1px solid var(--rk-flow-border);
    border-radius: 16px;
    padding: 30px;
    margin-bottom: 30px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-flow-text-section p {
    font-size: 15px;
    color: var(--rk-flow-gray);
    line-height: 1.6;
    margin: 0;
}

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

/* Interaktywny Symulator Pętli */
.rk-flow-interactive {
    background: var(--rk-flow-darker);
    border-radius: 20px;
    padding: 40px;
    display: flex;
    flex-direction: column;
    align-items: center;
    position: relative;
    box-shadow: inset 0 4px 20px rgba(0,0,0,0.3);
}

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

.rk-flow-btn-trigger {
    background: var(--rk-flow-orange);
    color: #ffffff;
    border: none;
    padding: 16px 32px;
    font-size: 16px;
    font-weight: 800;
    border-radius: 12px;
    cursor: pointer;
    box-shadow: 0 10px 20px -5px rgba(245, 158, 11, 0.4);
    transition: all 0.3s;
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 40px;
    z-index: 10;
}

.rk-flow-btn-trigger:hover {
    transform: translateY(-3px);
    background: #d97706;
}

.rk-flow-btn-trigger:disabled {
    background: #475569;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}

/* Kontener SVG */
.rk-flow-svg-wrap {
    width: 100%;
    max-width: 700px;
    height: 250px;
    position: relative;
}

.rk-svg-component {
    fill: #1e293b;
    stroke: #334155;
    stroke-width: 2;
    rx: 8;
    transition: all 0.3s;
}

.rk-svg-text {
    fill: #cbd5e1;
    font-size: 12px;
    font-family: 'Inter', sans-serif;
    font-weight: 700;
    text-anchor: middle;
}

.rk-svg-wire {
    fill: none;
    stroke: #334155;
    stroke-width: 4;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.rk-svg-signal {
    fill: none;
    stroke: var(--rk-flow-blue);
    stroke-width: 4;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-dasharray: 1000;
    stroke-dashoffset: 1000;
}

.rk-svg-sun {
    fill: var(--rk-flow-orange);
    opacity: 0;
    transform: scale(0.5);
    transform-origin: 50px 50px;
    transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Stany Animacji (Dodawane przez JS) */
.state-step-1 .rk-svg-sun { opacity: 1; transform: scale(1); animation: rkPulseSun 2s infinite; }
.state-step-2 .rk-svg-comp-thermostat { fill: var(--rk-flow-blue); stroke: #38bdf8; }
.state-step-2 .rk-svg-text-thermostat { fill: #ffffff; }
.state-step-3 .rk-svg-signal-1 { animation: rkRunSignal 1s forwards linear; }
.state-step-4 .rk-svg-comp-listwa { fill: var(--rk-flow-blue); stroke: #38bdf8; }
.state-step-5 .rk-svg-signal-2 { animation: rkRunSignal 1.5s forwards linear; }
.state-step-6 .rk-svg-comp-actuator { fill: var(--rk-flow-red); stroke: #fca5a5; transition: fill 3s; /* Symulacja powolnego zamknięcia */ }
.state-step-6 .rk-svg-water-flow { stroke-dashoffset: 100; transition: stroke-dashoffset 3s linear; }

@keyframes rkPulseSun {
    0% { filter: drop-shadow(0 0 5px rgba(245, 158, 11, 0.5)); }
    50% { filter: drop-shadow(0 0 15px rgba(245, 158, 11, 0.8)); transform: scale(1.1); }
    100% { filter: drop-shadow(0 0 5px rgba(245, 158, 11, 0.5)); }
}

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

.rk-flow-status-text {
    position: absolute;
    bottom: 20px;
    color: var(--rk-flow-green);
    font-weight: 800;
    font-size: 14px;
    letter-spacing: 1px;
    text-transform: uppercase;
    opacity: 0;
    transition: opacity 0.5s;
}

.rk-flow-status-text.visible {
    opacity: 1;
}

@media (max-width: 768px) {
    .rk-flow-container { margin: 20px auto; border-radius: 16px; }
    .rk-flow-header, .rk-flow-body { padding: 25px 20px; }
    .rk-flow-header h2 { font-size: 24px; }
    .rk-flow-svg-wrap { height: 350px; }
    .rk-flow-interactive { padding: 30px 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-sprzezenie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Jak działa automatyka do podłogówki i dlaczego ręczna regulacja pętli generuje straty?",
    "description": "Analiza strat energii rzędu 5-18% wywołanych ręczną regulacją zaworów. Poznaj algorytmy TPI/PWM i zobacz interaktywną wizualizację pętli sprzężenia zwrotnego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-sprzezenie",
    "name": "Analiza strat energii przy ręcznej regulacji podłogówki",
    "description": "Techniczne uwarunkowania bezwładności termicznej jastrychu oraz dynamika siłowników termoelektrycznych w systemach zamkniętej pętli.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "algorytm TPI PWM",
      "siłowniki termoelektryczne 230V",
      "bezwładność jastrychu 6.5cm",
      "przegrzewanie pomieszczeń podłogówka",
      "listwa sterująca do podłogówki",
      "zamknięte sprzężenie zwrotne ogrzewanie"
    ],
    "measurementTechnique": "Ewaluacja czasu reakcji komponentów automatyki (3 do 5 minut) w stosunku do akumulacyjności termicznej wylewki grzewczej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Brak automatyki prowadzi do przegrzewania pomieszczeń o 1-3°C, generując straty na poziomie 5-18%.",
        "Algorytmy PWM dawkują energię impulsowo zapobiegając przegrzewaniu poprzez wyprzedzające zamykanie pętli."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-sprzezenie",
    "name": "Symulator Pętli Sprzężenia Zwrotnego",
    "description": "Edukacyjna aplikacja wizualizująca komunikację między termostatem a listwą centralną i siłownikiem podczas redukcji zysków ciepła.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-flow-container" id="rk-flow-app">
    <div class="rk-flow-header">
        <h2>Jak działa automatyka do podłogówki i dlaczego ręczna regulacja pętli generuje straty?</h2>
        <p>Ręczne sterowanie wodnym ogrzewaniem podłogowym za pomocą zaworów miniaturowych na rozdzielaczu uniemożliwia stabilizację temperatury wewnętrznej, co prowadzi do permanentnego przegrzewania pomieszczeń o 1°C do 3°C i zwiększenia zużycia energii o <span class="rk-flow-highlight">5% do 18%</span>.</p>
        <p>Wynika to bezpośrednio z <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładności termicznej</a> płyty grzewczej (jastrychu o grubości 6,5 cm), która magazynuje potężne ilości energii i oddaje ją przez wiele godzin po mechanicznym odcięciu zasilania.</p>
    </div>

    <div class="rk-flow-body">
        
        <div class="rk-flow-text-section">
            <p>Automatyka strefowa działa w <strong>pętli zamkniętego sprzężenia zwrotnego</strong>. Czujnik pokojowy stale monitoruje temperaturę powietrza oraz temperaturę podłogi. W momencie rejestracji zysków ciepła (np. od nasłonecznienia), sygnał przekazywany jest do listwy centralnej, która odcina zasilanie <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłowników termoelektrycznych</a> (230V/24V). Zastosowanie algorytmu <strong>TPI / PWM</strong> pozwala na pulsacyjne dawkowanie energii zanim nastąpi przekroczenie progu wygody.</p>
        </div>

        <div class="rk-flow-interactive" id="flowSimulator">
            <h3 class="rk-flow-interactive-title">Schemat Komunikacji Komponentów</h3>
            
            <button class="rk-flow-btn-trigger" id="btnSimulate">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg>
                Symuluj nasłonecznienie
            </button>

            <div class="rk-flow-svg-wrap">
                <svg viewBox="0 0 700 250" width="100%" height="100%">
                    
                    <g class="rk-svg-sun">
                        <circle cx="60" cy="50" r="15"/>
                        <line x1="60" y1="20" x2="60" y2="30" stroke="#f59e0b" stroke-width="3" stroke-linecap="round"/>
                        <line x1="60" y1="70" x2="60" y2="80" stroke="#f59e0b" stroke-width="3" stroke-linecap="round"/>
                        <line x1="30" y1="50" x2="40" y2="50" stroke="#f59e0b" stroke-width="3" stroke-linecap="round"/>
                        <line x1="80" y1="50" x2="90" y2="50" stroke="#f59e0b" stroke-width="3" stroke-linecap="round"/>
                    </g>
                    
                    <path d="M 550 200 L 150 200" fill="none" stroke="#e2e8f0" stroke-width="12" stroke-linecap="round"/>
                    <path class="rk-svg-water-flow" id="waterFlow" d="M 550 200 L 150 200" fill="none" stroke="#38bdf8" stroke-width="6" stroke-linecap="round" stroke-dasharray="10 15"/>

                    <path class="rk-svg-wire" d="M 150 120 L 350 120"/>
                    <path class="rk-svg-wire" d="M 350 120 L 550 120"/>

                    <path class="rk-svg-signal rk-svg-signal-1" d="M 150 120 L 350 120"/>
                    <path class="rk-svg-signal rk-svg-signal-2" d="M 350 120 L 550 120"/>

                    <rect x="100" y="90" width="100" height="60" class="rk-svg-component rk-svg-comp-thermostat"/>
                    <text x="150" y="115" class="rk-svg-text rk-svg-text-thermostat">TERMOSTAT</text>
                    <text x="150" y="135" class="rk-svg-text rk-svg-text-thermostat">(Pomiar Pokoju)</text>

                    <rect x="300" y="80" width="100" height="80" class="rk-svg-component rk-svg-comp-listwa"/>
                    <text x="350" y="115" class="rk-svg-text rk-svg-text-thermostat">LISTWA</text>
                    <text x="350" y="135" class="rk-svg-text rk-svg-text-thermostat">(Algorytm PWM)</text>

                    <rect x="500" y="90" width="100" height="60" class="rk-svg-component rk-svg-comp-actuator"/>
                    <text x="550" y="115" class="rk-svg-text rk-svg-text-thermostat">SIŁOWNIK NC</text>
                    <text x="550" y="135" class="rk-svg-text rk-svg-text-thermostat">(Zawór Pętli)</text>
                    
                    <line x1="550" y1="150" x2="550" y2="194" stroke="#334155" stroke-width="4"/>
                </svg>
            </div>
            
            <div class="rk-flow-status-text" id="statusMessage">Pętla grzewcza zamknięta (Brak przepływu)</div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btnSimulate = document.getElementById('btnSimulate');
    const simulator = document.getElementById('flowSimulator');
    const statusMsg = document.getElementById('statusMessage');

    btnSimulate.addEventListener('click', function() {
        // Blokada przycisku
        btnSimulate.disabled = true;
        btnSimulate.innerText = "Przetwarzanie pętli...";
        
        // Reset klas
        simulator.className = "rk-flow-interactive";
        statusMsg.classList.remove('visible');
        
        // Brak operatorów && - czysta kaskada timeoutów symulująca proces inżynierski
        
        // Krok 1: Słońce świeci (Zysk pasywny)
        setTimeout(function() {
            simulator.classList.add('state-step-1');
        }, 100);

        // Krok 2: Termostat rejestruje przekroczenie temperatury
        setTimeout(function() {
            simulator.classList.add('state-step-2');
        }, 1500);

        // Krok 3: Wysłanie sygnału do listwy centralnej
        setTimeout(function() {
            simulator.classList.add('state-step-3');
        }, 2500);

        // Krok 4: Listwa interpretuje algorytm PWM
        setTimeout(function() {
            simulator.classList.add('state-step-4');
        }, 3500);

        // Krok 5: Listwa odcina napięcie 230V do siłownika
        setTimeout(function() {
            simulator.classList.add('state-step-5');
        }, 4500);

        // Krok 6: Siłownik NC (Normalnie Zamknięty) powoli się zamyka (w rzeczywistości 3 minuty)
        setTimeout(function() {
            simulator.classList.add('state-step-6');
            statusMsg.classList.add('visible');
            btnSimulate.innerText = "Zresetuj symulację";
            btnSimulate.disabled = false;
            
            // Re-map the button to act as a reset next time
            btnSimulate.onclick = function() {
                simulator.className = "rk-flow-interactive";
                statusMsg.classList.remove('visible');
                btnSimulate.innerText = "Symuluj nasłonecznienie";
                // Restore original listener logic safely without &&
                setTimeout(function(){
                    location.reload(); // Prosty i bezpieczny reset stanu narzędzia edukacyjnego
                }, 300);
            };
        }, 6000);
    });
});
</script>



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-dark-card: #1e293b;
    --rk-calc-blue: #0284c7;
    --rk-calc-blue-light: #e0f2fe;
    --rk-calc-green: #10b981;
    --rk-calc-red: #ef4444;
    --rk-calc-gray: #475569;
    --rk-calc-gray-light: #f8fafc;
    --rk-calc-bg: #ffffff;
    --rk-calc-border: #e2e8f0;
}

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

.rk-calc-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, #0f172a 100%);
    color: #ffffff;
}

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

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

.rk-calc-header p:last-child {
    margin-bottom: 0;
}

.rk-calc-header a {
    color: #38bdf8;
    text-decoration: none;
    border-bottom: 1px dashed #38bdf8;
    font-weight: 600;
    transition: color 0.3s;
}

.rk-calc-header a:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

.rk-calc-body {
    padding: 40px 50px;
}

/* Sekcja Case Study */
.rk-calc-casestudy {
    background: var(--rk-calc-gray-light);
    border: 1px solid var(--rk-calc-border);
    border-radius: 16px;
    padding: 25px 30px;
    margin-bottom: 40px;
}

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

.rk-calc-casestudy p {
    font-size: 15px;
    color: var(--rk-calc-gray);
    line-height: 1.6;
    margin: 0 0 10px 0;
}

.rk-calc-math {
    background: var(--rk-calc-bg);
    padding: 15px 20px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-calc-blue);
    font-family: monospace;
    font-size: 14px;
    color: var(--rk-calc-dark);
    margin: 15px 0;
    font-weight: 600;
}

/* Kaskadowy układ - 1 kolumna */
.rk-roi-stack {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

/* Karty Suwaków */
.rk-input-card {
    background: var(--rk-calc-bg);
    border: 1px solid var(--rk-calc-border);
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 4px 10px -2px rgba(0,0,0,0.03);
    display: flex;
    flex-direction: column;
}

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

.rk-input-header label {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    margin: 0;
}

.rk-input-value {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-calc-blue);
    background: var(--rk-calc-blue-light);
    padding: 5px 15px;
    border-radius: 12px;
}

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

.rk-calc-slider {
    width: 100%;
    -webkit-appearance: none;
    height: 10px;
    border-radius: 5px;
    background: var(--rk-calc-border);
    outline: none;
}

.rk-calc-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-calc-blue);
    cursor: pointer;
    border: 5px solid #ffffff;
    box-shadow: 0 4px 12px rgba(2, 132, 199, 0.4);
    transition: transform 0.1s;
}

.rk-calc-slider::-webkit-slider-thumb:active {
    transform: scale(1.1);
}

/* Karta Wyników (Dashboard) */
.rk-roi-output-card {
    background: var(--rk-calc-dark-card);
    border-radius: 20px;
    padding: 50px 40px;
    color: #ffffff;
    position: relative;
    overflow: hidden;
    box-shadow: 0 20px 40px -10px rgba(15, 23, 42, 0.4);
    text-align: center;
    margin-top: 15px;
}

.rk-roi-output-card::before {
    content: '';
    position: absolute;
    top: -100px;
    left: 50%;
    transform: translateX(-50%);
    width: 300px;
    height: 300px;
    background: radial-gradient(circle, rgba(16,185,129,0.1) 0%, rgba(0,0,0,0) 70%);
    border-radius: 50%;
    pointer-events: none;
}

.rk-output-stats {
    display: flex;
    flex-direction: column;
    gap: 40px;
    position: relative;
    z-index: 2;
}

.rk-stat-group {
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-stat-divider {
    width: 50px;
    height: 2px;
    background: #334155;
    margin: 0 auto;
}

.rk-stat-label {
    font-size: 14px;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 2px;
    font-weight: 700;
    margin-bottom: 10px;
}

.rk-stat-value {
    font-size: 52px;
    font-weight: 900;
    line-height: 1;
    letter-spacing: -1px;
}

.rk-stat-sub {
    font-size: 20px;
    font-weight: 700;
    color: #cbd5e1;
    margin-left: 5px;
}

.rk-val-highlight-green { color: var(--rk-calc-green); text-shadow: 0 0 30px rgba(16, 185, 129, 0.3); }
.rk-val-highlight-white { color: #ffffff; }

@media (max-width: 768px) {
    .rk-calc-container { margin: 20px auto; border-radius: 16px; }
    .rk-calc-header, .rk-calc-body { padding: 30px 20px; }
    .rk-calc-header h2 { font-size: 24px; }
    
    .rk-input-card { padding: 25px 20px; }
    .rk-input-header { flex-direction: column; align-items: flex-start; gap: 15px; }
    .rk-input-value { align-self: flex-start; font-size: 24px; }
    
    .rk-roi-output-card { padding: 40px 20px; }
    .rk-stat-value { font-size: 42px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-roi",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Ile można zaoszczędzić na ogrzewaniu podłogowym montując sterowniki pokojowe?",
    "description": "Zgodnie z normą PN-EN 12831, obniżenie temperatury o 1°C daje 6% oszczędności. Zobacz studium przypadku i oblicz zwrot z inwestycji (ROI) dla swojego domu.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-roi",
    "name": "Analiza ROI automatyki strefowej wg PN-EN 12831",
    "description": "Zestawienie zużycia energii w kWh oraz kosztów w PLN dla instalacji bez automatyki strefowej i po jej wdrożeniu.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ile kosztuje ogrzewanie domu pompą ciepła",
      "jak obliczyć zwrot z inwestycji ogrzewanie",
      "norma pn en 12831 oszczędności",
      "zmniejszenie rachunków za prąd podłogówka",
      "cena prądu g12w ogrzewanie",
      "zużycie prądu pompa ciepła dom 150m2",
      "termostaty pokojowe a oszczędności",
      "koszt automatyki do podłogówki"
    ],
    "measurementTechnique": "Szacowanie zapotrzebowania na energię dla domów jednorodzinnych z uwzględnieniem redukcji temperatury nocnej i zysków pasywnych z nasłonecznienia.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Obniżenie temperatury wewnętrznej o 1°C w skali sezonu redukuje koszty o około 6%.",
        "Dla domu 150m2 inwestycja w sterowniki (1800-2500 PLN) zwraca się w czasie krótszym niż 12 miesięcy."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-roi",
    "name": "Kalkulator Oszczędności i ROI Automatyki Strefowej",
    "description": "Narzędzie finansowe obliczające roczne oszczędności eksploatacyjne w PLN oraz czas zwrotu z inwestycji (ROI) w komponenty automatyki sterującej ogrzewaniem.",
    "applicationCategory": "BusinessApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-container" id="rk-calc-app">
    <div class="rk-calc-header">
        <h2>Ile można zaoszczędzić na ogrzewaniu podłogowym montując sterowniki pokojowe?</h2>
        <p>Montaż sterowników pokojowych pozwala na realną redukcję rocznych <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/">kosztów ogrzewania</a> o 15% do 25% w odniesieniu do instalacji sterowanej wyłącznie krzywą grzewczą źródła ciepła. Według wytycznych <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/">normy PN-EN 12831</a>, obniżenie temperatury wewnętrznej o 1°C w skali całego sezonu grzewczego generuje średnio 6% oszczędności paliwa lub energii elektrycznej.</p>
    </div>

    <div class="rk-calc-body">
        
        <div class="rk-calc-casestudy">
            <h3>Wyliczenie matematyczne oszczędności energii (Case Study)</h3>
            <p>Dla domu jednorodzinnego o powierzchni 150 m² i projektowym zapotrzebowaniu na ciepło 9 kW (przy temp. zewnętrznej -20°C):</p>
            <ul style="color: var(--rk-calc-gray); font-size: 14px; line-height: 1.6; padding-left: 20px;">
                <li>Sezonowe zapotrzebowanie na energię <strong>bez automatyki strefowej</strong> (utrzymywanie stałej temperatury 22°C w nocy i podczas nieobecności, plus przegrzewanie od nasłonecznienia): E1 = 14 500 kWh/rok.</li>
                <li>Sezonowe zapotrzebowanie na energię <strong>po wdrożeniu automatyki</strong> (redukcja nocna do 20°C w sypialniach, obniżenie temperatury w salonie do 19°C podczas nieobecności, wykorzystanie zysków pasywnych): E2 = 11 165 kWh/rok.</li>
            </ul>
            <div class="rk-calc-math">
                ΔE = 14 500 &#8211; 11 165 = 3 335 kWh/rok oszczędności
            </div>
            <p>Przyjmując średni koszt energii dla pompy ciepła na poziomie 0,75 PLN/kWh, roczna oszczędność finansowa wynosi równe <strong>2 501,25 PLN/rok</strong>. Koszt zakupu inteligentnego systemu automatyki (listwa + 6 termostatów + siłowniki) dla takiego metrażu zamyka się w kwocie 1800 &#8211; 2500 PLN, co oznacza <a href="https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/">zwrot z inwestycji (ROI)</a> w czasie poniżej 12 miesięcy.</p>
        </div>

        <!-- Układ Kaskadowy W Pełni Pionowy -->
        <div class="rk-roi-stack">
            
            <div class="rk-input-card">
                <div class="rk-input-header">
                    <label>Powierzchnia Twojego domu</label>
                    <div class="rk-input-value"><span id="valAreaOut">150</span> m²</div>
                </div>
                <div class="rk-slider-wrapper">
                    <input type="range" class="rk-calc-slider" id="inpArea" min="80" max="300" step="5" value="150">
                </div>
            </div>
            
            <div class="rk-input-card">
                <div class="rk-input-header">
                    <label>Średnia cena 1 kWh</label>
                    <div class="rk-input-value"><span id="valPriceOut">0.75</span> PLN</div>
                </div>
                <div class="rk-slider-wrapper">
                    <input type="range" class="rk-calc-slider" id="inpPrice" min="0.40" max="1.50" step="0.05" value="0.75">
                </div>
            </div>

            <div class="rk-roi-output-card">
                <div class="rk-output-stats">
                    
                    <div class="rk-stat-group">
                        <div class="rk-stat-label">Roczne Oszczędności Eksploatacyjne</div>
                        <div class="rk-stat-value rk-val-highlight-green"><span id="resSavings">2501</span><span class="rk-stat-sub">PLN</span></div>
                    </div>
                    
                    <div class="rk-stat-divider"></div>
                    
                    <div class="rk-stat-group">
                        <div class="rk-stat-label">Szacowany koszt systemu automatyki</div>
                        <div class="rk-stat-value rk-val-highlight-white"><span id="resCost">2500</span><span class="rk-stat-sub">PLN</span></div>
                    </div>

                    <div class="rk-stat-divider"></div>

                    <div class="rk-stat-group">
                        <div class="rk-stat-label">Pełny zwrot z inwestycji (ROI) za:</div>
                        <div class="rk-stat-value"><span id="resMonths" class="rk-val-highlight-green">12</span><span class="rk-stat-sub">miesięcy</span></div>
                    </div>

                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const sldArea = document.getElementById('inpArea');
    const sldPrice = document.getElementById('inpPrice');
    
    const valAreaOut = document.getElementById('valAreaOut');
    const valPriceOut = document.getElementById('valPriceOut');
    
    const resSavings = document.getElementById('resSavings');
    const resCost = document.getElementById('resCost');
    const resMonths = document.getElementById('resMonths');

    function calculateData() {
        let area = parseFloat(sldArea.value);
        let price = parseFloat(sldPrice.value);
        
        valAreaOut.innerText = area;
        valPriceOut.innerText = price.toFixed(2);

        // Algorytm Oszczędności (Case Study)
        // Średnio 96.66 kWh/m2 bez automatyki
        let energyBase = area * 96.66; 
        
        // Z automatyką oszczędności na poziomie 23% względem bazy
        let energyAuto = energyBase * 0.77; 

        // Różnica w kWh i PLN
        let savingsKwh = energyBase - energyAuto;
        let savingsPln = savingsKwh * price;

        // Koszty systemu: 1000 PLN + 10 PLN / m2
        let sysCost = 1000 + (area * 10);
        
        // ROI
        let roiMonths = (sysCost / savingsPln) * 12;

        resSavings.innerText = Math.round(savingsPln).toLocaleString('pl-PL');
        resCost.innerText = Math.round(sysCost).toLocaleString('pl-PL');
        resMonths.innerText = Math.round(roiMonths);

        // Bezpieczny warunek zmiany koloru (bez &&)
        if (roiMonths < 18) {
            resMonths.className = "rk-val-highlight-green";
            resMonths.style.color = "";
        } else {
            if (roiMonths < 36) {
                resMonths.className = "";
                resMonths.style.color = "#eab308"; // Żółty
            } else {
                resMonths.className = "";
                resMonths.style.color = "#ef4444"; // Czerwony
            }
        }
    }

    sldArea.addEventListener('input', calculateData);
    sldPrice.addEventListener('input', calculateData);

    // Initial calculation
    calculateData();
});
</script>



<style>
:root {
    --rk-curve-dark: #0f172a;
    --rk-curve-blue: #0284c7;
    --rk-curve-blue-light: #e0f2fe;
    --rk-curve-red: #ef4444;
    --rk-curve-green: #10b981;
    --rk-curve-gray: #475569;
    --rk-curve-gray-light: #f8fafc;
    --rk-curve-bg: #ffffff;
    --rk-curve-border: #e2e8f0;
}

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

.rk-curve-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-curve-dark) 0%, #1e293b 100%);
    color: #ffffff;
}

.rk-curve-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

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

.rk-curve-header p:last-child {
    margin-bottom: 0;
}

.rk-curve-header a {
    color: #38bdf8;
    text-decoration: none;
    border-bottom: 1px dashed #38bdf8;
    font-weight: 600;
    transition: color 0.3s;
}

.rk-curve-header a:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

.rk-curve-body {
    padding: 40px 50px;
}

/* Interaktywny Symulator */
.rk-curve-simulator {
    background: var(--rk-curve-gray-light);
    border: 1px solid var(--rk-curve-border);
    border-radius: 20px;
    padding: 35px;
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.rk-curve-sim-title {
    text-align: center;
    margin: 0;
}

.rk-curve-sim-title h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-curve-dark);
    margin: 0 0 5px 0;
}

.rk-curve-sim-title p {
    font-size: 14px;
    color: var(--rk-curve-gray);
    margin: 0;
}

.rk-curve-layout {
    display: flex;
    gap: 40px;
    align-items: stretch;
}

/* Panel Kontrolny */
.rk-curve-controls {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 25px;
}

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

.rk-curve-slider-box label {
    display: block;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-curve-dark);
    margin-bottom: 10px;
}

.rk-curve-slider-desc {
    font-size: 12px;
    color: var(--rk-curve-gray);
    margin-bottom: 20px;
    display: block;
}

.rk-curve-slider {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    border-radius: 4px;
    background: linear-gradient(to right, var(--rk-curve-blue), #cbd5e1, var(--rk-curve-red));
    outline: none;
    margin-bottom: 25px;
    direction: rtl; /* Od +20 do -20, wizualnie chłodniej z prawej lub na odwrót - dostosujemy logicznie */
}

/* Dostosowanie suwaka zima-lato */
.rk-curve-slider.temp-slider {
    background: linear-gradient(to right, var(--rk-curve-blue), #cbd5e1, var(--rk-curve-red));
    direction: ltr;
}

.rk-curve-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--rk-curve-dark);
    cursor: pointer;
    border: 4px solid #ffffff;
    box-shadow: 0 4px 10px rgba(15, 23, 42, 0.3);
}

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

.rk-curve-data-card {
    background: var(--rk-curve-gray-light);
    border: 1px solid var(--rk-curve-border);
    border-radius: 12px;
    padding: 15px;
    text-align: center;
}

.rk-curve-data-card span {
    display: block;
    font-size: 11px;
    text-transform: uppercase;
    font-weight: 700;
    color: var(--rk-curve-gray);
    margin-bottom: 5px;
    letter-spacing: 0.5px;
}

.rk-curve-data-card strong {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-curve-dark);
}

.rk-data-highlight strong {
    color: var(--rk-curve-green);
}

/* Panel Wizualizacji SVG */
.rk-curve-visual {
    flex: 1.2;
    background: var(--rk-curve-dark);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
    box-shadow: inset 0 4px 20px rgba(0,0,0,0.5);
}

.rk-curve-svg-wrapper {
    width: 100%;
    max-width: 320px;
}

.rk-svg-axis { stroke: #475569; stroke-width: 2; }
.rk-svg-grid { stroke: #1e293b; stroke-width: 1; }
.rk-svg-text { fill: #94a3b8; font-size: 10px; font-weight: 600; font-family: monospace; }
.rk-svg-line { fill: none; stroke: var(--rk-curve-blue); stroke-width: 4; stroke-linecap: round; }
.rk-svg-dot { fill: var(--rk-curve-red); stroke: #ffffff; stroke-width: 2; transition: all 0.2s ease-out; }
.rk-svg-guide { stroke: var(--rk-curve-red); stroke-width: 1; stroke-dasharray: 4 4; transition: all 0.2s ease-out; }

/* Mobile Responsiveness */
@media (max-width: 768px) {
    .rk-curve-container { margin: 20px auto; border-radius: 16px; }
    .rk-curve-header, .rk-curve-body { padding: 25px 20px; }
    .rk-curve-header h2 { font-size: 22px; }
    .rk-curve-simulator { padding: 20px; }
    .rk-curve-layout { flex-direction: column; gap: 20px; }
    .rk-curve-controls, .rk-curve-visual { width: 100%; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-pogodowka",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Jak sterownik pogodowy z krzywą grzewczą optymalizuje temperaturę zasilania podłogówki?",
    "description": "Zrozum działanie krzywej grzewczej (Tz względem Te) wg normy PN-EN 1264. Sprawdź, jak obniżenie temperatury zasilania poprawia współczynnik COP pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-pogodowka",
    "name": "Wpływ krzywej grzewczej na efektywność instalacji płaszczyznowej (COP)",
    "description": "Dane tabelaryczne i algorytmiczne wiążące temperaturę zewnętrzną (NTC) z temperaturą zasilania obiegu grzewczego i sprawnością źródła ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "krzywa grzewcza pompy ciepła podłogówka",
      "sterownik regulator pogodowy",
      "temperatura zasilania ogrzewania podłogowego",
      "współczynnik cop a temperatura zasilania",
      "czujnik temperatury zewnętrznej"
    ],
    "measurementTechnique": "Modelowanie spadku temperatury (Delta T) na podstawie algorytmu kompensacji pogodowej (krzywa n=1.1) z inkrementalnym przyrostem sprawności COP.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Kompensacja pogodowa dostosowuje temperaturę zasilania (Tz) od 25°C do 38°C proporcjonalnie do temperatury zewnętrznej (Te).",
        "Obniżenie temperatury zasilania pompy ciepła o każdy 1°C skutkuje wzrostem współczynnika COP o około 2.5% - 3.0%."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-pogodowka",
    "name": "Symulator Krzywej Grzewczej (Kompensacja Pogodowa)",
    "description": "Interaktywny interfejs inżynierski obrazujący ruch punktu pracy instalacji na wykresie krzywej grzewczej w zależności od warunków atmosferycznych.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-curve-container" id="rk-curve-app">
    <div class="rk-curve-header">
        <h2>Jak sterownik pogodowy z krzywą grzewczą optymalizuje temperaturę zasilania podłogówki?</h2>
        <p><a href="https://projekt-ogrzewania.pl/sterownik-regulator-pogodowy/">Sterownik pogodowy</a> automatycznie obniża lub podwyższa temperaturę wody zasilającej instalację podłogową w zakresie od 25°C do 38°C na podstawie odczytu z zewnętrznego czujnika temperatury (NTC), zgodnie z bezwzględnymi wymaganiami normy <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">PN-EN 1264</a>.</p>
        <p>Działanie to opiera się na matematycznie zdefiniowanej <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywej grzewczej</a>, która dopasowuje temperaturę zasilania (Tz) do aktualnej temperatury zewnętrznej (Te). Wzrost temperatury zewnętrznej o każde 5°C powoduje natychmiastowe obniżenie temperatury na wyjściu ze źródła ciepła. Dla pompy ciepła obniżenie temperatury zasilania o 1°C podnosi jej współczynnik efektywności grzewczej COP o około 2,5% do 3%. Sterowanie pogodowe eliminuje opóźnienie wynikające z bezwładności budynku – instalacja reaguje na chłód, zanim przeniknie on przez ściany.</p>
    </div>

    <div class="rk-curve-body">
        <div class="rk-curve-simulator">
            <div class="rk-curve-sim-title">
                <h3>Symulator Kompensacji Pogodowej</h3>
                <p>Przesuń suwak pogody i zobacz, jak algorytm steruje parametrami.</p>
            </div>

            <div class="rk-curve-layout">
                <div class="rk-curve-controls">
                    <div class="rk-curve-slider-box">
                        <label>Temperatura Zewnętrzna (Czujnik Pogodowy)</label>
                        <span class="rk-curve-slider-desc">Symulacja zmiany frontu atmosferycznego</span>
                        <input type="range" class="rk-curve-slider temp-slider" id="envSlider" min="-20" max="20" step="1" value="0">
                        
                        <div class="rk-curve-data-grid">
                            <div class="rk-curve-data-card">
                                <span>Temp. Zewnętrzna (Te)</span>
                                <strong id="valTe">0°C</strong>
                            </div>
                            <div class="rk-curve-data-card">
                                <span>Temp. Zasilania (Tz)</span>
                                <strong id="valTz" style="color: var(--rk-curve-blue);">31.5°C</strong>
                            </div>
                            <div class="rk-curve-data-card rk-data-highlight" style="grid-column: span 2;">
                                <span>Wzrost Sprawności COP (Względem Tz=38°C)</span>
                                <strong id="valCop">+18.0%</strong>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="rk-curve-visual">
                    <div class="rk-curve-svg-wrapper">
                        <svg viewBox="0 0 300 200" xmlns="http://www.w3.org/2000/svg">
                            <line x1="40" y1="20" x2="280" y2="20" class="rk-svg-grid"/> <line x1="40" y1="70" x2="280" y2="70" class="rk-svg-grid"/> <line x1="40" y1="120" x2="280" y2="120" class="rk-svg-grid"/> <line x1="40" y1="10" x2="40" y2="160" class="rk-svg-axis"/>
                            <text x="30" y="25" class="rk-svg-text" text-anchor="end">40°</text>
                            <text x="30" y="75" class="rk-svg-text" text-anchor="end">30°</text>
                            <text x="30" y="125" class="rk-svg-text" text-anchor="end">20°</text>
                            <text x="40" y="10" class="rk-svg-text" fill="#ffffff" dy="-5">Tz</text>
                            
                            <line x1="40" y1="160" x2="290" y2="160" class="rk-svg-axis"/>
                            <text x="40" y="175" class="rk-svg-text" text-anchor="middle">+20°</text>
                            <text x="100" y="175" class="rk-svg-text" text-anchor="middle">+10°</text>
                            <text x="160" y="175" class="rk-svg-text" text-anchor="middle">0°</text>
                            <text x="220" y="175" class="rk-svg-text" text-anchor="middle">-10°</text>
                            <text x="280" y="175" class="rk-svg-text" text-anchor="middle">-20°</text>
                            <text x="290" y="155" class="rk-svg-text" fill="#ffffff" text-anchor="start">Te</text>
                            
                            <path class="rk-svg-line" d="M 40 95 Q 160 80 280 30" />
                            
                            <line class="rk-svg-guide" id="guideX" x1="160" y1="160" x2="160" y2="65" />
                            <line class="rk-svg-guide" id="guideY" x1="40" y1="65" x2="160" y2="65" />
                            <circle class="rk-svg-dot" id="workPoint" cx="160" cy="65" r="6" />
                        </svg>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const slider = document.getElementById('envSlider');
    const displayTe = document.getElementById('valTe');
    const displayTz = document.getElementById('valTz');
    const displayCop = document.getElementById('valCop');
    
    // Elementy SVG
    const workPoint = document.getElementById('workPoint');
    const guideX = document.getElementById('guideX');
    const guideY = document.getElementById('guideY');

    // Konfiguracja matematyczna wykresu SVG
    // X axis: 40px (+20st) to 280px (-20st) -> span 240px. 
    // Y axis: 120px (20st) to 20px (40st) -> span 100px. 1st = 5px.
    
    function updateCurve() {
        let Te = parseInt(slider.value); // od -20 do +20
        
        // Logika obliczania Tz (Model krzywej aproksymujący kwadratowo/liniowo)
        // Jeśli Te = +20 -> Tz = 25
        // Jeśli Te = -20 -> Tz = 38
        
        // Parametryzacja z użyciem bezpiecznych warunków (bez operatora "&&")
        // Skala 0 do 1 (gdzie 0 to -20st, a 1 to +20st)
        let ratio = (Te + 20) / 40; 
        
        // Tworzymy lekkie wygięcie krzywej bazując na ratio
        // Tz = 38 (max) minus spadek
        let Tz = 38 - (ratio * 13); // liniowo
        
        // Dodajmy lekką korektę nieliniową
        if (ratio > 0) {
            if (ratio < 1) {
               // Niewielkie ugięcie w dół
               Tz = Tz - (Math.sin(ratio * Math.PI) * 1.5);
            }
        }

        // Zabezpieczenie limitów
        if (Tz < 25) { Tz = 25; }
        if (Tz > 38) { Tz = 38; }

        // Wpływ na COP: zysk 2.75% za każdy stopień poniżej 38°C
        let copGain = (38 - Tz) * 2.75;

        // Aktualizacja tekstów
        if (Te > 0) {
            displayTe.innerText = "+" + Te + "°C";
        } else {
            displayTe.innerText = Te + "°C";
        }
        
        displayTz.innerText = Tz.toFixed(1) + "°C";
        displayCop.innerText = "+" + copGain.toFixed(1) + "%";

        // Obliczanie współrzędnych SVG
        // X: -20 to x=280, +20 to x=40
        let svgX = 280 - (ratio * 240);
        
        // Y: 20st = 120px, 40st = 20px
        // Różnica od 40st w dół: (40 - Tz) * 5
        let svgY = 20 + ((40 - Tz) * 5);

        // Aktualizacja DOM (SVG)
        workPoint.setAttribute('cx', svgX);
        workPoint.setAttribute('cy', svgY);
        
        guideX.setAttribute('x1', svgX);
        guideX.setAttribute('x2', svgX);
        guideX.setAttribute('y1', '160');
        guideX.setAttribute('y2', svgY);
        
        guideY.setAttribute('x1', '40');
        guideY.setAttribute('x2', svgX);
        guideY.setAttribute('y1', svgY);
        guideY.setAttribute('y2', svgY);
    }

    // Nasłuchiwacz suwaka
    slider.addEventListener('input', updateCurve);
    
    // Uruchomienie na start
    updateCurve();
});
</script>



<style>
:root {
    --rk-tech-dark: #0f172a;
    --rk-tech-blue: #0284c7;
    --rk-tech-blue-light: #e0f2fe;
    --rk-tech-green: #10b981;
    --rk-tech-purple: #8b5cf6;
    --rk-tech-purple-light: #ede9fe;
    --rk-tech-gray: #475569;
    --rk-tech-bg: #ffffff;
    --rk-tech-border: #e2e8f0;
}

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

.rk-tech-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-tech-dark) 0%, #1e293b 100%);
    color: #ffffff;
}

.rk-tech-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

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

.rk-tech-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

/* Master Toggle */
.rk-tech-toggle-wrapper {
    display: flex;
    background: var(--rk-tech-border);
    border-radius: 16px;
    padding: 6px;
    margin-bottom: 35px;
    position: relative;
}

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

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

.rk-tech-toggle-bg {
    position: absolute;
    top: 6px;
    bottom: 6px;
    width: calc(50% - 6px);
    background: var(--rk-tech-blue);
    border-radius: 12px;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.4s;
    z-index: 1;
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}

/* Visualizer SVG */
.rk-tech-visualizer {
    background: var(--rk-tech-dark);
    border-radius: 20px;
    padding: 30px;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-bottom: 35px;
    height: 160px;
    position: relative;
    overflow: hidden;
}

.rk-tech-svg-wrap {
    width: 100%;
    max-width: 400px;
}

/* SVG Animations */
.rk-anim-cable { stroke-dasharray: 1000; stroke-dashoffset: 1000; transition: stroke-dashoffset 1s ease; }
.rk-anim-wave { opacity: 0; transform: scale(0.5); transform-origin: center; transition: all 0.5s ease; }

.state-wired .rk-anim-cable { stroke-dashoffset: 0; }
.state-wireless .rk-anim-wave { opacity: 1; transform: scale(1); animation: pulseRadio 2s infinite; }

@keyframes pulseRadio {
    0% { transform: scale(0.8); opacity: 1; }
    100% { transform: scale(1.5); opacity: 0; }
}

/* Cards Grid */
.rk-tech-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 20px;
}

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

.rk-param-card:hover {
    transform: translateY(-3px);
    border-color: var(--rk-tech-blue);
}

.rk-param-icon {
    width: 40px;
    height: 40px;
    border-radius: 10px;
    background: var(--rk-tech-blue-light);
    color: var(--rk-tech-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 15px;
    transition: background-color 0.4s, color 0.4s;
}

.rk-param-card h3 {
    font-size: 14px;
    color: var(--rk-tech-gray);
    text-transform: uppercase;
    letter-spacing: 1px;
    font-weight: 700;
    margin: 0 0 10px 0;
}

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

.rk-param-value strong {
    font-size: 20px;
    font-weight: 900;
    display: block;
    margin-bottom: 5px;
    transition: color 0.4s;
}

.rk-param-value a {
    color: var(--rk-tech-blue);
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-tech-blue);
}

/* Stan bezprzewodowy kolorystyka (Fiolet) */
.state-wireless-theme .rk-param-icon { background: var(--rk-tech-purple-light); color: var(--rk-tech-purple); }
.state-wireless-theme .rk-param-value strong { color: var(--rk-tech-purple); }

/* Hide/Show logic within cards */
.rk-val-content { display: none; animation: fadeInText 0.4s forwards; }
.rk-val-content.active { display: block; }

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

/* Mobile Responsiveness */
@media (max-width: 768px) {
    .rk-tech-container { margin: 20px auto; }
    .rk-tech-header, .rk-tech-interactive { padding: 25px 20px; }
    .rk-tech-header h2 { font-size: 22px; }
    
    .rk-tech-toggle-wrapper { flex-direction: column; background: transparent; padding: 0; gap: 10px;}
    .rk-tech-toggle-bg { display: none; }
    
    .rk-tech-toggle-btn {
        background: var(--rk-tech-border);
        color: var(--rk-tech-gray);
        border: 2px solid transparent;
    }
    
    .rk-tech-toggle-btn.active[data-tech="wired"] {
        background: var(--rk-tech-blue);
        color: #ffffff;
        border-color: var(--rk-tech-blue);
    }
    
    .rk-tech-toggle-btn.active[data-tech="wireless"] {
        background: var(--rk-tech-purple);
        color: #ffffff;
        border-color: var(--rk-tech-purple);
    }
    
    .rk-tech-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-technologie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Czym różni się sterowanie przewodowe od bezprzewodowego i co wybrać?",
    "description": "Szczegółowe porównanie technologii sterowania ogrzewaniem podłogowym. Niezawodność sygnału, zasilanie i koszty systemów przewodowych (230V) vs bezprzewodowych (ZigBee).",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-technologie",
    "name": "Zestawienie parametrów techniczno-użytkowych systemów automatyki HVAC",
    "description": "Dane porównawcze dla systemów przewodowych (topologia gwiazdy) oraz bezprzewodowych (topologia Mesh ZigBee) obejmujące koszty, niezawodność i metody zasilania.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "sterowanie przewodowe czy bezprzewodowe podłogówka",
      "termostaty bezprzewodowe zigbee",
      "kable do sterowania ogrzewaniem",
      "topologia mesh ogrzewanie",
      "koszt automatyki podłogówki"
    ],
    "measurementTechnique": "Analiza kosztorysowa punktów pomiarowych oraz ewaluacja tłumienności sygnału radiowego względem stabilności połączeń kablowych YDY/FTP.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "System przewodowy oferuje 100% odporności na zakłócenia przy średnim koszcie punktu 150-250 PLN.",
        "System bezprzewodowy pozwala na elastyczny montaż w wykończonych domach przy koszcie 280-450 PLN za punkt pomiarowy."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-technologie",
    "name": "Symulator Architektury Sterowania Podłogówką",
    "description": "Interaktywne narzędzie pozwalające na błyskawiczne przekrojowe porównanie technologii przewodowej i radiowej na poziomie komponentów i topologii sieci.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-tech-container" id="rk-tech-app">
    <div class="rk-tech-header">
        <h2>Czym różni się sterowanie przewodowe od bezprzewodowego i co wybrać?</h2>
        <p>Wybór między systemem z okablowaniem a radiowym determinuje stabilność transmisji sygnału oraz łączny koszt inwestycji. Przełącz technologie, aby porównać kluczowe parametry techniczno-użytkowe obu rozwiązań.</p>
    </div>

    <div class="rk-tech-interactive">
        
        <div class="rk-tech-toggle-wrapper">
            <div class="rk-tech-toggle-bg" id="rkTechBg"></div>
            <button class="rk-tech-toggle-btn active" data-tech="wired" style="color: #ffffff;">
                <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="M5 12h14"></path><path d="M12 5v14"></path></svg>
                System Przewodowy (Bus/230V)
            </button>
            <button class="rk-tech-toggle-btn" data-tech="wireless">
                <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="M5 12.55a11 11 0 0 1 14.08 0"></path><path d="M1.42 9a16 16 0 0 1 21.16 0"></path><path d="M8.53 16.11a6 6 0 0 1 6.95 0"></path><line x1="12" y1="20" x2="12.01" y2="20"></line></svg>
                System Bezprzewodowy (ZigBee)
            </button>
        </div>

        <div class="rk-tech-visualizer state-wired" id="rkTechVisual">
            <div class="rk-tech-svg-wrap">
                <svg viewBox="0 0 400 120" xmlns="http://www.w3.org/2000/svg">
                    <rect x="20" y="40" width="40" height="40" rx="4" fill="#334155" stroke="#cbd5e1" stroke-width="2"/>
                    <text x="40" y="65" fill="#ffffff" font-size="12" text-anchor="middle" font-weight="bold">22°C</text>
                    
                    <rect x="300" y="20" width="80" height="80" rx="4" fill="#334155" stroke="#cbd5e1" stroke-width="2"/>
                    <rect x="310" y="30" width="60" height="60" fill="#1e293b"/>
                    
                    <path class="rk-anim-cable" id="wirePath" d="M 60 60 L 150 60 L 150 90 L 300 90" fill="none" stroke="#38bdf8" stroke-width="4" stroke-linejoin="round"/>
                    
                    <g class="rk-anim-wave" id="radioWaves">
                        <circle cx="100" cy="60" r="15" fill="none" stroke="#a78bfa" stroke-width="3"/>
                        <circle cx="100" cy="60" r="30" fill="none" stroke="#a78bfa" stroke-width="2"/>
                        <circle cx="200" cy="60" r="15" fill="none" stroke="#a78bfa" stroke-width="3"/>
                        <circle cx="200" cy="60" r="30" fill="none" stroke="#a78bfa" stroke-width="2"/>
                    </g>
                </svg>
            </div>
        </div>

        <div class="rk-tech-grid" id="rkTechGrid">
            
            <div class="rk-param-card">
                <div class="rk-param-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 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
                </div>
                <h3>Niezawodność sygnału</h3>
                <div class="rk-param-value">
                    <div class="rk-val-content active" data-ref="wired">
                        <strong style="color: var(--rk-tech-blue);">100% Odporności</strong>
                        Całkowita odporność na zakłócenia elektromagnetyczne i grube bariery budowlane.
                    </div>
                    <div class="rk-val-content" data-ref="wireless">
                        <strong>92-98% Stabilności</strong>
                        Podatność na tłumienie przez stropy żelbetowe; często wymaga stosowania wzmacniaczy (repeaterów).
                    </div>
                </div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-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="M13 2L3 14h9l-1 8 10-12h-9l1-8z"></path></svg>
                </div>
                <h3>Zasilanie elementów</h3>
                <div class="rk-param-value">
                    <div class="rk-val-content active" data-ref="wired">
                        <strong style="color: var(--rk-tech-blue);">Stałe 230V / 24V</strong>
                        Bezpośrednie zasilanie z magistrali; całkowity brak konieczności pamiętania o wymianie ogniw.
                    </div>
                    <div class="rk-val-content" data-ref="wireless">
                        <strong>Bateryjne (2x AAA)</strong>
                        Żywotność ogniwa wynosi od 12 do 24 miesięcy w zależności od użytego protokołu komunikacyjnego.
                    </div>
                </div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
                </div>
                <h3>Architektura & Montaż</h3>
                <div class="rk-param-value">
                    <div class="rk-val-content active" data-ref="wired">
                        <strong style="color: var(--rk-tech-blue);">Topologia Gwiazdy (SSZ)</strong>
                        Kable YDY/FTP zbiegające się w <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">szafce rozdzielaczowej</a>. Montaż możliwy tylko przed tynkami.
                    </div>
                    <div class="rk-val-content" data-ref="wireless">
                        <strong>Topologia Siatki (Mesh)</strong>
                        Każde urządzenie (zasilane z sieci) rozszerza zasięg. Dowolny <a href="https://projekt-ogrzewania.pl/ile-trwa-montaz-ogrzewania-podlogowego/">moment montażu</a> – idealne do modernizacji.
                    </div>
                </div>
            </div>

            <div class="rk-param-card">
                <div class="rk-param-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="2" y="6" width="20" height="12" rx="2"></rect><circle cx="12" cy="12" r="2"></circle><path d="M6 12h.01M18 12h.01"></path></svg>
                </div>
                <h3>Średni koszt inwestycji</h3>
                <div class="rk-param-value">
                    <div class="rk-val-content active" data-ref="wired">
                        <strong style="color: var(--rk-tech-blue);">150 - 250 PLN</strong>
                        Szacunkowy koszt na jeden punkt pomiarowy (termostat). Należy doliczyć koszty okablowania ścian.
                    </div>
                    <div class="rk-val-content" data-ref="wireless">
                        <strong>280 - 450 PLN</strong>
                        Szacunkowy koszt na jeden punkt (termostat + moduł radiowy). Brak kosztów ukrytych okablowania.
                    </div>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-tech-toggle-btn');
    const toggleBg = document.getElementById('rkTechBg');
    const visualizer = document.getElementById('rkTechVisual');
    const grid = document.getElementById('rkTechGrid');
    const wirePath = document.getElementById('wirePath');
    const radioWaves = document.getElementById('radioWaves');
    
    // Bezpieczny selektor elementów do przełączania (bez &&)
    const valContents = document.querySelectorAll('.rk-val-content');

    btns.forEach((btn, index) => {
        btn.addEventListener('click', function() {
            
            // Reset stylów przycisków
            btns.forEach(b => {
                b.classList.remove('active');
                if(window.innerWidth > 768) {
                    b.style.color = 'var(--rk-tech-gray)';
                }
            });
            
            // Aktywacja klikniętego
            this.classList.add('active');
            
            const tech = this.getAttribute('data-tech');
            
            // Logika wizualna (Slider w tle)
            if(window.innerWidth > 768) {
                this.style.color = '#ffffff';
                if(index === 0) {
                    // Wired Mode
                    toggleBg.style.transform = 'translateX(0)';
                    toggleBg.style.backgroundColor = 'var(--rk-tech-blue)';
                    
                    grid.classList.remove('state-wireless-theme');
                    visualizer.classList.add('state-wired');
                    visualizer.classList.remove('state-wireless');
                    
                    wirePath.style.display = 'block';
                    radioWaves.style.display = 'none';
                } else {
                    // Wireless Mode
                    toggleBg.style.transform = 'translateX(100%)';
                    toggleBg.style.backgroundColor = 'var(--rk-tech-purple)';
                    
                    grid.classList.add('state-wireless-theme');
                    visualizer.classList.add('state-wireless');
                    visualizer.classList.remove('state-wired');
                    
                    wirePath.style.display = 'none';
                    radioWaves.style.display = 'block';
                }
            } else {
                // Logika dla urządzeń mobilnych
                if(tech === 'wired') {
                    grid.classList.remove('state-wireless-theme');
                    visualizer.classList.add('state-wired');
                    visualizer.classList.remove('state-wireless');
                    wirePath.style.display = 'block';
                    radioWaves.style.display = 'none';
                } else {
                    grid.classList.add('state-wireless-theme');
                    visualizer.classList.add('state-wireless');
                    visualizer.classList.remove('state-wired');
                    wirePath.style.display = 'none';
                    radioWaves.style.display = 'block';
                }
            }

            // Przełączanie treści w kartach (tylko if/else)
            valContents.forEach(content => {
                const ref = content.getAttribute('data-ref');
                if (ref === tech) {
                    content.classList.add('active');
                } else {
                    content.classList.remove('active');
                }
            });
        });
    });

    // Zabezpieczenie dla zmiany orientacji urządzenia
    window.addEventListener('resize', function() {
        if(window.innerWidth <= 768) {
            btns.forEach(b => b.style.color = ''); 
        } else {
            const activeBtn = document.querySelector('.rk-tech-toggle-btn.active');
            if (activeBtn) {
                activeBtn.style.color = '#ffffff';
            }
        }
    });
    
    // Inicjalny stan ukrycia fal radiowych
    radioWaves.style.display = 'none';
});
</script>



<style>
:root {
    --rk-ntc-dark: #0f172a;
    --rk-ntc-blue: #0284c7;
    --rk-ntc-red: #ef4444;
    --rk-ntc-red-light: #fef2f2;
    --rk-ntc-green: #10b981;
    --rk-ntc-green-light: #dcfce7;
    --rk-ntc-gray: #475569;
    --rk-ntc-gray-light: #f8fafc;
    --rk-ntc-bg: #ffffff;
    --rk-ntc-border: #e2e8f0;
}

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

.rk-ntc-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, var(--rk-ntc-dark) 0%, #1e293b 100%);
    color: #ffffff;
}

.rk-ntc-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-ntc-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0 0 15px 0;
    line-height: 1.7;
}
.rk-ntc-header p:last-child {
    margin: 0;
}

.rk-ntc-header a {
    color: #7dd3fc;
    text-decoration: none;
    border-bottom: 1px dashed #7dd3fc;
    font-weight: 600;
    transition: color 0.2s;
}

.rk-ntc-header a:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

.rk-ntc-body {
    padding: 40px 50px;
}

/* Simulator Wrapper */
.rk-ntc-simulator {
    background: var(--rk-ntc-gray-light);
    border: 1px solid var(--rk-ntc-border);
    border-radius: 20px;
    padding: 35px;
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.rk-ntc-sim-title {
    text-align: center;
    margin: 0;
}

.rk-ntc-sim-title h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-ntc-dark);
    margin: 0 0 5px 0;
}

.rk-ntc-sim-title p {
    font-size: 14px;
    color: var(--rk-ntc-gray);
    margin: 0;
}

/* Layout */
.rk-ntc-layout {
    display: flex;
    gap: 40px;
    align-items: stretch;
}

/* Controls */
.rk-ntc-controls {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-ntc-toggle-group {
    display: flex;
    background: var(--rk-ntc-border);
    border-radius: 12px;
    padding: 5px;
}

.rk-ntc-toggle-btn {
    flex: 1;
    padding: 14px;
    border: none;
    background: transparent;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-ntc-gray);
    cursor: pointer;
    transition: all 0.3s;
}

.rk-ntc-toggle-btn.active[data-mode="on"] {
    background: var(--rk-ntc-green);
    color: #ffffff;
    box-shadow: 0 4px 6px rgba(16, 185, 129, 0.2);
}

.rk-ntc-toggle-btn.active[data-mode="off"] {
    background: var(--rk-ntc-red);
    color: #ffffff;
    box-shadow: 0 4px 6px rgba(239, 68, 68, 0.2);
}

.rk-ntc-slider-group {
    background: var(--rk-ntc-bg);
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-ntc-border);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-ntc-slider-group label {
    display: block;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-ntc-dark);
    margin-bottom: 15px;
}

.rk-ntc-slider {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    border-radius: 4px;
    background: var(--rk-ntc-border);
    outline: none;
    margin-bottom: 20px;
}

.rk-ntc-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--rk-ntc-blue);
    cursor: pointer;
    border: 4px solid #ffffff;
    box-shadow: 0 4px 10px rgba(2, 132, 199, 0.3);
}

.rk-ntc-readings {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 15px;
    border-top: 1px dashed var(--rk-ntc-border);
}

.rk-ntc-reading-box {
    text-align: center;
}

.rk-ntc-reading-box span {
    display: block;
    font-size: 12px;
    color: var(--rk-ntc-gray);
    text-transform: uppercase;
    font-weight: 700;
    margin-bottom: 5px;
}

.rk-ntc-reading-box strong {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-ntc-dark);
}

/* Visualization */
.rk-ntc-visual {
    flex: 1;
    background: var(--rk-ntc-bg);
    border-radius: 16px;
    border: 1px solid var(--rk-ntc-border);
    padding: 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
}

.rk-ntc-status-badge {
    position: absolute;
    top: 20px;
    left: 50%;
    transform: translateX(-50%);
    padding: 8px 16px;
    border-radius: 20px;
    font-size: 13px;
    font-weight: 800;
    transition: all 0.3s;
    z-index: 10;
}

.rk-badge-safe { background: var(--rk-ntc-green-light); color: var(--rk-ntc-green); }
.rk-badge-warn { background: var(--rk-ntc-red-light); color: var(--rk-ntc-red); }

.rk-ntc-svg-wrap {
    width: 100%;
    max-width: 250px;
    margin-top: 20px;
}

/* SVG Animations & States */
.rk-svg-panel { transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); fill: #e2e8f0; }
.rk-svg-pipe { transition: fill 0.4s; fill: #94a3b8; }
.rk-svg-lzo { opacity: 0; transition: opacity 0.3s, transform 2s; }

/* States */
.state-heating .rk-svg-pipe { fill: var(--rk-ntc-red); }
.state-heating .rk-svg-panel { fill: #f8fafc; }

.state-blocked .rk-svg-pipe { fill: var(--rk-ntc-blue); }
.state-blocked .rk-svg-panel { fill: #f8fafc; }

.state-damaged .rk-svg-pipe { fill: var(--rk-ntc-red); }
.state-damaged .rk-svg-panel { fill: #fecaca; transform: translateY(-5px) rotate(2deg); transform-origin: center; }
.state-damaged .rk-svg-lzo { opacity: 1; animation: floatUp 2s infinite linear; }

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

@media (max-width: 768px) {
    .rk-ntc-container { margin: 20px auto; }
    .rk-ntc-header, .rk-ntc-body { padding: 25px 20px; }
    .rk-ntc-header h2 { font-size: 22px; }
    .rk-ntc-layout { flex-direction: column; gap: 20px; }
    .rk-ntc-simulator { padding: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-czujnik",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Dlaczego czujnik podłogowy jest niezbędny przy panelach winylowych i parkiecie?",
    "description": "Zrozum tryb dwukanałowy termostatu. Zobacz, jak brak czujnika NTC w wylewce prowadzi do przegrzania posadzki powyżej 27 stopni i nieodwracalnych uszkodzeń paneli LVT.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-czujnik",
    "name": "Graniczne temperatury posadzek (Czujnik NTC)",
    "description": "Parametry krytyczne dla bezpiecznej eksploatacji ogrzewania płaszczyznowego z okładzinami wrażliwymi termicznie.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "czujnik temperatury podłogi do paneli winylowych",
      "maksymalna temperatura ogrzewania podłogowego parkiet",
      "termostat dwukanałowy pokojowo podłogowy",
      "emisja LZO z paneli ogrzewanie",
      "deformacja paneli ogrzewanie podłogowe"
    ],
    "measurementTechnique": "Pomiar dwukanałowy: równoległa ewaluacja temperatury powietrza i wylewki celem wywołania zjawiska sprzężenia zwrotnego i zamknięcia zaworu (siłownika NC).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Limit temperaturowy 27°C jako absolutne maksimum dla gwarancji paneli i parkietów.",
        "Przekroczenie bariery 27°C powoduje rozsychanie zamków oraz zwiększoną emisję lotnych związków organicznych (LZO)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-czujnik",
    "name": "Symulator termicznego zabezpieczenia posadzki (NTC)",
    "description": "Fizyczny symulator obrazujący asymetrię nagrzewania powietrza i wylewki oraz konsekwencje braku dwukanałowego zabezpieczenia instalacji podłogowej.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-ntc-container" id="rk-ntc-app">
    <div class="rk-ntc-header">
        <h2>Dlaczego czujnik podłogowy jest niezbędny przy panelach winylowych i parkiecie?</h2>
        <p>Czujnik temperatury podłogi (rezystancyjny czujnik NTC umieszczony w peszlu ochronnym wewnątrz wylewki) jest bezwzględnie wymagany, gdy <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">okładzinę stanowią panele</a> laminowane, <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/">panele winylowe (LVT)</a> lub <a href="https://projekt-ogrzewania.pl/podlogi-drewniane-vs-panele-laminowane-co-wybrac-przy-ogrzewaniu-podlogowym/">parkiet warstwowy</a>, ponieważ producenci tych materiałów bezwzględnie ograniczają maksymalną temperaturę podłogi do 27°C.</p>
        <p>Termostat pokojowo-podłogowy działa w trybie dwukanałowym. Nadrzędnym celem jest osiągnięcie temperatury powietrza (np. 22°C), ale jeśli w procesie nagrzewania, na skutek zbyt <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">wysokiej temperatury zasilania</a>, wylewka osiągnie 27°C, czujnik podłogowy wymusza natychmiastowe zamknięcie siłownika pętli. Przekroczenie tego limitu to utrata gwarancji, emisja szkodliwych związków lotnych (LZO) oraz destrukcja materiału.</p>
    </div>

    <div class="rk-ntc-body">
        <div class="rk-ntc-simulator">
            <div class="rk-ntc-sim-title">
                <h3>Symulator Trybu Dwukanałowego (NTC)</h3>
                <p>Zobacz, jak zachowuje się posadzka w fazie intensywnego nagrzewania pokoju.</p>
            </div>

            <div class="rk-ntc-layout">
                <div class="rk-ntc-controls">
                    <div class="rk-ntc-toggle-group">
                        <button class="rk-ntc-toggle-btn active" data-mode="on" id="btnNtcOn">Termostat z czujnikiem NTC</button>
                        <button class="rk-ntc-toggle-btn" data-mode="off" id="btnNtcOff">Tylko czujnik powietrza</button>
                    </div>

                    <div class="rk-ntc-slider-group">
                        <label>Zwiększ zapotrzebowanie na ciepło (Nagrzewanie)</label>
                        <input type="range" class="rk-ntc-slider" id="heatSlider" min="0" max="100" value="0">
                        
                        <div class="rk-ntc-readings">
                            <div class="rk-ntc-reading-box">
                                <span>Temp. Powietrza</span>
                                <strong id="valAir">20.0°C</strong>
                            </div>
                            <div class="rk-ntc-reading-box">
                                <span>Temp. Posadzki</span>
                                <strong id="valFloor" style="color: var(--rk-ntc-blue);">20.0°C</strong>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="rk-ntc-visual" id="visualBox">
                    <div class="rk-ntc-status-badge rk-badge-safe" id="statusBadge">System Oczekuje</div>
                    
                    <div class="rk-ntc-svg-wrap">
                        <svg viewBox="0 0 200 150" xmlns="http://www.w3.org/2000/svg">
                            <rect x="10" y="80" width="180" height="60" fill="#cbd5e1" rx="4"/>
                            <line x1="10" y1="110" x2="190" y2="110" stroke="#94a3b8" stroke-width="2" stroke-dasharray="10 5"/>
                            
                            <circle cx="40" cy="95" r="8" class="rk-svg-pipe"/>
                            <circle cx="80" cy="95" r="8" class="rk-svg-pipe"/>
                            <circle cx="120" cy="95" r="8" class="rk-svg-pipe"/>
                            <circle cx="160" cy="95" r="8" class="rk-svg-pipe"/>

                            <rect x="10" y="65" width="180" height="10" class="rk-svg-panel" rx="2"/>
                            
                            <line x1="70" y1="65" x2="70" y2="75" stroke="#94a3b8" stroke-width="1"/>
                            <line x1="130" y1="65" x2="130" y2="75" stroke="#94a3b8" stroke-width="1"/>

                            <g class="rk-svg-lzo">
                                <circle cx="50" cy="45" r="4" fill="#ef4444"/>
                                <circle cx="150" cy="35" r="3" fill="#ef4444"/>
                                <circle cx="100" cy="50" r="5" fill="#ef4444"/>
                                <text x="100" y="25" font-size="10" fill="#ef4444" text-anchor="middle" font-weight="bold">LZO!</text>
                            </g>
                        </svg>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    let modeNTC = true; // true = z czujnikiem (bezpiecznie), false = bez (niebezpiecznie)
    
    const btnOn = document.getElementById('btnNtcOn');
    const btnOff = document.getElementById('btnNtcOff');
    const slider = document.getElementById('heatSlider');
    const valAir = document.getElementById('valAir');
    const valFloor = document.getElementById('valFloor');
    const visualBox = document.getElementById('visualBox');
    const statusBadge = document.getElementById('statusBadge');

    function updateSimulation() {
        let heatInput = parseInt(slider.value); // 0 do 100
        
        // Bazy temperaturowe
        let baseAir = 20.0;
        let baseFloor = 20.0;

        // Bezwładność: podłoga nagrzewa się 3x szybciej niż powietrze w tej symulacji
        // Max heatInput(100) -> powietrze rośnie o 3°C, podłoga o 12°C
        let currentAir = baseAir + (heatInput * 0.03);
        let currentFloor = baseFloor + (heatInput * 0.12);

        // Reset klas
        visualBox.className = 'rk-ntc-visual';
        statusBadge.className = 'rk-ntc-status-badge';

        if (modeNTC) {
            // TRYB ZABEZPIECZONY NTC
            if (currentFloor > 27) {
                // Czujnik ucina zasilanie na 27°C
                currentFloor = 27;
                visualBox.classList.add('state-blocked');
                
                statusBadge.classList.add('rk-badge-safe');
                statusBadge.innerText = 'Zawór Zamknięty (Limit 27°C)';
                valFloor.style.color = 'var(--rk-ntc-blue)';
            } else {
                if (heatInput > 0) {
                    visualBox.classList.add('state-heating');
                    statusBadge.classList.add('rk-badge-safe');
                    statusBadge.innerText = 'Nagrzewanie Bezpieczne';
                    valFloor.style.color = 'var(--rk-ntc-green)';
                } else {
                    statusBadge.classList.add('rk-badge-safe');
                    statusBadge.innerText = 'System Oczekuje';
                    valFloor.style.color = 'var(--rk-ntc-blue)';
                }
            }
        } else {
            // TRYB BEZ CZUJNIKA NTC (Katastrofa)
            if (currentFloor > 27) {
                visualBox.classList.add('state-damaged');
                statusBadge.classList.add('rk-badge-warn');
                statusBadge.innerText = 'KRYTYCZNE PRZEGRZANIE POSADZKI!';
                valFloor.style.color = 'var(--rk-ntc-red)';
            } else {
                if (heatInput > 0) {
                    visualBox.classList.add('state-heating');
                    statusBadge.classList.add('rk-badge-safe');
                    statusBadge.innerText = 'Nagrzewanie...';
                    valFloor.style.color = 'var(--rk-ntc-green)';
                } else {
                    statusBadge.classList.add('rk-badge-safe');
                    statusBadge.innerText = 'System Oczekuje';
                    valFloor.style.color = 'var(--rk-ntc-blue)';
                }
            }
        }

        // Aktualizacja UI
        valAir.innerText = currentAir.toFixed(1) + '°C';
        valFloor.innerText = currentFloor.toFixed(1) + '°C';
    }

    // Obsługa zdarzeń (bezpieczna logika IF/ELSE)
    btnOn.addEventListener('click', function() {
        modeNTC = true;
        btnOn.classList.add('active');
        btnOff.classList.remove('active');
        updateSimulation();
    });

    btnOff.addEventListener('click', function() {
        modeNTC = false;
        btnOff.classList.add('active');
        btnOn.classList.remove('active');
        updateSimulation();
    });

    slider.addEventListener('input', updateSimulation);

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



<style>
:root {
    --rk-sreg-dark: #0f172a;
    --rk-sreg-blue: #0284c7;
    --rk-sreg-blue-light: #e0f2fe;
    --rk-sreg-gold: #eab308;
    --rk-sreg-gray: #475569;
    --rk-sreg-gray-light: #f8fafc;
    --rk-sreg-bg: #ffffff;
    --rk-sreg-border: #e2e8f0;
}

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

.rk-sreg-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, var(--rk-sreg-dark) 0%, #1e293b 100%);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-sreg-gold);
}

.rk-sreg-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 20px 0;
    line-height: 1.3;
}

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

.rk-sreg-header p:last-child {
    margin-bottom: 0;
}

.rk-sreg-header a {
    color: var(--rk-sreg-gold);
    text-decoration: none;
    font-weight: 700;
    border-bottom: 1px dashed var(--rk-sreg-gold);
}

.rk-sreg-body {
    padding: 40px 50px;
}

/* Interaktywny symulator */
.rk-sreg-simulator {
    background: var(--rk-sreg-gray-light);
    border: 1px solid var(--rk-sreg-border);
    border-radius: 20px;
    padding: 35px;
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.rk-sreg-sim-title {
    text-align: center;
    margin: 0;
}

.rk-sreg-sim-title h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-sreg-dark);
    margin: 0 0 8px 0;
}

.rk-sreg-sim-title span {
    font-size: 14px;
    color: var(--rk-sreg-gray);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.rk-sreg-layout {
    display: flex;
    align-items: center;
    gap: 40px;
}

/* Panel sterowania */
.rk-sreg-controls {
    flex: 1;
    background: var(--rk-sreg-bg);
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-sreg-border);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

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

.rk-sreg-input-group label {
    display: block;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-sreg-gray);
    margin-bottom: 12px;
}

.rk-sreg-slider {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    border-radius: 4px;
    background: var(--rk-sreg-border);
    outline: none;
}

.rk-sreg-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--rk-sreg-blue);
    cursor: pointer;
    border: 4px solid var(--rk-sreg-bg);
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}

.rk-sreg-slider::-webkit-slider-thumb:active {
    transform: scale(1.1);
}

.rk-sreg-value-display {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-sreg-dark);
    margin-top: 8px;
}

.rk-sreg-fixed-val {
    padding-top: 15px;
    border-top: 1px dashed var(--rk-sreg-border);
}

.rk-sreg-fixed-val div {
    font-size: 13px;
    color: var(--rk-sreg-gray);
    font-weight: 600;
}

.rk-sreg-fixed-val strong {
    font-size: 18px;
    color: var(--rk-sreg-dark);
    display: block;
    margin-top: 5px;
}

/* Panel wizualizacji */
.rk-sreg-visual {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: var(--rk-sreg-dark);
    border-radius: 16px;
    padding: 30px;
    color: #ffffff;
    position: relative;
    overflow: hidden;
}

.rk-sreg-visual::before {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 40px;
    background: #334155; /* Symulacja płyty fundamentowej */
}

.rk-sreg-emission-val {
    font-size: 42px;
    font-weight: 900;
    color: var(--rk-sreg-gold);
    line-height: 1;
    margin-bottom: 5px;
    z-index: 2;
}

.rk-sreg-emission-label {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #cbd5e1;
    z-index: 2;
    margin-bottom: 25px;
}

/* Fale ciepła SVG */
.rk-sreg-heat-waves {
    width: 100px;
    height: 80px;
    z-index: 2;
    margin-bottom: 10px;
}

.rk-wave-path {
    fill: none;
    stroke: var(--rk-sreg-gold);
    stroke-width: 4;
    stroke-linecap: round;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-wave-1 { opacity: 1; transform: translateY(0); }
.rk-wave-2 { opacity: 0.7; transform: translateY(0); }
.rk-wave-3 { opacity: 0.4; transform: translateY(0); }

/* Komunikat o blokadzie */
.rk-sreg-block-msg {
    position: absolute;
    top: 20px;
    background: var(--rk-sreg-blue);
    color: #ffffff;
    padding: 6px 14px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 800;
    opacity: 0;
    transform: translateY(-10px);
    transition: all 0.3s;
    z-index: 3;
}

.rk-sreg-block-msg.show {
    opacity: 1;
    transform: translateY(0);
}

@media (max-width: 768px) {
    .rk-sreg-container { margin: 20px auto; border-radius: 16px; }
    .rk-sreg-header, .rk-sreg-body { padding: 25px 20px; }
    .rk-sreg-header h2 { font-size: 22px; }
    
    .rk-sreg-simulator { padding: 20px; }
    .rk-sreg-layout { flex-direction: column; gap: 20px; }
    .rk-sreg-controls, .rk-sreg-visual { width: 100%; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-samoregulacja",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Kiedy montaż sterowników do podłogówki mija się z celem? Wyjątki i ograniczenia",
    "description": "Zrozum zjawisko samoregulacji termicznej w budynkach pasywnych. Kiedy płyta fundamentowa grzewcza nie wymaga instalacji termostatów pokojowych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-samoregulacja",
    "name": "Parametry fizyczne zjawiska samoregulacji podłogówki",
    "description": "Fizyczne dane dotyczące spadku emisji cieplnej jastrychu w zależności od różnicy temperatur (Delta T) między powierzchnią a powietrzem.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "domy pasywne ogrzewanie podłogowe",
      "płyta fundamentowa grzewcza",
      "samoregulacja termiczna podłogówki",
      "bezwładność cieplna wylewki",
      "pasywne zyski ciepła"
    ],
    "measurementTechnique": "Kalkulacja procentowego spadku emisji ciepła na podstawie zawężającej się różnicy temperatur przy stałej temperaturze podłogi (24 st. C).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Spadek różnicy temperatur z 2K do 1K obniża emisję ciepła przez posadzkę o 50%.",
        "Zjawisko samoregulacji jest w pełni wystarczające w budynkach o zapotrzebowaniu na energię EU poniżej 15 kWh/(m2/rok)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-samoregulacja",
    "name": "Symulator Zjawiska Samoregulacji Termicznej",
    "description": "Narzędzie fizyczne wizualizujące blokadę oddawania ciepła przez podłogę pod wpływem pasywnych zysków wewnętrznych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-sreg-container" id="rk-sreg-app">
    <div class="rk-sreg-header">
        <h2>Kiedy montaż sterowników do podłogówki mija się z celem? Wyjątki i ograniczenia</h2>
        <p>Automatyka strefowa (termostaty pokojowe zamykające pętle) staje się technicznie nieefektywna w <a href="https://projekt-ogrzewania.pl/projektowanie-ogrzewania-podlogowego-w-domach-pasywnych/">budynkach pasywnych</a> oraz wysoce energooszczędnych o rocznym zapotrzebowaniu na energię użytkową do ogrzewania EU &le; 15 kWh/(m²&middot;rok), w których zastosowano grubą <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/">płytę fundamentową grzewczą</a> (wylewka >10 cm). W takich obiektach bezwładność cieplna układu wynosi od 12 do 24 godzin, co sprawia, że zanim siłownik zamknie przepływ, zapotrzebowanie na ciepło zdąży się drastycznie zmienić.</p>
        
        <p>W domach o tak niskich stratach ciepła, o stabilny <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">bilans cieplny budowli</a> dba zjawisko samoregulacji termicznej (self-regulation effect). Jeśli temperatura powietrza w pokoju wynosi 22&deg;C, a powierzchnia podłogi ma 24&deg;C, różnica wynosi zaledwie 2 K. Gdy temperatura w pokoju wzrośnie do 23&deg;C (np. z powodu <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-a-pasywne-zyski-ciepla/">pasywnych zysków od słońca</a>), różnica temperatur spada do 1 K, co powoduje automatyczny, fizyczny spadek emisji ciepła przez podłogę o blisko 50% bez jakiejkolwiek ingerencji elektroniki. W takich przypadkach optymalnym rozwiązaniem jest sterowanie wyłącznie centralne.</p>
    </div>

    <div class="rk-sreg-body">
        <div class="rk-sreg-simulator">
            <div class="rk-sreg-sim-title">
                <h3>Wizualizacja Samoregulacji Termicznej</h3>
                <span>Zobacz jak fizyka zastępuje elektronikę</span>
            </div>

            <div class="rk-sreg-layout">
                <div class="rk-sreg-controls">
                    <div class="rk-sreg-input-group">
                        <label>Zyski ciepła (Temp. powietrza w pokoju)</label>
                        <input type="range" class="rk-sreg-slider" id="srAirTemp" min="20.0" max="25.0" step="0.5" value="20.0">
                        <div class="rk-sreg-value-display"><span id="srAirDisplay">20.0</span> &deg;C</div>
                    </div>
                    
                    <div class="rk-sreg-fixed-val">
                        <div>Stała temperatura nagrzanej płyty podłogowej:</div>
                        <strong>24.0 &deg;C</strong>
                    </div>
                </div>

                <div class="rk-sreg-visual">
                    <div class="rk-sreg-block-msg" id="srBlockMsg">Fizyczna Blokada Emisji!</div>
                    
                    <div class="rk-sreg-emission-val"><span id="srPowerDisplay">100</span>%</div>
                    <div class="rk-sreg-emission-label">Emisja ciepła z posadzki</div>

                    <svg class="rk-sreg-heat-waves" viewBox="0 0 100 80">
                        <path class="rk-wave-path rk-wave-1" id="wave1" d="M20 70 Q35 50 50 70 T80 70" />
                        <path class="rk-wave-path rk-wave-2" id="wave2" d="M20 45 Q35 25 50 45 T80 45" />
                        <path class="rk-wave-path rk-wave-3" id="wave3" d="M20 20 Q35 0 50 20 T80 20" />
                    </svg>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const sliderAir = document.getElementById('srAirTemp');
    const displayAir = document.getElementById('srAirDisplay');
    const displayPower = document.getElementById('srPowerDisplay');
    const blockMsg = document.getElementById('srBlockMsg');
    
    // Fale SVG
    const wave1 = document.getElementById('wave1');
    const wave2 = document.getElementById('wave2');
    const wave3 = document.getElementById('wave3');

    const floorTemp = 24.0;
    const maxDelta = 4.0; // Różnica bazowa (24 - 20) dla 100% emisji

    function updatePhysics() {
        let airTemp = parseFloat(sliderAir.value);
        displayAir.innerText = airTemp.toFixed(1);

        let deltaT = floorTemp - airTemp;
        
        // Zabezpieczenie przed wartością ujemną
        if (deltaT < 0) {
            deltaT = 0;
        }

        // Procent emisji
        let powerPercent = (deltaT / maxDelta) * 100;
        
        if (powerPercent < 0) {
            powerPercent = 0;
        }

        displayPower.innerText = Math.round(powerPercent);

        // Wizualizacja fal
        if (powerPercent > 70) {
            wave1.style.opacity = '1';
            wave2.style.opacity = '0.8';
            wave3.style.opacity = '0.5';
            wave1.style.transform = 'translateY(0)';
            wave2.style.transform = 'translateY(0)';
            wave3.style.transform = 'translateY(0)';
            blockMsg.classList.remove('show');
        } else if (powerPercent > 40) {
            wave1.style.opacity = '0.8';
            wave2.style.opacity = '0.4';
            wave3.style.opacity = '0';
            wave1.style.transform = 'translateY(5px)';
            wave2.style.transform = 'translateY(10px)';
            blockMsg.classList.remove('show');
        } else if (powerPercent > 0) {
            wave1.style.opacity = '0.4';
            wave2.style.opacity = '0';
            wave3.style.opacity = '0';
            wave1.style.transform = 'translateY(15px)';
            blockMsg.classList.remove('show');
        } else {
            // Emisja równa 0%
            wave1.style.opacity = '0';
            wave2.style.opacity = '0';
            wave3.style.opacity = '0';
            blockMsg.classList.add('show');
        }
    }

    sliderAir.addEventListener('input', updatePhysics);
    
    // Inicjalizacja
    updatePhysics();
});
</script>



<style>
:root {
    --rk-pwm-dark: #0f172a;
    --rk-pwm-blue: #0284c7;
    --rk-pwm-blue-light: #e0f2fe;
    --rk-pwm-orange: #f97316;
    --rk-pwm-orange-light: #ffedd5;
    --rk-pwm-gray: #475569;
    --rk-pwm-bg: #ffffff;
    --rk-pwm-border: #e2e8f0;
}

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

.rk-pwm-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, var(--rk-pwm-dark) 0%, #1e293b 100%);
    color: #ffffff;
}

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

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

.rk-pwm-body {
    padding: 40px 50px;
}

.rk-pwm-steps {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    margin-bottom: 40px;
}

.rk-pwm-step {
    background: #f8fafc;
    border: 1px solid var(--rk-pwm-border);
    border-radius: 16px;
    padding: 25px;
}

.rk-pwm-step-number {
    display: inline-block;
    background: var(--rk-pwm-blue);
    color: #ffffff;
    width: 32px;
    height: 32px;
    border-radius: 8px;
    text-align: center;
    line-height: 32px;
    font-weight: 800;
    margin-bottom: 15px;
}

.rk-pwm-step h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-pwm-dark);
    margin: 0 0 10px 0;
}

.rk-pwm-step p {
    font-size: 14px;
    color: var(--rk-pwm-gray);
    line-height: 1.6;
    margin: 0;
}

.rk-pwm-step a {
    color: var(--rk-pwm-blue);
    text-decoration: none;
    font-weight: 600;
}

/* Interaktywny Symulator */
.rk-pwm-simulator {
    background: var(--rk-pwm-dark);
    border-radius: 20px;
    padding: 40px;
    color: #ffffff;
}

.rk-pwm-sim-title {
    font-size: 22px;
    font-weight: 800;
    margin: 0 0 30px 0;
    text-align: center;
    color: var(--rk-pwm-orange);
}

.rk-pwm-controls {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
    margin-bottom: 40px;
}

.rk-pwm-control-group {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.rk-pwm-control-group label {
    font-size: 14px;
    font-weight: 700;
    color: #cbd5e1;
}

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

.rk-pwm-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-pwm-orange);
    cursor: pointer;
    border: 4px solid #ffffff;
    box-shadow: 0 0 10px rgba(249, 115, 22, 0.5);
}

.rk-pwm-val-display {
    font-size: 24px;
    font-weight: 900;
    color: #ffffff;
    margin-top: 5px;
}

/* Przełącznik Wylewki */
.rk-screed-toggle {
    display: flex;
    background: #1e293b;
    border-radius: 12px;
    padding: 4px;
    margin-bottom: 20px;
}

.rk-screed-btn {
    flex: 1;
    padding: 12px;
    text-align: center;
    background: transparent;
    border: none;
    color: #94a3b8;
    font-weight: 700;
    font-size: 14px;
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.3s;
}

.rk-screed-btn.active {
    background: var(--rk-pwm-blue);
    color: #ffffff;
}

/* Wyniki */
.rk-pwm-results {
    background: #1e293b;
    border-radius: 16px;
    padding: 30px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
}

.rk-pwm-result-box {
    flex: 1;
    text-align: center;
}

.rk-pwm-result-label {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #94a3b8;
    margin-bottom: 8px;
}

.rk-pwm-result-value {
    font-size: 32px;
    font-weight: 900;
}

.rk-val-open { color: var(--rk-pwm-orange); }
.rk-val-closed { color: var(--rk-pwm-blue); }

.rk-pwm-visual {
    width: 120px;
    height: 120px;
    position: relative;
}

.rk-svg-circle {
    transform: rotate(-90deg);
    transform-origin: 50% 50%;
    transition: stroke-dasharray 0.5s ease;
}

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

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

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

.rk-btn-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-pwm-blue);
    color: #ffffff;
    font-size: 16px;
    font-weight: 800;
    padding: 20px 35px;
    border-radius: 16px;
    text-decoration: 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-cta:hover {
    transform: translateY(-4px);
    background: #0369a1;
    box-shadow: 0 15px 35px -5px rgba(2, 132, 199, 0.5);
}

@media (max-width: 768px) {
    .rk-pwm-container { margin: 20px auto; }
    .rk-pwm-header, .rk-pwm-body, .rk-pwm-simulator, .rk-pwm-cta { padding: 30px 20px; }
    .rk-pwm-steps { grid-template-columns: 1fr; gap: 20px; }
    .rk-pwm-controls { grid-template-columns: 1fr; gap: 30px; }
    .rk-pwm-results { flex-direction: column; text-align: center; }
    .rk-svg-circle-wrap { margin: 20px auto; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-pwm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Jak poprawnie skonfigurować algorytm sterowania ogrzewaniem? Przewodnik krok po kroku",
    "description": "Techniczny przewodnik kalibracji automatyki podłogówki. Obliczanie czasu otwarcia siłowników w algorytmie PWM w zależności od uchybu temperatury i rodzaju wylewki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-pwm",
    "name": "Parametry kalibracji algorytmu PWM/TPI w ogrzewaniu płaszczyznowym",
    "description": "Zbiór danych i wzorów matematycznych definiujących poprawną konfigurację systemów sterowania strefowego w zależności od masy termicznej jastrychu.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "algorytm PWM w ogrzewaniu",
      "histereza czy PWM",
      "czas otwarcia siłownika podłogówki",
      "wylewka anhydrytowa a sterowanie",
      "taktowanie pompy ciepła"
    ],
    "measurementTechnique": "Obliczanie cyklu pracy siłowników (t_on) z wykorzystaniem wzmocnienia proporcjonalnego Kp (0,2) oraz uchybu regulacji.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Baza czasu dla wylewki betonowej: 60 minut.",
        "Baza czasu dla wylewki anhydrytowej: 30 minut.",
        "Minimalny bezpieczny czas otwarcia siłownika (ochrona przekaźników): 3 minuty."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-pwm",
    "name": "Symulator Algorytmu PWM dla Ogrzewania Podłogowego",
    "description": "Interaktywne narzędzie obliczeniowe pozwalające na symulację zachowania siłowników termoelektrycznych na podstawie zmiennej temperatury zadanej i aktualnej.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-pwm-container" id="rk-pwm-app">
    <div class="rk-pwm-header">
        <h2>Jak poprawnie skonfigurować algorytm sterowania ogrzewaniem? Przewodnik krok po kroku</h2>
        <p>Prawidłowa parametryzacja automatyki podłogówki zapobiega taktowaniu źródła ciepła i stabilizuje temperaturę. Poniżej znajduje się logika konfiguracji sterownika z uwzględnieniem algorytmu modulacji.</p>
    </div>

    <div class="rk-pwm-body">
        <div class="rk-pwm-steps">
            <div class="rk-pwm-step">
                <span class="rk-pwm-step-number">1</span>
                <h3>Wybór trybu pracy (PWM vs Histereza)</h3>
                <p>Należy bezwzględnie wyłączyć klasyczną histerezę, ponieważ wygeneruje ona przesterowania temperatury o ponad 1,5°C ze względu na <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładność wylewki</a>. Aktywuj algorytm <strong>PWM / TPI</strong>, dedykowany do układów inercyjnych.</p>
            </div>
            <div class="rk-pwm-step">
                <span class="rk-pwm-step-number">2</span>
                <h3>Określenie czasu cyklu PWM</h3>
                <p>Dla standardowej <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">wylewki betonowej</a> czas cyklu ustawia się na <strong>60 minut</strong>. Dla wylewek anhydrytowych (cieńszych, szybko przewodzących ciepło) bazę czasu skracamy do <strong>30 minut</strong>.</p>
            </div>
            <div class="rk-pwm-step">
                <span class="rk-pwm-step-number">3</span>
                <h3>Wyliczenie czasu otwarcia siłownika</h3>
                <p>Algorytm oblicza czas zasilania siłownika w każdym cyklu na podstawie uchybu regulacji (różnicy temperatur):<br>
                <strong>Czas Otwarcia = Cykl × [ Kp × (Temp. Zadana - Temp. Aktualna) ]</strong><br>
                Gdzie wzmocnienie Kp wynosi zazwyczaj 0,2.</p>
            </div>
            <div class="rk-pwm-step">
                <span class="rk-pwm-step-number">4</span>
                <h3>Limity dla ochrony źródła</h3>
                <p>Należy wprowadzić minimalny czas otwarcia <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłownika termoelektrycznego</a> na poziomie <strong>3 minut</strong>. Zapobiega to zbędnemu uruchamianiu pompy obiegowej na zaledwie kilkanaście sekund.</p>
            </div>
        </div>

        <div class="rk-pwm-simulator">
            <h3 class="rk-pwm-sim-title">Symulator czasu pracy siłownika w algorytmie PWM</h3>
            
            <div class="rk-screed-toggle">
                <button class="rk-screed-btn active" data-cycle="60" id="btnBeton">Wylewka Betonowa (Cykl 60 min)</button>
                <button class="rk-screed-btn" data-cycle="30" id="btnAnhydryt">Wylewka Anhydrytowa (Cykl 30 min)</button>
            </div>

            <div class="rk-pwm-controls">
                <div class="rk-pwm-control-group">
                    <label>Temperatura Zadana (Termostat)</label>
                    <input type="range" class="rk-pwm-slider" id="tempZadana" min="18.0" max="25.0" step="0.1" value="22.0">
                    <div class="rk-pwm-val-display"><span id="valZadana">22.0</span> °C</div>
                </div>
                <div class="rk-pwm-control-group">
                    <label>Temperatura Aktualna w Pokoju</label>
                    <input type="range" class="rk-pwm-slider" id="tempAktualna" min="18.0" max="25.0" step="0.1" value="21.5">
                    <div class="rk-pwm-val-display"><span id="valAktualna">21.5</span> °C</div>
                </div>
            </div>

            <div class="rk-pwm-results">
                <div class="rk-pwm-result-box">
                    <div class="rk-pwm-result-label">Zawór otwarty (Grzanie)</div>
                    <div class="rk-pwm-result-value rk-val-open"><span id="outOpen">6</span> min</div>
                </div>
                
                <div class="rk-svg-circle-wrap">
                    <svg class="rk-pwm-visual" viewBox="0 0 100 100">
                        <circle cx="50" cy="50" r="45" fill="none" stroke="#0284c7" stroke-width="10"></circle>
                        <circle cx="50" cy="50" r="45" fill="none" stroke="#f97316" stroke-width="10" stroke-dasharray="0 283" class="rk-svg-circle" id="svgProgress"></circle>
                    </svg>
                </div>

                <div class="rk-pwm-result-box">
                    <div class="rk-pwm-result-label">Zawór zamknięty (Przerwa)</div>
                    <div class="rk-pwm-result-value rk-val-closed"><span id="outClosed">54</span> min</div>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-pwm-cta">
        <h3>Projekt instalacji dopasowany do logiki sterownika</h3>
        <p>Błędnie dobrany rozstaw rur zniszczy efektywność nawet najlepszego sterownika z algorytmem PWM. Wybierz kompleksowy projekt instalacji grzewczej oparty na rzetelnych wyliczeniach hydraulicznych OZC.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-cta">
            ZAMÓW PROJEKT INSTALACJI OGRZEWANIA PODŁOGOWEGO ONLINE
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    let cycleTime = 60; // Domyślnie beton
    const Kp = 0.2; // Wzmocnienie proporcjonalne
    
    const btnBeton = document.getElementById('btnBeton');
    const btnAnhydryt = document.getElementById('btnAnhydryt');
    const sliderZadana = document.getElementById('tempZadana');
    const sliderAktualna = document.getElementById('tempAktualna');
    const displayZadana = document.getElementById('valZadana');
    const displayAktualna = document.getElementById('valAktualna');
    const outOpen = document.getElementById('outOpen');
    const outClosed = document.getElementById('outClosed');
    const svgProgress = document.getElementById('svgProgress');

    // Funkcja obliczająca bez użycia &&
    function calculatePWM() {
        let tZad = parseFloat(sliderZadana.value);
        let tAkt = parseFloat(sliderAktualna.value);
        
        displayZadana.innerText = tZad.toFixed(1);
        displayAktualna.innerText = tAkt.toFixed(1);

        let error = tZad - tAkt;
        
        if (error < 0) {
            error = 0;
        }

        let timeOn = cycleTime * (Kp * error);

        if (timeOn > cycleTime) {
            timeOn = cycleTime;
        }

        if (timeOn > 0) {
            if (timeOn < 3) {
                // Zabezpieczenie źródła - limit minimum 3 min
                timeOn = 0;
            }
        }

        let timeOnRounded = Math.round(timeOn);
        let timeOff = cycleTime - timeOnRounded;

        outOpen.innerText = timeOnRounded;
        outClosed.innerText = timeOff;

        // Obliczenie proporcji do koła SVG (obwód = 2 * PI * 45 = ok. 282.7)
        let circumference = 283;
        let percentage = timeOnRounded / cycleTime;
        let strokeDash = percentage * circumference;
        
        svgProgress.style.strokeDasharray = strokeDash + " 283";
    }

    // Eventy dla przycisków wylewki
    btnBeton.addEventListener('click', function() {
        btnBeton.classList.add('active');
        btnAnhydryt.classList.remove('active');
        cycleTime = 60;
        calculatePWM();
    });

    btnAnhydryt.addEventListener('click', function() {
        btnAnhydryt.classList.add('active');
        btnBeton.classList.remove('active');
        cycleTime = 30;
        calculatePWM();
    });

    // Eventy dla suwaków
    sliderZadana.addEventListener('input', calculatePWM);
    sliderAktualna.addEventListener('input', calculatePWM);

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



<style>
:root {
    --rk-proj-dark: #0f172a;
    --rk-proj-blue: #0284c7;
    --rk-proj-blue-light: #e0f2fe;
    --rk-proj-accent: #38bdf8;
    --rk-proj-gray: #475569;
    --rk-proj-bg: #ffffff;
    --rk-proj-border: #e2e8f0;
    --rk-proj-hover: #f8fafc;
}

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

.rk-project-header {
    padding: 45px 50px 35px;
    background: linear-gradient(135deg, var(--rk-proj-dark) 0%, #1e293b 100%);
    color: #ffffff;
    position: relative;
}

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

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

.rk-project-body {
    padding: 40px 50px;
    background: #f8fafc;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.rk-node-item {
    background: var(--rk-proj-bg);
    border: 2px solid var(--rk-proj-border);
    border-radius: 16px;
    transition: all 0.3s ease;
    overflow: hidden;
}

.rk-node-item.is-active {
    border-color: var(--rk-proj-blue);
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.15);
}

.rk-node-trigger {
    width: 100%;
    padding: 24px 30px;
    background: transparent;
    border: none;
    display: flex;
    align-items: center;
    gap: 24px;
    cursor: pointer;
    text-align: left;
    transition: background-color 0.3s ease;
}

.rk-node-trigger:hover {
    background-color: var(--rk-proj-hover);
}

.rk-node-icon {
    flex-shrink: 0;
    width: 48px;
    height: 48px;
    border-radius: 14px;
    background: var(--rk-proj-blue-light);
    color: var(--rk-proj-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-node-item.is-active .rk-node-icon {
    background: var(--rk-proj-blue);
    color: #ffffff;
    transform: scale(1.1) rotate(5deg);
}

.rk-node-title {
    flex: 1;
}

.rk-node-title h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-proj-dark);
    margin: 0;
    transition: color 0.3s ease;
}

.rk-node-item.is-active .rk-node-title h3 {
    color: var(--rk-proj-blue);
}

.rk-node-indicator {
    flex-shrink: 0;
    width: 24px;
    height: 24px;
    border: 2px solid var(--rk-proj-border);
    border-radius: 50%;
    position: relative;
    transition: all 0.3s ease;
}

.rk-node-indicator::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) scale(0);
    width: 12px;
    height: 12px;
    background: var(--rk-proj-blue);
    border-radius: 50%;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-node-item.is-active .rk-node-indicator {
    border-color: var(--rk-proj-blue);
}

.rk-node-item.is-active .rk-node-indicator::after {
    transform: translate(-50%, -50%) scale(1);
}

.rk-node-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-node-content-inner {
    padding: 0 30px 30px 102px; /* Dostosowane do ikony */
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-proj-gray);
    border-top: 1px solid transparent;
}

.rk-node-item.is-active .rk-node-content-inner {
    border-top-color: var(--rk-proj-blue-light);
    padding-top: 20px;
    margin-top: 5px;
}

.rk-node-content-inner strong {
    color: var(--rk-proj-dark);
    font-weight: 700;
}

.rk-node-content-inner a {
    color: var(--rk-proj-blue);
    text-decoration: none;
    font-weight: 600;
    border-bottom: 1px dashed var(--rk-proj-blue);
    transition: all 0.2s;
}

.rk-node-content-inner a:hover {
    color: var(--rk-proj-dark);
    border-bottom-color: var(--rk-proj-dark);
}

/* Mocne CTA */
.rk-proj-cta {
    background: var(--rk-proj-bg);
    padding: 45px 50px;
    text-align: center;
    border-top: 1px solid var(--rk-proj-border);
}

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

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

.rk-btn-premium {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-proj-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: 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);
    border: 2px solid transparent;
}

.rk-btn-premium:hover {
    transform: translateY(-4px);
    background: #0369a1;
    box-shadow: 0 15px 35px -5px rgba(2, 132, 199, 0.5);
    border-color: var(--rk-proj-accent);
}

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

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

/* Responsywność Mobile */
@media (max-width: 768px) {
    .rk-project-container { margin: 20px auto; border-radius: 16px; }
    .rk-project-header, .rk-project-body, .rk-proj-cta { padding: 30px 20px; }
    .rk-project-header h2 { font-size: 24px; }
    
    .rk-node-trigger { padding: 20px; gap: 16px; }
    .rk-node-icon { width: 40px; height: 40px; border-radius: 10px; }
    .rk-node-icon svg { width: 20px; height: 20px; }
    .rk-node-title h3 { font-size: 16px; }
    
    .rk-node-content-inner { padding: 0 20px 20px 20px; } /* Usunięcie lewego wcięcia na mobile */
    .rk-btn-premium { width: 100%; padding: 18px 20px; font-size: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-projekt",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Jak automatyka strefowa wpływa na profesjonalny projekt ogrzewania podłogowego?",
    "description": "Zobacz, jak inteligentne sterowanie wymusza zmiany w architekturze kotłowni. Wpływ automatyki na bufor ciepła, pompę obiegową ΔP-c oraz rozstaw rur w projekcie.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-projekt",
    "name": "Wymagania hydrauliczne dla automatyki strefowej wg PN-EN 1264",
    "description": "Korelacja między cyfrowym zamykaniem pętli grzewczych a wydajnością masową pomp ciepła oraz bilansem ciśnień w rozdzielaczach.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt instalacji ogrzewania podłogowego online",
      "sprzęgło hydrauliczne w pompie ciepła",
      "bufor ciepła a podłogówka",
      "pompa obiegowa ze zmiennym ciśnieniem",
      "obliczenia OZC dla stref"
    ],
    "measurementTechnique": "Analiza współzależności parametrów hydraulicznych (przepływ masowy, opory miejscowe) w zmiennych warunkach pracy wywołanych dławieniem strefowym.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wymóg stosowania sprzęgła/bufora przy zamykaniu 70% pętli dla zachowania przepływu parownika.",
        "Konieczność zastosowania pomp obiegowych z autoadaptacją ciśnienia stałego ΔP-c."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-projekt",
    "name": "Symulator Wymagań Hydraulicznych",
    "description": "Interaktywny walidator zależności między sterowaniem strefowym a architekturą kotłowni i parametrami rozdzielaczy podłogowych.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-project-container" id="rk-proj-sys">
    <div class="rk-project-header">
        <h2>Jak automatyka strefowa wpływa na profesjonalny projekt ogrzewania podłogowego?</h2>
        <p>Dobór systemu sterowania musi być integralną częścią obliczeń hydraulicznych na etapie projektowania instalacji zgodnie z normą <strong>PN-EN 1264</strong>. Wybierz węzeł, aby zobaczyć inżynierskie konsekwencje.</p>
    </div>

    <div class="rk-project-body" id="rkProjectNodes">
        
        <div class="rk-node-item">
            <button class="rk-node-trigger" aria-expanded="false">
                <div class="rk-node-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="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg>
                </div>
                <div class="rk-node-title">
                    <h3>Projektowanie stref i pętli (OZC)</h3>
                </div>
                <div class="rk-node-indicator"></div>
            </button>
            <div class="rk-node-content">
                <div class="rk-node-content-inner">
                    Dokładne <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">obliczenie strat ciepła</a> dla każdego pomieszczenia (OZC) pozwala przyporządkować konkretne pętle do osobnych stref sterowania. Pomieszczenia o skrajnie różnych zyskach (np. salon z dużymi przeszkleniami południowymi vs sypialnia północna) muszą bezwzględnie posiadać niezależne termostaty.
                </div>
            </div>
        </div>

        <div class="rk-node-item">
            <button class="rk-node-trigger" aria-expanded="false">
                <div class="rk-node-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="4"></circle><line x1="12" y1="2" x2="12" y2="8"></line><line x1="12" y1="16" x2="12" y2="22"></line><line x1="2" y1="12" x2="8" y2="12"></line><line x1="16" y1="12" x2="22" y2="12"></line></svg>
                </div>
                <div class="rk-node-title">
                    <h3>Sprzęgło hydrauliczne i bufor w układzie</h3>
                </div>
                <div class="rk-node-indicator"></div>
            </button>
            <div class="rk-node-content">
                <div class="rk-node-content-inner">
                    Gdy sterowniki pokojowe zamkną np. 70% pętli na rozdzielaczach, drastycznie spada przepływ masowy w instalacji. Pompa ciepła, która do prawidłowej pracy wymaga minimalnego, stabilnego przepływu (np. 1,2 m³/h), wejdzie w stan awarii (błąd <em>flow switch error</em>). Projekt musi uwzględniać <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgło hydrauliczne</a> lub <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufor spięty jako bypass</a>, aby odsprzęgnąć obieg źródła od zablokowanego obiegu instalacji.
                </div>
            </div>
        </div>

        <div class="rk-node-item">
            <button class="rk-node-trigger" aria-expanded="false">
                <div class="rk-node-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
                </div>
                <div class="rk-node-title">
                    <h3>Dobór pompy obiegowej z trybem ΔP-c</h3>
                </div>
                <div class="rk-node-indicator"></div>
            </button>
            <div class="rk-node-content">
                <div class="rk-node-content-inner">
                    <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">Pompa obiegowa podłogówki</a> musi pracować w trybie stałego ciśnienia (proporcjonalnego redukowania obrotów) <strong>ΔP-c</strong>. Gdy automatyka zamyka kolejne siłowniki, opory hydrauliczne instalacji rosną. Inteligentna pompa wykrywa zmianę ciśnienia, redukuje swoje obroty i pobór mocy (z np. 45W do 4W), skutecznie zapobiegając generowaniu szumów na rotometrach rozdzielacza.
                </div>
            </div>
        </div>

        <div class="rk-node-item">
            <button class="rk-node-trigger" aria-expanded="false">
                <div class="rk-node-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="M4 9h16"></path><path d="M4 15h16"></path><path d="M10 3v18"></path><path d="M14 3v18"></path></svg>
                </div>
                <div class="rk-node-title">
                    <h3>Rozstaw rur a autorytet zaworów</h3>
                </div>
                <div class="rk-node-indicator"></div>
            </button>
            <div class="rk-node-content">
                <div class="rk-node-content-inner">
                    Przy gęstym <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">rozstawie rur</a> (np. co 10 cm przy pompie ciepła) moc jednostkowa podłogi jest wysoka. Brak automatyki drastycznie pogłębia tu błędy regulacyjne, dlatego średnice rur zasilających rozdzielacz oraz autorytet zaworów z siłownikami muszą być tak przeliczone w projekcie, aby po odcięciu części stref nie dochodziło do rozrównoważenia pozostałych pętli.
                </div>
            </div>
        </div>

    </div>

    <div class="rk-proj-cta">
        <h3>Nie zgaduj parametrów swojej instalacji</h3>
        <p>Gdy stawką jest bezawaryjna praca pompy ciepła, matematyka wygrywa z instalatorską intuicją. Wyeliminuj błędy, zaufaj inżynierom i zdobądź pełną dokumentację swojego układu.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-premium">
            ZAMÓW KOMPLEKSOWY PROJEKT INSTALACJI OGRZEWANIA PODŁOGOWEGO ONLINE
            <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 nodeItems = document.querySelectorAll('.rk-node-item');

    nodeItems.forEach(function(item) {
        const triggerBtn = item.querySelector('.rk-node-trigger');
        const contentDiv = item.querySelector('.rk-node-content');

        triggerBtn.addEventListener('click', function() {
            // Bezpieczna logika przełączania - eliminacja operatorów &&
            
            if (item.classList.contains('is-active')) {
                // Zwiń, jeśli jest już otwarty
                item.classList.remove('is-active');
                triggerBtn.setAttribute('aria-expanded', 'false');
                contentDiv.style.maxHeight = null;
            } else {
                // Najpierw zwiń wszystkie inne aktywne węzły
                nodeItems.forEach(function(otherItem) {
                    if (otherItem !== item) {
                        if (otherItem.classList.contains('is-active')) {
                            otherItem.classList.remove('is-active');
                            otherItem.querySelector('.rk-node-trigger').setAttribute('aria-expanded', 'false');
                            otherItem.querySelector('.rk-node-content').style.maxHeight = null;
                        }
                    }
                });
                
                // Otwórz kliknięty węzeł
                item.classList.add('is-active');
                triggerBtn.setAttribute('aria-expanded', 'true');
                contentDiv.style.maxHeight = contentDiv.scrollHeight + "px";
            }
        });
    });
});
</script>



<style>
:root {
    --rk-matrix-dark: #0f172a;
    --rk-matrix-dark-card: #1e293b;
    --rk-matrix-blue: #0284c7;
    --rk-matrix-blue-light: #e0f2fe;
    --rk-matrix-green: #10b981;
    --rk-matrix-red: #ef4444;
    --rk-matrix-gray: #475569;
    --rk-matrix-gray-light: #f8fafc;
    --rk-matrix-bg: #ffffff;
    --rk-matrix-border: #e2e8f0;
}

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

.rk-matrix-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-matrix-dark) 0%, #1e293b 100%);
    color: #ffffff;
}

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

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

.rk-matrix-body {
    padding: 40px 50px;
    background: var(--rk-matrix-gray-light);
}

/* Interaktywny Dashboard */
.rk-matrix-dashboard {
    display: flex;
    flex-direction: column;
    gap: 30px;
}

/* Panel wyboru (Poziomy) */
.rk-matrix-levels {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
}

.rk-matrix-btn {
    background: var(--rk-matrix-bg);
    border: 2px solid var(--rk-matrix-border);
    padding: 20px 15px;
    border-radius: 16px;
    cursor: pointer;
    text-align: center;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
}

.rk-matrix-btn:hover {
    border-color: var(--rk-matrix-blue-light);
    transform: translateY(-2px);
}

.rk-matrix-btn.is-active {
    background: var(--rk-matrix-blue);
    border-color: var(--rk-matrix-blue);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.3);
}

.rk-matrix-btn-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-matrix-dark);
    transition: color 0.3s;
}

.rk-matrix-btn.is-active .rk-matrix-btn-title {
    color: #ffffff;
}

.rk-matrix-btn-sub {
    font-size: 11px;
    font-weight: 600;
    color: var(--rk-matrix-gray);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    transition: color 0.3s;
}

.rk-matrix-btn.is-active .rk-matrix-btn-sub {
    color: var(--rk-matrix-blue-light);
}

/* Wyświetlacz danych (Output) */
.rk-matrix-output {
    background: var(--rk-matrix-bg);
    border-radius: 20px;
    border: 1px solid var(--rk-matrix-border);
    padding: 35px;
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.rk-matrix-output-header {
    border-bottom: 1px dashed var(--rk-matrix-border);
    padding-bottom: 25px;
}

.rk-matrix-output-header h3 {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-matrix-dark);
    margin: 0 0 10px 0;
}

.rk-matrix-output-header p {
    font-size: 15px;
    color: var(--rk-matrix-gray);
    line-height: 1.6;
    margin: 0;
}

.rk-matrix-output-header a {
    color: var(--rk-matrix-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-matrix-blue);
}

/* Parametry grid */
.rk-matrix-stats {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.rk-matrix-stat-box {
    background: var(--rk-matrix-gray-light);
    padding: 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-matrix-border);
}

.rk-stat-title {
    font-size: 12px;
    color: var(--rk-matrix-gray);
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    margin-bottom: 10px;
}

.rk-stat-desc {
    font-size: 16px;
    font-weight: 700;
    color: var(--rk-matrix-dark);
    line-height: 1.4;
}

.rk-stat-desc.rk-color-red { color: var(--rk-matrix-red); }
.rk-stat-desc.rk-color-green { color: var(--rk-matrix-green); }
.rk-stat-desc.rk-color-blue { color: var(--rk-matrix-blue); }

/* SVG Wizualizacja */
.rk-matrix-visual {
    background: var(--rk-matrix-dark-card);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 120px;
}

.rk-svg-comp { transition: all 0.4s ease; fill: #334155; }
.rk-svg-line { transition: all 0.4s ease; stroke: #334155; stroke-width: 3; fill: none; }
.rk-svg-active { fill: var(--rk-matrix-blue); }
.rk-svg-active-line { stroke: var(--rk-matrix-blue); stroke-dasharray: 6 4; animation: rkFlowAnim 1s linear infinite; }
.rk-svg-active-green { fill: var(--rk-matrix-green); }

@keyframes rkFlowAnim {
    to { stroke-dashoffset: -10; }
}

@media (max-width: 768px) {
    .rk-matrix-container { margin: 20px auto; border-radius: 16px; }
    .rk-matrix-header, .rk-matrix-body { padding: 25px 20px; }
    .rk-matrix-header h2 { font-size: 24px; }
    
    .rk-matrix-levels { grid-template-columns: 1fr; gap: 10px; }
    .rk-matrix-btn { flex-direction: row; padding: 15px 20px; justify-content: space-between; }
    .rk-matrix-btn-title { font-size: 15px; }
    
    .rk-matrix-output { padding: 25px 20px; }
    .rk-matrix-stats { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-porownanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Zestawienie systemów: Brak sterowników vs Pogodówka vs Termostaty",
    "description": "Kompleksowa tabela porównawcza technologii sterowania ogrzewaniem podłogowym. Sprawdź, który wariant zapewnia najwyższy komfort i najniższe koszty eksploatacji.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-porownanie",
    "name": "Macierz porównawcza technologii sterowania podłogówką",
    "description": "Zestawienie efektywności, kosztów i komfortu dla 4 wariantów instalacyjnych: Brak, Pogodowe, Pokojowe, Hybrydowe.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "tabela porównawcza ogrzewanie podłogowe",
      "sterowanie pogodowe a termostaty pokojowe",
      "jakie sterowanie do pompy ciepła wybrać",
      "wady i zalety sterowania podłogówką",
      "zawór mieszający w ogrzewaniu podłogowym"
    ],
    "measurementTechnique": "Macierz analityczna oceniająca potencjał oszczędności energii i komfortu termicznego w relacji do skomplikowania układu hydraulicznego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wariant 1: Brak automatyki - najwyższe ryzyko przegrzewania i najniższy komfort.",
        "Wariant 4: Hybryda - maksymalna optymalizacja COP pompy ciepła połączona ze strefową blokadą zysków pasywnych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-porownanie",
    "name": "Kalkulator Poziomów Automatyki (System Upgrade Simulator)",
    "description": "Interaktywny interfejs typu dashboard umożliwiający przełączanie i weryfikację ewolucji systemów sterowania HVAC.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-matrix-container" id="rk-matrix-app">
    <div class="rk-matrix-header">
        <h2>Porównanie systemów: Od braku automatyki do pełnej hybrydy</h2>
        <p>Decyzja o wyborze sterowania determinuje koszty eksploatacji na lata. Zamiast obszernej tabeli, przygotowałem interaktywną macierz. Wybierz poziom zaawansowania instalacji, aby sprawdzić, co zyskujesz, a co tracisz.</p>
    </div>

    <div class="rk-matrix-body">
        <div class="rk-matrix-dashboard">
            
            <div class="rk-matrix-levels">
                <button class="rk-matrix-btn is-active" data-level="0">
                    <span class="rk-matrix-btn-sub">Wariant Podstawowy</span>
                    <span class="rk-matrix-btn-title">Brak Sterowników</span>
                </button>
                <button class="rk-matrix-btn" data-level="1">
                    <span class="rk-matrix-btn-sub">Tylko Źródło</span>
                    <span class="rk-matrix-btn-title">Sterowanie Pogodowe</span>
                </button>
                <button class="rk-matrix-btn" data-level="2">
                    <span class="rk-matrix-btn-sub">Tylko Strefy</span>
                    <span class="rk-matrix-btn-title">Termostaty Pokojowe</span>
                </button>
                <button class="rk-matrix-btn" data-level="3">
                    <span class="rk-matrix-btn-sub">Standard Inżynierski</span>
                    <span class="rk-matrix-btn-title">Pełna Hybryda</span>
                </button>
            </div>

            <div class="rk-matrix-output">
                
                <div class="rk-matrix-output-header">
                    <h3 id="mxTitle">Wariant 0: Instalacja "Zrób to najtaniej"</h3>
                    <p id="mxDesc">Układ pozbawiony jakiejkolwiek logiki. Pompa pracuje na sztywnych parametrach zasilania i ignoruje <a href="https://projekt-ogrzewania.pl/wady-wodnego-ogrzewania-podlogowego-na-co-zwrocic-uwage-przed-instalacja/">wady wodnego ogrzewania podłogowego</a>, takie jak wysoka inercja i ryzyko permanentnego przegrzewania.</p>
                </div>

                <div class="rk-matrix-visual">
                    <svg viewBox="0 0 400 80" style="width:100%; max-width: 350px;">
                        <rect x="20" y="20" width="50" height="50" rx="4" class="rk-svg-comp rk-svg-active-green" id="svgSource"/>
                        <text x="45" y="50" fill="#ffffff" font-size="10" font-family="sans-serif" text-anchor="middle" font-weight="bold">ŹRÓDŁO</text>
                        
                        <path d="M 70 45 L 160 45" class="rk-svg-line" id="svgLine1"/>

                        <circle cx="115" cy="15" r="8" class="rk-svg-comp" id="svgSensorOut"/>
                        <path d="M 115 23 L 115 45" class="rk-svg-line" id="svgLineOut"/>

                        <rect x="160" y="25" width="80" height="40" rx="4" class="rk-svg-comp rk-svg-active-green" id="svgDistributor"/>
                        
                        <path d="M 240 35 L 310 35" class="rk-svg-line" id="svgLine2"/>
                        <path d="M 240 55 L 310 55" class="rk-svg-line" id="svgLine3"/>

                        <circle cx="330" cy="35" r="15" class="rk-svg-comp" id="svgThermostat1"/>
                        <circle cx="330" cy="55" r="15" class="rk-svg-comp" id="svgThermostat2"/>
                    </svg>
                </div>

                <div class="rk-matrix-stats">
                    <div class="rk-matrix-stat-box">
                        <div class="rk-stat-title">Główna zaleta</div>
                        <div class="rk-stat-desc rk-color-blue" id="mxPro">Najniższy koszt instalacji na etapie budowy domu.</div>
                    </div>
                    
                    <div class="rk-matrix-stat-box">
                        <div class="rk-stat-title">Krytyczna wada</div>
                        <div class="rk-stat-desc rk-color-red" id="mxCon">Gigantyczne koszty eksploatacji i skrajny dyskomfort.</div>
                    </div>

                    <div class="rk-matrix-stat-box">
                        <div class="rk-stat-title">Potencjał Oszczędności</div>
                        <div class="rk-stat-desc" id="mxSave">0% (Baza odniesienia)</div>
                    </div>

                    <div class="rk-matrix-stat-box">
                        <div class="rk-stat-title">Wymagania hydrauliczne</div>
                        <div class="rk-stat-desc" id="mxHydra">Podstawowy rozdzielacz (brak siłowników i sprzęgła).</div>
                    </div>
                </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-matrix-btn');
    
    // Pola tekstowe Outputu
    const mxTitle = document.getElementById('mxTitle');
    const mxDesc = document.getElementById('mxDesc');
    const mxPro = document.getElementById('mxPro');
    const mxCon = document.getElementById('mxCon');
    const mxSave = document.getElementById('mxSave');
    const mxHydra = document.getElementById('mxHydra');

    // Elementy SVG
    const svgSource = document.getElementById('svgSource');
    const svgSensorOut = document.getElementById('svgSensorOut');
    const svgDistributor = document.getElementById('svgDistributor');
    const svgThermostat1 = document.getElementById('svgThermostat1');
    const svgThermostat2 = document.getElementById('svgThermostat2');
    
    const svgLine1 = document.getElementById('svgLine1');
    const svgLineOut = document.getElementById('svgLineOut');
    const svgLine2 = document.getElementById('svgLine2');
    const svgLine3 = document.getElementById('svgLine3');

    // Słownik danych dla 4 wariantów (bez użycia zewnętrznych plików JSON i znaków $$)
    const matrixData = {
        "0": {
            title: "Wariant 0: Instalacja 'Zrób to najtaniej'",
            desc: "Układ pozbawiony jakiejkolwiek logiki. Pompa pracuje na sztywnych parametrach zasilania i ignoruje <a href='https://projekt-ogrzewania.pl/wady-wodnego-ogrzewania-podlogowego-na-co-zwrocic-uwage-przed-instalacja/'>wady wodnego ogrzewania podłogowego</a>, takie jak wysoka inercja i ryzyko permanentnego przegrzewania.",
            pro: "Najniższy koszt instalacji hydraulicznej.",
            proClass: "rk-color-blue",
            con: "Gigantyczne koszty eksploatacji i skrajny dyskomfort temperaturowy.",
            conClass: "rk-color-red",
            save: "0% (Baza odniesienia)",
            hydra: "Podstawowy rozdzielacz (bez siłowników)."
        },
        "1": {
            title: "Wariant 1: Sterowanie Pogodowe (Tylko Źródło)",
            desc: "System oparty wyłącznie o <a href='https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/'>sterowanie pogodowe</a>. Centrala dostosowuje temperaturę zasilania (Tz) do temperatury zewnętrznej. Poprawia to sprawność źródła, ale ignoruje pasywne zyski ciepła wewnątrz pokojów.",
            pro: "Wysoki współczynnik COP pompy ciepła dzięki niskiej temperaturze zasilania.",
            proClass: "rk-color-green",
            con: "Brak reakcji na nasłonecznienie salonu. Zjawisko lokalnego przegrzewania wciąż występuje.",
            conClass: "rk-color-red",
            save: "Ok. 8 - 12% oszczędności",
            hydra: "Rozdzielacz podstawowy + zewnętrzny czujnik NTC na elewacji."
        },
        "2": {
            title: "Wariant 2: Termostaty Pokojowe (Tylko Strefy)",
            desc: "W pokojach zamontowane są <a href='https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/'>termostaty</a> zamykające przepływ, gdy zostanie osiągnięta temperatura zadana. Rozwiązuje to problem przegrzewania od słońca, ale źródło ciepła pracuje 'w ciemno' na wysokich parametrach.",
            pro: "Idealny komfort w każdym pomieszczeniu i precyzyjne odcinanie pasywnych zysków.",
            proClass: "rk-color-green",
            con: "Taktowanie pompy ciepła i niska sprawność z powodu braku informacji pogodowej.",
            conClass: "rk-color-red",
            save: "Ok. 10 - 15% oszczędności",
            hydra: "Rozdzielacz z siłownikami + listwa sterująca + wymagane sprzęgło hydrauliczne."
        },
        "3": {
            title: "Wariant 3: Pełna Hybryda (Standard Inżynierski)",
            desc: "Złoty standard. Źródło ciepła jest sterowane krzywą pogodową i optymalizowane przez <a href='https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/'>zawór mieszający</a>, a wnętrze budynku chronione jest przez inteligentne termostaty strefowe działające w pętli sprzężenia zwrotnego.",
            pro: "Maksymalny COP pompy ciepła i idealny komfort bez wahań temperatury.",
            proClass: "rk-color-green",
            con: "Najwyższy koszt inwestycyjny oraz konieczność profesjonalnego zaprojektowania hydrauliki.",
            conClass: "rk-color-gray",
            save: "Nawet do 25% oszczędności rocznie",
            hydra: "Pełna automatyka: siłowniki, czujniki pogodowe, termostaty dwukanałowe, sprzęgło/bufor."
        }
    };

    function updateDashboard(level) {
        // Zabezpieczenie przed błędem klucza
        let safeLevel = level;
        if (safeLevel !== "0") {
            if (safeLevel !== "1") {
                if (safeLevel !== "2") {
                    if (safeLevel !== "3") {
                        safeLevel = "0"; // domyślnie
                    }
                }
            }
        }
        
        const data = matrixData[safeLevel];

        // Aktualizacja tekstów
        mxTitle.innerHTML = data.title;
        mxDesc.innerHTML = data.desc;
        mxPro.innerHTML = data.pro;
        mxPro.className = "rk-stat-desc " + data.proClass;
        mxCon.innerHTML = data.con;
        mxCon.className = "rk-stat-desc " + data.conClass;
        mxSave.innerHTML = data.save;
        mxHydra.innerHTML = data.hydra;

        // Reset klas SVG
        svgSensorOut.classList.remove('rk-svg-active-green');
        svgLineOut.classList.remove('rk-svg-active-line');
        svgThermostat1.classList.remove('rk-svg-active');
        svgThermostat2.classList.remove('rk-svg-active');
        svgLine2.classList.remove('rk-svg-active-line');
        svgLine3.classList.remove('rk-svg-active-line');
        svgLine1.classList.add('rk-svg-active-line');

        // Bezpieczna logika wizualizacji SVG (bez operatorów &&)
        if (safeLevel === "1") {
            // Tylko Pogodówka
            svgSensorOut.classList.add('rk-svg-active-green');
            svgLineOut.classList.add('rk-svg-active-line');
        } else {
            if (safeLevel === "2") {
                // Tylko Termostaty
                svgThermostat1.classList.add('rk-svg-active');
                svgThermostat2.classList.add('rk-svg-active');
                svgLine2.classList.add('rk-svg-active-line');
                svgLine3.classList.add('rk-svg-active-line');
            } else {
                if (safeLevel === "3") {
                    // Hybryda (Wszystko aktywne)
                    svgSensorOut.classList.add('rk-svg-active-green');
                    svgLineOut.classList.add('rk-svg-active-line');
                    svgThermostat1.classList.add('rk-svg-active');
                    svgThermostat2.classList.add('rk-svg-active');
                    svgLine2.classList.add('rk-svg-active-line');
                    svgLine3.classList.add('rk-svg-active-line');
                }
            }
        }
    }

    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Obsługa klas aktywnych na przyciskach
            btns.forEach(function(b) {
                b.classList.remove('is-active');
            });
            this.classList.add('is-active');
            
            // Pobranie i aktualizacja poziomu
            const lvl = this.getAttribute('data-level');
            updateDashboard(lvl);
        });
    });

    // Inicjalizacja stanu bazowego
    updateDashboard("0");
});
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-blue: #0284c7;
    --rk-err-red: #ef4444;
    --rk-err-red-light: #fef2f2;
    --rk-err-red-border: #fca5a5;
    --rk-err-gray: #64748b;
    --rk-err-gray-light: #f8fafc;
    --rk-err-border: #e2e8f0;
    --rk-err-bg: #ffffff;
}

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

.rk-errors-header {
    padding: 40px 40px 30px;
    background: var(--rk-err-gray-light);
    border-bottom: 1px solid var(--rk-err-border);
    position: relative;
}

.rk-errors-header::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: var(--rk-err-red);
}

.rk-errors-header h2 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-err-dark);
    margin: 0 0 10px 0;
    line-height: 1.3;
}

.rk-errors-header p {
    font-size: 16px;
    color: var(--rk-err-gray);
    margin: 0;
    line-height: 1.6;
}

.rk-errors-list {
    padding: 30px 40px 40px;
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-error-item {
    background: var(--rk-err-bg);
    border: 2px solid var(--rk-err-border);
    border-radius: 16px;
    transition: all 0.3s ease;
}

.rk-error-item.is-open {
    border-color: var(--rk-err-red);
    box-shadow: 0 10px 20px -5px rgba(239, 68, 68, 0.15);
}

.rk-error-trigger {
    width: 100%;
    padding: 24px;
    background: transparent;
    border: none;
    display: flex;
    align-items: center;
    gap: 20px;
    cursor: pointer;
    text-align: left;
}

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

.rk-error-item.is-open .rk-error-icon {
    background: var(--rk-err-red-light);
    color: var(--rk-err-red);
    transform: scale(1.05);
}

.rk-error-title {
    flex: 1;
}

.rk-error-title h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-err-dark);
    margin: 0;
    line-height: 1.4;
    transition: color 0.3s ease;
}

.rk-error-item.is-open .rk-error-title h3 {
    color: var(--rk-err-red);
}

.rk-error-chevron {
    flex-shrink: 0;
    color: var(--rk-err-gray);
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-error-item.is-open .rk-error-chevron {
    transform: rotate(180deg);
    color: var(--rk-err-red);
}

.rk-error-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-error-content-inner {
    padding: 0 24px 24px 84px; /* Wcięcie odpowiadające ikonie */
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-err-gray);
}

.rk-error-content-inner strong {
    color: var(--rk-err-dark);
    font-weight: 700;
}

.rk-error-content-inner a {
    color: var(--rk-err-blue);
    text-decoration: none;
    font-weight: 600;
    border-bottom: 1px dashed var(--rk-err-blue);
    transition: border-color 0.2s, color 0.2s;
}

.rk-error-content-inner a:hover {
    color: var(--rk-err-dark);
    border-bottom-color: var(--rk-err-dark);
}

/* Responsywność Mobile (Zachowanie układu pionowego) */
@media (max-width: 768px) {
    .rk-errors-container { margin: 20px auto; border-radius: 16px; }
    .rk-errors-header { padding: 30px 20px; }
    .rk-errors-list { padding: 20px; }
    
    .rk-error-trigger { padding: 20px; gap: 15px; align-items: flex-start; }
    .rk-error-icon { width: 36px; height: 36px; border-radius: 10px; }
    .rk-error-icon svg { width: 20px; height: 20px; }
    
    .rk-error-title h3 { font-size: 16px; padding-top: 6px; }
    .rk-error-chevron { padding-top: 6px; }
    
    .rk-error-content-inner { padding: 0 20px 20px 20px; } /* Usunięcie wcięcia na telefonach */
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Najczęściej popełniane błędy przy doborze i montażu sterowników",
    "description": "Zestawienie najgroźniejszych błędów instalacyjnych automatyki grzewczej. Sprawdź, jak błędna kalibracja algorytmów i złe rozmieszczenie czujników niszczy posadzki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-bledy",
    "name": "Katalog błędów instalacyjnych automatyki grzewczej",
    "description": "Techniczne zestawienie konsekwencji nieprawidłowego montażu komponentów automatyki ogrzewania płaszczyznowego, wpływających na efektywność układu i zużycie energii.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "montaż termostatu pokojowego",
      "uszkodzony czujnik podłogowy",
      "siłowniki normalnie zamknięte NC",
      "bezwładność cieplna podłogówki",
      "taktowanie pompy ciepła"
    ],
    "measurementTechnique": "Analiza usterek i błędów konfiguracyjnych w instalacjach płaszczyznowych oraz ich bezpośredni wpływ na parametr COP i amplitudę temperatur.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Fałszowanie odczytów przez złe umiejscowienie termostatu ściennego.",
        "Brak peszla ochronnego uniemożliwiający serwis czujnika NTC w wylewce.",
        "Konflikt logiczny przekaźników i siłowników na rozdzielaczu.",
        "Zbyt głębokie obniżenia dobowe wymuszające pracę na nieefektywnych parametrach."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-bledy",
    "name": "Moduł Diagnostyki Błędów Wykonawczych",
    "description": "Interaktywny interfejs pozwalający użytkownikowi na identyfikację błędów konfiguracyjnych poprzez mechaniczną interakcję z modułami diagnostycznymi.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-errors-container" id="rk-errors-app">
    <div class="rk-errors-header">
        <h2>Najczęściej popełniane błędy przy doborze i montażu sterowników</h2>
        <p>Poznaj powtarzalne potknięcia instalatorów, które drastycznie podnoszą koszty eksploatacji i prowadzą do uszkodzeń systemu grzewczego. Wybierz błąd, aby poznać jego skutki.</p>
    </div>

    <div class="rk-errors-list" id="rkErrorList">
        
        <div class="rk-error-item">
            <button class="rk-error-trigger" aria-expanded="false">
                <div class="rk-error-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><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-error-title">
                    <h3>Montaż termostatu pokojowego w niewłaściwym miejscu</h3>
                </div>
                <div class="rk-error-chevron">
                    <svg width="24" height="24" 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-error-content">
                <div class="rk-error-content-inner">
                    Umieszczenie sterownika na ścianie zewnętrznej (wychłodzonej), w bezpośrednim zasięgu promieni słonecznych lub nad źródłem ciepła (np. nad lodówką lub obok telewizora). <strong>Skutkuje to fałszowaniem odczytów</strong> i wyłączaniem ogrzewania w całym domu, mimo drastycznego niedogrzania pozostałych stref. Zobacz inne <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">najczęstsze błędy przy montażu</a>.
                </div>
            </div>
        </div>

        <div class="rk-error-item">
            <button class="rk-error-trigger" aria-expanded="false">
                <div class="rk-error-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="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-error-title">
                    <h3>Brak peszli ochronnych dla czujników podłogowych</h3>
                </div>
                <div class="rk-error-chevron">
                    <svg width="24" height="24" 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-error-content">
                <div class="rk-error-content-inner">
                    Zabetonowanie <a href="https://projekt-ogrzewania.pl/czujnik-podlogowy/">czujnika podłogowego</a> NTC bezpośrednio w jastrychu to błąd krytyczny. W przypadku awarii elementu półprzewodnikowego wymiana czujnika jest niemożliwa bez kucia wylewki i całkowitego zniszczenia posadzki. Czujnik musi być zawsze wprowadzony w gładki peszel zakończony specjalną mosiężną zaślepką, ułatwiającą jego bezinwazyjną wymianę.
                </div>
            </div>
        </div>

        <div class="rk-error-item">
            <button class="rk-error-trigger" aria-expanded="false">
                <div class="rk-error-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="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg>
                </div>
                <div class="rk-error-title">
                    <h3>Łączenie niedopasowanych siłowników (NC/NO) z listwą</h3>
                </div>
                <div class="rk-error-chevron">
                    <svg width="24" height="24" 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-error-content">
                <div class="rk-error-content-inner">
                    Montaż <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłowników termoelektrycznych</a> normalnie otwartych (NO) do listwy skonfigurowanej pod siłowniki normalnie zamknięte (NC). <strong>Powoduje to całkowite odwrócenie logiki systemu</strong> – gdy termostat wykryje, że pokój wymaga grzania, listwa odcina przepływ, a podłoga zaczyna intensywnie stygnąć.
                </div>
            </div>
        </div>

        <div class="rk-error-item">
            <button class="rk-error-trigger" aria-expanded="false">
                <div class="rk-error-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                </div>
                <div class="rk-error-title">
                    <h3>Harmonogramy dobowe o zbyt dużej amplitudzie</h3>
                </div>
                <div class="rk-error-chevron">
                    <svg width="24" height="24" 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-error-content">
                <div class="rk-error-content-inner">
                    Programowanie obniżeń temperatury o 3°C do 4°C na czas 8-godzinnej obecności w pracy mija się z celem. Przez <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładność cieplną</a>, podłoga wychłodzi się dopiero pod koniec nieobecności, a ponowne jej nagrzanie zajmie kolejne 5-8 godzin. Zmusza to pompę ciepła do pracy na skrajnie wysokich parametrach zasilania, co <strong>drastycznie obniża jej sprawność (COP)</strong>. Maksymalne zalecane obniżenie temperatur przy podłogówce wynosi od 1,0°C do 1,5°C.
                </div>
            </div>
        </div>

    </div>
</div>

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

    errorItems.forEach(function(item) {
        const triggerBtn = item.querySelector('.rk-error-trigger');
        const contentDiv = item.querySelector('.rk-error-content');

        triggerBtn.addEventListener('click', function() {
            // Czysta, bezpieczna logika (bez operatorów '&&')
            
            // Jeśli aktualnie kliknięty element jest otwarty - zamknij go
            if (item.classList.contains('is-open')) {
                item.classList.remove('is-open');
                triggerBtn.setAttribute('aria-expanded', 'false');
                contentDiv.style.maxHeight = null;
            } else {
                // Najpierw zwiń wszystkie inne rozwinięte elementy
                errorItems.forEach(function(otherItem) {
                    if (otherItem !== item) {
                        if (otherItem.classList.contains('is-open')) {
                            otherItem.classList.remove('is-open');
                            otherItem.querySelector('.rk-error-trigger').setAttribute('aria-expanded', 'false');
                            otherItem.querySelector('.rk-error-content').style.maxHeight = null;
                        }
                    }
                });
                
                // Następnie rozwiń kliknięty element
                item.classList.add('is-open');
                triggerBtn.setAttribute('aria-expanded', 'true');
                contentDiv.style.maxHeight = contentDiv.scrollHeight + "px";
            }
        });
    });
});
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-blue: #0284c7;
    --rk-case-blue-light: #f0f9ff;
    --rk-case-gray: #475569;
    --rk-case-gray-light: #f8fafc;
    --rk-case-bg: #ffffff;
    --rk-case-border: #e2e8f0;
    --rk-case-accent: #38bdf8;
}

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

.rk-case-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-case-dark) 0%, #1e293b 100%);
    color: #ffffff;
    position: relative;
}

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

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

.rk-case-header-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(56, 189, 248, 0.2);
    color: var(--rk-case-accent);
    padding: 6px 14px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(56, 189, 248, 0.3);
}

.rk-case-body {
    padding: 40px 50px;
    background: var(--rk-case-gray-light);
}

/* Oś czasu konsultacji (Timeline) */
.rk-case-timeline {
    display: flex;
    flex-direction: column;
    gap: 30px;
    position: relative;
}

.rk-case-timeline::before {
    content: '';
    position: absolute;
    top: 20px;
    bottom: 20px;
    left: 28px;
    width: 2px;
    background: var(--rk-case-border);
    z-index: 1;
}

/* Pojedynczy blok dialogu */
.rk-case-block {
    display: flex;
    gap: 20px;
    position: relative;
    z-index: 2;
}

/* Awatary */
.rk-case-avatar {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-weight: 900;
    font-size: 20px;
    border: 4px solid var(--rk-case-gray-light);
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.rk-avatar-client {
    background: #ffffff;
    color: var(--rk-case-gray);
    border-color: #ffffff;
}

.rk-avatar-expert {
    background: var(--rk-case-blue);
    color: #ffffff;
}

/* Dymki (Bubbles) */
.rk-case-bubble {
    flex: 1;
    background: var(--rk-case-bg);
    padding: 25px 30px;
    border-radius: 0 20px 20px 20px;
    border: 1px solid var(--rk-case-border);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-case-bubble-expert {
    background: var(--rk-case-blue-light);
    border-color: rgba(2, 132, 199, 0.2);
    border-radius: 20px 0 20px 20px;
}

.rk-case-meta {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-case-gray);
    margin-bottom: 10px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-case-meta span {
    color: var(--rk-case-blue);
}

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

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

/* Interaktywny przycisk odsłaniania */
.rk-case-reveal-wrapper {
    margin-top: 15px;
}

.rk-case-reveal-btn {
    background: var(--rk-case-dark);
    color: #ffffff;
    border: none;
    padding: 12px 24px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 8px;
    transition: all 0.3s;
    box-shadow: 0 4px 10px rgba(15, 23, 42, 0.2);
}

.rk-case-reveal-btn:hover {
    background: var(--rk-case-blue);
    transform: translateY(-2px);
}

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

.rk-case-reveal-btn.is-opened svg {
    transform: rotate(180deg);
}

/* Ukryta odpowiedź eksperta */
.rk-case-hidden-response {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    transition: max-height 0.5s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.5s ease;
}

.rk-case-hidden-response.is-visible {
    opacity: 1;
}

@media (max-width: 768px) {
    .rk-case-container { margin: 20px auto; border-radius: 16px; }
    .rk-case-header, .rk-case-body { padding: 30px 20px; }
    .rk-case-header h2 { font-size: 24px; }
    
    .rk-case-timeline::before { left: 24px; }
    .rk-case-block { gap: 15px; }
    
    .rk-case-avatar { width: 48px; height: 48px; font-size: 16px; border-width: 3px; }
    .rk-case-bubble { padding: 20px; border-radius: 16px; }
    .rk-case-bubble-expert { border-radius: 16px; } /* Na mobile unifikujemy rogi dymków */
    
    .rk-case-text { font-size: 14px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Studium przypadku: Agnieszka z Warszawy pyta, czy warto oszczędzać na sterownikach",
    "description": "Zapis autentycznej konsultacji inżynieryjnej. Rozwiewamy mity instalatorów dotyczące oszczędzania na automatyce strefowej przy pompie ciepła w nowo budowanym domu.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2025-12-29",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-casestudy",
    "name": "Analiza merytoryczna doradztwa technicznego w ogrzewaniu płaszczyznowym",
    "description": "Zestawienie twardych argumentów inżynieryjnych przeciwko pozornym oszczędnościom inwestycyjnym na etapie doboru automatyki źródła ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "czy pompa ciepła poradzi sobie bez sterowników",
      "krzywa grzewcza a zyski słoneczne",
      "niezależne termostaty warszawa",
      "błędy instalatorów pomp ciepła",
      "projekt instalacji ogrzewania podłogowego"
    ],
    "measurementTechnique": "Jakościowa ocena wpływu pasywnych zysków bytowych na efektywność systemu sterowanego wyłącznie krzywą pogodową względem logiki strefowej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Oparcie sterowania wyłącznie na czujniku zewnętrznym skutkuje przegrzewaniem wnętrz pod wpływem słońca i sprzętów domowych.",
        "Zjawisko przegrzewania stanowi bezpośrednie ryzyko dla stabilności wymiarowej posadzek winylowych i warstwowych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-casestudy",
    "name": "Dziennik Konsultacji Inżynieryjnej",
    "description": "Interaktywny interfejs typu 'Timeline' przeprowadzający użytkownika przez proces zbijania mitów wykonawczych i diagnozy problemów projektowych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-case-container" id="rk-case-app">
    <div class="rk-case-header">
        <div class="rk-case-header-badge">
            <svg width="14" height="14" 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>
            Studium Przypadku
        </div>
        <h2>Agnieszka z Warszawy pyta, czy warto oszczędzać na sterownikach</h2>
        <p>Codziennie otrzymuję podobne wiadomości. Inwestorzy są celowo wprowadzani w błąd przez instalatorów, którzy szukają łatwiejszego montażu kosztem Twojego portfela. Zobacz zapis autentycznej konsultacji.</p>
    </div>

    <div class="rk-case-body">
        <div class="rk-case-timeline">
            
            <div class="rk-case-block">
                <div class="rk-case-avatar rk-avatar-client">
                    <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="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>
                </div>
                <div class="rk-case-bubble">
                    <div class="rk-case-meta">Inwestorka <span>Agnieszka</span> (Dom 120m², Warszawa)</div>
                    <p class="rk-case-text">
                        Panie Robercie, budujemy dom. Nasz instalator stwierdził, że skoro mamy pompę ciepła, to ona "sama sobie poradzi" krzywą grzewczą. Twierdzi, że montowanie osobnych termostatów do salonu i sypialni to zbędny wydatek rzędu 3000 zł i tylko psuje sprawność pompy. Czy faktycznie powinnam z tego zrezygnować na rzecz oszczędności?
                    </p>
                    
                    <div class="rk-case-reveal-wrapper">
                        <button class="rk-case-reveal-btn" id="btnReveal1" aria-expanded="false">
                            Pokaż odpowiedź eksperta
                            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                        </button>
                    </div>
                </div>
            </div>

            <div class="rk-case-hidden-response" id="response1">
                <div class="rk-case-block">
                    <div class="rk-case-avatar rk-avatar-expert">RK</div>
                    <div class="rk-case-bubble rk-case-bubble-expert">
                        <div class="rk-case-meta">Specjalista HVAC <span>Robert Kucharski</span></div>
                        <p class="rk-case-text" style="margin-bottom: 15px;">
                            Pani Agnieszko, instalator proponuje rozwiązanie najwygodniejsze dla niego, nie dla Pani. <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">Pompa ciepła</a> oparta wyłącznie na czujniku pogodowym wie tylko to, jaka jest temperatura na zewnątrz. Nie ma pojęcia, co dzieje się w budynku.
                        </p>
                        <p class="rk-case-text" style="margin-bottom: 15px;">
                            Jeśli w słoneczny, zimowy dzień do salonu przez duże okna wpadnie słońce, zaczną działać <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-a-pasywne-zyski-ciepla/">pasywne zyski ciepła</a>. Temperatura w salonie skoczy do 25°C, a pompa nadal będzie tłoczyć ciepłą wodę do podłogi, bo na dworze jest mróz. Efekt? Gigantyczne przegrzanie wnętrza, marnowanie drogiego prądu, a w przypadku <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/">paneli winylowych</a> – ryzyko rozeschnięcia się zamków od temperatury posadzki przekraczającej 27°C.
                        </p>
                        <p class="rk-case-text">
                            Te 3000 zł to nie "zbędny wydatek", to jednorazowa inwestycja, która zapobiegnie wyrzucaniu w błoto setek złotych co sezon. Solidny <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">projekt instalacji</a> musi zakładać automatykę strefową, połączoną przez bufor lub sprzęgło, aby odsprzęgnąć hydraulicznie pompę od zamykających się pętli.
                        </p>
                    </div>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btnReveal = document.getElementById('btnReveal1');
    const responsePanel = document.getElementById('response1');

    btnReveal.addEventListener('click', function() {
        // Bezpieczne przełączanie bez użycia operatorów logicznych &&
        
        let isExpanded = btnReveal.getAttribute('aria-expanded');

        if (isExpanded === 'false') {
            // Otwieranie
            btnReveal.setAttribute('aria-expanded', 'true');
            btnReveal.classList.add('is-opened');
            responsePanel.classList.add('is-visible');
            
            // Dynamiczne obliczenie wysokości dla animacji max-height
            let scrollHeight = responsePanel.scrollHeight;
            responsePanel.style.maxHeight = scrollHeight + "px";
            
            // Zmiana tekstu
            btnReveal.innerHTML = `Ukryj odpowiedź <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>`;
            
        } else {
            // Zamykanie
            btnReveal.setAttribute('aria-expanded', 'false');
            btnReveal.classList.remove('is-opened');
            responsePanel.classList.remove('is-visible');
            
            responsePanel.style.maxHeight = "0px";
            
            // Zmiana tekstu
            btnReveal.innerHTML = `Pokaż odpowiedź eksperta <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>`;
        }
    });
});
</script>



<style>
:root {
    --rk-eeat-dark: #0f172a;
    --rk-eeat-card: #1e293b;
    --rk-eeat-blue: #0284c7;
    --rk-eeat-text: #cbd5e1;
    --rk-eeat-bg: #ffffff;
    --rk-eeat-border: #e2e8f0;
    --rk-eeat-gold: #eab308;
}

.rk-eeat-container {
    max-width: 900px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-eeat-bg);
    border-radius: 0;
    border: 2px solid var(--rk-eeat-dark);
}

.rk-eeat-header {
    padding: 30px 40px;
    background: var(--rk-eeat-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-eeat-blue);
}

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

.rk-eeat-body {
    display: flex;
    padding: 0;
}

/* Sidebar z autorem */
.rk-eeat-sidebar {
    width: 280px;
    background: var(--rk-eeat-card);
    padding: 40px 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    border-right: 1px solid var(--rk-eeat-border);
}

.rk-eeat-photo {
    width: 140px;
    height: 140px;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid var(--rk-eeat-blue);
    margin-bottom: 20px;
}

.rk-eeat-name {
    font-size: 20px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 5px 0;
}

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

.rk-eeat-socials {
    display: flex;
    gap: 15px;
    margin-top: 15px;
}

.rk-eeat-social-link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    background: #334155;
    color: #ffffff;
    border-radius: 8px;
    text-decoration: none;
}

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

/* Panel główny */
.rk-eeat-content {
    flex: 1;
    background: var(--rk-eeat-bg);
    display: flex;
    flex-direction: column;
}

.rk-eeat-tabs {
    display: flex;
    background: #f8fafc;
    border-bottom: 1px solid var(--rk-eeat-border);
}

.rk-eeat-tab-btn {
    flex: 1;
    padding: 20px;
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    font-size: 14px;
    font-weight: 800;
    color: #64748b;
    cursor: pointer;
    text-transform: uppercase;
}

.rk-eeat-tab-btn.is-active {
    color: var(--rk-eeat-dark);
    border-bottom-color: var(--rk-eeat-blue);
    background: var(--rk-eeat-bg);
}

.rk-eeat-tab-panels {
    padding: 40px;
}

.rk-eeat-panel {
    display: none;
}

.rk-eeat-panel.is-active {
    display: block;
}

/* Cytat / Treść */
.rk-eeat-quote-box {
    position: relative;
}

.rk-eeat-quote-icon {
    position: absolute;
    top: -20px;
    left: -20px;
    width: 60px;
    height: 60px;
    color: #f1f5f9;
    z-index: 1;
}

.rk-eeat-quote-text {
    position: relative;
    z-index: 2;
    font-size: 20px;
    font-weight: 800;
    line-height: 1.5;
    color: var(--rk-eeat-dark);
    margin: 0 0 20px 0;
    font-style: italic;
}

.rk-eeat-text-norm {
    font-size: 15px;
    color: #475569;
    line-height: 1.7;
    margin: 0 0 15px 0;
}

.rk-eeat-text-norm a {
    color: var(--rk-eeat-blue);
    font-weight: 700;
    text-decoration: underline;
}

/* Listy E-E-A-T - Zoptymalizowany Layout i Typografia */
.rk-eeat-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.rk-eeat-list li {
    display: flex;
    align-items: flex-start;
    gap: 15px;
    margin-bottom: 15px;
}

.rk-eeat-list svg {
    flex-shrink: 0;
    color: var(--rk-eeat-blue);
    margin-top: 2px;
}

.rk-eeat-list-text {
    font-size: 15.5px;
    color: var(--rk-eeat-dark);
    font-weight: 500;
    line-height: 1.6;
}

.rk-eeat-list-text a {
    color: var(--rk-eeat-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-eeat-blue);
    transition: border-color 0.2s, color 0.2s;
}

.rk-eeat-list-text a:hover {
    color: var(--rk-eeat-dark);
    border-bottom-color: var(--rk-eeat-dark);
}

@media (max-width: 768px) {
    .rk-eeat-container { margin: 20px auto; border-radius: 0; border-width: 1px; }
    .rk-eeat-header { padding: 20px; }
    .rk-eeat-header h2 { font-size: 22px; }
    .rk-eeat-body { flex-direction: column; }
    .rk-eeat-sidebar { width: 100%; border-right: none; border-bottom: 1px solid var(--rk-eeat-border); padding: 30px 20px; }
    .rk-eeat-tabs { flex-direction: column; }
    .rk-eeat-tab-btn { border-bottom: none; border-left: 4px solid transparent; text-align: left; padding: 15px 20px; border-top: 1px solid var(--rk-eeat-border); }
    .rk-eeat-tab-btn.is-active { border-left-color: var(--rk-eeat-blue); }
    .rk-eeat-tab-panels { padding: 25px 20px; }
    .rk-eeat-quote-text { font-size: 18px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-eeat",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Zdaniem eksperta: Robert Kucharski o opłacalności sterowników strefowych",
    "description": "Podsumowanie inżynieryjne opłacalności systemów automatyki strefowej. Analiza zysków i weryfikacja kompetencji eksperckich (E-E-A-T).",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "CEO & Specjalista HVAC",
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-eeat",
    "name": "Kwalifikacje i macierz autorytetu autora (E-E-A-T)",
    "description": "Zbiór danych weryfikujących kompetencje inżynieryjne autora w zakresie systemów grzewczych, OZC i automatyki.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowanie instalacji wodnych podłogówka",
      "audyt OZC ogrzewania",
      "robert kucharski specjalista hvac",
      "weryfikacja kompetencji instalatora",
      "projekt ogrzewania z pompą ciepła"
    ],
    "measurementTechnique": "Jakościowa ocena autorytetu domeny na podstawie ponad 1000 zrealizowanych projektów instalacji płaszczyznowych i dziesiątek tysięcy unikalnych czytelników.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Ponad 1000 pomyślnie zrealizowanych i zweryfikowanych projektów instalacji ogrzewania podłogowego.",
        "Kompleksowe wykonywanie obiektywnych audytów cieplnych OZC zgodnych z aktualnymi polskimi normami budowlanymi."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-eeat",
    "name": "Panel Weryfikacji Autorytetu (E-E-A-T)",
    "description": "Interaktywny interfejs profilu eksperta, umożliwiający weryfikację twardych danych kompetencyjnych i autorytetu autora publikacji.",
    "applicationCategory": "ReferenceApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-eeat-container" id="rk-eeat-app">
    <div class="rk-eeat-header">
        <h2>Zdaniem eksperta: Robert Kucharski o opłacalności sterowników strefowych</h2>
    </div>

    <div class="rk-eeat-body">
        
        <div class="rk-eeat-sidebar">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Specjalista HVAC" class="rk-eeat-photo">
            <h3 class="rk-eeat-name">Robert Kucharski</h3>
            <div class="rk-eeat-role">Specjalista HVAC / CEO</div>
            
            <div class="rk-eeat-socials">
                <a href="https://www.facebook.com/projektogrzewaniapl/" class="rk-eeat-social-link" target="_blank" rel="noopener noreferrer" aria-label="Facebook Projekt Ogrzewania">
                    <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="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/" class="rk-eeat-social-link" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn Robert Kucharski">
                    <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="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle></svg>
                </a>
                <a href="https://x.com/Projekt_HVAC" class="rk-eeat-social-link" target="_blank" rel="noopener noreferrer" aria-label="X Projekt HVAC">
                    <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="M4 4l11.733 16h4.267l-11.733 -16z"></path><path d="M4 20l6.768 -6.768m2.46 -2.46l6.772 -6.772"></path></svg>
                </a>
            </div>
        </div>

        <div class="rk-eeat-content">
            
            <div class="rk-eeat-tabs" id="rkTabsContainer">
                <button class="rk-eeat-tab-btn is-active" data-target="panel-quote">Konkluzja Artykułu</button>
                <button class="rk-eeat-tab-btn" data-target="panel-cred">Autorytet i E-E-A-T</button>
            </div>

            <div class="rk-eeat-tab-panels">
                
                <div class="rk-eeat-panel is-active" id="panel-quote">
                    <div class="rk-eeat-quote-box">
                        <svg class="rk-eeat-quote-icon" viewBox="0 0 24 24" fill="currentColor"><path d="M14.017 21v-7.391c0-5.704 3.731-9.57 8.983-10.609l.995 2.151c-2.432.917-3.995 3.638-3.995 5.849h4v10h-9.983zm-14.017 0v-7.391c0-5.704 3.748-9.57 9-10.609l.996 2.151c-2.433.917-3.996 3.638-3.996 5.849h3.983v10h-9.983z"/></svg>
                        <p class="rk-eeat-quote-text">
                            Ogrzewanie podłogowe bez automatyki strefowej to jak luksusowy samochód z potężnym silnikiem, ale pozbawiony kierownicy. Wytwarza ogromną moc, nad którą nie masz żadnej kontroli.
                        </p>
                        <p class="rk-eeat-text-norm">
                            W moich wyliczeniach technicznych jednoznacznie widać, że opieranie się wyłącznie na krzywej grzewczej pompy ciepła to droga do przegrzewania wnętrz. Brak precyzyjnych sterowników drastycznie obniża COP układu i niszczy portfel inwestora. Dobra automatyka to nie koszt, to fundament <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">kalkulacji strat ciepła</a>.
                        </p>
                    </div>
                </div>

                <div class="rk-eeat-panel" id="panel-cred">
                    <p class="rk-eeat-text-norm" style="margin-bottom: 25px;">
                        Treści techniczne na portalu są wynikiem twardej praktyki inżynieryjnej. Unikam akademickich teorii na rzecz namacalnych dowodów projektowych.
                    </p>
                    <ul class="rk-eeat-list">
                        <li>
                            <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>
                            <span class="rk-eeat-list-text">Ponad 1000 sprojektowanych i zoptymalizowanych instalacji płaszczyznowych w domach jednorodzinnych.</span>
                        </li>
                        <li>
                            <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>
                            <span class="rk-eeat-list-text">Twórca autorskich narzędzi do <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">obliczeń OZC</a> i audytów hydraulicznych.</span>
                        </li>
                        <li>
                            <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>
                            <span class="rk-eeat-list-text">Lider merytoryczny wspierający miesięcznie dziesiątki tysięcy inwestorów szukających rozwiązań bez ściemy.</span>
                        </li>
                    </ul>
                </div>

            </div>
        </div>

    </div>
</div>

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

    tabBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Twarde, statyczne przełączanie tabów. Brak animacji i brak &&
            const targetId = this.getAttribute('data-target');
            
            // Czyszczenie klas aktywnych
            tabBtns.forEach(function(b) {
                b.classList.remove('is-active');
            });
            
            panels.forEach(function(p) {
                p.classList.remove('is-active');
            });

            // Aktywacja wybranego
            this.classList.add('is-active');
            
            const activePanel = document.getElementById(targetId);
            if (activePanel) {
                activePanel.classList.add('is-active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-blue: #0284c7;
    --rk-faq-blue-light: #f0f9ff;
    --rk-faq-gray-text: #475569;
    --rk-faq-border: #e2e8f0;
    --rk-faq-bg: #ffffff;
    --rk-faq-hover: #f8fafc;
}

.rk-faq-container {
    max-width: 900px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: transparent;
}

.rk-faq-header {
    margin-bottom: 30px;
    padding-left: 20px;
    border-left: 5px solid var(--rk-faq-blue);
}

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

.rk-faq-header p {
    font-size: 16px;
    color: var(--rk-faq-gray-text);
    margin: 0;
}

.rk-faq-list {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.rk-faq-item {
    background: var(--rk-faq-bg);
    border: 1px solid var(--rk-faq-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.3s ease;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.02);
}

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

.rk-faq-question {
    width: 100%;
    text-align: left;
    padding: 24px 30px;
    background: transparent;
    border: none;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
    transition: background-color 0.3s ease;
}

.rk-faq-question:hover {
    background-color: var(--rk-faq-hover);
}

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

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

.rk-faq-icon {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-faq-blue-light);
    color: var(--rk-faq-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.3s;
}

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

.rk-faq-answer {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    background: var(--rk-faq-bg);
}

.rk-faq-answer-inner {
    padding: 0 30px 30px 30px;
    font-size: 15px;
    color: var(--rk-faq-gray-text);
    line-height: 1.7;
    border-top: 1px solid transparent;
}

.rk-faq-item.active .rk-faq-answer-inner {
    border-top-color: var(--rk-faq-blue-light);
    padding-top: 20px;
    margin-top: 5px;
}

.rk-faq-answer-inner a {
    color: var(--rk-faq-blue);
    text-decoration: none;
    font-weight: 600;
    border-bottom: 1px dashed var(--rk-faq-blue);
    transition: all 0.2s;
}

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

/* Elementy uatrakcyjniające odpowiedź */
.rk-faq-highlight {
    display: inline-block;
    background: var(--rk-faq-blue-light);
    padding: 2px 8px;
    border-radius: 6px;
    color: var(--rk-faq-blue);
    font-weight: 700;
}

@media (max-width: 768px) {
    .rk-faq-container { margin: 20px auto; }
    .rk-faq-question { padding: 20px; }
    .rk-faq-answer-inner { padding: 0 20px 20px 20px; }
    .rk-faq-question h3 { font-size: 16px; }
    .rk-faq-header h2 { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "FAQ – Najważniejsze pytania dotyczące automatyki podłogówki",
    "description": "Błyskawiczne odpowiedzi na najczęstsze pytania inwestorów dotyczące sterowników strefowych, siłowników NC/NO oraz bezprzewodowego sterowania instalacją.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy sterowniki podłogówki naprawdę zmniejszają rachunki za ogrzewanie?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, automatyka strefowa eliminuje przegrzewanie pomieszczeń spowodowane zyskami ciepła (nasłonecznienie, urządzenia, rekuperacja), co w polskich warunkach klimatycznych pozwala zmniejszyć roczne zużycie energii na cele grzewcze o 15% do 25%."
        }
      },
      {
        "@type": "Question",
        "name": "Czy w każdym pomieszczeniu muszę instalować osobny termostat?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie jest to bezwzględnie wymagane, ale montaż oddzielnych sterowników w każdej strefie (np. osobno łazienka, sypialnia, salon) zapewnia najwyższy komfort i maksymalne oszczędności eksploatacyjne, dopasowując temperaturę do funkcji danego pokoju."
        }
      },
      {
        "@type": "Question",
        "name": "Czy pompa ciepła potrzebuje sterowników pokojowych do podłogówki?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, ponieważ sama krzywa grzewcza pompy ciepła reaguje wyłącznie na temperaturę zewnętrzną i nie wie, co dzieje się wewnątrz budynku (np. zyski od kominka czy nasłonecznienia salonu), co bez automatyki strefowej prowadzi do przegrzewania wnętrz."
        }
      },
      {
        "@type": "Question",
        "name": "Czym różnią się siłowniki termoelektryczne NC od NO?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Siłowniki typu NC (Normalnie Zamknięte) bez dopływu prądu blokują przepływ wody w pętli, natomiast siłowniki NO (Normalnie Otwarte) w stanie bezprądowym pozostają w pełni otwarte; w budownictwie mieszkaniowym standardem są bezpieczniejsze siłowniki NC."
        }
      },
      {
        "@type": "Question",
        "name": "Czy można zamontować sterowanie bezprzewodowe po wykonaniu tynków i wylewek?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, systemy bezprzewodowe oparte o protokół komunikacyjny ZigBee lub częstotliwość 868 MHz zostały zaprojektowane specjalnie do montażu w wykończonych budynkach, eliminując konieczność kucia ścian pod przewody sterujące."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-faq",
    "name": "Interaktywny Akordeon Bazy Wiedzy HVAC",
    "description": "Aplikacyjny interfejs użytkownika służący do szybkiego wyszukiwania i rozwijania ukrytych technicznych odpowiedzi dotyczących systemów ogrzewania płaszczyznowego.",
    "applicationCategory": "BrowserApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-faq-keywords",
    "name": "Dane optymalizacyjne FAQ",
    "description": "Niewidoczna warstwa semantyczna łącząca encje i słowa kluczowe wykorzystywane w algorytmach sterowania.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "siłowniki termoelektryczne NC i NO",
      "oszczędności na ogrzewaniu podłogowym",
      "bezprzewodowe sterowanie podłogówką",
      "termostat pokojowy a pompa ciepła",
      "termostaty w każdym pokoju"
    ],
    "measurementTechnique": "Algorytmiczne dopasowanie intencji wyszukiwania (Search Intent) do krótkich, normatywnych odpowiedzi inżynierskich.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Definicja różnic siłowników na rozdzielaczach",
        "Zależności krzywej grzewczej i zysków pasywnych"
      ]
    }
  }
]
</script>

<div class="rk-faq-container" id="faq-app-section">
    <div class="rk-faq-header">
        <h2>FAQ – Najważniejsze pytania dotyczące automatyki podłogówki</h2>
        <p>Szybkie odpowiedzi na dylematy inwestycyjne bez lania wody.</p>
    </div>

    <div class="rk-faq-list" id="rkFaqAccordion">
        
        <div class="rk-faq-item">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>Czy sterowniki podłogówki naprawdę zmniejszają rachunki za ogrzewanie?</h3>
                <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"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Tak, automatyka strefowa eliminuje przegrzewanie pomieszczeń spowodowane zyskami ciepła (nasłonecznienie, urządzenia, <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/">rekuperacja</a>), co w polskich warunkach klimatycznych pozwala zmniejszyć roczne zużycie energii na cele grzewcze o <span class="rk-faq-highlight">15% do 25%</span>.
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>Czy w każdym pomieszczeniu muszę instalować osobny termostat?</h3>
                <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"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Nie jest to bezwzględnie wymagane, ale montaż oddzielnych sterowników w każdej strefie (np. osobno łazienka, sypialnia, salon) zapewnia najwyższy komfort i maksymalne oszczędności eksploatacyjne, precyzyjnie dopasowując temperaturę do specyficznej funkcji danego pokoju.
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>Czy pompa ciepła potrzebuje sterowników pokojowych do podłogówki?</h3>
                <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"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Tak, ponieważ sama <a href="https://projekt-ogrzewania.pl/sterownik-regulator-pogodowy/">krzywa grzewcza pompy ciepła</a> reaguje wyłącznie na temperaturę zewnętrzną i nie wie, co dzieje się wewnątrz budynku (np. zyski od kominka czy nasłonecznienia salonu), co bez automatyki strefowej prowadzi do trwałego przegrzewania wnętrz.
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>Czym różnią się siłowniki termoelektryczne NC od NO?</h3>
                <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"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">Siłowniki typu NC</a> (Normalnie Zamknięte) bez dopływu prądu fizycznie blokują przepływ wody w pętli. Natomiast siłowniki NO (Normalnie Otwarte) w stanie bezprądowym pozostają w pełni otwarte. W polskim budownictwie mieszkaniowym standardem inżynierskim są bezpieczniejsze siłowniki NC.
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>Czy można zamontować sterowanie bezprzewodowe po wykonaniu tynków?</h3>
                <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"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Tak, systemy bezprzewodowe oparte o protokół komunikacyjny ZigBee lub częstotliwość radiową 868 MHz zostały zaprojektowane specjalnie do montażu w wykończonych lub <a href="https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/">modernizowanych budynkach</a>, co całkowicie eliminuje konieczność kucia ścian pod nowe przewody sterujące.
                </div>
            </div>
        </div>

    </div>
</div>

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

    faqItems.forEach(function(item) {
        const questionBtn = item.querySelector('.rk-faq-question');
        const answerDiv = item.querySelector('.rk-faq-answer');

        questionBtn.addEventListener('click', function() {
            // Logika bez użycia "&&"
            
            // Sprawdź, czy aktualny element jest już otwarty
            if (item.classList.contains('active')) {
                // Jeśli tak, zamknij go
                item.classList.remove('active');
                questionBtn.setAttribute('aria-expanded', 'false');
                answerDiv.style.maxHeight = null;
            } else {
                // Jeśli nie, najpierw zamknij wszystkie inne otwarte
                faqItems.forEach(function(otherItem) {
                    if (otherItem !== item) {
                        otherItem.classList.remove('active');
                        otherItem.querySelector('.rk-faq-question').setAttribute('aria-expanded', 'false');
                        otherItem.querySelector('.rk-faq-answer').style.maxHeight = null;
                    }
                });
                
                // Następnie otwórz aktualnie kliknięty
                item.classList.add('active');
                questionBtn.setAttribute('aria-expanded', 'true');
                answerDiv.style.maxHeight = answerDiv.scrollHeight + "px";
            }
        });
    });
});
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-card: #1e293b;
    --rk-dl-blue: #0284c7;
    --rk-dl-blue-hover: #0369a1;
    --rk-dl-red: #ef4444;
    --rk-dl-red-hover: #dc2626;
    --rk-dl-gray: #475569;
    --rk-dl-gray-light: #f1f5f9;
    --rk-dl-bg: #ffffff;
    --rk-dl-border: #cbd5e1;
}

.rk-dl-container {
    max-width: 900px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-dl-bg);
    border: 2px solid var(--rk-dl-dark);
    /* Brak border-radius dla surowego, technicznego wyglądu */
}

.rk-dl-header {
    padding: 30px 40px;
    background: var(--rk-dl-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-dl-blue);
}

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

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

.rk-dl-body {
    padding: 40px;
    display: flex;
    gap: 40px;
    align-items: stretch;
}

/* Sekcja Miniatury (Lewa) */
.rk-dl-preview-col {
    flex: 1;
    display: flex;
    flex-direction: column;
}

.rk-dl-thumb-box {
    border: 1px solid var(--rk-dl-border);
    background: var(--rk-dl-gray-light);
    padding: 10px;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100%;
    min-height: 280px;
    position: relative;
    cursor: pointer;
}

.rk-dl-thumb-box:hover {
    border-color: var(--rk-dl-blue);
}

.rk-dl-img {
    max-width: 100%;
    max-height: 350px;
    object-fit: contain;
    border: 1px solid var(--rk-dl-border);
}

.rk-dl-zoom-icon {
    position: absolute;
    bottom: 20px;
    right: 20px;
    background: var(--rk-dl-dark);
    color: #ffffff;
    padding: 8px 12px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
}

/* Sekcja Akcji (Prawa) */
.rk-dl-action-col {
    flex: 1.2;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

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

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

/* Przyciski (Brak animacji, natychmiastowa reakcja) */
.rk-dl-btn-group {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-dl-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 16px 20px;
    font-size: 16px;
    font-weight: 800;
    text-decoration: none;
    border: none;
    cursor: pointer;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-dl-btn-pdf {
    background: var(--rk-dl-red);
    color: #ffffff;
    border: 2px solid var(--rk-dl-red);
}

.rk-dl-btn-pdf:hover {
    background: var(--rk-dl-red-hover);
    border-color: var(--rk-dl-red-hover);
}

.rk-dl-btn-img {
    background: var(--rk-dl-blue);
    color: #ffffff;
    border: 2px solid var(--rk-dl-blue);
}

.rk-dl-btn-img:hover {
    background: var(--rk-dl-blue-hover);
    border-color: var(--rk-dl-blue-hover);
}

/* Stopka Prawa Autorskie */
.rk-dl-footer {
    background: var(--rk-dl-gray-light);
    border-top: 1px solid var(--rk-dl-border);
    padding: 20px 40px;
    font-size: 12px;
    color: var(--rk-dl-gray);
    line-height: 1.6;
    font-weight: 600;
    text-align: center;
}

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

/* Prosty wbudowany podgląd (zamiast modal window dla zachowania stabilności SEO) */
.rk-dl-full-view {
    display: none;
    padding: 20px;
    background: var(--rk-dl-gray-light);
    border-top: 1px solid var(--rk-dl-border);
    text-align: center;
}

.rk-dl-full-view.is-open {
    display: block;
}

.rk-dl-full-img {
    max-width: 100%;
    height: auto;
    border: 2px solid var(--rk-dl-dark);
}

@media (max-width: 768px) {
    .rk-dl-container { margin: 20px auto; border-left: none; border-right: none; }
    .rk-dl-header, .rk-dl-footer { padding: 20px; }
    .rk-dl-header h2 { font-size: 22px; }
    .rk-dl-body { flex-direction: column; padding: 20px; gap: 30px; }
    .rk-dl-thumb-box { min-height: 200px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-infografika",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Kompendium wiedzy: Pobierz darmową infografikę do druku",
    "description": "Zapisz na dysku schemat i wizualne podsumowanie opłacalności sterowników strefowych. Gotowa ściągawka dla inwestora w formacie PDF i WebP.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Infografika-Czy-warto-montowac-sterowniki-do-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://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-infografika",
    "name": "Infografika techniczna: Opłacalność automatyki podłogówki",
    "description": "Zestawienie wizualne i zbiór danych technicznych dostępny w formacie PDF do celów edukacyjnych i konsultacyjnych na budowie.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika ogrzewanie podłogowe",
      "czy warto montować sterowniki podłogówki pdf",
      "schemat sterowania ogrzewaniem podłogowym",
      "darmowe materiały hvac do pobrania",
      "robert kucharski projekt ogrzewania pdf"
    ],
    "measurementTechnique": "Ekstrakcja wiedzy inżynieryjnej i wskaźników ROI do formy graficznej i dokumentu ustrukturyzowanego (PDF).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Plik wektorowy PDF gotowy do druku i prezentacji.",
        "Kompresowana mapa bitowa WebP zoptymalizowana do wyświetlania na urządzeniach mobilnych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-infografika",
    "name": "Repozytorium Plików i Przeglądarka Grafik",
    "description": "Interfejs interaktywny umożliwiający szybki podgląd technicznych infografik oraz zarządzanie pobieraniem dokumentacji w formacie PDF.",
    "applicationCategory": "MultimediaApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-dl-container" id="rk-dl-app">
    <div class="rk-dl-header">
        <h2>Kompendium wiedzy: Pobierz darmową infografikę</h2>
        <p>Wizualne podsumowanie całego artykułu. Pobierz dokumentację, zabierz ją na budowę i pokaż swojemu instalatorowi, jak powinien wyglądać inżynierski standard.</p>
    </div>

    <div class="rk-dl-body">
        
        <div class="rk-dl-preview-col">
            <div class="rk-dl-thumb-box" id="rkThumbTrigger">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Infografika-Czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego.webp" alt="Miniatura: Infografika sterowniki do ogrzewania podłogowego" class="rk-dl-img">
                <div class="rk-dl-zoom-icon">Kliknij, aby rozwinąć</div>
            </div>
        </div>

        <div class="rk-dl-action-col">
            <h3>Wybierz format materiałów</h3>
            <p class="rk-dl-desc">
                Przygotowałem to podsumowanie w dwóch formatach. Wersja PDF jest idealna do druku w wysokiej jakości, natomiast szybki podgląd graficzny świetnie sprawdzi się na ekranie Twojego smartfona.
            </p>
            
            <div class="rk-dl-btn-group">
                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Infografika-Czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego.pdf" download="Infografika-Sterowniki-Podlogowka.pdf" target="_blank" rel="noopener noreferrer" class="rk-dl-btn rk-dl-btn-pdf">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
                    Pobierz plik PDF
                </a>
                
                <button type="button" class="rk-dl-btn rk-dl-btn-img" id="rkBtnPreview">
                    <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>
                    Powiększ obraz
                </button>
            </div>
        </div>

    </div>

    <div class="rk-dl-full-view" id="rkFullView">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Infografika-Czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego.webp" alt="Pełna Infografika: Czy warto montować sterowniki" class="rk-dl-full-img" loading="lazy">
    </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const thumbTrigger = document.getElementById('rkThumbTrigger');
    const btnPreview = document.getElementById('rkBtnPreview');
    const fullView = document.getElementById('rkFullView');
    
    // Brak operatorów && - czyste instrukcje warunkowe
    function togglePreview() {
        if (fullView.classList.contains('is-open')) {
            fullView.classList.remove('is-open');
            btnPreview.innerHTML = '<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> Powiększ obraz';
        } else {
            fullView.classList.add('is-open');
            btnPreview.innerHTML = '<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="8" y1="11" x2="14" y2="11"></line></svg> Ukryj obraz';
        }
    }

    thumbTrigger.addEventListener('click', togglePreview);
    btnPreview.addEventListener('click', togglePreview);
});
</script>



<style>
:root {
    --rk-sum-dark: #0f172a;
    --rk-sum-blue: #0284c7;
    --rk-sum-light-blue: #f0f9ff;
    --rk-sum-green: #10b981;
    --rk-sum-green-light: #dcfce7;
    --rk-sum-red: #ef4444;
    --rk-sum-red-light: #fef2f2;
    --rk-sum-gold: #eab308;
    --rk-sum-gray: #64748b;
    --rk-sum-border: #e2e8f0;
    --rk-sum-bg: #ffffff;
}

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

.rk-invest-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #1e293b 0%, var(--rk-sum-dark) 100%);
    color: #ffffff;
}

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

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

.rk-invest-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

/* Toggle Switch Design */
.rk-toggle-wrapper {
    display: flex;
    background: var(--rk-sum-border);
    border-radius: 16px;
    padding: 6px;
    margin-bottom: 35px;
    position: relative;
}

.rk-toggle-btn {
    flex: 1;
    text-align: center;
    padding: 18px 20px;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-sum-gray);
    background: transparent;
    border: none;
    border-radius: 12px;
    cursor: pointer;
    transition: all 0.4s ease;
    z-index: 2;
}

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

.rk-toggle-bg {
    position: absolute;
    top: 6px;
    bottom: 6px;
    width: calc(50% - 6px);
    background: var(--rk-sum-dark);
    border-radius: 12px;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1;
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}

.rk-invest-cards {
    display: flex;
    gap: 30px;
}

.rk-status-card {
    flex: 1;
    background: var(--rk-sum-bg);
    border: 2px solid var(--rk-sum-border);
    border-radius: 20px;
    padding: 30px;
    text-align: left;
    transition: all 0.3s ease;
    display: none;
    animation: fadeIn 0.5s forwards;
}

.rk-status-card.active {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

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

.rk-icon-row {
    display: flex;
    align-items: center;
    gap: 20px;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--rk-sum-border);
}

.rk-icon-circle {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-status-pro .rk-status-card { border-color: var(--rk-sum-green); box-shadow: 0 15px 30px -10px rgba(16, 185, 129, 0.15); }
.rk-status-pro .rk-icon-circle { background: var(--rk-sum-green-light); color: var(--rk-sum-green); }
.rk-status-pro h3 { color: var(--rk-sum-green); font-size: 22px; margin: 0; font-weight: 900;}

.rk-status-warn .rk-status-card { border-color: var(--rk-sum-red); box-shadow: 0 15px 30px -10px rgba(239, 68, 68, 0.15); }
.rk-status-warn .rk-icon-circle { background: var(--rk-sum-red-light); color: var(--rk-sum-red); }
.rk-status-warn h3 { color: var(--rk-sum-red); font-size: 22px; margin: 0; font-weight: 900;}

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

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

.rk-card-text a {
    color: var(--rk-sum-blue);
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-sum-blue);
    font-weight: 600;
}

.rk-tags-section {
    padding: 0 50px 30px;
    background: #f8fafc;
}

.rk-mat-tags-container {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
}

.rk-mat-tag {
    background: var(--rk-sum-light-blue);
    color: var(--rk-sum-blue);
    padding: 6px 14px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 700;
    border: 1px solid rgba(2, 132, 199, 0.1);
    transition: all 0.2s;
}

.rk-mat-tag:hover {
    background: var(--rk-sum-blue);
    color: #ffffff;
}

/* Nowa sekcja CTA */
.rk-cta-section {
    background: linear-gradient(135deg, var(--rk-sum-dark) 0%, #1e293b 100%);
    padding: 45px 50px;
    text-align: center;
    border-top: 1px solid rgba(255, 255, 255, 0.05);
}

.rk-cta-title {
    color: #ffffff;
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.2;
}

.rk-cta-text {
    color: #cbd5e1;
    font-size: 16px;
    max-width: 650px;
    margin: 0 auto 30px auto;
    line-height: 1.6;
}

.rk-cta-btn {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    background: var(--rk-sum-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: 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);
    border: 2px solid transparent;
}

.rk-cta-btn:hover {
    transform: translateY(-5px);
    background: #0369a1;
    box-shadow: 0 20px 35px -5px rgba(2, 132, 199, 0.5);
    border-color: #7dd3fc;
}

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

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

/* Mobile Responsiveness */
@media (max-width: 768px) {
    .rk-invest-header, .rk-invest-interactive, .rk-tags-section, .rk-cta-section { padding: 30px 20px; }
    .rk-invest-header h2, .rk-cta-title { font-size: 24px; }
    .rk-toggle-wrapper { flex-direction: column; background: transparent; padding: 0; gap: 10px;}
    .rk-toggle-bg { display: none; }
    
    .rk-toggle-btn {
        background: var(--rk-sum-border);
        color: var(--rk-sum-gray);
        border: 2px solid transparent;
    }
    
    .rk-toggle-btn.active[data-view="view-warn"] {
        background: var(--rk-sum-red-light);
        color: var(--rk-sum-red);
        border-color: var(--rk-sum-red);
    }
    
    .rk-toggle-btn.active[data-view="view-pro"] {
        background: var(--rk-sum-green-light);
        color: var(--rk-sum-green);
        border-color: var(--rk-sum-green);
    }
    
    .rk-invest-cards { flex-direction: column; gap: 20px; }
    
    .rk-cta-btn {
        width: 100%;
        padding: 16px 20px;
        font-size: 16px;
        justify-content: center;
    }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/"
    },
    "headline": "Podsumowanie inwestycyjne: Czy warto kupić automatykę do podłogówki?",
    "description": "Sprawdź na konkretnych danych, dlaczego automatyka strefowa do ogrzewania podłogowego jest inwestycją, a nie wydatkiem. Symulacja kosztów eksploatacji i ochrony posadzki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-07-07",
    "dateModified": "2026-07-07"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#dataset-sterowniki",
    "name": "Wskaźnik opłacalności inwestycji w automatykę strefową 2026",
    "description": "Zestawienie porównawcze kosztów eksploatacji, zużycia energii oraz wpływu na żywotność instalacji w scenariuszach z automatyką strefową i bez niej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "czy warto montować sterowniki do podłogówki",
      "automatyka do podłogówki cena",
      "koszty eksploatacji ogrzewania podłogowego",
      "optymalizacja pracy pompy ciepła",
      "ochrona posadzki przed przegrzaniem"
    ],
    "measurementTechnique": "Analiza numeryczna zapotrzebowania cieplnego budynku oraz wskaźnika COP pompy ciepła w trybie modulacji przepływu względem braku regulacji strefowej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Scenariusz Pasywny: Brak sterowania strefowego prowadzi do przegrzewania wnętrz, zwiększenia zużycia energii o 15-25% oraz degradacji posadzek winylowych lub drewnianych.",
        "Scenariusz Zoptymalizowany: Sterowanie strefowe chroni jastrych i optymalizuje COP pompy ciepła, zapewniając pełen zwrot z inwestycji (ROI)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/#webapp-sterowniki",
    "name": "Symulator Scenariuszy Sterowania Podłogówką",
    "description": "Interaktywny panel uświadamiający skutki braku automatyki grzewczej i korzyści płynące ze strefowego sterowania pompą obiegową i źródłem ciepła.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-invest-container" id="automatyka-invest-app">
    <div class="rk-invest-header">
        <h2>Podsumowanie inwestycyjne: Czy warto kupić automatykę do podłogówki?</h2>
        <p>Automatyka do wodnego ogrzewania podłogowego nie jest opcjonalnym gadżetem, lecz kluczowym elementem technologicznym. Przełącz poniższe scenariusze, aby zobaczyć inżynierskie różnice na konkretnych danych.</p>
    </div>

    <div class="rk-invest-interactive">
        <div class="rk-toggle-wrapper">
            <div class="rk-toggle-bg" id="rkToggleBg"></div>
            <button class="rk-toggle-btn active" data-view="view-warn" style="color: #ffffff;">
                Oszczędzam na sterownikach (Brak automatyki)
            </button>
            <button class="rk-toggle-btn" data-view="view-pro">
                Montuję inteligentne sterowanie strefowe
            </button>
        </div>

        <div class="rk-invest-cards" id="rkCardsArea">
            
            <div class="rk-status-warn" id="view-warn-content">
                <div class="rk-status-card active">
                    <div class="rk-icon-row">
                        <div class="rk-icon-circle">
                            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
                        </div>
                        <div>
                            <h3>Ryzyko przegrzewania podłogi</h3>
                        </div>
                    </div>
                    <p class="rk-card-text">
                        Pominięcie sterowników to <strong>pozorna oszczędność</strong>. Zmuszasz pompę ciepła do pracy na sztywnych parametrach. Bezwładny układ hydrauliczny reaguje z wielogodzinnym opóźnieniem. Efekt? <strong>Trwałe przegrzewanie pomieszczeń</strong> o 2-3 stopnie, co drastycznie podnosi rachunki i niszczy wrażliwe posadzki wykończeniowe (np. winyl).
                    </p>
                </div>
            </div>

            <div class="rk-status-pro" id="view-pro-content" style="display: none;">
                <div class="rk-status-card active">
                    <div class="rk-icon-row">
                        <div class="rk-icon-circle">
                            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                        </div>
                        <div>
                            <h3>Zyskowny model eksploatacji</h3>
                        </div>
                    </div>
                    <p class="rk-card-text">
                        Precyzyjne sterowanie mikroklimatem przekształca bezwładny układ w wysoce responsywną instalację. Zobacz <a href="https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/">wyliczenia zwrotu z inwestycji</a> (ROI) na poziomie 15-25% redukcji energii rocznie. Automatyka strefowa zapewnia natychmiastową <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">optymalizację pracy pompy ciepła</a> (wyższy COP) oraz trwale <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">zabezpiecza wylewkę</a> betonową przed degradacją termiczną.
                    </p>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-tags-section">
        <div class="rk-mat-tags-container">
            <span class="rk-mat-tag"># czy warto montować sterowniki do podłogówki</span>
            <span class="rk-mat-tag"># automatyka do podłogówki cena</span>
            <span class="rk-mat-tag"># sterowanie strefowe ogrzewaniem</span>
            <span class="rk-mat-tag"># koszty eksploatacji ogrzewania podłogowego</span>
            <span class="rk-mat-tag"># optymalizacja pracy pompy ciepła</span>
            <span class="rk-mat-tag"># ochrona posadzki przed przegrzaniem</span>
            <span class="rk-mat-tag"># inteligentny dom ogrzewanie</span>
            <span class="rk-mat-tag"># termostaty pokojowe a rachunki</span>
        </div>
    </div>

    <!-- Dodane mocne CTA -->
    <div class="rk-cta-section">
        <h3 class="rk-cta-title">Nie pozwól, by instalator uczył się na Twoim domu</h3>
        <p class="rk-cta-text">
            Bezwładność cieplna, algorytmy PWM, dobór pomp obiegowych – to nie czarna magia, to inżynieria. Wejdź na bloga i zbuduj wiedzę, która ochroni Twój budżet przed kosztownymi błędami.
        </p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-cta-btn">
            WEJDŹ DO BAZY WIEDZY EKSKLUZYWNEJ
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-toggle-btn');
    const toggleBg = document.getElementById('rkToggleBg');
    const viewWarn = document.getElementById('view-warn-content');
    const viewPro = document.getElementById('view-pro-content');
    
    btns.forEach((btn, index) => {
        btn.addEventListener('click', function() {
            // Bezpieczny JS, bazujemy na precyzyjnych if/else
            
            // Reset stylów przycisków na widoku desktopowym
            btns.forEach(b => {
                b.classList.remove('active');
                if(window.innerWidth > 768) {
                    b.style.color = 'var(--rk-sum-gray)';
                }
            });
            
            // Ustaw aktywację
            this.classList.add('active');
            
            if(window.innerWidth > 768) {
                this.style.color = '#ffffff';
                if(index === 0) {
                    toggleBg.style.transform = 'translateX(0)';
                    toggleBg.style.backgroundColor = 'var(--rk-sum-dark)';
                } else {
                    toggleBg.style.transform = 'translateX(100%)';
                    toggleBg.style.backgroundColor = 'var(--rk-sum-green)';
                }
            }

            // Przełączanie kontenerów tekstowych
            const targetView = this.getAttribute('data-view');
            
            if(targetView === 'view-warn') {
                viewPro.style.display = 'none';
                viewWarn.style.display = 'block';
            } else {
                viewWarn.style.display = 'none';
                viewPro.style.display = 'block';
            }
        });
    });

    // Zabezpieczenie wizualne przy zmianie szerokości okna (Resize obwodu)
    window.addEventListener('resize', function() {
        if(window.innerWidth <= 768) {
            btns.forEach(b => b.style.color = ''); 
        } else {
            const activeBtn = document.querySelector('.rk-toggle-btn.active');
            if (activeBtn) {
                activeBtn.style.color = '#ffffff';
            }
        }
    });
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/">Czy warto montować sterowniki do ogrzewania podłogowego?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Jaka jest optymalna temperatura ogrzewania podłogowego?</title>
		<link>https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 09 Mar 2025 18:05:03 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Komfort cieplny]]></category>
		<category><![CDATA[Materiały instalacyjne]]></category>
		<category><![CDATA[Normy i regulacje]]></category>
		<category><![CDATA[Ogrzewanie domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Porady techniczne]]></category>
		<category><![CDATA[Projekty instalacji]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[materiały podłogowe]]></category>
		<category><![CDATA[norma en 1264]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[regulacja temperatury]]></category>
		<category><![CDATA[temperatura wody]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2385</guid>

					<description><![CDATA[<p>Ogrzewanie podłogowe to rozwiązanie, które łączy komfort z efektywnością energetyczną, ale jak je dobrze ustawić? W naszym artykule znajdziesz praktyczne porady, wyliczenia i przykłady, które pomogą Ci ustalić idealne parametry dla Twojego domu. Dowiedz się, jaka jest optymalna temperatura ogrzewania podłogowego, by cieszyć się ciepłem w salonie, sypialni czy łazience, oszczędzając przy tym na rachunkach. Poznaj wpływ materiałów podłogowych i normy, które warto znać!</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/">Jaka jest optymalna temperatura 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-bg: #ffffff;
    --rk-intro-surface: #f8fafc;
    --rk-intro-border: #e2e8f0;
    --rk-intro-text: #334155;
    --rk-intro-muted: #64748b;
    --rk-intro-blue: #0284c7;
    --rk-intro-blue-light: #e0f2fe;
    --rk-intro-accent: #38bdf8;
    --rk-intro-red: #ef4444;
}

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

/* Hero Header Area */
.rk-intro-hero {
    background: linear-gradient(135deg, var(--rk-intro-dark) 0%, #000000 100%);
    padding: 50px;
    color: #ffffff;
    position: relative;
}

.rk-intro-hero::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background: radial-gradient(circle at 100% 0%, rgba(14, 165, 233, 0.15) 0%, transparent 50%);
    pointer-events: none;
}

.rk-intro-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(14, 165, 233, 0.2);
    color: var(--rk-intro-accent);
    padding: 6px 16px;
    border-radius: 100px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 25px;
    border: 1px solid rgba(14, 165, 233, 0.3);
}

.rk-intro-hero h2 {
    font-size: 36px;
    font-weight: 900;
    line-height: 1.2;
    margin: 0 0 25px 0;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.rk-intro-hook {
    font-size: 18px;
    line-height: 1.6;
    color: #cbd5e1;
    margin: 0;
    max-width: 800px;
    border-left: 4px solid var(--rk-intro-blue);
    padding-left: 20px;
}

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

/* Two Column Layout */
.rk-intro-grid {
    display: grid;
    grid-template-columns: 1fr 380px;
    background: var(--rk-intro-bg);
}

/* Left Column - The Meat */
.rk-intro-main {
    padding: 40px 50px;
    border-right: 1px solid var(--rk-intro-border);
}

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

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

.rk-quick-answer {
    background: var(--rk-intro-surface);
    border-radius: 16px;
    padding: 25px;
    border: 1px solid var(--rk-intro-border);
    display: flex;
    gap: 20px;
    align-items: center;
    margin-top: 30px;
}

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

.rk-qa-text h4 {
    margin: 0 0 5px 0;
    font-size: 14px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-intro-muted);
}

.rk-qa-text .rk-qa-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-intro-dark);
}

/* Right Column - Agenda/Interactive Menu */
.rk-intro-agenda {
    padding: 40px;
    background: var(--rk-intro-surface);
}

.rk-agenda-title {
    font-size: 14px;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    color: var(--rk-intro-muted);
    margin-bottom: 25px;
    display: flex;
    align-items: center;
    gap: 10px;
}

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

.rk-agenda-item {
    background: #ffffff;
    border: 1px solid var(--rk-intro-border);
    border-radius: 12px;
    padding: 16px 20px;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
}

.rk-agenda-item:hover {
    border-color: var(--rk-intro-blue);
    box-shadow: 0 4px 12px rgba(2, 132, 199, 0.08);
    transform: translateX(5px);
}

.rk-agenda-item.active {
    background: var(--rk-intro-blue);
    border-color: var(--rk-intro-blue);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.3);
}

.rk-agenda-item-header {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-intro-dark);
}

.rk-agenda-item.active .rk-agenda-item-header {
    color: #ffffff;
}

.rk-agenda-icon {
    color: var(--rk-intro-blue);
    transition: color 0.3s;
}

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

.rk-agenda-desc {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    font-size: 13px;
    line-height: 1.5;
    color: rgba(255,255,255,0.9);
    margin-top: 0;
    transition: all 0.3s ease;
}

.rk-agenda-item.active .rk-agenda-desc {
    max-height: 100px;
    opacity: 1;
    margin-top: 10px;
}

/* Mobile */
@media (max-width: 850px) {
    .rk-intro-grid { grid-template-columns: 1fr; }
    .rk-intro-main { border-right: none; border-bottom: 1px solid var(--rk-intro-border); padding: 30px 25px; }
    .rk-intro-hero { padding: 40px 25px; }
    .rk-intro-hero h2 { font-size: 28px; }
    .rk-intro-agenda { padding: 30px 25px; }
    .rk-quick-answer { flex-direction: column; text-align: center; gap: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/"
    },
    "headline": "Jaka jest optymalna temperatura ogrzewania podłogowego? Przewodnik inżynierski.",
    "description": "Przewymiarowana pompa ciepła i pękające płytki to efekt ustawiania podłogówki na oko. Dowiedz się jak poprawnie obliczyć i dobrać temperaturę zasilania.",
    "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-06-01",
    "dateModified": "2026-06-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#dataset-wstep",
    "name": "Kluczowe parametry temperaturowe dla systemów płaszczyznowych 2026",
    "description": "Zakres wiedzy technicznej poruszanej w głównym artykule, obejmujący parametry zasilania, opory cieplne posadzek oraz wpływ na sprawność pomp ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jaka jest optymalna temperatura ogrzewania podłogowego",
      "temperatura zasilania podłogówki",
      "norma PN-EN 1264",
      "współczynnik COP pompy ciepła",
      "obliczenia OZC"
    ],
    "measurementTechnique": "Synteza norm inżynieryjnych PN-EN 1264 i krzywych grzewczych nowoczesnych pomp ciepła.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rozwiązanie inżynieryjne: Optymalna temperatura zasilania wynosi zazwyczaj 30°C–35°C.",
        "Limity normatywne: Max 29°C na powierzchni posadzki w strefach mieszkalnych.",
        "Aspekt ekonomiczny: Analiza wpływu każdego stopnia zasilania na wysokość rachunków."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#webapp-wstep-nawigacja",
    "name": "Interaktywny Asystent Przewodnika HVAC",
    "description": "Moduł nawigacyjny wprowadzający czytelnika w strukturę inżynierskiego artykułu, pozwalający na szybkie odnalezienie odpowiedzi dotyczących algorytmów obliczeniowych OZC i krzywych grzewczych.",
    "applicationCategory": "NavigationTool",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container" id="rkIntroApp">
    <div class="rk-intro-hero">
        <div class="rk-intro-badge">
            <svg width="14" height="14" 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>
            Baza Wiedzy HVAC 2026
        </div>
        <h2>Jaka jest optymalna temperatura ogrzewania podłogowego?</h2>
        <p class="rk-intro-hook">
            Przewymiarowana pompa ciepła, pękające płytki i rachunki za prąd wyższe o 20% – to ostateczny efekt ustawiania podłogówki &#8222;na oko&#8221;. Z tego przewodnika dowiesz się, <strong>dlaczego zasilanie nie powinno przekraczać 35°C</strong> i jak poprawnie zbilansować dom.
        </p>
    </div>

    <div class="rk-intro-grid">
        <div class="rk-intro-main">
            <h3>Inżynieria zamiast domysłów</h3>
            <p>
                Większość inwestorów traktuje temperaturę na sterowniku jak pokrętło w starym grzejniku. To fatalny błąd. Nowoczesne ogrzewanie płaszczyznowe wymaga precyzyjnego zbilansowania mocy źródła (pompy ciepła, kotła), przepływu hydraulicznego (rotametrów) oraz oporu cieplnego posadzki.
            </p>
            <p>
                W tym artykule odrzucamy lanie wody. Skupiamy się na twardych danych, normach (PN-EN 1264) i wyliczeniach OZC, które zabezpieczą Twój dom przed kosztownymi awariami układu grzewczego i destrukcją wylewki.
            </p>

            <div class="rk-quick-answer">
                <div class="rk-qa-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><polyline points="12 16 12 12 12 8"></polyline><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                </div>
                <div class="rk-qa-text">
                    <h4>Szybka Odpowiedź</h4>
                    <div class="rk-qa-val">Zasilanie: 30°C &#8211; 35°C</div>
                    <div style="font-size: 13px; color: var(--rk-intro-muted); margin-top: 4px; font-weight: 600;">(Temperatura powierzchni max 29°C)</div>
                </div>
            </div>
        </div>

        <div class="rk-intro-agenda">
            <div class="rk-agenda-title">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="8" y1="6" x2="21" y2="6"></line><line x1="8" y1="12" x2="21" y2="12"></line><line x1="8" y1="18" x2="21" y2="18"></line><line x1="3" y1="6" x2="3.01" y2="6"></line><line x1="3" y1="12" x2="3.01" y2="12"></line><line x1="3" y1="18" x2="3.01" y2="18"></line></svg>
                W tym przewodniku:
            </div>
            
            <div class="rk-agenda-list" id="rkAgendaList">
                
                <div class="rk-agenda-item active">
                    <div class="rk-agenda-item-header">
                        <svg class="rk-agenda-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2 20h20M5 20V9a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v11M9 20v-4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v4"></path></svg>
                        Wpływ na rachunki
                    </div>
                    <div class="rk-agenda-desc">
                        Zobaczysz, jak każdy stopień na zasilaniu uderza we wskaźnik COP pompy ciepła i podbija Twoje opłaty za prąd.
                    </div>
                </div>

                <div class="rk-agenda-item">
                    <div class="rk-agenda-item-header">
                        <svg class="rk-agenda-icon" width="20" height="20" 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>
                        Norma PN-EN 1264
                    </div>
                    <div class="rk-agenda-desc">
                        Poznasz rygorystyczne limity temperatury dla posadzek, aby uniknąć pękania wylewki i problemów z krążeniem.
                    </div>
                </div>

                <div class="rk-agenda-item">
                    <div class="rk-agenda-item-header">
                        <svg class="rk-agenda-icon" 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="4 14 10 14 10 20"></polyline><polyline points="20 10 14 10 14 4"></polyline><line x1="14" y1="10" x2="21" y2="3"></line><line x1="3" y1="21" x2="10" y2="14"></line></svg>
                        Algorytm projektowy
                    </div>
                    <div class="rk-agenda-desc">
                        Zrozumiesz matematykę OZC. Pokażemy Ci, jak wylicza się przepływ masy (l/h) względem wymaganej mocy cieplnej.
                    </div>
                </div>

                <div class="rk-agenda-item">
                    <div class="rk-agenda-item-header">
                        <svg class="rk-agenda-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                        Najczęstsze błędy
                    </div>
                    <div class="rk-agenda-desc">
                        Odkryjesz, jak dławienie rotametrów i zbyt długie pętle niszczą hydraulikę Twojego systemu.
                    </div>
                </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const agendaItems = document.querySelectorAll('.rk-agenda-item');
    
    agendaItems.forEach(item => {
        item.addEventListener('click', function() {
            // Remove active class from all
            agendaItems.forEach(i => i.classList.remove('active'));
            // Add to clicked
            this.classList.add('active');
        });
    });
});
</script>



<style>
:root {
    --rk-norm-dark: #0f172a;
    --rk-norm-panel: #1e293b;
    --rk-norm-bg: #ffffff;
    --rk-norm-surface: #f8fafc;
    --rk-norm-border: #e2e8f0;
    --rk-norm-text: #334155;
    --rk-norm-muted: #64748b;
    
    /* State Colors */
    --rk-norm-green: #10b981;
    --rk-norm-green-glow: rgba(16, 185, 129, 0.2);
    --rk-norm-blue: #0ea5e9;
    --rk-norm-blue-glow: rgba(14, 165, 233, 0.2);
    --rk-norm-orange: #f59e0b;
    --rk-norm-orange-glow: rgba(245, 158, 11, 0.2);
    --rk-norm-red: #ef4444;
    --rk-norm-red-glow: rgba(239, 68, 68, 0.2);
    
    --rk-current-color: var(--rk-norm-green);
    --rk-current-glow: var(--rk-norm-green-glow);
}

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

/* Header */
.rk-norm-header {
    background: linear-gradient(135deg, var(--rk-norm-dark) 0%, #000000 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-current-color);
    transition: border-color 0.5s ease;
}

.rk-norm-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

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

/* Interactive Slider Area (New Layout) */
.rk-norm-interactive {
    padding: 50px;
    background: var(--rk-norm-bg);
    border-bottom: 1px solid var(--rk-norm-border);
    text-align: center;
}

.rk-norm-val-display {
    font-size: 56px;
    font-weight: 900;
    color: var(--rk-current-color);
    line-height: 1;
    margin-bottom: 10px;
    transition: color 0.5s ease;
    display: inline-flex;
    align-items: flex-start;
    justify-content: center;
}

.rk-norm-val-unit {
    font-size: 24px;
    font-weight: 700;
    margin-top: 5px;
    margin-left: 2px;
}

.rk-norm-status-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 6px 16px;
    background: var(--rk-current-glow);
    color: var(--rk-current-color);
    border-radius: 100px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 40px;
    transition: all 0.5s ease;
}

/* Slider Track SVG Visualizer */
.rk-norm-track-wrap {
    position: relative;
    max-width: 600px;
    margin: 0 auto;
    padding-bottom: 30px;
}

.rk-track-svg {
    width: 100%;
    height: 40px;
    overflow: visible;
}

.rk-range-input {
    -webkit-appearance: none;
    width: 100%;
    position: absolute;
    top: 5px;
    left: 0;
    margin: 0;
    background: transparent;
    outline: none;
    z-index: 5;
}

.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #ffffff;
    border: 4px solid var(--rk-current-color);
    cursor: pointer;
    box-shadow: 0 4px 15px var(--rk-current-glow);
    transition: border-color 0.5s ease, transform 0.2s;
    margin-top: -2px;
}

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

.rk-range-input::-moz-range-thumb {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #ffffff;
    border: 4px solid var(--rk-current-color);
    cursor: pointer;
    box-shadow: 0 4px 15px var(--rk-current-glow);
    transition: border-color 0.5s ease, transform 0.2s;
}

/* Data Cards Grid */
.rk-norm-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    padding: 40px 50px;
    background: var(--rk-norm-surface);
}

.rk-norm-card {
    background: #ffffff;
    border: 1px solid var(--rk-norm-border);
    border-radius: 16px;
    padding: 25px;
    transition: transform 0.3s, box-shadow 0.3s, border-color 0.5s;
    display: flex;
    flex-direction: column;
}

.rk-norm-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 15px 30px -10px rgba(0,0,0,0.05);
}

.rk-card-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 20px;
    padding-bottom: 15px;
    border-bottom: 1px solid var(--rk-norm-border);
}

.rk-card-icon {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    background: var(--rk-current-glow);
    color: var(--rk-current-color);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.5s ease;
}

.rk-card-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-norm-dark);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-card-content {
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-norm-text);
    min-height: 110px;
}

.rk-card-content strong {
    color: var(--rk-norm-dark);
}

.rk-card-content a {
    color: var(--rk-norm-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-norm-blue);
}

/* Animations for SVG Status */
.anim-pulse-warn {
    animation: rkNormPulse 1.5s infinite alternate;
}
@keyframes rkNormPulse {
    0% { filter: drop-shadow(0 0 2px var(--rk-norm-red)); }
    100% { filter: drop-shadow(0 0 10px var(--rk-norm-red)); }
}

/* State Classes controlled by JS */
.state-safe { --rk-current-color: var(--rk-norm-green); --rk-current-glow: var(--rk-norm-green-glow); }
.state-living { --rk-current-color: var(--rk-norm-blue); --rk-current-glow: var(--rk-norm-blue-glow); }
.state-bath { --rk-current-color: var(--rk-norm-orange); --rk-current-glow: var(--rk-norm-orange-glow); }
.state-danger { --rk-current-color: var(--rk-norm-red); --rk-current-glow: var(--rk-norm-red-glow); }

.state-danger .rk-norm-card { border-color: rgba(239, 68, 68, 0.3); }

/* Mobile */
@media (max-width: 850px) {
    .rk-norm-cards { grid-template-columns: 1fr; padding: 30px 25px; }
    .rk-norm-header, .rk-norm-interactive { padding: 30px 25px; }
    .rk-norm-val-display { font-size: 48px; }
    .rk-card-content { min-height: auto; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#article-norma-1264",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/"
    },
    "headline": "Jakie są dopuszczalne temperatury powierzchni podłogi według normy PN-EN 1264?",
    "description": "Rygorystyczne limity temperatury powierzchni podłogi (max 29°C w salonie, 35°C w łazience). Dowiedz się jak uniknąć zjawiska ciężkich nóg i pękania wylewek.",
    "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-06-01",
    "dateModified": "2026-06-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#dataset-limity-temperatur",
    "name": "Limity temperatur powierzchni podłogi wg PN-EN 1264",
    "description": "Zestawienie maksymalnych dopuszczalnych temperatur powierzchni posadzki dla zdrowia, komfortu i trwałości materiałów budowlanych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "norma obliczeń ogrzewania podłogowego en 1264",
      "temperatura powierzchni podłogi",
      "czy ogrzewanie podłogowe jest zdrowe",
      "pękanie wylewki anhydrytowej",
      "podłogi drewniane vs panele laminowane"
    ],
    "measurementTechnique": "Określenie fizycznych limitów termicznych skóry stóp (komfort cieplny) oraz parametrów kurczliwości i dylatacji wylewek cementowych/anhydrytowych przy podwyższonych temperaturach.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Podłogi drewniane i panele: Max 26-27°C (ryzyko rozsychani i szczelin).",
        "Strefy przebywania stałego (Salon, Sypialnia): Max 29°C.",
        "Strefy brzegowe i łazienki: Max 35°C.",
        "Powyżej 35°C: Ryzyko zdrowotne (ciężkie nogi) oraz degradacja wylewki."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#webapp-symulator-norm",
    "name": "Asystent Zgodności Normy PN-EN 1264",
    "description": "Interaktywny panel analizujący w czasie rzeczywistym wpływ nastawionej temperatury podłogi na zdrowie użytkowników i integralność strukturalną materiałów wykończeniowych.",
    "applicationCategory": "HealthAndFitnessApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-norm-container state-safe" id="rkNormApp">
    <div class="rk-norm-header">
        <h2>Jakie są dopuszczalne temperatury powierzchni podłogi według normy PN-EN 1264?</h2>
        <p>Norma PN-EN 1264 określa rygorystyczne limity. Projekt instalacji musi zapobiegać dyskomfortowi zdrowotnemu oraz degradacji materiałów wykończeniowych posadzki.</p>
    </div>

    <div class="rk-norm-interactive">
        <div class="rk-norm-val-display">
            <span id="rkNormVal">24</span>
            <span class="rk-norm-val-unit">°C</span>
        </div>
        
        <div class="rk-norm-status-badge" id="rkNormBadge">
            <svg id="rkNormIcon" width="16" height="16" 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>
            <span id="rkNormStatus">Optymalna dla drewna i paneli</span>
        </div>

        <div class="rk-norm-track-wrap">
            <input type="range" min="20" max="40" step="1" value="24" class="rk-range-input" id="rkNormSlider" aria-label="Symulator temperatury posadzki">
            
            <svg class="rk-track-svg" viewBox="0 0 100 20" preserveAspectRatio="none">
                <line x1="0" y1="10" x2="100" y2="10" stroke="#e2e8f0" stroke-width="2" stroke-linecap="round"/>
                
                <line x1="35" y1="5" x2="35" y2="15" stroke="#94a3b8" stroke-width="1"/> <text x="35" y="24" font-size="4" fill="#94a3b8" text-anchor="middle">27°</text>
                
                <line x1="45" y1="5" x2="45" y2="15" stroke="#94a3b8" stroke-width="1"/> <text x="45" y="24" font-size="4" fill="#94a3b8" text-anchor="middle">29°</text>
                
                <line x1="75" y1="5" x2="75" y2="15" stroke="#ef4444" stroke-width="1"/> <text x="75" y="24" font-size="4" fill="#ef4444" text-anchor="middle">35°</text>
                
                <line x1="0" y1="10" x2="20" y2="10" stroke="var(--rk-current-color)" stroke-width="4" stroke-linecap="round" id="rkTrackProgress" style="transition: x2 0.1s;"/>
            </svg>
        </div>
    </div>

    <div class="rk-norm-cards">
        
        <div class="rk-norm-card">
            <div class="rk-card-header">
                <div class="rk-card-icon">
                    <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="M12 2l3 9h9l-7 5 3 9-8-6-8 6 3-9-7-5h9z"></path></svg>
                </div>
                <div class="rk-card-title">Dozwolone wykończenie</div>
            </div>
            <div class="rk-card-content" id="rkCardMat">
                W pełni bezpieczna temperatura. Idealna dla <strong>podłóg drewnianych</strong> oraz cienkich <strong>paneli laminowanych</strong>. Chroni materiał przed rozsychaniem i powstawaniem szczelin. <a href="https://projekt-ogrzewania.pl/podlogi-drewniane-vs-panele-laminowane-co-wybrac-przy-ogrzewaniu-podlogowym/">Panele vs Drewno →</a>
            </div>
        </div>

        <div class="rk-norm-card">
            <div class="rk-card-header">
                <div class="rk-card-icon">
                    <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="M9 11l3 3L22 4"></path><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"></path></svg>
                </div>
                <div class="rk-card-title">Strefa wg PN-EN 1264</div>
            </div>
            <div class="rk-card-content" id="rkCardZone">
                Zgodność ze standardem <strong>pomieszczeń mieszkalnych</strong> (salony, sypialnie). Zapewnia równomierne oddawanie ciepła. <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">Czytaj o normie 1264 →</a>
            </div>
        </div>

        <div class="rk-norm-card">
            <div class="rk-card-header">
                <div class="rk-card-icon">
                    <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="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                </div>
                <div class="rk-card-title">Skutki i Zdrowie</div>
            </div>
            <div class="rk-card-content" id="rkCardHealth">
                Najwyższy komfort cieplny. Podłoga jest obojętna w dotyku (nie grzeje i nie ziębi), co jest fizjologicznie optymalne dla człowieka. <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-jest-zdrowe/">Wpływ na zdrowie →</a>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const slider = document.getElementById('rkNormSlider');
    const valDisplay = document.getElementById('rkNormVal');
    const trackProgress = document.getElementById('rkTrackProgress');
    const appContainer = document.getElementById('rkNormApp');
    
    // Status Badge Elements
    const badgeText = document.getElementById('rkNormStatus');
    const badgeIcon = document.getElementById('rkNormIcon');
    
    // Card Elements
    const cardMat = document.getElementById('rkCardMat');
    const cardZone = document.getElementById('rkCardZone');
    const cardHealth = document.getElementById('rkCardHealth');

    // Content Dictionary
    const contentDB = {
        safe: {
            cls: 'state-safe',
            badge: 'Optymalna dla drewna',
            icon: '<polyline points="20 6 9 17 4 12"></polyline>',
            mat: 'W pełni bezpieczna temperatura. Idealna dla <strong>podłóg drewnianych</strong> oraz cienkich <strong>paneli laminowanych</strong>. Chroni materiał przed rozsychaniem i powstawaniem szczelin. <a href="https://projekt-ogrzewania.pl/podlogi-drewniane-vs-panele-laminowane-co-wybrac-przy-ogrzewaniu-podlogowym/">Panele vs Drewno →</a>',
            zone: 'Zgodność ze standardem <strong>pomieszczeń mieszkalnych</strong> (salony, sypialnie). Zapewnia równomierne oddawanie ciepła w centrum domu. <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">Czytaj o normie 1264 →</a>',
            health: 'Najwyższy komfort cieplny. Podłoga jest obojętna w dotyku (nie grzeje i nie ziębi w stopę), co jest fizjologicznie optymalne dla człowieka. <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-jest-zdrowe/">Wpływ na zdrowie →</a>'
        },
        living: {
            cls: 'state-living',
            badge: 'Limit Strefy Mieszkalnej',
            icon: '<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>',
            mat: 'Górna granica dla podłóg drewnianych. Dozwolone bez ograniczeń dla <strong>płytek ceramicznych</strong> i gresu.',
            zone: '<strong>Maksymalny próg normy (29°C)</strong> dla obszarów stałego przebywania ludzi. Zbliżanie się do tej wartości wymusza gęstszy rozstaw rur lub wyższe zasilanie.',
            health: 'Podłoga staje się wyczuwalnie ciepła. Bezpieczne dla krążenia, pod warunkiem, że nie utrzymuje się stale w okresie przejściowym.'
        },
        bath: {
            cls: 'state-bath',
            badge: 'Tylko Łazienka / Obrzeża',
            icon: '<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>',
            mat: 'Ryzyko rozwarstwienia drewna! W tej strefie dozwolone są wyłącznie <strong>materiały ceramiczne</strong>. Zastosowanie drewna doprowadzi do jego degradacji.',
            zone: 'Strefa dopuszczalna wyłącznie dla <strong>łazienek</strong> (ciepła posadzka dla bosych stóp) oraz <strong>stref brzegowych</strong> pod wielkimi oknami. <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-obwodowa-w-ogrzewaniu-podlogowym/">Czym jest strefa brzegowa? →</a>',
            health: 'Przyjemne dla stóp w mokrej łazience, ale na dłuższą metę męczące w salonie. Przyspiesza cyrkulację kurzu w powietrzu.'
        },
        danger: {
            cls: 'state-danger',
            badge: 'Błąd - Przekroczenie Normy!',
            icon: '<line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line>',
            mat: 'Krytyczne naprężenia termiczne. Olbrzymie ryzyko <strong>pękania wylewek anhydrytowych i cementowych</strong>. Płytki mogą odspajać się od podłoża. <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">Wytyczne wylewek →</a>',
            zone: '<strong>ABSOLUTNE PRZEKROCZENIE NORMY.</strong> Instalacja działa wadliwie lub brakuje w niej zaworu mieszającego obniżającego parametr z kotła. <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">Maksymalne zasilanie →</a>',
            health: 'Zjawisko <strong>tzw. "ciężkich nóg"</strong>. Gorąca podłoga powoduje rozszerzanie naczyń krwionośnych, obrzęki łydek i ogólny dyskomfort termiczny domowników.'
        }
    };

    function updateDashboard() {
        const val = parseInt(slider.value);
        valDisplay.textContent = val;
        
        // Update SVG Progress Line
        // Math: map 20-40 range to 0-100 coordinates
        const percent = ((val - 20) / (40 - 20)) * 100;
        trackProgress.setAttribute('x2', percent);

        // Determine State
        let stateKey = 'safe';
        if (val >= 28 && val <= 29) stateKey = 'living';
        if (val >= 30 && val <= 35) stateKey = 'bath';
        if (val > 35) stateKey = 'danger';

        const data = contentDB[stateKey];

        // Update CSS Class container
        appContainer.className = 'rk-norm-container ' + data.cls;

        // Update Content
        badgeText.textContent = data.badge;
        badgeIcon.innerHTML = data.icon;
        
        // Only update innerHTML if it's different to prevent flashing
        if(cardMat.innerHTML !== data.mat) cardMat.innerHTML = data.mat;
        if(cardZone.innerHTML !== data.zone) cardZone.innerHTML = data.zone;
        if(cardHealth.innerHTML !== data.health) cardHealth.innerHTML = data.health;
        
        // SVG Icon pulse animation on danger
        if(stateKey === 'danger') {
            badgeIcon.classList.add('anim-pulse-warn');
        } else {
            badgeIcon.classList.remove('anim-pulse-warn');
        }
    }

    slider.addEventListener('input', updateDashboard);
    
    // Init
    updateDashboard();
});
</script>



<style>
:root {
    --rk-flr-dark: #0f172a;
    --rk-flr-panel: #1e293b;
    --rk-flr-bg: #ffffff;
    --rk-flr-surface: #f8fafc;
    --rk-flr-border: #e2e8f0;
    --rk-flr-text: #334155;
    --rk-flr-muted: #64748b;
    --rk-flr-blue: #0284c7;
    --rk-flr-blue-light: #e0f2fe;
    --rk-flr-green: #10b981;
    --rk-flr-orange: #f59e0b;
    --rk-flr-red: #ef4444;
}

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

/* Header */
.rk-flr-header {
    background: linear-gradient(135deg, var(--rk-flr-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-flr-blue);
}

.rk-flr-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

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

/* Main App Area */
.rk-flr-app {
    display: flex;
    flex-direction: column;
}

/* Selector Tabs */
.rk-flr-tabs {
    display: flex;
    background: var(--rk-flr-surface);
    border-bottom: 1px solid var(--rk-flr-border);
    overflow-x: auto;
    scrollbar-width: none; /* Firefox */
}
.rk-flr-tabs::-webkit-scrollbar { display: none; /* Safari/Chrome */ }

.rk-flr-tab {
    flex: 1;
    min-width: 150px;
    padding: 20px 15px;
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-flr-muted);
    cursor: pointer;
    transition: all 0.3s;
    text-align: center;
    white-space: nowrap;
}

.rk-flr-tab:hover {
    color: var(--rk-flr-blue);
    background: rgba(2, 132, 199, 0.02);
}

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

/* Dashboard Display */
.rk-flr-display {
    padding: 40px 50px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
    align-items: center;
}

/* Data Panel */
.rk-flr-data {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

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

.rk-flr-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.08);
}

.rk-flr-icon {
    width: 50px;
    height: 50px;
    border-radius: 12px;
    background: var(--rk-flr-surface);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-flr-blue);
    flex-shrink: 0;
}

.rk-flr-info {
    flex: 1;
}

.rk-flr-label {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 700;
    color: var(--rk-flr-muted);
    letter-spacing: 0.5px;
    margin-bottom: 5px;
}

.rk-flr-value {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-flr-dark);
}

/* Resistance Bar */
.rk-flr-resistance {
    margin-top: 10px;
}

.rk-res-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    margin-bottom: 8px;
}

.rk-res-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-flr-dark);
}

.rk-res-val {
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-flr-red);
}

.rk-res-bar-bg {
    height: 10px;
    background: var(--rk-flr-surface);
    border-radius: 5px;
    overflow: hidden;
    border: 1px solid var(--rk-flr-border);
}

.rk-res-bar-fill {
    height: 100%;
    width: 10%;
    background: linear-gradient(90deg, var(--rk-flr-green) 0%, var(--rk-flr-red) 100%);
    border-radius: 5px;
    transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Visualization SVG Area */
.rk-flr-viz {
    background: var(--rk-flr-surface);
    border-radius: 20px;
    border: 1px solid var(--rk-flr-border);
    padding: 30px;
    text-align: center;
}

.rk-flr-viz h3 {
    font-size: 14px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-flr-muted);
    margin: 0 0 20px 0;
    letter-spacing: 1px;
}

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

/* SVG Dynamics */
.rk-mat-layer { transition: fill 0.5s ease, height 0.5s ease, y 0.5s ease; }
.rk-heat-arrow { transition: opacity 0.5s ease, stroke 0.5s ease; }

/* States for SVG */
.state-plytki .rk-mat-layer { fill: #94a3b8; height: 15px; y: 45px; } /* Płytki - cienkie, szare */
.state-plytki .rk-heat-arrow { stroke: var(--rk-flr-red); animation: shootUp 1s infinite linear; stroke-width: 4; }

.state-panele .rk-mat-layer { fill: #d97706; height: 20px; y: 40px; } /* Panele - drewnopodobne */
.state-panele .rk-heat-arrow { stroke: var(--rk-flr-orange); animation: shootUp 1.5s infinite linear; stroke-width: 3; }

.state-drewno .rk-mat-layer { fill: #78350f; height: 25px; y: 35px; } /* Grube drewno */
.state-drewno .rk-heat-arrow { stroke: var(--rk-flr-blue); animation: shootUp 2.5s infinite linear; stroke-width: 2; opacity: 0.7; }

.state-wykladzina .rk-mat-layer { fill: #6366f1; height: 30px; y: 30px; } /* Wykładzina - gruba */
.state-wykladzina .rk-heat-arrow { stroke: var(--rk-flr-muted); animation: shootUp 3.5s infinite linear; stroke-width: 1.5; opacity: 0.4; }

@keyframes shootUp {
    0% { stroke-dashoffset: 40; transform: translateY(10px); }
    100% { stroke-dashoffset: 0; transform: translateY(-10px); }
}

/* Info Box */
.rk-flr-desc {
    margin-top: 25px;
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-flr-text);
    padding: 15px 20px;
    background: #ffffff;
    border-left: 4px solid var(--rk-flr-blue);
    border-radius: 8px;
    border: 1px solid var(--rk-flr-border);
    border-left-width: 4px;
}

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

/* Mobile */
@media (max-width: 768px) {
    .rk-flr-display { grid-template-columns: 1fr; padding: 30px 25px; gap: 30px; }
    .rk-flr-header { padding: 30px 25px; }
    .rk-flr-tab { padding: 15px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#article-posadzki",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/"
    },
    "headline": "Tabela: Porównanie parametrów w zależności od rodzaju posadzki",
    "description": "Interaktywne zestawienie wpływu rodzaju wykończenia podłogi (płytki, panele, drewno) na opór cieplny i optymalną temperaturę zasilania ogrzewania podłogowego.",
    "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-06-01",
    "dateModified": "2026-06-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#dataset-posadzki",
    "name": "Wpływ oporu cieplnego materiałów wykończeniowych na efektywność ogrzewania",
    "description": "Baza danych parametrów fizycznych dla popularnych materiałów posadzkowych, niezbędna do poprawnego wykonania projektu OZC i doboru pompy ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "opór cieplny posadzki m2K/W",
      "temperatura zasilania ogrzewania podłogowego",
      "panele a ogrzewanie podłogowe",
      "parkiet drewniany na podłogówkę",
      "wpływ okładziny na ogrzewanie"
    ],
    "measurementTechnique": "Określenie współczynnika oporu cieplnego (R) zgodnie z normą PN-EN 1264 przy docelowej temperaturze powietrza wewnętrznego 21°C.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Płytki ceramiczne: R=0,01, Zasilanie: 30-35°C (Najwyższa efektywność).",
        "Panele laminowane: R=0,08, Zasilanie: 33-38°C.",
        "Parkiet drewniany: R=0,12, Zasilanie: 35-40°C.",
        "Wykładzina dywanowa: R=0,15, Zasilanie: 38-42°C (Wysoki izolator)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#webapp-symulator-posadzek",
    "name": "Symulator Oporu Cieplnego Posadzek",
    "description": "Narzędzie interaktywne demonstrujące, jak rosnący opór cieplny materiału posadzkowego spowalnia emisję ciepła i wymusza podnoszenie parametrów zasilania w instalacji hydraulicznej.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-flr-container" id="rk-flr-app">
    <div class="rk-flr-header">
        <h2>Tabela: Porównanie parametrów w zależności od rodzaju posadzki</h2>
        <p>Wybór materiału wykończeniowego ma bezpośredni wpływ na koszty ogrzewania. Zobacz orientacyjne parametry zasilania i opór cieplny przy założeniu temperatury wewnętrznej 21°C.</p>
    </div>

    <div class="rk-flr-app">
        <div class="rk-flr-tabs" id="rkFlrTabs">
            <button class="rk-flr-tab active" data-mat="plytki">Płytki ceramiczne</button>
            <button class="rk-flr-tab" data-mat="panele">Panele laminowane</button>
            <button class="rk-flr-tab" data-mat="drewno">Parkiet drewniany</button>
            <button class="rk-flr-tab" data-mat="wykladzina">Wykładzina</button>
        </div>

        <div class="rk-flr-display">
            <div class="rk-flr-data">
                
                <div class="rk-flr-card">
                    <div class="rk-flr-icon">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 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-flr-info">
                        <div class="rk-flr-label">Wymagana Temp. Zasilania</div>
                        <div class="rk-flr-value" id="rkValZas">30 &#8211; 35°C</div>
                    </div>
                </div>

                <div class="rk-flr-card">
                    <div class="rk-flr-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="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 class="rk-flr-info">
                        <div class="rk-flr-label">Temp. Powierzchni Posadzki</div>
                        <div class="rk-flr-value" id="rkValPow">24 &#8211; 26°C</div>
                    </div>
                </div>

                <div class="rk-flr-resistance">
                    <div class="rk-res-header">
                        <span class="rk-res-title">Opór cieplny [m²K/W]</span>
                        <span class="rk-res-val" id="rkValOpor">0,01</span>
                    </div>
                    <div class="rk-res-bar-bg">
                        <div class="rk-res-bar-fill" id="rkBarOpor" style="width: 10%;"></div>
                    </div>
                </div>

                <div class="rk-flr-desc" id="rkValDesc">
                    Ceramika i gres to idealny przewodnik. Opór cieplny jest znikomy, dzięki czemu pompa ciepła może pracować na najniższych możliwych parametrach zasilania, maksymalizując wskaźnik COP. <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">Więcej o ceramice na podłogówce →</a>
                </div>

            </div>

            <div class="rk-flr-viz state-plytki" id="rkFlrViz">
                <h3>Dynamika przenikania ciepła</h3>
                <svg class="rk-viz-svg" viewBox="0 0 200 150">
                    <rect x="20" y="60" width="160" height="70" fill="#f1f5f9" rx="2"/>
                    
                    <circle cx="50" cy="95" r="10" fill="#cbd5e1" stroke="#94a3b8" stroke-width="2"/>
                    <circle cx="100" cy="95" r="10" fill="#cbd5e1" stroke="#94a3b8" stroke-width="2"/>
                    <circle cx="150" cy="95" r="10" fill="#cbd5e1" stroke="#94a3b8" stroke-width="2"/>

                    <circle cx="50" cy="95" r="5" fill="#ef4444"/>
                    <circle cx="100" cy="95" r="5" fill="#ef4444"/>
                    <circle cx="150" cy="95" r="5" fill="#ef4444"/>

                    <rect x="20" y="45" width="160" height="15" class="rk-mat-layer" rx="1"/>

                    <g fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="10 5">
                        <path d="M 50 35 L 50 0" class="rk-heat-arrow" style="animation-delay: 0s"/>
                        <path d="M 75 35 L 75 0" class="rk-heat-arrow" style="animation-delay: 0.2s"/>
                        <path d="M 100 35 L 100 0" class="rk-heat-arrow" style="animation-delay: 0.4s"/>
                        <path d="M 125 35 L 125 0" class="rk-heat-arrow" style="animation-delay: 0.6s"/>
                        <path d="M 150 35 L 150 0" class="rk-heat-arrow" style="animation-delay: 0.8s"/>
                    </g>
                </svg>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tabs = document.querySelectorAll('.rk-flr-tab');
    const viz = document.getElementById('rkFlrViz');
    
    // UI Elements
    const vZas = document.getElementById('rkValZas');
    const vPow = document.getElementById('rkValPow');
    const vOpor = document.getElementById('rkValOpor');
    const bOpor = document.getElementById('rkBarOpor');
    const vDesc = document.getElementById('rkValDesc');

    // Data Engine
    const floorData = {
        'plytki': {
            zas: '30 - 35°C', pow: '24 - 26°C', opor: '0,01', bar: '10%',
            desc: 'Ceramika i gres to idealny przewodnik. Opór cieplny jest znikomy, dzięki czemu pompa ciepła może pracować na najniższych możliwych parametrach zasilania, maksymalizując wskaźnik COP. <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">Więcej o ceramice na podłogówce →</a>'
        },
        'panele': {
            zas: '33 - 38°C', pow: '23 - 25°C', opor: '0,08', bar: '40%',
            desc: 'Panele to najpopularniejszy kompromis. Kluczem do sukcesu jest unikanie podkładów z XPS (styroduru) i zastosowanie specjalistycznych <a href="https://projekt-ogrzewania.pl/jakie-sa-najlepsze-sposoby-izolacji-pod-ogrzewanie-podlogowe/">podkładów kwarcowych (PUM)</a> o najniższym możliwym oporze.'
        },
        'drewno': {
            zas: '35 - 40°C', pow: '22 - 24°C', opor: '0,12', bar: '70%',
            desc: 'Drewno jest naturalnym izolatorem. Należy rygorystycznie przestrzegać norm: grubość deski nie może przekraczać 15 mm, a materiał musi być klejony bezpośrednio do jastrychu elastycznym klejem. <a href="https://projekt-ogrzewania.pl/wybor-idealnego-drewna-do-ogrzewania-podlogowego-kompletna-tabela-i-poradnik/">Sprawdź tabelę gatunków drewna →</a>'
        },
        'wykladzina': {
            zas: '38 - 42°C', pow: '22 - 23°C', opor: '0,15', bar: '100%',
            desc: '<strong>Instalacja niezalecana dla pomp ciepła.</strong> Wykładzina blokuje transfer energii, zmuszając źródło ciepła do wejścia w nieekonomiczne, wysokie rejestry temperatur zasilania, drastycznie podnosząc rachunki za prąd.'
        }
    };

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

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

            // Update Text
            vZas.textContent = data.zas;
            vPow.textContent = data.pow;
            vOpor.textContent = data.opor;
            bOpor.style.width = data.bar;
            vDesc.innerHTML = data.desc;

            // Update SVG Class for animations
            viz.className = 'rk-flr-viz state-' + mat;
        });
    });
});
</script>



<style>
:root {
    --rk-zone-dark: #0f172a;
    --rk-zone-panel: #1e293b;
    --rk-zone-bg: #ffffff;
    --rk-zone-surface: #f8fafc;
    --rk-zone-border: #e2e8f0;
    --rk-zone-text: #334155;
    --rk-zone-muted: #64748b;
    --rk-zone-accent: #38bdf8;
    --rk-zone-blue: #0284c7;
    --rk-zone-blue-light: #e0f2fe;
    --rk-zone-orange: #f97316;
    --rk-zone-red: #ef4444;
    --rk-zone-gray: #64748b;
}

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

/* Header Section */
.rk-zone-header {
    background: linear-gradient(135deg, var(--rk-zone-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-zone-blue);
}

.rk-zone-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 12px 0;
    line-height: 1.3;
}

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

/* App Interface */
.rk-zone-app-grid {
    display: grid;
    grid-template-columns: 260px 1fr;
    background: var(--rk-zone-bg);
}

/* Room Selector (Sidebar) */
.rk-zone-sidebar {
    background: var(--rk-zone-surface);
    padding: 30px 20px;
    border-right: 1px solid var(--rk-zone-border);
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-zone-sidebar-title {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    color: var(--rk-zone-muted);
    margin: 0 0 10px 10px;
}

.rk-room-btn {
    background: #ffffff;
    border: 1px solid var(--rk-zone-border);
    padding: 16px 20px;
    border-radius: 16px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 15px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    color: var(--rk-zone-text);
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-room-btn:hover {
    border-color: #cbd5e1;
    transform: translateY(-2px);
    box-shadow: 0 6px 12px rgba(0,0,0,0.05);
}

.rk-room-btn.active {
    background: var(--rk-zone-blue);
    border-color: var(--rk-zone-blue);
    color: #ffffff;
    box-shadow: 0 8px 16px rgba(2, 132, 199, 0.25);
}

.rk-room-icon {
    width: 40px;
    height: 40px;
    border-radius: 12px;
    background: var(--rk-zone-blue-light);
    color: var(--rk-zone-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s;
}

.rk-room-btn.active .rk-room-icon {
    background: rgba(255,255,255,0.2);
    color: #ffffff;
}

.rk-room-info {
    text-align: left;
}

.rk-room-name {
    font-size: 15px;
    font-weight: 800;
    display: block;
}

.rk-room-target {
    font-size: 12px;
    font-weight: 600;
    opacity: 0.8;
}

/* Main Display Area */
.rk-zone-display {
    padding: 40px;
    display: flex;
    flex-direction: column;
    gap: 30px;
}

/* Thermostat & Data */
.rk-zone-data-row {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 40px;
    align-items: center;
}

.rk-thermostat {
    width: 180px;
    height: 180px;
    border-radius: 50%;
    background: #ffffff;
    border: 8px solid var(--rk-zone-surface);
    box-shadow: 
        inset 0 4px 10px rgba(0,0,0,0.05),
        0 10px 25px -5px rgba(2, 132, 199, 0.15);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
}

.rk-therm-ring {
    position: absolute;
    top: -8px; left: -8px; right: -8px; bottom: -8px;
    border-radius: 50%;
    border: 8px solid transparent;
    border-top-color: var(--rk-zone-orange);
    border-right-color: var(--rk-zone-orange);
    transform: rotate(-45deg);
    transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}

.room-sypialnia .rk-therm-ring { border-top-color: var(--rk-zone-blue); border-right-color: transparent; }
.room-lazienka .rk-therm-ring { border-top-color: var(--rk-zone-red); border-right-color: var(--rk-zone-red); border-bottom-color: var(--rk-zone-red); }
.room-garaz .rk-therm-ring { border-top-color: var(--rk-zone-gray); border-right-color: transparent; transform: rotate(-135deg); }


.rk-therm-val {
    font-size: 42px;
    font-weight: 900;
    color: var(--rk-zone-dark);
    line-height: 1;
    margin-bottom: 5px;
}

.rk-therm-label {
    font-size: 11px;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    color: var(--rk-zone-muted);
}

.rk-zone-specs {
    background: var(--rk-zone-surface);
    border-radius: 16px;
    padding: 25px;
    border: 1px solid var(--rk-zone-border);
}

.rk-zone-specs h3 {
    margin: 0 0 15px 0;
    font-size: 18px;
    color: var(--rk-zone-dark);
}

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

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

.rk-spec-label {
    font-size: 12px;
    color: var(--rk-zone-muted);
    font-weight: 600;
    margin-bottom: 5px;
}

.rk-spec-val {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-zone-blue);
}

/* Visualization SVG */
.rk-zone-viz {
    background: #ffffff;
    border-radius: 16px;
    border: 1px solid var(--rk-zone-border);
    padding: 20px;
    position: relative;
    overflow: hidden;
}

.rk-zone-viz-title {
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-zone-muted);
    margin-bottom: 15px;
    text-transform: uppercase;
    letter-spacing: 1px;
}

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

/* SVG Animations */
.rk-pipe-core { fill: #cbd5e1; transition: fill 0.5s ease; }
.rk-pipe-heat { opacity: 0; transition: opacity 0.5s ease; }

.room-salon .rk-pipe-core { fill: var(--rk-zone-orange); }
.room-salon .rk-pipe-base { opacity: 1; }
.room-salon .rk-pipe-dense { opacity: 0; transform: translateY(10px); }
.room-salon .rk-pipe-sparse { opacity: 0; transform: translateY(10px); }

.room-sypialnia .rk-pipe-core { fill: var(--rk-zone-blue); }
.room-sypialnia .rk-pipe-base { opacity: 1; }
.room-sypialnia .rk-pipe-dense { opacity: 0; transform: translateY(10px); }
.room-sypialnia .rk-pipe-sparse { opacity: 0; transform: translateY(10px); }

.room-lazienka .rk-pipe-core { fill: var(--rk-zone-red); }
.room-lazienka .rk-pipe-base { opacity: 1; }
.room-lazienka .rk-pipe-dense { opacity: 1; transform: translateY(0); transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); }
.room-lazienka .rk-pipe-sparse { opacity: 0; transform: translateY(10px); }


.room-garaz .rk-pipe-core { fill: var(--rk-zone-gray); }
.room-garaz .rk-pipe-base { opacity: 0; }
.room-garaz .rk-pipe-dense { opacity: 0; }
.room-garaz .rk-pipe-sparse { opacity: 1; transform: translateY(0); transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); }


/* Heat waves */
.rk-heat-wave {
    stroke-dasharray: 10;
    animation: waveRise 2s linear infinite;
    opacity: 0;
    transition: opacity 0.3s;
}

.room-salon .rk-heat-wave { stroke: var(--rk-zone-orange); opacity: 0.6; }
.room-sypialnia .rk-heat-wave { stroke: var(--rk-zone-blue); opacity: 0.3; animation-duration: 3s; }
.room-lazienka .rk-heat-wave { stroke: var(--rk-zone-red); opacity: 0.8; animation-duration: 1.5s; }
.room-garaz .rk-heat-wave { stroke: var(--rk-zone-gray); opacity: 0.2; animation-duration: 4s; }

@keyframes waveRise {
    0% { stroke-dashoffset: 20; transform: translateY(5px); }
    100% { stroke-dashoffset: 0; transform: translateY(-5px); }
}

/* Explain Text */
.rk-zone-explain {
    background: #fffbeb;
    border-left: 4px solid #fbbf24;
    padding: 15px 20px;
    border-radius: 0 12px 12px 0;
    font-size: 14px;
    line-height: 1.6;
    color: #92400e;
}

.rk-zone-explain a {
    color: #b45309;
    font-weight: 700;
    text-decoration: underline;
}

/* Mobile */
@media (max-width: 768px) {
    .rk-zone-app-grid { grid-template-columns: 1fr; }
    .rk-zone-sidebar { border-right: none; border-bottom: 1px solid var(--rk-zone-border); flex-direction: row; overflow-x: auto; padding: 20px; }
    .rk-room-btn { flex: 0 0 auto; padding: 12px 16px; }
    .rk-zone-data-row { grid-template-columns: 1fr; justify-items: center; text-align: center; gap: 25px; }
    .rk-spec-grid { grid-template-columns: 1fr; }
    .rk-zone-display { padding: 25px; }
    .rk-zone-header { padding: 30px 25px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#article-nastawy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/"
    },
    "headline": "Jak rodzaj pomieszczenia wpływa na nastawy temperatury?",
    "description": "Zasady sterowania strefowego w ogrzewaniu podłogowym. Zobacz dlaczego łazienka wymaga mniejszego rozstawu rur, a sypialnia obniżonej temperatury, bez podnoszenia zasilania na pompie ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-01",
    "dateModified": "2026-06-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#dataset-strefy",
    "name": "Zestawienie parametrów strefowych ogrzewania podłogowego",
    "description": "Tabela optymalnych temperatur powietrza, nastaw zasilania i gęstości układania rur w zależności od przeznaczenia pomieszczenia (salon, sypialnia, łazienka, garaż).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "sterowanie strefowe ogrzewaniem czy warto",
      "termostat w ogrzewaniu podłogowym",
      "rozstaw rur w wodnym ogrzewaniu podłogowym",
      "temperatura w łazience podłogówka",
      "optymalna temperatura w sypialni",
      "ogrzewanie podłogowe w garażu"
    ],
    "measurementTechnique": "Korelacja wymagań komfortu cieplnego z projektowym rozstawem rur (OZC) w celu uniknięcia przewymiarowania temperatury zasilania czynnika grzewczego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Salon: Temp. powietrza 21°C, Zasilanie 32°C, Rozstaw rur 15 cm.",
        "Sypialnia: Temp. powietrza 19°C, Zasilanie 30°C, Rozstaw rur 15 cm.",
        "Łazienka: Temp. powietrza 24°C, Wymagany rozstaw rur 10 cm.",
        "Garaż: Temp. powietrza 16°C, Zasilanie 28°C, Rozstaw rur 20 cm."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#webapp-symulator-stref",
    "name": "Symulator Stref Cieplnych Smart Home",
    "description": "Interaktywny sterownik wizualizujący zależność między pożądaną temperaturą w pomieszczeniu a gęstością ułożenia pętli grzewczych (rozstawem rur).",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-zone-container" id="rk-zone-app">
    <div class="rk-zone-header">
        <h2>Jak rodzaj pomieszczenia wpływa na nastawy temperatury?</h2>
        <p>Błędem jest stosowanie jednakowej temperatury zasilania dla całego domu bez wykorzystania automatyki. Nierównomierne rozłożenie temperatury prowadzi do nieefektywnego wykorzystania energii z pompy ciepła.</p>
    </div>

    <div class="rk-zone-app-grid">
        <div class="rk-zone-sidebar">
            <div class="rk-zone-sidebar-title">Wybierz pomieszczenie</div>
            
            <button class="rk-room-btn active" data-room="salon">
                <div class="rk-room-icon">
                    <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="M2 20h20M5 20V9a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v11M9 20v-4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v4"></path></svg>
                </div>
                <div class="rk-room-info">
                    <span class="rk-room-name">Salon</span>
                    <span class="rk-room-target">Strefa Dzienna</span>
                </div>
            </button>
            
            <button class="rk-room-btn" data-room="sypialnia">
                <div class="rk-room-icon">
                    <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="M2 4v16M2 8h18a2 2 0 0 1 2 2v10M2 17h20M6 8v9"></path></svg>
                </div>
                <div class="rk-room-info">
                    <span class="rk-room-name">Sypialnia</span>
                    <span class="rk-room-target">Strefa Nocna</span>
                </div>
            </button>
            
            <button class="rk-room-btn" data-room="lazienka">
                <div class="rk-room-icon">
                    <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="M2 12h20M4 12v4a6 6 0 0 0 12 0v-4M10 12V4a2 2 0 0 1 4 0v8M14 4h4"></path></svg>
                </div>
                <div class="rk-room-info">
                    <span class="rk-room-name">Łazienka</span>
                    <span class="rk-room-target">Strefa Ciepła</span>
                </div>
            </button>
            
            <button class="rk-room-btn" data-room="garaz">
                <div class="rk-room-icon">
                    <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="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-room-info">
                    <span class="rk-room-name">Garaż</span>
                    <span class="rk-room-target">Strefa Techniczna</span>
                </div>
            </button>
        </div>

        <div class="rk-zone-display room-salon" id="rkZoneContext">
            
            <div class="rk-zone-data-row">
                <div class="rk-thermostat">
                    <div class="rk-therm-ring"></div>
                    <div class="rk-therm-val" id="rkValAir">21°C</div>
                    <div class="rk-therm-label">Powietrze</div>
                </div>
                
                <div class="rk-zone-specs">
                    <h3>Parametry instalacji</h3>
                    <div class="rk-spec-grid">
                        <div class="rk-spec-item">
                            <div class="rk-spec-label">Zasilanie (Woda)</div>
                            <div class="rk-spec-val" id="rkValWater">32°C</div>
                        </div>
                        <div class="rk-spec-item">
                            <div class="rk-spec-label">Rozstaw rur PEX</div>
                            <div class="rk-spec-val" id="rkValSpacing">Co 15 cm</div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-zone-viz">
                <div class="rk-zone-viz-title">Symulacja przekroju posadzki i gęstości rur</div>
                <svg class="rk-floor-svg" viewBox="0 0 400 120" xmlns="http://www.w3.org/2000/svg">
                    <rect x="0" y="60" width="400" height="40" fill="#f1f5f9" rx="4"/>
                    
                    <g fill="none" stroke-width="4" stroke-linecap="round">
                        <path class="rk-heat-wave" d="M 50 50 Q 60 30 50 10" />
                        <path class="rk-heat-wave" d="M 150 50 Q 160 30 150 10" style="animation-delay: 0.3s"/>
                        <path class="rk-heat-wave" d="M 250 50 Q 260 30 250 10" style="animation-delay: 0.6s"/>
                        <path class="rk-heat-wave" d="M 350 50 Q 360 30 350 10" style="animation-delay: 0.9s"/>
                    </g>

                    <g class="rk-pipe-base">
                        <circle cx="50" cy="80" r="8" class="rk-pipe-core" />
                        <circle cx="150" cy="80" r="8" class="rk-pipe-core" />
                        <circle cx="250" cy="80" r="8" class="rk-pipe-core" />
                        <circle cx="350" cy="80" r="8" class="rk-pipe-core" />
                    </g>
                    
                    <g class="rk-pipe-dense">
                        <circle cx="100" cy="80" r="8" class="rk-pipe-core" />
                        <circle cx="200" cy="80" r="8" class="rk-pipe-core" />
                        <circle cx="300" cy="80" r="8" class="rk-pipe-core" />
                    </g>
                    
                    <g class="rk-pipe-sparse">
                        <circle cx="100" cy="80" r="8" class="rk-pipe-core" />
                        <circle cx="300" cy="80" r="8" class="rk-pipe-core" />
                    </g>
                </svg>
            </div>

            <div class="rk-zone-explain" id="rkZoneDesc">
                Optymalny komfort dla przebywania dziennego. Aby uniknąć przegrzewania salonu, stosujemy standardowy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur</a> (15 cm) i dbamy o poprawną konfigurację <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">termostatu pokojowego</a>.
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-room-btn');
    const contextBox = document.getElementById('rkZoneContext');
    
    // UI Elements to update
    const valAir = document.getElementById('rkValAir');
    const valWater = document.getElementById('rkValWater');
    const valSpacing = document.getElementById('rkValSpacing');
    const desc = document.getElementById('rkZoneDesc');

    // Data dictionary
    const roomData = {
        'salon': {
            air: '21°C',
            water: '32°C',
            spacing: 'Co 15 cm',
            text: 'Optymalny komfort dla przebywania dziennego. Aby uniknąć przegrzewania salonu, stosujemy standardowy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur</a> (15 cm) i dbamy o poprawną konfigurację <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">termostatu pokojowego</a>.'
        },
        'sypialnia': {
            air: '19°C',
            water: '30°C',
            spacing: 'Co 15 cm',
            text: 'Dla zdrowego snu wymagana jest niższa temperatura. <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">Sterowanie strefowe</a> (siłowniki na rozdzielaczu) automatycznie przydławi przepływ pętli sypialnianej, utrzymując idealne 19°C.'
        },
        'lazienka': {
            air: '24°C',
            water: '35°C',
            spacing: 'Co 10 cm (Zagęszczony)',
            text: '<strong>Kluczowy błąd inwestorów:</strong> Próba osiągnięcia 24°C poprzez podnoszenie temperatury zasilania na całości domu. Prawidłowym rozwiązaniem jest <strong>miejscowe zagęszczenie rur (co 10 cm)</strong> już na etapie projektu, co pozwala zachować ekonomiczną pracę pompy ciepła.'
        },
        'garaz': {
            air: '16°C',
            water: '28°C',
            spacing: 'Co 20 cm (Rozrzedzony)',
            text: 'W strefach technicznych, jak garaż w bryle budynku, wystarczy utrzymać tzw. "temperaturę dyżurną". Projektujemy rzadszy rozstaw rur, co pozwala zaoszczędzić na kosztach eksploatacji przy jednoczesnej ochronie przed przemarzaniem ścian.'
        }
    };

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Update Active Buttons
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            
            const roomType = this.getAttribute('data-room');
            
            // Update CSS class for context (triggers SVG animations & colors)
            contextBox.className = 'rk-zone-display room-' + roomType;
            
            // Update Text Data
            const data = roomData[roomType];
            valAir.textContent = data.air;
            valWater.textContent = data.water;
            valSpacing.textContent = data.spacing;
            desc.innerHTML = data.text;
        });
    });
});
</script>



<style>
:root {
    --rk-bill-dark: #0f172a;
    --rk-bill-panel: #1e293b;
    --rk-bill-bg: #ffffff;
    --rk-bill-surface: #f8fafc;
    --rk-bill-border: #e2e8f0;
    --rk-bill-text: #334155;
    --rk-bill-muted: #64748b;
    
    --rk-bill-blue: #0284c7;
    --rk-bill-green: #10b981;
    --rk-bill-orange: #f59e0b;
    --rk-bill-red: #ef4444;

    --rk-bill-current: var(--rk-bill-green);
}

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

/* Header Section */
.rk-bill-header {
    background: linear-gradient(135deg, var(--rk-bill-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-bill-current);
    transition: border-color 0.4s ease;
}

.rk-bill-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

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

/* Main Dashboard Area */
.rk-bill-dashboard {
    padding: 40px 50px;
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: 40px;
    background: var(--rk-bill-bg);
}

/* Controls */
.rk-bill-controls {
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.rk-bill-slider-box {
    background: var(--rk-bill-surface);
    padding: 25px 30px;
    border-radius: 16px;
    border: 1px solid var(--rk-bill-border);
}

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

.rk-slider-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-bill-dark);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-slider-value {
    font-size: 32px;
    font-weight: 900;
    color: var(--rk-bill-current);
    transition: color 0.4s ease;
    display: flex;
    align-items: baseline;
    gap: 4px;
    line-height: 1;
}

.rk-slider-unit {
    font-size: 16px;
    font-weight: 700;
    color: var(--rk-bill-muted);
}

.rk-range-inp {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    background: linear-gradient(90deg, var(--rk-bill-green) 0%, var(--rk-bill-orange) 50%, var(--rk-bill-red) 100%);
    border-radius: 4px;
    outline: none;
}

.rk-range-inp::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #ffffff;
    border: 4px solid var(--rk-bill-current);
    cursor: pointer;
    box-shadow: 0 4px 10px rgba(0,0,0,0.15);
    transition: border-color 0.4s ease, transform 0.2s;
}

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

/* Metrics Grid */
.rk-bill-metrics {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.rk-metric-card {
    background: #ffffff;
    border: 1px solid var(--rk-bill-border);
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    transition: transform 0.3s;
}

.rk-metric-card:hover {
    transform: translateY(-3px);
}

.rk-metric-label {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-bill-muted);
    text-transform: uppercase;
    margin-bottom: 10px;
    letter-spacing: 0.5px;
}

.rk-metric-val {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-bill-dark);
}

#valCop { color: var(--rk-bill-blue); }
#valCost { transition: color 0.4s ease; }

/* SVG Visualization (Heat Pump) */
.rk-bill-viz-box {
    background: var(--rk-bill-surface);
    border-radius: 20px;
    border: 1px solid var(--rk-bill-border);
    padding: 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
}

.rk-viz-label {
    font-size: 12px;
    font-weight: 800;
    color: var(--rk-bill-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    text-align: center;
}

.rk-hp-svg {
    width: 140px;
    height: 140px;
}

.rk-hp-housing {
    fill: #e2e8f0;
    stroke: #94a3b8;
    stroke-width: 4;
}

.rk-hp-grill {
    fill: none;
    stroke: #cbd5e1;
    stroke-width: 3;
}

.rk-hp-fan {
    transform-origin: 70px 70px;
    transition: fill 0.4s ease;
}

.rk-hp-alert {
    opacity: 0;
    transition: opacity 0.4s ease;
}

/* Dynamic States applied to App */
.state-eco { --rk-bill-current: var(--rk-bill-green); }
.state-eco .rk-hp-fan { fill: var(--rk-bill-green); animation: spinFan 3s linear infinite; }
.state-eco #valCost { color: var(--rk-bill-green); }

.state-warn { --rk-bill-current: var(--rk-bill-orange); }
.state-warn .rk-hp-fan { fill: var(--rk-bill-orange); animation: spinFan 1s linear infinite; }
.state-warn #valCost { color: var(--rk-bill-orange); }

.state-danger { --rk-bill-current: var(--rk-bill-red); }
.state-danger .rk-hp-fan { fill: var(--rk-bill-red); animation: spinFan 0.3s linear infinite; }
.state-danger #valCost { color: var(--rk-bill-red); }
.state-danger .rk-hp-alert { opacity: 1; animation: pulseAlert 0.5s alternate infinite; }
.state-danger .rk-hp-housing { stroke: var(--rk-bill-red); }

@keyframes spinFan { 100% { transform: rotate(360deg); } }
@keyframes pulseAlert { 100% { transform: scale(1.1); opacity: 0.5; } }

/* Dynamic Explainer Text */
.rk-bill-explainer {
    background: #ffffff;
    border-left: 4px solid var(--rk-bill-current);
    padding: 20px 25px;
    border-radius: 8px;
    border-top: 1px solid var(--rk-bill-border);
    border-right: 1px solid var(--rk-bill-border);
    border-bottom: 1px solid var(--rk-bill-border);
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-bill-text);
    transition: border-color 0.4s ease;
}

.rk-bill-explainer strong { color: var(--rk-bill-dark); }
.rk-bill-explainer a {
    color: var(--rk-bill-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* Mobile */
@media (max-width: 850px) {
    .rk-bill-dashboard { grid-template-columns: 1fr; padding: 30px 25px; gap: 30px; }
    .rk-bill-header { padding: 30px 25px; }
    .rk-metrics-wrap { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#article-rachunki",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/"
    },
    "headline": "Dlaczego temperatura zasilania podłogówki decyduje o rachunkach za ogrzewanie?",
    "description": "Dowiedz się, jak obniżenie temperatury zasilania do 35°C wpływa na sprawność pompy ciepła (COP) i dlaczego praca powyżej 45°C zwiększa koszty ogrzewania o 20%.",
    "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-06-01",
    "dateModified": "2026-06-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#dataset-rachunki",
    "name": "Wpływ temperatury zasilania na efektywność (COP) pompy ciepła",
    "description": "Baza parametrów fizycznych pokazująca spadek współczynnika COP pompy ciepła i proporcjonalny wzrost kosztów energii przy nieoptymalnych nastawach zasilania.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "krzywa grzewcza pompy ciepła",
      "efektywność cop pompy ciepła",
      "temperatura zasilania ogrzewania podłogowego",
      "koszty ogrzewania pompą ciepła 2026",
      "żywotność sprężarki pompy ciepła"
    ],
    "measurementTechnique": "Szacunkowe obliczanie spadku współczynnika COP o ok. 2-2.5% na każdy 1°C wzrostu temperatury zasilania układu płaszczyznowego w stosunku do optymalnych 30°C.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Praca optymalna (30-35°C): Maksymalne COP, minimalne obciążenie sprężarki.",
        "Praca podwyższona (36-40°C): Spadek efektywności o około 10-15%.",
        "Praca krytyczna (>45°C): Drastyczny spadek COP, wzrost rachunków do +20% i przyspieszone zużycie mechaniczne."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#webapp-symulator-rachunkow",
    "name": "Symulator Zużycia i Efektywności COP Pompy Ciepła",
    "description": "Interaktywny symulator wizualizujący wpływ żądanej temperatury zasilania podłogówki na obciążenie sprężarki pompy ciepła, współczynnik COP oraz przewidywany wzrost kosztów.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-bill-wrapper state-eco" id="rkBillApp">
    <div class="rk-bill-header">
        <h2>Dlaczego temperatura zasilania podłogówki decyduje o rachunkach za ogrzewanie?</h2>
        <p>Każdy 1°C więcej na zasilaniu to realny spadek efektywności pompy ciepła (COP) o około 2-2,5%. Przekonaj się na interaktywnym symulatorze, jak nastawy niszczą Twój portfel i skracają życie sprężarki.</p>
    </div>

    <div class="rk-bill-dashboard">
        <div class="rk-bill-controls">
            
            <div class="rk-bill-slider-box">
                <div class="rk-slider-header">
                    <div class="rk-slider-title">Zasilanie układu</div>
                    <div class="rk-slider-value"><span id="valTemp">30</span><span class="rk-slider-unit">°C</span></div>
                </div>
                <input type="range" id="inpTemp" class="rk-range-inp" min="30" max="50" step="1" value="30">
            </div>

            <div class="rk-bill-metrics">
                <div class="rk-metric-card">
                    <div class="rk-metric-label">Sprawność (COP)</div>
                    <div class="rk-metric-val" id="valCop">4.80</div>
                </div>
                <div class="rk-metric-card">
                    <div class="rk-metric-label">Wzrost Rachunku</div>
                    <div class="rk-metric-val" id="valCost">+0%</div>
                </div>
            </div>

            <div class="rk-bill-explainer" id="valDesc">
                <strong>Stan Idealny.</strong> W domach o zapotrzebowaniu jednostkowym ok. 40 W/m², utrzymywanie zasilania poniżej 35°C pozwala na zachowanie najwyższego komfortu przy <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">minimalnym zużyciu prądu</a>.
            </div>

        </div>

        <div class="rk-bill-viz-box">
            <div class="rk-viz-label">Obciążenie Sprężarki</div>
            <svg class="rk-hp-svg" viewBox="0 0 140 140">
                <rect class="rk-hp-housing" x="10" y="10" width="120" height="120" rx="10" />
                <rect fill="#ffffff" x="20" y="20" width="100" height="100" rx="5" />
                
                <path class="rk-hp-grill" d="M 30 30 L 110 30 M 30 50 L 110 50 M 30 70 L 110 70 M 30 90 L 110 90 M 30 110 L 110 110" />
                
                <circle fill="#1e293b" cx="70" cy="70" r="40" />
                <path class="rk-hp-fan" d="M 70 70 L 70 35 A 35 35 0 0 1 95 45 Z M 70 70 L 95 95 A 35 35 0 0 1 70 105 Z M 70 70 L 45 95 A 35 35 0 0 1 35 70 Z M 70 70 L 45 45 A 35 35 0 0 1 70 35 Z" />
                <circle fill="#cbd5e1" cx="70" cy="70" r="8" />

                <g class="rk-hp-alert">
                    <path d="M 120 15 L 135 5 M 120 125 L 135 135" stroke="#ef4444" stroke-width="4" stroke-linecap="round" />
                </g>
            </svg>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const slider = document.getElementById('inpTemp');
    const outTemp = document.getElementById('valTemp');
    const outCop = document.getElementById('valCop');
    const outCost = document.getElementById('valCost');
    const outDesc = document.getElementById('valDesc');
    const appWrap = document.getElementById('rkBillApp');

    function calculate() {
        const temp = parseInt(slider.value);
        outTemp.textContent = temp;

        // Math modeling based on context (Base temp: 30C, Base COP: 4.8)
        // 2.5% drop in COP for every 1°C
        const deltaT = temp - 30;
        const efficiencyDrop = deltaT * 0.025;
        
        let currentCop = 4.8 * (1 - efficiencyDrop);
        let costIncrease = deltaT * 2.5;

        // Render formatted values
        outCop.textContent = currentCop.toFixed(2);
        outCost.textContent = '+' + costIncrease.toFixed(0) + '%';

        // State Machine
        if (temp <= 35) {
            appWrap.className = 'rk-bill-wrapper state-eco';
            outDesc.innerHTML = '<strong>Stan Idealny.</strong> W domach o zapotrzebowaniu jednostkowym ok. 40 W/m², utrzymywanie zasilania na poziomie '+temp+'°C pozwala na zachowanie najwyższego komfortu przy <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">minimalnym zużyciu prądu</a>.';
        } else if (temp <= 40) {
            appWrap.className = 'rk-bill-wrapper state-warn';
            outDesc.innerHTML = '<strong>Zwiększone obciążenie.</strong> Brak optymalizacji <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywej grzewczej</a> wymusza gorsze warunki pracy. Zapłacisz o '+costIncrease.toFixed(0)+'% więcej za prąd z powodu spadku sprawności układu termodynamicznego.';
        } else {
            appWrap.className = 'rk-bill-wrapper state-danger';
            outDesc.innerHTML = '<strong>Tryb Awaryjny (Krytyczny).</strong> Praca pompy powyżej 40°C to katastrofa dla portfela. Taktowanie niszczy żywotność sprężarki, a <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/">koszty ogrzewania</a> drastycznie rosną z powodu spadku COP do okolic '+currentCop.toFixed(2)+'.';
        }
    }

    slider.addEventListener('input', calculate);
    
    // Init run
    calculate();
});
</script>



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-panel: #1e293b;
    --rk-calc-bg: #ffffff;
    --rk-calc-surface: #f8fafc;
    --rk-calc-border: #e2e8f0;
    --rk-calc-text: #334155;
    --rk-calc-muted: #64748b;
    --rk-calc-blue: #0284c7;
    --rk-calc-blue-glow: rgba(2, 132, 199, 0.15);
    --rk-calc-green: #10b981;
    --rk-calc-orange: #f59e0b;
    --rk-calc-red: #ef4444;
}

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

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

.rk-calc-header::after {
    content: '';
    position: absolute;
    top: 0; right: 0; bottom: 0; left: 0;
    background: radial-gradient(circle at top right, rgba(2, 132, 199, 0.2), transparent 50%);
    pointer-events: none;
}

.rk-calc-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
    position: relative;
    z-index: 2;
}

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

/* Dashboard Grid */
.rk-calc-dashboard {
    display: grid;
    grid-template-columns: 350px 1fr;
    background: var(--rk-calc-bg);
}

/* Controls (Sliders) */
.rk-calc-controls {
    padding: 40px;
    background: var(--rk-calc-surface);
    border-right: 1px solid var(--rk-calc-border);
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.rk-input-group {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-input-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
}

.rk-input-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-input-value {
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-calc-blue);
    background: #ffffff;
    padding: 4px 10px;
    border-radius: 6px;
    border: 1px solid var(--rk-calc-border);
    min-width: 80px;
    text-align: right;
}

/* Custom Range Slider */
.rk-range {
    -webkit-appearance: none;
    width: 100%;
    height: 6px;
    background: #e2e8f0;
    border-radius: 3px;
    outline: none;
}

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

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

/* Results Display */
.rk-calc-results {
    padding: 40px;
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.rk-res-cards {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.rk-res-card {
    background: #ffffff;
    border: 1px solid var(--rk-calc-border);
    border-radius: 16px;
    padding: 25px;
    text-align: center;
    position: relative;
    overflow: hidden;
    transition: all 0.3s;
}

.rk-res-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; height: 4px;
}

.rk-res-card.flow::before { background: var(--rk-calc-blue); }
.rk-res-card.temp::before { background: var(--rk-calc-orange); }

.rk-res-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 15px 30px -10px rgba(0,0,0,0.08);
}

.rk-card-label {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-calc-muted);
    margin-bottom: 10px;
    letter-spacing: 1px;
}

.rk-card-val {
    font-size: 36px;
    font-weight: 900;
    color: var(--rk-calc-dark);
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 4px;
}

.rk-card-unit {
    font-size: 16px;
    color: var(--rk-calc-muted);
    font-weight: 700;
}

/* SVG Visualizer */
.rk-calc-viz {
    background: var(--rk-calc-dark);
    border-radius: 16px;
    padding: 30px;
    position: relative;
}

.rk-viz-title {
    color: #94a3b8;
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    margin-bottom: 20px;
    text-align: center;
}

.rk-svg-flow {
    width: 100%;
    height: 80px;
}

/* Dynamic SVG Elements */
.svg-pipe { fill: none; stroke: #334155; stroke-width: 24; stroke-linecap: round; stroke-linejoin: round; }
.svg-water { 
    fill: none; 
    stroke: var(--rk-calc-blue); 
    stroke-width: 14; 
    stroke-linecap: round; 
    stroke-linejoin: round;
    stroke-dasharray: 20 15;
    animation: flowAnim 2s linear infinite;
}
.svg-heat-arrow { stroke: var(--rk-calc-orange); fill: none; stroke-width: 3; stroke-linecap: round; }

@keyframes flowAnim {
    to { stroke-dashoffset: -70; }
}

/* Algorithm Steps Breakdown */
.rk-alg-steps {
    border-top: 1px solid var(--rk-calc-border);
    background: #ffffff;
}

.rk-alg-header {
    padding: 20px 40px;
    background: var(--rk-calc-surface);
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
}

.rk-alg-content {
    padding: 0 40px;
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1), padding 0.4s;
    background: #ffffff;
}

.rk-alg-steps.open .rk-alg-content {
    padding: 30px 40px;
    max-height: 500px;
}

.rk-alg-steps.open .rk-chevron {
    transform: rotate(180deg);
}

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

.rk-step-item {
    display: flex;
    gap: 15px;
    align-items: flex-start;
}

.rk-step-num {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--rk-calc-blue-glow);
    color: var(--rk-calc-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 900;
    flex-shrink: 0;
}

.rk-step-text {
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-calc-text);
}

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

.rk-math-code {
    display: inline-block;
    background: #f1f5f9;
    padding: 2px 6px;
    border-radius: 4px;
    font-family: monospace;
    color: var(--rk-calc-blue);
    font-weight: 600;
}

/* Mobile */
@media (max-width: 768px) {
    .rk-calc-dashboard { grid-template-columns: 1fr; }
    .rk-calc-controls { border-right: none; border-bottom: 1px solid var(--rk-calc-border); padding: 30px 25px; }
    .rk-calc-results { padding: 30px 25px; }
    .rk-res-cards { grid-template-columns: 1fr; }
    .rk-calc-header { padding: 30px 25px; }
    .rk-alg-header, .rk-alg-steps.open .rk-alg-content { padding-left: 25px; padding-right: 25px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#article-algorytm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/"
    },
    "headline": "Jak obliczyć optymalną temperaturę zasilania (algorytm projektowy)?",
    "description": "Zrozum inżynierski algorytm obliczania strumienia masy wody oraz temperatury zasilania na podstawie strat ciepła (OZC) i zakładanej różnicy temperatur (ΔT).",
    "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-06-01",
    "dateModified": "2026-06-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#dataset-algorytm",
    "name": "Algorytm obliczeniowy przepływu masowego podłogówki",
    "description": "Dane wyjściowe i przeliczniki dla równania przepływu masowego oraz mocy cieplnej instalacji płaszczyznowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wzór na przepływ wody podłogówka",
      "obliczeniowe zapotrzebowanie na ciepło OZC",
      "spadek temperatury ΔT",
      "jak obliczyć temperaturę zasilania",
      "przepływ l/h w rotametrach"
    ],
    "measurementTechnique": "Wykorzystanie ciepła właściwego wody (4186 J/(kg·K)) oraz przekształcenie bilansu strat ciepła budynku na wymagany przepływ hydrauliczny i temperaturę zasilania pętli.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wzór na przepływ: Q / (cp × ΔT).",
        "Przykładowe zapotrzebowanie: 40 W/m2 generuje przy ΔT=5K przepływ około 172 l/h dla pętli 1000 W.",
        "Docelowa temperatura zasilania: Wypadkowa oporu cieplnego, gęstości rur i niezbędnego strumienia masy."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#webapp-kalkulator-hydrauliki",
    "name": "Kalkulator Inżynierski - Algorytm Zasilania",
    "description": "Interaktywny symulator pozwalający obliczyć przepływ wody (l/h) oraz wymaganą temperaturę zasilania pompy ciepła na podstawie metrażu i izolacji budynku.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-wrapper" id="rk-calc-app">
    <div class="rk-calc-header">
        <h2>Jak obliczyć optymalną temperaturę zasilania (algorytm projektowy)?</h2>
        <p>Aby wyznaczyć temperaturę zasilania (T<sub>zas</sub>) oraz niezbędny przepływ w rotametrach, inżynier HVAC posługuje się bilansem strat ciepła (Q) oraz założoną deltą temperatury (ΔT).</p>
    </div>

    <div class="rk-calc-dashboard">
        <div class="rk-calc-controls">
            
            <div class="rk-input-group">
                <div class="rk-input-header">
                    <span class="rk-input-label">Powierzchnia [m²]</span>
                    <span class="rk-input-value" id="valAreaOut">25 m²</span>
                </div>
                <input type="range" class="rk-range" id="inpArea" min="10" max="100" step="1" value="25">
            </div>

            <div class="rk-input-group">
                <div class="rk-input-header">
                    <span class="rk-input-label">Izolacja (Zapotrzebowanie)</span>
                    <span class="rk-input-value" id="valQOut">40 W/m²</span>
                </div>
                <input type="range" class="rk-range" id="inpQ" min="20" max="100" step="5" value="40">
            </div>

            <div class="rk-input-group">
                <div class="rk-input-header">
                    <span class="rk-input-label">Spadek Temp. (ΔT)</span>
                    <span class="rk-input-value" id="valDtOut">5 K</span>
                </div>
                <input type="range" class="rk-range" id="inpDt" min="3" max="10" step="1" value="5">
            </div>

        </div>

        <div class="rk-calc-results">
            
            <div class="rk-res-cards">
                <div class="rk-res-card flow">
                    <div class="rk-card-label">Wymagany przepływ (ṁ)</div>
                    <div class="rk-card-val"><span id="resFlow">172</span> <span class="rk-card-unit">l/h</span></div>
                </div>
                <div class="rk-res-card temp">
                    <div class="rk-card-label">Temp. Zasilania (T<sub>zas</sub>)</div>
                    <div class="rk-card-val"><span id="resTemp">32</span> <span class="rk-card-unit">°C</span></div>
                </div>
            </div>

            <div class="rk-calc-viz">
                <div class="rk-viz-title">Symulacja Przepływu Hydraulicznego</div>
                <svg class="rk-svg-flow" viewBox="0 0 300 80">
                    <path class="svg-pipe" d="M 20 40 L 280 40" />
                    <path class="svg-water" id="animWater" d="M 20 40 L 280 40" />
                    
                    <g id="animHeatGroup">
                        <path class="svg-heat-arrow" d="M 60 20 Q 70 0 60 -10" />
                        <path class="svg-heat-arrow" d="M 150 20 Q 160 0 150 -10" />
                        <path class="svg-heat-arrow" d="M 240 20 Q 250 0 240 -10" />
                    </g>
                </svg>
            </div>

        </div>
    </div>

    <div class="rk-alg-steps" id="rkAlgAcc">
        <div class="rk-alg-header">
            ROZWIŃ ALGORYTM OBLICZENIOWY (WZORY)
            <svg class="rk-chevron" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" style="transition: transform 0.3s;"><polyline points="6 9 12 15 18 9"></polyline></svg>
        </div>
        <div class="rk-alg-content">
            <ul class="rk-step-list">
                <li class="rk-step-item">
                    <div class="rk-step-num">1</div>
                    <div class="rk-step-text"><strong>Wyznaczenie całkowitego zapotrzebowania na ciepło:</strong> Mnożymy metraż przez wskaźnik z OZC budynku. <br><span class="rk-math-code">Q_obl = A × q_zapotrzebowanie [W]</span></div>
                </li>
                <li class="rk-step-item">
                    <div class="rk-step-num">2</div>
                    <div class="rk-step-text"><strong>Założenie spadku temperatury:</strong> Zazwyczaj projektowo przyjmujemy optymalną różnicę zasilania i powrotu dla podłogówki na poziomie <span class="rk-math-code">ΔT = 5K</span>.</div>
                </li>
                <li class="rk-step-item">
                    <div class="rk-step-num">3</div>
                    <div class="rk-step-text"><strong>Obliczenie strumienia masy (przepływu wody):</strong> Dzielimy wyliczoną moc przez ciepło właściwe wody (ok. 4186 J/kg·K) i założone ΔT. <br><span class="rk-math-code">ṁ = Q / (c_p × ΔT)</span></div>
                </li>
                <li class="rk-step-item">
                    <div class="rk-step-num">4</div>
                    <div class="rk-step-text"><strong>Dobór temperatury zasilania:</strong> Wypadkowa gęstości rur i oporu cieplnego posadzki. Średnia zasilania dla nowoczesnego domu wynosi zazwyczaj ok. 32-35°C.</div>
                </li>
            </ul>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Inputs
    const inpArea = document.getElementById('inpArea');
    const inpQ = document.getElementById('inpQ');
    const inpDt = document.getElementById('inpDt');
    
    // Displays
    const valAreaOut = document.getElementById('valAreaOut');
    const valQOut = document.getElementById('valQOut');
    const valDtOut = document.getElementById('valDtOut');
    const resFlow = document.getElementById('resFlow');
    const resTemp = document.getElementById('resTemp');
    
    // SVG Elements
    const animWater = document.getElementById('animWater');
    const animHeatGroup = document.getElementById('animHeatGroup');

    // Accordion Logic
    const accHeader = document.querySelector('.rk-alg-header');
    const accWrap = document.getElementById('rkAlgAcc');
    accHeader.addEventListener('click', () => {
        accWrap.classList.toggle('open');
    });

    function calculate() {
        // Values
        const area = parseFloat(inpArea.value);
        const q_unit = parseFloat(inpQ.value);
        const dt = parseFloat(inpDt.value);

        // Update Labels
        valAreaOut.textContent = area + ' m²';
        valQOut.textContent = q_unit + ' W/m²';
        valDtOut.textContent = dt + ' K';

        // Math
        // Q total [W]
        const Q = area * q_unit;
        
        // Flow calculation
        // Q = m_dot * cp * dT
        // m_dot [kg/s] = Q / (4186 * dT)
        // m_dot [l/h] ≈ m_dot_kg_s * 3600 ≈ Q / (1.163 * dT)
        const flow_lh = Q / (1.163 * dt);
        
        // Target Temp Estimate (Mock engineering formula fitting the 40W/m2, dT=5 -> 32°C logic)
        // Base room temp 22°C (assumed heat sink core base) + heat load factor + dt factor
        let targetTemp = 22 + (q_unit * 0.2) + (dt * 0.4);

        // Render Outputs
        resFlow.textContent = Math.round(flow_lh);
        resTemp.textContent = targetTemp.toFixed(1);

        // Update Animation Speed & Aesthetics
        // Flow ranges from ~20 to ~1000
        // Speed formula: duration between 0.5s (fast) to 4s (slow)
        let animSpeed = 4 - (flow_lh / 300);
        if (animSpeed < 0.5) animSpeed = 0.5;
        if (animSpeed > 4) animSpeed = 4;
        
        animWater.style.animationDuration = animSpeed + 's';

        // Heat arrows opacity based on power
        // Max power = 100 * 100 = 10000W
        let heatOp = Q / 3000; 
        if (heatOp > 1) heatOp = 1;
        if (heatOp < 0.2) heatOp = 0.2;
        animHeatGroup.style.opacity = heatOp;
        
        // Change water color based on Temp
        if (targetTemp > 40) {
            animWater.style.stroke = 'var(--rk-calc-red)';
        } else if (targetTemp > 30) {
            animWater.style.stroke = 'var(--rk-calc-orange)';
        } else {
            animWater.style.stroke = 'var(--rk-calc-blue)';
        }
    }

    // Event Listeners
    inpArea.addEventListener('input', calculate);
    inpQ.addEventListener('input', calculate);
    inpDt.addEventListener('input', calculate);

    // Initial Calc
    calculate();
});
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-panel: #1e293b;
    --rk-err-bg: #ffffff;
    --rk-err-surface: #f8fafc;
    --rk-err-border: #e2e8f0;
    --rk-err-text: #334155;
    --rk-err-muted: #64748b;
    --rk-err-red: #ef4444;
    --rk-err-red-bg: #fef2f2;
    --rk-err-red-border: #fca5a5;
    --rk-err-green: #10b981;
    --rk-err-green-bg: #f0fdf4;
    --rk-err-green-border: #86efac;
    --rk-err-blue: #0ea5e9;
}

.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 20px 40px -10px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-err-border);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

/* Header */
.rk-err-header {
    background: linear-gradient(135deg, var(--rk-err-dark) 0%, #000000 100%);
    padding: 35px 40px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-err-red);
    position: relative;
    overflow: hidden;
}

.rk-err-header::before {
    content: '!';
    position: absolute;
    right: 20px;
    top: -20px;
    font-size: 150px;
    font-weight: 900;
    color: rgba(239, 68, 68, 0.1);
    line-height: 1;
    font-family: serif;
}

.rk-err-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 10px 0;
    position: relative;
    z-index: 2;
}

.rk-err-header p {
    font-size: 15px;
    color: #94a3b8;
    margin: 0;
    max-width: 600px;
    line-height: 1.6;
    position: relative;
    z-index: 2;
}

/* Layout Main */
.rk-err-layout {
    display: grid;
    grid-template-columns: 280px 1fr;
    background: var(--rk-err-bg);
}

/* Sidebar Menu */
.rk-err-menu {
    background: var(--rk-err-surface);
    border-right: 1px solid var(--rk-err-border);
    padding: 20px 0;
    display: flex;
    flex-direction: column;
}

.rk-err-tab {
    padding: 14px 25px;
    background: transparent;
    border: none;
    border-left: 4px solid transparent;
    text-align: left;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-err-muted);
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-err-tab:hover {
    background: var(--rk-err-bg);
    color: var(--rk-err-dark);
}

.rk-err-tab.active {
    background: var(--rk-err-bg);
    border-left-color: var(--rk-err-red);
    color: var(--rk-err-dark);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-err-tab-icon {
    width: 24px;
    height: 24px;
    border-radius: 6px;
    background: var(--rk-err-border);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 900;
    color: var(--rk-err-muted);
    transition: all 0.3s;
    flex-shrink: 0;
}

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

/* Display Area */
.rk-err-display {
    padding: 40px;
    position: relative;
}

/* Sub-toggle (Error vs Fix) */
.rk-err-sub-toggle {
    display: inline-flex;
    background: var(--rk-err-surface);
    border: 1px solid var(--rk-err-border);
    border-radius: 12px;
    padding: 6px;
    margin-bottom: 30px;
    position: relative;
}

.rk-sub-btn {
    padding: 12px 24px;
    font-size: 13px;
    font-weight: 800;
    border-radius: 8px;
    cursor: pointer;
    z-index: 2;
    color: var(--rk-err-muted);
    transition: color 0.3s;
    display: flex;
    align-items: center;
    gap: 8px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

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

.rk-sub-slider {
    position: absolute;
    top: 6px;
    bottom: 6px;
    width: calc(50% - 6px);
    border-radius: 8px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1;
}

.rk-err-sub-toggle.state-error .rk-sub-slider {
    left: 6px;
    background: var(--rk-err-red);
    box-shadow: 0 4px 10px rgba(239, 68, 68, 0.2);
}

.rk-err-sub-toggle.state-fix .rk-sub-slider {
    left: 50%;
    background: var(--rk-err-green);
    box-shadow: 0 4px 10px rgba(16, 185, 129, 0.2);
}

/* Content Box Area */
.rk-err-content-box {
    display: none;
    animation: rkFadeIn 0.4s ease forwards;
}

.rk-err-content-box.active {
    display: block;
}

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

/* Text Blocks & Alert Styles */
.rk-err-text-block {
    padding: 30px;
    border-radius: 16px;
    border: 1px solid;
    margin-bottom: 20px;
}

.rk-err-text-block.state-danger {
    background: var(--rk-err-red-bg);
    border-color: var(--rk-err-red-border);
}

.rk-err-text-block.state-success {
    background: var(--rk-err-green-bg);
    border-color: var(--rk-err-green-border);
}

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

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

/* Styled Lists for technical params */
.rk-err-list {
    list-style: none;
    padding: 0;
    margin: 0 0 25px 0;
}

.rk-err-list li {
    position: relative;
    padding-left: 28px;
    margin-bottom: 12px;
    font-size: 14px;
    line-height: 1.5;
    color: var(--rk-err-dark);
    font-weight: 500;
}

.rk-err-list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 4px;
    width: 16px;
    height: 16px;
    border-radius: 4px;
}

.state-danger .rk-err-list li::before {
    background: var(--rk-err-red);
    clip-path: polygon(20% 0%, 0% 20%, 30% 50%, 0% 80%, 20% 100%, 50% 70%, 80% 100%, 100% 80%, 70% 50%, 100% 20%, 80% 0%, 50% 30%);
}

.state-success .rk-err-list li::before {
    background: var(--rk-err-green);
    clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);
}

/* Link Style */
.rk-err-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--rk-err-blue);
    font-weight: 700;
    font-size: 14px;
    text-decoration: none;
    background: #ffffff;
    padding: 10px 20px;
    border-radius: 8px;
    border: 1px solid var(--rk-err-border);
    transition: all 0.3s;
}

.rk-err-link:hover {
    border-color: var(--rk-err-blue);
    box-shadow: 0 4px 6px rgba(14, 165, 233, 0.1);
}

/* Dashboard Logic States */
.state-fix-active .view-error-only { display: none; }
.state-fix-active .view-fix-only { display: block; }
.state-error-active .view-fix-only { display: none; }
.state-error-active .view-error-only { display: block; }

/* Mobile */
@media (max-width: 768px) {
    .rk-err-layout { grid-template-columns: 1fr; }
    .rk-err-menu { flex-direction: row; overflow-x: auto; padding: 0; border-right: none; border-bottom: 1px solid var(--rk-err-border); white-space: nowrap; }
    .rk-err-tab { border-left: none; border-bottom: 4px solid transparent; padding: 15px 20px; flex-shrink: 0; }
    .rk-err-tab.active { border-bottom-color: var(--rk-err-red); border-left-color: transparent; }
    .rk-err-display { padding: 25px; }
    .rk-err-header { padding: 30px 25px; }
    .rk-err-sub-toggle { display: flex; width: 100%; }
    .rk-sub-btn { flex: 1; justify-content: center; padding: 12px 10px; font-size: 12px; }
    .rk-err-text-block { padding: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#article-bledy-regulacji",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/"
    },
    "headline": "Najczęstsze błędy przy regulacji temperatury podłogówki",
    "description": "Analiza inżynierska krytycznych błędów hydraulicznych: brak krzywej grzewczej, zła delta T, brak strefy brzegowej, dławienie rotametrów oraz zbyt długie pętle grzewcze.",
    "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-06-01",
    "dateModified": "2026-06-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#dataset-bledy",
    "name": "Wpływ błędów instalacyjnych na parametry pracy podłogówki",
    "description": "Baza danych parametrów degradacji systemu wywołanych błędną regulacją hydrauliczną, złą deltą T i brakiem automatyki pogodowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "sterowanie pogodowe w ogrzewaniu podłogowym",
      "opór cieplny posadzki",
      "spadek temperatury ΔT",
      "strefa brzegowa podłogówki",
      "zawór mieszający w ogrzewaniu podłogowym",
      "za długa pętla podłogówki",
      "krzywa grzewcza pompy ciepła"
    ],
    "measurementTechnique": "Porównanie spadków ciśnienia hydraulicznego (ΔP) oraz rozkładu gradientu temperatury (ΔT) pomiędzy układami poprawnymi a wadliwymi.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Opór cieplny: Zbyt gruby podkład wymusza podbicie zasilania o 5-8°C.",
        "Długość pętli: Przekroczenie 100m powoduje drastyczny spadek temperatury na końcu wężownicy.",
        "Delta T: Błędne nastawy pompy powodują zjawisko niedogrzania lub szumów instalacji.",
        "Strefy brzegowe: Brak zagęszczenia przy oknach HS skutkuje wychładzaniem posadzki."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#webapp-symulator-bledow",
    "name": "Asystent Analizy Błędów Instalacyjnych",
    "description": "Aplikacja interaktywna pozwalająca na diagnozę błędów instalacyjnych poprzez zestawienie skutków błędnego wykonawstwa z inżynierskimi rozwiązaniami.",
    "applicationCategory": "DiagnosticTool",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container" id="rk-err-app">
    <div class="rk-err-header">
        <h2>Najczęstsze błędy przy regulacji temperatury</h2>
        <p>Zobacz, jak błahe błędy sterowania drastycznie obniżają sprawność instalacji i generują koszty. Przeanalizuj problem i poznaj bezkompromisowe rozwiązania inżynierskie.</p>
    </div>

    <div class="rk-err-layout">
        <div class="rk-err-menu" id="rkErrMenu">
            <button class="rk-err-tab active" data-tab="1">
                <div class="rk-err-tab-icon">1</div> Brak pogodówki
            </button>
            <button class="rk-err-tab" data-tab="2">
                <div class="rk-err-tab-icon">2</div> Opór cieplny
            </button>
            <button class="rk-err-tab" data-tab="3">
                <div class="rk-err-tab-icon">3</div> Dławienie przepływu
            </button>
            <button class="rk-err-tab" data-tab="4">
                <div class="rk-err-tab-icon">4</div> Długie pętle
            </button>
            <button class="rk-err-tab" data-tab="5">
                <div class="rk-err-tab-icon">5</div> Zła Delta T
            </button>
            <button class="rk-err-tab" data-tab="6">
                <div class="rk-err-tab-icon">6</div> Brak stref brzegowych
            </button>
            <button class="rk-err-tab" data-tab="7">
                <div class="rk-err-tab-icon">7</div> Brak podmieszania
            </button>
        </div>

        <div class="rk-err-display state-error-active" id="rkErrDisplay">
            
            <div class="rk-err-sub-toggle state-error" id="rkErrToggle">
                <div class="rk-sub-slider"></div>
                <div class="rk-sub-btn active" data-state="error">Skutek Błędu</div>
                <div class="rk-sub-btn" data-state="fix">Rozwiązanie</div>
            </div>

            <div class="rk-err-content-box active" data-content="1">
                <div class="rk-err-text-block view-error-only state-danger">
                    <h3>Ustawienie sztywnej temperatury na źródle</h3>
                    <p>Ustawianie stałej temperatury wody (np. sztywne 35°C) niezależnie od warunków zewnętrznych to najczęstszy błąd eksploatacyjny. System nie reaguje na ocieplenie na zewnątrz.</p>
                    <ul class="rk-err-list">
                        <li>Przegrzewanie budynku w okresach przejściowych (jesień/wiosna).</li>
                        <li>Marnotrawienie energii elektrycznej przez pompę ciepła.</li>
                        <li>Częste i nieefektywne taktowanie (włączanie/wyłączanie) sprężarki.</li>
                    </ul>
                    <a href="https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/" class="rk-err-link">Czytaj o sterowaniu pogodowym →</a>
                </div>
                <div class="rk-err-text-block view-fix-only state-success">
                    <h3>Aktywna krzywa grzewcza</h3>
                    <p>Rozwiązaniem jest instalacja czujnika temperatury zewnętrznej i rzetelna kalibracja krzywej grzewczej sterownika. Kocioł lub pompa zyskuje &#8222;inteligencję&#8221; i sama dobiera parametr.</p>
                    <ul class="rk-err-list">
                        <li>Automatyczne obniżanie zasilania w cieplejsze dni (np. do 28°C).</li>
                        <li>Maksymalizacja współczynnika COP pompy ciepła (niższe rachunki).</li>
                        <li>Idealnie stabilna temperatura wewnątrz niezależnie od mrozów.</li>
                    </ul>
                    <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/" class="rk-err-link">Jak ustawić krzywą grzewczą →</a>
                </div>
            </div>

            <div class="rk-err-content-box" data-content="2">
                <div class="rk-err-text-block view-error-only state-danger">
                    <h3>Ignorowanie parametrów posadzki</h3>
                    <p>Zastosowanie grubego podkładu XPS pod panele lub grubej deski podłogowej tworzy tzw. izolator. Zbyt wysoki opór cieplny (R > 0,15 m²K/W) sprawia, że ciepło więźnie w wylewce.</p>
                    <ul class="rk-err-list">
                        <li>Wymuszenie podniesienia temperatury zasilania o 5°C–8°C.</li>
                        <li>Drastyczny spadek sprawności pompy obiegowej i pompy ciepła.</li>
                        <li>Zwiększone ryzyko pękania przegrzanego jastrychu (wylewki).</li>
                    </ul>
                    <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/" class="rk-err-link">Więcej o oporze cieplnym →</a>
                </div>
                <div class="rk-err-text-block view-fix-only state-success">
                    <h3>Specjalistyczne podkłady i okładziny</h3>
                    <p>W inżynierii HVAC kluczem jest przepuszczalność. Pod panele stosujemy podkłady o ultra-niskim oporze (np. PUM &#8211; poliuretanowo-mineralne), a drewno kleimy na elastyczny klej bezpośrednio do podłoża.</p>
                    <ul class="rk-err-list">
                        <li>Błyskawiczny transfer ciepła z rur do pomieszczenia.</li>
                        <li>Możliwość utrzymania zasilania na bezpiecznym poziomie 30-35°C.</li>
                        <li>Ochrona materiałów wykończeniowych przed rozwarstwieniem.</li>
                    </ul>
                    <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/" class="rk-err-link">Dobór okładziny do podłogówki →</a>
                </div>
            </div>

            <div class="rk-err-content-box" data-content="3">
                <div class="rk-err-text-block view-error-only state-danger">
                    <h3>Próba dławienia temperatury rotametrem</h3>
                    <p>Amatorzy często zmniejszają przepływ na rotametrach rozdzielacza prawie do zera, aby &#8222;przykręcić temperaturę&#8221; w danym pokoju. To niszczące działanie dla hydrauliki systemu.</p>
                    <ul class="rk-err-list">
                        <li>Drastyczny wzrost oporów hydraulicznych w układzie.</li>
                        <li>Przeciążenie i skrócenie żywotności pompy obiegowej.</li>
                        <li>Pojawienie się szumów i świstów wody w instalacji.</li>
                    </ul>
                    <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/" class="rk-err-link">Funkcja rotametru →</a>
                </div>
                <div class="rk-err-text-block view-fix-only state-success">
                    <h3>Otwarty układ i regulacja strefowa (Termostaty)</h3>
                    <p>Rotametry służą wyłącznie do kalibracji przepływów (zbilansowania oporów pętli według projektu OZC). Temperaturą w pomieszczeniu steruje się za pomocą automatyki strefowej.</p>
                    <ul class="rk-err-list">
                        <li>Zastosowanie termostatów pokojowych i listwy sterującej.</li>
                        <li>Montaż siłowników termoelektrycznych na belce powrotnej.</li>
                        <li>System sam zamyka i otwiera pętle bez obciążania pompy głównej.</li>
                    </ul>
                    <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/" class="rk-err-link">Siłowniki termoelektryczne →</a>
                </div>
            </div>

            <div class="rk-err-content-box" data-content="4">
                <div class="rk-err-text-block view-error-only state-danger">
                    <h3>Tworzenie pętli powyżej 100 metrów</h3>
                    <p>Układanie zbyt długich pętli grzewczych (szczególnie na popularnej rurze PEX 16&#215;2) powoduje całkowite wychłodzenie czynnika grzewczego zanim dotrze on z powrotem do rozdzielacza.</p>
                    <ul class="rk-err-list">
                        <li>Zimne strefy na podłodze i zjawisko tzw. &#8222;zebry termicznej&#8221;.</li>
                        <li>Wymuszanie podnoszenia temperatury zasilania na źródle.</li>
                        <li>Krytycznie duży spadek ciśnienia (ΔP), którego pompa nie uciągnie.</li>
                    </ul>
                    <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/" class="rk-err-link">Konsekwencje za długich pętli →</a>
                </div>
                <div class="rk-err-text-block view-fix-only state-success">
                    <h3>Ścisły podział na sekcje (max 80-90m)</h3>
                    <p>W projektowaniu HVAC duże pomieszczenia (np. salon o powierzchni >30m²) bezwzględnie dzielimy na dwie lub trzy niezależne sekcje zasilane z osobnych rotametrów.</p>
                    <ul class="rk-err-list">
                        <li>Pętle dla rury 16&#215;2 utrzymywane w reżimie do 80-90 metrów.</li>
                        <li>Równomierny rozkład temperatury na całej płaszczyźnie jastrychu.</li>
                        <li>Niskie opory tłoczenia gwarantujące bezawaryjną pracę pompy.</li>
                    </ul>
                    <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/" class="rk-err-link">Sprawdź normy długości pętli →</a>
                </div>
            </div>

            <div class="rk-err-content-box" data-content="5">
                <div class="rk-err-text-block view-error-only state-danger">
                    <h3>Zbyt mały przepływ i wysoka Delta T</h3>
                    <p>Zbyt niska nastawa mocy na pompie obiegowej sprawia, że woda płynie w rurach zbyt wolno. Prowadzi to do ogromnego spadku temperatury między zasilaniem a powrotem (ΔT > 10K).</p>
                    <ul class="rk-err-list">
                        <li>Odczuwalnie chłodniejsza podłoga w głębi pomieszczenia.</li>
                        <li>Nieosiągnięcie mocy projektowej obliczonej w OZC.</li>
                        <li>Niestabilna praca zaworów mieszających (skoki temperatury).</li>
                    </ul>
                    <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/" class="rk-err-link">Czym skutkuje zła Delta T? →</a>
                </div>
                <div class="rk-err-text-block view-fix-only state-success">
                    <h3>Kalibracja przepływów do ΔT = 5K</h3>
                    <p>Złotym standardem w ogrzewaniu podłogowym jest projektowanie przepływów masy tak, aby różnica temperatur między zasilaniem a powrotem wynosiła około 5K (max 7K).</p>
                    <ul class="rk-err-list">
                        <li>Dostosowanie biegu pompy obiegowej na podstawie krzywej pracy.</li>
                        <li>Precyzyjne wyregulowanie rotametrów na rozdzielaczu.</li>
                        <li>Uzyskanie idealnie zbilansowanej i stałej temperatury w całym domu.</li>
                    </ul>
                    <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/" class="rk-err-link">Jak poprawnie obliczyć ΔT →</a>
                </div>
            </div>

            <div class="rk-err-content-box" data-content="6">
                <div class="rk-err-text-block view-error-only state-danger">
                    <h3>Równomierny rozstaw rur przy oknach</h3>
                    <p>Brak zagęszczenia rur przy drzwiach tarasowych, oknach HS lub chłodnych ścianach zewnętrznych. Ściany i duże przeszklenia generują miejscowo dużo większe straty ciepła niż środek pokoju.</p>
                    <ul class="rk-err-list">
                        <li>Przewianie i nieprzyjemne uczucie chłodu od strony szyb.</li>
                        <li>Zjawisko kondensacji (skraplanie się wody) na dole okien zimą.</li>
                        <li>Niedogrzanie całego pomieszczenia pomimo wysokiej temp. zasilania.</li>
                    </ul>
                    <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/" class="rk-err-link">Błędy przy dużych oknach →</a>
                </div>
                <div class="rk-err-text-block view-fix-only state-success">
                    <h3>Wydzielona strefa brzegowa (obwodowa)</h3>
                    <p>Rozwiązaniem inżynierskim jest zaprojektowanie &#8222;kurtyny cieplnej&#8221; w podłodze. Na szerokości około 1 metra wzdłuż newralgicznych przeszkleń zagęszczamy rury (najczęściej rozstaw co 10 cm).</p>
                    <ul class="rk-err-list">
                        <li>Skuteczne zniwelowanie strat ciepła tuż przy przegrodzie.</li>
                        <li>Zabezpieczenie szyb przed wykraplaniem się wilgoci.</li>
                        <li>Możliwość utrzymania szerokiego rozstawu (np. 15 cm) w centrum pokoju.</li>
                    </ul>
                    <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-obwodowa-w-ogrzewaniu-podlogowym/" class="rk-err-link">Projektowanie strefy brzegowej →</a>
                </div>
            </div>

            <div class="rk-err-content-box" data-content="7">
                <div class="rk-err-text-block view-error-only state-danger">
                    <h3>Zasilanie wprost z bufora / kotła na pellet</h3>
                    <p>Wtłoczenie wody z kotła stałopalnego, kominka lub górnej części bufora ciepła bezpośrednio w rury podłogowe (gdzie parametry często przekraczają 60-70°C).</p>
                    <ul class="rk-err-list">
                        <li>Całkowite uszkodzenie (spękanie) jastrychu betonowego/anhydrytowego.</li>
                        <li>Odkształcenie izolacji EPS i zniszczenie paneli podłogowych.</li>
                        <li>Zagrożenie dla zdrowia i brak zgody z normą PN-EN 1264.</li>
                    </ul>
                    <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/" class="rk-err-link">Skutki braku mieszacza →</a>
                </div>
                <div class="rk-err-text-block view-fix-only state-success">
                    <h3>Zastosowanie grupy pompowo-mieszającej</h3>
                    <p>Aby pogodzić źródło wysokotemperaturowe z niskotemperaturową podłogówką, montuje się specjalną grupę wyposażoną w obrotowy, trójdrogowy zawór mieszający.</p>
                    <ul class="rk-err-list">
                        <li>Podmieszanie gorącej wody z zasilania z chłodną wodą powracającą.</li>
                        <li>Płynna redukcja temperatury do bezpiecznych 30-35°C na rozdzielaczu.</li>
                        <li>Zabezpieczenie instalacji płaszczyznowej przed uderzeniem gorąca.</li>
                    </ul>
                    <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/" class="rk-err-link">Dobór zaworu mieszającego →</a>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tabs = document.querySelectorAll('.rk-err-tab');
    const contentBoxes = document.querySelectorAll('.rk-err-content-box');
    
    // Tab switching logic
    tabs.forEach(tab => {
        tab.addEventListener('click', function() {
            tabs.forEach(t => t.classList.remove('active'));
            this.classList.add('active');
            
            const targetContent = this.getAttribute('data-tab');
            
            contentBoxes.forEach(box => {
                box.classList.remove('active');
                if(box.getAttribute('data-content') === targetContent) {
                    box.classList.add('active');
                }
            });
        });
    });

    // Sub-toggle logic (Error vs Fix)
    const togglePanel = document.getElementById('rkErrToggle');
    const subBtns = document.querySelectorAll('.rk-sub-btn');
    const displayArea = document.getElementById('rkErrDisplay');

    subBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            subBtns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            
            const state = this.getAttribute('data-state');
            
            togglePanel.className = 'rk-err-sub-toggle state-' + state;
            displayArea.className = 'rk-err-display state-' + state + '-active';
        });
    });
});
</script>



<style>
:root {
    --rk-proj-dark: #0f172a;
    --rk-proj-card: #1e293b;
    --rk-proj-blue: #0284c7;
    --rk-proj-accent: #38bdf8;
    --rk-proj-orange: #f97316;
    --rk-proj-orange-light: #ffedd5;
    --rk-proj-green: #10b981;
    --rk-proj-red: #ef4444;
    --rk-proj-bg: #ffffff;
    --rk-proj-surface: #f8fafc;
    --rk-proj-border: #e2e8f0;
    --rk-proj-text: #334155;
    --rk-proj-muted: #64748b;
}

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

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

.rk-proj-header::after {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    width: 50%;
    background: linear-gradient(90deg, transparent, rgba(56, 189, 248, 0.05) 50%, transparent);
    transform: skewX(-20deg) translateX(150%);
    animation: rkProjShine 6s infinite;
}

@keyframes rkProjShine {
    0% { transform: skewX(-20deg) translateX(-150%); }
    50%, 100% { transform: skewX(-20deg) translateX(150%); }
}

.rk-proj-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
    position: relative;
    z-index: 2;
}

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

/* Interactive Dashboard */
.rk-proj-dashboard {
    padding: 40px 50px;
    background: var(--rk-proj-surface);
}

.rk-proj-controls {
    display: flex;
    justify-content: center;
    margin-bottom: 40px;
}

.rk-proj-switch {
    display: inline-flex;
    background: #ffffff;
    border: 1px solid var(--rk-proj-border);
    border-radius: 100px;
    padding: 6px;
    position: relative;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-proj-switch-btn {
    padding: 12px 24px;
    font-size: 14px;
    font-weight: 800;
    border-radius: 100px;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 2;
    color: var(--rk-proj-muted);
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-proj-switch-btn.active[data-view="calc"] { color: #ffffff; }
.rk-proj-switch-btn.active[data-view="guess"] { color: #ffffff; }

.rk-proj-slider {
    position: absolute;
    top: 6px;
    bottom: 6px;
    border-radius: 100px;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1;
}

.rk-proj-switch.view-calc .rk-proj-slider {
    background: var(--rk-proj-blue);
    left: 6px;
    width: calc(50% - 6px);
    box-shadow: 0 4px 12px rgba(2, 132, 199, 0.3);
}

.rk-proj-switch.view-guess .rk-proj-slider {
    background: var(--rk-proj-red);
    left: 50%;
    width: calc(50% - 6px);
    box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3);
}

/* Grid parameters */
.rk-proj-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-bottom: 40px;
}

.rk-proj-tile {
    background: #ffffff;
    border: 1px solid var(--rk-proj-border);
    border-radius: 16px;
    padding: 25px;
    text-align: center;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 15px;
}

.rk-proj-tile h4 {
    margin: 0;
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--rk-proj-muted);
}

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

.rk-proj-tile a {
    font-size: 13px;
    color: var(--rk-proj-blue);
    text-decoration: underline;
    text-underline-offset: 3px;
    font-weight: 600;
}

.view-calc-active .rk-proj-tile { border-color: rgba(2, 132, 199, 0.2); box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.05); }
.view-guess-active .rk-proj-tile { border-color: rgba(239, 68, 68, 0.2); }
.view-guess-active .rk-proj-val { color: var(--rk-proj-red); }

/* SVG Animation Area */
.rk-proj-viz {
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-proj-border);
    padding: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
}

.rk-proj-viz-svg {
    width: 100%;
    max-width: 500px;
    height: auto;
}

.rk-pipe { transition: all 0.5s ease; stroke-width: 12; stroke-linecap: round; }
.rk-heat-wave { transition: all 0.5s ease; opacity: 0; }

/* States */
.state-calc .rk-pipe { stroke: var(--rk-proj-orange); }
.state-calc .rk-pipe-ghost { opacity: 1; stroke: var(--rk-proj-orange); }
.state-calc .rk-heat-wave { opacity: 0.8; stroke: var(--rk-proj-orange); animation: floatUp 2s infinite linear; }
.state-calc .rk-heat-bad { opacity: 0; }

.state-guess .rk-pipe { stroke: var(--rk-proj-red); }
.state-guess .rk-pipe-ghost { opacity: 0; }
.state-guess .rk-heat-wave { opacity: 0; }
.state-guess .rk-heat-bad { opacity: 0.8; stroke: var(--rk-proj-red); animation: floatUpBad 1.5s infinite linear; }
.state-guess .rk-cold-spot { opacity: 0.6; fill: var(--rk-proj-blue); animation: pulseCold 2s infinite alternate; }

@keyframes floatUp {
    0% { transform: translateY(10px); opacity: 0; }
    50% { opacity: 0.8; }
    100% { transform: translateY(-20px); opacity: 0; }
}
@keyframes floatUpBad {
    0% { transform: translateY(10px) scale(0.8); opacity: 0; }
    50% { opacity: 1; }
    100% { transform: translateY(-30px) scale(1.2); opacity: 0; }
}
@keyframes pulseCold {
    0% { opacity: 0.2; }
    100% { opacity: 0.6; }
}

/* Info Box */
.rk-proj-desc {
    margin-top: 30px;
    padding: 20px;
    border-radius: 12px;
    background: #f0f9ff;
    border-left: 4px solid var(--rk-proj-blue);
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-proj-text);
    transition: all 0.3s;
}

.view-guess-active .rk-proj-desc {
    background: #fef2f2;
    border-left-color: var(--rk-proj-red);
}

/* Killer CTA */
.rk-proj-cta-wrapper {
    background: linear-gradient(145deg, var(--rk-proj-dark) 0%, #000000 100%);
    padding: 50px;
    text-align: center;
    position: relative;
    border-top: 1px solid #334155;
}

.rk-cta-badge {
    position: absolute;
    top: -15px;
    left: 50%;
    transform: translateX(-50%);
    background: var(--rk-proj-orange);
    color: #ffffff;
    padding: 6px 20px;
    border-radius: 100px;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: 2px;
    text-transform: uppercase;
    box-shadow: 0 4px 15px rgba(249, 115, 22, 0.4);
    animation: rkCtaPulse 2s infinite;
}

@keyframes rkCtaPulse {
    0% { box-shadow: 0 0 0 0 rgba(249, 115, 22, 0.4); }
    70% { box-shadow: 0 0 0 10px rgba(249, 115, 22, 0); }
    100% { box-shadow: 0 0 0 0 rgba(249, 115, 22, 0); }
}

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

.rk-proj-cta-text {
    color: #cbd5e1;
    font-size: 16px;
    max-width: 600px;
    margin: 0 auto 35px auto;
    line-height: 1.6;
}

.rk-massive-btn {
    display: inline-flex;
    align-items: center;
    gap: 15px;
    background: linear-gradient(90deg, var(--rk-proj-blue) 0%, #0369a1 100%);
    color: #ffffff;
    padding: 20px 45px;
    border-radius: 16px;
    font-size: 18px;
    font-weight: 900;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 1px;
    box-shadow: 0 15px 30px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid rgba(255,255,255,0.1);
}

.rk-massive-btn:hover {
    transform: translateY(-5px) scale(1.02);
    box-shadow: 0 20px 40px -5px rgba(2, 132, 199, 0.6);
    background: linear-gradient(90deg, #0284c7 0%, #0284c7 100%);
}

.rk-massive-btn svg { transition: transform 0.3s; }
.rk-massive-btn:hover svg { transform: translateX(8px); }

/* Mobile */
@media (max-width: 768px) {
    .rk-proj-header, .rk-proj-dashboard, .rk-proj-cta-wrapper { padding: 35px 25px; }
    .rk-proj-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-proj-switch { width: 100%; display: flex; }
    .rk-proj-switch-btn { flex: 1; justify-content: center; padding: 12px 10px; font-size: 12px; }
    .rk-proj-header h2 { font-size: 24px; }
    .rk-massive-btn { width: 100%; justify-content: center; padding: 18px 20px; font-size: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#article-wplyw-projektu",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/"
    },
    "headline": "Jak optymalna temperatura wpływa na projekt ogrzewania podłogowego?",
    "description": "Dowiedz się, jak założenia projektowe (OZC) i temperatura zasilania 35°C wpływają na rozstaw rur, dobór pomp obiegowych oraz grubość wylewki w instalacji podłogowej.",
    "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-06-01",
    "dateModified": "2026-06-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#dataset-wytyczne-projektowe",
    "name": "Wytyczne do projektowania instalacji płaszczyznowych 2026",
    "description": "Zależności między optymalną temperaturą zasilania (35°C) a kluczowymi parametrami fizycznymi układu ogrzewania podłogowego z pompą ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego OZC",
      "wydajność pompy obiegowej podłogówka",
      "rozstaw rur a temperatura zasilania",
      "grubość wylewki na ogrzewanie podłogowe",
      "koszty eksploatacji ogrzewania 2026"
    ],
    "measurementTechnique": "Obliczenia zapotrzebowania cieplnego budynku (OZC) i oporów hydraulicznych pętli grzewczych dla utrzymania zasilania niskotemperaturowego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wymuszony rozstaw rur: 10-15 cm przy zasilaniu 35°C.",
        "Optymalna grubość wylewki betonowej: 6-7 cm nad rurą grzewczą.",
        "Konieczność doboru pomp o większej wydajności hydraulicznej dla instalacji niskotemperaturowych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#webapp-symulator-projektu",
    "name": "Symulator Skutków Braku Projektu Podłogówki",
    "description": "Interaktywne narzędzie edukacyjne porównujące parametry techniczne i koszty eksploatacji instalacji wykonanej na podstawie projektu OZC z instalacją montowaną 'na oko'.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-proj-container" id="rk-proj-app">
    <div class="rk-proj-header">
        <h2>Jak optymalna temperatura wpływa na projekt ogrzewania podłogowego?</h2>
        <p>Projekt musi wyprzedzać decyzje inwestora. Jeśli założymy pracę układu przy energooszczędnych 35°C, wymusza to całkowitą zmianę podejścia do układania rur i doboru osprzętu w kotłowni.</p>
    </div>

    <div class="rk-proj-dashboard view-calc-active" id="rkProjWrapper">
        <div class="rk-proj-controls">
            <div class="rk-proj-switch view-calc" id="rkProjToggle">
                <div class="rk-proj-slider"></div>
                <div class="rk-proj-switch-btn active" data-view="calc">
                    <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 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
                    Mam projekt OZC
                </div>
                <div class="rk-proj-switch-btn" data-view="guess">
                    <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="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>
                    Robię &#8222;na oko&#8221;
                </div>
            </div>
        </div>

        <div class="rk-proj-grid">
            <div class="rk-proj-tile">
                <h4>Rozstaw rur</h4>
                <div class="rk-proj-val" id="valSpacing">10 &#8211; 15 cm</div>
                <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">Sprawdź dlaczego to ważne</a>
            </div>
            <div class="rk-proj-tile">
                <h4>Wydajność pomp</h4>
                <div class="rk-proj-val" id="valPump">Zbilansowana</div>
                <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">Kalkulator doboru</a>
            </div>
            <div class="rk-proj-tile">
                <h4>Grubość wylewki</h4>
                <div class="rk-proj-val" id="valScreed">6 &#8211; 7 cm</div>
                <a href="https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/">Wytyczne wylewek</a>
            </div>
        </div>

        <div class="rk-proj-viz state-calc" id="rkProjViz">
            <svg class="rk-proj-viz-svg" viewBox="0 0 400 150" fill="none" xmlns="http://www.w3.org/2000/svg">
                <rect x="0" y="100" width="400" height="50" fill="#f1f5f9" />
                <path d="M0 100 L400 100" stroke="#cbd5e1" stroke-width="2" stroke-dasharray="5 5" />
                
                <line x1="50" y1="90" x2="50" y2="90" class="rk-pipe" />
                <line x1="110" y1="90" x2="110" y2="90" class="rk-pipe rk-pipe-ghost" />
                <line x1="170" y1="90" x2="170" y2="90" class="rk-pipe" />
                <line x1="230" y1="90" x2="230" y2="90" class="rk-pipe rk-pipe-ghost" />
                <line x1="290" y1="90" x2="290" y2="90" class="rk-pipe" />
                <line x1="350" y1="90" x2="350" y2="90" class="rk-pipe rk-pipe-ghost" />

                <path d="M30 70 Q50 30 70 70" fill="none" stroke-width="4" stroke-linecap="round" class="rk-heat-wave" style="animation-delay: 0s" />
                <path d="M90 70 Q110 30 130 70" fill="none" stroke-width="4" stroke-linecap="round" class="rk-heat-wave" style="animation-delay: 0.3s" />
                <path d="M150 70 Q170 30 190 70" fill="none" stroke-width="4" stroke-linecap="round" class="rk-heat-wave" style="animation-delay: 0.6s" />
                <path d="M210 70 Q230 30 250 70" fill="none" stroke-width="4" stroke-linecap="round" class="rk-heat-wave" style="animation-delay: 0.9s" />
                <path d="M270 70 Q290 30 310 70" fill="none" stroke-width="4" stroke-linecap="round" class="rk-heat-wave" style="animation-delay: 1.2s" />
                <path d="M330 70 Q350 30 370 70" fill="none" stroke-width="4" stroke-linecap="round" class="rk-heat-wave" style="animation-delay: 1.5s" />

                <path d="M30 60 Q50 10 70 60" fill="none" stroke-width="6" stroke-linecap="round" class="rk-heat-bad" style="animation-delay: 0s" />
                <ellipse cx="110" cy="50" rx="30" ry="10" class="rk-cold-spot" />
                <path d="M150 60 Q170 10 190 60" fill="none" stroke-width="6" stroke-linecap="round" class="rk-heat-bad" style="animation-delay: 0.5s" />
                <ellipse cx="230" cy="50" rx="30" ry="10" class="rk-cold-spot" />
                <path d="M270 60 Q290 10 310 60" fill="none" stroke-width="6" stroke-linecap="round" class="rk-heat-bad" style="animation-delay: 1s" />
                <ellipse cx="350" cy="50" rx="30" ry="10" class="rk-cold-spot" />
            </svg>
        </div>

        <div class="rk-proj-desc" id="rkProjDesc">
            <strong>Inwestycja w rzetelny projekt zwraca się w rachunkach już po pierwszym sezonie grzewczym.</strong> Zastosowanie mniejszego rozstawu rur (10-15 cm) i optymalnej grubości wylewki pozwala utrzymać zasilanie na poziomie 35°C. To idealne środowisko pracy dla pompy ciepła (wysoki współczynnik COP).
        </div>
    </div>

    <div class="rk-proj-cta-wrapper">
        <div class="rk-cta-badge">Krok 1 Inwestora</div>
        <h3 class="rk-proj-cta-title">Nie graj w rosyjską ruletkę swoimi rachunkami</h3>
        <p class="rk-proj-cta-text">
            Brak profesjonalnego projektu to gwarancja <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-glowy-vs-projekt-z-obliczeniami-ile-mozesz-stracic-na-bledach/" style="color: var(--rk-proj-accent);">przewymiarowania źródła ciepła</a> i konieczności pracy na wysokich parametrach. W dobie drożejącej energii elektrycznej to ekonomiczne samobójstwo. Zainwestuj ułamek kosztów pompy ciepła w fundament bezawaryjności.
        </p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-massive-btn">
            ZAMÓW PROFESJONALNY PROJEKT OZC
            <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 toggle = document.getElementById('rkProjToggle');
    const btns = toggle.querySelectorAll('.rk-proj-switch-btn');
    const wrapper = document.getElementById('rkProjWrapper');
    const viz = document.getElementById('rkProjViz');
    
    // Elements to update
    const vSpacing = document.getElementById('valSpacing');
    const vPump = document.getElementById('valPump');
    const vScreed = document.getElementById('valScreed');
    const desc = document.getElementById('rkProjDesc');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            
            const view = this.getAttribute('data-view');
            
            // Switch UI state
            toggle.className = 'rk-proj-switch view-' + view;
            wrapper.className = 'rk-proj-dashboard view-' + view + '-active';
            viz.className = 'rk-proj-viz state-' + view;

            if (view === 'calc') {
                vSpacing.textContent = '10 - 15 cm';
                vPump.textContent = 'Zbilansowana';
                vScreed.textContent = '6 - 7 cm';
                desc.innerHTML = '<strong>Inwestycja w rzetelny projekt zwraca się w rachunkach już po pierwszym sezonie grzewczym.</strong> Zastosowanie mniejszego rozstawu rur (10-15 cm) i optymalnej grubości wylewki pozwala utrzymać zasilanie na poziomie 35°C. To idealne środowisko pracy dla pompy ciepła (wysoki współczynnik COP).';
            } else {
                vSpacing.textContent = '> 20 cm';
                vPump.textContent = 'Przewymiarowana';
                vScreed.textContent = 'Loteria';
                desc.innerHTML = '<strong>Brak projektu skutkuje chaosem hydraulicznym.</strong> Zbyt rzadki rozstaw rur wymusza drastyczne podniesienie temperatury zasilania (>45°C), aby zrekompensować martwe, chłodne strefy (niedogrzane punkty). Pompa ciepła traci sprawność, a Twoje rachunki szybują w górę.';
            }
        });
    });
});
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-panel: #1e293b;
    --rk-case-bg: #ffffff;
    --rk-case-surface: #f8fafc;
    --rk-case-border: #e2e8f0;
    --rk-case-text: #334155;
    --rk-case-muted: #64748b;
    
    --rk-case-blue: #0284c7;
    --rk-case-blue-glow: rgba(2, 132, 199, 0.15);
    --rk-case-green: #10b981;
    --rk-case-green-glow: rgba(16, 185, 129, 0.2);
    --rk-case-red: #ef4444;
    --rk-case-red-glow: rgba(239, 68, 68, 0.2);
    
    --rk-case-current: var(--rk-case-red);
}

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

/* Header */
.rk-case-header {
    background: linear-gradient(135deg, var(--rk-case-dark) 0%, #0f172a 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-case-current);
    transition: border-color 0.4s ease;
}

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

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

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

/* Dashboard Grid */
.rk-case-dashboard {
    display: grid;
    grid-template-columns: 1fr 350px;
    background: var(--rk-case-bg);
}

/* Left Content Area */
.rk-case-content {
    padding: 40px 50px;
    border-right: 1px solid var(--rk-case-border);
    display: flex;
    flex-direction: column;
}

/* Sub-toggle (Before/After) */
.rk-case-toggle {
    display: inline-flex;
    background: var(--rk-case-surface);
    border: 1px solid var(--rk-case-border);
    border-radius: 12px;
    padding: 6px;
    margin-bottom: 35px;
    position: relative;
    align-self: flex-start;
}

.rk-case-btn {
    padding: 12px 24px;
    font-size: 13px;
    font-weight: 800;
    border-radius: 8px;
    cursor: pointer;
    z-index: 2;
    color: var(--rk-case-muted);
    transition: color 0.3s;
    display: flex;
    align-items: center;
    gap: 8px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

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

.rk-case-slider {
    position: absolute;
    top: 6px;
    bottom: 6px;
    width: calc(50% - 6px);
    border-radius: 8px;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1;
}

.state-before .rk-case-slider {
    left: 6px;
    background: var(--rk-case-red);
    box-shadow: 0 4px 10px var(--rk-case-red-glow);
}

.state-after .rk-case-slider {
    left: 50%;
    background: var(--rk-case-green);
    box-shadow: 0 4px 10px var(--rk-case-green-glow);
}

/* Dynamic Text Info */
.rk-case-text-block {
    margin-bottom: 30px;
}

.rk-case-text-block h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-case-dark);
    margin: 0 0 15px 0;
}

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

.rk-case-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.rk-case-list li {
    position: relative;
    padding-left: 28px;
    margin-bottom: 12px;
    font-size: 14px;
    line-height: 1.5;
    color: var(--rk-case-dark);
    font-weight: 600;
}

.rk-case-list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 4px;
    width: 18px;
    height: 18px;
    border-radius: 5px;
    background: var(--rk-case-current);
    display: flex;
    align-items: center;
    justify-content: center;
}

.state-before .rk-case-list li::before {
    clip-path: polygon(20% 0%, 0% 20%, 30% 50%, 0% 80%, 20% 100%, 50% 70%, 80% 100%, 100% 80%, 70% 50%, 100% 20%, 80% 0%, 50% 30%);
}

.state-after .rk-case-list li::before {
    clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);
}

/* Right Panel (Metrics & Viz) */
.rk-case-metrics-panel {
    background: var(--rk-case-surface);
    padding: 40px;
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-metric-box {
    background: #ffffff;
    border: 1px solid var(--rk-case-border);
    border-radius: 16px;
    padding: 20px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    position: relative;
    overflow: hidden;
}

.rk-metric-box::after {
    content: '';
    position: absolute;
    top: 0; right: 0; bottom: 0; width: 4px;
    background: var(--rk-case-current);
    transition: background 0.4s ease;
}

.rk-metric-label {
    font-size: 11px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-case-muted);
    letter-spacing: 1px;
    margin-bottom: 8px;
}

.rk-metric-val {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-case-dark);
    display: flex;
    align-items: baseline;
    gap: 4px;
}

.rk-metric-unit {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-case-muted);
}

.rk-metric-trend {
    font-size: 12px;
    font-weight: 700;
    margin-top: 5px;
    color: var(--rk-case-current);
    transition: color 0.4s ease;
}

/* Interactive SVG Diagram */
.rk-case-viz {
    margin-top: auto;
    background: #ffffff;
    border-radius: 16px;
    border: 1px solid var(--rk-case-border);
    padding: 25px;
    display: flex;
    flex-direction: column;
    align-items: center;
}

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

/* SVG Dynamics */
.rk-svg-gauge-bg { fill: none; stroke: #e2e8f0; stroke-width: 12; stroke-linecap: round; }
.rk-svg-gauge-fill { fill: none; stroke: var(--rk-case-current); stroke-width: 12; stroke-linecap: round; transition: stroke-dasharray 1s cubic-bezier(0.4, 0, 0.2, 1), stroke 0.4s ease; }
.rk-svg-pointer { transform-origin: 90px 90px; transition: transform 1s cubic-bezier(0.4, 0, 0.2, 1); fill: var(--rk-case-dark); }
.rk-svg-text-cop { font-size: 24px; font-weight: 900; fill: var(--rk-case-dark); text-anchor: middle; }

/* Link out */
.rk-case-link {
    display: inline-block;
    margin-top: 20px;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-case-blue);
    text-decoration: none;
    border-bottom: 2px solid rgba(2, 132, 199, 0.2);
    transition: border-color 0.3s;
}

.rk-case-link:hover { border-color: var(--rk-case-blue); }

/* Responsive */
@media (max-width: 850px) {
    .rk-case-dashboard { grid-template-columns: 1fr; }
    .rk-case-content { border-right: none; border-bottom: 1px solid var(--rk-case-border); padding: 30px 25px; }
    .rk-case-header { padding: 30px 25px; }
    .rk-case-metrics-panel { padding: 30px 25px; }
    .rk-case-toggle { width: 100%; display: flex; }
    .rk-case-btn { flex: 1; justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#article-case-study",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/"
    },
    "headline": "Case Study: Optymalizacja podłogówki dom 150 m2 (Kielce)",
    "description": "Analiza błędów instalacji ogrzewania podłogowego u Pana Antoniego z Kielc (sierpień 2025). Zobacz jak kalibracja rotametrów i włączenie krzywej grzewczej obniżyło 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.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-01",
    "dateModified": "2026-06-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#dataset-casestudy",
    "name": "Dane audytowe HVAC - Dom 150m2 Kielce",
    "description": "Zestawienie kosztów i współczynnika COP przed i po optymalizacji krzywej grzewczej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "koszt ogrzewania domu 2025",
      "krzywa grzewcza w ogrzewaniu podłogowym",
      "projektowe obciążenie cieplne OZC",
      "spadek temperatury ΔT",
      "termostat w ogrzewaniu podłogowym"
    ],
    "measurementTechnique": "Pomiary przepływów hydraulicznych na rotametrach, rejestracja zużycia energii elektrycznej pompy ciepła oraz weryfikacja współczynnika COP przed i po audycie.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Stan zastany (Przed): Zasilanie 45°C, zadławione przepływy, COP 2.4, sezonowy koszt 4800 zł.",
        "Stan po optymalizacji: Zasilanie max 32°C (z krzywej grzewczej), przepływy dla ΔT=5K, COP 4.6, sezonowy koszt 2200 zł."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#webapp-casestudy",
    "name": "Symulator Audytu HVAC",
    "description": "Interaktywne narzędzie prezentujące wyniki audytu i spadek kosztów ogrzewania po kalibracji w oparciu o projektowe obciążenie cieplne OZC.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-case-wrapper state-before" id="rkCaseApp">
    <div class="rk-case-header">
        <div class="rk-case-badge">Case Study – Raport z Audytu</div>
        <h2>Pan Antoni z Kielc (Dom 150 m²)</h2>
        <p>Analiza z sierpnia 2025 roku. Klasyczny przykład instalacji wykonanej &#8222;na oko&#8221;, bez projektu OZC. Zobacz różnicę parametrów po przeprowadzeniu profesjonalnego audytu hydraulicznego.</p>
    </div>

    <div class="rk-case-dashboard">
        <div class="rk-case-content">
            
            <div class="rk-case-toggle" id="rkCaseToggle">
                <div class="rk-case-slider"></div>
                <div class="rk-case-btn active" data-state="before">Stan Zastany (Przed)</div>
                <div class="rk-case-btn" data-state="after">Po Audycie (Po)</div>
            </div>

            <div class="rk-case-text-block" id="rkCaseTextBlock">
                <h3>Kosztowny błąd instalatora</h3>
                <p>Pan Antoni wprowadził się do nowego domu jesienią 2024. Pierwsza zima okazała się finansową katastrofą, a w salonie pękła fuga między płytkami. Co zastaliśmy na audycie?</p>
                <ul class="rk-case-list">
                    <li>Brak <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektu OZC</a> i ułożenie rur ze zbyt rzadkim rozstawem (co 20 cm w całym domu).</li>
                    <li>Próba ratowania sytuacji poprzez ręczne dławienie <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrów</a>.</li>
                    <li>Wymuszenie na pompie ciepła sztywnej temperatury zasilania aż 45°C.</li>
                </ul>
            </div>

            <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-glowy-vs-projekt-z-obliczeniami-ile-mozesz-stracic-na-bledach/" class="rk-case-link">Poznaj konsekwencje braku projektu →</a>
        </div>

        <div class="rk-case-metrics-panel">
            
            <div class="rk-metric-box">
                <div class="rk-metric-label">Temp. Zasilania Pompy</div>
                <div class="rk-metric-val"><span id="rkValTemp">45</span> <span class="rk-metric-unit">°C</span></div>
                <div class="rk-metric-trend" id="rkTrendTemp">Sztywne ustawienie</div>
            </div>

            <div class="rk-metric-box">
                <div class="rk-metric-label">Szacowany koszt zimy (150 m²)</div>
                <div class="rk-metric-val"><span id="rkValCost">4 800</span> <span class="rk-metric-unit">PLN</span></div>
                <div class="rk-metric-trend" id="rkTrendCost">Znaczne przepłacanie</div>
            </div>

            <div class="rk-case-viz">
                <div class="rk-metric-label" style="margin-bottom:15px; text-align:center;">Wydajność Układu (COP)</div>
                <svg class="rk-viz-svg" viewBox="0 0 180 140">
                    <path class="rk-svg-gauge-bg" d="M 30 110 A 70 70 0 0 1 150 110" />
                    <path class="rk-svg-gauge-fill" id="rkSvgFill" d="M 30 110 A 70 70 0 0 1 150 110" stroke-dasharray="40 200" />
                    
                    <g class="rk-svg-pointer" id="rkSvgPointer" style="transform: rotate(-50deg);">
                        <circle cx="90" cy="110" r="10" />
                        <polygon points="86,110 94,110 90,50" />
                    </g>
                    
                    <text x="90" y="140" class="rk-svg-text-cop" id="rkSvgText">COP 2.4</text>
                </svg>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const appWrapper = document.getElementById('rkCaseApp');
    const btns = document.querySelectorAll('.rk-case-btn');
    
    // DOM Elements to update
    const textBlock = document.getElementById('rkCaseTextBlock');
    const valTemp = document.getElementById('rkValTemp');
    const trendTemp = document.getElementById('rkTrendTemp');
    const valCost = document.getElementById('rkValCost');
    const trendCost = document.getElementById('rkTrendCost');
    
    // SVG Elements
    const svgFill = document.getElementById('rkSvgFill');
    const svgPointer = document.getElementById('rkSvgPointer');
    const svgText = document.getElementById('rkSvgText');

    // Data Engine
    const auditData = {
        before: {
            cssClass: 'state-before',
            title: 'Kosztowny błąd instalatora',
            desc: 'Pan Antoni wprowadził się do nowego domu jesienią 2024. Pierwsza zima okazała się finansową katastrofą, a w salonie pękła fuga między płytkami. Co zastaliśmy na audycie?',
            bullets: [
                'Brak <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektu OZC</a> i ułożenie rur ze zbyt rzadkim rozstawem (co 20 cm w całym domu).',
                'Próba ratowania sytuacji poprzez ręczne dławienie <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrów</a>.',
                'Wymuszenie na pompie ciepła sztywnej temperatury zasilania aż 45°C.'
            ],
            temp: '45',
            tempTrend: 'Sztywne ustawienie (Złe)',
            cost: '4 800',
            costTrend: 'Ogromne straty finansowe',
            cop: 'COP 2.4',
            svgDash: '40 200', // Low fill
            svgRot: '-50deg'   // Pointing left (low)
        },
        after: {
            cssClass: 'state-after',
            title: 'Optymalizacja Hydrauliki',
            desc: 'Wdrożyliśmy program naprawczy bez konieczności kucia posadzek. Kluczem była optymalizacja przepływów na belce rozdzielacza oraz inteligentna praca automatyki.',
            bullets: [
                'Odblokowanie rotametrów – wykalibrowanie przepływów pod <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">spadek temperatury ΔT=5K</a>.',
                'Włączenie <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywej grzewczej</a>. Pompa reaguje teraz na temperaturę na zewnątrz.',
                'Wpięcie systemu <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">termostatów</a> zapobiegających przegrzewaniu.'
            ],
            temp: '32',
            tempTrend: 'Z krzywej grzewczej (Max)',
            cost: '2 200',
            costTrend: 'Oszczędność 2600 zł / sezon',
            cop: 'COP 4.6',
            svgDash: '140 200', // High fill
            svgRot: '40deg'     // Pointing right (high)
        }
    };

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            
            const state = this.getAttribute('data-state');
            const data = auditData[state];

            // Update Root Class
            appWrapper.className = 'rk-case-wrapper ' + data.cssClass;

            // Update Text Block
            let htmlStr = `<h3>${data.title}</h3><p>${data.desc}</p><ul class="rk-case-list">`;
            data.bullets.forEach(b => { htmlStr += `<li>${b}</li>`; });
            htmlStr += `</ul>`;
            textBlock.innerHTML = htmlStr;

            // Update Metrics
            valTemp.textContent = data.temp;
            trendTemp.textContent = data.tempTrend;
            valCost.textContent = data.cost;
            trendCost.textContent = data.costTrend;

            // Update SVG
            svgFill.setAttribute('stroke-dasharray', data.svgDash);
            svgPointer.style.transform = `rotate(${data.svgRot})`;
            svgText.textContent = data.cop;
        });
    });
});
</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-blue-glow: rgba(2, 132, 199, 0.15);
    --rk-auth-gold: #eab308;
    --rk-auth-gold-glow: rgba(234, 179, 8, 0.2);
    --rk-auth-fb: #1877F2;
    --rk-auth-li: #0A66C2;
}

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

/* Header Area */
.rk-auth-header {
    background: linear-gradient(135deg, var(--rk-auth-dark) 0%, #1e293b 100%);
    padding: 35px 50px;
    color: #ffffff;
    position: relative;
    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;
}

/* 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 {
    position: relative;
    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 10px 25px var(--rk-auth-blue-glow);
    position: relative;
    z-index: 2;
}

.rk-auth-photo-ring {
    position: absolute;
    top: -8px; left: -8px; right: -8px; bottom: -8px;
    border-radius: 50%;
    border: 2px dashed var(--rk-auth-blue);
    animation: rkSpin 20s linear infinite;
    z-index: 1;
}

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

.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: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
}

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

.rk-social-btn {
    flex: 1;
    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;
    transition: transform 0.3s, box-shadow 0.3s;
}

.rk-social-btn.fb { background: var(--rk-auth-fb); }
.rk-social-btn.li { background: var(--rk-auth-li); }

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

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

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

.rk-auth-tab {
    flex: 1;
    padding: 20px;
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-auth-muted);
    cursor: pointer;
    transition: all 0.3s;
    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-blue);
    background: var(--rk-auth-surface);
}

.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;
    animation: rkFadeInUp 0.4s ease forwards;
}

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

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

.rk-auth-panel h3 {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0 0 20px 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; }

/* 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: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    gap: 15px;
    transition: transform 0.3s;
}

.rk-stat-box:hover {
    transform: scale(1.02);
    border-color: var(--rk-auth-blue);
}

.rk-stat-icon {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: #ffffff;
    color: var(--rk-auth-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    flex-shrink: 0;
}

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

.rk-stat-val {
    font-size: 24px;
    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;
}

/* SVG Interactive Guarantee (Panel 3) */
.rk-guarantee-viz {
    background: var(--rk-auth-dark);
    border-radius: 16px;
    padding: 30px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
    margin-top: 20px;
    color: #ffffff;
}

.rk-gv-text h4 {
    margin: 0 0 10px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-auth-gold);
}

.rk-gv-text p {
    margin: 0;
    font-size: 14px;
    color: #cbd5e1;
    line-height: 1.6;
}

.rk-gv-svg {
    width: 100px;
    height: 100px;
    flex-shrink: 0;
}

.rk-gv-shield {
    fill: none;
    stroke: var(--rk-auth-gold);
    stroke-width: 4;
    stroke-linecap: round;
    stroke-linejoin: round;
    animation: rkShieldPulse 2s infinite alternate;
}

.rk-gv-check {
    fill: none;
    stroke: #ffffff;
    stroke-width: 6;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-dasharray: 100;
    stroke-dashoffset: 0;
}

@keyframes rkShieldPulse {
    0% { filter: drop-shadow(0 0 5px rgba(234, 179, 8, 0.4)); }
    100% { filter: drop-shadow(0 0 15px rgba(234, 179, 8, 0.8)); transform: scale(1.05); }
}

/* 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-profile { border-right: none; border-bottom: 1px solid var(--rk-auth-border); padding: 30px 25px; }
    .rk-auth-tabs { flex-direction: column; }
    .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; }
    .rk-auth-panel { padding: 30px 25px; }
    .rk-auth-stats { grid-template-columns: 1fr; }
    .rk-guarantee-viz { flex-direction: column; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#article-autor",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/"
    },
    "headline": "Gwarancja inżynierskiej jakości – Kto stoi za tym poradnikiem?",
    "description": "Profil ekspercki Roberta Kucharskiego, inżyniera HVAC z doświadczeniem w projektowaniu optymalnej temperatury zasilania podłogówki na bazie obliczeń 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/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-06-01",
    "dateModified": "2026-06-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#dataset-portfolio",
    "name": "Baza wiedzy i doświadczenia HVAC - Robert Kucharski",
    "description": "Zestawienie autorskich statystyk i doświadczeń w optymalizacji systemów płaszczyznowych oraz badaniu wydajności pomp ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowanie ogrzewania podłogowego OZC",
      "optymalna temperatura zasilania podłogówki",
      "sterowanie pogodowe w ogrzewaniu podłogowym",
      "wydajność pompy ciepła",
      "audyt hydrauliczny instalacji"
    ],
    "measurementTechnique": "Agregacja danych z ponad 1000 zrealizowanych projektów instalacji niskotemperaturowych, ze średnim wzrostem efektywności energetycznej budynków o 20%.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zrealizowane projekty instalacji płaszczyznowych: 1000+",
        "Średnia redukcja kosztów ogrzewania dzięki optymalizacji zasilania: 20%",
        "Specjalizacja: Integracja krzywych grzewczych i normy PN-EN 1264"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#webapp-autor-portfolio",
    "name": "Interaktywne Portfolio Eksperckie E-E-A-T",
    "description": "Moduł weryfikujący autorytet inżynierski autora, integrujący statystyki projektowe, gwarancję poprawności obliczeń OZC i certyfikaty z zakresu optymalizacji HVAC.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-auth-container" id="rkAuthApp">
    
    <div class="rk-auth-header">
        <div class="rk-auth-header-text">
            <h2>Gwarancja inżynierskiej jakości</h2>
            <p>Nie powielam internetowych mitów. Kto odpowiada za wiedzę 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 E-E-A-T
        </div>
    </div>

    <div class="rk-auth-grid">
        
        <div class="rk-auth-profile">
            <div class="rk-auth-photo-wrap">
                <div class="rk-auth-photo-ring"></div>
                <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/robert.kucharski.budowa.bez.sciemy" 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>
                    Facebook
                </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-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>
                    W Liczbach
                </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 nie zgadywanie, to czysta matematyka i fizyka budowli. Od lat doradzam inwestorom, audytuję błędy deweloperów i udowadniam, że odpowiednia <strong>temperatura zasilania podłogówki</strong> to klucz do niższych rachunków i żywotności pompy ciepła.
                </p>
                <p>
                    Zbudowałem własne zaplecze techniczne i dom od zera. Wiem dokładnie, ile kosztuje instalatora pośpiech, a inwestora – ufność w &#8222;standardowe rozwiązania bez obliczeń&#8221;. W projekt-ogrzewania.pl łączę <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">wiedzę inżynierską</a> z pragmatyzmem z placu budowy.
                </p>
            </div>

            <div class="rk-auth-panel" id="panel-liczby">
                <h3>Instalacje oparte na twardych danych</h3>
                <p>Analizuję każdą pętlę grzewczą i optymalizuję <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywe grzewcze</a> pomp ciepła pod kątem maksymalnej wydajności.</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.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>
                        </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.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>
                        <div class="rk-stat-info">
                            <div class="rk-stat-val">~20%</div>
                            <div class="rk-stat-label">Obniżenie kosztów energii</div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-auth-panel" id="panel-filozofia">
                <h3>Bezbłędny system zaczyna się na papierze</h3>
                <p>
                    Mój fundament to ścisła integracja z wytycznymi technicznymi. Nie uznaję układania rur &#8222;co 15 cm wszędzie&#8221;. Każde pomieszczenie ma inne straty cieplne, co wymaga kalibracji przepływu dla idealnej różnicy <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">temperatur ΔT</a>.
                </p>
                
                <div class="rk-guarantee-viz">
                    <div class="rk-gv-text">
                        <h4>Zgodność z PN-EN 1264</h4>
                        <p>Moje algorytmy i artykuły opierają się na obowiązujących normach projektowania ogrzewania płaszczyznowego, gwarantując fizjologiczny komfort domowników i bezpieczeństwo posadzek.</p>
                    </div>
                    <svg class="rk-gv-svg" viewBox="0 0 100 100">
                        <path class="rk-gv-shield" d="M50 10 L10 25 L10 50 C10 75 40 90 50 95 C60 90 90 75 90 50 L90 25 Z"></path>
                        <path class="rk-gv-check" d="M 35 50 L 45 60 L 70 35"></path>
                    </svg>
                </div>
            </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>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-blue: #0ea5e9;
    --rk-faq-blue-hover: #0284c7;
    --rk-faq-bg: #ffffff;
    --rk-faq-surface: #f8fafc;
    --rk-faq-border: #e2e8f0;
    --rk-faq-text: #334155;
    --rk-faq-muted: #64748b;
    --rk-faq-accent: #38bdf8;
}

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

/* Nagłówek i animowane tło */
.rk-faq-header {
    background: linear-gradient(135deg, var(--rk-faq-dark) 0%, #1e293b 100%);
    padding: 45px 50px;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
    color: #ffffff;
    overflow: hidden;
}

.rk-faq-header::before {
    content: '';
    position: absolute;
    top: -50%;
    right: -10%;
    width: 300px;
    height: 300px;
    background: radial-gradient(circle, rgba(14, 165, 233, 0.15) 0%, transparent 70%);
    border-radius: 50%;
    animation: rkFaqPulseBg 4s infinite alternate;
}

@keyframes rkFaqPulseBg {
    0% { transform: scale(1); opacity: 0.5; }
    100% { transform: scale(1.5); opacity: 1; }
}

.rk-faq-title-area {
    position: relative;
    z-index: 2;
    flex: 1;
}

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

.rk-faq-title-area p {
    font-size: 16px;
    color: #94a3b8;
    margin: 0;
    line-height: 1.6;
    max-width: 500px;
}

.rk-faq-main-icon {
    position: relative;
    z-index: 2;
    width: 80px;
    height: 80px;
    flex-shrink: 0;
}

.rk-faq-anim-gear {
    transform-origin: center;
    animation: rkSpinSlow 12s linear infinite;
}

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

/* Interaktywne Filtry */
.rk-faq-filters {
    padding: 20px 50px;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-faq-border);
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.rk-faq-filter-btn {
    padding: 8px 16px;
    border-radius: 999px;
    border: 1px solid var(--rk-faq-border);
    background: var(--rk-faq-surface);
    color: var(--rk-faq-muted);
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: center;
    gap: 6px;
}

.rk-faq-filter-btn:hover {
    border-color: var(--rk-faq-blue);
    color: var(--rk-faq-blue);
}

.rk-faq-filter-btn.active {
    background: var(--rk-faq-blue);
    border-color: var(--rk-faq-blue);
    color: #ffffff;
    box-shadow: 0 4px 10px rgba(14, 165, 233, 0.25);
}

/* Akordeon FAQ */
.rk-faq-list {
    padding: 30px 50px;
    background: var(--rk-faq-surface);
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-faq-item {
    background: #ffffff;
    border: 1px solid var(--rk-faq-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq-item:hover {
    border-color: #cbd5e1;
    box-shadow: 0 4px 12px rgba(0,0,0,0.03);
}

.rk-faq-item.active {
    border-color: var(--rk-faq-blue);
    box-shadow: 0 8px 20px -5px rgba(14, 165, 233, 0.15);
}

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

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

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

.rk-faq-chevron {
    width: 24px;
    height: 24px;
    color: var(--rk-faq-muted);
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), color 0.3s;
    flex-shrink: 0;
}

.rk-faq-item.active .rk-faq-chevron {
    transform: rotate(180deg);
    color: var(--rk-faq-blue);
}

.rk-faq-answer {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    padding: 0 25px;
}

.rk-faq-item.active .rk-faq-answer {
    max-height: 500px; /* Wysoka wartość dla CSS transition */
    opacity: 1;
    padding: 0 25px 25px 25px;
}

.rk-faq-answer-content {
    padding-top: 15px;
    border-top: 1px solid #f1f5f9;
}

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

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

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

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

.rk-faq-answer a:hover {
    color: var(--rk-faq-blue-hover);
    border-bottom-style: solid;
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-faq-header { flex-direction: column; text-align: center; padding: 35px 25px; }
    .rk-faq-title-area p { margin: 0 auto; }
    .rk-faq-filters { padding: 15px 20px; justify-content: center; }
    .rk-faq-list { padding: 25px 20px; }
    .rk-faq-question { padding: 15px 20px; }
    .rk-faq-question h3 { font-size: 15px; }
    .rk-faq-answer { padding: 0 20px; }
    .rk-faq-item.active .rk-faq-answer { padding: 0 20px 20px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania o optymalną temperaturę podłogówki",
    "description": "Baza wiedzy inżynierskiej: maksymalna temperatura zasilania, sterowanie strefowe, bezwładność cieplna wylewki oraz ryzyko zasilania podłogówki wysokim parametrem z kotła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-01",
    "dateModified": "2026-06-01",
    "mainEntity": {
      "@type": "FAQPage",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Jaka jest maksymalna temperatura wody w podłogówce?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Maksymalna dopuszczalna temperatura zasilania w nowoczesnych układach to zazwyczaj 45°C–50°C, jednak powyżej 40°C znacznie rośnie ryzyko uszkodzenia posadzki. Praca ciągła na wysokim parametrze skraca żywotność rur PEX i drastycznie obniża współczynnik COP pompy ciepła."
          }
        },
        {
          "@type": "Question",
          "name": "Czy temperatura podłogówki powinna być taka sama w każdym pokoju?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie, temperatura powinna być dostosowana do zapotrzebowania konkretnego pomieszczenia poprzez różny rozstaw rur i zastosowanie automatyki strefowej. Innego komfortu cieplnego wymaga łazienka (24°C), a innego sypialnia (19°C), co regulujemy rotametrami na rozdzielaczu."
          }
        },
        {
          "@type": "Question",
          "name": "Jak szybko podłogówka reaguje na zmiany temperatury?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Ze względu na dużą bezwładność cieplną wylewki (grubość betonu 6-7 cm), zmiana temperatury odczuwalna jest po około 3–6 godzinach od regulacji na termostacie. Szybszą reakcją charakteryzują się jedynie systemy suche, gdzie opór cieplny nad rurą jest minimalny."
          }
        },
        {
          "@type": "Question",
          "name": "Czy można zasilać podłogówkę wodą o temp. 50°C?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Jest to technicznie możliwe przy połączeniu ze starym kotłem zasypowym, ale absolutnie niezalecane w nowoczesnym budownictwie ze względu na ryzyko pękania posadzek i nieefektywną pracę. Konieczne jest użycie zaworu mieszającego dla zabezpieczenia układu płaszczyznowego przed przegrzaniem."
          }
        }
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#dataset-faq",
    "name": "Baza Wiedzy FAQ - Parametry Pracy Ogrzewania Podłogowego",
    "description": "Zestawienie inżynierskich pytań i odpowiedzi dotyczących bezpieczeństwa temperaturowego, bezwładności i sterowania strefowego w instalacjach płaszczyznowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna temperatura zasilania podłogówki",
      "sterowanie strefowe ogrzewaniem",
      "bezwładność cieplna w ogrzewaniu podłogowym",
      "zawór mieszający w ogrzewaniu podłogowym",
      "ryzyko pękania posadzki"
    ],
    "measurementTechnique": "Ekstrakcja danych normatywnych z normy PN-EN 1264 oraz charakterystyki pracy pomp ciepła w układach niskotemperaturowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Analiza wpływu temperatury >40°C na wylewki i efektywność energetyczną.",
        "Wytyczne do projektowania zróżnicowanych stref cieplnych za pomocą rotametrów."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#webapp-faq",
    "name": "Interaktywny Asystent FAQ Ogrzewania Płaszczyznowego",
    "description": "Dynamiczny komponent interfejsu (akordeon wiedzy) umożliwiający szybkie filtrowanie i wyszukiwanie inżynierskich odpowiedzi dotyczących norm i eksploatacji ogrzewania podłogowego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-faq-container" id="rk-faq-app">
    <div class="rk-faq-header">
        <div class="rk-faq-title-area">
            <h2>FAQ – Najczęściej zadawane pytania</h2>
            <p>Rozwiewamy inżynierskie mity. Poznaj oparte na normach (PN-EN 1264) odpowiedzi dotyczące temperatury, bezwładności posadzki i bezpiecznej eksploatacji.</p>
        </div>
        <div class="rk-faq-main-icon">
            <svg viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M50 15 C 30 15, 15 30, 15 50 C 15 70, 30 85, 50 85 C 70 85, 85 70, 85 50 C 85 30, 70 15, 50 15 Z" stroke="#38bdf8" stroke-width="4" stroke-dasharray="10 6" class="rk-faq-anim-gear"/>
                <path d="M40 40 C40 35, 45 30, 50 30 C55 30, 60 35, 60 40 C60 45, 55 48, 50 52 L50 58" stroke="#ffffff" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
                <circle cx="50" cy="70" r="4" fill="#ffffff"/>
            </svg>
        </div>
    </div>

    <div class="rk-faq-filters" id="rkFaqFilters">
        <button class="rk-faq-filter-btn active" data-filter="all">Wszystkie pytania</button>
        <button class="rk-faq-filter-btn" data-filter="parametry">Parametry i Normy</button>
        <button class="rk-faq-filter-btn" data-filter="sterowanie">Sterowanie</button>
    </div>

    <div class="rk-faq-list" id="rkFaqList">
        
        <div class="rk-faq-item" data-category="parametry">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>Jaka jest maksymalna temperatura wody w podłogówce?</h3>
                <svg class="rk-faq-chevron" 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>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-content">
                    <p>
                        Maksymalna dopuszczalna temperatura zasilania w nowoczesnych układach to zazwyczaj <strong>45°C–50°C</strong>, jednak długotrwała praca powyżej 40°C jest błędem sztuki. Oznacza to ogromne ryzyko zniszczenia posadzki (pękanie płytek, rozsychanie drewna) oraz pogorszenie komfortu domowników (efekt &#8222;ciężkich nóg&#8221;). 
                    </p>
                    <p>
                        W poprawnie obliczonym systemie <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalna temperatura zasilania podłogówki</a> z pompy ciepła nie powinna przekraczać 35°C w największe mrozy. Utrzymanie niskiego parametru to fundament wysokiego COP i niskich rachunków.
                    </p>
                </div>
            </div>
        </div>

        <div class="rk-faq-item" data-category="sterowanie">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>Czy temperatura podłogówki powinna być taka sama w każdym pokoju?</h3>
                <svg class="rk-faq-chevron" 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>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-content">
                    <p>
                        Zdecydowanie nie. Temperatura wody grzewczej wychodzącej z pompy jest jedna, ale temperatura posadzki w każdym pomieszczeniu musi być dostosowana do jego funkcji. W łazience potrzebujemy <strong>24°C</strong>, podczas gdy w sypialni komfortowy sen zapewnia <strong>18-19°C</strong>.
                    </p>
                    <p>
                        Osiągamy to na etapie projektu poprzez zagęszczenie pętli rur (np. co 10 cm w łazience, co 15 cm w salonie) oraz precyzyjne <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowanie strefowe ogrzewaniem</a> z wykorzystaniem dławienia przepływów na rotametrach rozdzielacza i termostatów pokojowych.
                    </p>
                </div>
            </div>
        </div>

        <div class="rk-faq-item" data-category="parametry">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>Jak szybko podłogówka reaguje na zmiany temperatury?</h3>
                <svg class="rk-faq-chevron" 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>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-content">
                    <p>
                        W tradycyjnym systemie mokrym (wylewka betonowa lub anhydrytowa o grubości 6-7 cm) zmiana temperatury na termostacie jest odczuwalna w pomieszczeniu po upływie <strong>od 3 do nawet 6 godzin</strong>. Zjawisko to nazywamy <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładnością cieplną w ogrzewaniu podłogowym</a>.
                    </p>
                    <p>
                        Masywna płyta betonowa długo się nagrzewa, ale też bardzo długo oddaje zakumulowane ciepło. Z tego powodu nie zaleca się drastycznego obniżania temperatury na noc lub na czas wyjścia do pracy (np. o 3-4 stopnie), ponieważ ponowne wygrzanie wyziębionej płyty pochłonie więcej energii niż utrzymywanie stałej, stabilnej temperatury.
                    </p>
                </div>
            </div>
        </div>

        <div class="rk-faq-item" data-category="sterowanie">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>Czy można zasilać podłogówkę wodą o temp. 50°C?</h3>
                <svg class="rk-faq-chevron" 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>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-content">
                    <p>
                        Bezpośrednie zasilanie instalacji płaszczyznowej wodą o temperaturze 50°C jest błędem sztuki instalacyjnej. Tak wysoki parametr jest zarezerwowany dla grzejników wysokotemperaturowych. Wpuszczenie 50°C w podłogę doprowadzi do przekroczenia normy PN-EN 1264, zniszczenia struktury jastrychu i odkształcenia paneli.
                    </p>
                    <p>
                        Jeśli źródłem ciepła jest kocioł na pellet, gaz lub węgiel, bezwzględnie wymagany jest <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zawór mieszający w ogrzewaniu podłogowym</a> połączony z grupą pompową. Obniża on temperaturę zasilania pętli poprzez podmieszanie gorącej wody z kotła z chłodniejszą wodą powracającą z podłogówki.
                    </p>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Logika Akordeonu
    const faqItems = document.querySelectorAll('.rk-faq-item');
    
    faqItems.forEach(item => {
        const btn = item.querySelector('.rk-faq-question');
        
        btn.addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            
            // Zamknij wszystkie inne
            faqItems.forEach(otherItem => {
                otherItem.classList.remove('active');
                otherItem.querySelector('.rk-faq-question').setAttribute('aria-expanded', 'false');
            });
            
            // Otwórz kliknięty jeśli był zamknięty
            if (!isActive) {
                item.classList.add('active');
                btn.setAttribute('aria-expanded', 'true');
            }
        });
    });

    // Logika Filtrowania
    const filterBtns = document.querySelectorAll('.rk-faq-filter-btn');
    
    filterBtns.forEach(btn => {
        btn.addEventListener('click', () => {
            // Zmiana aktywnego przycisku
            filterBtns.forEach(b => b.classList.remove('active'));
            btn.classList.add('active');
            
            const filterValue = btn.getAttribute('data-filter');
            
            // Filtrowanie elementów
            faqItems.forEach(item => {
                item.classList.remove('active'); // Zamknij otwarte przy filtrowaniu
                item.querySelector('.rk-faq-question').setAttribute('aria-expanded', 'false');
                
                if (filterValue === 'all' || item.getAttribute('data-category') === filterValue) {
                    item.style.display = 'block';
                    // Animacja pojawiania się
                    setTimeout(() => {
                        item.style.opacity = '1';
                        item.style.transform = 'translateY(0)';
                    }, 50);
                } else {
                    item.style.opacity = '0';
                    item.style.transform = 'translateY(10px)';
                    setTimeout(() => {
                        item.style.display = 'none';
                    }, 300); // Czas trwania animacji zanikania w CSS (jeśli dodana, tu dla płynności)
                }
            });
        });
    });
});
</script>



<style>
:root {
    --rk-opt-dark: #0f172a;
    --rk-opt-card: #1e293b;
    --rk-opt-blue: #0284c7;
    --rk-opt-accent: #38bdf8;
    --rk-opt-green: #10b981;
    --rk-opt-green-glow: rgba(16, 185, 129, 0.3);
    --rk-opt-red: #ef4444;
    --rk-opt-red-glow: rgba(239, 68, 68, 0.3);
    --rk-opt-text: #f8fafc;
    --rk-opt-muted: #94a3b8;
    --rk-opt-bg: #ffffff;
    --rk-opt-border: #e2e8f0;
}

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

/* Sekcja Główna */
.rk-opt-header {
    background: linear-gradient(145deg, var(--rk-opt-dark) 0%, var(--rk-opt-card) 100%);
    padding: 40px 50px;
    color: var(--rk-opt-text);
    position: relative;
}

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

.rk-opt-header p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-opt-muted);
    margin: 0 0 15px 0;
    max-width: 800px;
}

.rk-opt-highlight {
    color: var(--rk-opt-accent);
    font-weight: 700;
}

/* Interfejs Symulatora */
.rk-opt-dashboard {
    display: grid;
    grid-template-columns: 1fr 350px;
    background: #f8fafc;
    border-top: 1px solid var(--rk-opt-border);
}

.rk-opt-controls {
    padding: 40px 50px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

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

/* Przełącznik jak w aplikacji (Toggle) */
.rk-opt-toggle-container {
    background: #ffffff;
    border: 1px solid var(--rk-opt-border);
    border-radius: 16px;
    padding: 8px;
    display: flex;
    position: relative;
    margin-bottom: 30px;
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.02);
}

.rk-opt-toggle-btn {
    flex: 1;
    padding: 14px 20px;
    text-align: center;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    border-radius: 12px;
    transition: all 0.3s ease;
    z-index: 2;
    color: #64748b;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.rk-opt-toggle-btn.active[data-mode="eco"] {
    color: #ffffff;
}

.rk-opt-toggle-btn.active[data-mode="waste"] {
    color: #ffffff;
}

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

.rk-opt-toggle-container.mode-eco .rk-opt-toggle-slider {
    left: 8px;
    background: var(--rk-opt-green);
    box-shadow: 0 4px 12px var(--rk-opt-green-glow);
}

.rk-opt-toggle-container.mode-waste .rk-opt-toggle-slider {
    left: calc(50%);
    background: var(--rk-opt-red);
    box-shadow: 0 4px 12px var(--rk-opt-red-glow);
}

/* Tekst wynikowy */
.rk-opt-result-text {
    background: #ffffff;
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-opt-border);
    min-height: 140px;
    transition: all 0.3s ease;
}

.rk-opt-result-text p {
    margin: 0;
    font-size: 15px;
    line-height: 1.6;
    color: #475569;
}

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

.rk-opt-result-text a:hover {
    border-color: var(--rk-opt-blue);
}

/* Wizualizacja Termometru (SVG) */
.rk-opt-visual {
    background: #ffffff;
    padding: 40px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    border-left: 1px solid var(--rk-opt-border);
    position: relative;
}

.rk-opt-visual h4 {
    margin: 0 0 20px 0;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--rk-opt-muted);
}

.rk-thermometer-svg {
    width: 100px;
    height: 220px;
    overflow: visible;
}

.rk-therm-bg { fill: #f1f5f9; stroke: #e2e8f0; stroke-width: 2; }
.rk-therm-liquid { transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1); }
.rk-therm-glow { transition: all 0.8s; opacity: 0; }

.state-eco .rk-therm-liquid { fill: var(--rk-opt-green); }
.state-eco .rk-therm-glow { fill: var(--rk-opt-green); opacity: 0.2; filter: blur(8px); }
.state-eco .rk-therm-level { transform: translateY(0); }
.state-eco .rk-therm-text { fill: var(--rk-opt-green); }

.state-waste .rk-therm-liquid { fill: var(--rk-opt-red); }
.state-waste .rk-therm-glow { fill: var(--rk-opt-red); opacity: 0.3; filter: blur(12px); animation: rkPulseWarning 1.5s infinite alternate; }
.state-waste .rk-therm-level { transform: translateY(-70px); }
.state-waste .rk-therm-text { fill: var(--rk-opt-red); }

@keyframes rkPulseWarning {
    from { opacity: 0.2; filter: blur(8px); }
    to { opacity: 0.4; filter: blur(15px); }
}

.rk-therm-value {
    font-size: 28px;
    font-weight: 900;
    transition: fill 0.3s;
}

/* CTA Footer */
.rk-opt-footer {
    padding: 30px 50px;
    background: #ffffff;
    border-top: 1px solid var(--rk-opt-border);
    display: flex;
    justify-content: space-between;
    align-items: center;
}

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

.rk-opt-btn:hover {
    background: var(--rk-opt-blue);
    transform: translateY(-2px);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.3);
}

/* Responsywność */
@media (max-width: 850px) {
    .rk-opt-dashboard { grid-template-columns: 1fr; }
    .rk-opt-visual { border-left: none; border-top: 1px solid var(--rk-opt-border); padding: 30px; }
    .rk-opt-footer { flex-direction: column; gap: 20px; text-align: center; }
    .rk-opt-header { padding: 30px 25px; }
    .rk-opt-controls { padding: 30px 25px; }
    .rk-opt-toggle-container { flex-direction: column; }
    .rk-opt-toggle-slider { width: calc(100% - 16px); top: 8px; height: calc(50% - 8px); transition: all 0.3s ease; }
    .rk-opt-toggle-container.mode-eco .rk-opt-toggle-slider { top: 8px; left: 8px; }
    .rk-opt-toggle-container.mode-waste .rk-opt-toggle-slider { top: calc(50%); left: 8px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#article-podsumowanie-wydajnosci",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/"
    },
    "headline": "Podsumowanie: Jak ustawić system dla maksymalnej wydajności?",
    "description": "Złoty standard konfiguracji ogrzewania podłogowego. Dowiedz się, dlaczego praca w zakresie 30°C–35°C łączy komfort, ekologię i realne oszczędności finansowe dzięki krzywej grzewczej.",
    "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-06-01",
    "dateModified": "2026-06-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#dataset-temperatury",
    "name": "Zestawienie optymalizacji parametrów temperatury zasilania podłogówki",
    "description": "Techniczne porównanie złotego standardu inżynierskiego (30-35°C) z błędnymi ustawieniami empirycznymi. Baza danych wpływu krzywej grzewczej na roczne koszty eksploatacji.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "optymalna temperatura ogrzewania podłogowego",
      "krzywa grzewcza pompy ciepła",
      "obliczenia hydrauliczne podłogówki",
      "projekt techniczny instalacji",
      "oszczędności finansowe na ogrzewaniu"
    ],
    "measurementTechnique": "Analiza wskaźników efektywności COP dla układów płaszczyznowych pracujących w różnych przedziałach temperatur zasilania.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Ustawienia Inżynierskie: Zasilanie 30-35°C, maksymalna żywotność posadzki, najwyższe COP.",
        "Ustawienia Empiryczne: Zasilanie >40°C, straty energii, ryzyko pękania wylewki."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#webapp-symulator",
    "name": "Symulator Efektywności Cieplnej Podłogówki",
    "description": "Interaktywny interfejs wizualizujący wpływ wyboru temperatury zasilania na koszty, komfort oraz ekologię w domowych systemach grzewczych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-opt-wrapper" id="rk-opt-app">
    <div class="rk-opt-header">
        <h2>Podsumowanie: Jak ustawić system dla maksymalnej wydajności?</h2>
        <p>Optymalizacja temperatury to proces dwuetapowy. Najpierw precyzyjny projekt techniczny, a następnie odpowiednia konfiguracja parametrów w automatyce źródła ciepła. <span class="rk-opt-highlight">Dążenie do pracy w zakresie 30°C–35°C to złoty standard.</span></p>
        <p>Jeśli budujesz lub remontujesz – nie pomijaj etapu obliczeń. To tutaj zapadają najważniejsze decyzje o kosztach Twojego życia w kolejnych latach.</p>
    </div>

    <div class="rk-opt-dashboard">
        <div class="rk-opt-controls">
            <h3>Wybierz model sterowania:</h3>
            
            <div class="rk-opt-toggle-container mode-eco" id="rkOptToggleGroup">
                <div class="rk-opt-toggle-slider"></div>
                <div class="rk-opt-toggle-btn active" data-mode="eco">
                    <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>
                    Złoty Standard
                </div>
                <div class="rk-opt-toggle-btn" data-mode="waste">
                    <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="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>
                    &#8222;Ustawienia na oko&#8221;
                </div>
            </div>

            <div class="rk-opt-result-text" id="rkOptResultBox">
                <p>
                    <strong>Zakres 30°C–35°C</strong> łączy maksymalny komfort, najwyższą ekologię i realne oszczędności finansowe. System wykorzystuje właściwie skonfigurowaną <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywą grzewczą</a>, a fundamentem są rzetelne obliczenia hydrauliczne. Instalacja odwdzięcza się bezobsługową pracą przez dekady.
                </p>
            </div>
        </div>

        <div class="rk-opt-visual state-eco" id="rkOptVisualBox">
            <h4>Temperatura zasilania</h4>
            <svg class="rk-thermometer-svg" viewBox="0 0 100 220">
                <defs>
                    <clipPath id="therm-clip">
                        <rect x="35" y="20" width="30" height="140" rx="15" />
                    </clipPath>
                </defs>
                <!-- Glow effect background -->
                <circle cx="50" cy="180" r="35" class="rk-therm-glow" />
                
                <!-- Thermometer Body -->
                <rect x="35" y="20" width="30" height="150" rx="15" class="rk-therm-bg" />
                <circle cx="50" cy="175" r="25" class="rk-therm-bg" />
                
                <!-- Liquid Fill inside tube -->
                <g clip-path="url(#therm-clip)">
                    <!-- translateY(0) = 30°C, translateY(-70px) = 45°C+ -->
                    <rect x="35" y="100" width="30" height="100" class="rk-therm-liquid rk-therm-level" />
                </g>
                <!-- Bulb Fill -->
                <circle cx="50" cy="175" r="20" class="rk-therm-liquid" />

                <!-- Text overlay -->
                <text x="50" y="60" text-anchor="middle" class="rk-therm-value rk-therm-text" id="rkThermValue">32°C</text>
                
                <!-- Glass Reflection -->
                <path d="M 40 30 Q 45 30 45 80" stroke="#ffffff" stroke-width="4" stroke-linecap="round" fill="none" opacity="0.6"/>
            </svg>
        </div>
    </div>

    <div class="rk-opt-footer">
        <div style="font-size: 14px; color: #64748b; max-width: 350px;">
            Wyeliminuj błędy zanim wylejesz posadzkę. Poznaj parametry swojego budynku.
        </div>
        <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/" class="rk-opt-btn">
            OBLICZ ZAPOTRZEBOWANIE
            <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="9 18 15 12 9 6"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const toggleContainer = document.getElementById('rkOptToggleGroup');
    const btns = toggleContainer.querySelectorAll('.rk-opt-toggle-btn');
    const resultBox = document.getElementById('rkOptResultBox');
    const visualBox = document.getElementById('rkOptVisualBox');
    const thermValue = document.getElementById('rkThermValue');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Aktualizacja przycisków
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const mode = this.getAttribute('data-mode');

            // Przesunięcie suwaka i klas kontenera
            toggleContainer.className = 'rk-opt-toggle-container mode-' + mode;

            if (mode === 'eco') {
                visualBox.className = 'rk-opt-visual state-eco';
                thermValue.textContent = '32°C';
                
                resultBox.innerHTML = `
                    <p>
                        <strong>Zakres 30°C–35°C</strong> łączy maksymalny komfort, najwyższą ekologię i realne oszczędności finansowe. System wykorzystuje właściwie skonfigurowaną <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywą grzewczą</a>, a fundamentem są rzetelne obliczenia hydrauliczne. Instalacja odwdzięcza się bezobsługową pracą przez dekady.
                    </p>
                `;
            } else {
                visualBox.className = 'rk-opt-visual state-waste';
                thermValue.textContent = '45°C';
                
                resultBox.innerHTML = `
                    <p>
                        <strong>Ryzyko i straty.</strong> Poleganie na "ustawieniach na oko" prowadzi do przegrzewania zasilania (>40°C). System traci <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">bilans cieplny</a>, pompa ciepła traci wydajność (niski COP), a Ty płacisz zawyżone rachunki za prąd ryzykując przy tym pęknięcie wylewki.
                    </p>
                `;
            }
        });
    });
});
</script>



<style>
:root {
    --rk-info-dark: #0f172a;
    --rk-info-panel: #1e293b;
    --rk-info-bg: #ffffff;
    --rk-info-surface: #f8fafc;
    --rk-info-border: #e2e8f0;
    --rk-info-text: #334155;
    --rk-info-muted: #64748b;
    
    --rk-info-blue: #0284c7;
    --rk-info-blue-dark: #0369a1;
    --rk-info-blue-glow: rgba(2, 132, 199, 0.2);
    --rk-info-accent: #38bdf8;
    --rk-info-green: #10b981;
}

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

/* Header */
.rk-info-header {
    background: linear-gradient(135deg, var(--rk-info-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-info-blue);
    overflow: hidden;
}

.rk-info-header::before {
    content: '';
    position: absolute;
    top: -50px; right: -50px;
    width: 200px; height: 200px;
    background: radial-gradient(circle, rgba(56, 189, 248, 0.15) 0%, transparent 70%);
    border-radius: 50%;
}

.rk-info-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(14, 165, 233, 0.2);
    color: var(--rk-info-accent);
    padding: 6px 16px;
    border-radius: 100px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(14, 165, 233, 0.3);
}

.rk-info-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 10px 0;
    line-height: 1.3;
    position: relative;
    z-index: 2;
}

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

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

/* Left: Image Preview */
.rk-info-preview-box {
    padding: 40px;
    background: var(--rk-info-surface);
    border-right: 1px solid var(--rk-info-border);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.rk-img-wrapper {
    position: relative;
    width: 100%;
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 15px 30px -10px rgba(0,0,0,0.15);
    border: 1px solid var(--rk-info-border);
    group: relative;
    cursor: pointer;
}

.rk-img-wrapper img {
    width: 100%;
    height: auto;
    display: block;
    transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-img-overlay {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(15, 23, 42, 0.6);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity 0.3s ease;
}

.rk-img-wrapper:hover img {
    transform: scale(1.05);
}

.rk-img-wrapper:hover .rk-img-overlay {
    opacity: 1;
}

.rk-zoom-icon {
    color: #ffffff;
    background: rgba(255,255,255,0.2);
    padding: 15px;
    border-radius: 50%;
    backdrop-filter: blur(4px);
    transform: scale(0.8);
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-img-wrapper:hover .rk-zoom-icon {
    transform: scale(1);
}

/* Right: Action Area */
.rk-info-action-box {
    padding: 40px 50px;
    display: flex;
    flex-direction: column;
}

.rk-info-action-box h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-info-dark);
    margin: 0 0 15px 0;
}

.rk-info-action-box p {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-info-text);
    margin: 0 0 25px 0;
}

/* Checklist Details */
.rk-info-checklist {
    list-style: none;
    padding: 0;
    margin: 0 0 35px 0;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-info-checklist li {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    font-size: 14px;
    line-height: 1.5;
    color: var(--rk-info-dark);
    font-weight: 600;
}

.rk-info-checklist li svg {
    color: var(--rk-info-green);
    flex-shrink: 0;
    margin-top: 2px;
}

/* Download Button */
.rk-btn-download {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-info-blue);
    color: #ffffff;
    padding: 18px 30px;
    border-radius: 14px;
    font-size: 16px;
    font-weight: 800;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    box-shadow: 0 10px 20px -5px var(--rk-info-blue-glow);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
    position: relative;
    overflow: hidden;
}

.rk-btn-download::after {
    content: '';
    position: absolute;
    top: 0; left: -100%; width: 50%; height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
    animation: rkShineBtn 3s infinite;
}

@keyframes rkShineBtn {
    0% { left: -100%; }
    20% { left: 200%; }
    100% { left: 200%; }
}

.rk-btn-download:hover {
    transform: translateY(-3px);
    background: var(--rk-info-blue-dark);
    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);
}

.rk-file-meta {
    margin-top: 15px;
    font-size: 12px;
    color: var(--rk-info-muted);
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-file-meta span {
    display: flex;
    align-items: center;
    gap: 4px;
}

/* Footer Copyright */
.rk-info-footer {
    background: var(--rk-info-surface);
    padding: 20px 40px;
    border-top: 1px solid var(--rk-info-border);
    font-size: 12px;
    color: var(--rk-info-muted);
    text-align: center;
    line-height: 1.6;
    font-weight: 500;
}

/* Image Modal */
.rk-modal {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(15, 23, 42, 0.9);
    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-modal.open {
    opacity: 1;
    pointer-events: auto;
}

.rk-modal-content {
    max-width: 90%;
    max-height: 90vh;
    position: relative;
    transform: scale(0.95);
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-modal.open .rk-modal-content {
    transform: scale(1);
}

.rk-modal-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-modal-close {
    position: absolute;
    top: -40px;
    right: 0;
    background: transparent;
    border: none;
    color: #ffffff;
    font-size: 14px;
    font-weight: 800;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 8px;
    text-transform: uppercase;
}

/* Mobile */
@media (max-width: 768px) {
    .rk-info-grid { grid-template-columns: 1fr; }
    .rk-info-header { padding: 30px 25px; }
    .rk-info-preview-box { padding: 30px 25px; border-right: none; border-bottom: 1px solid var(--rk-info-border); }
    .rk-info-action-box { padding: 30px 25px; }
    .rk-img-wrapper { max-width: 300px; margin: 0 auto; }
    .rk-btn-download { width: 100%; }
    .rk-file-meta { justify-content: center; flex-wrap: wrap; }
    .rk-info-footer { padding: 15px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#article-infografika",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/"
    },
    "headline": "Infografika: Optymalna temperatura ogrzewania podłogowego",
    "description": "Zestawienie tabelaryczne i graficzne najważniejszych parametrów zasilania podłogówki dla różnych stref i okładzin. Pobierz materiał PDF gotowy do druku.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Jaka-jest-optymalna-temperatura-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.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-01",
    "dateModified": "2026-06-01"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#dataset-infografika",
    "name": "Karta Techniczna Instalatora (PDF) - Ogrzewanie Podłogowe",
    "description": "Zestawienie wytycznych wg PN-EN 1264 obejmujące opory cieplne posadzek, optymalne temperatury zasilania oraz rozstaw rur w formacie PDF i WEBP.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika ogrzewanie podłogowe",
      "tabela temperatur podłogówki",
      "wytyczne instalacyjne hvac pdf",
      "norma PN-EN 1264 tabela",
      "temperatura zasilania ściągawka"
    ],
    "measurementTechnique": "Ekstrakcja kluczowych danych obliczeniowych OZC i krzywych grzewczych do formatu graficznego ułatwiającego weryfikację nastaw na obiekcie.",
    "mainEntity": {
      "@type": "MediaObject",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Jaka-jest-optymalna-temperatura-ogrzewania-podlogowego.pdf",
      "encodingFormat": "application/pdf"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/#webapp-infografika-viewer",
    "name": "Interaktywna Przeglądarka Kreskowa",
    "description": "Komponent interfejsu umożliwiający szybki podgląd (zoom) infografiki technicznej przed pobraniem pliku PDF.",
    "applicationCategory": "MultimediaApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-info-container" id="rkInfoApp">
    
    <div class="rk-info-header">
        <div class="rk-info-badge">
            <svg width="14" height="14" 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>
            Darmowy Materiał PDF
        </div>
        <h2>Infografika: Optymalna temperatura w pigułce</h2>
        <p>Przygotowałem dla Ciebie czytelną &#8222;ściągawkę&#8221; zbierającą najważniejsze wytyczne normy PN-EN 1264. Idealny materiał referencyjny na budowę lub do rozmów z instalatorem.</p>
    </div>

    <div class="rk-info-grid">
        
        <div class="rk-info-preview-box">
            <div class="rk-img-wrapper" id="rkImgTrigger" title="Kliknij, aby powiększyć">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Jaka-jest-optymalna-temperatura-ogrzewania-podlogowego.webp" alt="Podgląd infografiki: Optymalna temperatura ogrzewania podłogowego" loading="lazy">
                <div class="rk-img-overlay">
                    <div class="rk-zoom-icon">
                        <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="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-info-action-box">
            <h3>Wszystkie dane techniczne w jednym miejscu</h3>
            <p>Nie musisz pamiętać skomplikowanych wzorów. Zapisz ten plik na telefonie lub wydrukuj, aby mieć pod ręką parametry niezbędne do prawidłowej regulacji systemu HVAC.</p>
            
            <ul class="rk-info-checklist">
                <li>
                    <svg width="20" height="20" 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>
                    <span><strong>Tabele temperatur zasilania</strong> dopasowane do rodzaju posadzki (płytki, panele, drewno).</span>
                </li>
                <li>
                    <svg width="20" height="20" 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>
                    <span><strong>Maksymalne limity ciepła</strong> dla poszczególnych pomieszczeń wg PN-EN 1264.</span>
                </li>
                <li>
                    <svg width="20" height="20" 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>
                    <span><strong>Podsumowanie błędów</strong> obniżających efektywność (COP) pomp ciepła.</span>
                </li>
            </ul>

            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Jaka-jest-optymalna-temperatura-ogrzewania-podlogowego.pdf" download="Infografika-Optymalna-Temperatura-Podlogowki.pdf" class="rk-btn-download">
                Pobierz materiał w PDF
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
            </a>

            <div class="rk-file-meta">
                <span><svg width="14" height="14" 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> Format: PDF</span>
                <span><svg width="14" height="14" 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> Jakość: Do druku (A4)</span>
            </div>
        </div>
    </div>

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

</div>

<div class="rk-modal" id="rkImgModal">
    <div class="rk-modal-content">
        <button class="rk-modal-close" id="rkModalClose">
            Zamknij
            <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="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-Jaka-jest-optymalna-temperatura-ogrzewania-podlogowego.webp" alt="Infografika pełny rozmiar" class="rk-modal-img">
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const trigger = document.getElementById('rkImgTrigger');
    const modal = document.getElementById('rkImgModal');
    const closeBtn = document.getElementById('rkModalClose');

    // Open Modal
    trigger.addEventListener('click', () => {
        modal.classList.add('open');
        document.body.style.overflow = 'hidden'; // prevent background scrolling
    });

    // Close Modal on Button
    closeBtn.addEventListener('click', () => {
        modal.classList.remove('open');
        document.body.style.overflow = '';
    });

    // Close Modal on Outside Click
    modal.addEventListener('click', (e) => {
        if (e.target === modal) {
            modal.classList.remove('open');
            document.body.style.overflow = '';
        }
    });

    // Close Modal on ESC key
    document.addEventListener('keydown', (e) => {
        if (e.key === 'Escape' && modal.classList.contains('open')) {
            modal.classList.remove('open');
            document.body.style.overflow = '';
        }
    });
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/">Jaka jest optymalna temperatura ogrzewania podłogowego?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
