<?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 Normy i regulacje - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/category/normy-i-regulacje/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/category/normy-i-regulacje/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Mon, 01 Jun 2026 22:44:05 +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 Normy i regulacje - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/category/normy-i-regulacje/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Ile styropianu pod ogrzewanie podłogowe?</title>
		<link>https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Tue, 18 Nov 2025 08:28:46 +0000</pubDate>
				<category><![CDATA[Izolacje termiczne]]></category>
		<category><![CDATA[Materiały budowlane]]></category>
		<category><![CDATA[Materiały do podłogówki]]></category>
		<category><![CDATA[Materiały instalacyjne]]></category>
		<category><![CDATA[Normy budowlane]]></category>
		<category><![CDATA[Normy i regulacje]]></category>
		<category><![CDATA[Normy i standardy]]></category>
		<category><![CDATA[Normy techniczne]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Styropian]]></category>
		<category><![CDATA[eps 100]]></category>
		<category><![CDATA[eps 200]]></category>
		<category><![CDATA[grubość styropianu]]></category>
		<category><![CDATA[izolacja termiczna]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[projektowanie ogrzewania]]></category>
		<category><![CDATA[straty ciepła]]></category>
		<category><![CDATA[styropian]]></category>
		<category><![CDATA[warunki techniczne]]></category>
		<category><![CDATA[współczynnik lambda]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2850</guid>

					<description><![CDATA[<p>Planując instalację ogrzewania podłogowego, jednym z najważniejszych, choć często niedocenianych aspektów, jest odpowiednie dobranie izolacji termicznej. Wiele osób zadaje sobie wtedy kluczowe pytanie: ile styropianu pod ogrzewanie podłogowe będzie optymalne? Odpowiedź nie jest jednoznaczna, ponieważ zależy od typu konstrukcji, lokalizacji oraz parametrów technicznych samego materiału. W naszym kompleksowym artykule w techniczny i szczegółowy sposób wyjaśniamy, jak precyzyjnie obliczyć wymaganą grubość warstwy izolacyjnej, jakie normy prawne muszą być spełnione oraz na jakie zaawansowane parametry, takie jak współczynnik lambda czy wytrzymałość na ściskanie, należy zwrócić uwagę. Dowiesz się również, jak uniknąć kosztownych błędów i zapewnić swojemu systemowi grzewczemu maksymalną efektywność energetyczną na długie lata.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">Ile styropianu pod ogrzewanie podłogowe?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-card: #1e293b;
    --rk-intro-brand: #ea580c; /* Termiczna pomarańcz */
    --rk-intro-brand-light: #ffedd5;
    --rk-intro-blue: #0284c7;
    --rk-intro-bg: #ffffff;
    --rk-intro-surface: #f8fafc;
    --rk-intro-border: #e2e8f0;
    --rk-intro-text: #475569;
}

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

/* Sekcja Główna Wstępu */
.rk-intro-header {
    background: linear-gradient(135deg, #1e293b 0%, var(--rk-intro-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-intro-brand);
}

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

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

.rk-intro-header p {
    font-size: 18px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
    max-width: 800px;
}

.rk-intro-header strong {
    color: #ffffff;
    font-weight: 800;
    background: rgba(234, 88, 12, 0.3);
    padding: 2px 6px;
    border-radius: 4px;
}

/* Moduł "Czego się dowiesz" */
.rk-intro-agenda {
    padding: 40px 50px;
    background: var(--rk-intro-surface);
}

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

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

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

/* Interaktywne Kafelki */
.rk-agenda-card {
    background: #ffffff;
    border: 1px solid var(--rk-intro-border);
    border-radius: 16px;
    padding: 25px;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    z-index: 1;
    text-decoration: none;
    display: block;
}

.rk-agenda-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    background: linear-gradient(135deg, rgba(255,255,255,0) 0%, var(--rk-intro-brand-light) 100%);
    opacity: 0;
    z-index: -1;
    transition: opacity 0.4s;
    border-radius: 16px;
}

.rk-agenda-card:hover {
    transform: translateY(-5px);
    border-color: var(--rk-intro-brand);
    box-shadow: 0 15px 30px -10px rgba(234, 88, 12, 0.15);
}

.rk-agenda-card:hover::before {
    opacity: 0.5;
}

.rk-card-icon {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: var(--rk-intro-surface);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-intro-blue);
    margin-bottom: 15px;
    transition: all 0.4s;
}

.rk-agenda-card:hover .rk-card-icon {
    background: var(--rk-intro-brand);
    color: #ffffff;
    transform: scale(1.1) rotate(5deg);
}

.rk-card-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-intro-dark);
    margin: 0 0 8px 0;
    line-height: 1.4;
}

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

