<?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 Budżet instalacji - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/category/budzet-instalacji/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/category/budzet-instalacji/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Sun, 03 May 2026 13:26:35 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa Budżet instalacji - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/category/budzet-instalacji/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Podłogówka cena za m² robocizny.</title>
		<link>https://projekt-ogrzewania.pl/podlogowka-cena-za-m%c2%b2-robocizny/</link>
					<comments>https://projekt-ogrzewania.pl/podlogowka-cena-za-m%c2%b2-robocizny/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 04 Jan 2025 12:41:44 +0000</pubDate>
				<category><![CDATA[Budżet instalacji]]></category>
		<category><![CDATA[Cena robocizny 2025]]></category>
		<category><![CDATA[Czynniki kosztowe]]></category>
		<category><![CDATA[Efektywność cieplna]]></category>
		<category><![CDATA[Koszty ogrzewania podłogowego]]></category>
		<category><![CDATA[Materiały do podłogówki]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Optymalizacja kosztów]]></category>
		<category><![CDATA[Projekty ogrzewania]]></category>
		<category><![CDATA[Rozstaw rur podłogówki]]></category>
		<category><![CDATA[budżet na podłogówkę]]></category>
		<category><![CDATA[cena robocizny podłogówki]]></category>
		<category><![CDATA[efektywność cieplna]]></category>
		<category><![CDATA[instalacja ogrzewania podłogowego]]></category>
		<category><![CDATA[koszty instalacji]]></category>
		<category><![CDATA[materiały podłogówka]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[podłogówka cena]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[systemy grzewcze]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=1892</guid>

					<description><![CDATA[<p>Podłogówka cena za m² robocizny to jedno z najczęściej zadawanych pytań przez inwestorów. W tym artykule szczegółowo omawiamy koszty instalacji ogrzewania podłogowego, uwzględniając rozstaw rur, lokalizację inwestycji oraz rok 2025 jako punkt odniesienia cenowego. Dowiesz się, jakie czynniki wpływają na koszt, dlaczego warto inwestować w profesjonalny projekt i jak optymalizować wydatki, aby zapewnić komfort cieplny i efektywność energetyczną.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/podlogowka-cena-za-m%c2%b2-robocizny/">Podłogówka cena za m² robocizny.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --primary: #0f172a;
    --accent: #0284c7; 
    --accent-hover: #0369a1;
    --bg-light: #f0f9ff; 
    --border-color: #e2e8f0;
    --card-bg: #ffffff;
    --text-muted: #64748b;
}

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

.premium-hero-box::before {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    width: 350px;
    height: 350px;
    background: radial-gradient(circle, rgba(2, 132, 199, 0.05) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
    transform: translate(30%, -30%);
    z-index: 0;
}

.hero-content {
    position: relative;
    z-index: 1;
    padding: 40px 50px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
}

.hero-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #e0f2fe;
    color: var(--accent);
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid #bae6fd;
}

.hero-text {
    font-size: 17px;
    line-height: 1.8;
    color: #334155;
    margin-bottom: 20px;
}

.hero-text strong {
    color: var(--primary);
}

.hero-text a {
    color: var(--accent);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    font-weight: 600;
    transition: color 0.2s ease;
}

.hero-text a:hover {
    color: var(--accent-hover);
}

.hero-content h3 {
    font-size: 20px;
    font-weight: 700;
    color: var(--primary);
    margin-top: 35px;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Interaktywny Wizualizator Zakresu Prac */
.interactive-scope-container {
    background: #ffffff;
    border: 1px solid #bae6fd;
    border-radius: 20px;
    padding: 25px;
    margin-top: 30px;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.05);
}

.scope-grid {
    display: flex;
    gap: 15px;
    margin-bottom: 25px;
    flex-wrap: wrap;
}

.scope-btn {
    flex: 1;
    min-width: 120px;
    background: var(--bg-light);
    border: 2px solid transparent;
    padding: 15px 10px;
    border-radius: 14px;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    color: var(--text-muted);
}

.scope-btn svg {
    width: 28px;
    height: 28px;
    stroke: currentColor;
    transition: transform 0.3s ease;
}

.scope-btn span {
    font-size: 13px;
    font-weight: 700;
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.scope-btn:hover {
    background: #e0f2fe;
    color: var(--accent);
}

.scope-btn:hover svg {
    transform: scale(1.1);
}

.scope-btn.active {
    background: var(--accent);
    color: #ffffff;
    border-color: var(--accent-hover);
    box-shadow: 0 8px 15px rgba(2, 132, 199, 0.2);
}

.scope-btn.active svg {
    stroke: #ffffff;
    transform: scale(1.1);
}

.scope-content-box {
    background: var(--bg-light);
    border-left: 4px solid var(--accent);
    padding: 20px 25px;
    border-radius: 0 12px 12px 0;
    min-height: 120px;
    display: none;
    animation: fadeIn 0.4s ease forwards;
}

.scope-content-box.active {
    display: block;
}

.scope-content-box h4 {
    margin: 0 0 10px 0;
    font-size: 16px;
    color: var(--primary);
}

.scope-content-box p {
    margin: 0;
    font-size: 15px;
    line-height: 1.6;
    color: #475569;
}

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

@media (max-width: 900px) {
    .hero-content { padding: 35px 25px; }
}

@media (max-width: 600px) {
    .scope-grid { flex-direction: column; }
    .scope-btn { flex-direction: row; justify-content: flex-start; padding: 12px 20px; }
    .scope-btn svg { width: 24px; height: 24px; }
    .scope-content-box { padding: 15px; border-radius: 12px; border-left: none; border-top: 4px solid var(--accent); }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Podłogówka cena za m² robocizny - Zakres prac i koszty 2026",
    "description": "Szczegółowa analiza stawek robocizny za montaż ogrzewania podłogowego w 2026 roku. Sprawdź, od czego zależy ostateczna cena instalacji i co dokładnie obejmuje kompleksowa wycena.",
    "license": "https://projekt-ogrzewania.pl/",
    "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"
    },
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Zakres prac monterskich w cenie robocizny ogrzewania podłogowego",
    "description": "Zestawienie elementów wchodzących w skład uśrednionych rynkowych kosztów wykonawczych dla wodnego ogrzewania podłogowego (32-45 PLN/m²).",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Przygotowanie i izolacja",
        "value": "Wliczone w stawkę",
        "description": "Rozłożenie izolacji termicznej, przeciwwilgociowej i folii z rastrem."
      },
      {
        "@type": "PropertyValue",
        "name": "Montaż układu rur",
        "value": "Wliczone w stawkę",
        "description": "Układanie i kotwienie pętli grzewczych z uwzględnieniem stref brzegowych."
      },
      {
        "@type": "PropertyValue",
        "name": "Podłączenie rozdzielacza",
        "value": "Wliczone w stawkę",
        "description": "Złożenie i uzbrojenie rozdzielacza oraz podpięcie wszystkich obiegów."
      },
      {
        "@type": "PropertyValue",
        "name": "Próba szczelności",
        "value": "Wliczone w stawkę",
        "description": "Obowiązkowa próba ciśnieniowa wodą lub powietrzem przed wylaniem jastrychu."
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Interaktywny wizualizator zakresu prac instalacyjnych",
    "applicationCategory": "EducationalApplication",
    "description": "Interaktywny panel pozwalający inwestorowi na eksplorację poszczególnych etapów wchodzących w skład rynkowej stawki za robociznę ogrzewania podłogowego.",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "license": "https://projekt-ogrzewania.pl/",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="premium-hero-box" id="hero-app-container">
    <div class="hero-content">
        
        <div class="hero-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="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Analiza stawek 2026
        </div>
        
        <p class="hero-text"><strong>Podłogówka cena za m² robocizny</strong> to jeden z kluczowych parametrów, który inwestor musi uwzględnić przy planowaniu instalacji ogrzewania płaszczyznowego. W 2026 roku podłogówka cena za m² robocizny oscyluje najczęściej w przedziale <strong>32–45 zł/m²</strong> i obejmuje kompleksowe prace monterskie – od przygotowania podłoża, przez ułożenie izolacji termicznej i przeciwwilgociowej, aż po montaż rur grzewczych oraz podłączenie i uruchomienie rozdzielacza.</p>
        
        <p class="hero-text">Na ostateczną wartość, jaką osiąga podłogówka cena za m² robocizny, wpływa przede wszystkim stopień skomplikowania instalacji, zastosowana technologia montażu oraz <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur w pętlach</a>, który bezpośrednio determinuje czas pracy i precyzję wykonania. W praktyce oznacza to, że <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">dobrze zaprojektowany system</a> pozwala nie tylko kontrolować koszty wykonawcze, ale również zapewnia wyższą efektywność energetyczną na lata.</p>

        <h2>Analiza stawek robocizny za ogrzewanie podłogowe</h2>

        <div class="interactive-scope-container">
            <div class="scope-grid">
                <button class="scope-btn active" data-target="step-izolacja">
                    <svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line></svg>
                    <span>Izolacja</span>
                </button>
                <button class="scope-btn" data-target="step-rury">
                    <svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
                    <span>Układanie Rur</span>
                </button>
                <button class="scope-btn" data-target="step-rozdzielacz">
                    <svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><line x1="9" y1="9" x2="9" y2="15"></line><line x1="15" y1="9" x2="15" y2="15"></line></svg>
                    <span>Rozdzielacz</span>
                </button>
                <button class="scope-btn" data-target="step-proba">
                    <svg viewBox="0 0 24 24" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M12 8v4l3 3"></path></svg>
                    <span>Próba Ciśnieniowa</span>
                </button>
            </div>

            <div id="step-izolacja" class="scope-content-box active">
                <h4>1. Przygotowanie podłoża i izolacja</h4>
                <p>Ułożenie płyt styropianowych (EPS) oraz folii przeciwwilgociowej z rastrem. W profesjonalnej wycenie wliczone jest również wykonanie dylatacji brzegowych (taśma przyścienna), co jest kluczowe dla ochrony <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">jastrychu podłogowego</a> przed pękaniem podczas pracy cieplnej wylewki.</p>
            </div>
            <div id="step-rury" class="scope-content-box">
                <h4>2. Precyzyjny montaż rur grzewczych</h4>
                <p>Rozwinięcie i zakotwienie rur PEX/PERT za pomocą spinek (tacker) z zachowaniem projektowanego układu (np. ślimakowy). Stawka uwzględnia odpowiednie zagęszczenie rur w tzw. <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/">strefach brzegowych</a>, np. przy oknach tarasowych i drzwiach wyjściowych.</p>
            </div>
            <div id="step-rozdzielacz" class="scope-content-box">
                <h4>3. Podłączenie do rozdzielacza</h4>
                <p>Wpięcie wszystkich obiegów (pętli) do szafki rozdzielaczowej. W tym etapie instalator wykonuje również wstępną regulację hydrauliczną (ustawienie przepływów na rotametrach), aby zapewnić równomierne oddawanie ciepła w każdym z pomieszczeń.</p>
            </div>
            <div id="step-proba" class="scope-content-box">
                <h4>4. Obowiązkowa próba szczelności</h4>
                <p>To krytyczny punkt, którego nie wolno pominąć! Przed zalaniem rur betonem wykonawca przeprowadza nabicie instalacji ciśnieniem powietrza lub wody i sporządza protokół szczelności zgodnie z normą PN-EN 1264. To Twoja gwarancja bezpieczeństwa przed wylaniem posadzki.</p>
            </div>
        </div>

    </div>

    <noscript>
        <div style="padding: 25px 50px; background: #f8fafc; border-top: 1px solid #e2e8f0;">
            <div style="font-size: 16px; color: #0f172a; margin-bottom: 15px; font-weight: bold;">Podsumowanie prac objętych stawką 32-45 zł/m²:</div>
            <ul style="color: #475569; line-height: 1.8; margin: 0; padding-left: 20px;">
                <li>Przygotowanie izolacji termicznej i dylatacji przyściennych.</li>
                <li>Montaż rur grzewczych zgodnie z obliczeniami zapotrzebowania cieplnego.</li>
                <li>Osadzenie i podłączenie rozdzielacza wraz ze wstępną regulacją.</li>
                <li>Udokumentowana próba ciśnieniowa (szczelności).</li>
            </ul>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- OBSŁUGA INTERAKTYWNEGO WIZUALIZATORA ---
    const buttons = document.querySelectorAll('.scope-btn');
    const contentBoxes = document.querySelectorAll('.scope-content-box');

    buttons.forEach(button => {
        button.addEventListener('click', () => {
            // Usuń aktywną klasę ze wszystkich przycisków i okien treści
            buttons.forEach(btn => btn.classList.remove('active'));
            contentBoxes.forEach(box => box.classList.remove('active'));

            // Dodaj aktywną klasę do klikniętego przycisku
            button.classList.add('active');

            // Pokaż odpowiednią treść
            const targetId = button.getAttribute('data-target');
            document.getElementById(targetId).classList.add('active');
        });
    });

    // --- ZABEZPIECZENIE DOMENOWE ---
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('hero-app-container');
        if (container) {
            container.innerHTML = `
                <div style="padding: 60px 20px; text-align: center; background: #e0f2fe; color: #0284c7; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 300px; font-family: sans-serif;">
                    <span style="font-size: 48px; margin-bottom: 20px;">🔒</span>
                    <div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona prawem autorskim</div>
                    <p style="font-size: 16px; max-width: 500px; color: #0369a1; line-height: 1.5;">
                        Ten interaktywny moduł edukacyjny jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i został wdrożony bez licencji.
                    </p>
                    <a href="https://projekt-ogrzewania.pl/" style="margin-top: 25px; padding: 14px 28px; background: #0284c7; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s;">ZOBACZ ORYGINALNY ARTYKUŁ</a>
                </div>
            `;
        }
    }
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #ea580c; 
    --accent-hover: #c2410c;
    --bg-light: #fff7ed; 
    --border-color: #fdba74;
    --card-bg: #ffffff;
    --text-muted: #64748b;
}

.complexity-box {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--card-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(234, 88, 12, 0.1);
    border: 1px solid var(--border-color);
    overflow: hidden;
    color: var(--primary);
}

.complexity-header {
    padding: 40px 50px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
    border-bottom: 1px solid var(--border-color);
}

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

.complexity-header p {
    font-size: 16px;
    line-height: 1.7;
    color: #475569;
    margin: 0;
}

/* Interaktywny Grid Wyzwań */
.complexity-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    padding: 30px 50px;
    background: #ffffff;
}

.complexity-card {
    border: 2px solid #f1f5f9;
    border-radius: 16px;
    padding: 25px;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    background: #ffffff;
}

.complexity-card:hover {
    border-color: #fdba74;
    transform: translateY(-3px);
    box-shadow: 0 10px 20px -5px rgba(234, 88, 12, 0.05);
}

.complexity-card.active {
    border-color: var(--accent);
    background: var(--bg-light);
}

.card-top {
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 15px;
}

.card-icon {
    width: 44px;
    height: 44px;
    border-radius: 10px;
    background: #f1f5f9;
    color: var(--accent);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: 0.3s;
}

.complexity-card.active .card-icon {
    background: var(--accent);
    color: #ffffff;
}

.complexity-card h3 {
    font-size: 16px;
    font-weight: 800;
    margin: 0;
    color: var(--primary);
}

.complexity-details {
    max-height: 0;
    overflow: hidden;
    transition: all 0.4s ease;
    opacity: 0;
}

.complexity-card.active .complexity-details {
    max-height: 250px;
    margin-top: 15px;
    opacity: 1;
}

.complexity-details p {
    font-size: 14px;
    line-height: 1.6;
    color: #475569;
    margin-bottom: 12px;
}

.complexity-details a {
    color: var(--accent);
    font-weight: 700;
    text-decoration: underline;
}

.cost-impact-tag {
    display: inline-block;
    padding: 4px 10px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    background: #fee2e2;
    color: #dc2626;
}

.complexity-card.active .cost-impact-tag {
    background: #dc2626;
    color: #ffffff;
}

@media (max-width: 768px) {
    .complexity-grid { grid-template-columns: 1fr; padding: 25px; }
    .complexity-header { padding: 30px 25px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Dlaczego stopień skomplikowania projektu podnosi stawkę za m² robocizny?",
    "description": "Analiza techniczna wpływu trudnych brył budynków, automatyki i zbalansowania hydraulicznego na cenę robocizny podłogówki w 2026 roku.",
    "license": "https://projekt-ogrzewania.pl/",
    "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" }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Wskaźniki wzrostu kosztów robocizny podłogówki",
    "description": "Zestawienie procentowych i kwotowych narzutów na robociznę wynikających ze stopnia skomplikowania instalacji HVAC.",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Wzrost ceny: nieregularne kształty",
        "value": "+15-25%"
      },
      {
        "@type": "PropertyValue",
        "name": "Koszt montażu automatyki (na strefę)",
        "value": "150-250 PLN"
      },
      {
        "@type": "PropertyValue",
        "name": "Czas balansowania hydraulicznego",
        "value": "3-5 h"
      }
    ],
    "creator": { "@type": "Person", "name": "Robert Kucharski" }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Analizator Trudności Montażowych HVAC",
    "applicationCategory": "EducationalApplication",
    "license": "https://projekt-ogrzewania.pl/",
    "operatingSystem": "All",
    "description": "Interaktywny panel edukacyjny wyjaśniający dylematy inżynierskie i wzrost pracochłonności przy niestandardowych projektach ogrzewania płaszczyznowego."
  }
]
</script>