/* Responsywność */
@media (max-width: 768px) {
    .rk-intro-header, .rk-intro-agenda { padding: 35px 25px; }
    .rk-intro-header h2 { font-size: 26px; }
    .rk-intro-header p { font-size: 16px; }
    .rk-agenda-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/"
    },
    "headline": "Ile styropianu pod ogrzewanie podłogowe? Kompendium Inżynierskie",
    "description": "Zestawienie norm prawnych i kalkulacji inżynierskich określających wymaganą grubość izolacji podłogowej dla maksymalizacji sprawności źródła ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-25",
    "dateModified": "2026-05-25"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#dataset",
    "name": "Struktura Analizy Izolacyjności WT2021",
    "description": "Zestawienie wytycznych prawnych, termodynamicznych i wykonawczych dla doboru materiałów izolacyjnych (EPS/XPS) pod wodne systemy płaszczyznowe.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ile styropianu pod ogrzewanie podłogowe",
      "grubość izolacji WT2021",
      "straty ciepła do gruntu",
      "opór cieplny styropianu",
      "EPS grafitowy czy biały"
    ],
    "measurementTechnique": "Agregacja parametrów cieplnych i mechanicznych zgodna z normami budowlanymi, prezentująca wpływ grubości izolacji na efektywność OZC.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Analiza współczynnika przenikania ciepła dla gruntu",
        "Porównanie właściwości EPS 100 białego i grafitowego",
        "Korelacja grubości styropianu z Projektowym Obciążeniem Cieplnym (OZC)"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#webapp",
    "name": "Nawigator Wiedzy Technicznej",
    "description": "Interaktywny interfejs wprowadzający nawigujący użytkownika po kluczowych zagadnieniach inżynierskich związanych z doborem izolacji podłogowej.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container" id="rk-intro-app">
    <div class="rk-intro-header">
        <div class="rk-intro-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Kompendium Inżyniera
        </div>
        <h2>Ile styropianu pod ogrzewanie podłogowe?</h2>
        <p>
            Decyzja o grubości izolacji podłogowej determinuje koszty ogrzewania budynku przez najbliższe kilkadziesiąt lat. Poniższy artykuł stanowi kompletne kompendium techniczne określające, <strong>ile styropianu pod ogrzewanie podłogowe</strong> należy zastosować, aby instalacja działała z maksymalną sprawnością, spełniając aktualne normy prawne i drastycznie minimalizując <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/" style="color: #60a5fa; text-decoration: underline; font-weight: 700;">straty ciepła do gruntu</a>. Zbyt cienki styropian pod podłogówkę może oznaczać tysiące złotych strat ciepła przez kolejne lata. Dlatego dobór odpowiedniej izolacji pod ogrzewanie podłogowe to nie detal, ale jeden z najważniejszych elementów całej instalacji.
        </p>
    </div>

    <div class="rk-intro-agenda">
        <div class="rk-agenda-title">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 16 16 12 12 8"></polyline><line x1="8" y1="12" x2="16" y2="12"></line></svg>
            W tym poradniku odkryjesz:
        </div>
        
        <div class="rk-agenda-grid">
            <a href="#normy" class="rk-agenda-card">
                <div class="rk-card-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
                </div>
                <h3 class="rk-card-title">Normy prawne i WT2021</h3>
                <p class="rk-card-desc">Poznasz bezwzględne minimum grubości wymagane przepisami budowlanymi dla współczynnika U ≤ 0,20.</p>
            </a>

            <a href="#materialy" class="rk-agenda-card">
                <div class="rk-card-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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 class="rk-card-title">Jaki styropian?</h3>
                <p class="rk-card-desc">Porównanie parametrów technicznych i gęstości styropianów podłogowych. Dowiesz się, jaki styropian położyć pod ogrzewanie podłogowe.</p>
            </a>

            <a href="#obliczenia" class="rk-agenda-card">
                <div class="rk-card-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><rect x="9" y="9" width="6" height="6"></rect><line x1="9" y1="1" x2="9" y2="4"></line><line x1="15" y1="1" x2="15" y2="4"></line><line x1="9" y1="20" x2="9" y2="23"></line><line x1="15" y1="20" x2="15" y2="23"></line><line x1="20" y1="9" x2="23" y2="9"></line><line x1="20" y1="14" x2="23" y2="14"></line><line x1="1" y1="9" x2="4" y2="9"></line><line x1="1" y1="14" x2="4" y2="14"></line></svg>
                </div>
                <h3 class="rk-card-title">Krok po kroku: Obliczenia</h3>
                <p class="rk-card-desc">Gotowy algorytm matematyczny pozwalający wyznaczyć opór cieplny (R) w zależności od strat energii.</p>
            </a>

            <a href="#bledy" class="rk-agenda-card">
                <div class="rk-card-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg>
                </div>
                <h3 class="rk-card-title">Krytyczne błędy montażowe</h3>
                <p class="rk-card-desc">Zestawienie uchybień wykonawczych, które niszczą efektywność nawet najgrubszego styropianu.</p>
            </a>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez użycia tagów H2/H3 zgodnie z poleceniem)
    const currentDomain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(currentDomain)) {
        const targetContainer = document.getElementById('rk-intro-app');
        if (targetContainer) {
            targetContainer.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">⚠️</div>
                    <div style="font-size: 20px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Naruszenie Praw Autorskich</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 550px; margin: 0 auto; line-height: 1.6;">
                        Ten komponent wprowadzający wraz ze strukturą JSON-LD jest licencjonowany wyłącznie dla domeny <strong>Projekt-Ogrzewania.pl</strong>. Wykryto nieautoryzowane wdrożenie skryptu.
                    </div>
                </div>
            `;
            return;
        }
    }
});
</script>



<style>
:root {
    --rk-wt-dark: #0f172a;
    --rk-wt-surface: #1e293b;
    --rk-wt-brand: #059669; /* Inżynieryjna zieleń - zgodność z normami */
    --rk-wt-brand-light: #d1fae5;
    --rk-wt-accent: #f59e0b; /* Pomarańcz termiczna */
    --rk-wt-gray: #f1f5f9;
    --rk-wt-border: #e2e8f0;
    --rk-wt-text: #334155;
    --rk-wt-text-light: #64748b;
}

.rk-wt-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(5, 150, 105, 0.15);
    border: 1px solid rgba(5, 150, 105, 0.2);
    overflow: hidden;
}

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

.rk-wt-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(5, 150, 105, 0.3);
    color: #a7f3d0;
    padding: 8px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(167, 243, 208, 0.2);
}

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

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

.rk-wt-prose strong {
    color: #ffffff;
    font-weight: 700;
}

/* Interaktywny Symulator */
.rk-wt-interactive {
    padding: 40px 50px;
    background: var(--rk-wt-gray);
}

.rk-wt-tabs {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
    background: #e2e8f0;
    padding: 6px;
    border-radius: 16px;
    margin-bottom: 35px;
}

.rk-wt-tab {
    padding: 16px 10px;
    border: none;
    background: transparent;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-wt-text-light);
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    text-align: center;
}

.rk-wt-tab svg {
    width: 24px;
    height: 24px;
    opacity: 0.6;
    transition: all 0.3s;
}

.rk-wt-tab:hover {
    background: rgba(255, 255, 255, 0.5);
    color: var(--rk-wt-text);
}

.rk-wt-tab.active {
    background: #ffffff;
    color: var(--rk-wt-brand);
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
}

.rk-wt-tab.active svg {
    opacity: 1;
    color: var(--rk-wt-brand);
    transform: scale(1.1);
}

/* Wyświetlacz Wyników */
.rk-wt-display {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: 40px;
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-wt-border);
    align-items: center;
}

/* Lewa Strona - Dane */
.rk-wt-data-panel h3 {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-wt-dark);
    margin: 0 0 20px 0;
    padding-bottom: 15px;
    border-bottom: 2px solid var(--rk-wt-gray);
}

.rk-wt-data-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 0;
    border-bottom: 1px solid var(--rk-wt-gray);
}

.rk-wt-data-row:last-child {
    border-bottom: none;
}

.rk-wt-data-label {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-wt-text-light);
}

.rk-wt-data-value {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-wt-dark);
    display: flex;
    align-items: center;
    gap: 8px;
}

.val-highlight {
    background: var(--rk-wt-brand-light);
    color: var(--rk-wt-brand);
    padding: 4px 10px;
    border-radius: 6px;
}

/* Prawa Strona - Wizualizacja SVG */
.rk-wt-visual {
    background: var(--rk-wt-surface);
    border-radius: 16px;
    padding: 20px;
    height: 240px;
    position: relative;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
    overflow: hidden;
}

.rk-svg-layer { transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); }
.layer-concrete { fill: #94a3b8; }
.layer-pipes { fill: #ef4444; }
.layer-eps { fill: var(--rk-wt-accent); }
.layer-ground { fill: #475569; }

/* Animacje fal ciepła */
.heat-wave {
    stroke: #ef4444;
    stroke-width: 2.5;
    stroke-linecap: round;
    fill: none;
    opacity: 0;
}

/* Stany dynamiczne z JS */
.state-level-1 .layer-eps { height: 25px; y: 70px; }
.state-level-1 .layer-ground { y: 95px; }
.state-level-1 .heat-wave.down { animation: heatLeak 2s infinite linear; }

.state-level-2 .layer-eps { height: 45px; y: 70px; }
.state-level-2 .layer-ground { y: 115px; }
.state-level-2 .heat-wave.down { animation: heatLeakSlow 2.5s infinite linear; stroke: #f59e0b; }

.state-level-3 .layer-eps { height: 75px; y: 70px; }
.state-level-3 .layer-ground { y: 145px; }
.state-level-3 .heat-wave.up { animation: heatBounce 2s infinite ease-out; }

@keyframes heatLeak {
    0% { transform: translateY(0); opacity: 1; }
    100% { transform: translateY(40px); opacity: 0; }
}
@keyframes heatLeakSlow {
    0% { transform: translateY(0); opacity: 0.8; }
    100% { transform: translateY(30px); opacity: 0; }
}
@keyframes heatBounce {
    0% { transform: translateY(0); opacity: 1; }
    50% { transform: translateY(-20px); opacity: 0.5; }
    100% { transform: translateY(0); opacity: 1; }
}

/* Sekcja linków kontekstowych */
.rk-wt-context {
    padding: 30px 50px;
    background: #ffffff;
    border-top: 1px solid var(--rk-wt-border);
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-wt-text);
}

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

@media (max-width: 768px) {
    .rk-wt-header, .rk-wt-interactive, .rk-wt-context { padding: 30px 20px; }
    .rk-wt-tabs { grid-template-columns: 1fr; }
    .rk-wt-tab { flex-direction: row; justify-content: center; padding: 12px; }
    .rk-wt-display { grid-template-columns: 1fr; gap: 20px; }
    .rk-wt-data-row { flex-direction: column; align-items: flex-start; gap: 5px; }
    .rk-wt-visual { height: 200px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#article-wt2021",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/"
    },
    "headline": "Ile styropianu pod ogrzewanie podłogowe jest wymagane przepisami WT2021?",
    "description": "Analiza normy PN-EN 1264-4. Minimalna grubość styropianu EPS 100 na gruncie to 15 cm (biały) lub 12 cm (grafitowy) dla uzyskania U=0,20 W/(m2K).",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-25",
    "dateModified": "2026-05-25"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#dataset-wt2021",
    "name": "Wymagania cieplne izolacji podłogowej wg WT2021 i PN-EN 1264-4",
    "description": "Zestawienie minimalnych oporów cieplnych (R) i grubości styropianu (EPS) dla różnych konstrukcji stropów z ogrzewaniem płaszczyznowym.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ile styropianu pod ogrzewanie podłogowe",
      "grubość styropianu WT2021",
      "współczynnik U dla podłogi na gruncie",
      "opór cieplny izolacji podłogówki R",
      "minimalna grubość eps 100"
    ],
    "measurementTechnique": "Kalkulacja oporu cieplnego R wg normy PN-EN 1264-4 oraz współczynnika U wg Warunków Technicznych 2021 (U_max = 0,20 W/(m2K)).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Strop nad ogrzewanym: R = 1,25 m2K/W",
        "Strop nad nieogrzewanym: R = 2,00 m2K/W",
        "Podłoga na gruncie (zewn < -5°C): R = 2,25 m2K/W"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#webapp-wt2021",
    "name": "Kalkulator Normatywny PN-EN 1264-4",
    "description": "Interaktywne narzędzie obliczeniowe wyznaczające wymaganą grubość styropianu białego i grafitowego dla trzech scenariuszy konstrukcji podłogi.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-wt-container" id="rk-wt-app">
    <div class="rk-wt-header">
        <div class="rk-wt-badge">
            <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            Przepisy i Normy 2026
        </div>
        <h2>Ile styropianu pod ogrzewanie podłogowe jest wymagane przepisami?</h2>
        <div class="rk-wt-prose">
            Zgodnie z polskimi przepisami budowlanymi (<strong>Warunki Techniczne WT2021</strong>), minimalna grubość styropianu EPS 100 pod ogrzewanie podłogowe na gruncie wynosi <strong>150 mm (15 cm)</strong> dla tradycyjnego białego styropianu (λ = 0,038 W/(m·K)) lub <strong>120 mm (12 cm)</strong> dla styropianu grafitowego (λ = 0,031 W/(m·K)). Wymóg ten wynika wprost z konieczności osiągnięcia współczynnika przenikania ciepła dla podłogi na gruncie na poziomie maksymalnie <strong>U_max = 0,20 W/(m²K)</strong>.
        </div>
    </div>

    <div class="rk-wt-interactive">
        <div class="rk-wt-tabs">
            <button class="rk-wt-tab" data-target="level1">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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>
                Strop nad ogrzewanym
            </button>
            <button class="rk-wt-tab" data-target="level2">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4"></path><polyline points="14 2 14 8 20 8"></polyline><path d="M2 15h10"></path></svg>
                Strop nad piwnicą
            </button>
            <button class="rk-wt-tab active" data-target="level3">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><path d="M2 12h20"></path><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"></path></svg>
                Podłoga na gruncie
            </button>
        </div>

        <div class="rk-wt-display state-level-3" id="wt-display">
            <div class="rk-wt-data-panel">
                <h3 id="wt-title">Podłoga na gruncie (-5°C)</h3>
                
                <div class="rk-wt-data-row">
                    <span class="rk-wt-data-label">Wymagany opór cieplny (R):</span>
                    <span class="rk-wt-data-value val-highlight" id="wt-r-val">2,25 m²·K/W</span>
                </div>
                
                <div class="rk-wt-data-row">
                    <span class="rk-wt-data-label">EPS 100 Biały (λ = 0,038):</span>
                    <span class="rk-wt-data-value" id="wt-eps-white">150 mm (15 cm)</span>
                </div>
                
                <div class="rk-wt-data-row">
                    <span class="rk-wt-data-label">EPS 100 Grafit (λ = 0,031):</span>
                    <span class="rk-wt-data-value" id="wt-eps-graphite">120 mm (12 cm)</span>
                </div>
            </div>

            <div class="rk-wt-visual">
                <svg width="100%" height="100%" viewBox="0 0 200 200" preserveAspectRatio="xMidYMid meet">
                    <rect class="rk-svg-layer layer-concrete" x="10" y="30" width="180" height="40" rx="4" />
                    <circle class="layer-pipes" cx="40" cy="50" r="6" />
                    <circle class="layer-pipes" cx="80" cy="50" r="6" />
                    <circle class="layer-pipes" cx="120" cy="50" r="6" />
                    <circle class="layer-pipes" cx="160" cy="50" r="6" />
                    
                    <rect class="rk-svg-layer layer-eps" x="10" y="70" width="180" height="75" />
                    
                    <rect class="rk-svg-layer layer-ground" x="0" y="145" width="200" height="60" />
                    
                    <path class="heat-wave up" d="M40 25 L40 10 M35 15 L40 10 L45 15" />
                    <path class="heat-wave up" d="M120 25 L120 10 M115 15 L120 10 L125 15" />

                    <path class="heat-wave down" d="M80 85 L80 110 M75 105 L80 110 L85 105" />
                    <path class="heat-wave down" d="M160 85 L160 110 M155 105 L160 110 L165 105" />
                </svg>
            </div>
        </div>
    </div>

    <div class="rk-wt-context">
        Wybór grubości izolacji termicznej nie może być kompromisem budżetowym. To element konstrukcyjny, którego nie da się wymienić po zalaniu <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">wylewki jastrychowej</a>. Zastosowanie zbyt cienkiej warstwy oznacza permanentne straty energii, gdzie ciepło ucieka w dół. Aby system współpracujący z niskotemperaturowym źródłem (np. <a href="https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/">pompą ciepła na parametrze 35/30°C</a>) osiągnął najwyższy współczynnik COP, izolacja musi stanowić skuteczną barierę, określoną precyzyjnie w normie <strong>PN-EN 1264-4</strong>.
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez używania H2/H3 w komunikacie o błędzie)
    const host = window.location.hostname;
    const permittedHosts = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!permittedHosts.includes(host)) {
        const wtContainer = document.getElementById('rk-wt-app');
        if (wtContainer) {
            wtContainer.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #ef4444; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🚫</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Naruszenie Licencji Kodu</div>
                    <div style="font-size: 14px; color: #cbd5e1; line-height: 1.6; max-width: 500px; margin: 0 auto;">
                        Kalkulator Normatywny PN-EN 1264-4 oraz warstwa metadanych JSON-LD są własnością serwisu <strong>Projekt-Ogrzewania.pl</strong>. Uruchomienie na nieautoryzowanej domenie zostało zablokowane.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora WT2021
    const tabs = document.querySelectorAll('.rk-wt-tab');
    const display = document.getElementById('wt-display');
    
    // Elementy danych do aktualizacji
    const elTitle = document.getElementById('wt-title');
    const elRVal = document.getElementById('wt-r-val');
    const elWhite = document.getElementById('wt-eps-white');
    const elGraphite = document.getElementById('wt-eps-graphite');

    const dataMap = {
        'level1': {
            title: 'Strop nad pomieszczeniem ogrzewanym',
            rVal: '1,25 m²·K/W',
            white: '50 mm (5 cm)',
            graphite: '40 mm (4 cm)',
            stateClass: 'state-level-1'
        },
        'level2': {
            title: 'Strop nad pomieszczeniem nieogrzewanym',
            rVal: '2,00 m²·K/W',
            white: '80 mm (8 cm)',
            graphite: '70 mm (7 cm)',
            stateClass: 'state-level-2'
        },
        'level3': {
            title: 'Podłoga na gruncie (zewn < -5°C)',
            rVal: '2,25 m²·K/W',
            white: '150 mm (15 cm)',
            graphite: '120 mm (12 cm)',
            stateClass: 'state-level-3'
        }
    };

    tabs.forEach(tab => {
        tab.addEventListener('click', function() {
            // Reset aktywnych buttonów
            tabs.forEach(t => t.classList.remove('active'));
            this.classList.add('active');

            const target = this.getAttribute('data-target');
            const data = dataMap[target];

            // Aktualizacja UI
            elTitle.textContent = data.title;
            elRVal.textContent = data.rVal;
            elWhite.textContent = data.white;
            elGraphite.textContent = data.graphite;

            // Zmiana klasy wizualizacji
            display.className = `rk-wt-display ${data.stateClass}`;
        });
    });
});
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-card: #1e293b;
    --rk-err-brand: #ef4444; /* Czerwień ostrzegawcza */
    --rk-err-brand-light: #fee2e2;
    --rk-err-safe: #10b981; /* Zieleń inżynieryjna */
    --rk-err-bg: #f8fafc;
    --rk-err-border: #e2e8f0;
    --rk-err-text: #334155;
    --rk-err-muted: #64748b;
}

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

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

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

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

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

/* Sekcja Interaktywna - Układ */
.rk-err-interactive {
    display: grid;
    grid-template-columns: 350px 1fr;
    background: var(--rk-err-bg);
    border-bottom: 1px solid var(--rk-err-border);
}

/* Panel Kontrolny (Suwaki) */
.rk-err-controls {
    padding: 40px;
    background: #ffffff;
    border-right: 1px solid var(--rk-err-border);
}

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

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

.rk-err-val-display {
    background: var(--rk-err-dark);
    color: #ffffff;
    padding: 4px 12px;
    border-radius: 8px;
    font-size: 16px;
    font-weight: 900;
    transition: background 0.3s;
}

.rk-err-val-display.warning { background: var(--rk-err-brand); }
.rk-err-val-display.safe { background: var(--rk-err-safe); }

/* Stylizacja Suwaków (Range) */
.rk-range {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: #e2e8f0;
    outline: none;
    transition: background 0.3s;
}

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

.rk-range:active::-webkit-slider-thumb { transform: scale(1.2); }
.rk-range.warning-track::-webkit-slider-thumb { background: var(--rk-err-brand); }
.rk-range.safe-track::-webkit-slider-thumb { background: var(--rk-err-safe); }

/* Panel Diagnozy */
.rk-err-diagnosis {
    padding: 20px;
    background: var(--rk-err-brand-light);
    border-radius: 12px;
    border: 1px solid rgba(239,68,68,0.2);
    margin-top: 20px;
    transition: all 0.3s;
}

.rk-err-diagnosis.safe-mode {
    background: #dcfce7;
    border-color: rgba(16, 185, 129, 0.2);
}

.rk-diag-title {
    font-size: 14px;
    font-weight: 800;
    text-transform: uppercase;
    margin-bottom: 8px;
}
.rk-err-diagnosis.safe-mode .rk-diag-title { color: #065f46; }
.rk-err-diagnosis:not(.safe-mode) .rk-diag-title { color: #991b1b; }

.rk-diag-text {
    font-size: 14px;
    line-height: 1.6;
    margin: 0;
    font-weight: 600;
    color: var(--rk-err-text);
}

/* Symulacja SVG */
.rk-err-visual {
    padding: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f1f5f9;
    position: relative;
    overflow: hidden;
}

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

.svg-concrete { fill: #94a3b8; transition: fill 0.3s; }
.svg-pipe { fill: #ef4444; }
.svg-eps { fill: #fcd34d; transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); }
.svg-ground { fill: #64748b; transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); }

/* Zjawiska (Pęknięcia, Straty) */
.svg-crack {
    stroke: #0f172a; stroke-width: 3; fill: none; stroke-linecap: round; stroke-linejoin: round;
    stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 0.8s ease-out;
}
.svg-heat-down { stroke: #ef4444; stroke-width: 3; fill: none; stroke-linecap: round; opacity: 0; }
.svg-heat-up { stroke: #10b981; stroke-width: 4; fill: none; stroke-linecap: round; opacity: 0; }
.svg-moisture { fill: #3b82f6; opacity: 0; transition: opacity 0.5s; }

/* Stany Aktywowane z JS */
.state-crack .svg-crack { stroke-dashoffset: 0; }
.state-crack .svg-concrete { fill: #cbd5e1; } /* Osłabiony beton */

.state-heat-loss .svg-heat-down { animation: heatLeakAnim 1.5s infinite linear; }
.state-heat-good .svg-heat-up { animation: heatRiseAnim 2s infinite ease-out; }
.state-moisture .svg-moisture { opacity: 0.6; animation: pulseMoist 3s infinite alternate; }

@keyframes heatLeakAnim {
    0% { transform: translateY(0); opacity: 0.8; stroke: #ef4444; }
    100% { transform: translateY(50px); opacity: 0; stroke: #3b82f6; }
}
@keyframes heatRiseAnim {
    0% { transform: translateY(0); opacity: 0.8; }
    100% { transform: translateY(-30px); opacity: 0; }
}
@keyframes pulseMoist { from { opacity: 0.3; } to { opacity: 0.7; transform: scale(1.05); } }

/* Grid Konsekwencji Tekstowych */
.rk-err-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    padding: 40px 50px;
    background: #ffffff;
}

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

.rk-err-card h4 {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-err-dark);
    margin: 0 0 10px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

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

.rk-err-card a {
    color: #0284c7;
    font-weight: 700;
    text-decoration: none;
}

.rk-err-card a:hover { text-decoration: underline; }

@media (max-width: 768px) {
    .rk-err-header, .rk-err-controls, .rk-err-visual, .rk-err-grid { padding: 30px 20px; }
    .rk-err-interactive { grid-template-columns: 1fr; }
    .rk-err-grid { grid-template-columns: 1fr; }
    .rk-svg-simulator { max-width: 280px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/"
    },
    "headline": "Jakie są konsekwencje błędów w doborze grubości izolacji podłogowej?",
    "description": "Analiza skutków zastosowania zbyt miękkiego styropianu (EPS 70) oraz niedostatecznej grubości. Wzrost strat ciepła o 30% i ryzyko pękania 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.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-25",
    "dateModified": "2026-05-25"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#dataset-bledy",
    "name": "Kalkulator Strat i Uszkodzeń Posadzki (EPS 70 vs EPS 100)",
    "description": "Symulacja zestawień fizycznych i mechanicznych pokazująca skutki obniżania grubości (5-15cm) oraz twardości płyt izolacyjnych pod wylewką jastrychową.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "skutki zbyt cienkiego styropianu",
      "pękanie wylewki na podłogówce",
      "straty ciepła do gruntu",
      "niedogrzana łazienka podłogówka",
      "osiadanie posadzki styropian eps 70"
    ],
    "measurementTechnique": "Interaktywne modelowanie strat termicznych i odkształceń mechanicznych wylewki w oparciu o gęstość pozorną polistyrenu i prawo Fouriera.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Spadek mocy grzewczej i efekt zimnych plam przy izolacji < 10 cm",
        "Destrukcja strukturalna jastrychu przy obciążeniu styropianu rzędu EPS 70",
        "Permanentna ucieczka strumienia ciepła w kierunku nieogrzewanego gruntu"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#webapp-bledy",
    "name": "Symulator Degradacji Posadzki i Strat Ciepła",
    "description": "Narzędzie inżynieryjne z interaktywnymi suwakami demonstrujące wpływ twardości (EPS 70/100) i grubości na mechaniczne pękanie wylewki i ucieczkę energii.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container" id="rk-err-app">
    
    <div class="rk-err-header">
        <div class="rk-err-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Symulacja Błędów i Awarii
        </div>
        <h2 class="rk-err-title">Jakie są konsekwencje błędów w doborze grubości i twardości izolacji?</h2>
        <p class="rk-err-desc">
            Zastosowanie izolacji niespełniającej wymogów normowych powoduje <strong>wzrost strat ciepła do gruntu nawet o 20-30%</strong>, co bezpośrednio przekłada się na zwiększenie rachunków za energię o kilkaset złotych rocznie. Użyj suwaków poniżej, aby zobaczyć fizyczne skutki oszczędzania na materiale.
        </p>
    </div>

    <div class="rk-err-interactive">
        
        <div class="rk-err-controls">
            
            <div class="rk-err-control-group">
                <div class="rk-err-label">
                    Grubość izolacji:
                    <span class="rk-err-val-display warning" id="val-thick">5 cm</span>
                </div>
                <input type="range" id="slider-thick" class="rk-range warning-track" min="5" max="15" step="5" value="5">
                <div style="display:flex; justify-content:space-between; font-size:12px; color:#94a3b8; margin-top:8px; font-weight:700;">
                    <span>5 cm (Awaria)</span>
                    <span>10 cm</span>
                    <span>15 cm (Norma)</span>
                </div>
            </div>

            <div class="rk-err-control-group">
                <div class="rk-err-label">
                    Twardość materiału:
                    <span class="rk-err-val-display warning" id="val-eps">EPS 70</span>
                </div>
                <input type="range" id="slider-eps" class="rk-range warning-track" min="70" max="100" step="30" value="70">
                <div style="display:flex; justify-content:space-between; font-size:12px; color:#94a3b8; margin-top:8px; font-weight:700;">
                    <span>Fasadowy (Miękki)</span>
                    <span>Podłogowy (Twardy)</span>
                </div>
            </div>

            <div class="rk-err-diagnosis" id="diag-panel">
                <div class="rk-diag-title" id="diag-title">Krytyczny stan posadzki!</div>
                <p class="rk-diag-text" id="diag-text">
                    Styropian ugina się pod ciężarem wylewki, powodując jej pękanie. Ucieczka ciepła w grunt wynosi +30%. Pomieszczenia będą trwale niedogrzane.
                </p>
            </div>

        </div>

        <div class="rk-err-visual" id="svg-container">
            <svg class="rk-svg-simulator" viewBox="0 0 200 200">
                <rect class="svg-ground" id="rect-ground" x="10" y="100" width="180" height="90" rx="4"/>
                
                <path class="svg-moisture" d="M30 110 Q40 90 50 110 T70 110 T90 110 T110 110 T130 110 T150 110 T170 110" fill="none" stroke="#3b82f6" stroke-width="4"/>

                <rect class="svg-eps" id="rect-eps" x="10" y="70" width="180" height="30" />
                
                <rect class="svg-concrete" x="10" y="30" width="180" height="40" rx="4" />
                <circle class="svg-pipe" cx="40" cy="50" r="7" />
                <circle class="svg-pipe" cx="80" cy="50" r="7" />
                <circle class="svg-pipe" cx="120" cy="50" r="7" />
                <circle class="svg-pipe" cx="160" cy="50" r="7" />

                <path class="svg-crack" d="M90 30 L100 45 L95 55 L105 70" />

                <path class="svg-heat-down" d="M40 70 L40 100 M35 85 L40 100 L45 85" />
                <path class="svg-heat-down" d="M120 70 L120 100 M115 85 L120 100 L125 85" />
                <path class="svg-heat-down" d="M160 70 L160 100 M155 85 L160 100 L165 85" />
                
                <path class="svg-heat-up" d="M80 30 L80 5 M75 15 L80 5 L85 15" />
                <path class="svg-heat-up" d="M120 30 L120 5 M115 15 L120 5 L125 15" />
            </svg>
        </div>

    </div>

    <div class="rk-err-grid">
        <div class="rk-err-card">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#ef4444" stroke-width="2"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"></path></svg>
                Permanentny uciek strumienia ciepła
            </h4>
            <p>Grunt pod budynkiem działa jak nieskończony radiator. Bez bariery o odpowiednim oporze cieplnym (R), system marnuje wyprodukowaną energię na ogrzewanie mas ziemnych pod płytą fundamentową zamiast salonu.</p>
        </div>

        <div class="rk-err-card">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#ef4444" stroke-width="2"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                Pękanie wylewki i osiadanie
            </h4>
            <p>Użycie styropianu elewacyjnego (EPS 70) powoduje odkształcenia plastyczne pod ciężarem <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">wylewki jastrychowej</a> (ok. 130 kg/m²). Efektem jest pękanie płyty, uszkodzenia płytek i destrukcja dylatacji.</p>
        </div>

        <div class="rk-err-card">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#0284c7" stroke-width="2"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                Efekt "zimnych plam"
            </h4>
            <p>Przy zbyt cienkiej izolacji drastycznie spada moc grzewcza posadzki. System nie pokrywa <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowego obciążenia cieplnego (OZC)</a>, zwłaszcza w łazienkach, gdzie wymagana temperatura to 24°C.</p>
        </div>

        <div class="rk-err-card">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="2"><path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"></path></svg>
                Zawilgocenie i pleśń
            </h4>
            <p>Brak optymalnej grubości płyt połączony z uchybieniami w kładzeniu <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">izolacji hydroizolacyjnej</a> generuje podciąganie kapilarne wilgoci z gruntu, degradację izolatora i ryzyko rozwoju mikroorganizmów.</p>
        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie domeny (zgodnie z wytycznymi - brak H2/H3 w alercie)
    const hostName = window.location.hostname;
    const legalHosts = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!legalHosts.includes(hostName)) {
        const errorContainer = document.getElementById('rk-err-app');
        if (errorContainer) {
            errorContainer.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #ef4444; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Nieautoryzowane użycie kodu</div>
                    <div style="font-size: 14px; color: #cbd5e1; max-width: 500px; margin: 0 auto; line-height: 1.6;">
                        Moduł "Symulator Błędów Izolacyjnych" oraz mikrodane JSON-LD są prawnie chronione i należą do domeny <strong>Projekt-Ogrzewania.pl</strong>. Wykryto próbę kradzieży.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora
    const thickSlider = document.getElementById('slider-thick');
    const epsSlider = document.getElementById('slider-eps');
    
    const valThick = document.getElementById('val-thick');
    const valEps = document.getElementById('val-eps');
    
    const svgContainer = document.getElementById('svg-container');
    const rectEps = document.getElementById('rect-eps');
    const rectGround = document.getElementById('rect-ground');
    
    const diagPanel = document.getElementById('diag-panel');
    const diagTitle = document.getElementById('diag-title');
    const diagText = document.getElementById('diag-text');

    function updateSimulator() {
        const t = parseInt(thickSlider.value); // 5, 10, 15
        const e = parseInt(epsSlider.value);   // 70, 100

        // Reset klas SVG
        svgContainer.className = 'rk-err-visual';
        let svgClasses = ['rk-err-visual'];

        // Analiza Twardości (Osiadanie / Pękanie)
        if (e === 70) {
            valEps.textContent = 'EPS 70 (Błąd)';
            valEps.className = 'rk-err-val-display warning';
            epsSlider.className = 'rk-range warning-track';
            svgClasses.push('state-crack'); // Pokaż pęknięcie
        } else {
            valEps.textContent = 'EPS 100 (Norma)';
            valEps.className = 'rk-err-val-display safe';
            epsSlider.className = 'rk-range safe-track';
        }

        // Analiza Grubości (Straty ciepła i wilgoć)
        valThick.textContent = t + ' cm';
        
        // Animacje wysokości prostokątów SVG
        if (t === 5) {
            rectEps.setAttribute('height', '30');
            rectGround.setAttribute('y', '100');
            valThick.className = 'rk-err-val-display warning';
            thickSlider.className = 'rk-range warning-track';
            svgClasses.push('state-heat-loss');
            svgClasses.push('state-moisture');
        } else if (t === 10) {
            rectEps.setAttribute('height', '50');
            rectGround.setAttribute('y', '120');
            valThick.className = 'rk-err-val-display warning';
            thickSlider.className = 'rk-range warning-track';
            svgClasses.push('state-heat-loss'); // Częściowe straty
        } else if (t === 15) {
            rectEps.setAttribute('height', '70');
            rectGround.setAttribute('y', '140');
            valThick.className = 'rk-err-val-display safe';
            thickSlider.className = 'rk-range safe-track';
            svgClasses.push('state-heat-good'); // Ciepło idzie w górę
        }

        // Aktualizacja widoku SVG
        svgContainer.className = svgClasses.join(' ');

        // Generator Tekstu Diagnozy
        if (t === 15 && e === 100) {
            diagPanel.className = 'rk-err-diagnosis safe-mode';
            diagTitle.textContent = 'Instalacja w pełni bezpieczna';
            diagText.textContent = 'Znakomity wybór inżynieryjny. Jastrych ma stabilne podparcie, a całe wyprodukowane ciepło promieniuje w górę do pomieszczeń mieszkalnych.';
        } else if (e === 70) {
            diagPanel.className = 'rk-err-diagnosis';
            diagTitle.textContent = 'Ryzyko destrukcji posadzki!';
            diagText.textContent = `Zbyt miękki styropian ugnie się pod wylewką, powodując natychmiastowe pęknięcia. Dodatkowo ucieczka ciepła w grunt przy ${t} cm izolacji znacząco podniesie rachunki.`;
        } else {
            diagPanel.className = 'rk-err-diagnosis';
            diagTitle.textContent = 'Straty termiczne i zimne plamy';
            diagText.textContent = `Beton jest bezpieczny (EPS 100), ale grubość izolacji (${t} cm) nie spełnia norm WT2021 (U ≤ 0,20). Ryzykujesz permanentnym niedogrzaniem i ucieczką energii do gruntu.`;
        }
    }

    // Nasłuchiwacze Zdarzeń
    thickSlider.addEventListener('input', updateSimulator);
    epsSlider.addEventListener('input', updateSimulator);

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



<style>
:root {
    --rk-mat-dark: #0f172a;
    --rk-mat-card: #1e293b;
    --rk-mat-brand: #3b82f6;
    --rk-mat-brand-light: #eff6ff;
    --rk-mat-graphite: #334155;
    --rk-mat-white: #f8fafc;
    --rk-mat-alert: #ef4444;
    --rk-mat-border: #e2e8f0;
    --rk-mat-text: #475569;
}

.rk-mat-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(59, 130, 246, 0.15);
    border: 1px solid rgba(59, 130, 246, 0.3);
    overflow: hidden;
}

/* Sekcja Nagłówkowa */
.rk-mat-header {
    background: linear-gradient(135deg, var(--rk-mat-dark) 0%, #172554 100%);
    padding: 45px 50px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-mat-brand);
}

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

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

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

/* Interaktywny Symulator Wysokości */
.rk-mat-interactive {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: #f8fafc;
    border-bottom: 1px solid var(--rk-mat-border);
}

.rk-mat-controls {
    padding: 40px 50px;
    border-right: 1px solid var(--rk-mat-border);
    display: flex;
    flex-direction: column;
    justify-content: center;
}

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

.rk-mat-val {
    background: var(--rk-mat-brand);
    color: #ffffff;
    padding: 4px 12px;
    border-radius: 8px;
    font-size: 18px;
    font-weight: 900;
}

.rk-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: #cbd5e1;
    outline: none;
    margin-bottom: 10px;
}

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

.rk-mat-verdict {
    margin-top: 25px;
    padding: 20px;
    border-radius: 12px;
    background: #ffffff;
    border: 2px dashed var(--rk-mat-brand);
}

.rk-verdict-title { font-size: 13px; text-transform: uppercase; font-weight: 800; color: var(--rk-mat-text); margin-bottom: 5px; }
.rk-verdict-result { font-size: 20px; font-weight: 900; color: var(--rk-mat-dark); }

/* SVG Wizualizacja (Poprawiona) */
.rk-mat-visual {
    padding: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #ffffff;
}

.rk-svg-compare {
    width: 100%;
    max-width: 400px; /* Zwiększona szerokość ułatwia czytanie */
    height: auto;
}

.svg-group { transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); }
.state-graphite .svg-group-white { opacity: 0.25; filter: grayscale(1); }
.state-white .svg-group-graphite { opacity: 0.25; filter: grayscale(1); }

.anim-eps-graphite { fill: #475569; }
.anim-eps-white { fill: #f8fafc; stroke: #cbd5e1; stroke-width: 2; }

/* Kafelki z Danymi */
.rk-mat-data-section {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-mat-data-title {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-mat-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

.rk-mat-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 20px;
}

.rk-mat-card {
    border: 1px solid var(--rk-mat-border);
    border-radius: 16px;
    padding: 25px;
    background: var(--rk-mat-white);
    position: relative;
    overflow: hidden;
    transition: all 0.3s;
}

.rk-mat-card:hover {
    border-color: var(--rk-mat-brand);
    box-shadow: 0 10px 25px -5px rgba(59, 130, 246, 0.1);
    transform: translateY(-3px);
}

.rk-mat-card.recommended {
    background: var(--rk-mat-brand-light);
    border-color: var(--rk-mat-brand);
}

.rk-mat-card.alert {
    background: #fef2f2;
    border-color: #fca5a5;
}

.rk-card-header {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-mat-dark);
    margin-bottom: 20px;
    padding-bottom: 15px;
    border-bottom: 2px solid #e2e8f0;
}
.rk-mat-card.alert .rk-card-header { color: var(--rk-mat-alert); border-color: #fecaca; }

.rk-stat-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
    font-size: 14px;
}

.rk-stat-label { color: var(--rk-mat-text); font-weight: 600; }
.rk-stat-val { font-weight: 800; color: var(--rk-mat-dark); }
.rk-stat-val.highlight { color: var(--rk-mat-brand); font-size: 16px; }

/* Tekst podsumowujący */
.rk-mat-summary {
    padding: 0 50px 40px 50px;
    font-size: 15px;
    line-height: 1.8;
    color: var(--rk-mat-text);
}

.rk-mat-summary a {
    color: var(--rk-mat-brand);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px dashed rgba(59,130,246,0.4);
    transition: all 0.3s;
}
.rk-mat-summary a:hover { border-bottom-style: solid; color: #1e40af; }

@media (max-width: 768px) {
    .rk-mat-header, .rk-mat-controls, .rk-mat-data-section, .rk-mat-summary { padding: 30px 20px; }
    .rk-mat-interactive { grid-template-columns: 1fr; }
    .rk-mat-controls { border-right: none; border-bottom: 1px solid var(--rk-mat-border); }
    .rk-mat-visual { padding: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#article-materialy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/"
    },
    "headline": "Który styropian wybrać: EPS 100 biały czy grafitowy?",
    "description": "Szczegółowe zestawienie parametrów technicznych izolacji (lambda, opór cieplny, odkształcenia). Porównanie styropianu grafitowego i białego EPS 100 i XPS.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-25",
    "dateModified": "2026-05-25"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#dataset-materialy",
    "name": "Katalog Parametrów Izolacyjnych (EPS/XPS)",
    "description": "Zestawienie parametrów technicznych (przewodzenie ciepła λ, naprężenie ściskające, opór R) dla materiałów izolacyjnych stosowanych pod wylewki grzewcze.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "styropian grafitowy czy biały",
      "lambda styropianu",
      "EPS 100 podłogówka",
      "wylewka anhydrytowa styropian",
      "opór cieplny izolacji"
    ],
    "measurementTechnique": "Korelacja współczynnika przewodzenia ciepła λ z oporem cieplnym R dla grubości normatywnych 100-150mm.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "EPS 100 Grafit: λ = 0,031, R dla 10cm = 3,22",
        "EPS 100 Biały: λ = 0,036, R dla 10cm = 2,77",
        "XPS: λ = 0,029, R dla 10cm = 3,44, CS(10) ≥ 300 kPa"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#webapp-materialy",
    "name": "Symulator Wyboru Izolacji Podłogowej",
    "description": "Narzędzie wspomagające decyzję inwestorską. Przelicza dostępną wysokość posadzki (z chudziaka do poziomu 0) na optymalny wybór materiału (Grafit vs Biały).",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-mat-container" id="rk-mat-app">
    
    <div class="rk-mat-header">
        <div class="rk-mat-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
            Analiza Materiałowa
        </div>
        <h2>Który styropian wybrać: EPS 100 biały czy grafitowy?</h2>
        <p>
            Pod ogrzewanie podłogowe należy stosować wyłącznie styropian oznaczony parametrem minimum <strong>CS(10) ≥ 100 kPa (EPS 100)</strong>. Wybór koloru (odmiany) determinuje grubość izolacji: grafit przy 12 cm osiąga taki sam opór cieplny (R ≈ 3,87 m²·K/W) jak biały przy 15 cm.
        </p>
    </div>

    <div class="rk-mat-interactive">
        <div class="rk-mat-controls">
            <div class="rk-mat-label">
                Dostępna wysokość posadzki (od chudziaka):
                <span class="rk-mat-val" id="height-val">20 cm</span>
            </div>
            <input type="range" id="height-slider" class="rk-slider" min="15" max="30" step="1" value="20">
            <div style="display:flex; justify-content:space-between; font-size:12px; color:#64748b; font-weight:700;">
                <span>Krytycznie mało (15cm)</span>
                <span>Dużo (30cm)</span>
            </div>

            <div class="rk-mat-verdict">
                <div class="rk-verdict-title">Rekomendacja dla Twojej budowy:</div>
                <div class="rk-verdict-result" id="verdict-text">EPS 100 Grafitowy</div>
            </div>
        </div>

        <div class="rk-mat-visual" id="svg-stage">
            <svg class="rk-svg-compare" viewBox="0 0 320 220">
                <line x1="10" y1="200" x2="310" y2="200" stroke="#94a3b8" stroke-width="4" stroke-linecap="round" />
                <text x="160" y="215" font-family="sans-serif" font-size="11" font-weight="bold" fill="#64748b" text-anchor="middle">CHUDY BETON (Baza startowa)</text>

                <g class="svg-group svg-group-graphite">
                    <text x="80" y="30" font-family="sans-serif" font-size="14" font-weight="900" fill="#1e293b" text-anchor="middle">GRAFIT 12cm</text>
                    
                    <rect fill="#cbd5e1" x="30" y="45" width="100" height="50" rx="4" />
                    <rect class="anim-eps-graphite" x="30" y="95" width="100" height="105" rx="4" />
                    
                    <text x="80" y="155" font-family="sans-serif" font-size="18" font-weight="900" fill="#ffffff" text-anchor="middle">R ≈ 3,87</text>
                </g>

                <g class="svg-group svg-group-white">
                    <text x="240" y="30" font-family="sans-serif" font-size="14" font-weight="900" fill="#1e293b" text-anchor="middle">BIAŁY 15cm</text>
                    
                    <rect fill="#cbd5e1" x="190" y="45" width="100" height="50" rx="4" />
                    <rect class="anim-eps-white" x="190" y="95" width="100" height="105" rx="4" />
                    
                    <text x="240" y="155" font-family="sans-serif" font-size="18" font-weight="900" fill="#0f172a" text-anchor="middle">R ≈ 3,87</text>
                </g>

                <line x1="30" y1="45" x2="290" y2="45" stroke="#3b82f6" stroke-width="2" stroke-dasharray="6" />
                <text x="160" y="40" font-family="sans-serif" font-size="10" fill="#3b82f6" font-weight="bold" text-anchor="middle">POZIOM ZERO (Płytki)</text>
            </svg>
        </div>
    </div>

    <div class="rk-mat-data-section">
        <h3 class="rk-mat-data-title">Katalog Parametrów Technicznych</h3>
        <div class="rk-mat-grid">
            
            <div class="rk-mat-card alert">
                <div class="rk-card-header">EPS 70 (Podłoga/Dach)</div>
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Współ. ciepła (λ):</span>
                    <span class="rk-stat-val highlight">0,038</span>
                </div>
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Naprężenie CS(10):</span>
                    <span class="rk-stat-val" style="color: #ef4444;">≥ 70 kPa (Zbyt miękki!)</span>
                </div>
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Opór R (dla 10cm):</span>
                    <span class="rk-stat-val">2,63 m²·K/W</span>
                </div>
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Odkształcenie:</span>
                    <span class="rk-stat-val">≤ 3,0 %</span>
                </div>
            </div>

            <div class="rk-mat-card" id="card-white">
                <div class="rk-card-header">EPS 100 (Standard biały)</div>
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Współ. ciepła (λ):</span>
                    <span class="rk-stat-val highlight">0,036</span>
                </div>
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Naprężenie CS(10):</span>
                    <span class="rk-stat-val">≥ 100 kPa</span>
                </div>
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Opór R (dla 10cm):</span>
                    <span class="rk-stat-val">2,77 m²·K/W</span>
                </div>
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Odkształcenie:</span>
                    <span class="rk-stat-val">≤ 2,0 %</span>
                </div>
            </div>

            <div class="rk-mat-card recommended" id="card-graphite">
                <div class="rk-card-header">EPS 100 (Premium grafit)</div>
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Współ. ciepła (λ):</span>
                    <span class="rk-stat-val highlight">0,031</span>
                </div>
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Naprężenie CS(10):</span>
                    <span class="rk-stat-val">≥ 100 kPa</span>
                </div>
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Opór R (dla 10cm):</span>
                    <span class="rk-stat-val">3,22 m²·K/W</span>
                </div>
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Odkształcenie:</span>
                    <span class="rk-stat-val">≤ 1,5 %</span>
                </div>
            </div>

            <div class="rk-mat-card">
                <div class="rk-card-header">XPS (Polistyren ekstr.)</div>
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Współ. ciepła (λ):</span>
                    <span class="rk-stat-val highlight">0,029</span>
                </div>
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Naprężenie CS(10):</span>
                    <span class="rk-stat-val">≥ 300 kPa</span>
                </div>
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Opór R (dla 10cm):</span>
                    <span class="rk-stat-val">3,44 m²·K/W</span>
                </div>
                <div class="rk-stat-row">
                    <span class="rk-stat-label">Odkształcenie:</span>
                    <span class="rk-stat-val">≤ 0,5 %</span>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-mat-summary">
        Wybór między grafitem a białym EPS sprowadza się najczęściej do analizy dostępnej wysokości progów drzwiowych i warstw posadzkowych. Jeśli wysokość od chudego betonu do planowanego poziomu zero (czystej podłogi) jest ograniczona i wynosi np. 22 cm, zastosowanie <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">wylewki anhydrytowej (50 mm)</a> oraz <a href="https://projekt-ogrzewania.pl/rury-do-ogrzewania-podlogowego/">rur na systemowym styropianie</a> grafitowym 120 mm pozwala na zachowanie optymalnego bufora bezpieczeństwa termicznego i konstrukcyjnego. Przy braku ograniczeń wysokościowych na budowie, ekonomicznie uzasadnione bywa ułożenie 150-200 mm nieco tańszego EPS 100 w wersji białej.
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domeny (Brak H2/H3 w kodzie błędu)
    const hostStr = window.location.hostname;
    const validHosts = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!validHosts.includes(hostStr)) {
        const wrap = document.getElementById('rk-mat-app');
        if (wrap) {
            wrap.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #ef4444; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 38px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Zabezpieczenie Licencyjne</div>
                    <div style="font-size: 14px; color: #cbd5e1; max-width: 500px; margin: 0 auto; line-height: 1.6;">
                        Interaktywny symulator materiałowy (Katalog EPS) oraz struktura JSON-LD są własnością <strong>Projekt-Ogrzewania.pl</strong>. Uruchomienie zablokowane.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora
    const slider = document.getElementById('height-slider');
    const valDisplay = document.getElementById('height-val');
    const verdictText = document.getElementById('verdict-text');
    const svgStage = document.getElementById('svg-stage');
    
    const cardWhite = document.getElementById('card-white');
    const cardGraphite = document.getElementById('card-graphite');

    function updateLogic() {
        const height = parseInt(slider.value);
        valDisplay.textContent = height + ' cm';

        // Logika decyzyjna
        if (height < 24) {
            verdictText.textContent = 'EPS 100 Grafitowy';
            verdictText.style.color = '#1e293b'; 
            svgStage.className = 'rk-mat-visual state-graphite';
            
            cardGraphite.classList.add('recommended');
            cardWhite.classList.remove('recommended');
        } else {
            verdictText.textContent = 'EPS 100 Biały (Oszczędność)';
            verdictText.style.color = '#3b82f6'; 
            svgStage.className = 'rk-mat-visual state-white';
            
            cardWhite.classList.add('recommended');
            cardGraphite.classList.remove('recommended');
        }
    }

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



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-card: #1e293b;
    --rk-calc-brand: #0284c7;
    --rk-calc-brand-light: #e0f2fe;
    --rk-calc-accent: #0ea5e9; 
    --rk-calc-success: #10b981;
    --rk-calc-bg: #f8fafc;
    --rk-calc-border: #e2e8f0;
    --rk-calc-text: #475569;
}

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

/* Sekcja Nagłówkowa */
.rk-calc-header {
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, #0c4a6e 100%);
    padding: 45px 50px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-calc-brand);
}

.rk-calc-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #bae6fd;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(186, 230, 253, 0.2);
}

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

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

/* Panel Interaktywny - Nowy Układ (Góra/Dół) */
.rk-calc-interactive {
    padding: 40px 50px;
    background: var(--rk-calc-bg);
    border-bottom: 1px solid var(--rk-calc-border);
}

/* Suwak na pełną szerokość */
.rk-calc-controls {
    background: #ffffff;
    padding: 35px 40px;
    border-radius: 16px;
    border: 1px solid var(--rk-calc-border);
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05);
    margin-bottom: 30px;
}

.rk-calc-label {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-calc-dark);
    margin-bottom: 25px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.rk-calc-val-box {
    background: var(--rk-calc-dark);
    color: #ffffff;
    padding: 8px 18px;
    border-radius: 10px;
    font-size: 22px;
    font-weight: 900;
    transition: background 0.3s;
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.3);
}

.rk-calc-val-box.pass { background: var(--rk-calc-success); }
.rk-calc-val-box.fail { background: #ef4444; }

.rk-slider-app {
    -webkit-appearance: none;
    width: 100%;
    height: 12px;
    border-radius: 6px;
    background: #cbd5e1;
    outline: none;
    margin-bottom: 15px;
}

.rk-slider-app::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-calc-brand);
    cursor: pointer;
    border: 5px solid #ffffff;
    box-shadow: 0 4px 10px rgba(0,0,0,0.25);
    transition: transform 0.1s;
}
.rk-slider-app:active::-webkit-slider-thumb { transform: scale(1.15); }

.rk-calc-hints {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
    color: #64748b;
    font-weight: 800;
}

/* Dwie Kolumny Wyników */
.rk-results-split {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
}

.rk-result-card {
    background: var(--rk-calc-dark);
    border-radius: 16px;
    padding: 30px;
    text-align: center;
    position: relative;
    box-shadow: 0 15px 35px -10px rgba(15, 23, 42, 0.4);
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-result-card.white-card { border-top: 5px solid #e2e8f0; }
.rk-result-card.graphite-card { border-top: 5px solid #64748b; }

.rk-result-title {
    font-size: 15px;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    margin-bottom: 10px;
}
.white-card .rk-result-title { color: #cbd5e1; }
.graphite-card .rk-result-title { color: #94a3b8; }

.rk-result-value {
    font-size: 42px;
    font-weight: 900;
    color: #ffffff;
    margin-bottom: 20px;
    line-height: 1;
}

.rk-svg-ruler {
    width: 120px;
    height: 180px;
    overflow: visible;
}

.anim-bar-white { fill: #f8fafc; transition: height 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), y 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); }
.anim-bar-graphite { fill: #475569; transition: height 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), y 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); }
.anim-text-label { font-family: sans-serif; font-weight: 700; fill: #94a3b8; font-size: 10px; }

/* Krok po Kroku */
.rk-algo-section { padding: 40px 50px; background: #ffffff; }
.rk-algo-title { font-size: 22px; font-weight: 900; color: var(--rk-calc-dark); margin: 0 0 25px 0; display: flex; align-items: center; gap: 10px; }
.rk-algo-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.rk-algo-step { background: var(--rk-calc-bg); border: 1px solid var(--rk-calc-border); border-radius: 16px; padding: 25px; position: relative; }
.rk-algo-step-num { position: absolute; top: -15px; left: 20px; background: var(--rk-calc-brand); color: #ffffff; width: 30px; height: 30px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 900; font-size: 16px; box-shadow: 0 4px 10px rgba(2, 132, 199, 0.3); }
.rk-algo-step h4 { font-size: 16px; font-weight: 800; color: var(--rk-calc-dark); margin: 10px 0 15px 0; }
.rk-algo-equation { background: #ffffff; padding: 12px 15px; border-radius: 8px; border: 1px dashed #cbd5e1; font-family: monospace; font-size: 14px; color: #0369a1; font-weight: 700; margin-bottom: 10px; overflow-x: auto; }
.rk-algo-desc { font-size: 14px; line-height: 1.6; color: var(--rk-calc-text); margin: 0; }

@media (max-width: 768px) {
    .rk-calc-header, .rk-calc-interactive, .rk-algo-section { padding: 30px 20px; }
    .rk-calc-controls { padding: 25px 20px; }
    .rk-calc-label { flex-direction: column; align-items: flex-start; gap: 15px; font-size: 16px; }
    .rk-results-split { grid-template-columns: 1fr; gap: 20px; }
    .rk-algo-grid { grid-template-columns: 1fr; }
    .rk-calc-header h2 { font-size: 26px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#article-kalkulator",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/"
    },
    "headline": "Kalkulator grubości izolacji styropianu pod ogrzewanie podłogowe",
    "description": "Algorytm obliczeniowy PN-EN ISO 13370 wyznaczający opór cieplny (R) i precyzyjną grubość styropianu EPS dla podłogówki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-25",
    "dateModified": "2026-05-25"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#dataset-kalkulator",
    "name": "Algorytm Obliczeniowy Opór Cieplny EPS PN-EN ISO 13370",
    "description": "Parametry stałe i zmienne do obliczania grubości materiałów izolacyjnych na bazie zakładanego współczynnika przenikania ciepła U.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator grubości izolacji podłogowej",
      "obliczenia oporu cieplnego PN-EN ISO 13370",
      "współczynnik przenikania ciepła podłogi na gruncie",
      "jak obliczyć styropian pod podłogówkę",
      "wzór na grubość styropianu"
    ],
    "measurementTechnique": "Algorytm 4-krokowy wykorzystujący transformację współczynnika U na całkowity opór cieplny przegrody R_tot, a następnie na fizyczną grubość w mm.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Krok 1: Sumowanie oporów stałych (R_si = 0,17; R_c = 0,10)",
        "Krok 2: Odwrócenie współczynnika U (R_tot = 1 / U)",
        "Krok 3: Izolacja właściwa (R_izol = R_tot - R_stale - R_g)",
        "Krok 4: Konwersja na mm w oparciu o parametr lambda (0,036 lub 0,031)"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#webapp-kalkulator",
    "name": "Kalkulator Grubości Izolacji Podłogowej LCC",
    "description": "Interaktywne narzędzie inżynierskie pozwalające płynnie suwakiem symulować wymaganą grubość styropianu w zależności od zadanego standardu energetycznego U.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-container" id="rk-calc-app">
    
    <div class="rk-calc-header">
        <div class="rk-calc-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><rect x="9" y="9" width="6" height="6"></rect><line x1="9" y1="1" x2="9" y2="4"></line><line x1="15" y1="1" x2="15" y2="4"></line><line x1="9" y1="20" x2="9" y2="23"></line><line x1="15" y1="20" x2="15" y2="23"></line><line x1="20" y1="9" x2="23" y2="9"></line><line x1="20" y1="14" x2="23" y2="14"></line><line x1="1" y1="9" x2="4" y2="9"></line><line x1="1" y1="14" x2="4" y2="14"></line></svg>
            Inżynieria Obliczeniowa
        </div>
        <h2>Kalkulator grubości izolacji styropianu pod ogrzewanie podłogowe</h2>
        <p>
            W celu precyzyjnego wyznaczenia wymaganej grubości styropianu dla uzyskania normowego współczynnika U ≤ 0,20 W/(m²·K), należy przeprowadzić szczegółowe obliczenia oporów cieplnych poszczególnych warstw przegrody. Zmień docelowy parametr U na suwaku, aby zobaczyć precyzyjny wymiar izolacji.
        </p>
    </div>

    <div class="rk-calc-interactive">
        
        <div class="rk-calc-controls">
            <div class="rk-calc-label">
                Docelowy współczynnik przenikania (U):
                <span class="rk-calc-val-box pass" id="calc-u-val">0.20 W/(m²K)</span>
            </div>
            <input type="range" id="calc-u-slider" class="rk-slider-app" min="0.10" max="0.30" step="0.01" value="0.20">
            <div class="rk-calc-hints">
                <span>Dom Pasywny (0.10)</span>
                <span>Norma WT2021 (0.20)</span>
                <span>Budownictwo starsze (0.30)</span>
            </div>
        </div>

        <div class="rk-results-split">
            
            <div class="rk-result-card white-card">
                <div class="rk-result-title">Wymagany EPS Biały (λ 0,036)</div>
                <div class="rk-result-value" id="text-white">134 mm</div>
                <svg class="rk-svg-ruler" viewBox="0 0 100 180">
                    <line x1="10" y1="160" x2="90" y2="160" stroke="#cbd5e1" stroke-width="2" stroke-linecap="round"/>
                    <rect class="anim-bar-white" id="bar-white" x="25" y="60" width="50" height="100" rx="4"/>
                    <text x="50" y="175" class="anim-text-label" text-anchor="middle">CHUDY BETON</text>
                </svg>
            </div>

            <div class="rk-result-card graphite-card">
                <div class="rk-result-title">Wymagany EPS Grafit (λ 0,031)</div>
                <div class="rk-result-value" id="text-graphite">115 mm</div>
                <svg class="rk-svg-ruler" viewBox="0 0 100 180">
                    <line x1="10" y1="160" x2="90" y2="160" stroke="#64748b" stroke-width="2" stroke-linecap="round"/>
                    <rect class="anim-bar-graphite" id="bar-graphite" x="25" y="75" width="50" height="85" rx="4"/>
                    <text x="50" y="175" class="anim-text-label" text-anchor="middle">CHUDY BETON</text>
                </svg>
            </div>

        </div>

    </div>

    <div class="rk-algo-section">
        <h3 class="rk-algo-title">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><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 wg PN-EN ISO 13370 (Dla U = 0,20)
        </h3>
        
        <div class="rk-algo-grid">
            
            <div class="rk-algo-step">
                <div class="rk-algo-step-num">1</div>
                <h4>Określenie oporów przejmowania</h4>
                <div class="rk-algo-desc">
                    Przyjmij standardowe wartości oporów przejmowania ciepła: R_si = 0,17 m²·K/W (kierunek strumienia ciepła w dół) oraz uśredniony opór chudego betonu i okładziny R_c ≈ 0,10 m²·K/W. Zsumuj opory stałe.
                </div>
                <div class="rk-algo-equation">
                    R_stałe = 0,17 + 0,00 + 0,10 = 0,27 m²·K/W
                </div>
            </div>

            <div class="rk-algo-step">
                <div class="rk-algo-step-num">2</div>
                <h4>Całkowity opór przegrody (R_tot)</h4>
                <div class="rk-algo-desc">
                    Przekształć wzór na współczynnik przenikania ciepła U = 1 / R_tot. Podstawiając graniczną wartość wymaganą przez warunki techniczne U = 0,20 W/(m²·K):
                </div>
                <div class="rk-algo-equation">
                    R_tot = 1 / 0,20 = 5,00 m²·K/W
                </div>
            </div>

            <div class="rk-algo-step">
                <div class="rk-algo-step-num">3</div>
                <h4>Minimalny opór izolacji (R_izol)</h4>
                <div class="rk-algo-desc">
                    Odejmij od całkowitego oporu R_tot wartość oporów stałych oraz uśredniony opór cieplny gruntu (dla uproszczenia inżynierskich obliczeń strukturalnych przyjmuje się opór gruntu R_g ≈ 1,0 m²·K/W):
                </div>
                <div class="rk-algo-equation">
                    R_izol = 5,00 - 0,27 - 1,00 = 3,73 m²·K/W
                </div>
            </div>

            <div class="rk-algo-step">
                <div class="rk-algo-step-num">4</div>
                <h4>Obliczenie grubości (d) dla parametru λ</h4>
                <div class="rk-algo-desc">
                    Pomnóż wymagany opór izolacji przez współczynnik przewodzenia ciepła λ (lambda) wybranego materiału. Wynik otrzymasz w metrach, które przeliczamy na milimetry.
                </div>
                <div class="rk-algo-equation" style="color: var(--rk-calc-dark);">
                    Biały (0,036): d = 3,73 × 0,036 = 134 mm<br>
                    Grafit (0,031): d = 3,73 × 0,031 = 115 mm
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie domeny
    const currentDomain = window.location.hostname;
    const authDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!authDomains.includes(currentDomain)) {
        const errorWrap = document.getElementById('rk-calc-app');
        if (errorWrap) {
            errorWrap.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #ef4444; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 38px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Zabezpieczenie Algorytmu</div>
                    <div style="font-size: 14px; color: #cbd5e1; max-width: 500px; margin: 0 auto; line-height: 1.6;">
                        Interaktywny kalkulator grubości izolacji oraz system mikrodanych JSON-LD należą do domeny <strong>Projekt-Ogrzewania.pl</strong>. Wykryto próbę kradzieży kodu.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Kalkulatora i Obsługa Słupków SVG
    const uSlider = document.getElementById('calc-u-slider');
    const uValBox = document.getElementById('calc-u-val');
    
    const barWhite = document.getElementById('bar-white');
    const textWhite = document.getElementById('text-white');
    
    const barGraphite = document.getElementById('bar-graphite');
    const textGraphite = document.getElementById('text-graphite');

    const R_STALE = 0.27; 
    const R_GRUNT = 1.00; 
    const LAMBDA_W = 0.036; 
    const LAMBDA_G = 0.031; 

    // Nowe parametry dla izolowanych słupków SVG (viewBox 0 0 100 180)
    const SVG_BASE_Y = 160; 
    const PIXEL_PER_MM = 0.45; // Skalowanie dopasowane do wysokości 180px

    function runCalculation() {
        const U = parseFloat(uSlider.value);
        
        // Klasy wizualne dla normy WT2021
        if (U > 0.20) {
            uValBox.className = 'rk-calc-val-box fail';
        } else {
            uValBox.className = 'rk-calc-val-box pass';
        }
        
        uValBox.textContent = U.toFixed(2) + ' W/(m²K)';

        // Algorytm
        let R_tot = 1 / U;
        let R_izol = R_tot - R_STALE - R_GRUNT;
        if (R_izol < 0) R_izol = 0;

        let d_white_mm = Math.round((R_izol * LAMBDA_W) * 1000);
        let d_graphite_mm = Math.round((R_izol * LAMBDA_G) * 1000);

        // Ustawienie wielkich wartości w HTML
        textWhite.textContent = d_white_mm + ' mm';
        textGraphite.textContent = d_graphite_mm + ' mm';

        // Animacja SVG - ustalenie wysokości
        let h_white_px = d_white_mm * PIXEL_PER_MM;
        let h_graphite_px = d_graphite_mm * PIXEL_PER_MM;
        
        // Ochrona przed przenikaniem przez górną ramkę (max wys. np. 150)
        if (h_white_px > 150) h_white_px = 150;
        if (h_graphite_px > 150) h_graphite_px = 150;
        if (h_white_px < 5) h_white_px = 5;
        if (h_graphite_px < 5) h_graphite_px = 5;

        // Aplikacja atrybutów
        barWhite.setAttribute('height', h_white_px);
        barWhite.setAttribute('y', SVG_BASE_Y - h_white_px);

        barGraphite.setAttribute('height', h_graphite_px);
        barGraphite.setAttribute('y', SVG_BASE_Y - h_graphite_px);
    }

    uSlider.addEventListener('input', runCalculation);
    runCalculation();
});
</script>



<ol start="1" class="wp-block-list"></ol>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-card: #1e293b;
    --rk-err-brand: #ef4444; /* Ostrzegawcza czerwień */
    --rk-err-brand-light: #fef2f2;
    --rk-err-safe: #10b981;
    --rk-err-accent: #f59e0b; /* Pomarańcz - uwaga */
    --rk-err-bg: #f8fafc;
    --rk-err-border: #e2e8f0;
    --rk-err-text: #475569;
}

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

/* Sekcja Nagłówkowa */
.rk-err-header {
    background: linear-gradient(135deg, var(--rk-err-dark) 0%, #450a0a 100%);
    padding: 45px 50px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-err-brand);
}

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

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

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

/* Interaktywny Audytor */
.rk-err-interactive {
    display: grid;
    grid-template-columns: 380px 1fr; /* Poszerzona kolumna pod dłuższe nazwy błędów */
    background: var(--rk-err-bg);
}

/* Lewa strona - Menu błędów */
.rk-err-menu {
    padding: 30px;
    border-right: 1px solid var(--rk-err-border);
    background: #ffffff;
}

.rk-err-menu-title {
    font-size: 14px;
    text-transform: uppercase;
    font-weight: 800;
    color: #94a3b8;
    margin-bottom: 15px;
    letter-spacing: 1px;
}

.rk-err-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.rk-err-btn {
    width: 100%;
    text-align: left;
    background: transparent;
    border: 2px solid transparent;
    padding: 14px 16px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-err-text);
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: center;
    gap: 12px;
    line-height: 1.4;
}

.rk-err-btn:hover {
    background: var(--rk-err-brand-light);
    color: var(--rk-err-brand);
}

.rk-err-btn.active {
    background: var(--rk-err-brand-light);
    border-color: var(--rk-err-brand);
    color: #991b1b;
    box-shadow: 0 4px 10px rgba(239, 68, 68, 0.1);
}

.rk-err-btn-icon {
    flex-shrink: 0;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #e2e8f0;
    color: #64748b;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 900;
    transition: all 0.3s;
}

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

/* Prawa strona - Panel i SVG */
.rk-err-display {
    padding: 40px;
    display: flex;
    flex-direction: column;
}

.rk-err-visual {
    width: 100%;
    height: 260px;
    background: var(--rk-err-dark);
    border-radius: 16px;
    margin-bottom: 30px;
    position: relative;
    box-shadow: inset 0 0 40px rgba(0,0,0,0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

.rk-svg-stage {
    width: 100%;
    max-width: 380px;
    height: 100%;
}

/* Zmienne SVG na podstawie stanu */
.svg-wall { fill: #475569; }
.svg-ground { fill: #64748b; transition: all 0.5s; }
.svg-bump { fill: #64748b; transform: scaleY(0); transform-origin: bottom; transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1); }
.svg-eps-1 { fill: #fcd34d; transition: all 0.4s; }
.svg-eps-2 { fill: #fbbf24; transition: all 0.4s; }
.svg-concrete { fill: #94a3b8; transition: all 0.4s; }
.svg-tape { fill: #3b82f6; opacity: 1; transition: opacity 0.3s; }
.svg-crack { stroke: #0f172a; stroke-width: 3; fill: none; stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 0.6s ease-out; }
.svg-heat-arrow { stroke: #ef4444; stroke-width: 3; fill: none; stroke-linecap: round; opacity: 0; }
.svg-liquid { fill: #60a5fa; opacity: 0; transform: translateY(-20px); transition: all 0.4s; }

/* Nowe elementy SVG dla długiego ogona */
.svg-pipe { transition: all 0.4s; }
.svg-kan-pipe { fill: #cbd5e1; stroke: #3b82f6; stroke-width: 2; opacity: 0; transition: opacity 0.4s; }
.svg-foam { fill: #fde047; opacity: 0; transition: opacity 0.4s; }
.svg-clip { stroke: #0f172a; stroke-width: 2; fill: none; opacity: 0; }

/* Animacje stanów */
/* 1. Jedna warstwa */
.state-layer .svg-eps-2 { opacity: 0; }
.state-layer .svg-heat-arrow.layer-leak { animation: heatEscapeUp 1.5s infinite linear; }
@keyframes heatEscapeUp { 0% { transform: translateY(0); opacity: 0.8; } 100% { transform: translateY(-40px); opacity: 0; } }

/* 2. Nierówności */
.state-uneven .svg-bump { transform: scaleY(1); }
.state-uneven .svg-eps-1 { transform: translateY(-10px) rotate(-2deg); transform-origin: center; }
.state-uneven .svg-eps-2 { transform: translateY(-10px) rotate(2deg); transform-origin: center; }
.state-uneven .svg-concrete { transform: translateY(-5px); }
.state-uneven .svg-crack { stroke-dashoffset: 0; transition-delay: 0.4s; }

/* 3. Dylatacja brzegowa */
.state-edge .svg-tape { opacity: 0; }
.state-edge .svg-heat-arrow.edge-leak { animation: heatEscapeSide 1.5s infinite linear; }
@keyframes heatEscapeSide { 0% { transform: translateX(0); opacity: 0.8; } 100% { transform: translateX(-30px); opacity: 0; } }

/* 4. Folia */
.state-foil .svg-eps-2 { transform: translateX(5px); }
.state-foil .svg-liquid { opacity: 0.8; animation: drip 1.5s infinite ease-in; }
@keyframes drip { 0% { transform: translateY(-10px); opacity: 0.8; } 100% { transform: translateY(30px); opacity: 0; } }

/* 5. Styropian Fasadowy (Miękki) */
.state-soft .svg-eps-1 { transform: scaleY(0.6) translateY(55px); }
.state-soft .svg-eps-2 { transform: scaleY(0.6) translateY(55px); }
.state-soft .svg-concrete { transform: translateY(28px); }
.state-soft .svg-pipe { transform: translateY(28px); }
.state-soft .svg-crack { stroke-dashoffset: 0; transition-delay: 0.4s; }

/* 6. Krzyżowanie rur Wod-Kan */
.state-cross .svg-kan-pipe { opacity: 1; }
.state-cross .svg-eps-1 { opacity: 0.5; }
.state-cross .svg-heat-arrow.cross-leak { animation: heatEscapeUp 1.5s infinite linear; }

/* 7. Łatanie pianką */
.state-gap .svg-eps-2 { transform: translateX(-15px); }
.state-gap .svg-foam { opacity: 1; animation: foamExpand 2s infinite alternate; }
@keyframes foamExpand { from { transform: scaleX(0.9); } to { transform: scaleX(1.1); } }
.state-gap .svg-heat-arrow.gap-leak { animation: heatEscapeUp 1.5s infinite linear; }

/* 8. Wyrywanie spinek */
.state-clip .svg-clip { opacity: 1; }
.state-clip .svg-pipe-loose { transform: translateY(-20px); }
.state-clip .svg-concrete { opacity: 0.8; }


/* Panel tekstowy */
.rk-err-content h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-err-dark);
    margin: 0 0 15px 0;
}

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

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

.rk-err-solution {
    background: #dcfce7;
    border-left: 4px solid var(--rk-err-safe);
    padding: 15px 20px;
    border-radius: 0 8px 8px 0;
    margin-top: 20px;
}

.rk-err-solution strong {
    color: #065f46;
    display: block;
    font-size: 13px;
    text-transform: uppercase;
    margin-bottom: 5px;
}

.rk-err-solution span {
    color: #166534;
    font-size: 14px;
    font-weight: 600;
}

@media (max-width: 768px) {
    .rk-err-header, .rk-err-display { padding: 30px 20px; }
    .rk-err-interactive { grid-template-columns: 1fr; }
    .rk-err-menu { border-right: none; border-bottom: 1px solid var(--rk-err-border); padding: 20px; }
    .rk-err-visual { height: 200px; }
    .rk-err-header h2 { font-size: 26px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#article-wykonawstwo",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/"
    },
    "headline": "Najczęstsze błędy wykonawcze podczas układania styropianu",
    "description": "8 krytycznych błędów izolacyjnych: od braku taśmy brzegowej, przez klawiszowanie podłoża, stosowanie pianki, po wyrywanie rur i styropian fasadowy EPS 70.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-25",
    "dateModified": "2026-05-25"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#dataset-wykonawstwo",
    "name": "Katalog 8 Krytycznych Błędów Izolacji Płaszczyznowej",
    "description": "Rozszerzona baza danych klasyfikująca błędy mechaniczne i termiczne przy układaniu polistyrenu pod jastrych grzewczy.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błędy przy montażu ogrzewania podłogowego",
      "styropian fasadowy pod ogrzewanie podłogowe",
      "wyrywanie spinek do podłogówki ze styropianu",
      "rury wodne w styropianie podłogowym krzyżowanie",
      "wypełnianie ubytków w styropianie podłogowym pianką"
    ],
    "measurementTechnique": "Wizualizacja wektorowa uchybień fizycznych uwzględniająca odkształcenia plastyczne EPS 70, kolizje instalacji wod-kan oraz wyrwania mechaniczne klipsów.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Jedna warstwa EPS: Powstają szczeliny i mostki termiczne.",
        "Nierówne podłoże (pow. 8mm): Powoduje klawiszowanie wylewki.",
        "Brak taśmy brzegowej: Generuje mostek obwodowy w ściany.",
        "Brak szczelności folii: Ucieczka płynnego jastrychu.",
        "Styropian fasadowy EPS 70: Zapadanie się izolacji pod ciężarem.",
        "Krzyżowanie rur wod-kan: Punktowe wychładzanie i utrata twardości podłoża.",
        "Wypełnianie pianką PUR: Trwała degradacja oporu cieplnego.",
        "Zbyt krótkie spinki: Wypychanie rur z izolacji podczas zalewania."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#webapp-wykonawstwo",
    "name": "Audytor Błędów Montażu Styropianu (Wersja PRO)",
    "description": "Rozbudowana aplikacja symulująca zachowanie warstw podłogowych i instalacji w przypadku wystąpienia 8 głównych patologii budowlanych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container" id="rk-err-app">
    
    <div class="rk-err-header">
        <div class="rk-err-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Weryfikacja Wykonawstwa
        </div>
        <h2>Najczęstsze błędy montażowe</h2>
        <p>
            Nawet najlepszej jakości materiał izolacyjny utraci swoje właściwości, jeśli zostanie zamontowany niezgodnie ze sztuką budowlaną. Zobacz 8 krytycznych błędów identyfikowanych podczas audytów inżynierskich.
        </p>
    </div>

    <div class="rk-err-interactive">
        
        <div class="rk-err-menu">
            <div class="rk-err-menu-title">Wybierz błąd do symulacji:</div>
            
            <div class="rk-err-list">
                <button class="rk-err-btn active" data-target="err-layer">
                    <div class="rk-err-btn-icon">1</div>
                    Jedna warstwa izolacji
                </button>
                <button class="rk-err-btn" data-target="err-uneven">
                    <div class="rk-err-btn-icon">2</div>
                    Nierówne podłoże
                </button>
                <button class="rk-err-btn" data-target="err-edge">
                    <div class="rk-err-btn-icon">3</div>
                    Brak dylatacji brzegowej
                </button>
                <button class="rk-err-btn" data-target="err-foil">
                    <div class="rk-err-btn-icon">4</div>
                    Nieszczelność folii
                </button>
                <button class="rk-err-btn" data-target="err-soft">
                    <div class="rk-err-btn-icon">5</div>
                    Miękki styropian (EPS 70)
                </button>
                <button class="rk-err-btn" data-target="err-cross">
                    <div class="rk-err-btn-icon">6</div>
                    Kolizje z rurami wod-kan
                </button>
                <button class="rk-err-btn" data-target="err-gap">
                    <div class="rk-err-btn-icon">7</div>
                    Łatanie szpar pianką PUR
                </button>
                <button class="rk-err-btn" data-target="err-clip">
                    <div class="rk-err-btn-icon">8</div>
                    Zbyt krótkie spinki (Tacker)
                </button>
            </div>
        </div>

        <div class="rk-err-display">
            
            <div class="rk-err-visual state-layer" id="svg-stage">
                <svg class="rk-svg-stage" viewBox="0 0 300 200">
                    <rect class="svg-wall" x="0" y="0" width="30" height="200" />
                    
                    <rect class="svg-ground" x="30" y="150" width="270" height="50" />
                    <path class="svg-bump" d="M 120 150 Q 150 110 180 150 Z" />

                    <rect class="svg-tape" x="30" y="40" width="5" height="110" />

                    <rect class="svg-eps-1" x="35" y="115" width="120" height="35" rx="2" />
                    <rect class="svg-eps-1" x="155" y="115" width="145" height="35" rx="2" />
                    
                    <rect class="svg-eps-2" x="35" y="80" width="100" height="35" rx="2" />
                    <rect class="svg-eps-2" x="135" y="80" width="165" height="35" rx="2" />

                    <circle class="svg-kan-pipe" cx="155" cy="132" r="14" />

                    <path class="svg-foam" d="M 130 80 L 140 80 L 138 115 L 128 115 Z" />

                    <rect class="svg-concrete" x="35" y="40" width="265" height="40" rx="2" />
                    <circle class="svg-pipe" cx="70" cy="60" r="6" fill="#ef4444" />
                    <circle class="svg-pipe" cx="120" cy="60" r="6" fill="#ef4444" />
                    <circle class="svg-pipe svg-pipe-loose" cx="170" cy="60" r="6" fill="#ef4444" />
                    <circle class="svg-pipe" cx="220" cy="60" r="6" fill="#ef4444" />

                    <path class="svg-clip" d="M 165 70 L 160 50 M 175 70 L 180 50" />

                    <path class="svg-crack" d="M 140 40 L 155 55 L 145 65 L 150 80" />
                    <path class="svg-heat-arrow layer-leak" d="M 145 150 L 145 100 M 140 110 L 145 100 L 150 110" />
                    <path class="svg-heat-arrow edge-leak" d="M 50 60 L 10 60 M 20 55 L 10 60 L 20 65" />
                    <path class="svg-heat-arrow cross-leak" d="M 155 132 L 155 80 M 145 95 L 155 80 L 165 95" />
                    <path class="svg-heat-arrow gap-leak" d="M 135 115 L 135 70 M 125 85 L 135 70 L 145 85" />
                    <path class="svg-liquid" d="M 140 80 Q 145 100 140 115" stroke="#60a5fa" stroke-width="4" fill="none"/>
                </svg>
            </div>

            <div class="rk-err-content" id="err-content">
                </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Ochrona domeny (Bez tagów H w stringu błędu)
    const activeDomain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(activeDomain)) {
        const wrap = document.getElementById('rk-err-app');
        if (wrap) {
            wrap.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #ef4444; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 38px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Naruszenie Praw Autorskich</div>
                    <div style="font-size: 14px; color: #cbd5e1; max-width: 500px; margin: 0 auto; line-height: 1.6;">
                        Interaktywny Audytor Błędów oraz struktura JSON-LD są własnością <strong>Projekt-Ogrzewania.pl</strong>. Skrypt zablokowany.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Rozszerzona Baza Treści (8 Błędów SEO)
    const errData = {
        'err-layer': {
            title: 'Układanie izolacji w jednej warstwie',
            text: 'Zastosowanie pojedynczej płyty o grubości np. 15 cm generuje pionowe, bezpośrednie szczeliny na łączeniach płyt. Tworzy to potężne, liniowe mostki termiczne, przez które ciepło ucieka w kierunku fundamentu.',
            solution: 'Płyty należy układać bezwzględnie w układzie mijankowym (np. 10 cm + 5 cm) z przesunięciem krawędzi o minimum 20 cm.'
        },
        'err-uneven': {
            title: 'Brak wyrównania podłoża',
            text: 'Układanie płyt na chropowatej powierzchni z zaprawą tworzy pustki powietrzne. Pod dociskiem <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">ciężkiej wylewki</a> styropian łamie się, powodując klawiszowanie betonu.',
            solution: 'Nierówności >8 mm bezwzględnie wyrównaj podsypką piaskową lub szybką masą samopoziomującą przed układaniem płyt.'
        },
        'err-edge': {
            title: 'Ignorowanie izolacji brzegowej',
            text: 'Brak pianki dylatacyjnej odcina wylewce grzewczej możliwość naturalnej rozszerzalności termicznej. Gorący beton styka się z zimną ścianą, przekazując energię prosto w mury.',
            solution: 'Wokół wszystkich ścian i słupów zastosuj taśmę brzegową z folią o grubości minimum 8 mm.'
        },
        'err-foil': {
            title: 'Nieszczelność folii (Wylewka anhydrytowa)',
            text: 'Samo ułożenie folii "na zakładkę" to błąd przy jastrychach płynnych. <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">Wylewka anhydrytowa</a> wleje się w szczeliny izolacji, unosząc styropian do góry i tworząc mostki akustyczne.',
            solution: 'Zakłady folii zrastrowanej precyzyjnie sklej taśmą wodoodporną, tworząc szczelną wannę dla płynnego jastrychu.'
        },
        'err-soft': {
            title: 'Zastosowanie styropianu fasadowego',
            text: 'Często spotykany błąd z chęci oszczędności. Miękki styropian (EPS 70 lub fasadowy) drastycznie odkształci się (osiądzie) pod ciężarem wylewki i mebli, zrywając rury oraz pękając beton.',
            solution: 'Zawsze używaj dedykowanego styropianu podłogowego o współczynniku odporności na ściskanie minimum CS(10) 100 kPa.'
        },
        'err-cross': {
            title: 'Krzyżowanie rur bez izolacji',
            text: 'Prowadzenie rur CWU/CO bezpośrednio w warstwie styropianu podłogowego bez wycięcia szerszych kanałów i założenia peszli/otulin skutkuje ubytkami cieplnymi i osłabieniem podparcia rur grzewczych na górze.',
            solution: 'Instalacje wod-kan układaj wyłącznie w pierwszej warstwie izolacji (np. 10 cm), wycinając precyzyjne kanały i stosując grube otuliny.'
        },
        'err-gap': {
            title: 'Łatanie ubytków pianką PUR',
            text: 'Cięcie styropianu "na oko" i wypełnianie powstałych, kilkucentymetrowych szczelin zwykłą pianką montażową niszczy jednorodność oporu cieplnego posadzki. Zwykła piana szybko ulega degradacji i utlenieniu.',
            solution: 'Płyty należy docinać gilotyną termiczną (gorącym drutem), co zapewnia idealne spasowanie bloków "na wcisk" bez zaprawy.'
        },
        'err-clip': {
            title: 'Zbyt krótkie spinki do tackera',
            text: 'Stosowanie spinek o długości 40 mm na folii przytwierdzonej do miększej warstwy wierzchniej (np. 5 cm) skutkuje masowym wyrywaniem rur ze styropianu w trakcie zalewania betonem (rury wypływają na wierzch).',
            solution: 'Dobieraj spinki do grubości warstwy nośnej folii – przy układzie rur rzędu 16x2.0 mm absolutne minimum to spinki 50 mm wbijane prosto.'
        }
    };

    // 3. Logika Interfejsu
    const btns = document.querySelectorAll('.rk-err-btn');
    const svgStage = document.getElementById('svg-stage');
    const contentBox = document.getElementById('err-content');

    function updateView(targetId) {
        // Reset klas SVG
        svgStage.className = `rk-err-visual state-${targetId.replace('err-', '')}`;
        
        // Render Treści
        const data = errData[targetId];
        contentBox.innerHTML = `
            <h3>${data.title}</h3>
            <p>${data.text}</p>
            <div class="rk-err-solution">
                <strong>Standard Inżynierski:</strong>
                <span>${data.solution}</span>
            </div>
        `;
    }

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

    // Startowa inicjalizacja
    updateView('err-layer');
});
</script>



<style>
:root {
    --rk-proj-dark: #0f172a;
    --rk-proj-card: #1e293b;
    --rk-proj-brand: #0284c7; /* Błękit inżynieryjny */
    --rk-proj-brand-light: #e0f2fe;
    --rk-proj-accent: #0ea5e9; 
    --rk-proj-success: #10b981;
    --rk-proj-warning: #f59e0b;
    --rk-proj-danger: #ef4444;
    --rk-proj-bg: #f8fafc;
    --rk-proj-border: #e2e8f0;
    --rk-proj-text: #475569;
}

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

/* Sekcja Nagłówkowa */
.rk-proj-header {
    background: linear-gradient(135deg, var(--rk-proj-dark) 0%, #0c4a6e 100%);
    padding: 45px 50px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-proj-brand);
}

.rk-proj-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #bae6fd;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(186, 230, 253, 0.2);
}

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

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

/* Symulator Hydrauliczny */
.rk-proj-interactive {
    padding: 40px 50px;
    background: var(--rk-proj-bg);
    border-bottom: 1px solid var(--rk-proj-border);
}

/* Przełącznik (Toggle) */
.rk-proj-toggle-wrap {
    display: flex;
    background: #e2e8f0;
    border-radius: 12px;
    padding: 6px;
    max-width: 600px;
    margin: 0 auto 35px auto;
}

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

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

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

/* Grid Dashboardu */
.rk-proj-dashboard {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: 30px;
    align-items: center;
}

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

.rk-metric-card {
    background: #ffffff;
    border: 1px solid var(--rk-proj-border);
    border-radius: 12px;
    padding: 15px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
    transition: all 0.3s;
}

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

.rk-metric-val {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-proj-dark);
    transition: color 0.3s;
}

/* Stan Zły */
.state-bad .rk-metric-card.alert { border-color: #fca5a5; background: #fef2f2; }
.state-bad .rk-metric-card.alert .rk-metric-val { color: var(--rk-proj-danger); }

/* Stan Dobry */
.state-good .rk-metric-card.ok { border-color: #6ee7b7; background: #ecfdf5; }
.state-good .rk-metric-card.ok .rk-metric-val { color: var(--rk-proj-success); }

/* Wizualizacja SVG (Hydraulika) */
.rk-proj-visual {
    background: var(--rk-proj-dark);
    border-radius: 16px;
    padding: 20px;
    height: 220px;
    position: relative;
    box-shadow: inset 0 0 30px rgba(0,0,0,0.5);
    display: flex;
    align-items: center;
    justify-content: center;
}

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

/* Elementy SVG */
.svg-bg-concrete { fill: #1e293b; }
.svg-pipe-path {
    fill: none;
    stroke-width: 8;
    stroke-linecap: round;
    stroke-linejoin: round;
    transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}
.svg-flow-dash {
    fill: none;
    stroke: rgba(255,255,255,0.6);
    stroke-width: 4;
    stroke-linecap: round;
    stroke-linejoin: round;
}

/* Animacje Flow */
.state-bad .svg-pipe-path { stroke: #ef4444; } /* Czerwone - wysokie opory */
.state-bad .svg-pipe-extra { opacity: 1; } /* Gęsty rozstaw */
.state-bad .svg-flow-dash { stroke-dasharray: 10 15; animation: franticFlow 0.5s linear infinite; }
.state-bad .svg-pump-icon { fill: #ef4444; animation: pumpStress 0.2s infinite alternate; }

.state-good .svg-pipe-path { stroke: #3b82f6; } /* Niebieskie - optymalne */
.state-good .svg-pipe-extra { opacity: 0; transform: translateY(-10px); } /* Szerszy rozstaw */
.state-good .svg-flow-dash { stroke-dasharray: 20 30; animation: smoothFlow 1.5s linear infinite; }
.state-good .svg-pump-icon { fill: #10b981; }

@keyframes franticFlow { to { stroke-dashoffset: -50; } }
@keyframes smoothFlow { to { stroke-dashoffset: -100; } }
@keyframes pumpStress { from { transform: scale(0.95) translate(-1px, 1px); } to { transform: scale(1.05) translate(1px, -1px); } }

/* Sekcja z tekstem objaśniającym */
.rk-proj-explanation {
    padding: 40px 50px 0 50px;
    background: #ffffff;
}

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

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

.rk-tech-box {
    background: var(--rk-proj-bg);
    border-left: 4px solid var(--rk-proj-brand);
    padding: 20px;
    border-radius: 0 12px 12px 0;
    margin-bottom: 30px;
    font-family: monospace;
    font-size: 14px;
    color: #0369a1;
    font-weight: 600;
}

/* MOCNE CTA Z ROI */
.rk-proj-cta-section {
    padding: 40px 50px;
    background: linear-gradient(180deg, #ffffff 0%, #f0f9ff 100%);
    border-top: 1px solid var(--rk-proj-border);
    text-align: center;
}

.rk-cta-wrapper {
    max-width: 700px;
    margin: 0 auto;
    background: #ffffff;
    border: 2px solid var(--rk-proj-brand);
    border-radius: 20px;
    padding: 40px;
    box-shadow: 0 20px 40px -10px rgba(2, 132, 199, 0.2);
    position: relative;
    overflow: hidden;
}

.rk-cta-wrapper::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 100%; height: 6px;
    background: linear-gradient(90deg, #10b981, #0284c7);
}

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

.rk-cta-desc {
    font-size: 15px;
    color: var(--rk-proj-text);
    line-height: 1.6;
    margin: 0 0 25px 0;
}

.rk-cta-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-proj-brand);
    color: #ffffff;
    font-size: 16px;
    font-weight: 800;
    padding: 18px 36px;
    border-radius: 12px;
    text-decoration: none;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s;
}

.rk-cta-btn:hover {
    background: #0369a1;
    transform: translateY(-3px);
    box-shadow: 0 15px 25px -5px rgba(2, 132, 199, 0.5);
}

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

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

@media (max-width: 768px) {
    .rk-proj-header, .rk-proj-interactive, .rk-proj-explanation, .rk-proj-cta-section { padding: 30px 20px; }
    .rk-proj-dashboard { grid-template-columns: 1fr; }
    .rk-proj-toggle-wrap { flex-direction: column; }
    .rk-cta-wrapper { padding: 30px 20px; }
    .rk-cta-btn { width: 100%; padding: 16px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#article-projekt",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/"
    },
    "headline": "Jak dobór izolacji wpływa na projekt ogrzewania podłogowego?",
    "description": "Dowiedz się, jak grubość styropianu determinuje wyniki OZC, przepływy hydrauliczne i rozstaw rur. Zobacz interaktywną symulację.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-25",
    "dateModified": "2026-05-25"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#dataset-projekt",
    "name": "Parametry hydrauliczne w zależności od izolacji podłogi",
    "description": "Zestawienie zmiennych hydraulicznych (przepływ masowy, opór, rozstaw rur) wynikających ze zmiany obciążenia cieplnego (OZC) budynku.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wpływ styropianu na projekt podłogówki",
      "obliczenia OZC a izolacja",
      "przepływ masowy czynnika ogrzewanie podłogowe",
      "rozstaw rur 10 czy 15 cm",
      "opory hydrauliczne pompy obiegowej"
    ],
    "measurementTechnique": "Symulacja zmian parametrów instalacji (Q=1.2kW vs Q=1.8kW) przy spadku temperatury ΔT=5K i ich wpływ na pompę obiegową.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wariant Optymalny (15 cm): Zapotrzebowanie 1,2 kW -> Przepływ 206 l/h -> Rozstaw 15 cm",
        "Wariant Słaby (10 cm): Zapotrzebowanie 1,8 kW -> Przepływ 310 l/h -> Rozstaw 10 cm (Zagrożenie hydrauliczne)"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#webapp-projekt",
    "name": "Symulator Wpływu Izolacji na Hydraulikę",
    "description": "Aplikacja wizualizująca przeciążenie pompy obiegowej i zagęszczenie rur w przypadku zastosowania zbyt cienkiej warstwy styropianu podłogowego.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-proj-container" id="rk-proj-app">
    
    <div class="rk-proj-header">
        <div class="rk-proj-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Finanse i Hydraulika
        </div>
        <h2>Jak dobór izolacji wpływa na projekt ogrzewania podłogowego?</h2>
        <p>
            Projekt instalacji grzewczej to system naczyń połączonych. Grubość i jakość izolacji termicznej determinują końcowe wyniki obliczeń <strong>Projektowego Obciążenia Cieplnego (OZC)</strong>, co bezpośrednio wpływa na geometrię pętli grzewczych oraz parametry pracy źródła ciepła.
        </p>
    </div>

    <div class="rk-proj-interactive">
        
        <div class="rk-proj-toggle-wrap">
            <button class="rk-proj-toggle-btn active" data-state="bad">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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>
                Odchudzona Izolacja (10 cm)
            </button>
            <button class="rk-proj-toggle-btn" data-state="good">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                Optymalna Izolacja (15 cm)
            </button>
        </div>

        <div class="rk-proj-dashboard state-bad" id="proj-dashboard">
            
            <div class="rk-proj-metrics">
                <div class="rk-metric-card alert" id="card-ozc">
                    <div class="rk-metric-title">Zapotrzebowanie (Q)</div>
                    <div class="rk-metric-val" id="val-ozc">1,8 kW</div>
                </div>
                <div class="rk-metric-card alert" id="card-flow">
                    <div class="rk-metric-title">Wymagany przepływ</div>
                    <div class="rk-metric-val" id="val-flow">310 l/h</div>
                </div>
                <div class="rk-metric-card alert" id="card-space">
                    <div class="rk-metric-title">Rozstaw rur</div>
                    <div class="rk-metric-val" id="val-space">co 10 cm</div>
                </div>
                <div class="rk-metric-card alert" id="card-loop">
                    <div class="rk-metric-title">Stan pompy obiegowej</div>
                    <div class="rk-metric-val" id="val-loop">Przeciążona</div>
                </div>
            </div>

            <div class="rk-proj-visual">
                <svg class="rk-svg-hydraulics" viewBox="0 0 300 200">
                    <rect class="svg-bg-concrete" x="10" y="20" width="280" height="160" rx="8" />
                    
                    <g transform="translate(0, 10)">
                        <path class="svg-pipe-path" d="M 40 180 L 40 40 L 260 40 L 260 140 L 80 140 L 80 80 L 220 80 L 220 100" />
                        <path class="svg-flow-dash" d="M 40 180 L 40 40 L 260 40 L 260 140 L 80 140 L 80 80 L 220 80 L 220 100" />
                        
                        <g class="svg-pipe-extra">
                            <path class="svg-pipe-path" d="M 60 180 L 60 60 L 240 60 L 240 120 L 100 120 L 100 100" />
                            <path class="svg-flow-dash" d="M 60 180 L 60 60 L 240 60 L 240 120 L 100 120 L 100 100" />
                        </g>
                    </g>
                    
                    <circle cx="50" cy="180" r="15" fill="#334155" stroke="#cbd5e1" stroke-width="3" />
                    <polygon class="svg-pump-icon" points="43,185 50,170 57,185" />
                </svg>
            </div>
        </div>

    </div>

    <div class="rk-proj-explanation">
        <p>Kiedy redukujemy straty ciepła przez podłogę poprzez zwiększenie grubości styropianu z 10 cm do 15 cm, zapotrzebowanie na moc cieplną pomieszczenia spada. To daje projektantowi potężne możliwości optymalizacyjne:</p>
        
        <ul style="color: var(--rk-proj-text); line-height: 1.8; margin-bottom: 25px;">
            <li><strong>Zwiększenie rozstawu rur:</strong> Zamiast gęstego układania co 10 cm (które generuje wysokie opory hydrauliczne), można zastosować rozstaw co 15 cm.</li>
            <li><strong>Skrócenie długości pętli:</strong> Krótsze pętle oznaczają mniejsze straty ciśnienia w instalacji hydraulicznej.</li>
            <li><strong>Obniżenie parametrów zasilania:</strong> Pompa ciepła może zasilać układ temperaturą o 2-3°C niższą, co przekłada się na drastyczny wzrost jej efektywności sezonowej (SCOP).</li>
        </ul>

        <div class="rk-tech-box">
            PRZYKŁAD HYDRAULICZNY:<br><br>
            [15 cm EPS] Q = 1,2 kW, przy ΔT = 5 K -> Wymagany przepływ czynnika: <strong>0,206 m³/h (206 l/h)</strong>.<br><br>
            [10 cm EPS] Q = 1,8 kW, przy ΔT = 5 K -> Wymagany przepływ czynnika: <strong style="color:#ef4444;">0,310 m³/h (310 l/h)</strong>.<br>
            Wynik? Przekroczenie dopuszczalnych oporów liniowych i konieczność zakupu większej pompy obiegowej.
        </div>
    </div>

    <div class="rk-proj-cta-section">
        <div class="rk-cta-wrapper">
            <h3 class="rk-cta-title">Zainwestuj w wiedzę. Zaoszczędź na eksploatacji.</h3>
            <p class="rk-cta-desc">
                Prawidłowo wykonany <strong>Projekt Ogrzewania Podłogowego (OZC + Hydraulika)</strong> to nie jest wydatek. To inwestycja, która optymalizuje ilość materiału na budowie i gwarantuje najniższe możliwe rachunki za ogrzewanie. Koszt projektu często zwraca się już w pierwszym sezonie grzewczym pracy pompy ciepła.
            </p>
            <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-cta-btn">
                ZAMÓW PROFESJONALNY PROJEKT OGRZEWANIA
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
            </a>
        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie domeny (Brak H w alercie)
    const dmn = window.location.hostname;
    const allowedDmns = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDmns.includes(dmn)) {
        const blck = document.getElementById('rk-proj-app');
        if (blck) {
            blck.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #ef4444; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 38px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Zabezpieczenie Licencyjne</div>
                    <div style="font-size: 14px; color: #cbd5e1; max-width: 500px; margin: 0 auto; line-height: 1.6;">
                        Interaktywny panel hydrauliczny oraz dane JSON-LD są własnością domeny <strong>Projekt-Ogrzewania.pl</strong>. Kod został zablokowany.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Toggle i Aktualizacja Danych
    const btns = document.querySelectorAll('.rk-proj-toggle-btn');
    const dashboard = document.getElementById('proj-dashboard');
    
    const valOzc = document.getElementById('val-ozc');
    const valFlow = document.getElementById('val-flow');
    const valSpace = document.getElementById('val-space');
    const valLoop = document.getElementById('val-loop');
    
    const cards = document.querySelectorAll('.rk-metric-card');

    const dataStates = {
        'bad': {
            ozc: '1,8 kW',
            flow: '310 l/h',
            space: 'co 10 cm',
            loop: 'Przeciążona',
            cssClass: 'state-bad',
            cardClass: 'alert'
        },
        'good': {
            ozc: '1,2 kW',
            flow: '206 l/h',
            space: 'co 15 cm',
            loop: 'Optymalna',
            cssClass: 'state-good',
            cardClass: 'ok'
        }
    };

    function updateDashboard(state) {
        const data = dataStates[state];
        
        // Zmiana tekstu
        valOzc.textContent = data.ozc;
        valFlow.textContent = data.flow;
        valSpace.textContent = data.space;
        valLoop.textContent = data.loop;

        // Zmiana klas kontenera nadrzędnego (dla animacji SVG)
        dashboard.className = `rk-proj-dashboard ${data.cssClass}`;

        // Zmiana klas kart (kolory)
        cards.forEach(card => {
            card.className = `rk-metric-card ${data.cardClass}`;
        });
    }

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            if (this.classList.contains('active')) return;
            
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            
            updateDashboard(this.getAttribute('data-state'));
        });
    });

    // Inicjalizacja bazowa
    updateDashboard('bad');
});
</script>



<style>
:root {
    --rk-cs-dark: #0f172a;
    --rk-cs-card: #1e293b;
    --rk-cs-brand: #10b981; /* Szmaragdowa zieleń - symbol oszczędności/pieniędzy */
    --rk-cs-brand-light: #d1fae5;
    --rk-cs-accent: #f59e0b; /* Złoto/Bursztyn */
    --rk-cs-danger: #ef4444; /* Czerwień dla strat */
    --rk-cs-bg: #f8fafc;
    --rk-cs-border: #e2e8f0;
    --rk-cs-text: #475569;
}

.rk-cs-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(16, 185, 129, 0.15);
    border: 1px solid rgba(16, 185, 129, 0.3);
    overflow: hidden;
}

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

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

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

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

/* Moduł Interaktywny - Porównanie ROI */
.rk-cs-interactive {
    padding: 40px 50px;
    background: var(--rk-cs-bg);
}

.rk-cs-toggle-wrap {
    display: flex;
    background: #e2e8f0;
    border-radius: 12px;
    padding: 6px;
    max-width: 600px;
    margin: 0 auto 40px auto;
}

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

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

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

/* Wyeksponowane Oszczędności (Kluczowy element) */
.rk-cs-savings-dashboard {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    margin-bottom: 40px;
}

.rk-cs-savings-card {
    background: #ffffff;
    border: 2px solid var(--rk-cs-border);
    border-radius: 20px;
    padding: 30px;
    text-align: center;
    position: relative;
    overflow: hidden;
    transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 10px 20px -10px rgba(0,0,0,0.05);
}

.rk-cs-savings-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 100%; height: 5px;
    background: var(--rk-cs-border);
    transition: background 0.5s;
}

/* Stan "Po Audycie" - Zielony/Złoty */
.state-after .rk-cs-savings-card.capex { border-color: var(--rk-cs-brand); box-shadow: 0 15px 30px -10px rgba(16,185,129,0.2); }
.state-after .rk-cs-savings-card.capex::before { background: var(--rk-cs-brand); }
.state-after .rk-cs-savings-card.opex { border-color: var(--rk-cs-accent); box-shadow: 0 15px 30px -10px rgba(245,158,11,0.2); }
.state-after .rk-cs-savings-card.opex::before { background: var(--rk-cs-accent); }

/* Stan "Przed" - Czerwony */
.state-before .rk-cs-savings-card { border-color: #fca5a5; background: #fef2f2; }
.state-before .rk-cs-savings-card::before { background: var(--rk-cs-danger); }

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

.rk-cs-card-val {
    font-size: 48px;
    font-weight: 900;
    line-height: 1.1;
    margin-bottom: 10px;
    display: flex;
    justify-content: center;
    align-items: baseline;
    gap: 5px;
    transition: color 0.5s;
}

.rk-cs-card-val span {
    font-size: 20px;
    font-weight: 700;
}

.state-after .capex .rk-cs-card-val { color: var(--rk-cs-brand); }
.state-after .opex .rk-cs-card-val { color: var(--rk-cs-accent); }
.state-before .rk-cs-card-val { color: var(--rk-cs-danger); }

.rk-cs-card-desc {
    font-size: 14px;
    color: var(--rk-cs-text);
    font-weight: 600;
}

/* Detale Techniczne & SVG */
.rk-cs-tech-split {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: 30px;
    background: #ffffff;
    border: 1px solid var(--rk-cs-border);
    border-radius: 16px;
    overflow: hidden;
}

.rk-cs-tech-details {
    padding: 30px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 20px;
}

.rk-tech-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-bottom: 15px;
    border-bottom: 1px solid var(--rk-cs-border);
}

.rk-tech-row:last-child { border-bottom: none; padding-bottom: 0; }

.rk-tech-label { font-size: 15px; font-weight: 700; color: var(--rk-cs-text); }
.rk-tech-val { font-size: 18px; font-weight: 900; color: var(--rk-cs-dark); transition: color 0.3s; }

.state-before .val-bad { color: var(--rk-cs-danger); }
.state-after .val-good { color: var(--rk-cs-brand); }

/* SVG Wizualizacja (Pompa i Dom) */
.rk-cs-svg-box {
    background: var(--rk-cs-dark);
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
}

.rk-svg-roi { width: 100%; height: 100%; max-height: 220px; }

/* Elementy SVG */
.anim-pump-body { transition: fill 0.5s; }
.state-before .anim-pump-body { fill: #ef4444; }
.state-after .anim-pump-body { fill: #10b981; }

.anim-eps-layer { transition: all 0.5s cubic-bezier(0.34, 1.56, 0.64, 1); }
.state-before .anim-eps-layer { height: 15px; y: 135px; fill: #fcd34d; }
.state-after .anim-eps-layer { height: 35px; y: 115px; fill: #475569; }

.anim-money-drop { opacity: 0; transition: opacity 0.3s; }
.state-before .anim-money-drop { opacity: 1; animation: dropMoney 1.5s infinite linear; }

.anim-shield { opacity: 0; transition: opacity 0.5s; transform-origin: center; transform: scale(0); }
.state-after .anim-shield { opacity: 1; transform: scale(1); }

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

/* Tekst Case Study */
.rk-cs-story {
    padding: 0 50px 40px 50px;
    background: var(--rk-cs-bg);
}

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

.rk-cs-story p:last-child { margin-bottom: 0; }

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

@media (max-width: 768px) {
    .rk-cs-header, .rk-cs-interactive, .rk-cs-story { padding: 30px 20px; }
    .rk-cs-toggle-wrap { flex-direction: column; }
    .rk-cs-savings-dashboard { grid-template-columns: 1fr; gap: 20px; }
    .rk-cs-tech-split { grid-template-columns: 1fr; }
    .rk-cs-svg-box { height: 200px; }
    .rk-cs-card-val { font-size: 38px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/"
    },
    "headline": "Case Study: Analiza inwestycji i zwrot z izolacji (Podkarpacie 2026)",
    "description": "Zobacz, jak profesjonalny audyt OZC i zmiana styropianu z 10 cm EPS 70 na 14 cm grafitu wygenerowała 3200 PLN oszczędności 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-05-25",
    "dateModified": "2026-05-25"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#dataset-casestudy",
    "name": "Analiza ROI: Optymalizacja Izolacji Podłogowej",
    "description": "Zestawienie kosztów inwestycyjnych (CAPEX) i operacyjnych (OPEX) przed i po optymalizacji grubości styropianu dla domu 165 m2.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zwrot z inwestycji w styropian",
      "koszty pompy ciepła a izolacja",
      "oszczędności na ogrzewaniu podłogowym",
      "audyt OZC Podkarpacie",
      "współczynnik U a moc pompy"
    ],
    "measurementTechnique": "Porównanie zapotrzebowania na moc pompy ciepła (8 kW vs 6 kW) w oparciu o spadek współczynnika U (0,32 -> 0,16 W/m2K).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Plan Wykonawcy: EPS 70 10cm, U=0,32, Pompa 8kW, Straty 24 kWh/m2.",
        "Projekt Inżynierski: EPS 100 Grafit 14cm, U=0,16, Pompa 6kW.",
        "Oszczędność CAPEX (Pompa): 3200 PLN jednorazowo.",
        "Oszczędność OPEX (Prąd): 480 PLN rocznie."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#webapp-casestudy",
    "name": "Kalkulator Oszczędności Inwestycyjnych (ROI)",
    "description": "Interaktywny symulator prezentujący różnicę w kosztach zakupu pompy ciepła oraz rocznych rachunkach przy zmianie warstw izolacji.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-cs-container" id="rk-cs-app">
    
    <div class="rk-cs-header">
        <div class="rk-cs-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
            Case Study Inwestora
        </div>
        <h2>Analiza inwestycji w Podkarpaciu (Maj 2025)</h2>
        <p>
            Teoria to jedno, ale liczby nie kłamią. Zobacz na realnym przykładzie mojego klienta (dom 165 m², III strefa klimatyczna, projektowa -20°C), jak odchudzanie izolacji uderza bezpośrednio w portfel, oraz jak <strong>inżynierski audyt OZC odzyskał tysiące złotych</strong>.
        </p>
    </div>

    <div class="rk-cs-interactive state-after" id="cs-interactive-board">
        
        <div class="rk-cs-toggle-wrap">
            <button class="rk-cs-toggle-btn" data-view="before">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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>
                Wizja Wykonawcy ("Na Oko")
            </button>
            <button class="rk-cs-toggle-btn active" data-view="after">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                Audyt Inżynierski (OZC)
            </button>
        </div>

        <div class="rk-cs-savings-dashboard">
            <div class="rk-cs-savings-card capex">
                <div class="rk-cs-card-title" id="title-capex">Oszczędność przy zakupie Pompy Ciepła</div>
                <div class="rk-cs-card-val"><span id="sign-capex">+</span><span id="val-capex">3200</span> <span>PLN</span></div>
                <div class="rk-cs-card-desc" id="desc-capex">Uniknięto zakupu przewymiarowanego urządzenia 8 kW.</div>
            </div>
            <div class="rk-cs-savings-card opex">
                <div class="rk-cs-card-title" id="title-opex">Zysk na rachunkach co sezon grzewczy</div>
                <div class="rk-cs-card-val"><span id="sign-opex">+</span><span id="val-opex">480</span> <span>PLN/rok</span></div>
                <div class="rk-cs-card-desc" id="desc-opex">Gwarancja niższych kosztów eksploatacyjnych dzięki COP.</div>
            </div>
        </div>

        <div class="rk-cs-tech-split">
            <div class="rk-cs-tech-details">
                <div class="rk-tech-row">
                    <span class="rk-tech-label">Zastosowany styropian:</span>
                    <span class="rk-tech-val" id="tech-mat">14 cm EPS 100 Grafit</span>
                </div>
                <div class="rk-tech-row">
                    <span class="rk-tech-label">Współczynnik przenikania (U):</span>
                    <span class="rk-tech-val val-good" id="tech-u">0,16 W/(m²·K)</span>
                </div>
                <div class="rk-tech-row">
                    <span class="rk-tech-label">Wymagana moc pompy:</span>
                    <span class="rk-tech-val val-good" id="tech-pump">Tylko 6 kW</span>
                </div>
            </div>

            <div class="rk-cs-svg-box">
                <svg class="rk-svg-roi" viewBox="0 0 200 200">
                    <rect x="50" y="50" width="100" height="100" fill="#1e293b" rx="4"></rect>
                    <polygon points="40,50 100,10 160,50" fill="#334155"></polygon>
                    
                    <rect class="anim-eps-layer" x="55" y="115" width="90" height="35" rx="2"></rect>
                    
                    <rect class="anim-pump-body" x="15" y="110" width="25" height="40" rx="3"></rect>
                    <circle cx="27.5" cy="125" r="8" fill="#0f172a"></circle>
                    
                    <g class="anim-money-drop">
                        <circle cx="80" cy="155" r="6" fill="#ef4444"></circle>
                        <text x="80" y="158" font-size="8" fill="#ffffff" font-weight="bold" text-anchor="middle">$</text>
                        <circle cx="120" cy="155" r="6" fill="#ef4444"></circle>
                        <text x="120" y="158" font-size="8" fill="#ffffff" font-weight="bold" text-anchor="middle">$</text>
                    </g>

                    <g class="anim-shield">
                        <path d="M100 165 L140 165 L120 190 Z" fill="#10b981"></path>
                        <path d="M100 165 Q120 185 140 165 Z" fill="#34d399"></path>
                        <text x="120" y="175" font-family="sans-serif" font-size="10" font-weight="bold" fill="#ffffff" text-anchor="middle">ZYSK</text>
                    </g>
                </svg>
            </div>
        </div>

    </div>

    <div class="rk-cs-story">
        <p>
            Modyfikację założeń doskonale obrazuje przypadek z mojej inżynierskiej praktyki. Pierwotny plan wykonawcy u pana Janusza zakładał ułożenie jednej warstwy przypadkowego styropianu <strong>EPS 70 o grubości zaledwie 10 cm</strong>.
        </p>
        <p>
            Skutkowałoby to współczynnikiem przenikania ciepła na poziomie U = 0,32 W/(m²·K) – wartością rażąco naruszającą prawo budowlane i generującą straty ciepła rzędu 24 kWh/(m²·rok) przez samą podłogę na gruncie. Wykonawca planował zamaskować ten błąd doborem większej i droższej pompy ciepła o mocy 8 kW.
        </p>
        <p>
            Po wykonaniu profesjonalnego audytu i szczegółowych <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">obliczeń OZC</a>, skorygowałem projekt. Wprowadziliśmy <strong>układ dwuwarstwowy z przesunięciem spoin o łącznej grubości 14 cm styropianu grafitowego EPS 100</strong> (λ = 0,031 W/(m·K)). W efekcie uzyskaliśmy rewelacyjny współczynnik U = 0,16 W/(m²·K), co obniżyło projektowe obciążenie cieplne całego budynku o równe 1,4 kW. Oszczędność to nie tylko tańsza o 3200 zł mniejsza pompa, ale przede wszystkim spokój i niższe rachunki na dekady.
        </p>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie domeny
    const hostDomain = window.location.hostname;
    const authList = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!authList.includes(hostDomain)) {
        const shield = document.getElementById('rk-cs-app');
        if (shield) {
            shield.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #ef4444; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 38px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Blokada Skryptu ROI</div>
                    <div style="font-size: 14px; color: #cbd5e1; max-width: 500px; margin: 0 auto; line-height: 1.6;">
                        Interaktywny panel analizy kosztów i oszczędności (Case Study) należy do domeny <strong>Projekt-Ogrzewania.pl</strong>. Uruchomienie zatrzymane.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Dashboardu Oszczędności
    const btns = document.querySelectorAll('.rk-cs-toggle-btn');
    const board = document.getElementById('cs-interactive-board');
    
    // Pola Danych
    const valCapex = document.getElementById('val-capex');
    const signCapex = document.getElementById('sign-capex');
    const titleCapex = document.getElementById('title-capex');
    const descCapex = document.getElementById('desc-capex');

    const valOpex = document.getElementById('val-opex');
    const signOpex = document.getElementById('sign-opex');
    const titleOpex = document.getElementById('title-opex');
    const descOpex = document.getElementById('desc-opex');

    const tMat = document.getElementById('tech-mat');
    const tU = document.getElementById('tech-u');
    const tPump = document.getElementById('tech-pump');

    const states = {
        'before': {
            css: 'state-before',
            capexTitle: 'Przepłacasz za Pompę Ciepła',
            capexSign: '-',
            capexVal: '3200',
            capexDesc: 'Wymuszony zakup przewymiarowanej jednostki 8 kW.',
            opexTitle: 'Straty na rachunkach co sezon',
            opexSign: '-',
            opexVal: '480',
            opexDesc: 'Ciepło ucieka w grunt. Wyższe rachunki za prąd.',
            mat: '10 cm EPS 70 (Przypadkowy)',
            uVal: '0,32 W/(m²·K)',
            pump: 'Aż 8 kW (Przewymiarowana)'
        },
        'after': {
            css: 'state-after',
            capexTitle: 'Oszczędność przy zakupie Pompy Ciepła',
            capexSign: '+',
            capexVal: '3200',
            capexDesc: 'Uniknięto zakupu przewymiarowanego urządzenia 8 kW.',
            opexTitle: 'Zysk na rachunkach co sezon grzewczy',
            opexSign: '+',
            opexVal: '480',
            opexDesc: 'Gwarancja niższych kosztów eksploatacyjnych dzięki wyższemu COP.',
            mat: '14 cm EPS 100 Grafit',
            uVal: '0,16 W/(m²·K)',
            pump: 'Tylko 6 kW (Zoptymalizowana)'
        }
    };

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

    function switchState(stateKey) {
        const s = states[stateKey];
        
        // Zmiana klasy głównej (odpala CSS i SVG animacje)
        board.className = `rk-cs-interactive ${s.css}`;

        // Teksty
        titleCapex.textContent = s.capexTitle;
        signCapex.textContent = s.capexSign;
        descCapex.textContent = s.capexDesc;

        titleOpex.textContent = s.opexTitle;
        signOpex.textContent = s.opexSign;
        descOpex.textContent = s.opexDesc;

        tMat.textContent = s.mat;
        tU.textContent = s.uVal;
        tPump.textContent = s.pump;

        // Odświeżenie klas dla kolorów U i Pompy
        if (stateKey === 'before') {
            tU.className = 'rk-tech-val val-bad';
            tPump.className = 'rk-tech-val val-bad';
        } else {
            tU.className = 'rk-tech-val val-good';
            tPump.className = 'rk-tech-val val-good';
        }

        // Animacja samych liczb
        animateValue(valCapex, 0, parseInt(s.capexVal), 600);
        animateValue(valOpex, 0, parseInt(s.opexVal), 600);
    }

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            if(this.classList.contains('active')) return;
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            switchState(this.getAttribute('data-view'));
        });
    });

    // Uruchomienie animacji startowej (Po Audycie) po załadowaniu
    setTimeout(() => {
        animateValue(valCapex, 0, 3200, 800);
        animateValue(valOpex, 0, 480, 800);
    }, 300);
});
</script>



<style>
:root {
    --rk-sum-eps-dark: #020617;
    --rk-sum-eps-panel: #0f172a;
    --rk-sum-eps-primary: #f59e0b; /* Termiczny bursztyn/złoto */
    --rk-sum-eps-primary-light: #fef3c7;
    --rk-sum-eps-accent: #3b82f6; /* Błękit dla kontrastu */
    --rk-sum-eps-bg: #f8fafc;
    --rk-sum-eps-border: #cbd5e1;
    --rk-sum-eps-text: #334155;
    --rk-sum-eps-text-dim: #64748b;
}

.rk-sum-eps-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(245, 158, 11, 0.15);
    border: 1px solid rgba(245, 158, 11, 0.3);
    overflow: hidden;
}

/* Header z ekspertem */
.rk-sum-eps-header {
    background: linear-gradient(135deg, var(--rk-sum-eps-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    display: flex;
    align-items: center;
    gap: 30px;
    border-bottom: 4px solid var(--rk-sum-eps-primary);
    position: relative;
    overflow: hidden;
}

.rk-sum-eps-header::after {
    content: ''; position: absolute; right: 0; top: 0; width: 300px; height: 100%;
    background: radial-gradient(circle at right, rgba(245, 158, 11, 0.15) 0%, transparent 70%);
}

.rk-eps-expert-avatar {
    width: 90px;
    height: 90px;
    border-radius: 50%;
    border: 3px solid var(--rk-sum-eps-primary);
    box-shadow: 0 0 20px rgba(245, 158, 11, 0.4);
    object-fit: cover;
    position: relative;
    z-index: 2;
}

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

.rk-eps-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(245, 158, 11, 0.2);
    color: #fcd34d;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 10px;
    border: 1px solid rgba(252, 211, 77, 0.3);
}

.rk-eps-header-content h2 {
    font-size: 26px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 8px 0;
    line-height: 1.2;
}

.rk-eps-header-content p {
    color: #94a3b8;
    font-size: 14px;
    margin: 0;
    font-weight: 500;
}

/* Sekcja z zakładkami i wiedzą */
.rk-sum-eps-body {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: #ffffff;
}

.rk-eps-rules-list {
    padding: 30px;
    border-right: 1px solid var(--rk-sum-eps-border);
    display: flex;
    flex-direction: column;
    gap: 10px;
    background: #f8fafc;
}

.rk-eps-rule-btn {
    background: #ffffff;
    border: 1px solid var(--rk-sum-eps-border);
    padding: 18px 20px;
    border-radius: 12px;
    text-align: left;
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: flex-start;
    gap: 15px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-eps-rule-btn:hover {
    border-color: var(--rk-sum-eps-primary);
    transform: translateX(4px);
}

.rk-eps-rule-btn.active {
    background: var(--rk-sum-eps-primary-light);
    border-color: var(--rk-sum-eps-primary);
    box-shadow: inset 4px 0 0 var(--rk-sum-eps-primary);
}

.rk-eps-rule-icon {
    width: 32px; height: 32px;
    background: #f1f5f9;
    border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    color: var(--rk-sum-eps-text-dim);
    flex-shrink: 0;
    transition: 0.3s;
}

.rk-eps-rule-btn.active .rk-eps-rule-icon {
    background: var(--rk-sum-eps-primary);
    color: #ffffff;
}

.rk-eps-rule-text h3 {
    margin: 0 0 5px 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-sum-eps-dark);
}

.rk-eps-rule-text p {
    margin: 0;
    font-size: 13px;
    color: var(--rk-sum-eps-text-dim);
    line-height: 1.5;
}

/* Panel Detali (Prawy) */
.rk-eps-rule-details {
    padding: 40px;
    position: relative;
}

.rk-eps-detail-panel {
    display: none;
    animation: fadeScaleEps 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-eps-detail-panel.active {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

@keyframes fadeScaleEps {
    from { opacity: 0; transform: scale(0.95); }
    to { opacity: 1; transform: scale(1); }
}

.rk-eps-detail-panel h4 {
    margin: 0;
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-sum-eps-dark);
}

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

.rk-eps-link {
    color: var(--rk-sum-eps-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dotted var(--rk-sum-eps-accent);
    transition: 0.3s;
}
.rk-eps-link:hover { border-bottom-style: solid; color: #1d4ed8; }

.rk-eps-svg-box {
    width: 100%;
    height: 160px;
    background: var(--rk-sum-eps-dark);
    border-radius: 12px;
    padding: 15px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 20px rgba(0,0,0,0.5);
    overflow: hidden;
}

/* Narzędzie Szybkiego Szacowania (Kalkulator) */
.rk-eps-quick-calc {
    background: var(--rk-sum-eps-panel);
    padding: 35px 50px;
    border-top: 1px solid #1e293b;
    color: #ffffff;
}

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

.rk-eps-calc-header h4 {
    margin: 0; font-size: 18px; font-weight: 900; color: #ffffff;
    display: flex; align-items: center; gap: 10px;
}

.rk-eps-calc-grid {
    display: grid;
    grid-template-columns: 1fr 1.5fr;
    gap: 40px;
    align-items: center;
}

.rk-eps-inputs {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-eps-input-group {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.rk-eps-calc-label { font-size: 13px; font-weight: 700; color: #94a3b8; display: flex; justify-content: space-between; }
.rk-eps-calc-label span { color: #ffffff; font-size: 16px; font-weight: 900; }

.rk-eps-range {
    -webkit-appearance: none; width: 100%; height: 6px; border-radius: 3px; background: #334155; outline: none;
}
.rk-eps-range::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none; width: 22px; height: 22px; border-radius: 50%;
    background: var(--rk-sum-eps-primary); cursor: pointer; border: 3px solid #ffffff; transition: 0.1s;
}
.rk-eps-range::-webkit-slider-thumb:active { transform: scale(1.15); }

.rk-eps-results {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
}

.rk-eps-result-box {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    padding: 15px;
    border-radius: 12px;
    text-align: center;
}

.rk-eps-result-box.highlight { border-color: var(--rk-sum-eps-primary); background: rgba(245, 158, 11, 0.1); }

.rk-eps-res-val { display: block; font-size: 22px; font-weight: 900; color: #ffffff; margin-bottom: 5px; }
.rk-eps-result-box.highlight .rk-eps-res-val { color: var(--rk-sum-eps-primary); }
.rk-eps-res-lab { display: block; font-size: 11px; color: #94a3b8; text-transform: uppercase; font-weight: 700; line-height: 1.4; }

/* SEKACJA AUTORSKA - PODPIS EKSPERTA */
.rk-eps-author {
    background: #f1f5f9;
    padding: 30px 50px;
    display: flex;
    align-items: flex-start;
    gap: 25px;
    border-top: 1px solid var(--rk-sum-eps-border);
}

.rk-eps-author-photo {
    width: 75px;
    height: 75px;
    border-radius: 50%;
    border: 3px solid var(--rk-sum-eps-primary);
    box-shadow: 0 4px 15px rgba(245, 158, 11, 0.2);
    object-fit: cover;
    flex-shrink: 0;
}

.rk-eps-author-info { flex-grow: 1; }
.rk-eps-author-info h4 { margin: 0 0 6px 0; font-size: 18px; font-weight: 900; color: var(--rk-sum-eps-dark); }
.rk-eps-author-info p { margin: 0; font-size: 14px; color: var(--rk-sum-eps-text); line-height: 1.6; }

.rk-eps-social { display: flex; gap: 15px; margin-top: 12px; }
.rk-eps-social a { color: var(--rk-sum-eps-accent); font-size: 13px; font-weight: 800; text-decoration: none; display: inline-flex; align-items: center; gap: 5px; transition: color 0.2s; }
.rk-eps-social a:hover { color: #1d4ed8; text-decoration: underline; }

/* Animacje SVG */
.svg-heat-block { opacity: 0; }
.active .svg-heat-block { opacity: 1; animation: blockHeat 2s infinite alternate; }
@keyframes blockHeat { from { transform: translateY(0); } to { transform: translateY(-10px); } }

.svg-weight-press { transform: translateY(-20px); }
.active .svg-weight-press { animation: weightPress 1.5s forwards; }
@keyframes weightPress { 100% { transform: translateY(0); } }

.svg-overlap-slide { transform: translateX(20px); opacity: 0; }
.active .svg-overlap-slide { animation: overlapSlide 1s forwards; }
@keyframes overlapSlide { 100% { transform: translateX(0); opacity: 1; } }

@media (max-width: 768px) {
    .rk-sum-eps-header { flex-direction: column; text-align: center; padding: 30px 20px; }
    .rk-eps-expert-avatar { width: 70px; height: 70px; }
    .rk-sum-eps-body { grid-template-columns: 1fr; }
    .rk-eps-rules-list { border-right: none; border-bottom: 1px solid var(--rk-sum-eps-border); padding: 20px; }
    .rk-eps-rule-details { padding: 25px 20px; }
    .rk-eps-calc-grid { grid-template-columns: 1fr; gap: 25px; }
    .rk-eps-quick-calc { padding: 30px 20px; }
    .rk-eps-results { grid-template-columns: 1fr; }
    .rk-eps-author { flex-direction: column; text-align: center; padding: 30px 20px; align-items: center; }
    .rk-eps-social { justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#article-summary-final",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/"
    },
    "headline": "Inżynierskie podsumowanie: Ile styropianu pod podłogówkę?",
    "description": "Kompaktowe zestawienie norm WT2021, wymagań twardości EPS 100 oraz interaktywny kalkulator objętości izolacji podłogowej. Twórca: Robert Kucharski.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "CEO & Główny Projektant HVAC",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp"
      }
    },
    "datePublished": "2026-05-25",
    "dateModified": "2026-05-25"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#dataset-summary",
    "name": "Wskaźniki materiałowe dla izolacji EPS podłogówki",
    "description": "Twarde dane przeliczeniowe łączące metraż budynku z objętością, szacunkową ilością paczek styropianu oraz oporem cieplnym przegrody.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ile styropianu pod ogrzewanie podłogowe",
      "grubość styropianu eps 100",
      "współczynnik przenikania ciepła podłogi na gruncie",
      "mostki termiczne w podłodze",
      "objętość styropianu kalkulator"
    ],
    "measurementTechnique": "Szacowanie oparte na iloczynie powierzchni i docelowej grubości wyrażonej w metrach. Opór cieplny (R) zoptymalizowany dla białego EPS 100 o parametrze λ=0.036 W/mK.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Minimalna grubość na gruncie: 15 cm Biały lub 12 cm Grafit (WT2021)",
        "Minimalna twardość pod wylewkę: CS(10) ≥ 100 kPa (EPS 100)",
        "Średnia pojemność paczki EPS: ~0.3 m3"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#webapp-summary",
    "name": "Kalkulator Objętości Styropianu",
    "description": "Narzędzie inżynierskie podsumowujące. Przelicza metraż podłogi oraz wybraną grubość styropianu na kubaturę (m3), opór cieplny oraz ilość paczek.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Forms",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-sum-eps-container" id="rk-sum-eps-app">
    
    <div class="rk-sum-eps-header">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski CEO Projekt ogrzewania" class="rk-eps-expert-avatar" loading="lazy">
        <div class="rk-eps-header-content">
            <div class="rk-eps-badge">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                Wnioski Eksperta
            </div>
            <h2>Inżynierskie podsumowanie: Ile styropianu pod podłogówkę?</h2>
            <p>Zebrałem dla Ciebie 3 żelazne zasady izolacji podłogowej. Ich zignorowanie przed zalaniem jastrychu będzie Cię kosztować tysiące złotych przez lata.</p>
        </div>
    </div>

    <div class="rk-sum-eps-body">
        
        <div class="rk-eps-rules-list">
            <button class="rk-eps-rule-btn active" data-panel="eps-det-1">
                <div class="rk-eps-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg></div>
                <div class="rk-eps-rule-text">
                    <h3>Norma WT2021 to baza</h3>
                    <p>Minimum 15 cm białego styropianu na gruncie.</p>
                </div>
            </button>

            <button class="rk-eps-rule-btn" data-panel="eps-det-2">
                <div class="rk-eps-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><line x1="12" y1="2" x2="12" y2="22"></line><line x1="2" y1="12" x2="22" y2="12"></line></svg></div>
                <div class="rk-eps-rule-text">
                    <h3>Twardość ma znaczenie</h3>
                    <p>EPS 100 to absolutne minimum pod jastrych.</p>
                </div>
            </button>

            <button class="rk-eps-rule-btn" data-panel="eps-det-3">
                <div class="rk-eps-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="21" y1="10" x2="3" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="3" y2="18"></line></svg></div>
                <div class="rk-eps-rule-text">
                    <h3>Montaż w mijankę</h3>
                    <p>Wyeliminuj pionowe mostki termiczne spoin.</p>
                </div>
            </button>
        </div>

        <div class="rk-eps-rule-details">
            
            <div class="rk-eps-detail-panel active" id="eps-det-1">
                <h4>Fizyki nie oszukasz</h4>
                <p>Aby spełnić normę WT2021 (<a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/" class="rk-eps-link">współczynnik U ≤ 0,20</a>), potrzebujesz grubej bariery. Chudszy styropian to natychmiastowa ucieczka ciepła w grunt i straty pieniędzy.</p>
                <div class="rk-eps-svg-box">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <rect x="50" y="40" width="100" height="40" fill="#fcd34d" rx="4"></rect>
                        <text x="100" y="65" font-family="sans-serif" font-weight="900" font-size="12" fill="#0f172a" text-anchor="middle">EPS 15 cm</text>
                        <g class="svg-heat-block">
                            <path d="M 80 85 L 85 70 L 90 85 Z" fill="#ef4444"></path>
                            <path d="M 120 85 L 115 70 L 110 85 Z" fill="#ef4444"></path>
                        </g>
                    </svg>
                </div>
            </div>

            <div class="rk-eps-detail-panel" id="eps-det-2">
                <h4>Zagrożenie dla wylewki</h4>
                <p>Zastosowanie taniego styropianu fasadowego (EPS 70) skończy się tragedią. Płyty ugną się pod masą jastrychu (ok. 130 kg/m²), niszcząc <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" class="rk-eps-link">wylewkę</a> i zrywając instalację.</p>
                <div class="rk-eps-svg-box">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <g class="svg-weight-press">
                            <rect x="80" y="10" width="40" height="30" fill="#94a3b8" rx="2"></rect>
                            <text x="100" y="30" fill="#0f172a" font-weight="bold" font-size="10" text-anchor="middle">130 KG</text>
                            <path d="M 100 45 L 95 35 L 105 35 Z" fill="#ffffff"></path>
                        </g>
                        <rect x="60" y="60" width="80" height="20" fill="#38bdf8" rx="2"></rect>
                        <text x="100" y="74" fill="#0f172a" font-weight="900" font-size="10" text-anchor="middle">EPS 100 (SZTYWNY)</text>
                    </svg>
                </div>
            </div>

            <div class="rk-eps-detail-panel" id="eps-det-3">
                <h4>Eliminacja mostków liniowych</h4>
                <p>Nigdy nie układaj styropianu w jednej, grubej warstwie. Konieczny jest montaż krzyżowy (np. 10 cm + 5 cm) przesunięty o minimum 20 cm, aby <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/" class="rk-eps-link">zapobiec ucieczce energii</a> w dół przez spoiny płyt.</p>
                <div class="rk-eps-svg-box">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <rect x="20" y="30" width="100" height="20" fill="#fbbf24" rx="2"></rect>
                        <rect class="svg-overlap-slide" x="60" y="55" width="100" height="20" fill="#f59e0b" rx="2"></rect>
                        <line x1="60" y1="20" x2="60" y2="85" stroke="#ffffff" stroke-width="2" stroke-dasharray="4"></line>
                        <line x1="120" y1="20" x2="120" y2="85" stroke="#ffffff" stroke-width="2" stroke-dasharray="4"></line>
                    </svg>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-eps-quick-calc">
        <div class="rk-eps-calc-header">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-sum-eps-primary)" stroke-width="2.5"><rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><line x1="8" y1="6" x2="16" y2="6"></line><line x1="16" y1="14" x2="16.01" y2="14"></line><line x1="12" y1="14" x2="12.01" y2="14"></line><line x1="8" y1="14" x2="8.01" y2="14"></line><line x1="16" y1="18" x2="16.01" y2="18"></line><line x1="12" y1="18" x2="12.01" y2="18"></line><line x1="8" y1="18" x2="8.01" y2="18"></line></svg>
                Szybki estymator materiałowy
            </h4>
            <span style="font-size:12px; color:#94a3b8;">(Szacunki bazowe)</span>
        </div>

        <div class="rk-eps-calc-grid">
            
            <div class="rk-eps-inputs">
                <div class="rk-eps-input-group">
                    <div class="rk-eps-calc-label">
                        Powierzchnia podłóg:
                        <span id="epsAreaOut">120 m²</span>
                    </div>
                    <input type="range" class="rk-eps-range" id="epsAreaSlider" min="50" max="300" step="10" value="120">
                </div>
                
                <div class="rk-eps-input-group">
                    <div class="rk-eps-calc-label">
                        Grubość izolacji EPS:
                        <span id="epsThickOut">15 cm</span>
                    </div>
                    <input type="range" class="rk-eps-range" id="epsThickSlider" min="5" max="25" step="1" value="15">
                </div>
            </div>

            <div class="rk-eps-results">
                <div class="rk-eps-result-box highlight">
                    <span class="rk-eps-res-val" id="resVolume">18.0 <span style="font-size:14px;color:var(--rk-sum-eps-primary);">m³</span></span>
                    <span class="rk-eps-res-lab">Suma objętości EPS</span>
                </div>
                <div class="rk-eps-result-box">
                    <span class="rk-eps-res-val" id="resRValue">4.17 <span style="font-size:14px;color:#94a3b8;">R</span></span>
                    <span class="rk-eps-res-lab">Szacunkowy opór (Biały)</span>
                </div>
                <div class="rk-eps-result-box">
                    <span class="rk-eps-res-val" id="resPacks">60 <span style="font-size:14px;color:#94a3b8;">szt.</span></span>
                    <span class="rk-eps-res-lab">Paczki (~0.3m³ / szt.)</span>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-eps-author">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Projekt Ogrzewania - Ekspert HVAC" class="rk-eps-author-photo" loading="lazy">
        <div class="rk-eps-author-info">
            <h4>Robert Kucharski</h4>
            <p>CEO i twórca portalu Projekt-Ogrzewania.pl. Główny projektant i audytor instalacji HVAC. Wszystkie publikowane tu treści opieram na wieloletnim, praktycznym doświadczeniu zdobytym bezpośrednio na budowach. Moją misją jest dostarczanie twardej, inżynierskiej wiedzy, chroniącej budżety tysięcy inwestorów w całej Polsce.</p>
            <div class="rk-eps-social">
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path></svg>
                    LinkedIn
                </a>
                <a href="https://www.facebook.com/robert.kucharski.budowa.bez.sciemy" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.469h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.469h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"></path></svg>
                    Facebook
                </a>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const currentDomain = window.location.hostname;
    const authDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!authDomains.includes(currentDomain)) {
        document.getElementById('rk-sum-eps-app').innerHTML = `
            <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border:1px solid #ef4444; border-radius:24px; font-weight:800;">
                BŁĄD LICENCJI: Kod podsumowania jest własnością projekt-ogrzewania.pl
            </div>`;
        return;
    }

    // 2. Logika Zakładek
    const btns = document.querySelectorAll('.rk-eps-rule-btn');
    const panels = document.querySelectorAll('.rk-eps-detail-panel');

    btns.forEach(btn => {
        btn.addEventListener('click', () => {
            btns.forEach(b => b.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            btn.classList.add('active');
            const target = document.getElementById(btn.getAttribute('data-panel'));
            if(target) {
                void target.offsetWidth; // Restart animacji CSS
                target.classList.add('active');
            }
        });
    });

    // 3. Logika Estymatora Objętości Styropianu
    const sliderArea = document.getElementById('epsAreaSlider');
    const outArea = document.getElementById('epsAreaOut');
    
    const sliderThick = document.getElementById('epsThickSlider');
    const outThick = document.getElementById('epsThickOut');

    const resVol = document.getElementById('resVolume');
    const resR = document.getElementById('resRValue');
    const resPacks = document.getElementById('resPacks');

    function calculateEPS() {
        const area = parseInt(sliderArea.value);
        const thickCm = parseInt(sliderThick.value);
        const thickM = thickCm / 100;
        
        outArea.textContent = area + ' m²';
        outThick.textContent = thickCm + ' cm';

        // Objętość = pole * grubość (w metrach)
        const volume = area * thickM;
        // Szacunkowy opór cieplny (dla EPS białego lambda ~0.036)
        const rValue = thickM / 0.036;
        // Szacunkowa ilość paczek (zakładając średnio 0.3 m3 w paczce)
        const packs = Math.ceil(volume / 0.3);

        resVol.innerHTML = volume.toFixed(1) + ' <span style="font-size:14px;color:var(--rk-sum-eps-primary);">m³</span>';
        resR.innerHTML = rValue.toFixed(2) + ' <span style="font-size:14px;color:#94a3b8;">R</span>';
        resPacks.innerHTML = packs + ' <span style="font-size:14px;color:#94a3b8;">szt.</span>';
    }

    if(sliderArea && sliderThick) {
        sliderArea.addEventListener('input', calculateEPS);
        sliderThick.addEventListener('input', calculateEPS);
        calculateEPS(); // Init
    }
});
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-card: #1e293b;
    --rk-faq-brand: #6366f1; /* Eksperckie Indygo */
    --rk-faq-brand-light: #eef2ff;
    --rk-faq-accent: #f59e0b; /* Bursztyn dla akcentów twardości */
    --rk-faq-blue: #3b82f6;
    --rk-faq-bg: #f8fafc;
    --rk-faq-border: #e2e8f0;
    --rk-faq-text: #475569;
}

.rk-faq-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(99, 102, 241, 0.15);
    border: 1px solid rgba(99, 102, 241, 0.25);
    overflow: hidden;
}

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

.rk-faq-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(99, 102, 241, 0.35);
    color: #c7d2fe;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(199, 210, 254, 0.2);
}

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

.rk-faq-header h2 span { 
    color: #818cf8; 
}

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

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

.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);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-faq-item.active {
    border-color: var(--rk-faq-brand);
    box-shadow: 0 12px 20px -8px rgba(99, 102, 241, 0.15);
}

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

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

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

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

.rk-faq-item.active .rk-faq-icon {
    background: rgba(255, 255, 255, 0.2);
    color: #ffffff;
    transform: rotate(180deg);
}

/* Wrappery Animacji Rozwijania Grid */
.rk-faq-answer-wrapper {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

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

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

/* Zawartość Odpowiedzi */
.rk-faq-content {
    padding: 25px;
    border-top: 1px solid var(--rk-faq-border);
    display: grid;
    grid-template-columns: 1fr 220px;
    gap: 30px;
    align-items: center;
}

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

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

.rk-link {
    color: var(--rk-faq-brand);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px dashed rgba(99, 102, 241, 0.4);
    transition: all 0.3s;
}

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

/* Kontenery Wizualizacji SVG */
.rk-faq-visual {
    background: var(--rk-faq-dark);
    border-radius: 14px;
    padding: 15px;
    height: 140px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.4);
    border: 2px solid #334155;
    position: relative;
    overflow: hidden;
}

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

/* --- Dedykowane Animacje SVG dla Akapitów FAQ --- */

/* 1. Strop międzykondygnacyjny */
.anim-acoustic-wave { stroke: #3b82f6; stroke-width: 2; fill: none; opacity: 0; transition: all 0.4s; }
.rk-faq-item.active .anim-acoustic-wave { opacity: 1; animation: soundDiminish 1.5s infinite linear; }
@keyframes soundDiminish {
    0% { transform: scale(0.8); opacity: 1; }
    100% { transform: scale(1.3); opacity: 0; transform-origin: center; }
}

/* 2. Raster i ucieczka ciepła */
.anim-heat-drop { stroke: #ef4444; stroke-width: 3; stroke-linecap: round; opacity: 0; }
.rk-faq-item.active .anim-heat-drop { opacity: 1; animation: heatPassesThrough 2s infinite linear; }
@keyframes heatPassesThrough {
    0% { transform: translateY(-20px); opacity: 1; }
    100% { transform: translateY(40px); opacity: 0.2; }
}

/* 3. Wytrzymałość EPS vs XPS */
.anim-press-plate { fill: #64748b; transition: transform 0.6s 0.2s cubic-bezier(0.25, 1, 0.5, 1); }
.rk-faq-item.active .anim-press-plate { transform: translateY(8px); }

/* 4. Płynny jastrych anhydrytowy */
.anim-fluid-pour { fill: #f59e0b; transform: scaleX(0); transform-origin: left; transition: transform 0.8s 0.2s ease-out; }
.rk-faq-item.active .anim-fluid-pour { transform: scaleX(1); }

/* 5. Gęstość i twardość kciuka */
.anim-stamp { fill: #10b981; opacity: 0; transform: scale(0.5); transition: all 0.5s 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275); }
.rk-faq-item.active .anim-stamp { opacity: 1; transform: scale(1); transform-origin: center; }


/* Responsywność mobilna */
@media (max-width: 768px) {
    .rk-faq-header, .rk-faq-interactive { padding: 30px 20px; }
    .rk-faq-header h2 { font-size: 24px; }
    .rk-faq-content { grid-template-columns: 1fr; gap: 20px; padding: 15px 10px; }
    .rk-faq-visual { height: 120px; max-width: 240px; margin: 0 auto; width: 100%; }
    .rk-faq-question { font-size: 15px; padding: 18px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania o styropian pod ogrzewanie podłogowe",
    "description": "Eksperckie odpowiedzi na pytania inwestorów o grubość izolacji na stropie, rolę folii z rastrem oraz parametry twardości EPS i XPS pod jastrych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-25",
    "dateModified": "2026-05-25"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Jaka jest absolutnie minimalna grubość styropianu pod ogrzewanie podłogowe na stropie międzykondygnacyjnym?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Na stropie pomiędzy dwoma ogrzewanymi pomieszczeniami minimalna grubość styropianu wynosi 30-50 mm (3-5 cm). Warstwa ta nie pełni roli bariery przed stratami ciepła do otoczenia, lecz stanowi izolację akustyczną oraz techniczną bazę do mocowania spinek montażowych rur grzewczych."
        }
      },
      {
        "@type": "Question",
        "name": "Czy folia z nadrukiem rastra zastępuje styropian lub pozwala zmniejszyć jego grubość?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, folia aluminiowa bądź metalizowana z rastrem pełni wyłącznie funkcję ekranu odbijającego część promieniowania podczerwonego oraz ułatwia prawidłowy rozstaw rur co 10 lub 15 cm. Posiada ona zerowy opór cieplny, dlatego nie pozwala na redukcję choćby jednego milimetra z grubości płyt styropianowych."
        }
      },
      {
        "@type": "Question",
        "name": "Co jest lepsze pod ogrzewanie podłogowe: styropian EPS czy polistyren ekstrudowany XPS?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Polistyren ekstrudowany XPS jest obiektywnie lepszym materiałem ze względu na wyższą wytrzymałość na ściskanie (od 300 kPa) oraz niższą nasiąkliwość wodą, jednak ze względu na wysoki koszt stosuje się go głównie w miejscach narażonych na ekstremalne obciążenia (np. garaże) lub wilgoć. W pomieszczeniach mieszkalnych w zupełności wystarczający jest styropian EPS 100."
        }
      },
      {
        "@type": "Question",
        "name": "Czy pod wylewkę anhydrytową trzeba stosować inny styropian niż pod klasyczny jastrych cementowy?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Pod względem mechanicznym wymagania są identyczne – minimalna twardość to EPS 100. Kluczowa różnica tkwi w hydroizolacji: wylewka anhydrytowa ma płynną konsystencję, co bezwzględnie wymaga szczelnego wyklejenia styków folii taśmami, aby płynny jastrych nie wpłynął pomiędzy płyty styropianowe."
        }
      },
      {
        "@type": "Question",
        "name": "Jak sprawdzić, czy wykonawca ułożył styropian o właściwych parametrach twardości?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Każda paczka styropianu posiada etykietę z kodem specyfikacji technicznej, na której należy szukać oznaczenia CS(10)100 lub wyższego. Dodatkowo, styropian EPS 100 charakteryzuje się minimalną gęstością własną na poziomie ok. 18 kg/m3 – płyty w dłoniach muszą być sztywne i nie mogą się łatwo kruszyć pod naciskiem kciuka."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#dataset-faq",
    "name": "Zbiorcza Tabela Wytycznych Normatywnych dla Izolacji Podłogowej",
    "description": "Zestawienie fizycznych i mechanicznych parametrów materiałów izolacyjnych wymaganych przez normę PN-EN 1264 w strukturze akapitów FAQ.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": { "@type": "Person", "name": "Robert Kucharski" },
    "keywords": [
      "styropian na stropie",
      "folia z rastrem podłogówka",
      "twardość styropianu EPS 100",
      "izolacja pod wylewkę anhydrytową",
      "wytrzymałość xps na ściskanie"
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#webapp-faq",
    "name": "Interaktywny Panel Wyjaśnień Technicznych",
    "description": "System dynamicznej wizualizacji wektorowej procesów zachodzących w warstwach izolacji termicznej podłogówki.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "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-badge">
            <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Inżynierska Baza Odpowiedzi
        </div>
        <h2>FAQ – <span>Najczęściej zadawane pytania</span></h2>
    </div>

    <div class="rk-faq-interactive">
        <div class="rk-faq-list">
            
            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>1. Jaka jest absolutnie minimalna grubość styropianu pod ogrzewanie podłogowe na stropie międzykondygnacyjnym?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Na stropie pomiędzy dwoma ogrzewanymi pomieszczeniami minimalna grubość styropianu wynosi <strong>30-50 mm (3-5 cm)</strong>. Warstwa ta nie pełni roli bariery przed stratami ciepła do otoczenia, lecz stanowi kluczową izolację akustyczną wyguszającą dźwięki uderzeniowe. Stanowi również techniczną bazę stabilizującą spinki montażowe dla <a href="https://projekt-ogrzewania.pl/rury-do-ogrzewania-podlogowego/" class="rk-link">rur do ogrzewania podłogowego</a>, co zabezpiecza je przed wypłynięciem podczas zalewania <a href="https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/" class="rk-link">grubości wylewki</a>.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="10" y="45" width="80" height="15" fill="#475569" />
                                    <rect x="10" y="30" width="80" height="12" fill="#94a3b8" />
                                    <circle class="anim-acoustic-wave" cx="50" cy="36" r="10" />
                                    <circle cx="50" cy="36" r="4" fill="#ef4444" />
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>2. Czy folia z nadrukiem rastra zastępuje styropian lub pozwala zmniejszyć jego grubość?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Nie, folia aluminiowa bądź metalizowana z rastrem pełni wyłącznie funkcję ekranu refleksyjnego odbijającego część promieniowania podczerwonego oraz ułatwia instalatorowi zachowanie równego <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewanym-podlogowym/" class="rk-link">rozstawu rur podłogówki</a>. Posiada ona <strong>zerowy opór cieplny (R)</strong>, dlatego nie pozwala na redukcję choćby jednego milimetra z grubości płyt styropianowych. Prawdziwą barierą blokującą ucieczkę energii jest wyłącznie zwarta struktura powietrza zamknięta w spienionym polistyrenie.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <line x1="10" y1="35" x2="90" y2="35" stroke="#cbd5e1" stroke-width="2" stroke-dasharray="2 2" />
                                    <path class="anim-heat-drop" d="M 50 15 L 50 55" />
                                    <circle cx="50" cy="15" r="5" fill="#ef4444" />
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>3. Co jest lepsze pod ogrzewanie podłogowe: styropian EPS czy polistyren ekstrudowany XPS?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Polistyren ekstrudowany XPS jest obiektywnie trwalszym materiałem ze względu na wyższą wytrzymałość na ściskanie wynoszącą <strong>minimum 300 kPa</strong> oraz zerową nasiąkliwość wodą. Ze względu na wysoki koszt zakupu stosuje się go głównie w strefach narażonych na wilgoć lub potężne obciążenia skupione, takich jak przydomowe garaże czy kotłownie z ciężkimi zasobnikami. W pomieszczeniach mieszkalnych w zupełności wystarczający i ekonomicznie zoptymalizowany jest twardy styropian <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/" class="rk-link">EPS 100 o wysokim oporze cieplnym</a>.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="25" y="40" width="50" height="20" fill="#3b82f6" rx="2" />
                                    <rect class="anim-press-plate" x="20" y="15" width="60" height="6" />
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>4. Czy pod wylewkę anhydrytową trzeba stosować inny styropian niż pod klasyczny jastrych cementowy?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Pod względem odporności mechanicznej wymagania są tożsame – minimalny próg twardości to EPS 100. Kluczowa różnica tkwi jednak w sposobie przygotowania izolacji przeciwwilgociowej. Płynny jastrych anhydrytowy ze względu na swoją samopoziomującą konsystencję wymaga **bezwzględnego wyklejenia i uszczelnienia styków folii** taśmami wodoodpornymi. Brak szczelności spowoduje, że płynna masa wpłynie w szczeliny styropianu, unosząc płyty do góry i tworząc potężne mostki termiczne niszczące efektywność całego systemu grzewczego.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="15" y="45" width="70" height="15" fill="#64748b" />
                                    <circle cx="30" cy="45" r="5" fill="#ef4444" />
                                    <circle cx="50" cy="45" r="5" fill="#ef4444" />
                                    <circle cx="70" cy="45" r="5" fill="#ef4444" />
                                    <rect class="anim-fluid-pour" x="15" y="25" width="70" height="15" opacity="0.6"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>5. Jak sprawdzić, czy wykonawca ułożył styropian o właściwych parametrach twardości?</span>
                    <div class="rk-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Weryfikację należy zacząć od analizy etykiety technicznej na paczkach – szukaj kodu zwierającego oznaczenie <strong>CS(10)100</strong> lub wyższego (np. CS(10)150). Drugim parametrem weryfikacyjnym jest gęstość własna materiału, która dla oryginalnego EPS 100 powinna wynosić <strong>około 18 kg/m3</strong>. Możesz wykonać prosty test budowlany: markowy styropian podłogowy naciskany mocno kciukiem nie powinien trwale odkształcać się ani kruszyć w strukturze. Jeśli płyta jest miękka i przypomina styropian fasadowy, natychmiast zatrzymaj montaż rur.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="20" y="35" width="60" height="25" fill="#cbd5e1" rx="2" />
                                    <text x="32" y="52" font-family="sans-serif" font-size="8" font-weight="900" fill="#475569">EPS 100</text>
                                    <circle class="anim-stamp" cx="50" cy="22" r="6" />
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie domenowe (Bez tagów H2/H3 w stringu błędu)
    const currentHost = window.location.hostname;
    const authorizedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!authorizedDomains.includes(currentHost)) {
        const appContainer = document.getElementById('rk-faq-app');
        if (appContainer) {
            appContainer.innerHTML = `
                <div style="padding: 50px 30px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 24px; font-family: sans-serif;">
                    <div style="font-size: 44px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase; letter-spacing: 0.5px;">Błąd Licencji i Autoryzacji</div>
                    <div style="font-size: 14px; color: #cbd5e1; max-width: 500px; margin: 0 auto; line-height: 1.6;">
                        Ten interaktywny kontener FAQ oraz powiązane z nim mikrodane JSON-LD są chronione prawem autorskim i stanowią własność serwisu <strong>Projekt-Ogrzewania.pl</strong>. Wykryto nieautoryzowane użycie kodu.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika interaktywnego akordeonu FAQ
    const items = document.querySelectorAll('.rk-faq-item');

    items.forEach(item => {
        const questionBtn = item.querySelector('.rk-faq-question');
        questionBtn.addEventListener('click', () => {
            const isCurrentlyActive = item.classList.contains('active');
            
            // Zamknij wszystkie pozostałe elementy
            items.forEach(i => i.classList.remove('active'));
            
            // Jeśli kliknięty nie był aktywny, otwórz go
            if (!isCurrentlyActive) {
                item.classList.add('active');
            }
        });
    });
    
    // Domyślne otwarcie pierwszego elementu FAQ po załadowaniu
    if(items.length > 0) {
        items[0].classList.add('active');
    }
});
</script>