<div class="complexity-box" id="complexity-app-container">
    
    <div class="complexity-header">
        <h2>Dlaczego stopień skomplikowania projektu podnosi stawkę za m²?</h2>
        <p>Inwestorzy często pytają, skąd biorą się różnice w ofertach. Prawda jest taka, że <strong>cena robocizny podłogówki w trudnych pomieszczeniach</strong> nie może być taka sama jak w prostym garażu. Kliknij w wybrane wyzwanie, aby zobaczyć, co realnie wydłuża czas pracy montera.</p>
    </div>

    <div class="complexity-grid">
        <div class="complexity-card active">
            <div class="card-top">
                <div class="card-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="M3 3h18v18H3z"></path><path d="M21 9H3"></path><path d="M21 15H3"></path><path d="M12 3v18"></path></svg>
                </div>
                <h3>Nieregularna bryła i skosy</h3>
            </div>
            <span class="cost-impact-tag">+15–25% stawki</span>
            <div class="complexity-details">
                <p>Pomieszczenia z wykuszami, wnękami i łukami wymagają precyzyjnego kotwienia rur przy każdym załamaniu. Zwiększa to ryzyko przewężenia przekroju, co musi monitorować inżynier. Każde cięcie styropianu pod skosem to dodatkowe minuty, które sumują się w godziny.</p>
            </div>
        </div>

        <div class="complexity-card">
            <div class="card-top">
                <div class="card-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="2" y="2" width="20" height="8" rx="2" ry="2"></rect><rect x="2" y="14" width="20" height="8" rx="2" ry="2"></rect><line x1="6" y1="6" x2="6.01" y2="6"></line><line x1="6" y1="18" x2="6.01" y2="18"></line></svg>
                </div>
                <h3>Automatyka strefowa</h3>
            </div>
            <span class="cost-impact-tag">150–250 zł / strefa</span>
            <div class="complexity-details">
                <p><strong>Koszt montażu sterowania strefowego podłogówki</strong> obejmuje instalację listew sterujących oraz siłowników termoelektrycznych na rozdzielaczu. Wymaga to nie tylko wiedzy hydraulicznej, ale i precyzyjnego sparowania termostatów z obiegami.</p>
            </div>
        </div>

        <div class="complexity-card">
            <div class="card-top">
                <div class="card-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 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                </div>
                <h3>Balansowanie hydrauliczne</h3>
            </div>
            <span class="cost-impact-tag">3–5h pracy fachowca</span>
            <div class="complexity-details">
                <p><strong>Zbalansowanie hydrauliczne instalacji (cena</strong> wliczona w profesjonalną usługę) to etap krytyczny. Brak pracy z <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrami</a> skutkuje niedogrzaniem odległych pętli i reklamacjami.</p>
            </div>
        </div>

        <div class="complexity-card">
            <div class="card-top">
                <div class="card-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="m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
                </div>
                <h3>Wielopoziomowość i piony</h3>
            </div>
            <span class="cost-impact-tag">Wycena indywidualna</span>
            <div class="complexity-details">
                <p>Konieczność prowadzenia kilku pionów zasilających i montażu rozdzielaczy na różnych kondygnacjach to wyzwanie logistyczne. Dowiedz się więcej o tym, <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">jak powinien wyglądać projekt</a> dla takich budynków.</p>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- ZABEZPIECZENIE DOMENOWE ---
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        document.getElementById('complexity-app-container').innerHTML = `
            <div style="padding: 60px 20px; text-align: center; background: #fff7ed; color: #ea580c; font-family: sans-serif; border-radius: 24px;">
                <div style="font-size: 48px; margin-bottom: 20px;">🔒</div>
                <div style="font-size: 22px; font-weight: bold; margin-bottom: 10px;">Treść chroniona prawem autorskim</div>
                <p style="font-size: 14px; max-width: 500px; margin: 0 auto 20px auto; color: #9a3412;">Ten moduł interaktywny został skopiowany z serwisu Projekt-Ogrzewania.pl bez zgody autora.</p>
                <a href="https://projekt-ogrzewania.pl/" style="background: #ea580c; color: white; padding: 12px 24px; border-radius: 10px; text-decoration: none; font-weight: bold;">ZOBACZ ORYGINAŁ</a>
            </div>
        `;
        return;
    }

    // --- LOGIKA INTERAKCJI ---
    const cards = document.querySelectorAll('.complexity-card');
    cards.forEach(card => {
        card.addEventListener('click', function() {
            cards.forEach(c => c.classList.remove('active'));
            this.classList.add('active');
        });
    });
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #ea580c; 
    --accent-hover: #c2410c;
    --bg-light: #fff7ed; 
    --border-color: #fdba74;
    --card-bg: #ffffff;
    --text-muted: #64748b;
}

.premium-hero-box {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--card-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(234, 88, 12, 0.15);
    border: 1px solid var(--border-color);
    overflow: hidden;
    color: var(--primary);
    position: relative;
}

.premium-hero-box::before {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    width: 350px;
    height: 350px;
    background: radial-gradient(circle, rgba(234, 88, 12, 0.08) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
    transform: translate(30%, -30%);
    z-index: 0;
}

.hero-content {
    position: relative;
    z-index: 1;
    padding: 40px 50px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
}

.hero-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #ffedd5;
    color: var(--accent);
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid #fed7aa;
}

.hero-content h3 {
    font-size: 22px;
    font-weight: 700;
    color: var(--primary);
    margin-top: 35px;
    margin-bottom: 15px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.hero-content h4 {
    font-size: 18px;
    font-weight: 600;
    color: var(--primary);
    margin-top: 30px;
    margin-bottom: 15px;
}

.hero-text {
    font-size: 17px;
    line-height: 1.8;
    color: #334155;
    margin-bottom: 20px;
}

.hero-text strong {
    color: var(--primary);
}

.hero-text a {
    color: var(--accent);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    font-weight: 600;
    transition: color 0.2s ease;
}

.hero-text a:hover {
    color: var(--accent-hover);
}

/* Moduł interaktywny - Symulator Rozstawu */
.interactive-calc-wrapper {
    background: #ffffff;
    border: 1px solid #fed7aa;
    border-radius: 20px;
    padding: 30px;
    margin-top: 30px;
    box-shadow: 0 10px 25px -5px rgba(234, 88, 12, 0.05);
}

.calc-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 30px;
}

.calc-control-group {
    margin-bottom: 25px;
}

.calc-label {
    display: flex;
    justify-content: space-between;
    font-size: 14px;
    font-weight: 700;
    color: var(--primary);
    margin-bottom: 15px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.calc-value-display {
    color: var(--accent);
    font-size: 18px;
}

/* Suwak */
.range-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    background: #fed7aa;
    border-radius: 5px;
    outline: none;
    transition: background 0.3s;
}

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

.range-slider::-webkit-slider-thumb:hover {
    transform: scale(1.15);
}