<style>
:root {
    --rk-iso-dark: #1e293b;
    --rk-iso-blue: #0ea5e9;
    --rk-iso-light: #f8fafc;
    --rk-iso-warm: #f97316;
    --rk-iso-warm-light: #ffedd5;
    --rk-iso-cold: #3b82f6;
    --rk-iso-cold-light: #dbeafe;
    --rk-iso-border: #e2e8f0;
    --rk-iso-bg: #ffffff;
    --rk-iso-text: #334155;
}

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

/* Sekcja Nagłówkowa */
.rk-iso-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, #0f172a 0%, var(--rk-iso-dark) 100%);
    color: #ffffff;
    text-align: left;
    position: relative;
    border-bottom: 4px solid var(--rk-iso-warm);
}

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

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

/* Interaktywny Panel */
.rk-iso-interactive {
    padding: 40px 50px;
    background: var(--rk-iso-light);
}

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

/* Toggle Switcher */
.rk-toggle-wrapper {
    display: flex;
    background: #e2e8f0;
    border-radius: 100px;
    padding: 6px;
    max-width: 600px;
    margin: 0 auto 40px auto;
    position: relative;
}

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

.rk-toggle-btn.active[data-mode="thick"] {
    background: var(--rk-iso-warm);
    color: #ffffff;
    box-shadow: 0 8px 20px -6px rgba(249, 115, 22, 0.5);
}