/* Przełączniki (Toggles) */
.toggle-group {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.toggle-btn {
    flex: 1;
    min-width: 120px;
    padding: 12px 15px;
    background: #fff7ed;
    border: 2px solid #fed7aa;
    border-radius: 12px;
    color: var(--primary);
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
    transition: all 0.2s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 5px;
}

.toggle-btn span.rate-hint {
    font-size: 12px;
    color: var(--text-muted);
    font-weight: 400;
}

.toggle-btn.active {
    background: var(--accent);
    border-color: var(--accent);
    color: #ffffff;
}

.toggle-btn.active span.rate-hint {
    color: #ffedd5;
}

.toggle-btn:hover:not(.active) {
    background: #ffedd5;
    border-color: var(--accent);
}

/* Panel Wyników i Wizualizacji */
.results-container {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.data-panel {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.data-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 15px;
    background: var(--bg-light);
    border-radius: 10px;
    font-size: 14px;
    border: 1px solid #ffedd5;
}

.data-row span:first-child {
    color: #64748b;
    font-weight: 600;
}

.data-row span:last-child {
    color: var(--primary);
    font-weight: 800;
    font-size: 16px;
}

.calc-result-box {
    background: var(--primary);
    border-radius: 16px;
    padding: 25px;
    color: #ffffff;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    position: relative;
    overflow: hidden;
}

.calc-result-box::before {
    content: '';
    position: absolute;
    top: -50px;
    right: -50px;
    width: 150px;
    height: 150px;
    background: rgba(255,255,255,0.05);
    border-radius: 50%;
}

.result-label {
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #94a3b8;
    margin-bottom: 10px;
}

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

.result-value span {
    font-size: 18px;
    font-weight: 600;
    color: var(--accent);
}

.visual-density {
    margin-top: 10px;
    height: 60px;
    background-image: repeating-linear-gradient(90deg, transparent, transparent 15px, rgba(234, 88, 12, 0.2) 15px, rgba(234, 88, 12, 0.2) 18px);
    border-radius: 8px;
    border: 1px dashed #fed7aa;
    transition: all 0.3s ease;
}

@media (max-width: 900px) {
    .hero-content { padding: 35px 25px; }
}

@media (max-width: 650px) {
    .results-container { grid-template-columns: 1fr; }
    .toggle-group { flex-direction: column; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Jak rozstaw rur wpływa na końcowy koszt montażu i efektywność",
    "description": "Zmniejszenie rozstawu rur z 15 cm do 10 cm zwiększa pracochłonność o 33%, podnosząc cenę robocizny za m². Analiza dla standardów WT 2021.",
    "license": "https://projekt-ogrzewania.pl/",
    "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"
    },
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Zależność zużycia rury od rozstawu pętli",
    "description": "Dane techniczne pokazujące, ile metrów bieżących rury przypada na metr kwadratowy podłogi przy konkretnym zagęszczeniu.",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Zużycie przy rozstawie 15 cm",
        "value": "6,7 mb/m²"
      },
      {
        "@type": "PropertyValue",
        "name": "Zużycie przy rozstawie 10 cm",
        "value": "10,0 mb/m²"
      },
      {
        "@type": "PropertyValue",
        "name": "Wzrost pracochłonności 15cm vs 10cm",
        "value": "+33%"
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Symulator gęstości rur i pracochłonności",
    "applicationCategory": "CalculatorApplication",
    "description": "Narzędzie interaktywne ilustrujące zależność między wybranym rozstawem rur a całkowitym kosztem robocizny i ilością użytego materiału.",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "license": "https://projekt-ogrzewania.pl/",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="premium-hero-box" id="hero-app-container">
    <div class="hero-content">
        
        <div class="hero-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
            Efektywność vs Koszt
        </div>
        
        <h2>Jak rozstaw rur wpływa na końcowy koszt montażu i efektywność?</h2>
        
        <p class="hero-text">Zmniejszenie rozstawu rur z 15 cm do 10 cm zwiększa pracochłonność montażu o <strong>33%</strong>, co bezpośrednio przekłada się na wzrost ceny robocizny o około 7–10 zł/m². Przy rozstawie 10 cm instalator musi ułożyć 10 metrów bieżących rury na każdy metr kwadratowy, podczas gdy przy rozstawie 15 cm jest to tylko 6,7 metra.</p>
        
        <p class="hero-text">Zwiększona gęstość rur wymaga również większej liczby pętli grzewczych, co oznacza więcej czasu poświęconego na precyzyjne podłączenie rur do sekcji rozdzielacza i ich prawidłowe oznaczenie. Wybór rozstawu rur musi wynikać z obliczeń zapotrzebowania na ciepło (q w W/m²). W nowoczesnym budownictwie o standardzie WT 2021, gdzie zapotrzebowanie wynosi zazwyczaj 30–45 W/m², <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">rozstaw 15 cm jest wystarczający</a>.</p>

        <h4>Zagęszczenie w strefach brzegowych</h4>
        
        <p class="hero-text">Jednak w <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/">strefach brzegowych</a> (przy dużych przeszkleniach i ścianach zewnętrznych) norma PN-EN 1264 sugeruje zagęszczenie rur do 10 cm lub nawet 7,5 cm, aby zniwelować wpływ mostków termicznych. Dla instalatora oznacza to konieczność częstszego gięcia rur i zachowania minimalnych promieni gięcia (zazwyczaj 5 × średnica rury), co jest procesem żmudnym i podnoszącym koszt usługi.</p>

        <div class="interactive-calc-wrapper">
            <div class="calc-grid">
                
                <div class="calc-control-group">
                    <div class="calc-label">
                        <span>Analizowana Powierzchnia</span>
                        <span class="calc-value-display"><span id="areaValue">100</span> m²</span>
                    </div>
                    <input type="range" id="areaSlider" class="range-slider" min="30" max="250" step="10" value="100">
                </div>
                
                <div class="calc-control-group">
                    <div class="calc-label"><span>Wybierz gęstość ułożenia pętli</span></div>
                    <div class="toggle-group" id="densityToggles">
                        <button class="toggle-btn" data-spacing="20" data-pipe="5" data-rate="32" data-visual="20">
                            Co 20 cm
                            <span class="rate-hint">Pokoje techniczne</span>
                        </button>
                        <button class="toggle-btn active" data-spacing="15" data-pipe="6.7" data-rate="35" data-visual="15">
                            Co 15 cm
                            <span class="rate-hint">Standard (WT2021)</span>
                        </button>
                        <button class="toggle-btn" data-spacing="10" data-pipe="10" data-rate="42" data-visual="10">
                            Co 10 cm
                            <span class="rate-hint">Łazienki / Okna</span>
                        </button>
                    </div>
                    <div class="visual-density" id="densityVisual"></div>
                    <div style="text-align:center; font-size: 11px; color: #94a3b8; margin-top:5px;">Symulacja gęstości rur</div>
                </div>

                <div class="results-container">
                    <div class="data-panel">
                        <div class="data-row">
                            <span>Zużycie rury (na m²)</span>
                            <span id="pipePerSqM">6.7 mb</span>
                        </div>
                        <div class="data-row">
                            <span>Ilość rury (całość)</span>
                            <span id="totalPipe">670 mb</span>
                        </div>
                        <div class="data-row">
                            <span>Pracochłonność względem 15cm</span>
                            <span id="workloadDiff" style="color: #64748b;">100% (Baza)</span>
                        </div>
                    </div>
                    
                    <div class="calc-result-box">
                        <div class="result-label">Koszt Robocizny</div>
                        <div class="result-value" id="totalCost">3 500 <span>zł</span></div>
                        <div style="font-size: 13px; color: #ffedd5; margin-top: 5px;">
                            Przyjęto: <strong id="currentRateLabel">35 zł/m²</strong>
                        </div>
                    </div>
                </div>

            </div>
        </div>

    </div>

    <noscript>
        <div style="padding: 20px 50px; background: #f8fafc; border-top: 1px solid #e2e8f0;">
            <div style="font-size: 16px; color: #0f172a; margin-bottom: 10px; font-weight: bold;">Zależność zużycia rury od rozstawu:</div>
            <ul style="color: #475569; line-height: 1.6;">
                <li><strong>Rozstaw 20 cm:</strong> 5 mb rury na 1 m²</li>
                <li><strong>Rozstaw 15 cm:</strong> 6,7 mb rury na 1 m² (Standard)</li>
                <li><strong>Rozstaw 10 cm:</strong> 10 mb rury na 1 m² (Zwiększona pracochłonność)</li>
                <li><strong>Rozstaw 7,5 cm:</strong> 13,3 mb rury na 1 m² (Strefy brzegowe)</li>
            </ul>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- LOGIKA SYMULATORA GĘSTOŚCI ---
    const areaSlider = document.getElementById('areaSlider');
    const areaValue = document.getElementById('areaValue');
    const totalCostDisplay = document.getElementById('totalCost');
    const densityToggles = document.querySelectorAll('.toggle-btn');
    const currentRateLabel = document.getElementById('currentRateLabel');
    
    const pipePerSqMDisplay = document.getElementById('pipePerSqM');
    const totalPipeDisplay = document.getElementById('totalPipe');
    const workloadDiffDisplay = document.getElementById('workloadDiff');
    const densityVisual = document.getElementById('densityVisual');
    
    let currentArea = 100;
    let currentRate = 35;
    let currentPipe = 6.7;
    let currentSpacingVisual = 15;

    function formatCurrency(number) {
        return new Intl.NumberFormat('pl-PL', { maximumFractionDigits: 0 }).format(number);
    }

    function calculate() {
        const totalCost = currentArea * currentRate;
        const totalPipe = currentArea * currentPipe;
        
        totalCostDisplay.innerHTML = `${formatCurrency(totalCost)} <span>zł</span>`;
        currentRateLabel.textContent = `${currentRate} zł/m²`;
        
        pipePerSqMDisplay.textContent = `${currentPipe.toString().replace('.', ',')} mb`;
        totalPipeDisplay.textContent = `${formatCurrency(totalPipe)} mb`;
        
        // Obliczenia pracochłonności wzgledem 15cm
        if (currentPipe === 6.7) {
            workloadDiffDisplay.textContent = "100% (Baza)";
            workloadDiffDisplay.style.color = "#64748b";
        } else if (currentPipe > 6.7) {
            const diff = Math.round(((currentPipe / 6.7) - 1) * 100);
            workloadDiffDisplay.textContent = `+${diff}% czasu`;
            workloadDiffDisplay.style.color = "#ea580c";
        } else {
            const diff = Math.round((1 - (currentPipe / 6.7)) * 100);
            workloadDiffDisplay.textContent = `-${diff}% czasu`;
            workloadDiffDisplay.style.color = "#16a34a";
        }
        
        // Aktualizacja wizualizacji gęstości
        densityVisual.style.backgroundImage = `repeating-linear-gradient(90deg, transparent, transparent ${currentSpacingVisual}px, rgba(234, 88, 12, 0.6) ${currentSpacingVisual}px, rgba(234, 88, 12, 0.6) ${currentSpacingVisual + 3}px)`;
    }

    if(areaSlider) {
        areaSlider.addEventListener('input', function(e) {
            currentArea = parseInt(e.target.value);
            areaValue.textContent = currentArea;
            calculate();
        });
    }

    densityToggles.forEach(btn => {
        btn.addEventListener('click', function() {
            densityToggles.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            
            currentRate = parseFloat(this.getAttribute('data-rate'));
            currentPipe = parseFloat(this.getAttribute('data-pipe'));
            currentSpacingVisual = parseInt(this.getAttribute('data-visual'));
            
            calculate();
        });
    });

    calculate(); // Initial run

    // --- ZABEZPIECZENIE DOMENOWE ---
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('hero-app-container');
        if (container) {
            container.innerHTML = `
                <div style="padding: 60px 20px; text-align: center; background: #fff7ed; color: #ea580c; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 300px; font-family: sans-serif;">
                    <div style="font-size: 48px; margin-bottom: 20px;">🔒</div>
                    <div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona prawem autorskim</div>
                    <div style="font-size: 16px; max-width: 500px; color: #9a3412; line-height: 1.5; margin-bottom: 25px;">
                        Ten symulator gęstości rur i pracochłonności jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i został skopiowany nielegalnie.
                    </div>
                    <a href="https://projekt-ogrzewania.pl/" style="padding: 14px 28px; background: #ea580c; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s; text-transform: uppercase;">ZOBACZ ORYGINALNY ARTYKUŁ</a>
                </div>
            `;
        }
    }
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #ea580c; /* Ciepły pomarańczowy, spójny z tematyką ogrzewania */
    --accent-hover: #c2410c;
    --danger: #dc2626;
    --warning: #f59e0b;
    --success: #16a34a;
    --bg-light: #fff7ed;
    --border-color: #fdba74;
}

.premium-anatomy-box {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(234, 88, 12, 0.1);
    border: 1px solid var(--border-color);
    overflow: hidden;
    color: var(--primary);
}

.anatomy-header {
    padding: 40px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
    border-bottom: 1px solid var(--border-color);
}

.anatomy-header h3 {
    margin: 0 0 15px 0;
    font-size: 26px;
    font-weight: 900;
    color: var(--primary);
}

.anatomy-header p {
    font-size: 16px;
    line-height: 1.7;
    color: #475569;
    margin-bottom: 15px;
}

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

.anatomy-workspace {
    display: flex;
    min-height: 520px;
}

/* LEWA STRONA - ZAKŁADKI / CZYNNIKI */
.anatomy-layers {
    width: 40%;
    background: #ffffff;
    border-right: 1px solid var(--border-color);
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 30px 20px;
    gap: 12px;
}

.layer-btn {
    position: relative;
    width: 100%;
    padding: 16px;
    border-radius: 12px;
    border: 2px solid #ffedd5;
    background: #ffffff;
    cursor: pointer;
    text-align: left;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    gap: 15px;
    overflow: hidden;
}

.layer-btn::before {
    content: '';
    position: absolute;
    left: 0; top: 0; height: 100%; width: 6px;
    background: #fdba74;
    transition: all 0.3s;
}

/* Subtelne różnice kolorystyczne dla kategorii */
.layer-btn[data-layer="lokalizacja"]::before { background: #3b82f6; } 
.layer-btn[data-layer="skomplikowanie"]::before { background: #8b5cf6; } 
.layer-btn[data-layer="system"]::before { background: #f59e0b; } 
.layer-btn[data-layer="ekipa"]::before { background: #10b981; } 
.layer-btn[data-layer="zakres"]::before { background: #ef4444; } 

.layer-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 15px -3px rgba(234, 88, 12, 0.05);
    border-color: #fdba74;
}

.layer-btn.layer-active {
    border-color: var(--accent);
    background: #fff7ed;
    box-shadow: 0 10px 20px -5px rgba(234, 88, 12, 0.15);
}

.layer-btn.layer-active::before {
    background: var(--accent) !important;
    width: 8px;
}

.layer-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    color: #94a3b8;
    transition: all 0.3s;
}

.layer-btn.layer-active .layer-icon {
    transform: scale(1.15);
    color: var(--accent);
}

.layer-title {
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    font-weight: 800;
    color: var(--primary);
    line-height: 1.3;
}

.layer-subtitle {
    display: block;
    font-size: 11px;
    font-weight: 600;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-top: 5px;
}

/* PRAWA STRONA - SZCZEGÓŁY WARSTWY */
.anatomy-details {
    width: 60%;
    background: var(--bg-light);
    padding: 40px;
    position: relative;
}

.detail-pane {
    display: none;
    animation: fadeInSlide 0.4s ease-out forwards;
}

.detail-pane.pane-active {
    display: block;
}

.detail-pane h4 {
    margin: 0 0 20px 0;
    font-size: 22px;
    font-weight: 900;
    color: var(--primary);
    display: flex;
    align-items: center;
    gap: 12px;
}

.detail-pane p {
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
    margin-bottom: 15px;
}

.detail-pane ul {
    margin: 0 0 20px 0;
    padding-left: 20px;
}

.detail-pane li {
    font-size: 15px;
    line-height: 1.6;
    color: #475569;
    margin-bottom: 10px;
}

.detail-pane a {
    color: var(--accent);
    text-decoration: underline;
    font-weight: 600;
}

.highlight-box {
    background: #ffffff;
    border-left: 4px solid var(--accent);
    padding: 18px 20px;
    border-radius: 0 12px 12px 0;
    font-size: 14px;
    font-weight: 500;
    color: #334155;
    box-shadow: 0 2px 5px rgba(0,0,0,0.02);
    margin-top: 20px;
    line-height: 1.6;
}

.highlight-box strong {
    color: var(--primary);
    font-weight: 800;
}

/* Mini interaktywny suwak w panelu 1 */
.mini-slider-container {
    margin-top: 20px;
    background: #ffffff;
    padding: 20px;
    border-radius: 12px;
    border: 1px solid #fdba74;
}

.mini-slider-label {
    display: flex;
    justify-content: space-between;
    font-weight: 700;
    font-size: 13px;
    color: var(--primary);
    margin-bottom: 10px;
    text-transform: uppercase;
}

.mini-slider {
    width: 100%;
    -webkit-appearance: none;
    height: 6px;
    background: #ffedd5;
    border-radius: 3px;
    outline: none;
}

.mini-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: var(--accent);
    cursor: pointer;
    border: 2px solid #fff;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

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

@media (max-width: 800px) {
    .anatomy-header { padding: 30px 20px; }
    .anatomy-workspace { flex-direction: column; min-height: auto; }
    .anatomy-layers {
        width: 100%;
        border-right: none;
        border-bottom: 1px solid var(--border-color);
        padding: 20px;
    }
    .anatomy-details {
        width: 100%;
        padding: 30px 20px;
    }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Co wpływa na ostateczną cenę robocizny podłogówki?",
    "description": "5 kluczowych czynników decydujących o wycenie instalacji ogrzewania podłogowego w 2026 roku: lokalizacja, stopień skomplikowania, technologia, doświadczenie ekipy oraz pełen zakres prac.",
    "license": "https://projekt-ogrzewania.pl/",
    "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"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Czynniki kosztotwórcze robocizny ogrzewania podłogowego 2026",
    "description": "Zestawienie mnożników i zmiennych wpływających na odchylenia od bazowej stawki za m² układania podłogówki.",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Narzut lokalizacyjny (Warszawa)",
        "value": "+18 do +25%"
      },
      {
        "@type": "PropertyValue",
        "name": "Narzut za skomplikowanie (wiele pomieszczeń)",
        "value": "Wzrost z 0.38 do 0.65 r-g/m²"
      },
      {
        "@type": "PropertyValue",
        "name": "Montaż na siatce stalowej",
        "value": "+12% czasu pracy"
      },
      {
        "@type": "PropertyValue",
        "name": "Dopłata za dojazd powyżej 50km",
        "value": "2.5 - 3.5 PLN/km"
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Panel analizy czynników wyceny instalacyjnej",
    "applicationCategory": "BusinessApplication",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "description": "Narzędzie interaktywne typu 'anatomy', pozwalające inwestorowi badać wpływ różnych zmiennych projektowych (system, dojazd, ekipa) na ostateczną cenę usług hydraulicznych.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="premium-anatomy-box" id="pricing-factors-app-container">
    
    <div class="anatomy-header">
        <h2>Co wpływa na cenę robocizny oprócz rozstawu?</h2>
        <p>Gdy inwestorzy pytają o to, jaka jest obecnie <strong>podłogówka cena za m² robocizny</strong>, często spodziewają się jednej, sztywnej kwoty. W rzeczywistości stawka w 2026 roku zależy od pięciu zmiennych czynników technicznych i rynkowych, które wyceniam indywidualnie w każdym zleceniu.</p>
    </div>

    <div class="anatomy-workspace">
        
        <div class="anatomy-layers">
            <span style="font-size: 11px; font-weight: 800; color: #94a3b8; text-transform: uppercase; letter-spacing: 1px; text-align: center; margin-bottom: 5px;">Eksploruj czynniki wyceny</span>
            
            <button class="layer-btn layer-active" data-target="pane-lokalizacja" data-layer="lokalizacja">
                <svg class="layer-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle></svg>
                <div>
                    <div class="layer-title">Lokalizacja Inwestycji</div>
                    <span class="layer-subtitle">Region i Dojazd do klienta</span>
                </div>
            </button>
            
            <button class="layer-btn" data-target="pane-skomplikowanie" data-layer="skomplikowanie">
                <svg class="layer-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
                <div>
                    <div class="layer-title">Stopień Skomplikowania</div>
                    <span class="layer-subtitle">Bryła budynku i ilość pętli</span>
                </div>
            </button>
            
            <button class="layer-btn" data-target="pane-system" data-layer="system">
                <svg class="layer-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline></svg>
                <div>
                    <div class="layer-title">System Mocowania</div>
                    <span class="layer-subtitle">Spinki vs Tacker vs Płyty</span>
                </div>
            </button>
            
            <button class="layer-btn" data-target="pane-ekipa" data-layer="ekipa">
                <svg class="layer-icon" 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>
                    <div class="layer-title">Doświadczenie Ekipy</div>
                    <span class="layer-subtitle">Gwarancja i profesjonalizm</span>
                </div>
            </button>

            <button class="layer-btn" data-target="pane-zakres" data-layer="zakres">
                <svg class="layer-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                <div>
                    <div class="layer-title">Pełen Zakres Prac</div>
                    <span class="layer-subtitle">Dodatki ukryte w wycenie</span>
                </div>
            </button>
        </div>

        <div class="anatomy-details">
            
            <div class="detail-pane pane-active" id="pane-lokalizacja">
                <h4>1. Regionalizacja cen i logistyka</h4>
                <p>Ceny usług instalacyjnych różnią się drastycznie w zależności od województwa. Warszawa centrum to zazwyczaj <strong>+18–25%</strong> względem średniej krajowej. Z kolei wschodnia Polska i małe miejscowości pozwalają oszczędzić od <strong>-5 do -12%</strong>.</p>
                <p>Istotny jest również dojazd. Gdy budowa znajduje się daleko od siedziby firmy, wkraczają dodatkowe koszty logistyczne.</p>
                
                <div class="mini-slider-container">
                    <div class="mini-slider-label">
                        <span>Dystans powyżej 50 km (Dopłata)</span>
                        <span id="travelCostDisplay" style="color: var(--accent);">0 zł</span>
                    </div>
                    <input type="range" id="travelSlider" class="mini-slider" min="0" max="100" step="5" value="0">
                    <div style="font-size: 11px; color: #64748b; margin-top: 8px;">Stawka: 3,00 zł / km. Przesuń suwak, aby sprawdzić dodatkowy koszt transportu ekipy.</div>
                </div>
            </div>

            <div class="detail-pane" id="pane-skomplikowanie">
                <h4>2. Bryła budynku a pracochłonność</h4>
                <p>Metraż to nie wszystko. Czas, w jakim ekipa ułoży instalację, jest mierzony w roboczo-godzinach na metr kwadratowy (r-g/m²).</p>
                <ul>
                    <li><strong>Proste przestrzenie:</strong> Pomieszczenia otwarte (typu open-space) o powierzchni 60 m² to szybka praca: ok. <strong>0,38 r-g/m²</strong>.</li>
                    <li><strong>Skomplikowane układy:</strong> Dom wielopoziomowy, 14 małych pomieszczeń ze skosami, słupami i dwoma rozdzielaczami winduje czas pracy do <strong>0,65 r-g/m²</strong>.</li>
                </ul>
                <div class="highlight-box">
                    Właśnie z powodu architektury, w profesjonalnych cennikach instalatorów widełki za to samo zadanie mogą wynosić <strong>55–80 zł</strong> dla prostych domów, aż po <strong>80–120 zł</strong> dla rozbudowanych projektów deweloperskich.
                </div>
            </div>

            <div class="detail-pane" id="pane-system">
                <h4>3. Technologia przytwierdzania rur</h4>
                <p>Wybór materiałów wpływa bezpośrednio na tempo pracy montera. Każdy system ma swoje wady i zalety finansowe:</p>
                <ul>
                    <li><a href="https://projekt-ogrzewania.pl/spinka-do-styropianu-do-takera/">Spinki do styropianu EPS 100:</a> Jest to metoda najszybsza (ok. 0,42 r-g/m²). Standard w nowoczesnym budownictwie.</li>
                    <li><strong>Siatka stalowa i opaski:</strong> Wymagają o <strong>+12% więcej czasu</strong> (praca ręczna), stosowane częściej w halach przemysłowych.</li>
                    <li><strong>Płyty systemowe (Tacker z wypustkami):</strong> Przyspieszają montaż o <strong>-8% czasu</strong> w stosunku do spinek, jednak wymagają zakupu znacznie droższego podłoża.</li>
                </ul>
            </div>

            <div class="detail-pane" id="pane-ekipa">
                <h4>4. Kompetencje i rzetelność fachowców</h4>
                <p>Tania robocizna potrafi zemścić się w pierwszym sezonie grzewczym. Podłogówka cena za m² robocizny odzwierciedla też jakość narzędzi i gwarancje.</p>
                <div class="highlight-box" style="border-left-color: var(--success);">
                    <strong>Profesjonalna firma (70–85 zł/m² w wyższym standardzie):</strong><br>
                    Posiada certyfikaty producenta rur. Wykonuje udokumentowaną <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/">próbę szczelności (zgodnie z PN-EN 1264-4)</a>. Daje nawet 10 lat gwarancji na swój montaż.
                </div>
                <div class="highlight-box" style="border-left-color: var(--danger); margin-top: 15px;">
                    <strong>Firma &#8222;po taniości&#8221; (50 zł/m²):</strong><br>
                    Często nie posiada nawet manometru cyfrowego. Nie przeprowadza prób ciśnieniowych i znika z placu budowy tuż po zalaniu rur wylewką.
                </div>
            </div>

            <div class="detail-pane" id="pane-zakres">
                <h4>5. Co dokładnie obejmuje umowa?</h4>
                <p>Zanim zaakceptujesz ofertę, upewnij się, co zostało wliczone w bazową stawkę za metr układania. Koszty dodatkowe mogą drastycznie zmienić ostateczny rachunek.</p>
                <ul>
                    <li>Czy w cenie jest osadzenie i montaż <a href="https://projekt-ogrzewania.pl/szafka-podtynkowa-do-rozdzielaczy-ogrzewania-podlogowego/">szafek podtynkowych</a>?</li>
                    <li>Czy umowa przewiduje <a href="https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/">frezowanie instalacji</a> (częsty wymóg w budynkach remontowanych)?</li>
                    <li>Zabezpieczenie rur peszlem w miejscach przejść przez dylatacje.</li>
                    <li><strong>Dokumentacja fotograficzna:</strong> W moich projektach wymagam zawsze minimum 12 zdjęć z napełnionym manometrem podczas próby ciśnieniowej.</li>
                </ul>
            </div>

        </div>
    </div>
    
    <noscript>
        <style>
            .detail-pane { display: block !important; margin-bottom: 30px; }
            .mini-slider-container { display: none; }
        </style>
        <div style="padding: 30px; background: #f8fafc; border-top: 1px solid #e2e8f0; font-family: sans-serif;">
            <h3 style="font-size: 18px; color: #0f172a; margin-bottom: 15px;">Zestawienie parametrów wyceny:</h3>
            <ul style="color: #475569; line-height: 1.6;">
                <li><strong>Lokalizacja:</strong> Warszawa (+25%), mniejsze miejscowości (-10%). Dopłaty za dojazd powyżej 50km.</li>
                <li><strong>Skomplikowanie:</strong> Otwarte salony (taniej) vs małe pokoje z dużą liczbą załamań (drożej).</li>
                <li><strong>System:</strong> Spinki EPS to standard. Płyty systemowe są szybsze, ale droższe w materiale.</li>
                <li><strong>Gwarancje:</strong> Droższe ekipy wykonują próby ciśnieniowe zgodne z normami.</li>
                <li><strong>Zakres ukryty:</strong> Upewnij się, że w cenie jest szafka podtynkowa i dokumentacja foto.</li>
            </ul>
        </div>
    </noscript>
</div>

<script>
function initPricingFactorsTabs() {
    // --- ZABEZPIECZENIE DOMENOWE ---
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const lockContainer = document.getElementById('pricing-factors-app-container');
        if (lockContainer) {
            lockContainer.innerHTML = `
                <div style="padding: 60px 20px; text-align: center; background: #fff7ed; color: #ea580c; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 400px;">
                    <div style="font-size: 48px; margin-bottom: 20px;">🔒</div>
                    <div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona prawem autorskim</div>
                    <div style="font-size: 16px; max-width: 500px; color: #9a3412; line-height: 1.5; margin-bottom: 25px;">Ten interaktywny moduł edukacyjny jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i został wdrożony nielegalnie.</div>
                    <a href="https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/" style="padding: 14px 28px; background: #ea580c; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s; text-transform: uppercase;">ZOBACZ ORYGINALNY ARTYKUŁ</a>
                </div>
            `;
        }
        return; 
    }

    const appContainer = document.getElementById('pricing-factors-app-container');
    if (!appContainer) return;

    // --- LOGIKA ZAKŁADEK ---
    const layerBtns = appContainer.querySelectorAll('.layer-btn');
    const panes = appContainer.querySelectorAll('.detail-pane');

    layerBtns.forEach(function(button) {
        button.addEventListener('click', function(e) {
            e.preventDefault(); 
            layerBtns.forEach(function(btn) { btn.classList.remove('layer-active'); });
            panes.forEach(function(pane) { pane.classList.remove('pane-active'); });
            
            this.classList.add('layer-active');
            const targetId = this.getAttribute('data-target');
            const targetPane = appContainer.querySelector('#' + targetId);
            if(targetPane) {
                targetPane.classList.add('pane-active');
            }
        });
    });

    // --- LOGIKA MINI-KALKULATORA DOJAZDU ---
    const travelSlider = document.getElementById('travelSlider');
    const travelCostDisplay = document.getElementById('travelCostDisplay');
    
    if (travelSlider && travelCostDisplay) {
        travelSlider.addEventListener('input', function() {
            const distance = parseInt(this.value);
            const ratePerKm = 3.0; // średnio 3 zł/km dopłaty
            const cost = distance * ratePerKm;
            travelCostDisplay.textContent = `+ ${cost.toFixed(0)} zł`;
        });
    }
}

if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', initPricingFactorsTabs);
} else {
    initPricingFactorsTabs();
}
</script>



<style>
:root {
    --primary-hvac: #0f172a;
    --accent-hvac: #ea580c; 
    --bg-tip: #fff7ed; 
}

.expert-tip-wrapper {
    max-width: 850px;
    margin: 50px auto 40px auto;
}

.expert-tip-wrapper h2 {
    font-family: 'Inter', -apple-system, sans-serif;
    font-size: 24px;
    font-weight: 900;
    color: var(--primary-hvac);
    margin: 0 0 20px 0;
    text-align: center;
}

.expert-tip-container {
    background: var(--bg-tip);
    border-radius: 20px;
    padding: 30px;
    display: flex;
    gap: 25px;
    align-items: center;
    border-left: 6px solid var(--accent-hvac);
    position: relative;
    font-family: 'Inter', -apple-system, sans-serif;
    text-align: left;
    box-shadow: 0 10px 25px -5px rgba(234, 88, 12, 0.05);
}

.expert-tip-photo-wrap {
    flex-shrink: 0;
    width: 90px;
    height: 90px;
    position: relative;
}

.expert-tip-photo {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    object-position: center top;
    border: 3px solid #ffffff;
    box-shadow: 0 4px 10px rgba(234, 88, 12, 0.15);
}

.expert-tip-photo-wrap::after {
    content: '💡';
    position: absolute;
    bottom: -5px;
    right: -5px;
    background: #ffffff;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
    border: 1px solid #fdba74;
}

.expert-tip-content {
    flex-grow: 1;
}

.expert-tip-label {
    display: block;
    font-size: 12px;
    font-weight: 800;
    color: var(--accent-hvac);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 8px;
}

.expert-tip-text {
    font-size: 16px;
    line-height: 1.6;
    color: var(--primary-hvac);
    font-style: italic;
    margin: 0;
}

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

.expert-tip-text a {
    color: var(--accent-hvac);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    font-weight: 700;
    font-style: normal;
}

.expert-tip-text a:hover {
    color: #c2410c;
}

.expert-tip-signature {
    display: block;
    margin-top: 15px;
    font-size: 13px;
    font-weight: 700;
    color: #64748b;
}

@media (max-width: 600px) {
    .expert-tip-container { flex-direction: column; text-align: center; padding: 25px; }
    .expert-tip-photo-wrap { margin-bottom: 10px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Quotation",
    "license": "https://projekt-ogrzewania.pl/",
    "text": "Gdy inwestorzy pytają mnie o to, ile ostatecznie wyniesie ich cena za metr kwadratowy robocizny przy układaniu podłogówki, zawsze powtarzam jedną zasadę: patrzcie na projekt, nie na suche stawki. Najtańszy monter rzucający rurę 'na oko' z reguły pomija koszty dylatacji przyściennych i kluczowej próby ciśnieniowej, co kończy się aneksami. Z mojego doświadczenia jako projektanta instalacji wynika, że rzetelne obliczenia OZC pozwalają zoptymalizować układ pętli i zredukować koszty wykonawcze o 10–15%, a przede wszystkim gwarantują, że wylewka nie popęka po pierwszym uruchomieniu pompy ciepła.",
    "spokenByCharacter": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "jobTitle": "CEO & Główny Projektant",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ],
      "worksFor": {
        "@type": "Organization",
        "name": "Projekt-Ogrzewania.pl"
      }
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Ekspercka optymalizacja kosztów robocizny",
    "description": "Zestawienie inżynierskich zasad wpływających na redukcję rynkowej ceny za wykonanie ogrzewania podłogowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Redukcja kosztów wykonawczych z projektem",
        "value": "10-15%"
      },
      {
        "@type": "PropertyValue",
        "name": "Eliminowane ryzyka",
        "value": "Brak dylatacji, przewymiarowanie, brak próby ciśnieniowej"
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/"
    }
  }
]
</script>

<div class="expert-tip-wrapper">
    <h2><span style="margin-right:10px">⚖️</span>Robert Kucharski o kosztach i błędach</h2>
    
    <div class="expert-tip-container" id="expert-tip-pricing">
        <div class="expert-tip-photo-wrap">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Główny Projektant" class="expert-tip-photo" loading="lazy">
        </div>
        <div class="expert-tip-content">
            <span class="expert-tip-label">Wskazówka Projektanta</span>
            <p class="expert-tip-text">
                &#8222;Gdy inwestorzy pytają mnie o to, ile ostatecznie wyniesie ich <strong>cena za metr kwadratowy robocizny przy układaniu podłogówki</strong>, zawsze powtarzam jedną zasadę: patrzcie na projekt, nie na suche stawki. Najtańszy monter rzucający rurę 'na oko&#8217; z reguły pomija koszty dylatacji przyściennych i kluczowej próby ciśnieniowej, co kończy się aneksami do umowy. Z mojego doświadczenia jako <a href="https://projekt-ogrzewania.pl/author/admin3399/">głównego projektanta instalacji</a> wynika, że rzetelne obliczenia pozwalają zoptymalizować rozstaw rur, co często redukuje ostateczne koszty wykonawcze o 10–15%, a przede wszystkim daje gwarancję, że wylewka nie popęka po odpaleniu ogrzewania.&#8221;
            </p>
            <span class="expert-tip-signature">— Robert Kucharski, CEO &#038; Główny Projektant Projekt-Ogrzewania.pl</span>
        </div>
    </div>

    <noscript>
        <div style="padding: 20px; background: #fff7ed; border-radius: 20px; margin-top: 20px; font-family: sans-serif; border: 1px solid #fdba74;">
            <p style="font-size: 14px; font-weight: bold; color: #0f172a;">Rekomendacja inżynierska Roberta Kucharskiego:</p>
            <p style="font-size: 14px; color: #475569;">Prawidłowa cena robocizny za m² musi wynikać z projektu. Montaż &#8222;na oko&#8221; i najtańsze wyceny to ryzyko braku dylatacji i prób szczelności. Projekt pozwala oszczędzić 10-15% na kosztach materiałów i robociźnie instalatora.</p>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('expert-tip-pricing');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 20px; width: 100%; border: 2px solid #dc2626;">
                    <span style="font-size: 32px; margin-bottom: 15px; display: block;">🔒</span>
                    <div style="font-size: 20px; font-weight: bold; margin-bottom: 10px;">Moduł ekspercki chroniony autorsko</div>
                    <p style="font-size: 14px; color: #7f1d1d; margin: 0;">Osobista rekomendacja ekspercka Roberta Kucharskiego jest własnością serwisu Projekt-Ogrzewania.pl i została skopiowana nielegalnie.</p>
                </div>
            `;
            container.style.borderLeft = 'none';
            container.style.background = 'transparent';
            container.style.padding = '0';
            container.style.boxShadow = 'none';
        }
    }
});
</script>



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



<style>
:root {
    --primary: #0f172a;
    --accent: #ea580c; 
    --accent-hover: #c2410c;
    --success: #16a34a;
    --bg-light: #fff7ed; 
    --border-color: #fdba74;
    --card-bg: #ffffff;
    --text-muted: #64748b;
}

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

/* Sekcja Nagłówka i Steppera */
.calc-intro-section {
    padding: 40px 50px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
    border-bottom: 1px solid var(--border-color);
}

.calc-intro-section h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--primary);
    margin: 0 0 20px 0;
    line-height: 1.3;
}

.calc-intro-text {
    font-size: 16px;
    color: #475569;
    line-height: 1.6;
    margin-bottom: 25px;
}

/* Przyjazny Blok Wzoru */
.friendly-formula-box {
    background: #ffffff;
    padding: 25px;
    border-radius: 16px;
    border: 1px solid #fdba74;
    box-shadow: 0 4px 6px -1px rgba(234, 88, 12, 0.05);
    margin-bottom: 30px;
    position: relative;
    overflow: hidden;
}

.friendly-formula-box::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    height: 100%;
    width: 6px;
    background: var(--accent);
}

.friendly-formula-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--accent);
    text-transform: uppercase;
    margin-bottom: 15px;
    letter-spacing: 0.5px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.friendly-formula-math {
    font-size: 16px;
    font-weight: 700;
    color: var(--primary);
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
}

.math-badge {
    background: var(--bg-light);
    border: 1px solid #fed7aa;
    padding: 8px 14px;
    border-radius: 8px;
    color: #475569;
}

.math-badge strong {
    color: var(--primary);
    font-weight: 800;
}

.math-operator {
    color: #94a3b8;
    font-size: 20px;
}

.math-explanation {
    margin-top: 15px;
    font-size: 14px;
    color: #64748b;
    line-height: 1.6;
    border-top: 1px dashed #e2e8f0;
    padding-top: 15px;
}

/* Interaktywny Stepper */
.stepper-logic {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.step-item {
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    padding: 18px 20px;
    cursor: pointer;
    transition: all 0.3s;
    background: #fafaf9;
}

.step-item:hover {
    border-color: #fdba74;
    background: #ffffff;
}

.step-item.active {
    background: #ffffff;
    border-color: var(--accent);
    box-shadow: 0 8px 20px rgba(234, 88, 12, 0.08);
}

.step-top {
    display: flex;
    align-items: center;
    gap: 15px;
}

.step-num {
    width: 28px;
    height: 28px;
    background: #e2e8f0;
    color: #64748b;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    font-size: 13px;
    transition: all 0.3s;
}

.step-item.active .step-num { background: var(--accent); color: #fff; }

.step-title { font-weight: 700; font-size: 15px; flex: 1; color: var(--primary); }

.step-toggle-icon {
    color: #94a3b8;
    transition: transform 0.3s;
}

.step-item.active .step-toggle-icon {
    transform: rotate(180deg);
    color: var(--accent);
}

.step-body {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s ease, margin-top 0.4s;
    font-size: 14px;
    color: #475569;
    line-height: 1.6;
}

.step-item.active .step-body { max-height: 250px; margin-top: 12px; }

.step-formula-tag {
    display: inline-block;
    background: var(--bg-light);
    color: var(--accent);
    padding: 6px 12px;
    border-radius: 6px;
    font-family: 'Courier New', Courier, monospace;
    font-weight: 700;
    font-size: 13px;
    margin-top: 8px;
    border: 1px dashed #fdba74;
}

/* Sekcja Robocza Kalkulatora */
.calc-main-header { padding: 40px 50px 0 50px; background: #fff; }
.calc-main-header h3 { font-size: 22px; font-weight: 800; margin: 0; color: var(--primary); }

.calc-workspace {
    display: flex;
    flex-wrap: wrap;
    background: #ffffff;
}

.calc-inputs {
    flex: 1.2;
    min-width: 320px;
    padding: 30px 50px 40px 50px;
}

.calc-outputs {
    flex: 0.8;
    min-width: 320px;
    padding: 30px 50px 40px 50px;
    background: #fafaf9;
    border-left: 1px solid var(--border-color);
    display: flex;
    flex-direction: column;
    justify-content: center;
}

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

.input-label {
    display: flex;
    justify-content: space-between;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 12px;
    color: var(--primary);
}

.input-val-box { color: var(--accent); font-size: 16px; }

.range-input {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    background: #ffedd5;
    border-radius: 4px;
    outline: none;
}

.range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 26px;
    height: 26px;
    background: var(--accent);
    border-radius: 50%;
    cursor: pointer;
    border: 3px solid #fff;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    transition: transform 0.2s;
}

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

.selector-group { display: flex; gap: 8px; }

/* POPRAWKA KOLORU NA PRZYCISKU */
.selector-btn {
    flex: 1;
    padding: 12px;
    border-radius: 10px;
    border: 2px solid #ffedd5;
    background: #fff;
    font-size: 13px;
    font-weight: 700;
    color: var(--primary); /* Dodano wyraźny granatowy kolor */
    cursor: pointer;
    transition: 0.2s;
}

.selector-btn:hover:not(.active) {
    border-color: var(--accent);
    background: var(--bg-light);
}

.selector-btn.active { 
    background: var(--accent); 
    border-color: var(--accent); 
    color: #fff; 
}

/* Karty Wyników */
.res-card {
    background: #fff;
    padding: 18px;
    border-radius: 14px;
    border: 1px solid #e2e8f0;
    margin-bottom: 15px;
    display: flex;
    align-items: center;
    gap: 15px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.res-icon { 
    width: 44px; height: 44px; 
    background: var(--bg-light); 
    color: var(--accent); 
    border-radius: 10px; 
    display: flex; align-items: center; justify-content: center; 
    flex-shrink: 0; 
}

.res-info { display: flex; flex-direction: column; }
.res-lbl { font-size: 11px; font-weight: 700; color: #64748b; text-transform: uppercase; margin-bottom: 3px; }
.res-val { font-size: 22px; font-weight: 900; color: var(--primary); }

.total-card { background: var(--primary); border: none; padding: 25px; }
.total-card .res-icon { background: rgba(255,255,255,0.1); color: #fff; }
.total-card .res-lbl { color: #94a3b8; }
.total-card .res-val { color: #fff; font-size: 32px; }
.total-card .res-val span { color: var(--accent); font-size: 18px; }

/* CTA */
.calc-cta-footer {
    padding: 40px 50px;
    text-align: center;
    background: linear-gradient(135deg, var(--bg-light) 0%, #ffffff 100%);
    border-top: 1px solid var(--border-color);
}

.calc-cta-footer h4 { font-size: 22px; font-weight: 900; color: var(--primary); margin: 0 0 15px 0; }
.calc-cta-footer p { font-size: 15px; color: #475569; margin: 0 auto 25px auto; max-width: 600px; line-height: 1.6; }

.cta-btn {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    background: var(--accent);
    color: #fff;
    padding: 16px 32px;
    border-radius: 12px;
    font-size: 16px;
    font-weight: 800;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 1px;
    transition: 0.3s;
    box-shadow: 0 10px 20px -5px rgba(234, 88, 12, 0.4);
}

.cta-btn:hover { background: var(--accent-hover); transform: translateY(-3px); color: #fff; }

@media (max-width: 800px) {
    .calc-intro-section, .calc-main-header, .calc-inputs, .calc-outputs, .calc-cta-footer { padding: 30px 25px; }
    .calc-outputs { border-left: none; border-top: 1px solid var(--border-color); }
    .friendly-formula-math { flex-direction: column; align-items: flex-start; gap: 5px; }
    .math-operator { display: none; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Algorytm wyceny robocizny ogrzewania podłogowego 2026",
    "description": "Profesjonalny algorytm obliczania kosztów montażu podłogówki. Zestawienie krok po kroku oraz interaktywny kalkulator inżynierski.",
    "license": "https://projekt-ogrzewania.pl/",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "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" }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Inżynierski Kalkulator Robocizny Podłogówki",
    "applicationCategory": "CalculatorApplication",
    "license": "https://projekt-ogrzewania.pl/",
    "operatingSystem": "All",
    "description": "Narzędzie do precyzyjnego wyliczania kosztów wykonawczych instalacji grzewczych w oparciu o algorytm netto/brutto i współczynniki skomplikowania."
  }
]
</script>

<div class="premium-calc-container" id="main-engineer-app">
    
    <div class="calc-intro-section">
        <h2>Algorytm wyceny i kalkulacji kosztów robocizny</h2>
        <p class="calc-intro-text">Wycena instalacji to nie zgadywanka z metrażu budynku. Opieram ją zawsze o precyzyjny wzór inżynierski, który uwzględnia wszystkie zmienne układu.</p>
        
        <div class="friendly-formula-box">
            <div class="friendly-formula-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"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg>
                Wzór na ostateczny koszt
            </div>
            
            <div class="friendly-formula-math">
                <span class="math-badge"><strong>Całkowita Robocizna</strong></span> 
                <span class="math-operator">=</span> 
                <span class="math-badge">Σ (Metraż × Stawka)</span> 
                <span class="math-operator">+</span> 
                <span class="math-badge">Rozdzielacz</span> 
                <span class="math-operator">+</span> 
                <span class="math-badge">Próba ciśnieniowa</span>
            </div>
            
            <div class="math-explanation">
                <strong>Jak to czytać?</strong> Zamiast strzelać stawką w ciemno, sumujemy (Σ) koszty ułożenia pętli dla poszczególnych stref (w zależności od gęstości rur), a do tego dodajemy stałe koszty montażu rozdzielacza i wykonania udokumentowanej próby szczelności.
            </div>
        </div>

        <div class="stepper-logic">
            <div class="step-item active">
                <div class="step-top">
                    <div class="step-num">1</div>
                    <div class="step-title">Wyznaczenie powierzchni netto</div>
                    <svg class="step-toggle-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
                <div class="step-body">
                    Odejmujemy powierzchnie pod stałą zabudową, taką jak wyspy kuchenne, wanny czy szafy wnękowe. Pod nimi nie układamy rur grzewczych, więc nie płacisz za ich montaż.
                    <br><span class="step-formula-tag">A_netto = Metraż całkowity – Zabudowa</span>
                </div>
            </div>
            <div class="step-item">
                <div class="step-top">
                    <div class="step-num">2</div>
                    <div class="step-title">Obliczanie długości rur i pętli</div>
                    <svg class="step-toggle-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
                <div class="step-body">
                    Przy standardowym rozstawie 15 cm mnożymy metraż netto przez współczynnik zagęszczenia (6,7). Całość dzielimy na pętle grzewcze, z których żadna nie powinna przekraczać 85-100 mb.
                    <br><span class="step-formula-tag">Liczba pętli = (A_netto × 6,7 × 1,05) / 85 mb</span>
                </div>
            </div>
            <div class="step-item">
                <div class="step-top">
                    <div class="step-num">3</div>
                    <div class="step-title">Korekta o stopień skomplikowania</div>
                    <svg class="step-toggle-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
                <div class="step-body">
                    Jeśli na 100 m² przypada więcej niż 5 oddzielnych pomieszczeń, doliczamy współczynnik skomplikowania (1,15) za utrudniony montaż, liczne dylatacje przyścienne i ciasne podejścia.
                </div>
            </div>
        </div>
    </div>

    <div class="calc-main-header">
        <h3>Interaktywny Kalkulator Robocizny 2026</h3>
    </div>
    
    <div class="calc-workspace">
        <div class="calc-inputs">
            <div class="input-group">
                <div class="input-label"><span>Powierzchnia całkowita</span> <span class="input-val-box"><span id="lblTotal">140</span> m²</span></div>
                <input type="range" id="rngTotal" class="range-input" min="50" max="250" value="140">
            </div>
            <div class="input-group">
                <div class="input-label"><span>Powierzchnia pod zabudowę</span> <span class="input-val-box"><span id="lblBuild">15</span> m²</span></div>
                <input type="range" id="rngBuild" class="range-input" min="0" max="50" value="15">
            </div>
            <div class="input-group">
                <div class="input-label"><span>Liczba pomieszczeń</span> <span class="input-val-box"><span id="lblRooms">6</span> szt.</span></div>
                <input type="range" id="rngRooms" class="range-input" min="2" max="15" value="6">
            </div>
            <div class="input-group" style="margin-bottom: 0;">
                <div class="input-label"><span>Rozstaw rur (Większość domu)</span></div>
                <div class="selector-group" id="densityPick">
                    <button class="selector-btn" data-density="10" data-rate="42">Co 10 cm</button>
                    <button class="selector-btn active" data-density="6.7" data-rate="35">Co 15 cm</button>
                </div>
            </div>
        </div>

        <div class="calc-outputs">
            <div class="res-card">
                <div class="res-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><path d="M3 9h18"></path><path d="M9 21V9"></path></svg></div>
                <div class="res-info">
                    <span class="res-lbl">Powierzchnia Netto</span>
                    <span class="res-val" id="resNet">125 m²</span>
                </div>
            </div>
            <div class="res-card">
                <div class="res-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path></svg></div>
                <div class="res-info">
                    <span class="res-lbl">Długość rur / Obwody</span>
                    <span class="res-val" id="resPipe">879 mb / 11 szt.</span>
                </div>
            </div>
            <div class="res-card total-card">
                <div class="res-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="1" x2="12" y2="23"></line><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                <div class="res-info">
                    <span class="res-lbl">Suma za robociznę</span>
                    <span class="res-val" id="resTotal">5 675 <span>zł</span></span>
                </div>
            </div>
        </div>
    </div>

    <div class="calc-cta-footer">
        <h4>Projekt eliminuje błędy wyceny i awarie.</h4>
        <p>Brak projektu instalacji powoduje zgadywanie przepływów, zaniżanie pierwotnych wycen i późniejsze kosztowne aneksowanie umów z instalatorami. Zabezpiecz się przed nieuczciwymi wykonawcami.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="cta-btn">
            <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="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>
            Zamów Profesjonalny Projekt
        </a>
    </div>

    <noscript>
        <div style="padding: 20px 50px; background: #f8fafc; border-top: 1px solid #e2e8f0;">
            <p><strong>Zależności kosztowe:</strong> Rozstaw 15 cm to standardowa stawka rynkowa (ok. 35 zł/m²), z kolei rozstaw 10 cm, ze względu na większą gęstość i trudność układania rury, kosztuje ok. 42 zł/m².</p>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- STEPPER LOGIC ---
    const steps = document.querySelectorAll('.step-item');
    steps.forEach(s => {
        s.addEventListener('click', () => {
            steps.forEach(x => { if (x !== s) x.classList.remove('active'); });
            s.classList.toggle('active');
        });
    });

    // --- CALC LOGIC ---
    const rngT = document.getElementById('rngTotal'), rngB = document.getElementById('rngBuild'), rngR = document.getElementById('rngRooms');
    const lblT = document.getElementById('lblTotal'), lblB = document.getElementById('lblBuild'), lblR = document.getElementById('lblRooms');
    const rNet = document.getElementById('resNet'), rPipe = document.getElementById('resPipe'), rTotal = document.getElementById('resTotal');
    const densityBtns = document.querySelectorAll('#densityPick .selector-btn');

    let density = 6.7, rate = 35;

    function update() {
        let total = parseInt(rngT.value), build = parseInt(rngB.value), rooms = parseInt(rngR.value);
        
        // Zabezpieczenie przed ujemnym netto
        if(build >= total) {
            build = total - 5;
            rngB.value = build;
        }

        lblT.innerText = total; lblB.innerText = build; lblR.innerText = rooms;

        const net = total - build;
        const pipe = Math.ceil(net * density * 1.05);
        const loops = Math.ceil(pipe / 85);
        
        const complexityRatio = rooms / (total / 100);
        const complexity = complexityRatio > 5 ? 1.15 : 1.0;
        
        // Koszty = (Baza) + (Podłączenie Pętli) + (Stałe: rozdzielacz + próba 750zł)
        const totalCost = Math.round((net * rate * complexity) + (loops * 50) + 750);

        rNet.innerText = net + ' m²';
        rPipe.innerText = pipe + ' mb / ' + loops + ' szt.';
        rTotal.innerHTML = new Intl.NumberFormat('pl-PL').format(totalCost) + ' <span>zł</span>';
    }

    [rngT, rngB, rngR].forEach(el => el.addEventListener('input', update));
    
    densityBtns.forEach(btn => {
        btn.addEventListener('click', () => {
            densityBtns.forEach(b => b.classList.remove('active'));
            btn.classList.add('active');
            density = parseFloat(btn.dataset.density);
            rate = parseInt(btn.dataset.rate);
            update();
        });
    });

    update(); // Init

    // --- DOMAIN LOCK ---
    const d = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(d)) {
        document.getElementById('main-engineer-app').innerHTML = '<div style="padding: 80px 20px; text-align: center; background: #fff7ed; color: #ea580c; font-weight: 800; border-radius: 24px; font-size: 18px;">🔒 Treść chroniona prawem autorskim serwisu Projekt-Ogrzewania.pl. Prosimy o usunięcie kodu z tej domeny.</div>';
    }
});
</script>



<style>
:root {
    --cs-primary: #0f172a;
    --cs-accent: #2563eb;
    --cs-step1: #16a34a; /* Kolor zielony dla kosztorysu */
    --cs-step2: #ea580c; /* Kolor pomarańczowy dla hydrauliki */
    --cs-bg: #f8fafc;
    --cs-border: #e2e8f0;
    --cs-text: #475569;
}

.case-study-module {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--cs-border);
    overflow: hidden;
}

/* ================= HEADER I METRYCZKA ================= */
.cs-header-wrapper {
    background: var(--cs-primary);
    color: #ffffff;
    padding: 40px 50px;
    position: relative;
    overflow: hidden;
}

.cs-header-wrapper::after {
    content: '';
    position: absolute;
    top: -50px;
    right: -50px;
    width: 250px;
    height: 250px;
    background: radial-gradient(circle, rgba(37, 99, 235, 0.3) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
}

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

.cs-header-wrapper h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 25px 0;
    line-height: 1.3;
    color: #ffffff;
    position: relative;
    z-index: 2;
}

.cs-stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
    position: relative;
    z-index: 2;
}

.cs-stat-box {
    background: rgba(0, 0, 0, 0.2);
    border: 1px solid rgba(255, 255, 255, 0.1);
    padding: 15px;
    border-radius: 12px;
    backdrop-filter: blur(4px);
}

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

.cs-stat-value {
    display: block;
    font-size: 16px;
    font-weight: 900;
    color: #ffffff;
}

/* ================= OPIS WYZWANIA ================= */
.cs-content-section {
    padding: 40px 50px 30px 50px;
    background: #ffffff;
}

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

.cs-lead-text strong {
    color: var(--cs-primary);
}

.cs-lead-text a {
    color: var(--cs-accent);
    text-decoration: underline;
    font-weight: 600;
}

/* Bloki z wyliczeniami w tekscie */
.cs-calc-block {
    background: #f8fafc;
    border: 1px solid var(--cs-border);
    border-radius: 12px;
    padding: 20px;
    margin-bottom: 25px;
}

.cs-calc-block ul {
    margin: 0;
    padding-left: 20px;
    list-style-type: none;
}

.cs-calc-block li {
    margin-bottom: 10px;
    font-size: 15px;
    color: var(--cs-text);
    position: relative;
}

.cs-calc-block li::before {
    content: '→';
    position: absolute;
    left: -20px;
    color: var(--cs-accent);
    font-weight: bold;
}

.cs-calc-block li strong { color: var(--cs-primary); }

.cs-calc-highlight {
    background: #eff6ff;
    padding: 15px;
    border-radius: 8px;
    margin-top: 15px;
    border-left: 4px solid var(--cs-accent);
    font-size: 14px;
    color: #1e3a8a;
    font-weight: 600;
}

.cs-author-box {
    background: #f0f9ff;
    border-left: 4px solid var(--cs-accent);
    padding: 15px 20px;
    border-radius: 0 12px 12px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 10px;
}

.cs-author-photo {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid #ffffff;
    box-shadow: 0 4px 10px rgba(37, 99, 235, 0.2);
    flex-shrink: 0;
}

.cs-author-box p {
    margin: 0;
    font-size: 14px;
    color: #1e3a8a;
    line-height: 1.6;
}

/* ================= INTERAKTYWNE WYZWANIE (SPLIT CARDS) ================= */
.cs-interactive-section {
    padding: 0 50px 40px 50px;
}

.cs-split-container {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.cs-split-card {
    border-radius: 16px;
    padding: 25px;
    border: 2px solid var(--cs-border);
    cursor: pointer;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
    background: #ffffff;
    display: flex;
    flex-direction: column;
}

.cs-split-card:not(.active) {
    opacity: 0.7;
    transform: scale(0.98);
}

.cs-split-card.step1.active {
    border-color: var(--cs-step1);
    background: #f0fdf4;
    box-shadow: 0 10px 25px rgba(22, 163, 74, 0.1);
    opacity: 1;
    transform: scale(1);
}

.cs-split-card.step2.active {
    border-color: var(--cs-step2);
    background: #fff7ed;
    box-shadow: 0 10px 25px rgba(234, 88, 12, 0.1);
    opacity: 1;
    transform: scale(1);
}

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

.cs-card-icon {
    font-size: 28px;
}

.cs-card-title {
    font-size: 18px;
    font-weight: 900;
    color: var(--cs-primary);
    margin: 0;
}

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

.cs-card-solution {
    margin-top: 15px;
    padding-top: 15px;
    border-top: 1px dashed rgba(0,0,0,0.1);
    font-size: 14px;
    line-height: 1.6;
    display: none;
}

.cs-split-card.step1 .cs-card-solution { color: #14532d; }
.cs-split-card.step2 .cs-card-solution { color: #7c2d12; }

.cs-card-solution ul {
    margin: 0;
    padding-left: 20px;
    list-style-type: square;
}

.cs-card-solution li { margin-bottom: 8px; }
.cs-card-solution code { font-weight: 800; font-family: 'Inter', sans-serif; background: rgba(255,255,255,0.5); padding: 2px 6px; border-radius: 4px;}

.cs-split-card.active .cs-card-solution {
    display: block;
    animation: csFadeIn 0.4s ease forwards;
}

/* ================= CTA ================= */
.cs-cta-box {
    background: linear-gradient(135deg, #f8fafc 0%, #ffffff 100%);
    padding: 35px 50px;
    text-align: center;
    border-top: 1px solid var(--cs-border);
}

.cs-cta-box h4 {
    font-size: 20px;
    font-weight: 900;
    color: var(--cs-primary);
    margin: 0 0 10px 0;
}

.cs-cta-box p {
    font-size: 15px;
    color: #475569;
    margin: 0 auto 20px auto;
    max-width: 600px;
}

.cs-cta-button {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: var(--cs-accent);
    color: #ffffff;
    padding: 16px 32px;
    border-radius: 12px;
    font-size: 16px;
    font-weight: 800;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 1px;
    transition: all 0.3s;
    box-shadow: 0 10px 20px -5px rgba(37, 99, 235, 0.4);
}

.cs-cta-button:hover {
    background: #1e3a8a;
    transform: translateY(-3px);
    box-shadow: 0 15px 25px -5px rgba(37, 99, 235, 0.5);
    color: #ffffff;
}

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

@media (max-width: 768px) {
    .cs-header-wrapper { padding: 35px 25px; }
    .cs-stats-grid { grid-template-columns: 1fr 1fr; }
    .cs-content-section { padding: 30px 25px 20px 25px; }
    .cs-interactive-section { padding: 0 25px 30px 25px; }
    .cs-cta-box { padding: 30px 25px; }
    .cs-split-container { grid-template-columns: 1fr; }
}
</style>

<div class="case-study-module" id="app-calc-case-study">

    <script type="application/ld+json">
    [
      {
        "@context": "https://schema.org",
        "@type": "WebApplication",
        "name": "Kalkulacja Robocizny i Przepływów: Studium Przypadku",
        "description": "Szczegółowa analiza kosztów robocizny ogrzewania podłogowego oraz inżynieryjne wyliczenia nastaw rotametrów dla domu o powierzchni 140 m².",
        "applicationCategory": "EducationalApplication",
        "operatingSystem": "All",
        "url": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/",
        "license": "https://projekt-ogrzewania.pl/",
        "creator": {
          "@type": "Person",
          "name": "Robert Kucharski",
          "sameAs": [
            "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
            "https://www.linkedin.com/in/robert-kucharski-38069b48/"
          ]
        },
        "featureList": [
          "Wycena robocizny w podziale na strefy grzewcze",
          "Obliczenia błędów wycen zryczałtowanych",
          "Inżynierskie obliczenia przepływu i nastawy rotametrów"
        ]
      },
      {
        "@context": "https://schema.org",
        "@type": "Dataset",
        "name": "Realne dane z projektu instalacji (Luty 2026)",
        "description": "Zestawienie parametrów projektowych, finansowych i hydraulicznych użytych do analizy błędów wykonawczych.",
        "license": "https://projekt-ogrzewania.pl/",
        "variableMeasured": [
          {
            "@type": "PropertyValue",
            "name": "Koszt całkowity (rzeczywisty)",
            "value": "10 524 PLN"
          },
          {
            "@type": "PropertyValue",
            "name": "Błąd wyceny ryczałtowej (65 zł/m²)",
            "value": "-13.5%"
          },
          {
            "@type": "PropertyValue",
            "name": "Moc instalacji (Q)",
            "value": "11.5 kW"
          },
          {
            "@type": "PropertyValue",
            "name": "Nastawa rotametru (na pętlę)",
            "value": "3.3 l/min"
          }
        ],
        "creator": {
          "@type": "Person",
          "name": "Robert Kucharski"
        }
      }
    ]
    </script>

    <div class="cs-header-wrapper">
        <div class="cs-badge">Kalkulacja z Projektu</div>
        <h2>Jak policzyć całkowity koszt robocizny ogrzewania podłogowego</h2>
        <div class="cs-stats-grid">
            <div class="cs-stat-box">
                <span class="cs-stat-label">Dom pow. netto</span>
                <span class="cs-stat-value">140 m²</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Koszt całkowity</span>
                <span class="cs-stat-value">10 524 zł</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Błąd wyceny &#8222;na oko&#8221;</span>
                <span class="cs-stat-value" style="color: #fca5a5;">-13,5%</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Nastawa rotametru</span>
                <span class="cs-stat-value">3,3 l/min</span>
            </div>
        </div>
    </div>

    <div class="cs-content-section">
        <p class="cs-lead-text">Całkowity koszt robocizny liczysz <strong>z projektu, a nie z metrażu budynku</strong>. Wykonawcy, którzy dają jedną uśrednioną cenę, niemal zawsze dopisują później aneksy do umowy. Poniżej przedstawiam konkretny przykład z lutego 2026 roku (Dom Pana Marka), oparty na autorskim wzorze: <strong>K_rob = Σ (A_i × C_Ti) + K_rozdz + K_proba</strong>.</p>
        
        <div class="cs-calc-block">
            <ul>
                <li><strong>A1 (Strefy otwarte):</strong> 92 m², rozstaw 150 mm, stawka 65 zł/m² <strong>→ 5 980 zł</strong></li>
                <li><strong>A2 (Łazienki, okna):</strong> 28 m², rozstaw zagęszczony 100 mm, stawka 78 zł/m² <strong>→ 2 184 zł</strong></li>
                <li><strong>A3 (Sypialnie):</strong> 20 m², rozstaw 200 mm, stawka 58 zł/m² <strong>→ 1 160 zł</strong></li>
                <li><strong>K_rozdz (Rozdzielacze):</strong> 2 szt. × 450 zł <strong>→ 900 zł</strong></li>
                <li><strong>K_proba (Szczelność):</strong> Próba 6 bar + protokół <strong>→ 300 zł</strong></li>
            </ul>
            <div class="cs-calc-highlight">
                Razem: 10 524 zł, czyli średnio 75,2 zł/m². Gdyby instalator przyjął ryczałtem &#8222;atrakcyjne&#8221; 65 zł/m² dla całości, wyceniłby to na 9 100 zł. Różnica? Ponad 13% błędu, który odbiłby się na jakości materiałów lub aneksach.
            </div>
        </div>

        <div class="cs-author-box">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="cs-author-photo" loading="lazy">
            <p><strong>Robert Kucharski:</strong> &#8222;Rozkładamy koszty i hydraulikę na czynniki pierwsze. Kliknij w karty poniżej, aby zobaczyć jak krok po kroku tworzymy algorytm wyceny i – co najważniejsze – jak liczymy przepływy do precyzyjnego ustawienia pętli.&#8221;</p>
        </div>
    </div>

    <div class="cs-interactive-section">
        <div class="cs-split-container">
            
            <div class="cs-split-card step1 active" id="cs-btn-step1">
                <div class="cs-card-header">
                    <span class="cs-card-icon">📋</span>
                    <h3 class="cs-card-title">7 Kroków Kalkulacji</h3>
                </div>
                <p class="cs-card-desc">Nie zgaduj. Policz w 7 krokach, dokładnie tak, jak liczę to w biurze dla każdego zlecenia.</p>
                <div class="cs-card-solution">
                    <ul>
                        <li><strong>Krok 1:</strong> Policz zapotrzebowanie. <code>Q_obl = Q_OZC × 1,15</code>. Dla 140 m² po OZC Q = 9,8 kW → 11,27 kW.</li>
                        <li><strong>Krok 2:</strong> Podziel na strefy. Salon 35 m², strata 2450 W → wymóg 70 W/m².</li>
                        <li><strong>Krok 3:</strong> Dobierz rozstaw. Z tabeli dla q 70 W/m² i ΔϑH 12K → rozstaw 150 mm.</li>
                        <li><strong>Krok 4:</strong> Policz długość rury. <code>L = A / T × 1,1</code>. Dla salonu to 257 mb.</li>
                        <li><strong>Krok 5:</strong> Podziel na pętle. Maksimum to 110 m → 257 / 110 = 2,34 → czyli 3 pętle.</li>
                        <li><strong>Krok 6:</strong> Przypisz stawkę rynkową. Dla rozstawu 150 mm (65 zł/m²) salon kosztuje nas 2 275 zł.</li>
                        <li><strong>Krok 7:</strong> Dodaj stałe. Rozdzielacz (450 zł), dojazd (120 zł), próba (300 zł). Suma to zwykle widełki 9 500–12 500 zł.</li>
                    </ul>
                </div>
            </div>

            <div class="cs-split-card step2" id="cs-btn-step2">
                <div class="cs-card-header">
                    <span class="cs-card-icon">💧</span>
                    <h3 class="cs-card-title">Obliczenia Przepływów</h3>
                </div>
                <p class="cs-card-desc">Trzecie wyliczenie z projektu, które zawsze robię. To parametr, który monter ustawia w ramach robocizny, a bez projektu – po prostu zgaduje.</p>
                <div class="cs-card-solution">
                    <p style="margin-top:0;">Podstawą prawidłowo ułożonej podłogówki jest ustawienie <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrów na rozdzielaczu</a>.</p>
                    <ul>
                        <li><strong>Krok 1: Wzór bazowy.</strong> Przepływ masowy liczymy ze wzoru: <code>m = Q / (1,163 × ΔT)</code></li>
                        <li><strong>Krok 2: Całkowity zład.</strong> Przy mocy instalacji Q = 11,5 kW i zakładanym spadku temperatury ΔT = 5 K, przepływ całkowity wynosi: 11,5 / (1,163 × 5) = <strong>1,98 m³/h</strong>.</li>
                        <li><strong>Krok 3: Przepływ na rotametrze.</strong> Otrzymany wynik dzielimy na 10 pętli w domu. Daje to 0,198 m³/h na pętlę.</li>
                        <li><strong>Wynik:</strong> Po przeliczeniu jednostek, monter musi ustawić rotametr na około <strong>3,3 l/min</strong>. Dzięki temu <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa</a> precyzyjnie zasili każdy układ.</li>
                    </ul>
                </div>
            </div>

        </div>
    </div>

    <div class="cs-cta-box">
        <h4>Nie ryzykuj błędów monterskich i zaniżonych wycen.</h4>
        <p>Projekt ogrzewania podłogowego chroni Cię przed instalatorami, którzy narzucają jedną cenę za m², a potem domagają się dopłat. Zyskujesz pewność co do ilości rury, nastaw przepływu i wielkości rozdzielaczy.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="cs-cta-button">
            <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="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>
            Zamów Profesjonalny Projekt
        </a>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Zabezpieczenie domenowe (bez tagów Hx)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('app-calc-case-study');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px 25px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;">
                    <span style="font-size: 40px; display: block; margin-bottom: 10px;">🔒</span>
                    <div style="margin: 0 0 10px 0; font-size: 20px; font-weight: bold;">Studium Przypadku Chronione</div>
                    <p style="font-size: 14px; margin-bottom: 15px;">Ten panel informacyjny to autorska własność Projekt-Ogrzewania.pl.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 10px 20px; background: #dc2626; color: white; text-decoration: none; border-radius: 8px; font-weight: bold; font-size: 13px;">ZOBACZ ORYGINAŁ</a>
                </div>
            `;
            return;
        }
    }

    // Logika przełączania kart Case Study
    const cardStep1 = document.getElementById('cs-btn-step1');
    const cardStep2 = document.getElementById('cs-btn-step2');

    function toggleCards(activeCard, inactiveCard) {
        activeCard.classList.add('active');
        inactiveCard.classList.remove('active');
    }

    if (cardStep1 && cardStep2) {
        cardStep1.addEventListener('click', () => toggleCards(cardStep1, cardStep2));
        cardStep2.addEventListener('click', () => toggleCards(cardStep2, cardStep1));
    }
});
</script>



<style>
:root {
    --ppm-primary: #0f172a;
    --ppm-accent: #ea580c;
    --ppm-accent-hover: #c2410c;
    --ppm-bg: #ffffff;
    --ppm-light: #fff7ed;
    --ppm-border: #fdba74;
    --ppm-text: #475569;
    --ppm-danger: #ef4444;
    --ppm-success: #10b981;
}

.premium-project-module {
    max-width: 900px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--ppm-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(234, 88, 12, 0.1);
    border: 1px solid var(--ppm-border);
    overflow: hidden;
}

/* --- HEADER I TREŚĆ --- */
.ppm-header-area {
    padding: 40px 45px 30px 45px;
    background: linear-gradient(to bottom, #ffffff, var(--ppm-light));
    border-bottom: 1px solid var(--ppm-border);
}

.ppm-header-area h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--ppm-primary);
    margin: 0 0 20px 0;
    line-height: 1.3;
}

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

.ppm-text-content strong { color: var(--ppm-primary); }
.ppm-text-content a { color: var(--ppm-accent); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }

/* --- SEKCJA INTERAKTYWNA (Aplikacja) --- */
.ppm-app-section {
    padding: 35px 45px;
    background: #ffffff;
}

.ppm-app-section h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--ppm-primary);
    margin: 0 0 25px 0;
    text-align: center;
}