.rk-toggle-btn.active[data-mode="thin"] {
    background: var(--rk-iso-cold);
    color: #ffffff;
    box-shadow: 0 8px 20px -6px rgba(59, 130, 246, 0.5);
}

/* Wizualizacja SVG i Wynik */
.rk-sim-display {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 40px;
    background: #ffffff;
    padding: 35px;
    border-radius: 20px;
    border: 1px solid var(--rk-iso-border);
    align-items: center;
}

.rk-svg-box {
    position: relative;
    width: 100%;
    height: 220px;
    background: #f1f5f9;
    border-radius: 16px;
    overflow: hidden;
}

.rk-svg-layer-concrete { fill: #cbd5e1; }
.rk-svg-layer-pipe { fill: #ef4444; }
.rk-svg-layer-ground { fill: #8b5cf6; opacity: 0.2; }

/* Dynamiczna Izolacja */
.rk-svg-layer-eps {
    fill: #fcd34d;
    transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Animacje strzałek ciepła */
.heat-arrow {
    stroke: #ef4444;
    stroke-width: 3;
    stroke-linecap: round;
    fill: none;
    transition: all 0.5s;
}

/* Stan: Gruby styropian (Odbijanie ciepła) */
.state-thick .rk-svg-layer-eps { transform: scaleY(1); transform-origin: bottom; }
.state-thick .heat-arrow {
    animation: bounceHeat 2s infinite ease-in-out;
}

/* Stan: Cienki styropian (Ucieczka ciepła) */
.state-thin .rk-svg-layer-eps { transform: scaleY(0.3); transform-origin: bottom; fill: #fbbf24; }
.state-thin .heat-arrow {
    stroke: #3b82f6;
    animation: escapeHeat 2s infinite linear;
}

@keyframes bounceHeat {
    0% { transform: translateY(0); opacity: 1; }
    50% { transform: translateY(30px); opacity: 0.5; }
    100% { transform: translateY(0); opacity: 1; }
}

@keyframes escapeHeat {
    0% { transform: translateY(0); opacity: 1; stroke: #ef4444; }
    50% { transform: translateY(60px); opacity: 0.8; stroke: #3b82f6; }
    100% { transform: translateY(120px); opacity: 0; stroke: #3b82f6; }
}

/* Panel Danych */
.rk-data-panel h4 {
    font-size: 22px;
    font-weight: 800;
    margin: 0 0 10px 0;
    color: var(--rk-iso-dark);
}

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

.rk-data-stat {
    display: flex;
    justify-content: space-between;
    padding: 12px 15px;
    background: var(--rk-iso-light);
    border-radius: 10px;
    margin-bottom: 8px;
    font-weight: 700;
    font-size: 14px;
}

.rk-stat-value {
    color: var(--rk-iso-warm);
    font-size: 16px;
}
.state-thin .rk-stat-value { color: var(--rk-iso-cold); }

/* Podsumowanie Textowe */
.rk-iso-summary-text {
    padding: 40px 50px;
    background: #ffffff;
    border-top: 1px solid var(--rk-iso-border);
}

.rk-iso-summary-text p {
    font-size: 16px;
    line-height: 1.8;
    color: var(--rk-iso-text);
    margin-bottom: 20px;
}

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

/* Responsywność */
@media (max-width: 768px) {
    .rk-iso-header, .rk-iso-interactive, .rk-iso-summary-text { padding: 30px 20px; }
    .rk-toggle-wrapper { flex-direction: column; border-radius: 16px; gap: 5px; }
    .rk-toggle-btn { border-radius: 12px; }
    .rk-sim-display { grid-template-columns: 1fr; gap: 25px; }
    .rk-svg-box { height: 180px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/"
    },
    "headline": "Podsumowanie – Ile styropianu pod ogrzewanie podłogowe ostatecznie wybrać?",
    "description": "Zastosowanie 15 cm styropianu EPS 100 lub 12 cm grafitowego to optymalny standard izolacji LCC minimalizujący straty ciepła i koszty ogrzewania.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-25",
    "dateModified": "2026-05-25"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#dataset",
    "name": "Wskaźniki LCC i Opór Cieplny dla EPS 100",
    "description": "Dane dotyczące strat ciepła w ujęciu rocznym w zależności od zastosowanej grubości styropianu podłogowego zgodnie z WT2021.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ile styropianu pod ogrzewanie podłogowe",
      "styropian podłogowy grubość",
      "współczynnik przenikania ciepła podłogi",
      "projektowe obciążenie cieplne OZC",
      "straty ciepła przez grunt"
    ],
    "measurementTechnique": "Kalkulacja oporu cieplnego R oraz symulacja strat kosztowych w perspektywie rocznej w stosunku do normy WT2021.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Norma optymalna: 15 cm EPS 100 lub 12 cm Grafit. Zgodność z WT2021. U = 0,20 W/(m2K).",
        "Izolacja odchudzona: 5-8 cm. Wzrost strat ciepła o 35%, wyższe koszty eksploatacji urządzenia."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#webapp",
    "name": "Symulator Strat Ciepła przez Podłogę LCC",
    "description": "Interaktywna symulacja wizualizująca straty ciepła przenikającego do gruntu przy zastosowaniu normatywnej oraz odchudzonej grubości styropianu.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and CSS3 Animations",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-iso-container" id="rk-iso-app">
    <div class="rk-iso-header">
        <h2>Podsumowanie – Ile styropianu pod ogrzewanie podłogowe ostatecznie wybrać?</h2>
        <p>Decyzja o grubości izolacji podłogowej determinuje koszty eksploatacji pompy ciepła na dekady. Zobacz, jak fizyka weryfikuje próby oszczędzania na materiale.</p>
    </div>

    <div class="rk-iso-interactive">
        <h3>Symulator Oporu Cieplnego i Analiza LCC</h3>
        
        <div class="rk-toggle-wrapper" id="iso-toggle">
            <button class="rk-toggle-btn active" data-mode="thick">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/></svg>
                Normatywne 15 cm (EPS 100)
            </button>
            <button class="rk-toggle-btn" data-mode="thin">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/><line x1="3" y1="3" x2="21" y2="21"/></svg>
                Odchudzone 5 cm (Błąd!)
            </button>
        </div>

        <div class="rk-sim-display state-thick" id="iso-display">
            <div class="rk-svg-box">
                <svg viewBox="0 0 300 220" width="100%" height="100%">
                    <rect class="rk-svg-layer-ground" x="0" y="160" width="300" height="60" />
                    <rect class="rk-svg-layer-eps" x="0" y="70" width="300" height="90" />
                    <rect class="rk-svg-layer-concrete" x="0" y="20" width="300" height="50" />
                    <circle class="rk-svg-layer-pipe" cx="50" cy="45" r="8" />
                    <circle class="rk-svg-layer-pipe" cx="150" cy="45" r="8" />
                    <circle class="rk-svg-layer-pipe" cx="250" cy="45" r="8" />
                    
                    <path class="heat-arrow" d="M50 55 L50 85 M45 80 L50 85 L55 80" />
                    <path class="heat-arrow" d="M150 55 L150 85 M145 80 L150 85 L155 80" />
                    <path class="heat-arrow" d="M250 55 L250 85 M245 80 L250 85 L255 80" />
                </svg>
            </div>

            <div class="rk-data-panel" id="iso-results">
                <h4 style="color: var(--rk-iso-warm);">Standard Inwestycyjny LCC</h4>
                <p>15 cm to złoty standard dla białego EPS lub 12 cm dla styropianu grafitowego. Zapewnia odbicie strumienia ciepła w górę.</p>
                <div class="rk-data-stat">
                    <span>Współczynnik U:</span>
                    <span class="rk-stat-value">≤ 0,20 W/(m2K)</span>
                </div>
                <div class="rk-data-stat">
                    <span>Zgodność z WT2021:</span>
                    <span class="rk-stat-value">TAK</span>
                </div>
                <div class="rk-data-stat">
                    <span>Straty energii do gruntu:</span>
                    <span class="rk-stat-value" style="color: #10b981;">Minimalne</span>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-iso-summary-text">
        <h3>Rachunek ekonomiczny a fizyka budynku</h3>
        <p>
            Optymalny dobór podłogowej izolacji termicznej to wypadkowa kalkulacji fizycznych, wymogów prawnych zawartych w WT2021 oraz rachunku ekonomicznego LCC (Life Cycle Cost). Zastosowanie <strong>15 cm styropianu białego EPS 100 lub 12 cm styropianu grafitowego na gruncie</strong> gwarantuje święty spokój inwestora, bezawaryjną pracę posadzki i minimalne <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">straty ciepła</a>.
        </p>
        <p>
            Każda próba bezrefleksyjnego odchudzania tej warstwy zemści się w postaci drastycznie wyższych rachunków za prąd lub gaz. System zacznie ogrzewać fundamenty i masę ziemi zamiast Twojego salonu, co obniży odczuwalny komfort cieplny.
        </p>
        <p>
            Pamiętaj, że ostateczne wytyczne i grubości zawsze powinien definiować indywidualny, poparty rzetelnymi <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">obliczeniami OZC</a> projekt instalacji, dopasowany precyzyjnie do geometrii Twojego budynku, rodzaju gruntu oraz specyfiki i niskiej temperatury zasilania wybranego źródła ciepła.
        </p>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez użycia tagów H2/H3 zgodnie z wytycznymi)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-iso-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 50px 30px; text-align: center; background: #0f172a; color: #f87171; border: 3px solid #ef4444; border-radius: 24px; font-family: sans-serif;">
                    <div style="font-size: 48px; margin-bottom: 20px;">🔒</div>
                    <div style="font-size: 22px; font-weight: 900; margin-bottom: 15px; text-transform: uppercase; letter-spacing: 1px;">Blokada Praw Autorskich</div>
                    <div style="font-size: 16px; color: #e2e8f0; max-width: 550px; margin: 0 auto; line-height: 1.7;">
                        Skrypt interaktywnego podsumowania LCC oraz zintegrowane dane strukturalne JSON-LD są wyłączną własnością serwisu <strong>Projekt-Ogrzewania.pl</strong>. Uruchomienie modułu na tej domenie zostało zablokowane.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora Izolacji LCC
    const btns = document.querySelectorAll('.rk-toggle-btn');
    const display = document.getElementById('iso-display');
    const resultsPanel = document.getElementById('iso-results');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Zmiana aktywnego przycisku
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const mode = this.getAttribute('data-mode');

            // Aktualizacja klas interfejsu i SVG
            if (mode === 'thick') {
                display.className = 'rk-sim-display state-thick';
                resultsPanel.innerHTML = `
                    <h4 style="color: var(--rk-iso-warm);">Standard Inwestycyjny LCC</h4>
                    <p>15 cm to złoty standard dla białego EPS lub 12 cm dla styropianu grafitowego. Zapewnia odbicie strumienia ciepła w górę.</p>
                    <div class="rk-data-stat">
                        <span>Współczynnik U:</span>
                        <span class="rk-stat-value">≤ 0,20 W/(m2K)</span>
                    </div>
                    <div class="rk-data-stat">
                        <span>Zgodność z WT2021:</span>
                        <span class="rk-stat-value">TAK</span>
                    </div>
                    <div class="rk-data-stat">
                        <span>Straty energii do gruntu:</span>
                        <span class="rk-stat-value" style="color: #10b981;">Minimalne</span>
                    </div>
                `;
            } else {
                display.className = 'rk-sim-display state-thin';
                resultsPanel.innerHTML = `
                    <h4 style="color: var(--rk-iso-cold);">Mostek Termiczny w Grunt</h4>
                    <p>Zbyt cienka izolacja sprawia, że ciepło pokonuje barierę, uciekając w chłodny grunt. Pompa ciepła pracuje w trybie ciągłym.</p>
                    <div class="rk-data-stat">
                        <span>Współczynnik U:</span>
                        <span class="rk-stat-value" style="color: #ef4444;">~ 0,35 W/(m2K)</span>
                    </div>
                    <div class="rk-data-stat">
                        <span>Zgodność z WT2021:</span>
                        <span class="rk-stat-value" style="color: #ef4444;">NIE (Naruszenie)</span>
                    </div>
                    <div class="rk-data-stat">
                        <span>Straty energii do gruntu:</span>
                        <span class="rk-stat-value" style="color: #ef4444;">+ 35% rachunków</span>
                    </div>
                `;
            }
        });
    });
});
</script>



<style>
:root {
    --dl-eps-primary: #0f172a;
    --dl-eps-accent: #f59e0b; /* Termiczny pomarańcz EPS */
    --dl-eps-accent-dark: #d97706;
    --dl-eps-bg: #f8fafc;
    --dl-eps-border: #e2e8f0;
    --dl-eps-text: #334155;
    --dl-eps-white: #ffffff;
    --dl-eps-muted: #94a3b8;
}

.rk-dl-eps-container {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    background: var(--dl-eps-white);
    border-radius: 24px;
    border: 1px solid var(--dl-eps-border);
    box-shadow: 0 20px 40px -10px rgba(245, 158, 11, 0.1);
    overflow: hidden;
}

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

.rk-dl-header-content { 
    position: relative; 
    z-index: 2; 
    max-width: 65%; 
}

.rk-dl-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(245, 158, 11, 0.2);
    border: 1px solid rgba(245, 158, 11, 0.3);
    color: #fcd34d;
    padding: 8px 14px;
    border-radius: 50px;
    font-size: 11px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
}

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

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

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