/* Suwak (Slider) */
.ppm-slider-container {
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 16px;
    padding: 25px;
    margin-bottom: 30px;
}

.ppm-slider-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
}

.ppm-slider-header h4 {
    margin: 0;
    font-size: 16px;
    font-weight: 700;
    color: var(--ppm-primary);
}

.ppm-slider-value {
    font-size: 22px;
    font-weight: 900;
    color: var(--ppm-accent);
}

.ppm-range-input {
    width: 100%;
    accent-color: var(--ppm-accent);
    cursor: pointer;
}

.ppm-result-box {
    margin-top: 20px;
    background: #eff6ff;
    border-left: 4px solid #3b82f6;
    padding: 15px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    gap: 15px;
}

.ppm-result-box svg { flex-shrink: 0; color: #3b82f6; }
.ppm-result-text { font-size: 14px; color: #1e3a8a; line-height: 1.5; margin: 0; }
.ppm-result-text strong { font-size: 18px; display: block; margin-top: 5px; }

/* Przełącznik (Toggle) */
.ppm-toggle-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 20px;
}

.ppm-toggle-switch {
    display: inline-flex;
    background: #e2e8f0;
    border-radius: 50px;
    padding: 4px;
    position: relative;
    cursor: pointer;
    user-select: none;
}

.ppm-toggle-option {
    padding: 10px 24px;
    font-size: 14px;
    font-weight: 700;
    color: #64748b;
    position: relative;
    z-index: 2;
    transition: color 0.3s;
}

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

.ppm-toggle-container.active-right .ppm-toggle-slider {
    transform: translateX(100%);
}

.ppm-toggle-container.active-right .ppm-toggle-option:nth-child(1) { color: #64748b; }
.ppm-toggle-container.active-right .ppm-toggle-option:nth-child(2) { color: var(--ppm-primary); }
.ppm-toggle-container:not(.active-right) .ppm-toggle-option:nth-child(1) { color: var(--ppm-primary); }

.ppm-scenario-card {
    width: 100%;
    padding: 20px;
    border-radius: 16px;
    border: 2px solid transparent;
    transition: all 0.3s;
}

.ppm-scenario-bad {
    background: #fef2f2;
    border-color: #fca5a5;
    display: block;
}

.ppm-scenario-good {
    background: #ecfdf5;
    border-color: #6ee7b7;
    display: none;
}

.ppm-toggle-container.active-right .ppm-scenario-bad { display: none; }
.ppm-toggle-container.active-right .ppm-scenario-good { display: block; animation: fadeIn 0.4s; }

.ppm-scenario-card h4 { margin: 0 0 10px 0; font-size: 16px; display: flex; align-items: center; gap: 8px; }
.ppm-scenario-bad h4 { color: #991b1b; }
.ppm-scenario-good h4 { color: #065f46; }

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

/* --- CTA --- */
.ppm-cta-section {
    background: var(--ppm-primary);
    padding: 40px 45px;
    text-align: center;
}

.ppm-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--ppm-accent);
    color: #ffffff;
    padding: 16px 36px;
    border-radius: 12px;
    font-size: 16px;
    font-weight: 800;
    text-decoration: none;
    text-transform: uppercase;
    transition: all 0.3s;
    box-shadow: 0 10px 20px rgba(234, 88, 12, 0.3);
}

.ppm-btn:hover {
    background: var(--ppm-accent-hover);
    transform: translateY(-3px);
    box-shadow: 0 15px 25px rgba(234, 88, 12, 0.4);
}

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

@media (max-width: 768px) {
    .ppm-header-area, .ppm-app-section, .ppm-cta-section { padding: 30px 25px; }
    .ppm-toggle-switch { width: 100%; display: flex; }
    .ppm-toggle-option { flex: 1; text-align: center; padding: 10px 0; }
    .ppm-btn { width: 100%; padding: 16px 20px; font-size: 14px; }
}
</style>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Article",
      "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#article-costs",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/"
      },
      "mainEntity": {
        "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#app-ozc-simulator"
      },
      "headline": "Jak projekt ogrzewania podłogowego wpływa na realne koszty?",
      "description": "Profesjonalny projekt OZC redukuje koszty robocizny o 10-15%. Kalkulator doboru pompy obiegowej i wytyczne dotyczące dylatacji (norma PN-EN 1264).",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "keywords": [
        "projekt ogrzewania podłogowego koszty",
        "obliczenia OZC podłogówka",
        "dylatacje ogrzewanie podłogowe norma",
        "dobór pompy obiegowej podłogówka",
        "oszczędności na robociźnie z projektem"
      ],
      "author": {
        "@type": "Person",
        "name": "Robert Kucharski",
        "url": "https://projekt-ogrzewania.pl/author/admin3399/",
        "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-03",
      "dateModified": "2026-05-03",
      "about": [
        { "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#dataset-ozc" },
        { "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#app-ozc-simulator" }
      ]
    },
    {
      "@type": "Dataset",
      "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#dataset-ozc",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#article-costs" },
      "name": "Wpływ obliczeń OZC i dylatacji na koszty instalacji podłogowej",
      "description": "Zestawienie twardych danych inżynieryjnych: redukcja kosztów, wymiary pól dylatacyjnych i wymagania przepływu masowego.",
      "measurementTechnique": "Analiza normy PN-EN 1264 oraz inżynierskie obliczenia hydrauliczne dla pompy obiegowej (wzór Q / 1.163 * ΔT)",
      "license": "https://projekt-ogrzewania.pl/",
      "creator": {
        "@type": "Person",
        "name": "Robert Kucharski"
      },
      "variableMeasured": [
        { "@type": "PropertyValue", "name": "Redukcja kosztów robocizny (z projektem OZC)", "value": "10-15%" },
        { "@type": "PropertyValue", "name": "Maksymalne pole bez dylatacji", "value": "40 m² (lub bok 8 m)" },
        { "@type": "PropertyValue", "name": "Wymagany przepływ (dla 11.5 kW i ΔT 5K)", "value": "1.98 m³/h" }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#app-ozc-simulator",
      "name": "Symulator Oszczędności i Przepływów Hydraulicznych",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "All",
      "browserRequirements": "Requires JavaScript",
      "description": "Interaktywne narzędzie obliczające wymagany przepływ na pompie obiegowej na podstawie mocy budynku oraz obrazujące ryzyko braku dylatacji.",
      "url": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/"
    }
  ]
}
</script>