.rk-dl-pdf-svg {
    width: 90px;
    height: auto;
    filter: drop-shadow(0 15px 20px rgba(0,0,0,0.4));
    animation: floatPdfIcon 3s infinite ease-in-out alternate;
}

@keyframes floatPdfIcon {
    from { transform: translateY(0); }
    to { transform: translateY(-12px); }
}

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

.rk-dl-preview-box {
    flex: 1;
    background: var(--dl-eps-bg);
    border: 1px solid var(--dl-eps-border);
    border-radius: 16px;
    padding: 15px;
    position: relative;
    cursor: zoom-in;
    transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.4s;
    box-shadow: 0 10px 20px rgba(0,0,0,0.03);
}

.rk-dl-preview-box:hover {
    transform: scale(1.03) translateY(-5px);
    box-shadow: 0 20px 30px rgba(245, 158, 11, 0.15);
    border-color: var(--dl-eps-accent);
}

.rk-dl-preview-img {
    width: 100%;
    height: auto;
    border-radius: 10px;
    display: block;
    border: 1px solid #e2e8f0;
}

.rk-dl-zoom-hint {
    position: absolute;
    bottom: 25px;
    right: 25px;
    background: rgba(15, 23, 42, 0.85);
    color: white;
    padding: 8px 14px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    backdrop-filter: blur(4px);
    display: flex;
    align-items: center;
    gap: 6px;
}

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

.rk-dl-features {
    list-style: none;
    padding: 0;
    margin: 0 0 35px 0;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.rk-dl-feature-item {
    display: flex;
    align-items: center;
    gap: 14px;
    font-size: 15px;
    font-weight: 700;
    color: var(--dl-eps-text);
}

.rk-dl-check-icon {
    width: 24px;
    height: 24px;
    color: var(--dl-eps-accent);
    flex-shrink: 0;
    background: var(--dl-eps-bg);
    border-radius: 50%;
    padding: 3px;
}

/* PRZYCISK POBIERANIA */
.rk-dl-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--dl-eps-accent);
    color: var(--dl-eps-white);
    text-decoration: none !important;
    padding: 20px 30px;
    border-radius: 14px;
    font-weight: 900;
    font-size: 16px;
    transition: all 0.3s;
    box-shadow: 0 10px 25px -5px rgba(245, 158, 11, 0.4);
    border: 2px solid transparent;
}

.rk-dl-btn:hover {
    background: var(--dl-eps-accent-dark);
    transform: translateY(-3px);
    box-shadow: 0 15px 35px -5px rgba(245, 158, 11, 0.5);
    border-color: #fde68a;
}

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

.rk-dl-btn:hover svg {
    transform: translateY(3px);
}

/* STOPKA MODUŁU */
.rk-dl-footer {
    padding: 25px 50px;
    background: var(--dl-eps-bg);
    border-top: 1px solid var(--dl-eps-border);
    font-size: 13px;
    color: var(--dl-eps-muted);
    text-align: center;
    line-height: 1.6;
}