<div class="premium-project-module" id="ppm-main-app">
    
    <div class="ppm-header-area">
        <h2>Jak projekt ogrzewania podłogowego wpływa na realne koszty?</h2>
        <p class="ppm-text-content">Profesjonalny projekt wykonany w oparciu o dokładne <a href="https://projekt-ogrzewania.pl/ozc-obliczenie-zapotrzebowania-cieplnego-budynku/">obliczenia OZC</a> (Obciążenie Cieplne Budynku) pozwala <strong>zredukować koszty robocizny o 10–15%</strong> dzięki całkowitemu wyeliminowaniu błędów instalacyjnych na budowie.</p>
        
        <p class="ppm-text-content">Projektant z uprawnieniami precyzyjnie wyznacza miejsca przejść. Zgodnie z normą budowlaną, pole grzejne bez dylatacji <strong>nie powinno przekraczać 40 m² lub długości boku 8 m</strong>. Instalator pracujący bez projektu nierzadko układa rury „na oko”, ignorując naprężenia termiczne, co ostatecznie prowadzi do pękania jastrychu i nieodwracalnych uszkodzeń drogich okładzin ceramicznych.</p>
    </div>

    <div class="ppm-app-section">
        <h3>Optymalizacja pompy i dylatacje</h3>
        
        <div class="ppm-slider-container">
            <div class="ppm-slider-header">
                <h4>Moc Twojej instalacji (Q):</h4>
                <span class="ppm-slider-value" id="ppm-power-val">11.5 kW</span>
            </div>
            <input type="range" min="4" max="25" step="0.5" value="11.5" class="ppm-range-input" id="ppm-power-slider">
            
            <div class="ppm-result-box">
                <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20"></path><path d="m17 5-5-3-5 3"></path><path d="m19 19-7 3-7-3"></path><path d="M2 12h20"></path></svg>
                <p class="ppm-result-text">
                    Wymagany przepływ pompy obiegowej (przy ΔT = 5K):
                    <strong id="ppm-flow-result">1.98 m³/h</strong>
                </p>
            </div>
            <p style="font-size: 13px; color: #64748b; margin: 15px 0 0 0;">Znajomość tej wartości z projektu zapobiega przewymiarowaniu pompy i nadmiernemu zużyciu prądu.</p>
        </div>

        <div class="ppm-toggle-container" id="ppm-scenario-toggle">
            <div class="ppm-toggle-switch">
                <div class="ppm-toggle-slider"></div>
                <div class="ppm-toggle-option">Montaż &#8222;Na Oko&#8221;</div>
                <div class="ppm-toggle-option">Profesjonalny Projekt OZC</div>
            </div>

            <div class="ppm-scenario-card ppm-scenario-bad">
                <h4>
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                    Wysokie ryzyko błędów
                </h4>
                <p>Brak wyliczeń hydraulicznych powoduje losowy dobór pompy (często za dużej). Pętle układane są bez poszanowania normy 40 m² / 8 mb, co skutkuje brakiem dylatacji w kluczowych miejscach wylewki. <strong>Efekt:</strong> Wyższe koszty materiału, pękające płytki i brak gwarancji na posadzkę.</p>
            </div>

            <div class="ppm-scenario-card ppm-scenario-good">
                <h4>
                    <svg width="20" height="20" 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>
                    Oszczędność i Bezpieczeństwo
                </h4>
                <p>Zmniejszenie kosztów robocizny o <strong>10–15%</strong>. Instalator otrzymuje gotowy rzut z wyznaczonymi strefami dylatacyjnymi. Precyzyjnie dobrana pompa obiegowa pracuje na optymalnych krzywych charakterystyki, co drastycznie obniża rachunki za prąd w skali całego roku.</p>
            </div>
        </div>

    </div>

    <div class="ppm-cta-section">
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="ppm-btn">
            <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="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>
            Zamów Projekt z OZC i zredukuj koszty
        </a>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- Ochrona Domeny (Brak tagów Hx) ---
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        document.getElementById('ppm-main-app').innerHTML = `
            <div style="padding: 40px 25px; text-align: center; background: #fee2e2; border: 2px solid #dc2626; border-radius: 24px;">
                <div style="font-size: 32px; margin-bottom: 15px;">🔒</div>
                <div style="font-size: 18px; font-weight: bold; color: #dc2626; margin-bottom: 10px;">Aplikacja chroniona prawami autorskimi</div>
                <div style="font-size: 14px; color: #7f1d1d; margin-bottom: 15px;">Ten interaktywny symulator jest własnością Projekt-Ogrzewania.pl.</div>
                <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 10px 20px; background: #dc2626; color: white; text-decoration: none; border-radius: 8px; font-weight: bold; font-size: 13px;">ZOBACZ ORYGINAŁ</a>
            </div>
        `;
        return;
    }

    // --- Logika Suwaka (Obliczenia Hydrauliczne) ---
    const powerSlider = document.getElementById('ppm-power-slider');
    const powerValDisplay = document.getElementById('ppm-power-val');
    const flowResultDisplay = document.getElementById('ppm-flow-result');
    
    // Wzór: m = Q / (c_w * dT), gdzie c_w dla wody to ok. 1.163 kWh/(m3*K), zakładamy dT = 5K
    // m = Q / (1.163 * 5) = Q / 5.815
    const calculateFlow = (powerKw) => {
        return (powerKw / 5.815).toFixed(2);
    };

    powerSlider.addEventListener('input', (e) => {
        const power = parseFloat(e.target.value);
        powerValDisplay.textContent = power.toFixed(1) + ' kW';
        flowResultDisplay.textContent = calculateFlow(power) + ' m³/h';
    });

    // --- Logika Przełącznika Scenariuszy ---
    const toggleContainer = document.getElementById('ppm-scenario-toggle');
    const toggleSwitch = toggleContainer.querySelector('.ppm-toggle-switch');
    
    toggleSwitch.addEventListener('click', () => {
        toggleContainer.classList.toggle('active-right');
    });
});
</script>



<style>
:root {
    --faq-primary: #0f172a;
    --faq-accent: #ea580c;
    --faq-bg: #ffffff;
    --faq-light: #fff7ed;
    --faq-border: #e2e8f0;
    --faq-text: #475569;
}

.premium-faq-module {
    max-width: 900px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--faq-bg);
    border-radius: 24px;
    box-shadow: 0 15px 35px -10px rgba(234, 88, 12, 0.08);
    border: 1px solid #fdba74;
    overflow: hidden;
}

.faq-header-area {
    padding: 40px 45px 30px 45px;
    background: linear-gradient(to bottom, #ffffff, var(--faq-light));
    border-bottom: 1px solid #fdba74;
    text-align: center;
}

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

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

.faq-accordion-container {
    padding: 30px 45px 40px 45px;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.faq-item {
    border: 2px solid var(--faq-border);
    border-radius: 16px;
    background: #ffffff;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    overflow: hidden;
}

.faq-item:hover {
    border-color: #fdba74;
    box-shadow: 0 5px 15px rgba(234, 88, 12, 0.05);
}

.faq-item.active {
    border-color: var(--faq-accent);
    background: #fffcf9;
}

.faq-question {
    padding: 20px 25px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    user-select: none;
    gap: 15px;
}

.faq-question h3 {
    font-size: 16px;
    font-weight: 800;
    color: var(--faq-primary);
    margin: 0;
    line-height: 1.5;
    flex: 1;
}

/* Ikona Toggle (Plus / Minus) */
.faq-toggle-icon {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #f1f5f9;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: all 0.3s ease;
    color: var(--faq-primary);
}

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

.faq-answer {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    transition: all 0.4s ease-out;
    padding: 0 25px;
}

.faq-item.active .faq-answer {
    max-height: 350px;
    opacity: 1;
    padding: 0 25px 25px 25px;
}

.faq-answer p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--faq-text);
    border-top: 1px dashed #e2e8f0;
    padding-top: 20px;
}

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