.rk-dl-footer a {
    color: var(--dl-eps-accent-dark);
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 3px;
}

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

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#infografika",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/"
    },
    "headline": "Infografika PDF – Ile styropianu pod ogrzewanie podłogowe?",
    "description": "Pobierz inżynierskie podsumowanie wymogów izolacyjnych (WT2021, opory cieplne R, układy warstwowe EPS 100) w wygodnym formacie PDF.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Ile-styropianu-pod-ogrzewanie-podlogowe-1.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-25",
    "dateModified": "2026-05-25"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#dataset-infografika",
    "name": "Kompendium: Parametry Izolacji EPS pod Podłogówkę",
    "description": "Skondensowany zbiór wytycznych wykonawczych, norm WT2021 oraz porównania styropianu białego i grafitowego dla instalatorów i inwestorów.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika styropian podłogówka pdf",
      "grubość izolacji pod ogrzewanie podłogowe schemat",
      "zestawienie twardości eps 100",
      "parametry styropianu grafitowego ściąga",
      "jak układać styropian instrukcja"
    ],
    "measurementTechnique": "Wizualna agregacja parametrów fizycznych (R, U) oraz instrukcji montażowych w formie graficznego schematu referencyjnego.",
    "mainEntity": {
      "@type": "Thing",
      "name": "Materiały referencyjne i szkoleniowe dla izolacji podłogowych"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#webapp-infografika",
    "name": "Centrum Pobierania: Infografika Izolacyjna",
    "description": "Moduł umożliwiający szybki podgląd i bezpieczne pobranie na urządzenie mobilne lub desktopowe materiałów inżynierskich w wysokiej rozdzielczości.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5"
  }
]
</script>

<div class="rk-dl-eps-container" id="rk-dl-eps-app">
    
    <div class="rk-dl-header">
        <div class="rk-dl-header-content">
            <div class="rk-dl-badge">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
                Zasoby do pobrania
            </div>
            <h2>Pobierz Kompendium Izolacyjne</h2>
            <p>Cała inżynierska wiedza z tego artykułu na jednej planszy. Zapisz PDF na telefonie i zabierz jako ściągawkę na plac budowy przed przyjazdem wykonawcy.</p>
        </div>
        <div class="rk-dl-visual">
            <svg class="rk-dl-pdf-svg" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M14 2H6C4.89543 2 4 2.89543 4 4V20C4 21.1046 4.89543 22 6 22H18C19.1046 22 20 21.1046 20 20V8L14 2Z" fill="#ef4444" stroke="#ffffff" stroke-width="1.5" stroke-linejoin="round"/>
                <path d="M14 2V8H20" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
                <text x="7" y="17.5" fill="white" font-size="6" font-weight="900" font-family="sans-serif">PDF</text>
            </svg>
        </div>
    </div>

    <div class="rk-dl-workspace">
        
        <div class="rk-dl-preview-box" onclick="window.open('https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Ile-styropianu-pod-ogrzewanie-podlogowe-1.webp', '_blank')">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Ile-styropianu-pod-ogrzewanie-podlogowe-1.webp" alt="Infografika - Ile styropianu pod ogrzewanie podłogowe" class="rk-dl-preview-img" loading="lazy">
            <div class="rk-dl-zoom-hint">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="11" y1="8" x2="11" y2="14"></line><line x1="8" y1="11" x2="14" y2="11"></line></svg>
                Powiększ grafikę
            </div>
        </div>

        <div class="rk-dl-info-side">
            <ul class="rk-dl-features">
                <li class="rk-dl-feature-item">
                    <svg class="rk-dl-check-icon" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Zestawienie wymogów cieplnych WT2021
                </li>
                <li class="rk-dl-feature-item">
                    <svg class="rk-dl-check-icon" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Biały EPS 100 kontra Grafit (Tabela)
                </li>
                <li class="rk-dl-feature-item">
                    <svg class="rk-dl-check-icon" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Schemat: Prawidłowy montaż w mijankę
                </li>
                <li class="rk-dl-feature-item">
                    <svg class="rk-dl-check-icon" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Format HD gotowy do druku A4
                </li>
            </ul>

            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Ile-styropianu-pod-ogrzewanie-podlogowe.pdf" class="rk-dl-btn" target="_blank" rel="noopener noreferrer">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
                POBIERZ INFOGRAFIKĘ (PDF)
            </a>
            
            <p style="margin-top: 25px; font-size: 13px; color: var(--dl-eps-muted); line-height: 1.5; font-weight: 600;">
                Masz pytania dotyczące swojej inwestycji? <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" style="color:var(--dl-eps-accent-dark); font-weight:800;">Zamów indywidualny projekt</a> i zyskaj pewność co do materiałów.
            </p>
        </div>

    </div>

    <div class="rk-dl-footer">
        © 2026 Projekt-Ogrzewania.pl | Autor merytoryczny: <strong>Robert Kucharski</strong>. Możesz swobodnie przesyłać ten plik swojemu instalatorowi, z zachowaniem informacji o autorze.
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Zabezpieczenie przed kradzieżą (Domain Lock) bez H-tagów
    const hostNm = window.location.hostname;
    const authList = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!authList.includes(hostNm)) {
        const wrap = document.getElementById('rk-dl-eps-app');
        if (wrap) {
            wrap.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #fef2f2; border: 2px solid #dc2626; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 18px; font-weight: 900; color: #991b1b; text-transform: uppercase;">Zasoby Prawne Chronione</div>
                    <div style="font-size: 14px; color: #b91c1c; max-width: 500px; margin: 10px auto 0 auto; line-height: 1.6;">
                        Ten moduł pobierania i dokumentacja techniczna są własnością serwisu <strong>Projekt-Ogrzewania.pl</strong>. Osadzanie iframe i pobieranie z zewnętrznych serwerów jest zablokowane.
                    </div>
                </div>
            `;
        }
    }
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">Ile styropianu pod ogrzewanie podłogowe?</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>