@media (max-width: 768px) {
    .faq-header-area { padding: 35px 25px 25px 25px; }
    .faq-accordion-container { padding: 20px 25px 35px 25px; }
    .faq-question { padding: 18px 20px; }
    .faq-question h3 { font-size: 15px; }
    .faq-item.active .faq-answer { padding: 0 20px 20px 20px; }
}
</style>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Article",
      "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#article",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/"
      },
      "headline": "Aktualne Ceny Robocizny Ogrzewania Podłogowego – FAQ",
      "description": "Najczęstsze pytania inwestorów dotyczące wycen instalacji HVAC. Sprawdź koszty montażu rozdzielaczy i styropianu w 2026 roku.",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "keywords": [
        "podłogówka cena za m2 robocizny",
        "koszt ogrzewania podłogowego",
        "ile kosztuje podłogówka",
        "robocizna podłogówki 2026",
        "wycena instalacji grzewczej"
      ],
      "author": {
        "@type": "Person",
        "name": "Robert Kucharski",
        "url": "https://projekt-ogrzewania.pl/author/admin3399/",
        "sameAs": [
          "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
          "https://www.linkedin.com/in/robert-kucharski-38069b48/"
        ]
      },
      "publisher": {
        "@type": "Organization",
        "name": "Projekt-Ogrzewania.pl",
        "logo": {
          "@type": "ImageObject",
          "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
        }
      },
      "datePublished": "2025-01-07",
      "dateModified": "2026-05-03"
    },
    {
      "@type": "Dataset",
      "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#dataset-faq",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#article" },
      "name": "Zestawienie kosztów dodatkowych HVAC 2026",
      "description": "Szczegółowa baza wiedzy o stawkach robocizny za montaż rozdzielaczy i izolacji.",
      "measurementTechnique": "Analiza rynkowa ofert firm instalacyjnych oraz audyt rzeczywistych realizacji inwestycji w Polsce w 2026 roku",
      "license": "https://projekt-ogrzewania.pl/",
      "creator": { "@id": "https://projekt-ogrzewania.pl/author/admin3399/" },
      "variableMeasured": [
        { "@type": "PropertyValue", "name": "Montaż rozdzielacza", "value": "400-700 PLN" },
        { "@type": "PropertyValue", "name": "Stawka robocizny ze styropianem", "value": "32-45 PLN/m²" }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#faq-section",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Czy cena robocizny podłogówki obejmuje ułożenie styropianu?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Tak, w profesjonalnych ofertach stawka od 32 do 45 zł/m² obejmuje rozłożenie izolacji EPS, folii systemowej oraz rur."
          }
        },
        {
          "@type": "Question",
          "name": "Ile kosztuje robocizna za montaż rozdzielacza?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Montaż i podłączenie rozdzielacza to koszt od 400 do 700 zł."
          }
        },
        {
          "@type": "Question",
          "name": "Czy w 2026 roku cena robocizny różni się w zależności od województwa?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Tak, analizy rynku instalacyjnego pokazują, że różnice regionalne wynoszą do 20%. Najwyższe stawki dominują w województwach mazowieckim, wielkopolskim i dolnośląskim, a niższe np. w podkarpackim czy lubelskim."
          }
        },
        {
          "@type": "Question",
          "name": "Jak przygotowanie podłoża wpływa na koszt ułożenia m² podłogówki?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nierówna wylewka chudziakowa wymusza dodatkowe prace. Konieczność wcześniejszego wylania warstwy samopoziomującej czy szlifowania podłoża podnosi stawkę robocizny o średnio 10-15 zł na metrze kwadratowym."
          }
        },
        {
          "@type": "Question",
          "name": "Czy robocizna obejmuje wykonanie próby ciśnieniowej instalacji?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Tak, certyfikowana ekipa instalacyjna zawsze wlicza próbę szczelności (pod ciśnieniem) w standardową stawkę. Jest to wymóg normy PN-EN 1264 i podstawa gwarancji."
          }
        }
      ]
    }
  ]
}
</script>

<div class="premium-faq-module" id="faq-app-container">
    <div class="faq-header-area">
        <h2>FAQ – Najczęściej zadawane pytania</h2>
        <p>Rozwiewamy wątpliwości dotyczące wycen i ukrytych kosztów inwestycji.</p>
    </div>

    <div class="faq-accordion-container">
        <div class="faq-item">
            <div class="faq-question">
                <h3>Czy cena robocizny podłogówki obejmuje ułożenie styropianu?</h3>
                <div class="faq-toggle-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </div>
            <div class="faq-answer">
                <p>Tak, rzetelna stawka robocizny obejmuje <strong>rozłożenie izolacji termicznej (EPS)</strong>, folii systemowej oraz właściwy montaż rur. Unikaj ekip, które doliczają każdą warstwę styropianu osobno.</p>
            </div>
        </div>

        <div class="faq-item">
            <div class="faq-question">
                <h3>Ile kosztuje robocizna za montaż rozdzielacza do podłogówki?</h3>
                <div class="faq-toggle-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </div>
            <div class="faq-answer">
                <p>Montaż, usadowienie szafki i podłączenie jednego <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacza do podłogówki</a> to koszt rzędu <strong>od 400 do 700 zł</strong>, zależnie od liczby sekcji.</p>
            </div>
        </div>

        <div class="faq-item">
            <div class="faq-question">
                <h3>Czy w 2026 roku cena robocizny różni się w zależności od województwa?</h3>
                <div class="faq-toggle-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </div>
            <div class="faq-answer">
                <p>Tak, analizy rynku instalacyjnego pokazują, że różnice regionalne wynoszą do 20%. Najwyższe stawki wykonawcze dominują w województwach mazowieckim, wielkopolskim i dolnośląskim. Zauważalnie niższe wyceny można uzyskać od ekip działających w regionach wschodnich i południowych, np. w podkarpackim czy lubelskim, zachowując przy tym ten sam standard wykonania.</p>
            </div>
        </div>

        <div class="faq-item">
            <div class="faq-question">
                <h3>Jak przygotowanie podłoża wpływa na koszt ułożenia m² podłogówki?</h3>
                <div class="faq-toggle-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </div>
            <div class="faq-answer">
                <p>Nierówna wylewka chudziakowa wymusza dodatkowe prace. Konieczność wcześniejszego wylania warstwy samopoziomującej lub żmudnego docinania pierwszych warstw styropianu podnosi stawkę robocizny o średnio <strong>10 do 15 zł na metrze kwadratowym</strong>.</p>
            </div>
        </div>

        <div class="faq-item">
            <div class="faq-question">
                <h3>Czy robocizna obejmuje wykonanie próby ciśnieniowej instalacji?</h3>
                <div class="faq-toggle-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
                </div>
            </div>
            <div class="faq-answer">
                <p>Zdecydowanie tak. Zgodnie z normą PN-EN 1264, certyfikowana ekipa instalacyjna zawsze ma wliczoną próbę szczelności w standardową stawkę za m² lub w kosztorys montażu rozdzielacza. Otrzymujesz wtedy oficjalny protokół z tego procesu.</p>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowedDomains.includes(domain)) {
        document.getElementById('faq-app-container').innerHTML = '<div style="padding: 30px; text-align: center; color: red;">🔒 Treść chroniona autorsko. Projekt-Ogrzewania.pl</div>';
        return;
    }
    const faqItems = document.querySelectorAll('.faq-item');
    faqItems.forEach(item => {
        item.querySelector('.faq-question').addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            item.classList.toggle('active');
            item.querySelector('.faq-toggle-icon svg line:nth-child(1)').style.display = isActive ? 'block' : 'none';
        });
    });
});
</script>



<style>
:root {
    --cs-primary: #0f172a;
    --cs-accent: #2563eb;
    --cs-step1: #16a34a; /* Kolor zielony dla kosztorysu */
    --cs-step2: #ea580c; /* Kolor pomarańczowy dla hydrauliki */
    --cs-bg: #f8fafc;
    --cs-border: #e2e8f0;
    --cs-text: #475569;
}

.case-study-module {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--cs-border);
    overflow: hidden;
}

/* ================= HEADER I METRYCZKA ================= */
.cs-header-wrapper {
    background: var(--cs-primary);
    color: #ffffff;
    padding: 40px 50px;
    position: relative;
    overflow: hidden;
}

.cs-header-wrapper::after {
    content: '';
    position: absolute;
    top: -50px;
    right: -50px;
    width: 250px;
    height: 250px;
    background: radial-gradient(circle, rgba(37, 99, 235, 0.3) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
}

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

.cs-header-wrapper h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 25px 0;
    line-height: 1.3;
    color: #ffffff;
    position: relative;
    z-index: 2;
}

.cs-stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
    position: relative;
    z-index: 2;
}

.cs-stat-box {
    background: rgba(0, 0, 0, 0.2);
    border: 1px solid rgba(255, 255, 255, 0.1);
    padding: 15px;
    border-radius: 12px;
    backdrop-filter: blur(4px);
}

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

.cs-stat-value {
    display: block;
    font-size: 16px;
    font-weight: 900;
    color: #ffffff;
}

/* ================= OPIS WYZWANIA ================= */
.cs-content-section {
    padding: 40px 50px 30px 50px;
    background: #ffffff;
}

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

.cs-lead-text strong {
    color: var(--cs-primary);
}

.cs-lead-text a {
    color: var(--cs-accent);
    text-decoration: underline;
    font-weight: 600;
}

/* Bloki z wyliczeniami w tekscie */
.cs-calc-block {
    background: #f8fafc;
    border: 1px solid var(--cs-border);
    border-radius: 12px;
    padding: 20px;
    margin-bottom: 25px;
}

.cs-calc-block ul {
    margin: 0;
    padding-left: 20px;
    list-style-type: none;
}

.cs-calc-block li {
    margin-bottom: 10px;
    font-size: 15px;
    color: var(--cs-text);
    position: relative;
}

.cs-calc-block li::before {
    content: '→';
    position: absolute;
    left: -20px;
    color: var(--cs-accent);
    font-weight: bold;
}

.cs-calc-block li strong { color: var(--cs-primary); }

.cs-calc-highlight {
    background: #eff6ff;
    padding: 15px;
    border-radius: 8px;
    margin-top: 15px;
    border-left: 4px solid var(--cs-accent);
    font-size: 14px;
    color: #1e3a8a;
    font-weight: 600;
}

.cs-author-box {
    background: #f0f9ff;
    border-left: 4px solid var(--cs-accent);
    padding: 15px 20px;
    border-radius: 0 12px 12px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 10px;
}

.cs-author-photo {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid #ffffff;
    box-shadow: 0 4px 10px rgba(37, 99, 235, 0.2);
    flex-shrink: 0;
}

.cs-author-box p {
    margin: 0;
    font-size: 14px;
    color: #1e3a8a;
    line-height: 1.6;
}

/* ================= INTERAKTYWNE WYZWANIE (SPLIT CARDS) ================= */
.cs-interactive-section {
    padding: 0 50px 40px 50px;
}

.cs-split-container {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.cs-split-card {
    border-radius: 16px;
    padding: 25px;
    border: 2px solid var(--cs-border);
    cursor: pointer;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
    background: #ffffff;
    display: flex;
    flex-direction: column;
}

.cs-split-card:not(.active) {
    opacity: 0.7;
    transform: scale(0.98);
}

.cs-split-card.step1.active {
    border-color: var(--cs-step1);
    background: #f0fdf4;
    box-shadow: 0 10px 25px rgba(22, 163, 74, 0.1);
    opacity: 1;
    transform: scale(1);
}

.cs-split-card.step2.active {
    border-color: var(--cs-step2);
    background: #fff7ed;
    box-shadow: 0 10px 25px rgba(234, 88, 12, 0.1);
    opacity: 1;
    transform: scale(1);
}

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

.cs-card-icon {
    font-size: 28px;
}

.cs-card-title {
    font-size: 18px;
    font-weight: 900;
    color: var(--cs-primary);
    margin: 0;
}

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

.cs-card-solution {
    margin-top: 15px;
    padding-top: 15px;
    border-top: 1px dashed rgba(0,0,0,0.1);
    font-size: 14px;
    line-height: 1.6;
    display: none;
}

.cs-split-card.step1 .cs-card-solution { color: #14532d; }
.cs-split-card.step2 .cs-card-solution { color: #7c2d12; }

.cs-card-solution ul {
    margin: 0;
    padding-left: 20px;
    list-style-type: square;
}

.cs-card-solution li { margin-bottom: 8px; }
.cs-card-solution code { font-weight: 800; font-family: 'Inter', sans-serif; background: rgba(255,255,255,0.5); padding: 2px 6px; border-radius: 4px;}

.cs-split-card.active .cs-card-solution {
    display: block;
    animation: csFadeIn 0.4s ease forwards;
}

/* ================= CTA WRAZ Z PRZYCISKIEM BLOGA ================= */
.cs-cta-box {
    background: linear-gradient(135deg, #f8fafc 0%, #ffffff 100%);
    padding: 45px 50px;
    text-align: center;
    border-top: 1px solid var(--cs-border);
}

.cs-cta-box h4 {
    font-size: 22px;
    font-weight: 900;
    color: var(--cs-primary);
    margin: 0 0 10px 0;
}

.cs-cta-box p {
    font-size: 15px;
    color: #475569;
    margin: 0 auto 25px auto;
    max-width: 650px;
    line-height: 1.6;
}

.cs-cta-buttons-wrapper {
    display: flex;
    justify-content: center;
    gap: 15px;
    flex-wrap: wrap;
}

.cs-cta-button {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: var(--cs-accent);
    color: #ffffff;
    padding: 16px 32px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 800;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 1px;
    transition: all 0.3s;
    box-shadow: 0 10px 20px -5px rgba(37, 99, 235, 0.4);
    border: 2px solid var(--cs-accent);
}

.cs-cta-button:hover {
    background: #1e3a8a;
    border-color: #1e3a8a;
    transform: translateY(-3px);
    box-shadow: 0 15px 25px -5px rgba(37, 99, 235, 0.5);
    color: #ffffff;
}

/* Nowy intensywny przycisk do bloga */
.cs-blog-btn-intense {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: var(--cs-primary);
    color: #ffffff;
    padding: 16px 32px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 800;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 1px;
    transition: all 0.3s;
    box-shadow: 0 10px 20px -5px rgba(15, 23, 42, 0.4);
    border: 2px solid var(--cs-primary);
}

.cs-blog-btn-intense:hover {
    background: #ffffff;
    color: var(--cs-primary);
    transform: translateY(-3px);
    box-shadow: 0 15px 25px -5px rgba(15, 23, 42, 0.2);
}

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

@media (max-width: 768px) {
    .cs-header-wrapper { padding: 35px 25px; }
    .cs-stats-grid { grid-template-columns: 1fr 1fr; }
    .cs-content-section { padding: 30px 25px 20px 25px; }
    .cs-interactive-section { padding: 0 25px 30px 25px; }
    .cs-cta-box { padding: 35px 25px; }
    .cs-split-container { grid-template-columns: 1fr; }
    .cs-cta-buttons-wrapper { flex-direction: column; }
    .cs-cta-button, .cs-blog-btn-intense { width: 100%; justify-content: center; }
}
</style>

<div class="case-study-module" id="app-calc-case-study">

    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@graph": [
        {
          "@type": "Article",
          "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#article",
          "mainEntityOfPage": {
            "@type": "WebPage",
            "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/"
          },
          "headline": "Kalkulacja Robocizny i Przepływów: Studium Przypadku",
          "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
          "author": {
            "@type": "Person",
            "name": "Robert Kucharski",
            "url": "https://projekt-ogrzewania.pl/",
            "sameAs": [
              "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
              "https://www.linkedin.com/in/robert-kucharski-38069b48/"
            ]
          },
          "publisher": {
            "@type": "Organization",
            "name": "Projekt-Ogrzewania.pl",
            "logo": {
              "@type": "ImageObject",
              "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
            }
          },
          "datePublished": "2025-01-07",
          "dateModified": "2026-05-03",
          "about": [
            { "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#app-calc-case-study" },
            { "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#dataset-case-study" }
          ]
        },
        {
          "@type": "WebApplication",
          "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#app-calc-case-study",
          "name": "Kalkulacja Robocizny i Przepływów: Studium Przypadku",
          "description": "Szczegółowa analiza kosztów robocizny ogrzewania podłogowego oraz inżynieryjne wyliczenia nastaw rotametrów dla domu o powierzchni 140 m².",
          "applicationCategory": "EducationalApplication",
          "operatingSystem": "All",
          "url": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/",
          "license": "https://projekt-ogrzewania.pl/",
          "keywords": [
            "kalkulator kosztów robocizny podłogówki",
            "wzór na wycenę ogrzewania podłogowego",
            "obliczenia przepływów rotametry",
            "kalkulacja długości pętli",
            "wycena robocizny z projektu"
          ],
          "mainEntity": {
            "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#app-calc-case-study"
          },
          "creator": {
            "@type": "Person",
            "name": "Robert Kucharski",
            "sameAs": [
              "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
              "https://www.linkedin.com/in/robert-kucharski-38069b48/"
            ]
          },
          "featureList": [
            "Wycena robocizny w podziale na strefy grzewcze",
            "Obliczenia błędów wycen zryczałtowanych",
            "Inżynierskie obliczenia przepływu i nastawy rotametrów"
          ]
        },
        {
          "@type": "Dataset",
          "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#dataset-case-study",
          "isPartOf": { "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#article" },
          "name": "Realne dane z projektu instalacji (Luty 2026)",
          "description": "Zestawienie parametrów projektowych, finansowych i hydraulicznych użytych do analizy błędów wykonawczych.",
          "measurementTechnique": "Autorski algorytm inżynierski wyceny oparty na wzorze K_rob, obliczeniach OZC oraz normie PN-EN 1264",
          "license": "https://projekt-ogrzewania.pl/",
          "variableMeasured": [
            {
              "@type": "PropertyValue",
              "name": "Koszt całkowity (rzeczywisty)",
              "value": "10 524 PLN"
            },
            {
              "@type": "PropertyValue",
              "name": "Błąd wyceny ryczałtowej (65 zł/m²)",
              "value": "-13.5%"
            },
            {
              "@type": "PropertyValue",
              "name": "Moc instalacji (Q)",
              "value": "11.5 kW"
            },
            {
              "@type": "PropertyValue",
              "name": "Nastawa rotametru (na pętlę)",
              "value": "3.3 l/min"
            }
          ],
          "creator": {
            "@type": "Person",
            "name": "Robert Kucharski"
          }
        }
      ]
    }
    </script>

    <div class="cs-header-wrapper">
        <div class="cs-badge">Kalkulacja z Projektu</div>
        <h2>Jak policzyć całkowity koszt robocizny ogrzewania podłogowego</h2>
        <div class="cs-stats-grid">
            <div class="cs-stat-box">
                <span class="cs-stat-label">Dom pow. netto</span>
                <span class="cs-stat-value">140 m²</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Koszt całkowity</span>
                <span class="cs-stat-value">10 524 zł</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Błąd wyceny &#8222;na oko&#8221;</span>
                <span class="cs-stat-value" style="color: #fca5a5;">-13,5%</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Nastawa rotametru</span>
                <span class="cs-stat-value">3,3 l/min</span>
            </div>
        </div>
    </div>

    <div class="cs-content-section">
        <p class="cs-lead-text">Całkowity koszt robocizny liczysz <strong>z projektu, a nie z metrażu budynku</strong>. Wykonawcy, którzy dają jedną uśrednioną cenę, niemal zawsze dopisują później aneksy do umowy. Poniżej przedstawiam konkretny przykład z lutego 2026 roku (Dom Pana Marka), oparty na autorskim wzorze: <strong>K_rob = Σ (A_i × C_Ti) + K_rozdz + K_proba</strong>.</p>
        
        <div class="cs-calc-block">
            <ul>
                <li><strong>A1 (Strefy otwarte):</strong> 92 m², rozstaw 150 mm, stawka 65 zł/m² <strong>→ 5 980 zł</strong></li>
                <li><strong>A2 (Łazienki, okna):</strong> 28 m², rozstaw zagęszczony 100 mm, stawka 78 zł/m² <strong>→ 2 184 zł</strong></li>
                <li><strong>A3 (Sypialnie):</strong> 20 m², rozstaw 200 mm, stawka 58 zł/m² <strong>→ 1 160 zł</strong></li>
                <li><strong>K_rozdz (Rozdzielacze):</strong> 2 szt. × 450 zł <strong>→ 900 zł</strong></li>
                <li><strong>K_proba (Szczelność):</strong> Próba 6 bar + protokół <strong>→ 300 zł</strong></li>
            </ul>
            <div class="cs-calc-highlight">
                Razem: 10 524 zł, czyli średnio 75,2 zł/m². Gdyby instalator przyjął ryczałtem &#8222;atrakcyjne&#8221; 65 zł/m² dla całości, wyceniłby to na 9 100 zł. Różnica? Ponad 13% błędu, który odbiłby się na jakości materiałów lub aneksach.
            </div>
        </div>

        <div class="cs-author-box">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="cs-author-photo" loading="lazy">
            <p><strong>Robert Kucharski:</strong> &#8222;Rozkładamy koszty i hydraulikę na czynniki pierwsze. Kliknij w karty poniżej, aby zobaczyć jak krok po kroku tworzymy algorytm wyceny i – co najważniejsze – jak liczymy przepływy do precyzyjnego ustawienia pętli.&#8221;</p>
        </div>
    </div>

    <div class="cs-interactive-section">
        <div class="cs-split-container">
            
            <div class="cs-split-card step1 active" id="cs-btn-step1">
                <div class="cs-card-header">
                    <span class="cs-card-icon">📋</span>
                    <h3 class="cs-card-title">7 Kroków Kalkulacji</h3>
                </div>
                <p class="cs-card-desc">Nie zgaduj. Policz w 7 krokach, dokładnie tak, jak liczę to w biurze dla każdego zlecenia.</p>
                <div class="cs-card-solution">
                    <ul>
                        <li><strong>Krok 1:</strong> Policz zapotrzebowanie. <code>Q_obl = Q_OZC × 1,15</code>. Dla 140 m² po OZC Q = 9,8 kW → 11,27 kW.</li>
                        <li><strong>Krok 2:</strong> Podziel na strefy. Salon 35 m², strata 2450 W → wymóg 70 W/m².</li>
                        <li><strong>Krok 3:</strong> Dobierz rozstaw. Z tabeli dla q 70 W/m² i ΔϑH 12K → rozstaw 150 mm.</li>
                        <li><strong>Krok 4:</strong> Policz długość rury. <code>L = A / T × 1,1</code>. Dla salonu to 257 mb.</li>
                        <li><strong>Krok 5:</strong> Podziel na pętle. Maksimum to 110 m → 257 / 110 = 2,34 → czyli 3 pętle.</li>
                        <li><strong>Krok 6:</strong> Przypisz stawkę rynkową. Dla rozstawu 150 mm (65 zł/m²) salon kosztuje nas 2 275 zł.</li>
                        <li><strong>Krok 7:</strong> Dodaj stałe. Rozdzielacz (450 zł), dojazd (120 zł), próba (300 zł). Suma to zwykle widełki 9 500–12 500 zł.</li>
                    </ul>
                </div>
            </div>

            <div class="cs-split-card step2" id="cs-btn-step2">
                <div class="cs-card-header">
                    <span class="cs-card-icon">💧</span>
                    <h3 class="cs-card-title">Obliczenia Przepływów</h3>
                </div>
                <p class="cs-card-desc">Trzecie wyliczenie z projektu, które zawsze robię. To parametr, który monter ustawia w ramach robocizny, a bez projektu – po prostu zgaduje.</p>
                <div class="cs-card-solution">
                    <p style="margin-top:0;">Podstawą prawidłowo ułożonej podłogówki jest ustawienie <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrów na rozdzielaczu</a>.</p>
                    <ul>
                        <li><strong>Krok 1: Wzór bazowy.</strong> Przepływ masowy liczymy ze wzoru: <code>m = Q / (1,163 × ΔT)</code></li>
                        <li><strong>Krok 2: Całkowity zład.</strong> Przy mocy instalacji Q = 11,5 kW i zakładanym spadku temperatury ΔT = 5 K, przepływ całkowity wynosi: 11,5 / (1,163 × 5) = <strong>1,98 m³/h</strong>.</li>
                        <li><strong>Krok 3: Przepływ na rotametrze.</strong> Otrzymany wynik dzielimy na 10 pętli w domu. Daje to 0,198 m³/h na pętlę.</li>
                        <li><strong>Wynik:</strong> Po przeliczeniu jednostek, monter musi ustawić rotametr na około <strong>3,3 l/min</strong>. Dzięki temu <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa</a> precyzyjnie zasili każdy układ.</li>
                    </ul>
                </div>
            </div>

        </div>
    </div>

    <div class="cs-cta-box">
        <h4>Nie ryzykuj błędów monterskich i zaniżonych wycen.</h4>
        <p>Projekt ogrzewania podłogowego chroni Cię przed instalatorami, którzy narzucają jedną cenę za m², a potem domagają się dopłat. Zyskujesz pewność co do ilości rury, nastaw przepływu i wielkości rozdzielaczy.</p>
        
        <div class="cs-cta-buttons-wrapper">
            <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="cs-cta-button">
                <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="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>
                Zamów Profesjonalny Projekt
            </a>
            
            <a href="https://projekt-ogrzewania.pl/blog/" class="cs-blog-btn-intense">
                <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="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg>
                Więcej Wiedzy na Blogu
            </a>
        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Zabezpieczenie domenowe (bez tagów Hx)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('app-calc-case-study');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px 25px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;">
                    <span style="font-size: 40px; display: block; margin-bottom: 10px;">🔒</span>
                    <div style="margin: 0 0 10px 0; font-size: 20px; font-weight: bold;">Studium Przypadku Chronione</div>
                    <p style="font-size: 14px; margin-bottom: 15px;">Ten panel informacyjny to autorska własność Projekt-Ogrzewania.pl.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 10px 20px; background: #dc2626; color: white; text-decoration: none; border-radius: 8px; font-weight: bold; font-size: 13px;">ZOBACZ ORYGINAŁ</a>
                </div>
            `;
            return;
        }
    }

    // Logika przełączania kart Case Study
    const cardStep1 = document.getElementById('cs-btn-step1');
    const cardStep2 = document.getElementById('cs-btn-step2');

    function toggleCards(activeCard, inactiveCard) {
        activeCard.classList.add('active');
        inactiveCard.classList.remove('active');
    }

    if (cardStep1 && cardStep2) {
        cardStep1.addEventListener('click', () => toggleCards(cardStep1, cardStep2));
        cardStep2.addEventListener('click', () => toggleCards(cardStep2, cardStep1));
    }
});
</script>



<style>
:root {
    --info-primary: #0f172a;
    --info-accent: #ea580c;
    --info-accent-hover: #c2410c;
    --info-bg: #ffffff;
    --info-light: #fff7ed;
    --info-border: #e2e8f0;
    --info-text: #475569;
}

.premium-infographic-module {
    max-width: 900px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--info-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.08);
    border: 1px solid #fdba74;
    overflow: hidden;
}

.info-header-area {
    padding: 40px 45px 30px 45px;
    background: linear-gradient(to bottom, #ffffff, var(--info-light));
    border-bottom: 1px solid #fdba74;
    text-align: center;
}

.info-header-area h3 {
    font-size: 26px;
    font-weight: 900;
    color: var(--info-primary);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.info-header-area p {
    font-size: 16px;
    line-height: 1.6;
    color: var(--info-text);
    margin: 0;
}

.info-header-area strong {
    color: var(--info-primary);
}

.info-image-container {
    padding: 30px 45px;
    background: #f8fafc;
    position: relative;
    text-align: center;
}

.info-img-wrapper {
    position: relative;
    display: inline-block;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 10px 25px rgba(0,0,0,0.1);
    cursor: zoom-in;
    transition: transform 0.3s ease;
}

.info-img-wrapper:hover {
    transform: translateY(-5px);
    box-shadow: 0 15px 35px rgba(0,0,0,0.15);
}

.info-img-wrapper img {
    max-width: 100%;
    height: auto;
    display: block;
}

.info-zoom-hint {
    position: absolute;
    bottom: 20px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(15, 23, 42, 0.85);
    color: #ffffff;
    padding: 8px 16px;
    border-radius: 50px;
    font-size: 13px;
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 8px;
    pointer-events: none;
    backdrop-filter: blur(4px);
    opacity: 0;
    transition: opacity 0.3s;
}

.info-img-wrapper:hover .info-zoom-hint {
    opacity: 1;
}

.info-cta-area {
    padding: 0 45px 40px 45px;
    background: #f8fafc;
    text-align: center;
}

/* Lightbox Modal */
.info-lightbox {
    display: none;
    position: fixed;
    z-index: 9999;
    padding: 40px;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(15, 23, 42, 0.95);
    backdrop-filter: blur(5px);
}

.info-lightbox-content {
    margin: auto;
    display: block;
    max-width: 90%;
    max-height: 90vh;
    border-radius: 12px;
    box-shadow: 0 0 50px rgba(0,0,0,0.5);
    object-fit: contain;
}

.info-lightbox-close {
    position: absolute;
    top: 20px;
    right: 35px;
    color: #f1f1f1;
    font-size: 40px;
    font-weight: bold;
    cursor: pointer;
    transition: color 0.3s;
}

.info-lightbox-close:hover {
    color: var(--info-accent);
}

@media (max-width: 768px) {
    .info-header-area { padding: 35px 25px 25px 25px; }
    .info-image-container { padding: 25px; }
    .info-cta-area { padding: 0 25px 35px 25px; }
    .info-header-area h3 { font-size: 22px; }
    .info-zoom-hint { opacity: 1; bottom: 10px; padding: 6px 12px; font-size: 11px; }
    .info-lightbox { padding: 15px; }
    .info-lightbox-close { top: 10px; right: 20px; font-size: 30px; }
}
</style>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Article",
      "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#article",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/"
      },
      "headline": "Ile naprawdę kosztuje ułożenie ogrzewania podłogowego w 2026 roku?",
      "author": { "@id": "https://projekt-ogrzewania.pl/#person" },
      "datePublished": "2026-05-03",
      "dateModified": "2026-05-03",
      "about": [
        { "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#infographic" }
      ]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#infographic",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/podlogowka-cena-za-m2-robocizny/#article" },
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Podlogowka-cena-za-m²-robocizny.webp",
      "width": "1200",
      "height": "1600",
      "caption": "Kompleksowe zestawienie cen robocizny ogrzewania podłogowego w 2026 roku oraz parametry techniczne montażu.",
      "description": "Infografika przedstawiająca koszty robocizny podłogówki, etapy wykonania, najczęstsze błędy oraz zalety profesjonalnego projektu OZC.",
      "keywords": [
        "podłogówka cena za m2 robocizny",
        "koszty instalacji podłogowej",
        "cennik usług hydraulicznych 2026",
        "etapy montażu ogrzewania",
        "infografika budowlana"
      ],
      "author": {
        "@type": "Person",
        "@id": "https://projekt-ogrzewania.pl/#person",
        "name": "Robert Kucharski",
        "sameAs": [
          "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
          "https://www.linkedin.com/in/robert-kucharski-38069b48/"
        ]
      },
      "license": "https://projekt-ogrzewania.pl/"
    }
  ]
}
</script>

<div class="premium-infographic-module" id="infographic-app-container">
    
    <div class="info-header-area">
        <h3>Ile naprawdę kosztuje ułożenie ogrzewania podłogowego w 2026 roku? [INFOGRAFIKA]</h3>
        <p>Sprawdź aktualne zestawienie: <strong>podłogówka cena za m² robocizny</strong> i dowiedz się, jak profesjonalny projekt instalacji zabezpiecza przed kosztownymi błędami wykonawczymi.</p>
    </div>

    <div class="info-image-container">
        <div class="info-img-wrapper" id="info-trigger-lightbox">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Podlogowka-cena-za-m²-robocizny.webp" 
                 alt="Infografika: Podłogówka cena za m2 robocizny w 2026 roku – szczegółowe zestawienie kosztów montażu, parametrów technicznych i najczęstszych błędów wykonawczych." 
                 loading="lazy" />
            <div class="info-zoom-hint">
                <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="11" y1="8" x2="11" y2="14"></line><line x1="8" y1="11" x2="14" y2="11"></line></svg>
                Kliknij, aby powiększyć
            </div>
        </div>
    </div>

    <div class="info-cta-area">
        <div style="margin: 0; text-align: center;">
            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Podlogowka-cena-za-m²-robocizny.pdf" download 
               style="display: inline-flex; align-items: center; gap: 12px; background: #ea580c; color: #ffffff; padding: 18px 35px; border-radius: 12px; font-family: 'Inter', -apple-system, sans-serif; font-size: 16px; font-weight: 800; text-decoration: none; text-transform: uppercase; letter-spacing: 1px; box-shadow: 0 10px 20px rgba(234, 88, 12, 0.3); transition: all 0.3s;"
               onmouseover="this.style.background='#c2410c'; this.style.transform='translateY(-3px)'; this.style.boxShadow='0 15px 25px rgba(234, 88, 12, 0.4)';"
               onmouseout="this.style.background='#ea580c'; this.style.transform='none'; this.style.boxShadow='0 10px 20px rgba(234, 88, 12, 0.3)';">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                    <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
                    <polyline points="7 10 12 15 17 10"></polyline>
                    <line x1="12" y1="15" x2="12" y2="3"></line>
                </svg>
                Pobierz PDF: Podłogówka cena za m² robocizny
            </a>
            <p style="margin-top: 15px; font-size: 13px; color: #64748b; font-family: 'Inter', -apple-system, sans-serif;">
                Format: PDF | Rozmiar: ok. 1.2 MB | Zawiera: Cennik 2026 i Wytyczne Techniczne
            </p>
        </div>
    </div>

</div>

<div id="info-myLightbox" class="info-lightbox">
    <span class="info-lightbox-close">&times;</span>
    <img decoding="async" class="info-lightbox-content" id="info-lightbox-img" src="">
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- Ochrona Domeny ---
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        document.getElementById('infographic-app-container').innerHTML = `
            <div style="padding: 40px 25px; text-align: center; background: #fee2e2; border: 2px solid #dc2626; border-radius: 20px;">
                <div style="font-size: 32px; margin-bottom: 15px;">🔒</div>
                <div style="font-size: 18px; font-weight: bold; color: #dc2626; margin-bottom: 10px;">Moduł chroniony prawami autorskimi</div>
                <div style="font-size: 14px; color: #7f1d1d; margin-bottom: 15px;">Ta infografika jest własnością Projekt-Ogrzewania.pl.</div>
                <a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 10px 20px; background: #dc2626; color: white; text-decoration: none; border-radius: 8px; font-weight: bold; font-size: 13px;">ZOBACZ ORYGINAŁ</a>
            </div>
        `;
        return;
    }

    // --- Logika Lightboxa ---
    const modal = document.getElementById("info-myLightbox");
    const imgWrapper = document.getElementById("info-trigger-lightbox");
    const modalImg = document.getElementById("info-lightbox-img");
    const sourceImg = imgWrapper.querySelector("img");
    const spanClose = document.getElementsByClassName("info-lightbox-close")[0];

    imgWrapper.addEventListener('click', function() {
        modal.style.display = "flex";
        modalImg.src = sourceImg.src;
        document.body.style.overflow = "hidden"; // Blokuje przewijanie strony w tle
    });

    spanClose.addEventListener('click', function() {
        modal.style.display = "none";
        document.body.style.overflow = "auto";
    });

    // Zamknięcie po kliknięciu w tło
    modal.addEventListener('click', function(e) {
        if (e.target === modal) {
            modal.style.display = "none";
            document.body.style.overflow = "auto";
        }
    });
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/podlogowka-cena-za-m%c2%b2-robocizny/">Podłogówka cena za m² robocizny.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/podlogowka-cena-za-m%c2%b2-robocizny/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
