<?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 Rozstaw rur podłogówki - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/category/rozstaw-rur-podlogowki/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/category/rozstaw-rur-podlogowki/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Wed, 09 Sep 2026 11:16:15 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa Rozstaw rur podłogówki - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/category/rozstaw-rur-podlogowki/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Rozstaw rur w wodnym ogrzewaniu podłogowym – zasady projektowania.</title>
		<link>https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 25 Jan 2026 08:32:32 +0000</pubDate>
				<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Porady techniczne]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[Projekty instalacji]]></category>
		<category><![CDATA[Projekty instalacyjne]]></category>
		<category><![CDATA[Projekty ogrzewania]]></category>
		<category><![CDATA[Projekty techniczne]]></category>
		<category><![CDATA[Rodzaje rur grzewczych]]></category>
		<category><![CDATA[Rozstaw rur ogrzewania]]></category>
		<category><![CDATA[Rozstaw rur podłogówki]]></category>
		<category><![CDATA[Rozstaw rur w podłogówce]]></category>
		<category><![CDATA[Rury do ogrzewania]]></category>
		<category><![CDATA[Rury do podłogówki]]></category>
		<category><![CDATA[delta t]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[jastrych]]></category>
		<category><![CDATA[moc ogrzewania]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pętle grzewcze]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[rozstaw rur]]></category>
		<category><![CDATA[wodne ogrzewanie podłogowe]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3301</guid>

					<description><![CDATA[<p>Planując wodne ogrzewanie podłogowe, wielu inwestorów skupia się na źródle ciepła, zapominając o kluczowym parametrze, jakim jest rozstaw rur w wodnym ogrzewaniu podłogowym. To właśnie on w największym stopniu decyduje o mocy systemu, równomierności grzania oraz realnym komforcie użytkowania. W artykule krok po kroku wyjaśniamy, jak fizyka, straty ciepła budynku, rodzaj posadzki i geometria pętli wpływają na optymalny rozstaw rur. Pokazujemy konkretne liczby, przykłady techniczne, symulacje oraz pułapki projektowe, które mogą kosztować drogie błędy na etapie eksploatacji.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">Rozstaw rur w wodnym ogrzewaniu podłogowym – zasady projektowania.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-spacing-guide {
    --rk-dark: #102536;
    --rk-navy: #15384d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e9fbfe;
    --rk-orange: #ff6a3d;
    --rk-orange-soft: #fff1eb;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #d69a16;
    --rk-yellow-soft: #fff8df;
    --rk-red: #ce443b;
    --rk-red-soft: #fff0ee;
    --rk-ink: #1f2c37;
    --rk-text: #475967;
    --rk-muted: #6b7e8a;
    --rk-line: #d5e4eb;
    --rk-soft: #f4f9fb;
    --rk-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 34px auto 72px;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.75;
    overflow-wrap: break-word;
  }
  #rk-spacing-guide,
  #rk-spacing-guide * { box-sizing: border-box; }
  #rk-spacing-guide img,
  #rk-spacing-guide svg { max-width: 100%; }
  #rk-spacing-guide button,
  #rk-spacing-guide input,
  #rk-spacing-guide select,
  #rk-spacing-guide label,
  #rk-spacing-guide summary,
  #rk-spacing-guide a { font: inherit; -webkit-tap-highlight-color: transparent; }
  #rk-spacing-guide button,
  #rk-spacing-guide input,
  #rk-spacing-guide select { max-width: 100%; }
  #rk-spacing-guide a {
    color: var(--rk-blue);
    font-weight: 780;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }
  #rk-spacing-guide a:hover,
  #rk-spacing-guide a:focus-visible { color: var(--rk-red); }
  #rk-spacing-guide p,
  #rk-spacing-guide ul,
  #rk-spacing-guide ol { margin-top: 0; margin-bottom: 1.08em; }
  #rk-spacing-guide h2,
  #rk-spacing-guide h3,
  #rk-spacing-guide h4 {
    margin-top: 0;
    color: var(--rk-dark);
    font-weight: 920;
    letter-spacing: -.035em;
    line-height: 1.15;
    overflow-wrap: anywhere;
  }
  #rk-spacing-guide h2 { margin-bottom: 18px; font-size: clamp(1.72rem, 4vw, 2.68rem); }
  #rk-spacing-guide h3 { margin-bottom: 11px; font-size: clamp(1.12rem, 2.35vw, 1.46rem); }
  #rk-spacing-guide h4 { margin-bottom: 8px; font-size: 1.02rem; }
  #rk-spacing-guide strong { color: var(--rk-dark); }
  #rk-spacing-guide [hidden] { display: none !important; }

  #rk-spacing-guide .rk-sp-shell {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 26px;
    background: var(--rk-white);
    box-shadow: 0 24px 70px rgba(16, 37, 54, .11);
  }
  #rk-spacing-guide .rk-sp-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(38px, 7vw, 78px) clamp(25px, 6vw, 76px) 42px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 4%, rgba(37, 199, 216, .31), transparent 28%),
      radial-gradient(circle at 8% 100%, rgba(255, 106, 61, .24), transparent 30%),
      linear-gradient(135deg, #0d2332 0%, #143e53 55%, #175b62 100%);
  }
  #rk-spacing-guide .rk-sp-hero::after {
    position: absolute;
    right: -55px;
    bottom: -120px;
    width: 350px;
    height: 350px;
    border: 46px solid rgba(255, 255, 255, .05);
    border-radius: 50%;
    content: "";
  }
  #rk-spacing-guide .rk-sp-kicker {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 15px;
    color: #78efff;
    font-size: .69rem;
    font-weight: 950;
    letter-spacing: .09em;
    line-height: 1.2;
    text-transform: uppercase;
  }
  #rk-spacing-guide .rk-sp-kicker::before {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 6px rgba(255, 106, 61, .14);
    content: "";
  }
  #rk-spacing-guide .rk-sp-hero-title {
    position: relative;
    z-index: 1;
    max-width: 1050px;
    margin: 0 0 21px;
    color: var(--rk-white);
    font-size: clamp(2.25rem, 7.1vw, 5rem);
    font-weight: 950;
    letter-spacing: -.065em;
    line-height: .98;
  }
  #rk-spacing-guide .rk-sp-hero-title span { color: #67e7f5; }
  #rk-spacing-guide .rk-sp-lead {
    position: relative;
    z-index: 1;
    max-width: 960px;
    margin-bottom: 24px;
    color: #e2f2f5;
    font-size: clamp(1rem, 2.2vw, 1.3rem);
    line-height: 1.55;
  }
  #rk-spacing-guide .rk-sp-hero-tags,
  #rk-spacing-guide .rk-sp-byline {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 9px 12px;
  }
  #rk-spacing-guide .rk-sp-hero-tag {
    padding: 8px 13px;
    border: 1px solid rgba(255, 255, 255, .22);
    border-radius: 999px;
    color: var(--rk-white);
    background: rgba(255, 255, 255, .07);
    font-size: .67rem;
    font-weight: 850;
    line-height: 1.2;
  }
  #rk-spacing-guide .rk-sp-byline {
    margin-top: 27px;
    color: #cae0e6;
    font-size: .68rem;
    font-weight: 760;
  }
  #rk-spacing-guide .rk-sp-byline strong { color: var(--rk-white); }

  #rk-spacing-guide .rk-sp-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    padding: 22px clamp(18px, 4vw, 45px);
    border-bottom: 1px solid var(--rk-line);
    background: var(--rk-white);
    overflow: visible;
  }
  #rk-spacing-guide .rk-sp-nav-label {
    display: flex;
    align-items: center;
    padding: 7px 5px;
    color: var(--rk-dark);
    font-size: .61rem;
    font-weight: 950;
    letter-spacing: .06em;
    text-transform: uppercase;
  }
  #rk-spacing-guide .rk-sp-nav a {
    display: inline-flex;
    align-items: center;
    min-height: 39px;
    padding: 8px 13px;
    border-radius: 999px;
    color: var(--rk-dark);
    background: #f0f6f8;
    font-size: .65rem;
    font-weight: 880;
    line-height: 1.2;
    text-decoration: none;
    white-space: normal;
  }
  #rk-spacing-guide .rk-sp-nav a:hover,
  #rk-spacing-guide .rk-sp-nav a:focus-visible { color: var(--rk-white); background: var(--rk-blue); }

  #rk-spacing-guide .rk-sp-main { padding: 0 clamp(22px, 5.2vw, 65px) 58px; }
  #rk-spacing-guide .rk-sp-section { padding: 62px 0 10px; scroll-margin-top: 24px; }
  #rk-spacing-guide .rk-sp-section + .rk-sp-section { border-top: 1px solid var(--rk-line); }
  #rk-spacing-guide .rk-sp-eyebrow {
    display: block;
    margin-bottom: 10px;
    color: var(--rk-blue);
    font-size: .63rem;
    font-weight: 950;
    letter-spacing: .085em;
    text-transform: uppercase;
  }
  #rk-spacing-guide .rk-sp-intro { max-width: 960px; color: var(--rk-text); font-size: 1.04rem; }
  #rk-spacing-guide .rk-sp-grid-2,
  #rk-spacing-guide .rk-sp-grid-3,
  #rk-spacing-guide .rk-sp-grid-4 { display: grid; gap: 16px; margin-top: 24px; }
  #rk-spacing-guide .rk-sp-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-spacing-guide .rk-sp-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-spacing-guide .rk-sp-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #rk-spacing-guide .rk-sp-card {
    min-width: 0;
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    background: var(--rk-white);
  }
  #rk-spacing-guide .rk-sp-card.is-soft { background: var(--rk-soft); }
  #rk-spacing-guide .rk-sp-card.is-cyan { border-color: #b9ebf1; background: var(--rk-cyan-soft); }
  #rk-spacing-guide .rk-sp-card.is-orange { border-color: #ffd0c1; background: var(--rk-orange-soft); }
  #rk-spacing-guide .rk-sp-card.is-green { border-color: #bde4d8; background: var(--rk-green-soft); }
  #rk-spacing-guide .rk-sp-card.is-yellow { border-color: #ecd995; background: var(--rk-yellow-soft); }
  #rk-spacing-guide .rk-sp-card p:last-child,
  #rk-spacing-guide .rk-sp-card ul:last-child { margin-bottom: 0; }
  #rk-spacing-guide .rk-sp-number {
    display: grid;
    place-items: center;
    width: 39px;
    height: 39px;
    margin-bottom: 14px;
    border-radius: 12px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-weight: 950;
  }
  #rk-spacing-guide .rk-sp-list { padding-left: 1.15em; }
  #rk-spacing-guide .rk-sp-list li { margin-bottom: .42em; }
  #rk-spacing-guide .rk-sp-checklist { display: grid; gap: 10px; padding: 0; list-style: none; }
  #rk-spacing-guide .rk-sp-checklist li {
    position: relative;
    padding: 13px 14px 13px 44px;
    border: 1px solid var(--rk-line);
    border-radius: 12px;
    background: var(--rk-white);
  }
  #rk-spacing-guide .rk-sp-checklist li::before {
    position: absolute;
    top: 13px;
    left: 14px;
    display: grid;
    place-items: center;
    width: 21px;
    height: 21px;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-green);
    content: "✓";
    font-size: .7rem;
    font-weight: 950;
  }
  #rk-spacing-guide .rk-sp-note,
  #rk-spacing-guide .rk-sp-warning,
  #rk-spacing-guide .rk-sp-success {
    margin: 22px 0;
    padding: 17px 19px;
    border-radius: 13px;
    color: var(--rk-ink);
  }
  #rk-spacing-guide .rk-sp-note { border-left: 5px solid var(--rk-blue); background: var(--rk-cyan-soft); }
  #rk-spacing-guide .rk-sp-warning { border-left: 5px solid var(--rk-orange); background: var(--rk-orange-soft); }
  #rk-spacing-guide .rk-sp-success { border-left: 5px solid var(--rk-green); background: var(--rk-green-soft); }
  #rk-spacing-guide .rk-sp-note p:last-child,
  #rk-spacing-guide .rk-sp-warning p:last-child,
  #rk-spacing-guide .rk-sp-success p:last-child { margin-bottom: 0; color: var(--rk-ink); }
  #rk-spacing-guide .rk-sp-equation {
    margin: 22px 0;
    padding: 19px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    color: var(--rk-dark);
    background: var(--rk-soft);
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: clamp(.9rem, 2vw, 1.08rem);
    font-weight: 850;
    text-align: center;
    overflow-wrap: anywhere;
  }
  #rk-spacing-guide .rk-sp-table-wrap {
    margin-top: 24px;
    overflow-x: auto;
    border: 1px solid var(--rk-line);
    border-radius: 15px;
  }
  #rk-spacing-guide .rk-sp-table { width: 100%; border-collapse: collapse; background: var(--rk-white); }
  #rk-spacing-guide .rk-sp-table th,
  #rk-spacing-guide .rk-sp-table td {
    padding: 15px 16px;
    border-bottom: 1px solid var(--rk-line);
    text-align: left;
    vertical-align: top;
  }
  #rk-spacing-guide .rk-sp-table th { color: var(--rk-white); background: var(--rk-dark); font-size: .69rem; line-height: 1.35; }
  #rk-spacing-guide .rk-sp-table td { color: var(--rk-text); font-size: .76rem; line-height: 1.55; }
  #rk-spacing-guide .rk-sp-table tr:last-child td { border-bottom: 0; }
  #rk-spacing-guide .rk-sp-badge {
    display: inline-flex;
    padding: 5px 9px;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-cyan-soft);
    font-size: .58rem;
    font-weight: 900;
  }

  #rk-spacing-guide .rk-sp-tool {
    margin-top: 25px;
    overflow: hidden;
    border-radius: 22px;
    color: var(--rk-white);
    background: var(--rk-dark);
    box-shadow: 0 22px 55px rgba(16, 37, 54, .2);
  }
  #rk-spacing-guide .rk-sp-tool-head {
    padding: clamp(24px, 5vw, 40px);
    border-bottom: 1px solid rgba(255, 255, 255, .1);
    background: linear-gradient(120deg, #12364a, #18566a);
  }
  #rk-spacing-guide .rk-sp-tool-head h3 { margin-bottom: 7px; color: var(--rk-white); font-size: clamp(1.4rem, 3.2vw, 2.15rem); }
  #rk-spacing-guide .rk-sp-tool-head p { max-width: 900px; margin: 0; color: #d8eef3; font-size: .79rem; }
  #rk-spacing-guide .rk-sp-tool-body { padding: clamp(18px, 4vw, 32px); }
  #rk-spacing-guide .rk-sp-tool-step {
    margin-bottom: 22px;
    padding: clamp(17px, 3vw, 25px);
    border: 1px solid #355c6c;
    border-radius: 16px;
    background: rgba(255, 255, 255, .035);
  }
  #rk-spacing-guide .rk-sp-tool-step:last-child { margin-bottom: 0; }
  #rk-spacing-guide .rk-sp-tool-step-title { display: flex; gap: 12px; align-items: center; margin-bottom: 17px; }
  #rk-spacing-guide .rk-sp-tool-step-title b {
    display: grid;
    flex: 0 0 36px;
    place-items: center;
    width: 36px;
    height: 36px;
    border-radius: 11px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
  }
  #rk-spacing-guide .rk-sp-tool-step-title h4 { margin: 0; color: var(--rk-white); }
  #rk-spacing-guide .rk-sp-fields { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
  #rk-spacing-guide .rk-sp-field { min-width: 0; }
  #rk-spacing-guide .rk-sp-field label {
    display: block;
    margin-bottom: 6px;
    color: #e8f4f7;
    font-size: .63rem;
    font-weight: 850;
    line-height: 1.35;
  }
  #rk-spacing-guide .rk-sp-field select {
    width: 100%;
    min-height: 48px;
    padding: 10px 37px 10px 12px;
    border: 1px solid #c6d6dc;
    border-radius: 10px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-weight: 700;
  }
  #rk-spacing-guide .rk-sp-field small {
    display: block;
    margin-top: 5px;
    color: #9fc2ce;
    font-size: .55rem;
    line-height: 1.35;
  }
  #rk-spacing-guide .rk-sp-tool-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    margin-top: 18px;
    padding: 13px 20px;
    border: 0;
    border-radius: 11px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    cursor: pointer;
    font-weight: 930;
  }
  #rk-spacing-guide .rk-sp-tool-button:hover,
  #rk-spacing-guide .rk-sp-tool-button:focus-visible { background: #72e9f5; }
  #rk-spacing-guide .rk-sp-status {
    display: flex;
    gap: 14px;
    align-items: center;
    margin-bottom: 18px;
    padding: 17px;
    border: 1px solid #466877;
    border-radius: 13px;
    background: #17384a;
  }
  #rk-spacing-guide .rk-sp-status-icon {
    display: grid;
    flex: 0 0 43px;
    place-items: center;
    width: 43px;
    height: 43px;
    border-radius: 50%;
    color: var(--rk-dark);
    background: #ffd568;
    font-weight: 950;
  }
  #rk-spacing-guide .rk-sp-status h4 { margin: 0 0 2px; color: var(--rk-white); }
  #rk-spacing-guide .rk-sp-status p { margin: 0; color: #cce2e8; font-size: .67rem; line-height: 1.45; }
  #rk-spacing-guide .rk-sp-status.is-good { border-color: #3a8c78; background: #153f3a; }
  #rk-spacing-guide .rk-sp-status.is-watch { border-color: #b28d32; background: #41371e; }
  #rk-spacing-guide .rk-sp-status.is-missing { border-color: #b7544d; background: #4a292b; }
  #rk-spacing-guide .rk-sp-status.is-good .rk-sp-status-icon { background: #64dfbc; }
  #rk-spacing-guide .rk-sp-status.is-missing .rk-sp-status-icon { color: var(--rk-white); background: var(--rk-orange); }
  #rk-spacing-guide .rk-sp-process {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 17px;
    margin: 20px 0;
  }
  #rk-spacing-guide .rk-sp-process-node {
    position: relative;
    min-width: 0;
    min-height: 142px;
    padding: 15px 12px;
    border: 1px solid #3f6575;
    border-radius: 14px;
    background: #163447;
  }
  #rk-spacing-guide .rk-sp-process-node:not(:last-child)::after {
    position: absolute;
    top: 50%;
    right: -17px;
    width: 17px;
    color: var(--rk-cyan);
    content: "→";
    font-size: 1.1rem;
    font-weight: 950;
    text-align: center;
    transform: translateY(-50%);
  }
  #rk-spacing-guide .rk-sp-process-node span {
    display: block;
    margin-bottom: 8px;
    color: #75ddeb;
    font-size: .5rem;
    font-weight: 950;
    letter-spacing: .07em;
    text-transform: uppercase;
  }
  #rk-spacing-guide .rk-sp-process-node strong {
    display: block;
    color: var(--rk-white);
    font-size: .7rem;
    line-height: 1.35;
    overflow-wrap: anywhere;
  }
  #rk-spacing-guide .rk-sp-process-node small {
    display: block;
    margin-top: 8px;
    color: #afccd5;
    font-size: .54rem;
    line-height: 1.4;
    overflow-wrap: anywhere;
  }
  #rk-spacing-guide .rk-sp-process-node.is-ready { border-color: #3f9e83; box-shadow: inset 0 0 0 1px rgba(100, 223, 188, .13); }
  #rk-spacing-guide .rk-sp-process-node.is-watch { border-color: #c09538; box-shadow: inset 0 0 0 1px rgba(255, 213, 104, .15); }
  #rk-spacing-guide .rk-sp-process-node.is-missing { border-color: #d45d50; box-shadow: inset 0 0 0 1px rgba(255, 106, 61, .18); }
  #rk-spacing-guide .rk-sp-state-key { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 13px; }
  #rk-spacing-guide .rk-sp-state-key span {
    padding: 6px 10px;
    border: 1px solid #466877;
    border-radius: 999px;
    color: #d9eaf0;
    font-size: .56rem;
    font-weight: 820;
  }
  #rk-spacing-guide .rk-sp-state-key .is-ready { border-color: #3f9e83; }
  #rk-spacing-guide .rk-sp-state-key .is-watch { border-color: #c09538; }
  #rk-spacing-guide .rk-sp-state-key .is-missing { border-color: #d45d50; }
  #rk-spacing-guide .rk-sp-visual {
    margin: 20px 0;
    padding: 18px;
    border: 1px solid #355c6c;
    border-radius: 15px;
    background: #173548;
  }
  #rk-spacing-guide .rk-sp-visual-head {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    align-items: flex-start;
    margin-bottom: 14px;
  }
  #rk-spacing-guide .rk-sp-visual-head h4 { margin: 0; color: var(--rk-white); }
  #rk-spacing-guide .rk-sp-visual-head span { color: #9fc2ce; font-size: .55rem; font-weight: 850; text-transform: uppercase; }
  #rk-spacing-guide .rk-sp-pipe-field {
    position: relative;
    display: flex;
    justify-content: space-around;
    gap: 4px;
    min-height: 170px;
    padding: 22px 19px 35px;
    overflow: hidden;
    border: 1px solid #4a7180;
    border-radius: 12px;
    background:
      repeating-linear-gradient(0deg, rgba(255, 255, 255, .035) 0, rgba(255, 255, 255, .035) 1px, transparent 1px, transparent 28px),
      #102c3d;
  }
  #rk-spacing-guide .rk-sp-pipe-run {
    position: relative;
    flex: 0 0 6px;
    min-width: 6px;
    border-radius: 999px;
    background: linear-gradient(180deg, #ff6a3d, #25c7d8);
    box-shadow: 0 0 0 2px rgba(255, 255, 255, .08);
  }
  #rk-spacing-guide .rk-sp-pipe-field::after {
    position: absolute;
    right: 12px;
    bottom: 8px;
    color: #9fc2ce;
    content: "widok ideowy pola grzewczego";
    font-size: .5rem;
  }
  #rk-spacing-guide .rk-sp-result-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
  #rk-spacing-guide .rk-sp-result-card {
    min-width: 0;
    padding: 18px;
    border: 1px solid #355c6c;
    border-radius: 14px;
    background: #173548;
  }
  #rk-spacing-guide .rk-sp-result-card h4 { color: var(--rk-white); }
  #rk-spacing-guide .rk-sp-output { display: grid; gap: 9px; padding: 0; margin: 0; list-style: none; }
  #rk-spacing-guide .rk-sp-output li {
    position: relative;
    padding: 10px 10px 10px 32px;
    border-radius: 8px;
    color: #d9eaf0;
    background: rgba(255, 255, 255, .045);
    font-size: .63rem;
    line-height: 1.48;
    overflow-wrap: anywhere;
  }
  #rk-spacing-guide .rk-sp-output li::before {
    position: absolute;
    top: 9px;
    left: 10px;
    color: var(--rk-cyan);
    content: "•";
    font-size: 1rem;
    font-weight: 950;
  }
  #rk-spacing-guide .rk-sp-output.is-warning li::before { color: #ffd568; content: "!"; }
  #rk-spacing-guide .rk-sp-output.is-order { counter-reset: rk-sp-step; }
  #rk-spacing-guide .rk-sp-output.is-order li { padding-left: 37px; counter-increment: rk-sp-step; }
  #rk-spacing-guide .rk-sp-output.is-order li::before {
    top: 10px;
    display: grid;
    place-items: center;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    content: counter(rk-sp-step);
    font-size: .5rem;
  }
  #rk-spacing-guide .rk-sp-tool-note {
    margin: 18px 0 0;
    padding: 14px 16px;
    border-left: 4px solid #ffd568;
    border-radius: 10px;
    color: #fff0c4;
    background: rgba(214, 154, 22, .13);
    font-size: .66rem;
    line-height: 1.5;
  }
  #rk-spacing-guide .rk-sp-tool-note strong { color: #fff7dd; }

  #rk-spacing-guide .rk-sp-sales-cta {
    margin: 38px 0 2px;
    padding: clamp(25px, 5vw, 42px);
    border-radius: 20px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 90% 10%, rgba(37, 199, 216, .25), transparent 30%),
      linear-gradient(125deg, #102536, #17566a);
  }
  #rk-spacing-guide .rk-sp-sales-cta h3 { margin-bottom: 10px; color: var(--rk-white); font-size: clamp(1.35rem, 3vw, 2rem); }
  #rk-spacing-guide .rk-sp-sales-cta p { max-width: 930px; color: #d6e9ee; }
  #rk-spacing-guide .rk-sp-cta-limits {
    margin-bottom: 20px;
    padding: 15px 17px;
    border: 1px solid rgba(255, 255, 255, .15);
    border-radius: 13px;
    color: #e8f6fa;
    background: rgba(255, 255, 255, .055);
  }
  #rk-spacing-guide .rk-sp-cta-limits strong { color: var(--rk-white); }
  #rk-spacing-guide .rk-sp-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    padding: 13px 20px;
    border-radius: 12px;
    color: var(--rk-white);
    background: var(--rk-orange);
    box-shadow: 0 14px 30px rgba(255, 106, 61, .22);
    font-weight: 930;
    line-height: 1.25;
    text-decoration: none;
  }
  #rk-spacing-guide .rk-sp-cta-button:hover,
  #rk-spacing-guide .rk-sp-cta-button:focus-visible { color: var(--rk-white); background: #e9552d; }

  #rk-spacing-guide .rk-sp-faq { display: grid; gap: 11px; }
  #rk-spacing-guide .rk-sp-faq details {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    background: var(--rk-white);
  }
  #rk-spacing-guide .rk-sp-faq summary {
    position: relative;
    padding: 17px 54px 17px 18px;
    color: var(--rk-dark);
    cursor: pointer;
    font-weight: 880;
    list-style: none;
  }
  #rk-spacing-guide .rk-sp-faq summary::-webkit-details-marker { display: none; }
  #rk-spacing-guide .rk-sp-faq summary::after {
    position: absolute;
    top: 50%;
    right: 17px;
    display: grid;
    place-items: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    color: var(--rk-blue);
    background: var(--rk-cyan-soft);
    content: "+";
    transform: translateY(-50%);
    font-weight: 950;
  }
  #rk-spacing-guide .rk-sp-faq details[open] summary::after { content: "−"; }
  #rk-spacing-guide .rk-sp-faq-answer { padding: 0 18px 17px; color: var(--rk-text); }
  #rk-spacing-guide .rk-sp-faq-answer p { margin: 0; }
  #rk-spacing-guide .rk-sp-sources { display: grid; gap: 11px; }
  #rk-spacing-guide .rk-sp-source {
    padding: 17px;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    background: var(--rk-soft);
  }
  #rk-spacing-guide .rk-sp-source p { margin: 5px 0 0; color: var(--rk-text); font-size: .75rem; }

  #rk-spacing-guide .rk-sp-author {
    margin-top: 58px;
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 21px;
    background: var(--rk-soft);
    scroll-margin-top: 24px;
  }
  #rk-spacing-guide .rk-sp-author > input { position: absolute; opacity: 0; pointer-events: none; }
  #rk-spacing-guide .rk-sp-author-head {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    align-items: flex-start;
    padding: 25px clamp(21px, 4vw, 34px);
    border-bottom: 1px solid var(--rk-line);
  }
  #rk-spacing-guide .rk-sp-author-head h2 { margin-bottom: 5px; font-size: clamp(1.55rem, 3vw, 2.2rem); }
  #rk-spacing-guide .rk-sp-author-head p { margin: 0; color: var(--rk-text); }
  #rk-spacing-guide .rk-sp-author-mark {
    max-width: 420px;
    padding: 9px 12px;
    border-radius: 999px;
    color: var(--rk-blue);
    background: var(--rk-cyan-soft);
    font-size: .58rem;
    font-weight: 950;
    letter-spacing: .055em;
    text-align: center;
  }
  #rk-spacing-guide .rk-sp-author-layout { display: grid; grid-template-columns: 255px minmax(0, 1fr); }
  #rk-spacing-guide .rk-sp-author-side {
    padding: 29px 24px;
    color: var(--rk-white);
    text-align: center;
    background: var(--rk-dark);
  }
  #rk-spacing-guide .rk-sp-author-photo {
    width: 154px;
    height: 154px;
    margin: 0 auto 18px;
    overflow: hidden;
    border: 6px solid rgba(255, 255, 255, .17);
    border-radius: 50%;
    background: var(--rk-white);
  }
  #rk-spacing-guide .rk-sp-author-photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
  #rk-spacing-guide .rk-sp-author-name { color: var(--rk-white); font-size: 1.02rem; font-weight: 930; }
  #rk-spacing-guide .rk-sp-author-name a { color: var(--rk-white); text-decoration: none; }
  #rk-spacing-guide .rk-sp-author-role { margin-top: 5px; color: #bdd3dc; font-size: .67rem; line-height: 1.5; }
  #rk-spacing-guide .rk-sp-author-social-label {
    margin-top: 22px;
    color: #87a8b5;
    font-size: .56rem;
    font-weight: 950;
    letter-spacing: .08em;
    text-transform: uppercase;
  }
  #rk-spacing-guide .rk-sp-author-social { display: flex; justify-content: center; gap: 9px; margin-top: 10px; }
  #rk-spacing-guide .rk-sp-author-social a {
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    border: 1px solid #3a6173;
    border-radius: 50%;
    color: #cfe2e8;
  }
  #rk-spacing-guide .rk-sp-author-social a:hover {
    color: var(--rk-white);
    border-color: var(--rk-cyan);
    background: rgba(37, 199, 216, .12);
  }
  #rk-spacing-guide .rk-sp-author-social svg { width: 19px; height: 19px; fill: currentColor; }
  #rk-spacing-guide .rk-sp-author-main { min-width: 0; padding: 29px clamp(20px, 4vw, 38px); }
  #rk-spacing-guide .rk-sp-author-quote {
    position: relative;
    margin: 0 0 21px;
    padding: 19px 20px 19px 61px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    background: var(--rk-white);
  }
  #rk-spacing-guide .rk-sp-author-quote::before {
    position: absolute;
    top: 5px;
    left: 18px;
    color: var(--rk-cyan);
    content: "“";
    font-size: 3.2rem;
    font-weight: 950;
    line-height: 1;
  }
  #rk-spacing-guide .rk-sp-author-quote p { margin: 0; color: var(--rk-dark); font-weight: 780; }
  #rk-spacing-guide .rk-sp-author-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; }
  #rk-spacing-guide .rk-sp-author-tab {
    padding: 8px 14px;
    border-radius: 999px;
    color: var(--rk-muted);
    background: #e6eff3;
    cursor: pointer;
    font-size: .64rem;
    font-weight: 900;
  }
  #rk-spacing-guide .rk-sp-author-panel { display: none; color: var(--rk-text); }
  #rk-spacing-guide #rk-sp-author-about:checked ~ .rk-sp-author-layout .rk-sp-author-panel-about,
  #rk-spacing-guide #rk-sp-author-exp:checked ~ .rk-sp-author-layout .rk-sp-author-panel-exp,
  #rk-spacing-guide #rk-sp-author-method:checked ~ .rk-sp-author-layout .rk-sp-author-panel-method { display: block; }
  #rk-spacing-guide #rk-sp-author-about:checked ~ .rk-sp-author-layout label[for="rk-sp-author-about"],
  #rk-spacing-guide #rk-sp-author-exp:checked ~ .rk-sp-author-layout label[for="rk-sp-author-exp"],
  #rk-spacing-guide #rk-sp-author-method:checked ~ .rk-sp-author-layout label[for="rk-sp-author-method"] {
    color: var(--rk-white);
    background: var(--rk-blue);
  }
  #rk-spacing-guide .rk-sp-mini-label {
    margin-top: 18px;
    color: var(--rk-muted);
    font-size: .57rem;
    font-weight: 950;
    letter-spacing: .08em;
    text-transform: uppercase;
  }
  #rk-spacing-guide .rk-sp-portals { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 9px; }
  #rk-spacing-guide .rk-sp-portals a {
    padding: 7px 11px;
    border-radius: 999px;
    background: var(--rk-white);
    font-size: .62rem;
    text-decoration: none;
  }

  @media (max-width: 1050px) {
    #rk-spacing-guide .rk-sp-process { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    #rk-spacing-guide .rk-sp-process-node:not(:last-child)::after { display: none; }
  }
  @media (max-width: 980px) {
    #rk-spacing-guide .rk-sp-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-spacing-guide .rk-sp-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-spacing-guide .rk-sp-author-layout { grid-template-columns: 225px minmax(0, 1fr); }
  }
  @media (max-width: 760px) {
    #rk-spacing-guide { margin: 18px auto 45px; font-size: 16px; }
    #rk-spacing-guide .rk-sp-shell { border-radius: 17px; }
    #rk-spacing-guide .rk-sp-main { padding-right: 15px; padding-left: 15px; }
    #rk-spacing-guide .rk-sp-hero { padding-right: 21px; padding-left: 21px; }
    #rk-spacing-guide .rk-sp-nav { padding: 17px 14px; }
    #rk-spacing-guide .rk-sp-nav-label { flex-basis: 100%; }
    #rk-spacing-guide .rk-sp-nav a { flex: 1 1 135px; justify-content: center; text-align: center; }
    #rk-spacing-guide .rk-sp-section { padding-top: 48px; }
    #rk-spacing-guide .rk-sp-grid-2,
    #rk-spacing-guide .rk-sp-grid-3,
    #rk-spacing-guide .rk-sp-grid-4,
    #rk-spacing-guide .rk-sp-fields,
    #rk-spacing-guide .rk-sp-process,
    #rk-spacing-guide .rk-sp-result-grid { grid-template-columns: minmax(0, 1fr); }
    #rk-spacing-guide .rk-sp-process-node { min-height: 0; }
    #rk-spacing-guide .rk-sp-tool-body { padding-right: 12px; padding-left: 12px; }
    #rk-spacing-guide .rk-sp-tool-step { padding-right: 13px; padding-left: 13px; }
    #rk-spacing-guide .rk-sp-status,
    #rk-spacing-guide .rk-sp-visual-head { align-items: flex-start; }
    #rk-spacing-guide .rk-sp-visual-head { display: block; }
    #rk-spacing-guide .rk-sp-visual-head span { display: block; margin-top: 5px; }
    #rk-spacing-guide .rk-sp-pipe-field { min-height: 145px; padding-right: 10px; padding-left: 10px; }
    #rk-spacing-guide .rk-sp-table-wrap { overflow: visible; border: 0; border-radius: 0; }
    #rk-spacing-guide .rk-sp-table,
    #rk-spacing-guide .rk-sp-table tbody,
    #rk-spacing-guide .rk-sp-table tr,
    #rk-spacing-guide .rk-sp-table td { display: block; width: 100%; }
    #rk-spacing-guide .rk-sp-table thead { display: none; }
    #rk-spacing-guide .rk-sp-table tr {
      margin-bottom: 13px;
      overflow: hidden;
      border: 1px solid var(--rk-line);
      border-radius: 13px;
      background: var(--rk-white);
    }
    #rk-spacing-guide .rk-sp-table td {
      display: grid;
      grid-template-columns: minmax(92px, 38%) minmax(0, 1fr);
      gap: 12px;
      padding: 12px 13px;
      overflow-wrap: anywhere;
    }
    #rk-spacing-guide .rk-sp-table td::before {
      color: var(--rk-dark);
      content: attr(data-label);
      font-size: .63rem;
      font-weight: 900;
      line-height: 1.4;
    }
    #rk-spacing-guide .rk-sp-author-head { display: block; }
    #rk-spacing-guide .rk-sp-author-mark { display: inline-block; margin-top: 12px; text-align: left; }
    #rk-spacing-guide .rk-sp-author-layout { grid-template-columns: minmax(0, 1fr); }
    #rk-spacing-guide .rk-sp-author-main { padding: 24px 18px; }
    #rk-spacing-guide .rk-sp-author-quote { padding-left: 56px; }
    #rk-spacing-guide .rk-sp-cta-button,
    #rk-spacing-guide .rk-sp-tool-button { width: 100%; text-align: center; }
  }
  @media (max-width: 390px) {
    #rk-spacing-guide .rk-sp-hero-title { font-size: 2.05rem; }
    #rk-spacing-guide .rk-sp-nav a { flex-basis: 122px; padding-right: 9px; padding-left: 9px; }
    #rk-spacing-guide .rk-sp-table td {
      display: block;
      padding: 12px 13px;
    }
    #rk-spacing-guide .rk-sp-table td::before { display: block; margin-bottom: 6px; }
    #rk-spacing-guide .rk-sp-status { display: block; }
    #rk-spacing-guide .rk-sp-status-icon { margin-bottom: 10px; }
  }
</style>

<article id="rk-spacing-guide">
  <div class="rk-sp-shell">
    <header class="rk-sp-hero">
      <span class="rk-sp-kicker">Projektowanie podłogówki · aktualizacja 2026</span>
      <div class="rk-sp-hero-title">Rozstaw rur podłogówki — <span>decyzja z obliczeń, nie z przyzwyczajenia</span></div>
      <p class="rk-sp-lead">Rozstaw 10, 15 albo 20 cm nie jest przypisany do pompy ciepła, rodzaju pokoju ani samej nazwy posadzki. Najpierw trzeba znać stratę ciepła, powierzchnię czynną, konstrukcję podłogi i temperatury wody, a później sprawdzić długości, przepływy i opory pętli.</p>
      <div class="rk-sp-hero-tags" aria-label="Najważniejsze zagadnienia">
        <span class="rk-sp-hero-tag">strata ciepła pomieszczenia</span>
        <span class="rk-sp-hero-tag">powierzchnia czynna</span>
        <span class="rk-sp-hero-tag">opór okładziny</span>
        <span class="rk-sp-hero-tag">temperatura wody</span>
        <span class="rk-sp-hero-tag">hydraulika pętli</span>
      </div>
      <div class="rk-sp-byline">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: około 28 minut</span>
        <span>Aktualizacja techniczna: 8 września 2026 r.</span>
      </div>
    </header>

    <nav class="rk-sp-nav" aria-label="Nawigacja po wszystkich sekcjach artykułu">
      <span class="rk-sp-nav-label">Na skróty — wszystkie H2</span>
      <a href="#rk-sp-szybka">Szybka odpowiedź</a>
      <a href="#rk-sp-definicja">Co oznacza rozstaw?</a>
      <a href="#rk-sp-brak-standardu">Dlaczego nie ma jednego?</a>
      <a href="#rk-sp-strata">Strata i moc</a>
      <a href="#rk-sp-powierzchnia">Powierzchnia czynna</a>
      <a href="#rk-sp-wydajnosc">Wydajność podłogi</a>
      <a href="#rk-sp-kroki">Obliczenia krok po kroku</a>
      <a href="#rk-sp-audyt">Audyt doboru</a>
      <a href="#rk-sp-zakresy">Rozstawy 5–30 cm</a>
      <a href="#rk-sp-porownanie">Jednakowe warunki</a>
      <a href="#rk-sp-temperatura">Zasilanie i powrót</a>
      <a href="#rk-sp-okladzina">Okładzina</a>
      <a href="#rk-sp-powierzchnia-temp">Temperatura podłogi</a>
      <a href="#rk-sp-zrodlo">Źródło ciepła</a>
      <a href="#rk-sp-lazienka">Łazienka</a>
      <a href="#rk-sp-okna">Duże okna</a>
      <a href="#rk-sp-zabudowa">Miejsca bez rur</a>
      <a href="#rk-sp-geometria">Ślimak i meander</a>
      <a href="#rk-sp-ile-rury">Ile rury na m²?</a>
      <a href="#rk-sp-petle">Długość i liczba pętli</a>
      <a href="#rk-sp-hydraulika">Hydraulika</a>
      <a href="#rk-sp-budowa">Przeniesienie na budowę</a>
      <a href="#rk-sp-bledy">Najczęstsze błędy</a>
      <a href="#rk-sp-checklista">Checklista</a>
      <a href="#rk-sp-faq">FAQ</a>
      <a href="#rk-sp-zrodla">Źródła</a>
      <a href="#rk-sp-autor">Autor</a>
    </nav>

    <div class="rk-sp-main">
      <section class="rk-sp-section" id="rk-sp-szybka">
        <span class="rk-sp-eyebrow">Odpowiedź bez skrótów myślowych</span>
        <h2>Jaki rozstaw rur w wodnym ogrzewaniu podłogowym?</h2>
        <p class="rk-sp-intro"><strong>Właściwy rozstaw to ten, przy którym konkretna konstrukcja podłogi może pokryć projektową stratę ciepła pomieszczenia bez przekroczenia przyjętych ograniczeń temperatury powierzchni, a powstałe pętle dają się prawidłowo zasilić hydraulicznie.</strong></p>
        <div class="rk-sp-grid-3">
          <div class="rk-sp-card is-cyan">
            <h3>Najpierw obciążenie</h3>
            <p>Potrzebna jest projektowa strata ciepła każdego pomieszczenia, a nie tylko moc całego budynku ani wskaźnik przyjęty z powierzchni.</p>
          </div>
          <div class="rk-sp-card is-green">
            <h3>Później powierzchnia</h3>
            <p>Moc musi zostać oddana przez rzeczywiście ogrzewany fragment podłogi po odjęciu trwałej zabudowy i uzasadnionych stref bez rur.</p>
          </div>
          <div class="rk-sp-card is-yellow">
            <h3>Na końcu geometria i hydraulika</h3>
            <p>Rozstaw wpływa na ilość rury i podział obwodów. Każdą pętlę trzeba jeszcze sprawdzić pod kątem długości, przepływu i straty ciśnienia.</p>
          </div>
        </div>
        <div class="rk-sp-warning">
          <p><strong>Rozstaw 10 cm nie jest automatycznie „najbezpieczniejszy”.</strong> Może być uzasadniony obliczeniami, ale może też niepotrzebnie zwiększyć ilość rury, liczbę pętli i koszty. Z kolei 15 lub 20 cm nie można zatwierdzić wyłącznie dlatego, że „tak zwykle się robi”.</p>
        </div>
        <p>Jeżeli rozważasz wyłącznie dwa popularne warianty, osobny poradnik porównuje <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstaw rur 10 i 15 cm</a> przy wspólnych założeniach.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-definicja">
        <span class="rk-sp-eyebrow">Wymiar geometryczny</span>
        <h2>Co dokładnie oznacza rozstaw rur?</h2>
        <p>Rozstaw rur, często oznaczany literą <strong>s</strong>, to odległość między osiami sąsiednich odcinków przewodu w polu grzewczym. Rozstaw 15 cm oznacza więc 150 mm od osi jednej rury do osi następnej, a nie wolną przestrzeń pomiędzy ich ściankami.</p>
        <div class="rk-sp-equation">s = odległość oś–oś sąsiednich przewodów</div>
        <p>Na jednym rzucie mogą występować różne rozstawy. Inny może być przy przegrodzie o dużych stratach, inny w głębi pomieszczenia, a jeszcze inny w strefie, której nie wolno ogrzewać. Zmienny rozstaw wymaga czytelnego oznaczenia granic i sposobu przejścia pomiędzy polami.</p>
        <div class="rk-sp-note"><p><strong>Rozstaw nie jest długością pętli.</strong> Informuje o gęstości ułożenia w polu, lecz o długości obwodu decydują również kształt pomieszczenia, dobiegi, omijane miejsca i wybrany układ rury.</p></div>
      </section>

      <section class="rk-sp-section" id="rk-sp-brak-standardu">
        <span class="rk-sp-eyebrow">Jedna liczba nie opisuje systemu</span>
        <h2>Dlaczego nie istnieje jeden standardowy rozstaw?</h2>
        <p>Ta sama podłoga z rozstawem 15 cm może oddawać różną moc przy różnych temperaturach zasilania i powrotu, oporach okładziny, grubościach warstw oraz temperaturze pomieszczenia. Dlatego do rozstawu nie wolno dopisywać jednej uniwersalnej wartości W/m² bez podania warunków.</p>
        <div class="rk-sp-grid-4">
          <div class="rk-sp-card is-soft"><h3>Obciążenie</h3><p>Ile watów musi otrzymać konkretne pomieszczenie w warunkach projektowych.</p></div>
          <div class="rk-sp-card is-soft"><h3>Konstrukcja</h3><p>Rodzaj systemu, położenie rury, grubości i właściwości cieplne warstw.</p></div>
          <div class="rk-sp-card is-soft"><h3>Temperatury</h3><p>Zasilanie, powrót, temperatura pomieszczenia oraz dopuszczalna temperatura powierzchni.</p></div>
          <div class="rk-sp-card is-soft"><h3>Hydraulika</h3><p>Długość obwodu, przepływ, średnica wewnętrzna, medium i opory miejscowe.</p></div>
        </div>
        <p>Normy dotyczące systemów płaszczyznowych opisują sposób wyznaczania wydajności i projektowania, a nie tabelę „pomieszczenie = jeden obowiązkowy rozstaw”. Wprowadzenie do tego podejścia znajdziesz także w opracowaniu o <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">normie PN-EN 1264</a>.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-strata">
        <span class="rk-sp-eyebrow">Punkt wyjścia do doboru</span>
        <h2>Strata ciepła pomieszczenia a wymagana moc podłogi</h2>
        <p>Obciążenie cieplne należy policzyć dla każdego pomieszczenia w przyjętych warunkach projektowych. Dopiero potem można sprawdzić, jaką część tego obciążenia ma pokryć podłoga. Szczegółowy kontekst opisują poradniki o <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowym obciążeniu cieplnym OZC</a> i o tym, <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">jak oblicza się straty cieplne budynku</a>.</p>
        <div class="rk-sp-equation">q<sub>wym</sub> = Q<sub>pomieszczenia</sub> / A<sub>czynna</sub></div>
        <ul class="rk-sp-list">
          <li><strong>Q<sub>pomieszczenia</sub></strong> — projektowa strata ciepła przypisana do pomieszczenia, w W,</li>
          <li><strong>A<sub>czynna</sub></strong> — powierzchnia rzeczywiście przekazująca ciepło, w m²,</li>
          <li><strong>q<sub>wym</sub></strong> — wymagana średnia moc jednostkowa aktywnej podłogi, w W/m².</li>
        </ul>
        <div class="rk-sp-warning"><p><strong>Nie dziel straty przez powierzchnię całkowitą, jeżeli część podłogi jest trwale wyłączona.</strong> Ten błąd zaniża wymaganą moc jednostkową i może prowadzić do zaakceptowania zbyt rzadkiego rozstawu.</p></div>
      </section>

      <section class="rk-sp-section" id="rk-sp-powierzchnia">
        <span class="rk-sp-eyebrow">Metraż nie jest powierzchnią grzejną</span>
        <h2>Powierzchnia całkowita a powierzchnia czynna podłogi</h2>
        <p>Pokój o powierzchni 20 m² nie musi mieć 20 m² podłogi czynnej. Trzeba uwzględnić zabudowę stałą, strefy bez rur, konstrukcyjne przerwy, dylatacje i geometrię umożliwiającą bezpieczne wykonanie nawrotów.</p>
        <div class="rk-sp-grid-2">
          <div class="rk-sp-card is-green">
            <h3>Do powierzchni czynnej</h3>
            <ul class="rk-sp-list">
              <li>włączaj pola, w których rura zostanie rzeczywiście ułożona,</li>
              <li>uwzględniaj uzgodniony układ funkcjonalny wnętrza,</li>
              <li>sprawdzaj, czy pole może przekazać potrzebną moc.</li>
            </ul>
          </div>
          <div class="rk-sp-card is-orange">
            <h3>Do osobnej decyzji</h3>
            <ul class="rk-sp-list">
              <li>stałe szafy i zabudowa kuchenna,</li>
              <li>brodziki, wanny i urządzenia wymagające strefy ochronnej,</li>
              <li>kominki, cokoły i miejsca mocowań do podłoża.</li>
            </ul>
          </div>
        </div>
        <p>Nie istnieje uniwersalna lista wyłączeń pasująca do każdego budynku. Decyzję trzeba połączyć z dokumentacją wyposażenia oraz poradnikiem <a href="https://projekt-ogrzewania.pl/gdzie-nie-ukladac-ogrzewania-podlogowego/">gdzie nie układać ogrzewania podłogowego</a>.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-wydajnosc">
        <span class="rk-sp-eyebrow">Rozstaw jest jednym z parametrów</span>
        <h2>Od czego zależy wydajność ogrzewania podłogowego?</h2>
        <p>Moc powierzchni grzewczej wynika z całego układu. Zmniejszenie rozstawu poprawia warunki przekazywania ciepła i równomierność temperatury, ale nie powoduje liniowego wzrostu mocy. Zmiana 20 na 10 cm nie oznacza automatycznego podwojenia W/m².</p>
        <div class="rk-sp-grid-3">
          <div class="rk-sp-card is-cyan"><h3>Średnia temperatura wody</h3><p>Znaczenie mają zasilanie i powrót, a nie tylko wartość widoczna na zasilaniu.</p></div>
          <div class="rk-sp-card is-yellow"><h3>Opór cieplny warstw</h3><p>Okładzina, podkład i konstrukcja nad rurą wpływają na drogę przepływu ciepła.</p></div>
          <div class="rk-sp-card is-green"><h3>Rozstaw i położenie rury</h3><p>Wpływają na charakterystykę cieplną, lecz muszą być oceniane w tej samej konstrukcji.</p></div>
        </div>
        <p>Oddzielnym ograniczeniem jest temperatura powierzchni. Jeśli przy akceptowalnej temperaturze podłogi potrzebnej mocy nie można uzyskać, samo dalsze zagęszczanie rury nie rozwiązuje problemu.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-kroki">
        <span class="rk-sp-eyebrow">Kolejność projektowa</span>
        <h2>Jak obliczyć rozstaw rur ogrzewania podłogowego krok po kroku?</h2>
        <div class="rk-sp-grid-4">
          <div class="rk-sp-card is-soft"><span class="rk-sp-number">1</span><h3>Policz straty</h3><p>Wyznacz projektowe obciążenie każdego pomieszczenia przy właściwych temperaturach obliczeniowych.</p></div>
          <div class="rk-sp-card is-soft"><span class="rk-sp-number">2</span><h3>Zaznacz aktywne pola</h3><p>Odejmij uzgodnioną zabudowę i miejsca, w których nie można prowadzić rury.</p></div>
          <div class="rk-sp-card is-soft"><span class="rk-sp-number">3</span><h3>Oblicz q<sub>wym</sub></h3><p>Podziel moc pomieszczenia przez jego rzeczywiście ogrzewaną powierzchnię.</p></div>
          <div class="rk-sp-card is-soft"><span class="rk-sp-number">4</span><h3>Przyjmij konstrukcję</h3><p>Określ system, warstwy nad rurą, okładzinę i jej ograniczenia temperaturowe.</p></div>
          <div class="rk-sp-card is-soft"><span class="rk-sp-number">5</span><h3>Sprawdź charakterystykę</h3><p>Porównaj warianty rozstawu przy tych samych temperaturach i pozostałych założeniach.</p></div>
          <div class="rk-sp-card is-soft"><span class="rk-sp-number">6</span><h3>Podziel pola na pętle</h3><p>Dodaj rzeczywiste dobiegi i ułóż geometrię możliwą do wykonania.</p></div>
          <div class="rk-sp-card is-soft"><span class="rk-sp-number">7</span><h3>Policz przepływy</h3><p>Wyznacz przepływ z mocy i różnicy temperatur dla każdego obwodu.</p></div>
          <div class="rk-sp-card is-soft"><span class="rk-sp-number">8</span><h3>Zweryfikuj opory</h3><p>Sprawdź pętlę krytyczną, rozdzielacz, dobiegi i punkt pracy pompy.</p></div>
        </div>
        <div class="rk-sp-success"><p><strong>Rozstaw jest wynikiem iteracji.</strong> Jeśli po podziale na pętle hydraulika nie jest akceptowalna albo temperatura powierzchni przekracza ograniczenie, wraca się do wcześniejszych założeń.</p></div>
      </section>

      <section class="rk-sp-section" id="rk-sp-audyt">
        <span class="rk-sp-eyebrow">Narzędzie kontrolne zamiast wyroczni</span>
        <h2>Interaktywny audyt doboru rozstawu rur</h2>
        <p class="rk-sp-intro">Audyt sprawdza, czy decyzja o rozstawie ma udokumentowane podstawy. Nie obiecuje, że wybrana liczba jest prawidłowa — wskazuje brakujące dane, konflikty oraz kolejność dalszej weryfikacji.</p>

        <div class="rk-sp-tool" id="rk-sp-audit">
          <div class="rk-sp-tool-head">
            <h3>Sprawdź proces od obciążenia do hydrauliki</h3>
            <p>Wybierz stan swojej dokumentacji. Wynik zmienia się na żywo, a schemat pola pokazuje wyłącznie różnicę gęstości przewodów — nie jest rzutem wykonawczym ani wykresem mocy.</p>
          </div>
          <div class="rk-sp-tool-body">
            <div class="rk-sp-tool-step">
              <div class="rk-sp-tool-step-title"><b>1</b><h4>Dane wejściowe i etap inwestycji</h4></div>
              <div class="rk-sp-fields">
                <div class="rk-sp-field">
                  <label for="rk-sp-stage">Na jakim etapie jesteś?</label>
                  <select id="rk-sp-stage">
                    <option value="choice">Wybieram założenia</option>
                    <option value="drawing">Mam rzut instalacji</option>
                    <option value="screed">Przed wykonaniem jastrychu</option>
                  </select>
                  <small>Im późniejszy etap, tym mniej miejsca na bezpieczną korektę.</small>
                </div>
                <div class="rk-sp-field">
                  <label for="rk-sp-loss">Strata ciepła każdego pomieszczenia</label>
                  <select id="rk-sp-loss">
                    <option value="no">Nie mam</option>
                    <option value="average">Mam tylko wartość dla całego domu</option>
                    <option value="yes">Tak, osobno dla pomieszczeń</option>
                  </select>
                </div>
                <div class="rk-sp-field">
                  <label for="rk-sp-active">Powierzchnia czynna zaznaczona na rzucie</label>
                  <select id="rk-sp-active">
                    <option value="no">Nie</option>
                    <option value="yes">Tak</option>
                  </select>
                </div>
                <div class="rk-sp-field">
                  <label for="rk-sp-temps">Temperatura zasilania i powrotu</label>
                  <select id="rk-sp-temps">
                    <option value="unknown">Nieznana</option>
                    <option value="assumed">Przyjęta orientacyjnie</option>
                    <option value="calculated">Wynika z obliczeń</option>
                  </select>
                </div>
                <div class="rk-sp-field">
                  <label for="rk-sp-system">Konstrukcja i charakterystyka systemu</label>
                  <select id="rk-sp-system">
                    <option value="no">Nie mam danych</option>
                    <option value="yes">Są określone</option>
                  </select>
                </div>
                <div class="rk-sp-field">
                  <label for="rk-sp-finish">Opór okładziny i limit temperatury</label>
                  <select id="rk-sp-finish">
                    <option value="no">Nieznane</option>
                    <option value="yes">Sprawdzone</option>
                  </select>
                </div>
                <div class="rk-sp-field">
                  <label for="rk-sp-exclusions">Zabudowa i miejsca bez rur</label>
                  <select id="rk-sp-exclusions">
                    <option value="no">Nie są zaznaczone</option>
                    <option value="yes">Są zaznaczone</option>
                  </select>
                </div>
                <div class="rk-sp-field">
                  <label for="rk-sp-loops">Długości pętli razem z dobiegami</label>
                  <select id="rk-sp-loops">
                    <option value="no">Nie są policzone</option>
                    <option value="yes">Są policzone</option>
                  </select>
                </div>
                <div class="rk-sp-field">
                  <label for="rk-sp-hydraulics">Przepływy i straty ciśnienia</label>
                  <select id="rk-sp-hydraulics">
                    <option value="no">Nie są zweryfikowane</option>
                    <option value="yes">Są zweryfikowane</option>
                  </select>
                </div>
                <div class="rk-sp-field">
                  <label for="rk-sp-edge">Strefa brzegowa</label>
                  <select id="rk-sp-edge">
                    <option value="unknown">Przyjęta bez uzasadnienia</option>
                    <option value="notneeded">Nie jest potrzebna z obliczeń</option>
                    <option value="yes">Jest obliczona i oznaczona</option>
                  </select>
                </div>
                <div class="rk-sp-field">
                  <label for="rk-sp-spacing">Rozważany rozstaw</label>
                  <select id="rk-sp-spacing">
                    <option value="10">10 cm</option>
                    <option value="15" selected="">15 cm</option>
                    <option value="20">20 cm</option>
                    <option value="5">5 cm</option>
                    <option value="25">25 cm</option>
                    <option value="30">30 cm</option>
                    <option value="variable">Zmienny w jednym pomieszczeniu</option>
                  </select>
                </div>
                <div class="rk-sp-field">
                  <label for="rk-sp-zones">Czy rozstaw wynika z podziału na strefy?</label>
                  <select id="rk-sp-zones">
                    <option value="no">Nie, jeden rozstaw wszędzie</option>
                    <option value="yes">Tak, pola są oznaczone</option>
                  </select>
                </div>
              </div>
              <button class="rk-sp-tool-button" id="rk-sp-run" type="button">Przeprowadź audyt rozstawu</button>
            </div>

            <div class="rk-sp-tool-step">
              <div class="rk-sp-tool-step-title"><b>2</b><h4>Mapa procesu projektowego</h4></div>
              <div class="rk-sp-process" aria-label="Etapy doboru rozstawu rur">
                <div class="rk-sp-process-node" id="rk-sp-node-loss"><span>Etap 1</span><strong>Q pomieszczenia</strong><small id="rk-sp-node-loss-note">brak obliczenia</small></div>
                <div class="rk-sp-process-node" id="rk-sp-node-active"><span>Etap 2</span><strong>A czynna</strong><small id="rk-sp-node-active-note">brak oznaczenia</small></div>
                <div class="rk-sp-process-node" id="rk-sp-node-q"><span>Etap 3</span><strong>q wymagane</strong><small id="rk-sp-node-q-note">nie można wyznaczyć</small></div>
                <div class="rk-sp-process-node" id="rk-sp-node-system"><span>Etap 4</span><strong>Charakterystyka</strong><small id="rk-sp-node-system-note">brak systemu</small></div>
                <div class="rk-sp-process-node" id="rk-sp-node-spacing"><span>Etap 5</span><strong>Rozstaw</strong><small id="rk-sp-node-spacing-note">15 cm do weryfikacji</small></div>
                <div class="rk-sp-process-node" id="rk-sp-node-loops"><span>Etap 6</span><strong>Podział pętli</strong><small id="rk-sp-node-loops-note">brak długości</small></div>
                <div class="rk-sp-process-node" id="rk-sp-node-hydraulics"><span>Etap 7</span><strong>Hydraulika</strong><small id="rk-sp-node-hydraulics-note">brak obliczeń</small></div>
              </div>
              <div class="rk-sp-state-key" aria-label="Legenda stanów">
                <span class="is-ready">gotowe do dalszej weryfikacji</span>
                <span class="is-watch">wymaga sprawdzenia</span>
                <span class="is-missing">brak podstawowego elementu</span>
              </div>
            </div>

            <div class="rk-sp-tool-step">
              <div class="rk-sp-tool-step-title"><b>3</b><h4>Wynik, schemat i dalsze działania</h4></div>
              <div class="rk-sp-status is-missing" id="rk-sp-status" aria-live="polite">
                <span class="rk-sp-status-icon" id="rk-sp-status-icon">×</span>
                <div><h4 id="rk-sp-status-title">Rozstaw przyjęty bez pełnych obliczeń</h4><p id="rk-sp-status-text">Uzupełnij obciążenia pomieszczeń, powierzchnie czynne i charakterystykę podłogi.</p></div>
              </div>

              <div class="rk-sp-visual">
                <div class="rk-sp-visual-head">
                  <h4>Gęstość przewodów dla wybranego wariantu: <span id="rk-sp-visual-label">15 cm</span></h4>
                  <span>schemat ideowy — bez skali</span>
                </div>
                <div class="rk-sp-pipe-field" id="rk-sp-pipe-field" aria-label="Schemat ideowy gęstości ułożenia rur"></div>
              </div>

              <div class="rk-sp-result-grid">
                <div class="rk-sp-result-card">
                  <h4>Udokumentowane</h4>
                  <ul class="rk-sp-output" id="rk-sp-ready-list"></ul>
                </div>
                <div class="rk-sp-result-card">
                  <h4>Braki i ostrzeżenia</h4>
                  <ul class="rk-sp-output is-warning" id="rk-sp-warning-list"></ul>
                </div>
                <div class="rk-sp-result-card">
                  <h4>Następna kolejność</h4>
                  <ol class="rk-sp-output is-order" id="rk-sp-next-list"></ol>
                </div>
              </div>
              <div class="rk-sp-tool-note"><strong>Zakres narzędzia:</strong> wynik opisuje kompletność procesu. Audyt nie wyznacza mocy podłogi, temperatury powierzchni, długości pętli ani straty ciśnienia i nie zatwierdza rozstawu do wykonania.</div>
            </div>
          </div>
        </div>
      </section>

      <aside class="rk-sp-sales-cta" aria-label="Zamówienie projektu po audycie">
        <h3>Audyt sprawdził dokumentację — projekt musi wyznaczyć wartości</h3>
        <p>Audyt może pokazać, czy decyzja o rozstawie została udokumentowana, ale nie wyznaczy rozstawu z samego metrażu i rodzaju pomieszczenia.</p>
        <div class="rk-sp-cta-limits"><strong>Aby nanieść rury na rzut, trzeba znać straty każdego pomieszczenia, powierzchnie czynne, opory okładzin, temperatury zasilania i powrotu, długości pętli, przepływy oraz opory hydrauliczne.</strong></div>
        <a class="rk-sp-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt z obliczonym rozstawem rur</a>
      </aside>

      <section class="rk-sp-section" id="rk-sp-zakresy">
        <span class="rk-sp-eyebrow">Liczba bez warunków nie jest rekomendacją</span>
        <h2>Rozstaw rur 5, 10, 15, 20, 25 i 30 cm — co naprawdę oznacza?</h2>
        <p>Każdy z tych rozstawów opisuje geometrię ułożenia, a nie gwarantowaną moc. Poniższa tabela pomaga rozpoznać konsekwencje projektowe. Nie jest tabelą doborową.</p>
        <div class="rk-sp-table-wrap">
          <table class="rk-sp-table">
            <thead>
              <tr><th>Rozstaw</th><th>Co zmienia</th><th>Co trzeba zweryfikować</th><th>Czego nie wolno zakładać</th></tr>
            </thead>
            <tbody>
              <tr>
                <td data-label="Rozstaw"><strong>5 cm</strong></td>
                <td data-label="Co zmienia">Bardzo duża ilość rury w polu i zwykle więcej krótszych obwodów.</td>
                <td data-label="Weryfikacja">Minimalny promień gięcia, system mocowania, odstępy wykonawcze, podział pętli i sens cieplny.</td>
                <td data-label="Nie zakładaj">Że tak gęste ułożenie zawsze da proporcjonalnie większą moc.</td>
              </tr>
              <tr>
                <td data-label="Rozstaw"><strong>10 cm</strong></td>
                <td data-label="Co zmienia">Zwiększa gęstość przewodów i ilość rury względem 15 lub 20 cm.</td>
                <td data-label="Weryfikacja">Czy wynik wymaga takiego zagęszczenia i czy hydraulika pętli pozostaje poprawna.</td>
                <td data-label="Nie zakładaj">Że jest obowiązkowy przy pompie ciepła, drewnie lub w łazience.</td>
              </tr>
              <tr>
                <td data-label="Rozstaw"><strong>15 cm</strong></td>
                <td data-label="Co zmienia">Daje inną charakterystykę cieplną i zużycie rury niż 10 cm.</td>
                <td data-label="Weryfikacja">Moc przy tych samych temperaturach, konstrukcji i oporze wykończenia.</td>
                <td data-label="Nie zakładaj">Że jest uniwersalnym rozstawem dla nowego domu.</td>
              </tr>
              <tr>
                <td data-label="Rozstaw"><strong>20 cm</strong></td>
                <td data-label="Co zmienia">Zmniejsza ilość rury, ale zwiększa odległość między osiami przewodów.</td>
                <td data-label="Weryfikacja">Dostępną moc, równomierność temperatury i dopuszczenie w konkretnym systemie.</td>
                <td data-label="Nie zakładaj">Że wystarczy w każdym pomieszczeniu o małym obciążeniu całego budynku.</td>
              </tr>
              <tr>
                <td data-label="Rozstaw"><strong>25 lub 30 cm</strong></td>
                <td data-label="Co zmienia">Tworzy rzadkie pole grzewcze o wyraźnie innym rozkładzie temperatury.</td>
                <td data-label="Weryfikacja">Charakterystykę systemową, komfort, okładzinę, geometrię i pełny wynik cieplny.</td>
                <td data-label="Nie zakładaj">Że jest właściwy tylko dlatego, że obciążenie opisano jako „niskie”.</td>
              </tr>
            </tbody>
          </table>
        </div>
        <div class="rk-sp-note"><p><strong>Rozstaw spoza typowego zakresu wymaga szczególnej ostrożności.</strong> Niektóre konstrukcje mogą mieć ograniczenia wynikające z płyt systemowych, promieni gięcia albo przebiegu rur. Zawsze sprawdza się system rzeczywiście zastosowany w budynku.</p></div>
      </section>

      <section class="rk-sp-section" id="rk-sp-porownanie">
        <span class="rk-sp-eyebrow">Zmieniaj tylko jeden parametr</span>
        <h2>Jak porównywać rozstawy w jednakowych warunkach?</h2>
        <p>Porównanie ma sens tylko wtedy, gdy rozstaw jest jedyną zmienną. Jeśli wariant 10 cm pokazuje się przy innej temperaturze wody niż 15 cm, użytkownik nie wie, jaka część różnicy wynika z rozstawu, a jaka z temperatury.</p>
        <ul class="rk-sp-checklist">
          <li>ta sama temperatura zasilania i powrotu,</li>
          <li>ta sama projektowa temperatura pomieszczenia,</li>
          <li>ta sama średnica i położenie rury,</li>
          <li>ta sama konstrukcja oraz grubość warstw nad przewodem,</li>
          <li>ten sam opór cieplny całego wykończenia,</li>
          <li>ta sama powierzchnia czynna i dopuszczalne ograniczenia.</li>
        </ul>
        <p>Dopiero takie zestawienie pokazuje kierunek zmiany. W praktycznym poradniku o tym, <a href="https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/">jak gęsto rozkładać podłogówkę</a>, można później przełożyć wynik na warunki konkretnych pomieszczeń.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-temperatura">
        <span class="rk-sp-eyebrow">Liczy się cały punkt pracy</span>
        <h2>Rozstaw rur a temperatura zasilania i powrotu</h2>
        <p>Podłoga reaguje na średni poziom temperatury wody w obwodzie oraz na różnicę względem pomieszczenia. Sama temperatura zasilania nie opisuje tego, co dzieje się wzdłuż całej pętli.</p>
        <div class="rk-sp-equation">θ<sub>m</sub> ≈ (θ<sub>z</sub> + θ<sub>p</sub>) / 2</div>
        <p>To przybliżenie pomaga rozumieć zależność, ale właściwa charakterystyka systemu może wykorzystywać dokładniejszą średnią różnicę temperatur. Znaczenie <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">różnicy temperatur zasilania i powrotu</a> trzeba łączyć z przepływem oraz wymaganą mocą.</p>
        <div class="rk-sp-warning"><p><strong>Nie kompensuj nieprzeliczonego rozstawu przypadkowym podnoszeniem temperatury.</strong> Wyższy parametr może zmienić temperaturę powierzchni, warunki pracy źródła i zgodność z ograniczeniami okładziny.</p></div>
        <p>Oddzielny artykuł wyjaśnia, czym jest <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalna temperatura zasilania podłogówki</a> i dlaczego nie jest ona celem normalnej pracy.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-okladzina">
        <span class="rk-sp-eyebrow">Nazwa materiału nie wystarcza</span>
        <h2>Rozstaw rur pod płytki, panele i drewno</h2>
        <p>Rozstawu nie dobiera się z reguły „drewno = 10 cm” albo „płytki = 15 cm”. Potrzebny jest deklarowany opór cieplny całego zestawu: okładziny, podkładu oraz dodatkowych warstw znajdujących się nad jastrychem lub płytą systemową.</p>
        <div class="rk-sp-equation">R<sub>λ,B</sub> [m²K/W] = opór cieplny całego wykończenia nad systemem</div>
        <div class="rk-sp-grid-3">
          <div class="rk-sp-card is-cyan"><h3>Płytki</h3><p>Zwykle tworzą niewielki opór, ale nie zwalniają z obliczenia mocy i sprawdzenia temperatury powierzchni.</p></div>
          <div class="rk-sp-card is-green"><h3>Panele</h3><p>Liczy się konkretny produkt, podkład i dopuszczenie do współpracy z ogrzewaniem podłogowym.</p></div>
          <div class="rk-sp-card is-yellow"><h3>Drewno</h3><p>Znaczenie mają grubość, budowa, stabilność, sposób montażu oraz limit podany przez dostawcę okładziny.</p></div>
        </div>
        <p>Szczegóły opisuje analiza, <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">jak okładzina wpływa na wydajność podłogówki</a>. Jeżeli wybór dotyczy materiału wykończeniowego, pomocne jest również porównanie <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/">paneli i płytek na ogrzewaniu podłogowym</a>.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-powierzchnia-temp">
        <span class="rk-sp-eyebrow">Moc nie może omijać ograniczeń</span>
        <h2>Temperatura powierzchni i równomierność grzania</h2>
        <p>Gęstszy rozstaw zwykle ogranicza różnice temperatur pomiędzy miejscem nad rurą a przestrzenią pomiędzy przewodami. Nie oznacza to jednak, że każdą wymaganą moc można uzyskać przez dalsze zagęszczenie.</p>
        <p>Jeśli obciążenie przypadające na powierzchnię czynną jest zbyt duże, rozwiązaniem może być:</p>
        <ul class="rk-sp-list">
          <li>ograniczenie strat ciepła budynku,</li>
          <li>zwiększenie czynnej powierzchni grzewczej,</li>
          <li>dodanie ogrzewania ściennego lub innego odbiornika,</li>
          <li>zmiana konstrukcji podłogi albo zweryfikowana korekta parametrów pracy.</li>
        </ul>
        <div class="rk-sp-note"><p><strong>Komfort ocenia się razem z wynikiem cieplnym.</strong> Średnia temperatura powierzchni, jej rozkład, typ pomieszczenia oraz ograniczenia okładziny tworzą jeden zestaw warunków.</p></div>
      </section>

      <section class="rk-sp-section" id="rk-sp-zrodlo">
        <span class="rk-sp-eyebrow">Źródło wpływa pośrednio</span>
        <h2>Rozstaw rur przy pompie ciepła i kotle</h2>
        <p>Podłoga nie rozpoznaje urządzenia, które ogrzało wodę. Przy tym samym przepływie, temperaturach i konstrukcji będzie oddawać ciepło według tej samej charakterystyki niezależnie od tego, czy współpracuje z pompą ciepła, kotłem gazowym czy innym źródłem.</p>
        <div class="rk-sp-grid-2">
          <div class="rk-sp-card is-green">
            <h3>Pompa ciepła</h3>
            <p>Projekt zwykle dąży do możliwie niskiej temperatury zasilania, która nadal pokrywa obciążenie. To może wpłynąć na potrzebny rozstaw, ale nie ustanawia reguły 10 cm.</p>
          </div>
          <div class="rk-sp-card is-cyan">
            <h3>Kocioł</h3>
            <p>Możliwość osiągnięcia wyższej temperatury nie uzasadnia rzadkiego rozstawu bez sprawdzenia podłogi, komfortu i sposobu pracy całej instalacji.</p>
          </div>
        </div>
        <p>Temat niskotemperaturowego projektowania rozwija poradnik o <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">rozstawie rur przy pompie ciepła</a>. Całą współpracę źródła, podłogi i hydrauliki pokazuje <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekt podłogówki z pompą ciepła</a>.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-lazienka">
        <span class="rk-sp-eyebrow">Wysoka potrzeba, często mała powierzchnia</span>
        <h2>Jaki rozstaw rur zastosować w łazience?</h2>
        <p>Łazienka bywa projektowana na wyższą temperaturę pomieszczenia niż część mieszkalna, a wannę, brodzik lub zabudowę często wyłącza się z pola grzewczego. To zwiększa wymaganą moc przypadającą na pozostałą powierzchnię czynną.</p>
        <p>Nie oznacza to automatycznie, że zawsze trzeba zastosować 10 cm. Najpierw oblicza się q<sub>wym</sub>, sprawdza charakterystykę podłogi, temperaturę powierzchni i możliwość poprowadzenia rury. Jeśli podłoga nie pokryje pełnego obciążenia, można przewidzieć dodatkowy odbiornik.</p>
        <div class="rk-sp-warning"><p><strong>Gęstszy rozstaw nie zmienia ciężkiej podłogi w szybki grzejnik.</strong> O czasie reakcji nadal decydują masa i konstrukcja warstw, sposób sterowania oraz temperatura pracy.</p></div>
      </section>

      <section class="rk-sp-section" id="rk-sp-okna">
        <span class="rk-sp-eyebrow">Strefa brzegowa musi mieć uzasadnienie</span>
        <h2>Rozstaw rur przy dużych oknach i w strefie brzegowej</h2>
        <p>Przy dużym przeszkleniu obciążenie może być większe niż w głębi pomieszczenia, lecz nie wolno automatycznie przyjmować pasa o stałej szerokości i rozstawie 5 cm. Najpierw określa się rozkład strat, temperaturę powierzchni i charakterystykę zastosowanego systemu.</p>
        <div class="rk-sp-grid-2">
          <div class="rk-sp-card is-cyan">
            <h3>Strefa uzasadniona</h3>
            <p>Ma określoną szerokość, rozstaw, granicę oraz sposób włączenia do jednej lub kilku pętli.</p>
          </div>
          <div class="rk-sp-card is-orange">
            <h3>Strefa z przyzwyczajenia</h3>
            <p>Powstaje przy każdym oknie bez obliczeń i może niepotrzebnie komplikować geometrię oraz hydraulikę.</p>
          </div>
        </div>
        <p>W osobnym artykule opisuję <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/">strefę brzegową w ogrzewaniu podłogowym</a>, a dla dużych przeszkleń pokazuję, jak połączyć ją z <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-do-domu-z-duzymi-przeszkleniami-jak-poradzic-sobie-ze-strefa-przy-oknach/">projektem podłogówki przy oknach</a>.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-zabudowa">
        <span class="rk-sp-eyebrow">Rzut wnętrza jest częścią danych</span>
        <h2>Zabudowa stała i miejsca bez rur</h2>
        <p>Rozstaw trzeba nanosić na rzeczywistą geometrię. Wyspa kuchenna, stała szafa, komin, dylatacja albo miejsce mocowania elementu do podłoża mogą zmienić dostępną powierzchnię oraz długość obwodu.</p>
        <ul class="rk-sp-checklist">
          <li>zaznacz obrys każdej strefy wyłączonej,</li>
          <li>uzgodnij elementy, których położenie może się jeszcze zmienić,</li>
          <li>zostaw czytelne trasy dobiegów i przejścia przez drzwi,</li>
          <li>sprawdź, czy po wyłączeniach podłoga nadal ma dostateczną powierzchnię czynną,</li>
          <li>udokumentuj trasę rur przed zakryciem instalacji.</li>
        </ul>
        <p>„Omijanie mebli” nie powinno oznaczać przypadkowego wycinania fragmentów pola na budowie. Miejsca bez przewodów muszą wynikać z uzgodnionego rzutu, a nie z decyzji podejmowanej dopiero podczas układania.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-geometria">
        <span class="rk-sp-eyebrow">Rozstaw trzeba jeszcze ułożyć</span>
        <h2>Ślimak, meander i zmienny rozstaw rur</h2>
        <p>Układ ślimakowy ułatwia prowadzenie zasilania obok chłodniejszego powrotu i często daje równomierny rozkład temperatury. Meander może być przydatny w wąskich lub nietypowych polach. Żaden układ nie jest jednak obowiązkowy w każdej geometrii.</p>
        <div class="rk-sp-table-wrap">
          <table class="rk-sp-table">
            <thead><tr><th>Układ</th><th>Mocna strona</th><th>Ryzyko do sprawdzenia</th></tr></thead>
            <tbody>
              <tr><td data-label="Układ"><strong>Ślimak</strong></td><td data-label="Mocna strona">Sąsiedztwo przewodów o różnej temperaturze i łatwe tworzenie regularnego pola.</td><td data-label="Ryzyko">Nawroty, zwężenia oraz przejścia przy nieregularnej geometrii.</td></tr>
              <tr><td data-label="Układ"><strong>Meander</strong></td><td data-label="Mocna strona">Prosty przebieg w wydłużonych, wąskich strefach.</td><td data-label="Ryzyko">Wyraźniejsza różnica temperatury od początku do końca pola.</td></tr>
              <tr><td data-label="Układ"><strong>Zmienny rozstaw</strong></td><td data-label="Mocna strona">Dopasowanie gęstości do lokalnego obciążenia.</td><td data-label="Ryzyko">Nieczytelne granice, błędy wykonawcze i nieuwzględniona zmiana długości pętli.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Projektowana <a href="https://projekt-ogrzewania.pl/petla-grzewcza/">pętla grzewcza</a> musi łączyć geometrię pomieszczenia, rozstaw, dobiegi i wynik hydrauliczny. Sam szkic spirali nie jest jeszcze projektem obwodu.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-ile-rury">
        <span class="rk-sp-eyebrow">Oszacowanie pola bez podwajania długości</span>
        <h2>Ile rury przypada na 1 m² przy danym rozstawie?</h2>
        <p>Dla prostego, regularnego pola orientacyjną długość przewodu można oszacować jako iloraz powierzchni i rozstawu zapisanego w metrach. Do wyniku dodaje się rzeczywiste dobiegi, korektę geometrii i rezerwę wykonawczą właściwą dla projektu.</p>
        <div class="rk-sp-equation">L<sub>pole</sub> ≈ A<sub>czynna</sub> / s</div>
        <div class="rk-sp-table-wrap">
          <table class="rk-sp-table">
            <thead><tr><th>Rozstaw</th><th>Orientacyjnie w regularnym polu</th><th>Ważne zastrzeżenie</th></tr></thead>
            <tbody>
              <tr><td data-label="Rozstaw"><strong>5 cm</strong></td><td data-label="Rura w polu">około 20 m/m²</td><td data-label="Zastrzeżenie">Bardzo duża gęstość; sprawdź wykonanie i liczbę pętli.</td></tr>
              <tr><td data-label="Rozstaw"><strong>10 cm</strong></td><td data-label="Rura w polu">około 10 m/m²</td><td data-label="Zastrzeżenie">Bez dobiegów, łuków i rezerwy.</td></tr>
              <tr><td data-label="Rozstaw"><strong>15 cm</strong></td><td data-label="Rura w polu">około 6,7 m/m²</td><td data-label="Zastrzeżenie">Rzeczywista geometria zmienia wynik.</td></tr>
              <tr><td data-label="Rozstaw"><strong>20 cm</strong></td><td data-label="Rura w polu">około 5 m/m²</td><td data-label="Zastrzeżenie">Najpierw sprawdź wydajność i równomierność.</td></tr>
              <tr><td data-label="Rozstaw"><strong>25 cm</strong></td><td data-label="Rura w polu">około 4 m/m²</td><td data-label="Zastrzeżenie">Wymaga potwierdzenia w systemie.</td></tr>
              <tr><td data-label="Rozstaw"><strong>30 cm</strong></td><td data-label="Rura w polu">około 3,3 m/m²</td><td data-label="Zastrzeżenie">Nie jest automatycznym wyborem dla małych strat.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Przykład: 20 m² pola przy rozstawie 15 cm daje około 133 m rury w samym polu, jeszcze przed dodaniem dobiegów i korekty kształtu. Nie należy mnożyć tego wyniku ponownie przez dwa. Dokładny temat ilości materiału pozostawiam poradnikowi <a href="https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/">ile rury na m² ogrzewania podłogowego</a>.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-petle">
        <span class="rk-sp-eyebrow">Gęstsze pole może wymagać większej liczby obwodów</span>
        <h2>Rozstaw a długość i liczba pętli</h2>
        <p>Zmniejszenie rozstawu zwiększa ilość rury potrzebnej do pokrycia tej samej powierzchni. W konsekwencji pole może wymagać podziału na większą liczbę pętli. Nie oznacza to jednak, że każda pojedyncza pętla o tej samej długości ma większy opór tylko dlatego, że jej odcinki leżą bliżej siebie.</p>
        <div class="rk-sp-grid-3">
          <div class="rk-sp-card is-cyan"><h3>Długość pola</h3><p>Wynika z powierzchni, rozstawu, kształtu i miejsc omijanych.</p></div>
          <div class="rk-sp-card is-yellow"><h3>Dobiegi</h3><p>Odcinki od rozdzielacza do pola należą do całkowitej długości konkretnej pętli.</p></div>
          <div class="rk-sp-card is-green"><h3>Podział</h3><p>Powinien równoważyć możliwości hydrauliczne z czytelną geometrią pomieszczenia.</p></div>
        </div>
        <p>Nie ma jednej granicy długości właściwej dla wszystkich rur i przepływów. Zasady sprawdzania opisuje artykuł o <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalnej długości pętli</a>. Praktyczne planowanie powierzchni rozwija poradnik <a href="https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/">ile metrów podłogówki na jednej pętli</a>.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-hydraulika">
        <span class="rk-sp-eyebrow">Rozstaw nie zastępuje obliczeń przepływu</span>
        <h2>Przepływ, opór hydrauliczny i pompa obiegowa</h2>
        <p>Opór konkretnego obwodu zależy przede wszystkim od całkowitej długości, średnicy wewnętrznej, przepływu, właściwości medium i oporów miejscowych. Jeżeli te parametry są identyczne, samo przesunięcie odcinków rury dalej od siebie nie obniża straty ciśnienia o połowę.</p>
        <div class="rk-sp-equation">Q̇ = ρ · c<sub>p</sub> · V̇ · ΔT</div>
        <p>Najpierw z mocy pętli i przyjętej różnicy temperatur wynika wymagany przepływ. Następnie dla tego przepływu oblicza się stratę ciśnienia przewodu, rozdzielacza, zaworów oraz dobiegów.</p>
        <div class="rk-sp-grid-3">
          <div class="rk-sp-card is-cyan"><h3>Średnica rury</h3><p>Liczy się średnica wewnętrzna, nie tylko handlowe oznaczenie przewodu. Zobacz przegląd <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnic rur w podłogówce</a>.</p></div>
          <div class="rk-sp-card is-green"><h3>Regulacja przepływu</h3><p>Nastawy projektowe odczytuje się na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach rozdzielacza</a>, ale nie dobiera ich „na równo”.</p></div>
          <div class="rk-sp-card is-yellow"><h3>Punkt pracy pompy</h3><p>Pompa ma zapewnić sumaryczny przepływ przy oporze drogi krytycznej. Pomaga to sprawdzić <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulator doboru pompy obiegowej</a>.</p></div>
        </div>
        <div class="rk-sp-warning"><p><strong>Rozstaw wpływa na hydraulikę pośrednio.</strong> Zmienia całkowitą ilość rury, geometrię i liczbę obwodów. Nie jest samodzielnym parametrem równania spadku ciśnienia.</p></div>
      </section>

      <section class="rk-sp-section" id="rk-sp-budowa">
        <span class="rk-sp-eyebrow">Projekt musi dać się wykonać</span>
        <h2>Jak przenieść rozstaw z projektu na budowę?</h2>
        <ol class="rk-sp-checklist">
          <li><strong>Zweryfikuj wymiary.</strong> Porównaj rzut z rzeczywistymi ścianami, zabudową i położeniem rozdzielacza.</li>
          <li><strong>Wyznacz pola.</strong> Zaznacz granice rozstawów, strefy bez rur, dylatacje i przejścia.</li>
          <li><strong>Oznacz pętle.</strong> Każdy obwód powinien mieć numer, pomieszczenie, projektową długość i przepływ.</li>
          <li><strong>Kontroluj odstęp oś–oś.</strong> Nie oceniaj rozstawu wyłącznie „na oko” pomiędzy krawędziami przewodów.</li>
          <li><strong>Nie zmieniaj trasy bez przeliczenia.</strong> Dodatkowe omijanie i wydłużenie mogą zmienić hydraulikę.</li>
          <li><strong>Zrób dokumentację zdjęciową.</strong> Zapisz przebieg przewodów z widoczną skalą przed próbą i zakryciem.</li>
        </ol>
        <p>Jakość samego przewodu również ma znaczenie. Przy wyborze sprawdza się m.in. wymiary, warstwy i <a href="https://projekt-ogrzewania.pl/rura-z-bariera-antydyfuzyjna-evoh/">barierę antydyfuzyjną EVOH</a>, lecz materiał rury nadal nie zastępuje projektu rozstawu.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-bledy">
        <span class="rk-sp-eyebrow">Błędy, które wyglądają jak proste reguły</span>
        <h2>Najczęstsze błędy przy wyborze rozstawu rur</h2>
        <div class="rk-sp-table-wrap">
          <table class="rk-sp-table">
            <thead><tr><th>Błąd</th><th>Dlaczego prowadzi na skróty</th><th>Właściwa kontrola</th></tr></thead>
            <tbody>
              <tr><td data-label="Błąd"><strong>Pompa ciepła zawsze 10 cm</strong></td><td data-label="Dlaczego">Źródło nie wyznacza bezpośrednio rozstawu.</td><td data-label="Kontrola">Obciążenie, niska temperatura projektowa, charakterystyka podłogi i hydraulika.</td></tr>
              <tr><td data-label="Błąd"><strong>Jedna moc W/m² dla rozstawu</strong></td><td data-label="Dlaczego">Pomija temperatury, konstrukcję i okładzinę.</td><td data-label="Kontrola">Porównanie w identycznych warunkach.</td></tr>
              <tr><td data-label="Błąd"><strong>Drewno zawsze 10 cm</strong></td><td data-label="Dlaczego">Nazwa okładziny nie opisuje jej oporu ani limitu temperatury.</td><td data-label="Kontrola">Dokumentacja całego zestawu wykończeniowego.</td></tr>
              <tr><td data-label="Błąd"><strong>Rozstaw 10 cm podwaja moc względem 20 cm</strong></td><td data-label="Dlaczego">Zależność nie jest liniowa.</td><td data-label="Kontrola">Charakterystyka konkretnej konstrukcji.</td></tr>
              <tr><td data-label="Błąd"><strong>Każda pętla może mieć 100–120 m</strong></td><td data-label="Dlaczego">Pomija przepływ, średnicę i opory miejscowe.</td><td data-label="Kontrola">Obliczenie pętli krytycznej.</td></tr>
              <tr><td data-label="Błąd"><strong>Rozstaw zmieniany przez wykonawcę</strong></td><td data-label="Dlaczego">Zmienia ilość rury, moc pola i podział obwodów.</td><td data-label="Kontrola">Aktualizacja rzutu i ponowne sprawdzenie.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Jeżeli potrzebujesz najpierw szybkiego oszacowania zakresu materiału, możesz użyć <a href="https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/">kalkulatora ilości rury</a>, ale jego wynik nie powinien wybierać rozstawu ani liczby obwodów bez danych cieplnych.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-checklista">
        <span class="rk-sp-eyebrow">Ostatnia kontrola przed zakryciem</span>
        <h2>Checklista przed wykonaniem jastrychu</h2>
        <ul class="rk-sp-checklist">
          <li>Rozstaw każdego pola zgadza się z aktualnym rzutem.</li>
          <li>Granice stref o innym rozstawie są czytelne i wykonane zgodnie z projektem.</li>
          <li>Rury nie przechodzą przez wyłączone strefy, dylatacje ani miejsca mocowań bez przewidzianego rozwiązania.</li>
          <li>Całkowita długość każdej pętli obejmuje dobiegi od rozdzielacza.</li>
          <li>Numery pętli odpowiadają opisom na rozdzielaczu i w zestawieniu.</li>
          <li>Promienie gięcia i sposób mocowania są zgodne z dokumentacją zastosowanego systemu.</li>
          <li>Przepływy i strata ciśnienia obwodu krytycznego zostały policzone.</li>
          <li>Instalacja przeszła wymaganą próbę, a przebieg rur został sfotografowany ze skalą.</li>
          <li>Zmiany wykonawcze naniesiono do dokumentacji powykonawczej.</li>
        </ul>
        <div class="rk-sp-success"><p><strong>Po wylaniu jastrychu rozstawu nie da się już poprawić bez ingerencji w podłogę.</strong> Dlatego kontrola rzutu, długości i miejsc bez rur powinna odbyć się przed zakryciem instalacji, nie dopiero podczas regulacji.</p></div>
      </section>

      <section class="rk-sp-section" id="rk-sp-faq">
        <span class="rk-sp-eyebrow">Najczęstsze pytania inwestorów</span>
        <h2>FAQ: rozstaw rur w wodnym ogrzewaniu podłogowym</h2>
        <div class="rk-sp-faq">
          <details><summary>Czy rozstaw 10 cm jest zawsze lepszy niż 15 cm?</summary><div class="rk-sp-faq-answer"><p>Nie. Może zwiększyć możliwości cieplne i równomierność w konkretnym systemie, ale zwiększa też ilość rury oraz może wymagać większej liczby pętli. Wybór musi wynikać z obciążenia, powierzchni czynnej, temperatur, okładziny i hydrauliki.</p></div></details>
          <details><summary>Jaki rozstaw rur zastosować przy pompie ciepła?</summary><div class="rk-sp-faq-answer"><p>Nie ma jednego rozstawu przypisanego do pompy ciepła. Projekt powinien sprawdzić, jaki wariant pokryje obciążenie przy możliwie niskiej temperaturze zasilania bez przekroczenia ograniczeń podłogi.</p></div></details>
          <details><summary>Czy w całym domu można ułożyć rury co 15 cm?</summary><div class="rk-sp-faq-answer"><p>Tylko jeśli obliczenia potwierdzą wynik w każdym pomieszczeniu. Łazienka, salon z przeszkleniami i sypialnia mogą mieć różne obciążenia, powierzchnie czynne oraz okładziny.</p></div></details>
          <details><summary>Czy gęstszy rozstaw zawsze daje dwa razy większą moc?</summary><div class="rk-sp-faq-answer"><p>Nie. Zależność pomiędzy rozstawem a mocą nie jest liniowa. Wynik zależy również od temperatur wody, konstrukcji podłogi, oporu okładziny i temperatury pomieszczenia.</p></div></details>
          <details><summary>Ile rury potrzeba na 1 m² przy rozstawie 10 cm?</summary><div class="rk-sp-faq-answer"><p>W regularnym polu orientacyjnie około 10 m rury na 1 m². Do tego dochodzą rzeczywiste dobiegi, korekta geometrii i rezerwa wykonawcza. To oszacowanie materiałowe, nie dobór cieplny.</p></div></details>
          <details><summary>Ile rury potrzeba na 1 m² przy rozstawie 15 cm?</summary><div class="rk-sp-faq-answer"><p>W regularnym polu orientacyjnie około 6,7 m/m², przed doliczeniem dobiegów i korekty kształtu. Rzeczywistą długość trzeba odczytać z zaprojektowanej trasy.</p></div></details>
          <details><summary>Czy rozstaw 5 cm ma sens?</summary><div class="rk-sp-faq-answer"><p>Może pojawić się w szczególnym rozwiązaniu, ale wymaga sprawdzenia charakterystyki systemu, minimalnego promienia gięcia, mocowania, ilości rury, podziału pętli i realnej korzyści cieplnej. Nie powinien być przyjmowany automatycznie.</p></div></details>
          <details><summary>Czy można zastosować rozstaw 25 lub 30 cm?</summary><div class="rk-sp-faq-answer"><p>Może być technicznie rozważany tylko po potwierdzeniu wydajności, równomierności temperatury, komfortu i dopuszczenia w konkretnej konstrukcji. Małe obciążenie budynku samo nie wystarcza do takiej decyzji.</p></div></details>
          <details><summary>Jaki rozstaw rur pod panele lub drewno?</summary><div class="rk-sp-faq-answer"><p>Nie dobiera się go wyłącznie z nazwy okładziny. Potrzebny jest opór cieplny całego wykończenia, limit temperatury, konstrukcja systemu oraz wymagana moc pomieszczenia.</p></div></details>
          <details><summary>Czy w łazience zawsze trzeba układać rurę co 10 cm?</summary><div class="rk-sp-faq-answer"><p>Nie. Łazienka często ma wysokie obciążenie przypadające na małą powierzchnię czynną, dlatego wymaga szczególnego sprawdzenia. Jeśli podłoga nie pokryje potrzeb, rozwiązaniem może być dodatkowy odbiornik.</p></div></details>
          <details><summary>Czy rozstaw wpływa na opór hydrauliczny pętli?</summary><div class="rk-sp-faq-answer"><p>Pośrednio, ponieważ zmienia ilość rury i możliwy podział na obwody. Opór konkretnej pętli wynika jednak z jej długości, średnicy wewnętrznej, przepływu, medium i oporów miejscowych, a nie z odległości między sąsiednimi odcinkami.</p></div></details>
          <details><summary>Czy wykonawca może zmienić rozstaw na budowie?</summary><div class="rk-sp-faq-answer"><p>Zmiana powinna zostać zatwierdzona po ponownym sprawdzeniu mocy, ilości rury, podziału pętli i hydrauliki. Samowolna korekta rozstawu może zmienić parametry całego pola grzewczego.</p></div></details>
        </div>
      </section>

      <section class="rk-sp-section" id="rk-sp-zrodla">
        <span class="rk-sp-eyebrow">Materiały pierwotne i instytucjonalne</span>
        <h2>Źródła techniczne i zakres odpowiedzialności</h2>
        <div class="rk-sp-sources">
          <div class="rk-sp-source">
            <strong><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — wyznaczanie wydajności powierzchni grzewczej i chłodzącej</a></strong>
            <p>Oficjalna strona normy dotyczącej metod wyznaczania wydajności wbudowanych wodnych systemów płaszczyznowych.</p>
          </div>
          <div class="rk-sp-source">
            <strong><a href="https://www.iso.org/standard/74684.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-3:2021 — projektowanie i wymiarowanie systemu</a></strong>
            <p>Oficjalna strona części dotyczącej projektowania i wymiarowania wbudowanych systemów ogrzewania i chłodzenia płaszczyznowego.</p>
          </div>
        </div>
        <div class="rk-sp-warning"><p><strong>Zakres poradnika:</strong> artykuł pokazuje właściwą kolejność decyzji i typowe zależności. Nie zastępuje obliczeń budynku, charakterystyki konkretnego systemu podłogowego, dokumentacji materiałów ani projektu wykonawczego.</p></div>
      </section>

      <section class="rk-sp-author" id="rk-sp-autor" aria-labelledby="rk-sp-author-heading">
        <input type="radio" name="rk-sp-author-tabs" id="rk-sp-author-about" checked="">
        <input type="radio" name="rk-sp-author-tabs" id="rk-sp-author-exp">
        <input type="radio" name="rk-sp-author-tabs" id="rk-sp-author-method">

        <div class="rk-sp-author-head">
          <div>
            <span class="rk-sp-eyebrow">Opracowanie eksperckie</span>
            <h2 id="rk-sp-author-heading">Autor i weryfikacja merytoryczna</h2>
            <p>Artykuł łączy bilans cieplny pomieszczeń, charakterystykę podłogi, geometrię pętli i obliczenia hydrauliczne.</p>
          </div>
          <span class="rk-sp-author-mark">E-E-A-T · praktyka projektowa HVAC</span>
        </div>

        <div class="rk-sp-author-layout">
          <aside class="rk-sp-author-side">
            <div class="rk-sp-author-photo"><img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych" width="154" height="154" loading="lazy"></div>
            <div class="rk-sp-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
            <div class="rk-sp-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</div>
            <div class="rk-sp-author-social-label">Profile autora</div>
            <div class="rk-sp-author-social">
              <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="nofollow noopener noreferrer" aria-label="Robert Kucharski na LinkedIn"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4.98 3.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5ZM3 9h4v12H3V9Zm6.5 0h3.84v1.64h.06c.53-1.01 1.84-2.08 3.79-2.08C21.24 8.56 22 11.23 22 14.7V21h-4v-5.59c0-1.33-.02-3.05-1.86-3.05-1.86 0-2.14 1.45-2.14 2.95V21h-4V9Z"></path></svg></a>
              <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer" aria-label="Projekt Ogrzewania na Facebooku"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M22 12.06C22 6.5 17.52 2 12 2S2 6.5 2 12.06C2 17.08 5.66 21.25 10.44 22v-7.03H7.9v-2.91h2.54V9.85c0-2.52 1.49-3.91 3.77-3.91 1.09 0 2.23.2 2.23.2v2.47h-1.25c-1.24 0-1.63.77-1.63 1.56v1.89h2.77l-.44 2.91h-2.33V22C18.34 21.25 22 17.08 22 12.06Z"></path></svg></a>
              <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer" aria-label="Projekt HVAC w serwisie X"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.9 2H22l-6.77 7.74L23.2 22h-6.24l-4.89-6.39L6.48 22H3.36l7.25-8.29L2.96 2H9.36l4.42 5.84L18.9 2Zm-1.1 17.84h1.73L8.42 4.05H6.57L17.8 19.84Z"></path></svg></a>
            </div>
          </aside>

          <div class="rk-sp-author-main">
            <blockquote class="rk-sp-author-quote"><p>Rozstaw nie powinien być pierwszą liczbą wpisaną do projektu. Jest wynikiem obciążenia pomieszczenia, aktywnej powierzchni, konstrukcji podłogi, temperatur oraz hydrauliki pętli.</p></blockquote>
            <div class="rk-sp-author-tabs" role="tablist" aria-label="Informacje o autorze">
              <label class="rk-sp-author-tab" for="rk-sp-author-about">O autorze</label>
              <label class="rk-sp-author-tab" for="rk-sp-author-exp">Doświadczenie</label>
              <label class="rk-sp-author-tab" for="rk-sp-author-method">Metoda pracy</label>
            </div>
            <div class="rk-sp-author-panel rk-sp-author-panel-about">
              <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia cieplne i hydrauliczne oraz materiały edukacyjne dla inwestorów i wykonawców. W poradnikach oddziela wartości wynikające z obliczeń od popularnych reguł wykonawczych, które bez kontekstu mogą prowadzić do błędnych decyzji.</p>
              <p>W projektowaniu rozstawu analizuje jednocześnie straty każdego pomieszczenia, rzeczywiście ogrzewaną powierzchnię, opór wykończenia, temperatury zasilania i powrotu, geometrię pól oraz możliwości hydrauliczne rozdzielacza i źródła ciepła.</p>
            </div>
            <div class="rk-sp-author-panel rk-sp-author-panel-exp">
              <p>Zakres pracy obejmuje bilanse cieplne budynków, dobór parametrów powierzchni grzewczych, rozmieszczenie i długości pętli, obliczenie przepływów, strat ciśnienia oraz nastaw rozdzielaczy dla instalacji współpracujących między innymi z pompami ciepła i kotłami.</p>
              <p>Materiały są aktualizowane po weryfikacji norm, źródeł instytucjonalnych oraz powtarzających się problemów pojawiających się podczas wykonywania, uruchamiania i regulacji ogrzewania podłogowego.</p>
            </div>
            <div class="rk-sp-author-panel rk-sp-author-panel-method">
              <p>Metoda zaczyna się od obciążenia cieplnego i funkcji pomieszczeń. Następnie na rzucie wyznaczane są powierzchnie czynne, miejsca bez rur i strefy brzegowe. Dopiero wtedy porównuje się rozstawy dla rzeczywistej konstrukcji podłogi i przyjętych temperatur.</p>
              <p>Po wyborze układu rury każda pętla otrzymuje długość, wymaganą moc i przepływ. Weryfikacja hydrauliczna zamyka proces, dzięki czemu rozstaw nie jest oderwany od liczby obwodów, dobiegów, oporu pętli krytycznej ani punktu pracy pompy.</p>
            </div>
            <div class="rk-sp-mini-label">Publikacje i serwisy autora</div>
            <div class="rk-sp-portals">
              <a href="https://projekt-ogrzewania.pl/blog/">Blog Projekt Ogrzewania</a>
              <a href="https://remont.biz.pl/" target="_blank" rel="nofollow noopener noreferrer">Remont.biz.pl</a>
              <a href="https://sobir.pl/" target="_blank" rel="nofollow noopener noreferrer">Sobir.pl</a>
            </div>
          </div>
        </div>
      </section>

      <aside class="rk-sp-sales-cta" aria-label="Końcowe zamówienie projektu">
        <h3>Przenieś obliczony rozstaw na rzeczywisty rzut budynku</h3>
        <p>Otrzymasz projekt oparty na stratach ciepła pomieszczeń, powierzchniach czynnych, uzgodnionych okładzinach i parametrach źródła. Rzut pokaże rozstawy, przebieg i długości pętli, a zestawienie — przepływy, opory hydrauliczne i nastawy rozdzielacza.</p>
        <a class="rk-sp-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów indywidualny projekt ogrzewania podłogowego</a>
      </aside>
    </div>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt Ogrzewania",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "worksFor": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "obliczenia cieplne",
        "rozstaw rur ogrzewania podłogowego",
        "hydraulika instalacji grzewczych",
        "projektowanie pętli grzewczych",
        "równoważenie hydrauliczne"
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Projekt Ogrzewania",
          "item": "https://projekt-ogrzewania.pl/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Blog",
          "item": "https://projekt-ogrzewania.pl/blog/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Rozstaw rur w wodnym ogrzewaniu podłogowym",
          "item": "https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/"
        }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/#webpage",
      "url": "https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/",
      "name": "Rozstaw rur w wodnym ogrzewaniu podłogowym – zasady projektowania",
      "description": "Inżynierski poradnik o doborze rozstawu rur z obciążenia cieplnego, powierzchni czynnej, charakterystyki podłogi i obliczeń hydraulicznych.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/#breadcrumb" },
      "primaryImageOfPage": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp"
      },
      "dateModified": "2026-09-08",
      "inLanguage": "pl-PL"
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/#article",
      "headline": "Rozstaw rur w wodnym ogrzewaniu podłogowym – zasady projektowania",
      "description": "Jak dobrać rozstaw rur podłogówki z obciążenia pomieszczeń, powierzchni czynnej, temperatur wody, konstrukcji podłogi oraz hydrauliki pętli.",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/#webpage" },
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "dateModified": "2026-09-08",
      "datePublished": "2026-09-08",
      "inLanguage": "pl-PL",
      "proficiencyLevel": "Intermediate",
      "about": [
        "rozstaw rur w wodnym ogrzewaniu podłogowym",
        "powierzchnia czynna ogrzewania podłogowego",
        "obciążenie cieplne pomieszczenia",
        "długość pętli",
        "opór hydrauliczny"
      ],
      "citation": [
        "https://www.iso.org/standard/74683.html",
        "https://www.iso.org/standard/74684.html"
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/#audit",
      "name": "Interaktywny audyt doboru rozstawu rur",
      "url": "https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/#rk-sp-audyt",
      "description": "Narzędzie sprawdzające kompletność procesu od obciążenia pomieszczenia przez powierzchnię czynną i charakterystykę systemu do podziału pętli oraz hydrauliki.",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Any",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/#howto",
      "name": "Jak dobrać rozstaw rur ogrzewania podłogowego",
      "description": "Kolejność od projektowej straty ciepła pomieszczeń do weryfikacji hydraulicznej pętli.",
      "totalTime": "PT2H",
      "step": [
        {
          "@type": "HowToStep",
          "position": 1,
          "name": "Policz obciążenie cieplne",
          "text": "Wyznacz projektową stratę ciepła osobno dla każdego pomieszczenia."
        },
        {
          "@type": "HowToStep",
          "position": 2,
          "name": "Zaznacz powierzchnię czynną",
          "text": "Odejmij uzgodnioną zabudowę stałą i miejsca, w których rury nie mogą zostać ułożone."
        },
        {
          "@type": "HowToStep",
          "position": 3,
          "name": "Oblicz wymaganą moc jednostkową",
          "text": "Podziel obciążenie pomieszczenia przez rzeczywistą powierzchnię czynną."
        },
        {
          "@type": "HowToStep",
          "position": 4,
          "name": "Określ konstrukcję podłogi",
          "text": "Ustal system, warstwy, opór okładziny oraz ograniczenia temperatury powierzchni."
        },
        {
          "@type": "HowToStep",
          "position": 5,
          "name": "Porównaj warianty rozstawu",
          "text": "Sprawdź charakterystyki dla tych samych temperatur, konstrukcji i warunków pomieszczenia."
        },
        {
          "@type": "HowToStep",
          "position": 6,
          "name": "Nanieś pętle na rzut",
          "text": "Ułóż możliwą do wykonania geometrię, dodaj dobiegi i podziel pola na obwody."
        },
        {
          "@type": "HowToStep",
          "position": 7,
          "name": "Oblicz przepływy",
          "text": "Wyznacz wymagany przepływ każdej pętli z jej mocy i projektowej różnicy temperatur."
        },
        {
          "@type": "HowToStep",
          "position": 8,
          "name": "Zweryfikuj hydraulikę",
          "text": "Policz stratę ciśnienia pętli krytycznej, rozdzielacza i dobiegów oraz sprawdź punkt pracy pompy."
        }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/#faq",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Czy rozstaw 10 cm jest zawsze lepszy niż 15 cm?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie. Może poprawić możliwości cieplne i równomierność w konkretnym systemie, ale zwiększa ilość rury i może wymagać większej liczby pętli. Wybór musi wynikać z obciążenia, powierzchni czynnej, temperatur, okładziny i hydrauliki."
          }
        },
        {
          "@type": "Question",
          "name": "Jaki rozstaw rur zastosować przy pompie ciepła?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie ma jednego rozstawu przypisanego do pompy ciepła. Projekt powinien sprawdzić wariant pokrywający obciążenie przy możliwie niskiej temperaturze zasilania bez przekroczenia ograniczeń podłogi."
          }
        },
        {
          "@type": "Question",
          "name": "Czy w całym domu można ułożyć rury co 15 cm?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Tylko jeśli obliczenia potwierdzą wynik w każdym pomieszczeniu. Poszczególne wnętrza mogą mieć różne obciążenia, powierzchnie czynne oraz okładziny."
          }
        },
        {
          "@type": "Question",
          "name": "Czy gęstszy rozstaw zawsze daje dwa razy większą moc?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie. Zależność pomiędzy rozstawem a mocą nie jest liniowa. Wynik zależy również od temperatur wody, konstrukcji podłogi, oporu okładziny i temperatury pomieszczenia."
          }
        },
        {
          "@type": "Question",
          "name": "Ile rury potrzeba na 1 m² przy rozstawie 10 cm?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "W regularnym polu orientacyjnie około 10 metrów rury na metr kwadratowy. Do tego dochodzą rzeczywiste dobiegi, korekta geometrii i rezerwa wykonawcza."
          }
        },
        {
          "@type": "Question",
          "name": "Ile rury potrzeba na 1 m² przy rozstawie 15 cm?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "W regularnym polu orientacyjnie około 6,7 metra rury na metr kwadratowy przed doliczeniem dobiegów i korekty kształtu."
          }
        },
        {
          "@type": "Question",
          "name": "Czy rozstaw 5 cm ma sens?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Może pojawić się w szczególnym rozwiązaniu, ale wymaga sprawdzenia charakterystyki systemu, promienia gięcia, mocowania, ilości rury, podziału pętli i realnej korzyści cieplnej."
          }
        },
        {
          "@type": "Question",
          "name": "Czy można zastosować rozstaw 25 lub 30 cm?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Może być rozważany po potwierdzeniu wydajności, równomierności temperatury, komfortu i dopuszczenia w konkretnej konstrukcji. Małe obciążenie budynku samo nie wystarcza do takiej decyzji."
          }
        },
        {
          "@type": "Question",
          "name": "Jaki rozstaw rur pod panele lub drewno?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie dobiera się go wyłącznie z nazwy okładziny. Potrzebny jest opór cieplny całego wykończenia, limit temperatury, konstrukcja systemu oraz wymagana moc pomieszczenia."
          }
        },
        {
          "@type": "Question",
          "name": "Czy w łazience zawsze trzeba układać rurę co 10 cm?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie. Łazienka często ma wysokie obciążenie przypadające na małą powierzchnię czynną, dlatego wymaga indywidualnego sprawdzenia."
          }
        },
        {
          "@type": "Question",
          "name": "Czy rozstaw wpływa na opór hydrauliczny pętli?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Pośrednio, ponieważ zmienia ilość rury i możliwy podział na obwody. Opór konkretnej pętli wynika z jej długości, średnicy wewnętrznej, przepływu, medium i oporów miejscowych."
          }
        },
        {
          "@type": "Question",
          "name": "Czy wykonawca może zmienić rozstaw na budowie?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Zmiana powinna zostać zatwierdzona po ponownym sprawdzeniu mocy, ilości rury, podziału pętli i hydrauliki."
          }
        }
      ]
    }
  ]
}
</script>

<script>
(function () {
  "use strict";

  var root = document.getElementById("rk-sp-audit");
  if (!root) { return; }

  var stage = document.getElementById("rk-sp-stage");
  var loss = document.getElementById("rk-sp-loss");
  var active = document.getElementById("rk-sp-active");
  var temps = document.getElementById("rk-sp-temps");
  var system = document.getElementById("rk-sp-system");
  var finish = document.getElementById("rk-sp-finish");
  var exclusions = document.getElementById("rk-sp-exclusions");
  var loops = document.getElementById("rk-sp-loops");
  var hydraulics = document.getElementById("rk-sp-hydraulics");
  var edge = document.getElementById("rk-sp-edge");
  var spacing = document.getElementById("rk-sp-spacing");
  var zones = document.getElementById("rk-sp-zones");
  var button = document.getElementById("rk-sp-run");

  var status = document.getElementById("rk-sp-status");
  var statusIcon = document.getElementById("rk-sp-status-icon");
  var statusTitle = document.getElementById("rk-sp-status-title");
  var statusText = document.getElementById("rk-sp-status-text");
  var readyList = document.getElementById("rk-sp-ready-list");
  var warningList = document.getElementById("rk-sp-warning-list");
  var nextList = document.getElementById("rk-sp-next-list");
  var pipeField = document.getElementById("rk-sp-pipe-field");
  var visualLabel = document.getElementById("rk-sp-visual-label");

  var nodeLoss = document.getElementById("rk-sp-node-loss");
  var nodeLossNote = document.getElementById("rk-sp-node-loss-note");
  var nodeActive = document.getElementById("rk-sp-node-active");
  var nodeActiveNote = document.getElementById("rk-sp-node-active-note");
  var nodeQ = document.getElementById("rk-sp-node-q");
  var nodeQNote = document.getElementById("rk-sp-node-q-note");
  var nodeSystem = document.getElementById("rk-sp-node-system");
  var nodeSystemNote = document.getElementById("rk-sp-node-system-note");
  var nodeSpacing = document.getElementById("rk-sp-node-spacing");
  var nodeSpacingNote = document.getElementById("rk-sp-node-spacing-note");
  var nodeLoops = document.getElementById("rk-sp-node-loops");
  var nodeLoopsNote = document.getElementById("rk-sp-node-loops-note");
  var nodeHydraulics = document.getElementById("rk-sp-node-hydraulics");
  var nodeHydraulicsNote = document.getElementById("rk-sp-node-hydraulics-note");

  function addUnique(items, text) {
    if (items.indexOf(text) === -1) { items.push(text); }
  }

  function renderList(target, items, emptyText) {
    while (target.firstChild) { target.removeChild(target.firstChild); }
    if (items.length === 0) { items.push(emptyText); }
    items.forEach(function (text) {
      var item = document.createElement("li");
      item.textContent = text;
      target.appendChild(item);
    });
  }

  function setNode(node, note, state, text) {
    node.classList.remove("is-ready");
    node.classList.remove("is-watch");
    node.classList.remove("is-missing");
    node.classList.add(state);
    note.textContent = text;
  }

  function spacingLabel(value) {
    if (value === "variable") { return "zmienny"; }
    return value + " cm";
  }

  function renderPipeField(value) {
    var counts = {
      "5": 17,
      "10": 13,
      "15": 10,
      "20": 8,
      "25": 6,
      "30": 5,
      "variable": 11
    };
    var count = counts[value];
    var index = 0;

    while (pipeField.firstChild) { pipeField.removeChild(pipeField.firstChild); }
    while (index < count) {
      var run = document.createElement("span");
      run.className = "rk-sp-pipe-run";
      if (value === "variable") {
        if (index > 5) { run.style.marginLeft = "8px"; }
      }
      pipeField.appendChild(run);
      index += 1;
    }
    visualLabel.textContent = spacingLabel(value);
    pipeField.setAttribute("aria-label", "Schemat ideowy gęstości przewodów dla rozstawu " + spacingLabel(value));
  }

  function analyze() {
    var ready = [];
    var warnings = [];
    var next = [];
    var spacingValue = spacing.value;
    var qReady = false;
    var systemReady = false;
    var criticalReady = false;
    var allReady = false;
    var specialSpacing = false;

    if (loss.value === "yes") {
      setNode(nodeLoss, nodeLossNote, "is-ready", "obciążenie każdego pomieszczenia");
      addUnique(ready, "Masz projektową stratę ciepła osobno dla pomieszczeń.");
    } else if (loss.value === "average") {
      setNode(nodeLoss, nodeLossNote, "is-watch", "wartość całego domu nie wystarcza");
      addUnique(warnings, "Średnia dla budynku nie pokazuje różnic pomiędzy pomieszczeniami.");
      addUnique(next, "Wyznacz projektową stratę ciepła każdego pomieszczenia.");
    } else {
      setNode(nodeLoss, nodeLossNote, "is-missing", "brak obliczenia");
      addUnique(warnings, "Brakuje podstawy do określenia wymaganej mocy pola grzewczego.");
      addUnique(next, "Policz obciążenie cieplne każdego pomieszczenia.");
    }

    if (active.value === "yes") {
      setNode(nodeActive, nodeActiveNote, "is-ready", "pola grzewcze są oznaczone");
      addUnique(ready, "Powierzchnie czynne są zaznaczone na rzucie.");
    } else {
      setNode(nodeActive, nodeActiveNote, "is-missing", "brak oznaczenia");
      addUnique(warnings, "Powierzchnia całkowita może zawyżać dostępne pole grzewcze.");
      addUnique(next, "Zaznacz zabudowę stałą i policz rzeczywiście ogrzewaną powierzchnię.");
    }

    if (loss.value === "yes") {
      if (active.value === "yes") {
        qReady = true;
      }
    }
    if (qReady) {
      setNode(nodeQ, nodeQNote, "is-ready", "można policzyć Q / A czynna");
      addUnique(ready, "Można wyznaczyć wymaganą moc jednostkową aktywnej podłogi.");
    } else {
      setNode(nodeQ, nodeQNote, "is-missing", "nie można wiarygodnie wyznaczyć");
    }

    if (temps.value === "calculated") {
      addUnique(ready, "Temperatury zasilania i powrotu wynikają z obliczeń.");
    } else if (temps.value === "assumed") {
      addUnique(warnings, "Temperatury są założeniem, a nie wynikiem sprawdzonego punktu pracy.");
      addUnique(next, "Zweryfikuj zasilanie i powrót dla obliczeniowych warunków budynku.");
    } else {
      addUnique(warnings, "Bez temperatur wody nie można porównać charakterystyk rozstawu.");
      addUnique(next, "Ustal projektową temperaturę zasilania i powrotu.");
    }

    if (system.value === "yes") {
      addUnique(ready, "Konstrukcja oraz charakterystyka systemu są określone.");
    } else {
      addUnique(warnings, "Brakuje danych o warstwach i charakterystyce zastosowanej podłogi.");
      addUnique(next, "Określ system, położenie rury i warstwy nad przewodem.");
    }

    if (finish.value === "yes") {
      addUnique(ready, "Opór wykończenia i jego ograniczenie temperatury są sprawdzone.");
    } else {
      addUnique(warnings, "Nieznany opór lub limit okładziny może zmienić dostępny wynik cieplny.");
      addUnique(next, "Sprawdź cały zestaw okładziny i podkładu.");
    }

    systemReady = [
      temps.value === "calculated",
      system.value === "yes",
      finish.value === "yes"
    ].every(function (value) { return value; });

    if (systemReady) {
      setNode(nodeSystem, nodeSystemNote, "is-ready", "warunki porównania są określone");
    } else if (system.value === "yes") {
      setNode(nodeSystem, nodeSystemNote, "is-watch", "uzupełnij temperatury lub okładzinę");
    } else {
      setNode(nodeSystem, nodeSystemNote, "is-missing", "brak pełnej charakterystyki");
    }

    if (qReady) {
      if (systemReady) {
        setNode(nodeSpacing, nodeSpacingNote, "is-ready", spacingLabel(spacingValue) + " ma podstawy do porównania");
      } else {
        setNode(nodeSpacing, nodeSpacingNote, "is-watch", spacingLabel(spacingValue) + " bez pełnej charakterystyki");
      }
    } else {
      setNode(nodeSpacing, nodeSpacingNote, "is-missing", spacingLabel(spacingValue) + " przyjęte przed bilansem");
    }

    if (spacingValue === "5") {
      specialSpacing = true;
      addUnique(warnings, "Rozstaw 5 cm wymaga sprawdzenia promienia gięcia, mocowania, ilości rury, podziału pętli i realnej korzyści cieplnej.");
      addUnique(next, "Potwierdź wykonalność rozstawu 5 cm w dokumentacji zastosowanego systemu.");
    } else if (spacingValue === "25") {
      specialSpacing = true;
      addUnique(warnings, "Rozstaw 25 cm wymaga szczególnego sprawdzenia wydajności i równomierności temperatury.");
      addUnique(next, "Porównaj rozstaw 25 cm z charakterystyką systemu w warunkach projektowych.");
    } else if (spacingValue === "30") {
      specialSpacing = true;
      addUnique(warnings, "Rozstaw 30 cm nie może wynikać wyłącznie z niskiego średniego obciążenia budynku.");
      addUnique(next, "Sprawdź rozstaw 30 cm pod kątem mocy, komfortu i dopuszczenia systemowego.");
    } else if (spacingValue === "variable") {
      if (zones.value === "yes") {
        addUnique(ready, "Granice pól o różnym rozstawie są oznaczone.");
      } else {
        specialSpacing = true;
        addUnique(warnings, "Zmienny rozstaw bez oznaczenia granic jest niejednoznaczny dla wykonawcy.");
        addUnique(next, "Zaznacz szerokości stref i przejścia pomiędzy rozstawami.");
      }
    } else if (spacingValue === "10") {
      addUnique(warnings, "Rozstaw 10 cm nadal wymaga porównania; nie jest automatycznie poprawny.");
    } else if (spacingValue === "15") {
      addUnique(warnings, "Rozstaw 15 cm nie jest wartością domyślną bez wyniku cieplnego.");
    } else if (spacingValue === "20") {
      addUnique(warnings, "Rozstaw 20 cm może być wystarczający tylko po potwierdzeniu wydajności i równomierności.");
    }

    if (zones.value === "no") {
      if (spacingValue !== "variable") {
        addUnique(warnings, "Jeden rozstaw w całym pomieszczeniu wymaga potwierdzenia, że nie ma uzasadnionej strefy o innym obciążeniu.");
      }
    } else {
      addUnique(ready, "Podział pola na strefy jest uwzględniony na rzucie.");
    }

    if (exclusions.value === "yes") {
      addUnique(ready, "Zabudowa i miejsca bez rur są uwzględnione.");
    } else {
      addUnique(warnings, "Zmiana tras wokół zabudowy może zmniejszyć powierzchnię czynną i wydłużyć pętle.");
      addUnique(next, "Uzgodnij miejsca bez rur przed ostatecznym podziałem obwodów.");
    }

    if (edge.value === "yes") {
      addUnique(ready, "Strefa brzegowa ma obliczone uzasadnienie i granice.");
    } else if (edge.value === "notneeded") {
      addUnique(ready, "Brak strefy brzegowej wynika z obliczeń.");
    } else {
      addUnique(warnings, "Strefa brzegowa nie powinna być dodawana z automatu przy każdym oknie.");
      addUnique(next, "Potwierdź obciążenie i potrzebę zagęszczenia przy przegrodzie zewnętrznej.");
    }

    if (loops.value === "yes") {
      setNode(nodeLoops, nodeLoopsNote, "is-ready", "długości obejmują dobiegi");
      addUnique(ready, "Pętle są naniesione i mają policzone całkowite długości.");
    } else {
      setNode(nodeLoops, nodeLoopsNote, "is-missing", "brak długości z dobiegami");
      addUnique(warnings, "Nie wiadomo, ile obwodów powstanie po zastosowaniu wybranego rozstawu.");
      addUnique(next, "Nanieś rury na rzut, dodaj dobiegi i policz każdą pętlę.");
    }

    if (hydraulics.value === "yes") {
      setNode(nodeHydraulics, nodeHydraulicsNote, "is-ready", "przepływy i pętla krytyczna sprawdzone");
      addUnique(ready, "Przepływy i straty ciśnienia zostały zweryfikowane.");
    } else {
      setNode(nodeHydraulics, nodeHydraulicsNote, "is-missing", "brak przepływów i oporów");
      addUnique(warnings, "Rozstaw nie jest jeszcze połączony z przepływami i punktem pracy pompy.");
      addUnique(next, "Policz przepływy, opory pętli oraz wspólnych odcinków instalacji.");
    }

    if (stage.value === "screed") {
      if (warnings.length > 2) {
        addUnique(warnings, "Jesteś przed jastrychem — wstrzymaj zakrycie do czasu wyjaśnienia braków.");
        addUnique(next, "Porównaj instalację z aktualnym projektem przed próbą i zakryciem.");
      }
    } else if (stage.value === "drawing") {
      if (loops.value === "no") {
        addUnique(warnings, "Rzut bez długości i przepływów nie jest kompletną podstawą regulacji.");
      }
    }

    criticalReady = [
      loss.value === "yes",
      active.value === "yes",
      temps.value === "calculated",
      system.value === "yes",
      finish.value === "yes"
    ].every(function (value) { return value; });

    allReady = [
      criticalReady,
      exclusions.value === "yes",
      loops.value === "yes",
      hydraulics.value === "yes",
      edge.value !== "unknown"
    ].every(function (value) { return value; });

    if (spacingValue === "variable") {
      if (zones.value !== "yes") { allReady = false; }
    }
    if (specialSpacing) { allReady = false; }

    status.classList.remove("is-good");
    status.classList.remove("is-watch");
    status.classList.remove("is-missing");

    if (!criticalReady) {
      status.classList.add("is-missing");
      statusIcon.textContent = "×";
      statusTitle.textContent = "Rozstaw przyjęty bez pełnych obliczeń";
      statusText.textContent = "Brakuje co najmniej jednego elementu potrzebnego do wiarygodnego porównania rozstawów.";
    } else if (!allReady) {
      status.classList.add("is-watch");
      statusIcon.textContent = "!";
      statusTitle.textContent = "Dobór wymaga uzupełnienia";
      statusText.textContent = "Podstawa cieplna jest dostępna, ale geometria, strefy albo hydraulika nie są jeszcze kompletne.";
    } else {
      status.classList.add("is-good");
      statusIcon.textContent = "✓";
      statusTitle.textContent = "Dobór ma udokumentowane podstawy do weryfikacji";
      statusText.textContent = "Proces jest kompletny. Przed wykonaniem nadal porównaj wartości z aktualnym rzutem i dokumentacją zastosowanego systemu.";
    }

    addUnique(next, "Zatwierdź rozstaw dopiero po jednoczesnym sprawdzeniu wyniku cieplnego, geometrii i hydrauliki.");
    renderList(readyList, ready, "Na tym etapie nie wskazano jeszcze udokumentowanego elementu.");
    renderList(warningList, warnings, "Audyt nie wykrył braków, ale wynik nadal wymaga zgodności z projektem i dokumentacją systemu.");
    renderList(nextList, next, "Porównaj komplet dokumentacji z rzeczywistym wykonaniem.");
    renderPipeField(spacingValue);
  }

  [
    stage,
    loss,
    active,
    temps,
    system,
    finish,
    exclusions,
    loops,
    hydraulics,
    edge,
    spacing,
    zones
  ].forEach(function (field) {
    field.addEventListener("change", analyze);
  });
  button.addEventListener("click", analyze);
  analyze();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">Rozstaw rur w wodnym ogrzewaniu podłogowym – zasady projektowania.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Salon ile pętli podłogówki? Kalkulator długości rur i przepływu.</title>
		<link>https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/</link>
					<comments>https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Wed, 12 Feb 2025 10:31:08 +0000</pubDate>
				<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Niskotemperaturowe systemy grzewcze]]></category>
		<category><![CDATA[Nowoczesne systemy grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki budowlane]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Rozstaw pętli]]></category>
		<category><![CDATA[Rozstaw rur ogrzewania]]></category>
		<category><![CDATA[Rozstaw rur podłogówki]]></category>
		<category><![CDATA[Rozstaw rur w podłogówce]]></category>
		<category><![CDATA[Salon]]></category>
		<category><![CDATA[Systemy grzewcze]]></category>
		<category><![CDATA[budowa]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[instalacje]]></category>
		<category><![CDATA[ogrzewanie]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pętle grzewcze]]></category>
		<category><![CDATA[podłogówka]]></category>
		<category><![CDATA[poradnik]]></category>
		<category><![CDATA[remont]]></category>
		<category><![CDATA[salon]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2173</guid>

					<description><![CDATA[<p>Planujesz ogrzewanie podłogowe w salonie i zastanawiasz się, ile pętli podłogówki będzie optymalne dla Twojej przestrzeni? W tym artykule znajdziesz szczegółowe wyliczenia dla salonów o powierzchni od 20 m² do 50 m², uwzględniające rozstaw rur, długość pętli oraz praktyczne wskazówki. Dowiesz się, jak rozplanować pętle grzewcze, aby zapewnić równomierne nagrzewanie podłogi i efektywność systemu. Sprawdź, jak dostosować liczbę pętli do swojego metrażu i uniknąć typowych błędów!</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/">Salon ile pętli podłogówki? Kalkulator długości rur i przepływu.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-salon-guide {
    --rk-dark: #102536;
    --rk-navy: #14384d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e8fbff;
    --rk-orange: #ff6a3d;
    --rk-orange-soft: #fff1eb;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #d89c19;
    --rk-yellow-soft: #fff8df;
    --rk-red: #d94b3d;
    --rk-red-soft: #fff0ee;
    --rk-purple: #695ac9;
    --rk-purple-soft: #f1efff;
    --rk-ink: #1f2c37;
    --rk-text: #475967;
    --rk-muted: #6b7e8a;
    --rk-line: #d5e4eb;
    --rk-soft: #f4f9fb;
    --rk-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 34px auto 72px;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.75;
  }

  #rk-salon-guide,
  #rk-salon-guide * { box-sizing: border-box; }
  #rk-salon-guide img,
  #rk-salon-guide svg,
  #rk-salon-guide canvas { max-width: 100%; }
  #rk-salon-guide button,
  #rk-salon-guide input,
  #rk-salon-guide select,
  #rk-salon-guide label,
  #rk-salon-guide summary,
  #rk-salon-guide a { font: inherit; -webkit-tap-highlight-color: transparent; }
  #rk-salon-guide button,
  #rk-salon-guide input,
  #rk-salon-guide select { max-width: 100%; }
  #rk-salon-guide a {
    color: var(--rk-blue);
    font-weight: 780;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }
  #rk-salon-guide a:hover,
  #rk-salon-guide a:focus-visible { color: var(--rk-red); }
  #rk-salon-guide p,
  #rk-salon-guide ul,
  #rk-salon-guide ol { margin-top: 0; margin-bottom: 1.08em; }
  #rk-salon-guide h2,
  #rk-salon-guide h3,
  #rk-salon-guide h4 {
    margin-top: 0;
    color: var(--rk-dark);
    font-weight: 920;
    letter-spacing: -.035em;
    line-height: 1.15;
  }
  #rk-salon-guide h2 { margin-bottom: 18px; font-size: clamp(1.72rem, 4vw, 2.68rem); }
  #rk-salon-guide h3 { margin-bottom: 11px; font-size: clamp(1.12rem, 2.35vw, 1.46rem); }
  #rk-salon-guide h4 { margin-bottom: 8px; font-size: 1.02rem; }
  #rk-salon-guide strong { color: var(--rk-dark); }

  #rk-salon-guide .rk-salon-progress {
    position: fixed;
    z-index: 9999;
    top: 0;
    left: 0;
    width: 0;
    height: 4px;
    background: linear-gradient(90deg, var(--rk-cyan), var(--rk-orange));
    box-shadow: 0 0 12px rgba(37, 199, 216, .5);
    pointer-events: none;
  }

  #rk-salon-guide .rk-salon-shell {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 26px;
    background: var(--rk-white);
    box-shadow: 0 24px 70px rgba(16, 37, 54, .11);
  }

  #rk-salon-guide .rk-salon-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(38px, 7vw, 78px) clamp(25px, 6vw, 76px) 42px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 4%, rgba(37, 199, 216, .32), transparent 28%),
      radial-gradient(circle at 6% 95%, rgba(255, 106, 61, .22), transparent 27%),
      linear-gradient(135deg, #0d2332 0%, #143e53 58%, #0b6680 100%);
  }
  #rk-salon-guide .rk-salon-hero::after {
    position: absolute;
    right: -70px;
    bottom: -115px;
    width: 340px;
    height: 340px;
    border: 44px solid rgba(255, 255, 255, .055);
    border-radius: 50%;
    content: "";
  }
  #rk-salon-guide .rk-salon-kicker {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 15px;
    color: #78efff;
    font-size: .69rem;
    font-weight: 950;
    letter-spacing: .09em;
    line-height: 1.2;
    text-transform: uppercase;
  }
  #rk-salon-guide .rk-salon-kicker::before {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 6px rgba(255, 106, 61, .14);
    content: "";
  }
  #rk-salon-guide .rk-salon-hero-title {
    position: relative;
    z-index: 1;
    max-width: 940px;
    margin: 0 0 19px;
    color: var(--rk-white);
    font-size: clamp(2.05rem, 5.4vw, 4.35rem);
    font-weight: 950;
    letter-spacing: -.055em;
    line-height: 1.01;
  }
  #rk-salon-guide .rk-salon-hero-title span { color: #78efff; }
  #rk-salon-guide .rk-salon-lead {
    position: relative;
    z-index: 1;
    max-width: 880px;
    margin-bottom: 25px;
    color: #d8e9ef;
    font-size: clamp(1.02rem, 2vw, 1.24rem);
    line-height: 1.68;
  }
  #rk-salon-guide .rk-salon-hero-tags {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin-bottom: 28px;
  }
  #rk-salon-guide .rk-salon-hero-tag {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 8px 13px;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 999px;
    color: #eefcff;
    background: rgba(255, 255, 255, .075);
    font-size: .72rem;
    font-weight: 850;
    line-height: 1.3;
  }
  #rk-salon-guide .rk-salon-byline {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 8px 18px;
    color: #bad3dc;
    font-size: .72rem;
    font-weight: 720;
  }
  #rk-salon-guide .rk-salon-byline strong { color: var(--rk-white); }
  #rk-salon-guide .rk-salon-hero-metrics {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-top: 34px;
  }
  #rk-salon-guide .rk-salon-hero-metric {
    padding: 17px 18px;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 16px;
    background: rgba(5, 24, 36, .28);
    backdrop-filter: blur(6px);
  }
  #rk-salon-guide .rk-salon-hero-metric b {
    display: block;
    margin-bottom: 4px;
    color: #7af0ff;
    font-size: 1.04rem;
    font-weight: 950;
  }
  #rk-salon-guide .rk-salon-hero-metric span {
    display: block;
    color: #d5e7ec;
    font-size: .7rem;
    line-height: 1.45;
  }

  #rk-salon-guide .rk-salon-nav {
    position: sticky;
    z-index: 20;
    top: 0;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    gap: 10px;
    padding: 11px clamp(14px, 3vw, 28px);
    border-bottom: 1px solid var(--rk-line);
    background: rgba(255, 255, 255, .97);
    box-shadow: 0 8px 24px rgba(16, 37, 54, .07);
    backdrop-filter: blur(10px);
  }
  #rk-salon-guide .rk-salon-nav-label {
    color: var(--rk-dark);
    font-size: .62rem;
    font-weight: 950;
    letter-spacing: .06em;
    text-transform: uppercase;
    white-space: nowrap;
  }
  #rk-salon-guide .rk-salon-nav-track {
    display: flex;
    gap: 7px;
    overflow-x: auto;
    padding: 2px 2px 5px;
    scrollbar-color: var(--rk-cyan) var(--rk-soft);
    scrollbar-width: thin;
  }
  #rk-salon-guide .rk-salon-nav-track a {
    flex: 0 0 auto;
    padding: 7px 11px;
    border-radius: 999px;
    color: var(--rk-navy);
    background: var(--rk-soft);
    font-size: .64rem;
    font-weight: 900;
    line-height: 1.2;
    text-decoration: none;
    white-space: nowrap;
  }
  #rk-salon-guide .rk-salon-nav-track a:hover,
  #rk-salon-guide .rk-salon-nav-track a:focus-visible { color: var(--rk-white); background: var(--rk-blue); }

  #rk-salon-guide .rk-salon-content { padding: clamp(26px, 5.5vw, 64px); }
  #rk-salon-guide .rk-salon-section {
    margin-bottom: clamp(48px, 8vw, 86px);
    scroll-margin-top: 88px;
  }
  #rk-salon-guide .rk-salon-section:last-child { margin-bottom: 0; }
  #rk-salon-guide .rk-salon-section-head { max-width: 900px; margin-bottom: 24px; }
  #rk-salon-guide .rk-salon-section-head > p:last-child { margin-bottom: 0; color: var(--rk-text); font-size: 1.02rem; }
  #rk-salon-guide .rk-salon-eyebrow {
    display: block;
    margin-bottom: 9px;
    color: var(--rk-blue);
    font-size: .67rem;
    font-weight: 950;
    letter-spacing: .08em;
    text-transform: uppercase;
  }
  #rk-salon-guide .rk-salon-grid-2,
  #rk-salon-guide .rk-salon-grid-3,
  #rk-salon-guide .rk-salon-grid-4 { display: grid; gap: 18px; }
  #rk-salon-guide .rk-salon-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-salon-guide .rk-salon-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-salon-guide .rk-salon-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #rk-salon-guide .rk-salon-card {
    padding: clamp(21px, 3.5vw, 31px);
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-white);
    box-shadow: 0 10px 28px rgba(16, 37, 54, .065);
  }
  #rk-salon-guide .rk-salon-card p:last-child,
  #rk-salon-guide .rk-salon-card ul:last-child,
  #rk-salon-guide .rk-salon-card ol:last-child { margin-bottom: 0; }
  #rk-salon-guide .rk-salon-card-accent { border-top: 5px solid var(--rk-cyan); }
  #rk-salon-guide .rk-salon-card-orange { border-top: 5px solid var(--rk-orange); }
  #rk-salon-guide .rk-salon-card-green { border-top: 5px solid var(--rk-green); }
  #rk-salon-guide .rk-salon-card-purple { border-top: 5px solid var(--rk-purple); }
  #rk-salon-guide .rk-salon-number {
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    margin-bottom: 15px;
    border-radius: 13px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: .85rem;
    font-weight: 950;
  }
  #rk-salon-guide .rk-salon-answer {
    position: relative;
    overflow: hidden;
    padding: clamp(27px, 5vw, 45px);
    border-radius: 22px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-dark), #18516a);
  }
  #rk-salon-guide .rk-salon-answer::after {
    position: absolute;
    right: -72px;
    bottom: -86px;
    width: 225px;
    height: 225px;
    border: 32px solid rgba(255,255,255,.05);
    border-radius: 50%;
    content: "";
  }
  #rk-salon-guide .rk-salon-answer h3 { position: relative; z-index: 1; color: var(--rk-white); }
  #rk-salon-guide .rk-salon-answer p { position: relative; z-index: 1; color: #d9ebf0; }
  #rk-salon-guide .rk-salon-answer p:last-child { margin-bottom: 0; }
  #rk-salon-guide .rk-salon-answer strong { color: #7af0ff; }
  #rk-salon-guide .rk-salon-note,
  #rk-salon-guide .rk-salon-warning,
  #rk-salon-guide .rk-salon-good {
    padding: 19px 21px;
    border-left: 5px solid;
    border-radius: 0 14px 14px 0;
  }
  #rk-salon-guide .rk-salon-note { border-color: var(--rk-blue); background: var(--rk-cyan-soft); }
  #rk-salon-guide .rk-salon-warning { border-color: var(--rk-orange); background: var(--rk-orange-soft); }
  #rk-salon-guide .rk-salon-good { border-color: var(--rk-green); background: var(--rk-green-soft); }
  #rk-salon-guide .rk-salon-note p:last-child,
  #rk-salon-guide .rk-salon-warning p:last-child,
  #rk-salon-guide .rk-salon-good p:last-child { margin-bottom: 0; }
  #rk-salon-guide .rk-salon-formula {
    overflow-x: auto;
    margin: 22px 0;
    padding: 19px 22px;
    border: 1px solid var(--rk-line);
    border-radius: 15px;
    color: var(--rk-dark);
    background: var(--rk-soft);
    font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
    font-size: clamp(.82rem, 2vw, 1rem);
    font-weight: 800;
    text-align: center;
    white-space: nowrap;
  }
  #rk-salon-guide .rk-salon-mini-label {
    display: inline-block;
    margin-bottom: 7px;
    color: var(--rk-blue);
    font-size: .63rem;
    font-weight: 950;
    letter-spacing: .06em;
    text-transform: uppercase;
  }

  #rk-salon-guide .rk-salon-table-wrap {
    overflow-x: auto;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-white);
    box-shadow: 0 10px 28px rgba(16,37,54,.055);
  }
  #rk-salon-guide .rk-salon-table { width: 100%; border-collapse: collapse; }
  #rk-salon-guide .rk-salon-table th,
  #rk-salon-guide .rk-salon-table td { padding: 15px 16px; border-bottom: 1px solid var(--rk-line); text-align: left; vertical-align: top; }
  #rk-salon-guide .rk-salon-table tr:last-child td { border-bottom: 0; }
  #rk-salon-guide .rk-salon-table th {
    color: var(--rk-white);
    background: var(--rk-navy);
    font-size: .69rem;
    font-weight: 900;
    letter-spacing: .025em;
    line-height: 1.35;
    text-transform: uppercase;
  }
  #rk-salon-guide .rk-salon-table td { color: var(--rk-text); font-size: .84rem; }
  #rk-salon-guide .rk-salon-table tbody tr:nth-child(even) td { background: #f8fbfc; }

  #rk-salon-guide .rk-salon-tool {
    overflow: hidden;
    border: 1px solid #345d70;
    border-radius: 24px;
    color: var(--rk-white);
    background: #102b3b;
    box-shadow: 0 22px 58px rgba(16,37,54,.18);
  }
  #rk-salon-guide .rk-salon-tool-head {
    padding: clamp(27px, 5vw, 45px);
    background:
      radial-gradient(circle at 94% 8%, rgba(37,199,216,.25), transparent 33%),
      linear-gradient(135deg, #123044, #17566b);
  }
  #rk-salon-guide .rk-salon-tool-head h3 { margin-bottom: 10px; color: var(--rk-white); font-size: clamp(1.45rem, 3.5vw, 2.35rem); }
  #rk-salon-guide .rk-salon-tool-head p { max-width: 880px; margin-bottom: 0; color: #d3e8ee; }
  #rk-salon-guide .rk-salon-tool-body { display: grid; gap: 18px; padding: clamp(18px, 3.5vw, 32px); }
  #rk-salon-guide .rk-salon-tool-panel {
    padding: clamp(19px, 3vw, 29px);
    border: 1px solid #3b6375;
    border-radius: 18px;
    background: #173545;
  }
  #rk-salon-guide .rk-salon-tool-panel h4 { margin-bottom: 7px; color: var(--rk-white); font-size: 1.13rem; }
  #rk-salon-guide .rk-salon-tool-panel > p { color: #bed5de; font-size: .75rem; }
  #rk-salon-guide .rk-salon-input-group + .rk-salon-input-group {
    margin-top: 24px;
    padding-top: 22px;
    border-top: 1px solid #3b6375;
  }
  #rk-salon-guide .rk-salon-input-title {
    display: block;
    margin-bottom: 12px;
    color: #6feafa;
    font-size: .64rem;
    font-weight: 950;
    letter-spacing: .07em;
    text-transform: uppercase;
  }
  #rk-salon-guide .rk-salon-fields {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
  }
  #rk-salon-guide .rk-salon-field { min-width: 0; }
  #rk-salon-guide .rk-salon-field label {
    display: block;
    margin-bottom: 6px;
    color: #eaf8fb;
    font-size: .7rem;
    font-weight: 850;
    line-height: 1.35;
  }
  #rk-salon-guide .rk-salon-field input,
  #rk-salon-guide .rk-salon-field select {
    width: 100%;
    min-height: 46px;
    padding: 10px 11px;
    border: 1px solid #88a8b5;
    border-radius: 10px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: .86rem;
    outline: 0;
  }
  #rk-salon-guide .rk-salon-field input:focus,
  #rk-salon-guide .rk-salon-field select:focus { border-color: var(--rk-cyan); box-shadow: 0 0 0 3px rgba(37,199,216,.18); }
  #rk-salon-guide .rk-salon-field small { display: block; margin-top: 5px; color: #9dbac5; font-size: .61rem; line-height: 1.4; }
  #rk-salon-guide .rk-salon-tool-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 11px; margin-top: 22px; }
  #rk-salon-guide .rk-salon-calc-button,
  #rk-salon-guide .rk-salon-reset-button {
    min-height: 47px;
    padding: 11px 18px;
    border-radius: 11px;
    cursor: pointer;
    font-weight: 900;
    line-height: 1.2;
  }
  #rk-salon-guide .rk-salon-calc-button { border: 1px solid var(--rk-cyan); color: var(--rk-dark); background: var(--rk-cyan); }
  #rk-salon-guide .rk-salon-reset-button { border: 1px solid #7093a2; color: #eaf8fb; background: transparent; }
  #rk-salon-guide .rk-salon-calc-button:hover,
  #rk-salon-guide .rk-salon-calc-button:focus-visible { background: #75effa; }
  #rk-salon-guide .rk-salon-reset-button:hover,
  #rk-salon-guide .rk-salon-reset-button:focus-visible { border-color: var(--rk-white); color: var(--rk-white); }
  #rk-salon-guide .rk-salon-error {
    display: none;
    margin-top: 17px;
    padding: 13px 15px;
    border-left: 4px solid var(--rk-orange);
    border-radius: 0 10px 10px 0;
    color: #ffe8df;
    background: rgba(217,75,61,.19);
    font-size: .74rem;
  }
  #rk-salon-guide .rk-salon-error.is-visible { display: block; }
  #rk-salon-guide .rk-salon-results { display: grid; gap: 18px; }
  #rk-salon-guide .rk-salon-result-lead {
    padding: clamp(23px, 4vw, 35px);
    border: 1px solid #3d6e7e;
    border-radius: 18px;
    background: linear-gradient(135deg, #173c4e, #195a6c);
  }
  #rk-salon-guide .rk-salon-result-lead span {
    display: block;
    margin-bottom: 5px;
    color: #8aedfa;
    font-size: .64rem;
    font-weight: 950;
    letter-spacing: .07em;
    text-transform: uppercase;
  }
  #rk-salon-guide .rk-salon-result-lead strong {
    display: block;
    color: var(--rk-white);
    font-size: clamp(2rem, 6vw, 4rem);
    font-weight: 950;
    letter-spacing: -.055em;
    line-height: 1;
  }
  #rk-salon-guide .rk-salon-result-lead p { margin: 12px 0 0; color: #d6eaf0; font-size: .8rem; }
  #rk-salon-guide .rk-salon-metrics {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
  }
  #rk-salon-guide .rk-salon-metric {
    min-width: 0;
    padding: 17px;
    border: 1px solid #3d6272;
    border-radius: 14px;
    background: #122f3f;
  }
  #rk-salon-guide .rk-salon-metric span { display: block; margin-bottom: 6px; color: #9dbdc8; font-size: .59rem; font-weight: 850; line-height: 1.35; text-transform: uppercase; }
  #rk-salon-guide .rk-salon-metric strong { display: block; color: var(--rk-white); font-size: 1.22rem; font-weight: 950; line-height: 1.15; overflow-wrap: anywhere; }
  #rk-salon-guide .rk-salon-metric small { display: block; margin-top: 5px; color: #89aab6; font-size: .57rem; line-height: 1.35; }
  #rk-salon-guide .rk-salon-result-status {
    padding: 17px 19px;
    border-left: 5px solid var(--rk-green);
    border-radius: 0 13px 13px 0;
    color: #d9f5eb;
    background: rgba(22,131,107,.19);
    font-size: .78rem;
  }
  #rk-salon-guide .rk-salon-result-status.is-borderline { border-color: var(--rk-yellow); color: #fff2c4; background: rgba(216,156,25,.16); }
  #rk-salon-guide .rk-salon-result-status.is-warning { border-color: var(--rk-orange); color: #ffe3d9; background: rgba(255,106,61,.16); }
  #rk-salon-guide .rk-salon-result-status strong { color: inherit; }
  #rk-salon-guide .rk-salon-compare-wrap { overflow-x: auto; border: 1px solid #3d6272; border-radius: 15px; }
  #rk-salon-guide .rk-salon-compare { width: 100%; border-collapse: collapse; min-width: 720px; }
  #rk-salon-guide .rk-salon-compare th,
  #rk-salon-guide .rk-salon-compare td { padding: 13px 14px; border-bottom: 1px solid #3d6272; text-align: left; }
  #rk-salon-guide .rk-salon-compare tr:last-child td { border-bottom: 0; }
  #rk-salon-guide .rk-salon-compare th { color: #a9cad4; background: #102b3b; font-size: .61rem; font-weight: 900; text-transform: uppercase; }
  #rk-salon-guide .rk-salon-compare td { color: #e6f3f6; font-size: .72rem; }
  #rk-salon-guide .rk-salon-compare tr.is-recommended td { color: var(--rk-white); background: rgba(37,199,216,.13); font-weight: 850; }
  #rk-salon-guide .rk-salon-badge {
    display: inline-flex;
    padding: 5px 8px;
    border-radius: 999px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: .56rem;
    font-weight: 950;
    line-height: 1.2;
  }
  #rk-salon-guide .rk-salon-badge.is-pass { background: var(--rk-green); }
  #rk-salon-guide .rk-salon-badge.is-limit { background: var(--rk-yellow); }
  #rk-salon-guide .rk-salon-badge.is-fail { background: var(--rk-red); }
  #rk-salon-guide .rk-salon-visual-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    align-items: stretch;
  }
  #rk-salon-guide .rk-salon-chart-card,
  #rk-salon-guide .rk-salon-plan-card {
    min-width: 0;
    padding: 20px;
    border: 1px solid #3d6272;
    border-radius: 16px;
    background: #122f3f;
  }
  #rk-salon-guide .rk-salon-chart-card h4,
  #rk-salon-guide .rk-salon-plan-card h4 { color: var(--rk-white); }
  #rk-salon-guide .rk-salon-chart-card p,
  #rk-salon-guide .rk-salon-plan-card p { color: #a9c5cf; font-size: .67rem; }
  #rk-salon-guide .rk-salon-canvas-wrap {
    position: relative;
    width: 100%;
    min-height: 270px;
    border-radius: 12px;
    background: #f7fbfc;
  }
  #rk-salon-guide .rk-salon-canvas-wrap canvas { display: block; width: 100%; height: 270px; }
  #rk-salon-guide .rk-salon-plan-svg { display: block; width: 100%; min-height: 270px; border-radius: 12px; background: #f7fbfc; }
  #rk-salon-guide .rk-salon-diagnostics { display: grid; gap: 10px; }
  #rk-salon-guide .rk-salon-diagnostic {
    padding: 13px 15px;
    border-left: 4px solid var(--rk-cyan);
    border-radius: 0 10px 10px 0;
    color: #d8edf2;
    background: rgba(37,199,216,.08);
    font-size: .7rem;
  }
  #rk-salon-guide .rk-salon-diagnostic.is-warn { border-color: var(--rk-orange); background: rgba(255,106,61,.1); }
  #rk-salon-guide .rk-salon-tool-foot { padding: 0 clamp(18px, 3.5vw, 32px) 25px; color: #8eacb7; font-size: .61rem; }

  #rk-salon-guide .rk-salon-cta {
    position: relative;
    overflow: hidden;
    margin: clamp(50px, 8vw, 84px) 0;
    padding: clamp(28px, 5vw, 48px);
    border-radius: 23px;
    color: var(--rk-white);
    background: linear-gradient(135deg, #123044, #12647d);
    box-shadow: 0 20px 52px rgba(16,37,54,.17);
  }
  #rk-salon-guide .rk-salon-cta::after {
    position: absolute;
    right: -75px;
    bottom: -105px;
    width: 255px;
    height: 255px;
    border: 35px solid rgba(255,255,255,.055);
    border-radius: 50%;
    content: "";
  }
  #rk-salon-guide .rk-salon-cta-title { position: relative; z-index: 1; max-width: 850px; margin-bottom: 13px; color: var(--rk-white); font-size: clamp(1.4rem, 3.5vw, 2.3rem); font-weight: 950; letter-spacing: -.035em; line-height: 1.15; }
  #rk-salon-guide .rk-salon-cta p { position: relative; z-index: 1; max-width: 900px; color: #d7eaf0; }
  #rk-salon-guide .rk-salon-cta-button {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 50px;
    padding: 12px 19px;
    border-radius: 11px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    box-shadow: 0 9px 23px rgba(0,0,0,.13);
    font-weight: 950;
    line-height: 1.25;
    text-align: center;
    text-decoration: none;
  }
  #rk-salon-guide .rk-salon-cta-button:hover,
  #rk-salon-guide .rk-salon-cta-button:focus-visible { color: var(--rk-dark); background: #79f1fb; transform: translateY(-1px); }

  #rk-salon-guide .rk-salon-steps { display: grid; gap: 13px; counter-reset: rk-salon-step; }
  #rk-salon-guide .rk-salon-step {
    position: relative;
    padding: 20px 20px 20px 73px;
    border: 1px solid var(--rk-line);
    border-radius: 15px;
    background: var(--rk-white);
  }
  #rk-salon-guide .rk-salon-step::before {
    position: absolute;
    top: 19px;
    left: 20px;
    display: grid;
    place-items: center;
    width: 36px;
    height: 36px;
    border-radius: 11px;
    color: var(--rk-white);
    background: var(--rk-blue);
    content: counter(rk-salon-step);
    counter-increment: rk-salon-step;
    font-size: .75rem;
    font-weight: 950;
  }
  #rk-salon-guide .rk-salon-step h3 { margin-bottom: 5px; font-size: 1.05rem; }
  #rk-salon-guide .rk-salon-step p { margin-bottom: 0; color: var(--rk-text); font-size: .88rem; }
  #rk-salon-guide .rk-salon-checklist { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; padding: 0; list-style: none; }
  #rk-salon-guide .rk-salon-checklist li {
    position: relative;
    margin: 0;
    padding: 16px 17px 16px 47px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    background: var(--rk-white);
    color: var(--rk-text);
  }
  #rk-salon-guide .rk-salon-checklist li::before {
    position: absolute;
    top: 17px;
    left: 17px;
    display: grid;
    place-items: center;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-green);
    content: "✓";
    font-size: .65rem;
    font-weight: 950;
  }

  #rk-salon-guide .rk-salon-faq { display: grid; gap: 11px; }
  #rk-salon-guide .rk-salon-faq details { overflow: hidden; border: 1px solid var(--rk-line); border-radius: 14px; background: var(--rk-white); }
  #rk-salon-guide .rk-salon-faq summary {
    position: relative;
    padding: 18px 54px 18px 20px;
    color: var(--rk-dark);
    cursor: pointer;
    font-weight: 900;
    line-height: 1.4;
    list-style: none;
  }
  #rk-salon-guide .rk-salon-faq summary::-webkit-details-marker { display: none; }
  #rk-salon-guide .rk-salon-faq summary::after {
    position: absolute;
    top: 50%;
    right: 19px;
    display: grid;
    place-items: center;
    width: 27px;
    height: 27px;
    border-radius: 8px;
    color: var(--rk-blue);
    background: var(--rk-cyan-soft);
    content: "+";
    font-size: 1.1rem;
    transform: translateY(-50%);
  }
  #rk-salon-guide .rk-salon-faq details[open] summary::after { content: "−"; }
  #rk-salon-guide .rk-salon-faq-answer { padding: 0 20px 19px; color: var(--rk-text); }
  #rk-salon-guide .rk-salon-faq-answer p:last-child { margin-bottom: 0; }
  #rk-salon-guide .rk-salon-sources { padding: 0; list-style: none; counter-reset: rk-salon-source; }
  #rk-salon-guide .rk-salon-sources li {
    position: relative;
    margin-bottom: 11px;
    padding: 15px 16px 15px 54px;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    background: var(--rk-soft);
    color: var(--rk-text);
  }
  #rk-salon-guide .rk-salon-sources li::before {
    position: absolute;
    top: 15px;
    left: 15px;
    display: grid;
    place-items: center;
    width: 27px;
    height: 27px;
    border-radius: 8px;
    color: var(--rk-white);
    background: var(--rk-blue);
    content: counter(rk-salon-source);
    counter-increment: rk-salon-source;
    font-size: .64rem;
    font-weight: 950;
  }

  #rk-salon-guide .rk-salon-author {
    overflow: hidden;
    margin-top: clamp(50px, 8vw, 82px);
    border: 1px solid var(--rk-line);
    border-radius: 23px;
    background: var(--rk-white);
    box-shadow: 0 18px 48px rgba(16,37,54,.1);
    scroll-margin-top: 88px;
  }
  #rk-salon-guide .rk-salon-author > input { position: absolute; opacity: 0; pointer-events: none; }
  #rk-salon-guide .rk-salon-author-head { display: flex; align-items: center; justify-content: space-between; gap: 19px; padding: 27px clamp(22px, 5vw, 46px); color: var(--rk-white); background: var(--rk-dark); }
  #rk-salon-guide .rk-salon-author-head h2 { margin-bottom: 7px; color: var(--rk-white); }
  #rk-salon-guide .rk-salon-author-head p { margin-bottom: 0; color: #d1e5ec; }
  #rk-salon-guide .rk-salon-author-mark { display: inline-flex; flex: 0 0 auto; padding: 9px 13px; border: 1px solid rgba(255,255,255,.18); border-radius: 999px; color: #7af0ff; font-size: .63rem; font-weight: 950; letter-spacing: .06em; white-space: nowrap; }
  #rk-salon-guide .rk-salon-author-layout { display: grid; grid-template-columns: 295px minmax(0, 1fr); }
  #rk-salon-guide .rk-salon-author-side { padding: 35px 27px; border-right: 1px solid var(--rk-line); background: #f8fbfc; text-align: center; }
  #rk-salon-guide .rk-salon-author-photo { overflow: hidden; width: 156px; height: 156px; margin: 0 auto 18px; border: 7px solid var(--rk-white); border-radius: 50%; box-shadow: 0 10px 28px rgba(16,37,54,.14); }
  #rk-salon-guide .rk-salon-author-photo img { width: 100%; height: 100%; object-fit: cover; }
  #rk-salon-guide .rk-salon-author-name { color: var(--rk-dark); font-size: 1.25rem; font-weight: 950; }
  #rk-salon-guide .rk-salon-author-role { margin-top: 7px; color: var(--rk-blue); font-size: .68rem; font-weight: 950; line-height: 1.45; text-transform: uppercase; }
  #rk-salon-guide .rk-salon-author-social-label { margin-top: 26px; color: var(--rk-muted); font-size: .64rem; font-weight: 900; letter-spacing: .05em; text-transform: uppercase; }
  #rk-salon-guide .rk-salon-author-social { display: flex; justify-content: center; gap: 9px; margin-top: 10px; }
  #rk-salon-guide .rk-salon-author-social a { display: grid; place-items: center; width: 42px; height: 42px; border: 1px solid var(--rk-line); border-radius: 12px; color: var(--rk-navy); background: var(--rk-white); transition: .2s ease; }
  #rk-salon-guide .rk-salon-author-social a:hover,
  #rk-salon-guide .rk-salon-author-social a:focus-visible { border-color: var(--rk-cyan); color: var(--rk-blue); transform: translateY(-2px); }
  #rk-salon-guide .rk-salon-author-social svg { width: 20px; height: 20px; fill: currentColor; }
  #rk-salon-guide .rk-salon-author-main { min-width: 0; padding: 38px clamp(25px, 5vw, 48px); }
  #rk-salon-guide .rk-salon-author-quote { position: relative; margin: 0 0 22px; padding: 30px 25px 25px 70px; border-radius: 16px; background: var(--rk-cyan-soft); }
  #rk-salon-guide .rk-salon-author-quote::before { position: absolute; top: 3px; left: 24px; color: var(--rk-cyan); content: "“"; font-size: 4.8rem; font-weight: 950; line-height: 1; }
  #rk-salon-guide .rk-salon-author-quote p { margin-bottom: 0; color: var(--rk-dark); font-size: .98rem; font-style: italic; font-weight: 800; }
  #rk-salon-guide .rk-salon-author-tabs { display: grid; grid-template-columns: repeat(3, 1fr); border: 1px solid var(--rk-line); border-radius: 14px 14px 0 0; background: var(--rk-soft); }
  #rk-salon-guide .rk-salon-author-tab { padding: 13px 8px; border-right: 1px solid var(--rk-line); color: var(--rk-muted); cursor: pointer; font-size: .68rem; font-weight: 950; text-align: center; text-transform: uppercase; }
  #rk-salon-guide .rk-salon-author-tab:last-child { border-right: 0; }
  #rk-salon-guide .rk-salon-author-panel { display: none; padding: 23px; border: 1px solid var(--rk-line); border-top: 0; border-radius: 0 0 14px 14px; color: var(--rk-text); }
  #rk-salon-guide .rk-salon-author-panel p:last-child { margin-bottom: 0; }
  #rk-salon-author-about:checked ~ .rk-salon-author-layout .rk-salon-author-panel-about,
  #rk-salon-author-exp:checked ~ .rk-salon-author-layout .rk-salon-author-panel-exp,
  #rk-salon-author-method:checked ~ .rk-salon-author-layout .rk-salon-author-panel-method { display: block; }
  #rk-salon-author-about:checked ~ .rk-salon-author-layout label[for="rk-salon-author-about"],
  #rk-salon-author-exp:checked ~ .rk-salon-author-layout label[for="rk-salon-author-exp"],
  #rk-salon-author-method:checked ~ .rk-salon-author-layout label[for="rk-salon-author-method"] { color: var(--rk-blue); background: var(--rk-white); box-shadow: inset 0 -4px 0 var(--rk-blue); }
  #rk-salon-guide .rk-salon-site-links { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 13px; }
  #rk-salon-guide .rk-salon-site-links a { padding: 7px 10px; border: 1px solid var(--rk-line); border-radius: 9px; background: var(--rk-white); font-size: .72rem; text-decoration: none; }

  #rk-salon-guide .rk-salon-final-cta { margin-bottom: 0; background: linear-gradient(135deg, #0e2433, #174d63); }
  #rk-salon-guide .rk-salon-disclaimer { margin-top: 18px; color: var(--rk-muted); font-size: .69rem; }

  @media (max-width: 980px) {
    #rk-salon-guide .rk-salon-grid-4,
    #rk-salon-guide .rk-salon-fields,
    #rk-salon-guide .rk-salon-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-salon-guide .rk-salon-grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-salon-guide .rk-salon-author-layout { grid-template-columns: 1fr; }
    #rk-salon-guide .rk-salon-author-side { border-right: 0; border-bottom: 1px solid var(--rk-line); }
  }

  @media (max-width: 760px) {
    #rk-salon-guide { margin: 18px auto 44px; font-size: 16px; }
    #rk-salon-guide .rk-salon-shell { border-radius: 18px; }
    #rk-salon-guide .rk-salon-hero-metrics,
    #rk-salon-guide .rk-salon-grid-2,
    #rk-salon-guide .rk-salon-grid-3,
    #rk-salon-guide .rk-salon-grid-4,
    #rk-salon-guide .rk-salon-visual-grid,
    #rk-salon-guide .rk-salon-checklist { grid-template-columns: 1fr; }
    #rk-salon-guide .rk-salon-nav { grid-template-columns: 1fr; gap: 5px; }
    #rk-salon-guide .rk-salon-nav-label { padding-left: 2px; }
    #rk-salon-guide .rk-salon-table-wrap { overflow: visible; border: 0; box-shadow: none; background: transparent; }
    #rk-salon-guide .rk-salon-table,
    #rk-salon-guide .rk-salon-table tbody,
    #rk-salon-guide .rk-salon-table tr,
    #rk-salon-guide .rk-salon-table td { display: block; width: 100%; }
    #rk-salon-guide .rk-salon-table thead { display: none; }
    #rk-salon-guide .rk-salon-table tr { overflow: hidden; margin-bottom: 12px; border: 1px solid var(--rk-line); border-radius: 14px; background: var(--rk-white); box-shadow: 0 8px 22px rgba(16,37,54,.055); }
    #rk-salon-guide .rk-salon-table td,
    #rk-salon-guide .rk-salon-table tbody tr:nth-child(even) td { display: grid; grid-template-columns: minmax(116px, 42%) minmax(0, 1fr); gap: 12px; padding: 12px 14px; background: var(--rk-white); }
    #rk-salon-guide .rk-salon-table td::before { color: var(--rk-muted); content: attr(data-label); font-size: .65rem; font-weight: 900; line-height: 1.35; text-transform: uppercase; }
    #rk-salon-guide .rk-salon-table tr:last-child td { border-bottom: 1px solid var(--rk-line); }
    #rk-salon-guide .rk-salon-table tr td:last-child { border-bottom: 0; }
    #rk-salon-guide .rk-salon-compare-wrap { overflow: visible; border: 0; }
    #rk-salon-guide .rk-salon-compare,
    #rk-salon-guide .rk-salon-compare tbody,
    #rk-salon-guide .rk-salon-compare tr,
    #rk-salon-guide .rk-salon-compare td { display: block; width: 100%; min-width: 0; }
    #rk-salon-guide .rk-salon-compare thead { display: none; }
    #rk-salon-guide .rk-salon-compare tr {
      overflow: hidden;
      margin-bottom: 12px;
      border: 1px solid #3d6272;
      border-radius: 13px;
      background: #102b3b;
    }
    #rk-salon-guide .rk-salon-compare td,
    #rk-salon-guide .rk-salon-compare tr.is-recommended td {
      display: grid;
      grid-template-columns: minmax(118px, 43%) minmax(0, 1fr);
      gap: 11px;
      padding: 11px 13px;
      background: transparent;
    }
    #rk-salon-guide .rk-salon-compare tr.is-recommended { background: rgba(37,199,216,.13); }
    #rk-salon-guide .rk-salon-compare td::before {
      color: #9dbdc8;
      content: attr(data-label);
      font-size: .58rem;
      font-weight: 900;
      line-height: 1.35;
      text-transform: uppercase;
    }
    #rk-salon-guide .rk-salon-compare tr:last-child td { border-bottom: 1px solid #3d6272; }
    #rk-salon-guide .rk-salon-compare tr td:last-child { border-bottom: 0; }
  }

  @media (max-width: 560px) {
    #rk-salon-guide .rk-salon-content { padding: 23px 15px; }
    #rk-salon-guide .rk-salon-hero { padding: 32px 20px 30px; }
    #rk-salon-guide .rk-salon-fields,
    #rk-salon-guide .rk-salon-metrics { grid-template-columns: 1fr; }
    #rk-salon-guide .rk-salon-tool-body { padding: 14px; }
    #rk-salon-guide .rk-salon-tool-panel { padding: 18px 14px; }
    #rk-salon-guide .rk-salon-tool-actions { display: grid; }
    #rk-salon-guide .rk-salon-calc-button,
    #rk-salon-guide .rk-salon-reset-button { width: 100%; }
    #rk-salon-guide .rk-salon-author-head { display: block; }
    #rk-salon-guide .rk-salon-author-mark { margin-top: 17px; white-space: normal; }
    #rk-salon-guide .rk-salon-author-main { padding: 24px 18px; }
    #rk-salon-guide .rk-salon-author-quote { padding: 65px 20px 22px; }
    #rk-salon-guide .rk-salon-author-quote::before { left: 20px; }
    #rk-salon-guide .rk-salon-author-tab { font-size: .56rem; }
    #rk-salon-guide .rk-salon-step { padding-left: 64px; }
    #rk-salon-guide .rk-salon-step::before { left: 15px; }
  }

  @media (prefers-reduced-motion: reduce) {
    #rk-salon-guide *,
    #rk-salon-guide *::before,
    #rk-salon-guide *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
  }
</style>

<article id="rk-salon-guide" itemscope="" itemtype="https://schema.org/TechArticle">
  <div class="rk-salon-progress" aria-hidden="true"></div>
  <div class="rk-salon-shell">
    <header class="rk-salon-hero">
      <span class="rk-salon-kicker">Obliczenia pętli w salonie</span>
      <div class="rk-salon-hero-title">Ile pętli podłogówki w salonie? <span>Policz rury, dobiegi i przepływ</span></div>
      <p class="rk-salon-lead">Sam metraż salonu nie wyznacza liczby obwodów. Potrzebne są jeszcze: powierzchnia rzeczywiście ogrzewana, rozstaw rur, strefa przy przeszkleniu, odległość od rozdzielacza, wymagana moc oraz przyjęte ograniczenia hydrauliczne.</p>
      <div class="rk-salon-hero-tags" aria-label="Zakres opracowania">
        <span class="rk-salon-hero-tag">powierzchnia czynna</span>
        <span class="rk-salon-hero-tag">rozstaw 10–20 cm</span>
        <span class="rk-salon-hero-tag">dobiegi do rozdzielacza</span>
        <span class="rk-salon-hero-tag">przepływ i opory</span>
        <span class="rk-salon-hero-tag">warianty n−1 / n / n+1</span>
      </div>
      <div class="rk-salon-byline">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Aktualizacja techniczna: <strong>31 sierpnia 2026 r.</strong></span>
        <span>Czas czytania: <strong>około 18 minut</strong></span>
      </div>
      <div class="rk-salon-hero-metrics" aria-label="Najważniejsze zasady">
        <div class="rk-salon-hero-metric"><b>Nie z samego m²</b><span>Liczba pętli wynika z metrów rury, geometrii i hydrauliki.</span></div>
        <div class="rk-salon-hero-metric"><b>Dobieg × liczba pętli</b><span>Każdy obwód ma własne zasilanie i powrót do rozdzielacza.</span></div>
        <div class="rk-salon-hero-metric"><b>Jedna wspólna analiza</b><span>Kalkulator porównuje kilka liczb obwodów przy tych samych danych.</span></div>
      </div>
    </header>

    <nav class="rk-salon-nav" aria-label="Skróty do wszystkich części artykułu">
      <span class="rk-salon-nav-label">Na skróty — wszystkie H2</span>
      <div class="rk-salon-nav-track">
        <a href="#rk-salon-szybka">Szybka odpowiedź</a>
        <a href="#rk-salon-dlaczego">Dlaczego nie sam metraż</a>
        <a href="#rk-salon-powierzchnia">Powierzchnia czynna</a>
        <a href="#rk-salon-dlugosc">Długość i dobiegi</a>
        <a href="#rk-salon-analizator">Analizator</a>
        <a href="#rk-salon-wynik">Interpretacja wyniku</a>
        <a href="#rk-salon-przyklady">20–50 m²</a>
        <a href="#rk-salon-rozstaw">Rozstaw rur</a>
        <a href="#rk-salon-strefa">Okna i strefa brzegowa</a>
        <a href="#rk-salon-kuchnia">Salon z kuchnią</a>
        <a href="#rk-salon-zabudowa">Wyspa, kominek, meble</a>
        <a href="#rk-salon-hydraulika">Hydraulika i przepływ</a>
        <a href="#rk-salon-rownosc">Równe długości?</a>
        <a href="#rk-salon-dylatacje">Dylatacje</a>
        <a href="#rk-salon-bledy">Błędy</a>
        <a href="#rk-salon-checklista">Checklista</a>
        <a href="#rk-salon-faq">FAQ</a>
        <a href="#rk-salon-zrodla">Źródła</a>
        <a href="#rk-salon-autor">Autor</a>
      </div>
    </nav>

    <div class="rk-salon-content">
      <section class="rk-salon-section" id="rk-salon-szybka">
        <div class="rk-salon-section-head">
          <span class="rk-salon-eyebrow">Odpowiedź w 30 sekund</span>
          <h2>Ile pętli podłogówki w salonie?</h2>
          <p>W salonie o powierzchni około 20–30 m² często pojawiają się 2–3 obwody, a przy 35–50 m² zwykle 3–6. To wyłącznie orientacyjny przedział — nie reguła projektowa.</p>
        </div>
        <div class="rk-salon-answer">
          <h3>Liczbę pętli wyznacza się w dwóch krokach</h3>
          <p>Najpierw szacujemy metry rury w rzeczywiście ogrzewanym polu i dodajemy <strong>osobne dobiegi każdej pętli</strong>. Następnie sprawdzamy, czy podział zapewnia akceptowalną długość obwodu, przepływ, prędkość i spadek ciśnienia.</p>
          <p>Jeżeli geometria salonu, dylatacje, wyspa, kominek lub okno HST wymuszają inny przebieg rur, liczba pętli może być większa niż wynik prostego dzielenia metrów.</p>
        </div>
        <div class="rk-salon-grid-3" style="margin-top:18px">
          <div class="rk-salon-card rk-salon-card-accent"><span class="rk-salon-mini-label">Krok 1</span><h3>Metry w polu</h3><p>Powierzchnię czynną dzielimy przez rozstaw, osobno dla części podstawowej i ewentualnej strefy brzegowej.</p></div>
          <div class="rk-salon-card rk-salon-card-orange"><span class="rk-salon-mini-label">Krok 2</span><h3>Dwa dobiegi</h3><p>Do każdej pętli doliczamy drogę od rozdzielacza do pola oraz powrót.</p></div>
          <div class="rk-salon-card rk-salon-card-green"><span class="rk-salon-mini-label">Krok 3</span><h3>Kontrola hydrauliczna</h3><p>Sprawdzamy przepływ na obwód i orientacyjny spadek ciśnienia przy podanej średnicy wewnętrznej.</p></div>
        </div>
      </section>

      <section class="rk-salon-section" id="rk-salon-dlaczego">
        <div class="rk-salon-section-head">
          <span class="rk-salon-eyebrow">Metraż to za mało</span>
          <h2>Dlaczego sam metraż salonu nie wyznacza liczby pętli?</h2>
          <p>Dwa salony po 35 m² mogą potrzebować innego podziału, mimo identycznej powierzchni wpisanej w projekcie architektonicznym.</p>
        </div>
        <div class="rk-salon-grid-2">
          <div class="rk-salon-card">
            <h3>Salon A</h3>
            <ul>
              <li>regularny prostokąt,</li>
              <li>rozdzielacz za ścianą,</li>
              <li>mało stałej zabudowy,</li>
              <li>jeden rozstaw na całej powierzchni.</li>
            </ul>
            <p>Taki układ można zwykle podzielić na równe pola bez długich dobiegów.</p>
          </div>
          <div class="rk-salon-card">
            <h3>Salon B</h3>
            <ul>
              <li>kształt litery L i otwarta kuchnia,</li>
              <li>wyspa oraz kominek,</li>
              <li>daleki rozdzielacz,</li>
              <li>duże przeszklenie z innym rozstawem.</li>
            </ul>
            <p>Ta sama powierzchnia może wymagać dodatkowego obwodu z przyczyn geometrycznych lub hydraulicznych.</p>
          </div>
        </div>
        <div class="rk-salon-warning" style="margin-top:18px"><p><strong>Ważne:</strong> źródło ciepła nie ustala liczby pętli wprost. Pompa ciepła lub kocioł wpływają na planowane temperatury wody, ale o podziale salonu decydują obciążenie cieplne, rozstaw, geometria i hydraulika.</p></div>
      </section>

      <section class="rk-salon-section" id="rk-salon-powierzchnia">
        <div class="rk-salon-section-head">
          <span class="rk-salon-eyebrow">Najważniejsza dana wejściowa</span>
          <h2>Powierzchnia całkowita a powierzchnia czynna podłogówki w salonie</h2>
          <p>Do obliczenia długości rury służy pole, na którym rzeczywiście można ułożyć ogrzewanie. Nie wolno automatycznie odejmować stałych 10 lub 15%.</p>
        </div>
        <div class="rk-salon-grid-2">
          <div class="rk-salon-card rk-salon-card-green">
            <h3>Powierzchnia czynna</h3>
            <p>To fragment podłogi objęty rurami i przewidziany do oddawania ciepła. Powinien wynikać z rzutu, wymiarów zabudowy oraz ustalonego sposobu prowadzenia instalacji.</p>
            <div class="rk-salon-formula">A<sub>czynna</sub> = A<sub>salonu</sub> − A<sub>wyłączona</sub></div>
          </div>
          <div class="rk-salon-card rk-salon-card-orange">
            <h3>Wymagana moc jednostkowa</h3>
            <p>Po ograniczeniu powierzchni czynnej ta sama strata ciepła musi zostać pokryta przez mniejsze pole grzewcze.</p>
            <div class="rk-salon-formula">q<sub>wym</sub> = Q<sub>salonu</sub> / A<sub>czynna</sub></div>
          </div>
        </div>
        <p>Jeżeli salon traci 2400 W, a rury mogą znaleźć się na 30 m², wymagana średnia moc wynosi 80 W/m². Gdy czynne pole spadnie do 24 m², rośnie do 100 W/m². Sama większa liczba pętli nie tworzy dodatkowej powierzchni grzewczej i nie gwarantuje uzyskania tej mocy.</p>
        <div class="rk-salon-note"><p>O wpływie mebli i stałej zabudowy przeczytasz szerzej w opracowaniu <a href="https://projekt-ogrzewania.pl/wodne-ogrzewanie-podlogowe-a-meble-jak-polaczyc-komfort-i-aranzacje/">ogrzewanie podłogowe a meble i aranżacja</a>.</p></div>
      </section>

      <section class="rk-salon-section" id="rk-salon-dlugosc">
        <div class="rk-salon-section-head">
          <span class="rk-salon-eyebrow">Dwa składniki długości</span>
          <h2>Jak oszacować długość rury i prawidłowo doliczyć dobiegi?</h2>
          <p>Najczęstszy błąd polega na dodaniu jednego wspólnego dobiegu do całego salonu. W rzeczywistości każdy równoległy obwód wraca osobno do rozdzielacza.</p>
        </div>
        <h3>Rura w polu grzewczym</h3>
        <div class="rk-salon-formula">L<sub>pole</sub> ≈ k × [(A<sub>główna</sub> / s<sub>główna</sub>) + (A<sub>brzegowa</sub> / s<sub>brzegowa</sub>)]</div>
        <p>Rozstawy <em>s</em> wpisujemy w metrach. Współczynnik <em>k</em> tworzy jawną rezerwę na łuki, podejścia i niedokładność prostego modelu powierzchniowego. Kalkulator pozwala ustawić go samodzielnie.</p>
        <h3>Dobiegi wszystkich pętli</h3>
        <div class="rk-salon-formula">L<sub>całkowita</sub> ≈ L<sub>pole</sub> + n × 2d</div>
        <p>Jeśli rozdzielacz znajduje się 6 m od początku pola, jedna pętla otrzymuje około 12 m dobiegu. Cztery pętle to już około 48 m dodatkowej rury, a nie 12 m.</p>
        <h3>Wstępna liczba obwodów z warunku długości</h3>
        <div class="rk-salon-formula">n<sub>min</sub> = ceil[L<sub>pole</sub> / (L<sub>limit</sub> − 2d)]</div>
        <p>Limit długości w kalkulatorze jest <strong>parametrem projektowym użytkownika</strong>. Domyślne 100 m dla rury 16 × 2 mm pokazuje popularną konwencję biurową, a nie uniwersalny limit przypisany bezpośrednio przez normę. Szczegółowe omówienie znajdziesz we wpisie <a href="https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/">ile metrów podłogówki na jednej pętli</a>.</p>
      </section>

      <section class="rk-salon-section" id="rk-salon-analizator">
        <div class="rk-salon-section-head">
          <span class="rk-salon-eyebrow">Jedno narzędzie zamiast kilku gadżetów</span>
          <h2>Interaktywny analizator liczby pętli w salonie</h2>
          <p>Wpisz własne założenia. Narzędzie najpierw obliczy długość rury, a następnie zwiększy liczbę obwodów do momentu spełnienia wpisanego limitu długości i referencyjnego spadku ciśnienia.</p>
        </div>

        <div class="rk-salon-tool" data-rk-salon-calculator="">
          <div class="rk-salon-tool-head">
            <span class="rk-salon-kicker">Kalkulator wstępnego podziału</span>
            <h3>Policz pętle, przepływ i orientacyjny opór</h3>
            <p>Wszystkie dane są ułożone kolejno. Wyniki, porównanie wariantów, wykresy oraz schemat pojawiają się poniżej formularza, dlatego układ nie pozostawia pustej kolumny na dużym ekranie.</p>
          </div>

          <div class="rk-salon-tool-body">
            <div class="rk-salon-tool-panel">
              <h4>Dane salonu i prowadzenia rur</h4>
              <p>Nie wpisuj automatycznego procentu zabudowy. Powierzchnię czynną odczytaj z rzutu lub oszacuj na podstawie rzeczywistych wymiarów.</p>

              <div class="rk-salon-input-group">
                <span class="rk-salon-input-title">1. Powierzchnia i rozstaw</span>
                <div class="rk-salon-fields">
                  <div class="rk-salon-field">
                    <label for="rk-salon-total-area">Powierzchnia salonu [m²]</label>
                    <input id="rk-salon-total-area" type="number" min="1" max="200" step="0.1" value="35" inputmode="decimal">
                    <small>Całe pomieszczenie z rzutu.</small>
                  </div>
                  <div class="rk-salon-field">
                    <label for="rk-salon-active-area">Powierzchnia czynna [m²]</label>
                    <input id="rk-salon-active-area" type="number" min="0.5" max="200" step="0.1" value="30" inputmode="decimal">
                    <small>Rzeczywiste pole objęte rurami.</small>
                  </div>
                  <div class="rk-salon-field">
                    <label for="rk-salon-edge-area">Strefa brzegowa [m²]</label>
                    <input id="rk-salon-edge-area" type="number" min="0" max="100" step="0.1" value="4" inputmode="decimal">
                    <small>Wpisz 0, jeśli jej nie wydzielasz.</small>
                  </div>
                  <div class="rk-salon-field">
                    <label for="rk-salon-main-spacing">Rozstaw podstawowy [cm]</label>
                    <select id="rk-salon-main-spacing">
                      <option value="10">10 cm</option>
                      <option value="12.5">12,5 cm</option>
                      <option value="15" selected="">15 cm</option>
                      <option value="20">20 cm</option>
                    </select>
                    <small>Wynik obliczeń cieplnych, nie źródła ciepła.</small>
                  </div>
                  <div class="rk-salon-field">
                    <label for="rk-salon-edge-spacing">Rozstaw w strefie [cm]</label>
                    <select id="rk-salon-edge-spacing">
                      <option value="5">5 cm</option>
                      <option value="10" selected="">10 cm</option>
                      <option value="12.5">12,5 cm</option>
                      <option value="15">15 cm</option>
                    </select>
                    <small>Używany tylko, gdy strefa ma więcej niż 0 m².</small>
                  </div>
                  <div class="rk-salon-field">
                    <label for="rk-salon-run">Dobieg w jedną stronę [m]</label>
                    <input id="rk-salon-run" type="number" min="0" max="50" step="0.1" value="6" inputmode="decimal">
                    <small>Od rozdzielacza do początku pola.</small>
                  </div>
                  <div class="rk-salon-field">
                    <label for="rk-salon-allowance">Rezerwa geometryczna [%]</label>
                    <input id="rk-salon-allowance" type="number" min="0" max="25" step="0.5" value="5" inputmode="decimal">
                    <small>Na łuki i uproszczenie modelu.</small>
                  </div>
                  <div class="rk-salon-field">
                    <label for="rk-salon-length-limit">Limit projektowy pętli [m]</label>
                    <input id="rk-salon-length-limit" type="number" min="30" max="180" step="1" value="100" inputmode="decimal">
                    <small>Edytowalne założenie, nie wartość normowa.</small>
                  </div>
                </div>
              </div>

              <div class="rk-salon-input-group">
                <span class="rk-salon-input-title">2. Moc i hydraulika</span>
                <div class="rk-salon-fields">
                  <div class="rk-salon-field">
                    <label for="rk-salon-heat-loss">Strata ciepła salonu [W]</label>
                    <input id="rk-salon-heat-loss" type="number" min="100" max="30000" step="10" value="2400" inputmode="numeric">
                    <small>Projektowe obciążenie pomieszczenia.</small>
                  </div>
                  <div class="rk-salon-field">
                    <label for="rk-salon-delta-t">Różnica zasilanie–powrót ΔT [K]</label>
                    <input id="rk-salon-delta-t" type="number" min="2" max="15" step="0.5" value="5" inputmode="decimal">
                    <small>Służy do wyznaczenia przepływu wody.</small>
                  </div>
                  <div class="rk-salon-field">
                    <label for="rk-salon-inner-diameter">Średnica wewnętrzna [mm]</label>
                    <input id="rk-salon-inner-diameter" type="number" min="7" max="25" step="0.1" value="12" inputmode="decimal">
                    <small>Dla rury 16 × 2 mm geometrycznie 12 mm.</small>
                  </div>
                  <div class="rk-salon-field">
                    <label for="rk-salon-water-temp">Temperatura wody [°C]</label>
                    <input id="rk-salon-water-temp" type="number" min="5" max="80" step="1" value="30" inputmode="decimal">
                    <small>Model koryguje lepkość wody.</small>
                  </div>
                  <div class="rk-salon-field">
                    <label for="rk-salon-extra-loss">Dodatkowy opór obwodu [kPa]</label>
                    <input id="rk-salon-extra-loss" type="number" min="0" max="50" step="0.1" value="3" inputmode="decimal">
                    <small>Rozdzielacz, zawór i lokalne opory pętli.</small>
                  </div>
                  <div class="rk-salon-field">
                    <label for="rk-salon-loss-limit">Limit spadku ciśnienia [kPa]</label>
                    <input id="rk-salon-loss-limit" type="number" min="3" max="100" step="1" value="20" inputmode="decimal">
                    <small>Własne kryterium do porównania wariantów.</small>
                  </div>
                </div>
              </div>

              <div class="rk-salon-tool-actions">
                <button class="rk-salon-calc-button" type="button" id="rk-salon-calculate">Przelicz analizę</button>
                <button class="rk-salon-reset-button" type="button" id="rk-salon-reset">Przywróć dane przykładowe</button>
              </div>
              <div class="rk-salon-error" id="rk-salon-error" role="alert"></div>
            </div>

            <div class="rk-salon-results" id="rk-salon-results" aria-live="polite">
              <div class="rk-salon-result-lead">
                <span>Wstępnie rekomendowany wariant</span>
                <strong id="rk-salon-loop-count">—</strong>
                <p id="rk-salon-result-summary">Wprowadź dane lub pozostaw wartości przykładowe.</p>
              </div>

              <div class="rk-salon-metrics" aria-label="Najważniejsze wyniki">
                <div class="rk-salon-metric"><span>Rura w polu</span><strong id="rk-salon-field-length">—</strong><small>bez dobiegów</small></div>
                <div class="rk-salon-metric"><span>Rura łącznie</span><strong id="rk-salon-total-length">—</strong><small>pole i dobiegi wszystkich pętli</small></div>
                <div class="rk-salon-metric"><span>Średnia długość pętli</span><strong id="rk-salon-average-length">—</strong><small>wartość referencyjna</small></div>
                <div class="rk-salon-metric"><span>Wymagana moc podłogi</span><strong id="rk-salon-unit-load">—</strong><small>Q salonu / powierzchnia czynna</small></div>
                <div class="rk-salon-metric"><span>Przepływ całkowity</span><strong id="rk-salon-total-flow">—</strong><small>dla podanej mocy i ΔT</small></div>
                <div class="rk-salon-metric"><span>Średnio na pętlę</span><strong id="rk-salon-loop-flow">—</strong><small>przy równym podziale obciążenia</small></div>
                <div class="rk-salon-metric"><span>Spadek referencyjny</span><strong id="rk-salon-pressure-loss">—</strong><small>Darcy–Weisbach i opór dodatkowy</small></div>
                <div class="rk-salon-metric"><span>Prędkość w rurze</span><strong id="rk-salon-velocity">—</strong><small>dla średniego przepływu pętli</small></div>
              </div>

              <div class="rk-salon-result-status" id="rk-salon-status">Wynik pojawi się po obliczeniu.</div>

              <div class="rk-salon-tool-panel">
                <h4>Porównanie liczby pętli n−1 / n / n+1</h4>
                <p>Jedna wspólna tabela pokazuje wpływ liczby obwodów na długość, przepływ i opór. Wartości są średnimi dla równego podziału pola i mocy.</p>
                <div class="rk-salon-compare-wrap">
                  <table class="rk-salon-compare">
                    <thead>
                      <tr>
                        <th>Pętle</th>
                        <th>Rura łącznie</th>
                        <th>Śr. długość</th>
                        <th>Przepływ / pętlę</th>
                        <th>Spadek ciśnienia</th>
                        <th>Ocena</th>
                      </tr>
                    </thead>
                    <tbody id="rk-salon-compare-body"></tbody>
                  </table>
                </div>
              </div>

              <div class="rk-salon-visual-grid">
                <div class="rk-salon-chart-card">
                  <h4>Długość i spadek ciśnienia</h4>
                  <p>Słupki pokazują średnią długość pętli. Punkty pokazują referencyjny spadek ciśnienia dla kolejnych wariantów.</p>
                  <div class="rk-salon-canvas-wrap"><canvas id="rk-salon-chart" width="600" height="270" role="img" aria-label="Wykres porównujący długość pętli i spadek ciśnienia dla kilku liczb obwodów"></canvas></div>
                </div>
                <div class="rk-salon-plan-card">
                  <h4>Schematyczny podział salonu</h4>
                  <p>Rysunek pokazuje ideę podziału pola i strefę przy przeszkleniu. Nie jest planem wykonawczym ani trasą ślimaków.</p>
                  <svg class="rk-salon-plan-svg" id="rk-salon-plan" viewBox="0 0 600 270" role="img" aria-label="Schemat podziału salonu na pętle i strefę przy przeszkleniu"></svg>
                </div>
              </div>

              <div class="rk-salon-tool-panel">
                <h4>Diagnostyka danych</h4>
                <p>Komunikaty wskazują ograniczenia prostego modelu i miejsca wymagające sprawdzenia na rzucie.</p>
                <div class="rk-salon-diagnostics" id="rk-salon-diagnostics"></div>
              </div>
            </div>
          </div>
          <div class="rk-salon-tool-foot">Analizator jest narzędziem edukacyjnym i wstępnym. Nie wyznacza wydajności konkretnego systemu podłogowego, temperatury powierzchni ani rzeczywistej trasy każdej pętli. Opór obliczany jest dla wody i wpisanej średnicy wewnętrznej.</div>
        </div>
      </section>

      <aside class="rk-salon-cta" aria-label="Projekt pętli na rzucie">
        <div class="rk-salon-cta-title">Kalkulator podzielił metry, ale nie widzi kształtu Twojego salonu</div>
        <p>Analizator policzył liczbę obwodów wynikającą z powierzchni, rozstawu, dobiegów i przyjętych ograniczeń hydraulicznych. Nie zna jednak rzeczywistego kształtu salonu, położenia wyspy, kominka, okien HST, drzwi, dylatacji ani trasy każdego ślimaka. Dopiero rozrysowanie pętli na rzucie pozwala przypisać im rzeczywiste długości, moce, przepływy i nastawy rozdzielacza.</p>
        <a class="rk-salon-cta-button rk-salon-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt z pętlami rozrysowanymi na rzucie</a>
      </aside>

      <section class="rk-salon-section" id="rk-salon-wynik">
        <div class="rk-salon-section-head">
          <span class="rk-salon-eyebrow">Co oznaczają liczby</span>
          <h2>Jak interpretować wynik analizatora?</h2>
          <p>Wynik „4 pętle” nie znaczy, że każda z nich ma mieć dokładnie jedną czwartą salonu i identyczną długość. To punkt startowy do rozrysowania instalacji.</p>
        </div>
        <div class="rk-salon-grid-3">
          <div class="rk-salon-card rk-salon-card-accent"><h3>Wariant n−1</h3><p>Pokazuje, co stanie się po zmniejszeniu liczby obwodów: pętle będą dłuższe, a przepływ i opór pojedynczej pętli zwykle wzrosną.</p></div>
          <div class="rk-salon-card rk-salon-card-green"><h3>Wariant n</h3><p>To pierwszy wariant spełniający oba wpisane kryteria w modelu średnim. Geometria może wymusić dodatkowy podział.</p></div>
          <div class="rk-salon-card rk-salon-card-purple"><h3>Wariant n+1</h3><p>Zmniejsza średnią długość i przepływ na obwód, lecz dodaje rurę w dobiegach, zajmuje kolejną sekcję rozdzielacza i wymaga regulacji.</p></div>
        </div>
        <div class="rk-salon-note" style="margin-top:18px"><p><strong>Najważniejsze ograniczenie:</strong> analizator zakłada równy podział długości i obciążenia. W projekcie pętla przy dużym przeszkleniu może otrzymać większy przepływ niż obwód położony w głębi salonu.</p></div>
      </section>

      <section class="rk-salon-section" id="rk-salon-przyklady">
        <div class="rk-salon-section-head">
          <span class="rk-salon-eyebrow">Porównanie pod wspólnymi warunkami</span>
          <h2>Ile pętli podłogówki na 20, 25, 30, 35, 40 i 50 m²?</h2>
          <p>Poniższa tabela nie jest gotowym doborem. Wszystkie wiersze przyjmują identyczne, jawne założenia: cała podana powierzchnia jest czynna, rozstaw 15 cm, brak osobnej strefy brzegowej, 5% rezerwy geometrycznej, dobieg 6 m w jedną stronę i limit projektowy 100 m.</p>
        </div>
        <div class="rk-salon-table-wrap">
          <table class="rk-salon-table">
            <thead><tr><th>Powierzchnia czynna</th><th>Rura w polu</th><th>Wstępna liczba pętli</th><th>Rura z dobiegami</th><th>Średnio na pętlę</th><th>Co sprawdzić</th></tr></thead>
            <tbody>
              <tr><td data-label="Powierzchnia czynna">20 m²</td><td data-label="Rura w polu">około 140 m</td><td data-label="Pętle">2</td><td data-label="Rura z dobiegami">około 164 m</td><td data-label="Średnia">około 82 m</td><td data-label="Co sprawdzić">Geometrię i przepływ każdej pętli.</td></tr>
              <tr><td data-label="Powierzchnia czynna">25 m²</td><td data-label="Rura w polu">około 175 m</td><td data-label="Pętle">2</td><td data-label="Rura z dobiegami">około 199 m</td><td data-label="Średnia">około 100 m</td><td data-label="Co sprawdzić">Wariant graniczny; często warto porównać 3 pętle.</td></tr>
              <tr><td data-label="Powierzchnia czynna">30 m²</td><td data-label="Rura w polu">około 210 m</td><td data-label="Pętle">3</td><td data-label="Rura z dobiegami">około 246 m</td><td data-label="Średnia">około 82 m</td><td data-label="Co sprawdzić">Wpływ zabudowy i okna HST.</td></tr>
              <tr><td data-label="Powierzchnia czynna">35 m²</td><td data-label="Rura w polu">około 245 m</td><td data-label="Pętle">3</td><td data-label="Rura z dobiegami">około 281 m</td><td data-label="Średnia">około 94 m</td><td data-label="Co sprawdzić">Opór i rzeczywisty podział pola.</td></tr>
              <tr><td data-label="Powierzchnia czynna">40 m²</td><td data-label="Rura w polu">około 280 m</td><td data-label="Pętle">4</td><td data-label="Rura z dobiegami">około 328 m</td><td data-label="Średnia">około 82 m</td><td data-label="Co sprawdzić">Dylatacje i przejścia między polami.</td></tr>
              <tr><td data-label="Powierzchnia czynna">50 m²</td><td data-label="Rura w polu">około 350 m</td><td data-label="Pętle">4</td><td data-label="Rura z dobiegami">około 398 m</td><td data-label="Średnia">około 100 m</td><td data-label="Co sprawdzić">Hydraulika lub geometria mogą wskazać 5 pętli.</td></tr>
            </tbody>
          </table>
        </div>
        <p class="rk-salon-disclaimer">Zmiana rozstawu z 15 na 10 cm zwiększa orientacyjną ilość rury w polu o około 50% przy tej samej powierzchni. Długi dobieg również może zwiększyć liczbę pętli, mimo niezmienionego metrażu salonu.</p>
      </section>

      <section class="rk-salon-section" id="rk-salon-rozstaw">
        <div class="rk-salon-section-head">
          <span class="rk-salon-eyebrow">Ciepło najpierw, metry później</span>
          <h2>Rozstaw 10, 15 czy 20 cm a liczba pętli w salonie</h2>
          <p>Gęstszy rozstaw zwiększa długość rury, ale nie powinien być wybierany wyłącznie po to, aby „wyszło więcej pętli”. Najpierw trzeba sprawdzić wymaganą moc i warunki pracy powierzchni grzewczej.</p>
        </div>
        <div class="rk-salon-table-wrap">
          <table class="rk-salon-table">
            <thead><tr><th>Rozstaw</th><th>Orientacyjna rura na 1 m² pola</th><th>Wpływ na liczbę pętli</th><th>Warunek zastosowania</th></tr></thead>
            <tbody>
              <tr><td data-label="Rozstaw">10 cm</td><td data-label="Rura / m²">około 10 m przed rezerwą</td><td data-label="Wpływ">Więcej metrów i zwykle więcej obwodów.</td><td data-label="Warunek">Musi wynikać z obliczeń mocy, temperatur i konstrukcji podłogi.</td></tr>
              <tr><td data-label="Rozstaw">15 cm</td><td data-label="Rura / m²">około 6,7 m przed rezerwą</td><td data-label="Wpływ">Często stanowi wariant pośredni.</td><td data-label="Warunek">Nadal wymaga sprawdzenia wydajności i temperatury powierzchni.</td></tr>
              <tr><td data-label="Rozstaw">20 cm</td><td data-label="Rura / m²">około 5 m przed rezerwą</td><td data-label="Wpływ">Mniej metrów może zmniejszyć liczbę obwodów.</td><td data-label="Warunek">Tylko jeśli konkretny system zapewnia wymaganą moc i równomierność.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Pełne porównanie opisuje artykuł <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstaw rur w ogrzewaniu podłogowym: 10 czy 15 cm</a>. Liczba pętli jest skutkiem przyjętego rozstawu, a nie kryterium doboru rozstawu.</p>
      </section>

      <section class="rk-salon-section" id="rk-salon-strefa">
        <div class="rk-salon-section-head">
          <span class="rk-salon-eyebrow">Duże przeszklenia</span>
          <h2>Okno HST i strefa brzegowa — czy potrzebna jest osobna pętla?</h2>
          <p>Duże przeszklenie może zwiększać lokalne obciążenie cieplne, ale nie oznacza automatycznie strefy o szerokości 1 m, rozstawu 10 cm ani osobnego obwodu.</p>
        </div>
        <div class="rk-salon-grid-3">
          <div class="rk-salon-card"><h3>Kiedy strefa ma sens?</h3><p>Gdy obliczenia i charakterystyka systemu wskazują, że lokalnie potrzebna jest większa wydajność lub wyższa temperatura powierzchni w dozwolonych granicach.</p></div>
          <div class="rk-salon-card"><h3>W tej samej pętli</h3><p>Strefę można czasem włączyć w obwód obsługujący resztę salonu. Trzeba wtedy znać jej udział w mocy i zaplanować trasę rury.</p></div>
          <div class="rk-salon-card"><h3>Osobny obwód</h3><p>Może ułatwić przypisanie przepływu i prowadzenie rur, jeśli strefa jest duża, ma wyraźnie inne obciążenie lub wymaga niezależnego pola.</p></div>
        </div>
        <p>W analizatorze powierzchnia strefy jest podawana wprost, a nie jako stałe 20% salonu. Zobacz także opracowanie <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/">strefa brzegowa w ogrzewaniu podłogowym</a>.</p>
      </section>

      <section class="rk-salon-section" id="rk-salon-kuchnia">
        <div class="rk-salon-section-head">
          <span class="rk-salon-eyebrow">Jedna przestrzeń, kilka funkcji</span>
          <h2>Salon z kuchnią i jadalnią — jak podzielić otwartą strefę?</h2>
          <p>Otwarta przestrzeń nie musi oznaczać jednego olbrzymiego obwodu ani automatycznie osobnych pętli dla każdej funkcji wnętrza.</p>
        </div>
        <div class="rk-salon-steps">
          <div class="rk-salon-step"><h3>Wyznacz pola rzeczywiście dostępne</h3><p>Odrysuj stałą zabudowę kuchenną, wyspę, kominek, schody i elementy wymagające wyłączenia lub indywidualnego uzgodnienia.</p></div>
          <div class="rk-salon-step"><h3>Nałóż granice jastrychu i przejścia</h3><p>Sprawdź geometrię pól, dylatacje, przewężenia oraz miejsca, w których rury muszą przejść przez drzwi lub komunikację.</p></div>
          <div class="rk-salon-step"><h3>Podziel moc, nie tylko metry kwadratowe</h3><p>Obwód przy przeszkleniu może przenosić inne obciążenie niż obwód pod stołem w głębi pomieszczenia.</p></div>
          <div class="rk-salon-step"><h3>Dopiero wtedy przypisz długości i przepływy</h3><p>Końcowy podział powinien pasować do rozdzielacza, kryterium oporu i możliwości regulacji.</p></div>
        </div>
        <div class="rk-salon-note" style="margin-top:18px"><p>Praktyczny sposób prowadzenia ślimaków omawia poradnik <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">jak zaplanować rozmieszczenie pętli grzewczych</a>.</p></div>
      </section>

      <section class="rk-salon-section" id="rk-salon-zabudowa">
        <div class="rk-salon-section-head">
          <span class="rk-salon-eyebrow">Rzut ważniejszy niż procent</span>
          <h2>Wyspa, kominek, kanapa i stałe meble a pętle podłogówki</h2>
          <p>Nie każdy mebel wymaga wyłączenia ogrzewania, a nie każdy fragment podłogi powinien być ogrzewany. Decyzję podejmuje się dla konkretnego elementu i planowanej aranżacji.</p>
        </div>
        <div class="rk-salon-grid-2">
          <div class="rk-salon-card rk-salon-card-orange">
            <h3>Elementy wymagające uzgodnienia</h3>
            <ul>
              <li>kominek i jego fundament lub płyta ochronna,</li>
              <li>stała zabudowa bez prześwitu,</li>
              <li>wyspa z instalacjami i mocowaniem do posadzki,</li>
              <li>schody, prowadnice drzwi i kotwy konstrukcyjne.</li>
            </ul>
          </div>
          <div class="rk-salon-card rk-salon-card-green">
            <h3>Elementy, których nie odejmuje się automatycznie</h3>
            <ul>
              <li>kanapa na nóżkach,</li>
              <li>stół i krzesła,</li>
              <li>mobilne szafki,</li>
              <li>przyszła aranżacja, która może się zmienić.</li>
            </ul>
          </div>
        </div>
        <p>Najbezpieczniej nanieść wyłączenia na rzut i policzyć ich rzeczywistą powierzchnię. Dzięki temu kalkulator nie opiera się na arbitralnym założeniu, że w każdym salonie znika dokładnie 15% pola.</p>
      </section>

      <section class="rk-salon-section" id="rk-salon-hydraulika">
        <div class="rk-salon-section-head">
          <span class="rk-salon-eyebrow">Podział przepływu</span>
          <h2>Liczba pętli, całkowity przepływ i spadek ciśnienia</h2>
          <p>Dodanie pętli nie zwiększa automatycznie całkowitego przepływu wymaganego przez salon. Dzieli go pomiędzy większą liczbę równoległych obwodów.</p>
        </div>
        <h3>Przepływ wynikający z mocy</h3>
        <div class="rk-salon-formula">V̇<sub>salonu</sub> [l/min] ≈ Q<sub>salonu</sub> / (69,8 × ΔT)</div>
        <p>Dla 2400 W i różnicy temperatur 5 K otrzymujemy około 6,9 l/min łącznie. Przy trzech identycznie obciążonych pętlach byłoby to średnio około 2,3 l/min na obwód, a przy czterech około 1,7 l/min. W rzeczywistym projekcie podział zależy od mocy przypisanej do każdego pola.</p>
        <h3>Opór nie wynika wyłącznie z długości</h3>
        <p>Spadek ciśnienia zależy jednocześnie od długości, średnicy wewnętrznej, przepływu, właściwości medium, temperatury i oporów miejscowych. Dlatego nie można przypisać jednej wartości kPa do „pętli 100 m” bez pozostałych danych.</p>
        <div class="rk-salon-grid-3">
          <div class="rk-salon-card"><h3>Dłuższa pętla</h3><p>Przy tym samym przepływie i średnicy zwiększa stratę liniową.</p></div>
          <div class="rk-salon-card"><h3>Większy przepływ</h3><p>Zwiększa prędkość, a opory rosną nieliniowo.</p></div>
          <div class="rk-salon-card"><h3>Mniejsza średnica</h3><p>Silnie wpływa na prędkość i gradient ciśnienia.</p></div>
        </div>
        <p>Jeśli chcesz analizować cały układ, skorzystaj z osobnego opracowania <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulator doboru pompy obiegowej</a>. Regulację poszczególnych obwodów opisuje poradnik <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametr i ustawienie przepływu</a>.</p>
      </section>

      <section class="rk-salon-section" id="rk-salon-rownosc">
        <div class="rk-salon-section-head">
          <span class="rk-salon-eyebrow">Równoważenie zamiast dogmatu</span>
          <h2>Czy pętle podłogówki w salonie muszą mieć równą długość?</h2>
          <p>Nie istnieje uniwersalna zasada, że wszystkie pętle muszą różnić się o mniej niż 10 lub 15%. Dążenie do podobnych oporów ułatwia regulację, ale sama długość nie opisuje całej hydrauliki.</p>
        </div>
        <div class="rk-salon-grid-2">
          <div class="rk-salon-card rk-salon-card-green">
            <h3>Różne długości mogą działać prawidłowo</h3>
            <p>Jeżeli każdej pętli przypisano właściwy przepływ, sprawdzono opór i rozdzielacz pozwala na regulację, obwody nie muszą być geometrycznymi kopiami.</p>
          </div>
          <div class="rk-salon-card rk-salon-card-orange">
            <h3>Skrajności utrudniają regulację</h3>
            <p>Bardzo krótki obwód obok długiego może wymagać mocnego dławienia. To nie oznacza automatycznie hałasu ani „kradzieży całego przepływu”, ale zwiększa wymagania regulacyjne.</p>
          </div>
        </div>
        <p>W projekcie porównuje się nie tylko metry, lecz także przepływ, spadek ciśnienia, przypisaną moc i nastawę. Problem z nadmiernie długim obwodem omawia artykuł <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">za długa pętla podłogówki</a>.</p>
      </section>

      <section class="rk-salon-section" id="rk-salon-dylatacje">
        <div class="rk-salon-section-head">
          <span class="rk-salon-eyebrow">Granice pól jastrychu</span>
          <h2>Dylatacja a podział pętli w dużym salonie</h2>
          <p>Podział jastrychu zależy od jego rodzaju, geometrii, wymiarów pól, konstrukcji systemu i zaleceń dokumentacji. Jedna stała powierzchnia graniczna nie pasuje do każdego rozwiązania.</p>
        </div>
        <div class="rk-salon-grid-3">
          <div class="rk-salon-card"><span class="rk-salon-number">1</span><h3>Ustal pola jastrychu</h3><p>Granice powinny być znane przed trasowaniem rur, a nie dorysowane po wykonaniu podłogówki.</p></div>
          <div class="rk-salon-card"><span class="rk-salon-number">2</span><h3>Ogranicz przejścia</h3><p>Jeżeli rura przecina dylatację, przejście projektuje się świadomie i zabezpiecza zgodnie z systemem.</p></div>
          <div class="rk-salon-card"><span class="rk-salon-number">3</span><h3>Dopasuj pętle</h3><p>W wielu przypadkach korzystne jest przypisanie obwodów do pól, ale geometria budynku rozstrzyga szczegóły.</p></div>
        </div>
        <p>Więcej informacji znajdziesz w poradniku <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">izolacja brzegowa i dylatacje w ogrzewaniu podłogowym</a>.</p>
      </section>

      <section class="rk-salon-section" id="rk-salon-bledy">
        <div class="rk-salon-section-head">
          <span class="rk-salon-eyebrow">Co najczęściej psuje wynik</span>
          <h2>Najczęstsze błędy przy ustalaniu liczby pętli w salonie</h2>
          <p>Większość błędów nie wynika z samego dzielenia metrów, lecz z niewłaściwych danych wejściowych i zbyt kategorycznej interpretacji.</p>
        </div>
        <div class="rk-salon-grid-2">
          <div class="rk-salon-card rk-salon-card-orange"><h3>Dodanie jednego dobiegu</h3><p>Każda pętla ma własne zasilanie i powrót. Wspólny dobieg dodany raz zaniża całkowitą długość rury.</p></div>
          <div class="rk-salon-card rk-salon-card-orange"><h3>Stałe 15% na meble</h3><p>Powierzchnia wyłączona powinna wynikać z rzutu. Jedna wartość procentowa nie pasuje do wszystkich aranżacji.</p></div>
          <div class="rk-salon-card rk-salon-card-orange"><h3>100 m jako „nakaz normy”</h3><p>Długość jest kryterium projektowym zależnym od przepływu, średnicy, oporu i założeń instalacji.</p></div>
          <div class="rk-salon-card rk-salon-card-orange"><h3>Opór liczony tylko z metrów</h3><p>Bez przepływu, średnicy wewnętrznej, medium i oporów miejscowych wartość kPa nie jest miarodajna.</p></div>
          <div class="rk-salon-card rk-salon-card-orange"><h3>Rozstaw z nazwy źródła</h3><p>Pompa ciepła nie oznacza automatycznie 10 cm, a kocioł nie oznacza 15 cm. Liczy się wymagany efekt cieplny.</p></div>
          <div class="rk-salon-card rk-salon-card-orange"><h3>Ignorowanie geometrii</h3><p>Wynik kalkulatora nie uwzględni drzwi, przewężeń, kominka i trasy ślimaka, dopóki nie pojawią się na rzucie.</p></div>
        </div>
      </section>

      <section class="rk-salon-section" id="rk-salon-checklista">
        <div class="rk-salon-section-head">
          <span class="rk-salon-eyebrow">Przed ułożeniem rur</span>
          <h2>Checklista podziału salonu na pętle</h2>
          <p>Przed zatwierdzeniem liczby obwodów sprawdź komplet danych, a nie tylko wynik w metrach.</p>
        </div>
        <ul class="rk-salon-checklist">
          <li>Znam projektową stratę ciepła salonu w watach.</li>
          <li>Mam rzeczywistą powierzchnię czynną z rzutu.</li>
          <li>Rozstaw rur wynika z obliczeń cieplnych.</li>
          <li>Strefa przy przeszkleniu ma określoną powierzchnię.</li>
          <li>Każdej pętli doliczono zasilanie i powrót.</li>
          <li>Znam średnicę wewnętrzną, a nie tylko nazwę rury.</li>
          <li>Sprawdzono przepływ przypisany do każdego obwodu.</li>
          <li>Sprawdzono spadek ciśnienia wraz z oporami miejscowymi.</li>
          <li>Podział uwzględnia wyspę, kominek i stałą zabudowę.</li>
          <li>Pętle pasują do pól jastrychu i dylatacji.</li>
          <li>Rozdzielacz ma odpowiednią liczbę sekcji z rezerwą projektową.</li>
          <li>Na rysunku podano długości, przepływy i nastawy.</li>
        </ul>
      </section>

      <section class="rk-salon-section" id="rk-salon-faq">
        <div class="rk-salon-section-head">
          <span class="rk-salon-eyebrow">Pytania inwestorów i wykonawców</span>
          <h2>Ile pętli podłogówki w salonie — FAQ</h2>
          <p>Krótkie odpowiedzi na pytania, które najczęściej pojawiają się przed rozrysowaniem instalacji.</p>
        </div>
        <div class="rk-salon-faq">
          <details><summary>Ile pętli podłogówki na salon 20 m²?</summary><div class="rk-salon-faq-answer"><p>Przy przykładowym rozstawie 15 cm, krótkim dobiegu i całej powierzchni czynnej często wychodzą 2 pętle. Ostateczny wynik zależy od mocy, geometrii, średnicy rury i przyjętego limitu oporu.</p></div></details>
          <details><summary>Ile pętli podłogówki na 30 m² salonu?</summary><div class="rk-salon-faq-answer"><p>W przejrzystym przykładzie z tego artykułu wychodzą 3 pętle, ale gęstszy rozstaw, daleki rozdzielacz, duże przeszklenie lub nieregularny rzut mogą zmienić podział.</p></div></details>
          <details><summary>Ile pętli podłogówki na salon 40 m²?</summary><div class="rk-salon-faq-answer"><p>Przy rozstawie 15 cm, dobiegu 6 m w jedną stronę i limicie 100 m przykład wskazuje 4 pętle. To nie jest uniwersalna rekomendacja bez obliczeń cieplnych i hydraulicznych.</p></div></details>
          <details><summary>Czy salon 50 m² wystarczą 4 pętle?</summary><div class="rk-salon-faq-answer"><p>Mogą wystarczyć w jednym układzie, a w innym potrzebne będzie 5 lub więcej. Cztery pętle w przykładzie są blisko wpisanego limitu długości, dlatego trzeba sprawdzić hydraulikę i rozrysować rzeczywiste trasy.</p></div></details>
          <details><summary>Ile m² może ogrzewać jedna pętla?</summary><div class="rk-salon-faq-answer"><p>Nie ma jednej wartości. Pole na pętlę zależy od rozstawu, dobiegu, obciążenia cieplnego, przepływu, średnicy i geometrii. Przy rozstawie 10 cm na tę samą powierzchnię potrzeba około 50% więcej rury niż przy 15 cm.</p></div></details>
          <details><summary>Czy przy oknie HST zawsze robi się osobną pętlę?</summary><div class="rk-salon-faq-answer"><p>Nie. Osobna pętla może być uzasadniona wielkością strefy, jej obciążeniem i geometrią, ale nie jest automatycznym wymogiem dla każdego przeszklenia.</p></div></details>
          <details><summary>Czy pętle w jednym salonie muszą być identycznej długości?</summary><div class="rk-salon-faq-answer"><p>Nie. Ważne jest, aby każda pętla miała obliczony przepływ, akceptowalny opór i możliwość regulacji. Podobne długości zwykle ułatwiają równoważenie, lecz nie są celem samym w sobie.</p></div></details>
          <details><summary>Czy limit 100 m dla rury 16 × 2 mm wynika wprost z normy?</summary><div class="rk-salon-faq-answer"><p>Nie należy przedstawiać go jako uniwersalnego nakazu normowego. To często stosowane kryterium projektowe. Dopuszczalną długość ocenia się razem z przepływem, średnicą wewnętrzną, oporem i charakterystyką całej instalacji.</p></div></details>
          <details><summary>Czy więcej pętli oznacza większy całkowity przepływ?</summary><div class="rk-salon-faq-answer"><p>Nie automatycznie. Całkowity przepływ wynika przede wszystkim z wymaganej mocy i projektowej różnicy temperatur. Więcej obwodów dzieli tę wartość pomiędzy pętle.</p></div></details>
          <details><summary>Czy kalkulator wystarczy do wykonania podłogówki w salonie?</summary><div class="rk-salon-faq-answer"><p>Nie. Kalkulator daje wstępny podział przy uproszczonej geometrii. Projekt powinien uwzględniać rzut, wyłączenia, dylatacje, rzeczywiste trasy, temperatury, przepływy, straty ciśnienia i nastawy rozdzielacza.</p></div></details>
        </div>
      </section>

      <section class="rk-salon-section" id="rk-salon-zrodla">
        <div class="rk-salon-section-head">
          <span class="rk-salon-eyebrow">Metodyka i weryfikacja</span>
          <h2>Źródła i zakres techniczny opracowania</h2>
          <p>Artykuł rozdziela metodykę cieplną, projektowanie i wykonanie instalacji. Linki prowadzą wyłącznie do organizacji normalizacyjnej, bez producentów i ofert handlowych.</p>
        </div>
        <ol class="rk-salon-sources">
          <li><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="noopener nofollow">ISO 11855-2:2021 — determination of the design heating and cooling capacity</a>. Metody wyznaczania wydajności powierzchni grzewczych przy określonych warunkach.</li>
          <li><a href="https://www.iso.org/standard/74684.html" target="_blank" rel="noopener nofollow">ISO 11855-3:2021 — dimensioning</a>. Zasady wymiarowania wodnych systemów ogrzewania i chłodzenia powierzchniowego.</li>
          <li><a href="https://www.iso.org/standard/74685.html" target="_blank" rel="noopener nofollow">ISO 11855-5:2021 — installation</a>. Zagadnienia dotyczące instalowania systemów ogrzewania i chłodzenia powierzchniowego.</li>
        </ol>
        <div class="rk-salon-warning"><p><strong>Zakres kalkulatora:</strong> model długości jest geometrycznym przybliżeniem, a model oporów wykorzystuje równanie Darcy’ego–Weisbacha dla wody i średniego przepływu. Nie zastępuje charakterystyk konkretnego systemu, obliczeń temperatury powierzchni ani projektu wykonawczego.</p></div>
      </section>

      <section class="rk-salon-author" id="rk-salon-autor" aria-label="Autor opracowania">
        <input type="radio" name="rk-salon-author-tabs" id="rk-salon-author-about" checked="">
        <input type="radio" name="rk-salon-author-tabs" id="rk-salon-author-exp">
        <input type="radio" name="rk-salon-author-tabs" id="rk-salon-author-method">

        <header class="rk-salon-author-head">
          <div>
            <span class="rk-salon-kicker">Autor i odpowiedzialność merytoryczna</span>
            <h2>Robert Kucharski</h2>
            <p>Projektant instalacji sanitarnych • specjalista HVAC i ogrzewania podłogowego</p>
          </div>
          <span class="rk-salon-author-mark">PROJEKTOWANIE • HYDRAULIKA • EDUKACJA</span>
        </header>

        <div class="rk-salon-author-layout">
          <aside class="rk-salon-author-side">
            <div class="rk-salon-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych i ogrzewania podłogowego" width="600" height="600" loading="lazy" decoding="async"></div>
            <div class="rk-salon-author-name">Robert Kucharski</div>
            <div class="rk-salon-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
            <div class="rk-salon-author-social-label">Profile autora</div>
            <div class="rk-salon-author-social" aria-label="Profile Roberta Kucharskiego w mediach społecznościowych">
              <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener nofollow me" aria-label="Robert Kucharski na LinkedIn"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5.3 3.6A2.3 2.3 0 1 1 .7 3.6a2.3 2.3 0 0 1 4.6 0ZM1.1 8h4.3v13H1.1V8Zm6.9 0h4.1v1.8h.1c.6-1.1 2-2.3 4.1-2.3 4.4 0 5.2 2.9 5.2 6.7V21h-4.3v-6c0-1.4 0-3.3-2-3.3s-2.3 1.6-2.3 3.2V21H8V8Z"></path></svg></a>
              <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="noopener nofollow me" aria-label="Projekt Ogrzewania na Facebooku"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M24 12.1C24 5.4 18.6 0 12 0S0 5.4 0 12.1C0 18.1 4.4 23 10.1 24v-8.4H7.1v-3.5h3V9.5c0-3 1.8-4.7 4.5-4.7 1.3 0 2.7.2 2.7.2v3h-1.5c-1.5 0-1.9.9-1.9 1.8v2.2h3.3l-.5 3.5h-2.8V24C19.6 23 24 18.1 24 12.1Z"></path></svg></a>
              <a href="https://x.com/Projekt_HVAC" target="_blank" rel="noopener nofollow me" aria-label="Projekt HVAC w serwisie X"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.9 2H22l-6.8 7.8L23.2 22h-6.3L12 15.6 6.4 22H3.3l7.2-8.2L.8 2h6.5l4.4 5.8L18.9 2Zm-1.1 17.9h1.7L6.4 4H4.6l13.2 15.9Z"></path></svg></a>
            </div>
          </aside>

          <div class="rk-salon-author-main">
            <blockquote class="rk-salon-author-quote"><p>„Liczba pętli nie powinna powstawać przez mechaniczne podzielenie metrażu salonu. Dobry podział łączy bilans cieplny, rzeczywistą geometrię, długości dobiegów i hydraulikę każdego obwodu.”</p></blockquote>
            <div class="rk-salon-author-tabs" role="tablist" aria-label="Informacje o autorze">
              <label class="rk-salon-author-tab" for="rk-salon-author-about">O autorze</label>
              <label class="rk-salon-author-tab" for="rk-salon-author-exp">Praktyka</label>
              <label class="rk-salon-author-tab" for="rk-salon-author-method">Metodyka</label>
            </div>
            <div class="rk-salon-author-panel rk-salon-author-panel-about">
              <p>Robert Kucharski opracowuje projekty wodnego ogrzewania podłogowego oraz materiały techniczne dla inwestorów i wykonawców. W pracy łączy obliczenia strat ciepła pomieszczeń z doborem temperatur, rozstawów rur, długości pętli, przepływów, spadków ciśnienia i nastaw rozdzielaczy.</p>
              <p>Jego celem jest przełożenie obliczeń na czytelną dokumentację wykonawczą: trasę każdego obwodu na rzucie, jego długość, przypisaną moc, przepływ oraz wartość potrzebną do regulacji. Dzięki temu wykonawca nie musi odtwarzać założeń projektu na budowie.</p>
              <p><a href="https://projekt-ogrzewania.pl/author/admin3399/">Zobacz profil autora i pozostałe opracowania</a>.</p>
            </div>
            <div class="rk-salon-author-panel rk-salon-author-panel-exp">
              <p>Przy podziale dużych salonów i otwartych stref dziennych Robert analizuje powierzchnię czynną, lokalne obciążenia przy przeszkleniach, pola jastrychu, dobiegi do rozdzielacza oraz możliwość hydraulicznego zrównoważenia obwodów. Nie zakłada jednej powierzchni na pętlę ani sztywnej równości długości.</p>
              <p>Materiały edukacyjne powstają na podstawie tej samej kolejności pracy: dane budynku, bilans cieplny, dobór powierzchni grzewczej, trasowanie, obliczenia hydrauliczne i kontrola wykonawcza. Kalkulatory pokazują założenia oraz ograniczenia, zamiast wydawać kategoryczną decyzję bez rzutu.</p>
            </div>
            <div class="rk-salon-author-panel rk-salon-author-panel-method">
              <p>W tym opracowaniu oddzielono trzy poziomy decyzji: wydajność cieplną podłogi, geometryczny podział salonu oraz hydraulikę pętli. Model kalkulatora jest jawny, a limit długości i limit spadku ciśnienia pozostają edytowalnymi kryteriami projektowymi.</p>
              <p>Robert jest właścicielem i autorem serwisów branżowych, których powiązanie podaje jawnie:</p>
              <div class="rk-salon-site-links"><a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a><a href="https://remont.biz.pl/" target="_blank" rel="noopener nofollow">Remont.biz.pl</a><a href="https://sobir.pl/" target="_blank" rel="noopener nofollow">Sobir.pl</a></div>
            </div>
          </div>
        </div>
      </section>

      <aside class="rk-salon-cta rk-salon-final-cta" aria-label="Zamówienie projektu ogrzewania podłogowego">
        <div class="rk-salon-cta-title">Otrzymaj projekt z rzeczywistym podziałem salonu na pętle</div>
        <p>Projekt obejmuje rozrysowane trasy obwodów, długości rur, przepływy, spadki ciśnienia i nastawy rozdzielacza. Podział jest dopasowany do rzutu, źródła ciepła, konstrukcji podłogi, stref wyłączonych i wymaganej mocy pomieszczeń.</p>
        <a class="rk-salon-cta-button rk-salon-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów kompletny projekt ogrzewania podłogowego</a>
      </aside>
    </div>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "inLanguage": "pl-PL",
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"}
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt Ogrzewania",
      "url": "https://projekt-ogrzewania.pl/",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp"
      },
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych, specjalista HVAC i ogrzewania podłogowego",
      "worksFor": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "obliczenia strat ciepła",
        "hydraulika instalacji grzewczych",
        "projektowanie pętli grzewczych",
        "równoważenie hydrauliczne"
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/#webpage",
      "url": "https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/",
      "name": "Ile pętli podłogówki w salonie? Kalkulator długości rur i przepływu",
      "description": "Oblicz wstępną liczbę pętli w salonie z uwzględnieniem powierzchni czynnej, rozstawu, dobiegu, przepływu i spadku ciśnienia.",
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"},
      "breadcrumb": {"@id": "https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/#breadcrumb"},
      "mainEntity": {"@id": "https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/#article"},
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-31"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/#breadcrumb",
      "itemListElement": [
        {"@type": "ListItem", "position": 1, "name": "Strona główna", "item": "https://projekt-ogrzewania.pl/"},
        {"@type": "ListItem", "position": 2, "name": "Blog", "item": "https://projekt-ogrzewania.pl/blog/"},
        {"@type": "ListItem", "position": 3, "name": "Ile pętli podłogówki w salonie?", "item": "https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/"}
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/#calculator",
      "name": "Interaktywny analizator liczby pętli w salonie",
      "url": "https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/#rk-salon-analizator",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Any",
      "browserRequirements": "JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "offers": {"@type": "Offer", "price": "0", "priceCurrency": "PLN"},
      "creator": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "description": "Narzędzie szacuje długość rury, liczbę pętli, przepływ i referencyjny spadek ciśnienia na podstawie jawnych danych użytkownika."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/#howto",
      "name": "Jak wstępnie wyznaczyć liczbę pętli podłogówki w salonie",
      "description": "Kolejność obliczeń łącząca powierzchnię czynną, rozstaw, dobiegi, moc i hydraulikę.",
      "totalTime": "PT20M",
      "step": [
        {"@type": "HowToStep", "position": 1, "name": "Wyznacz powierzchnię czynną", "text": "Odejmij wyłącznie rzeczywiste, uzgodnione strefy bez rur."},
        {"@type": "HowToStep", "position": 2, "name": "Dobierz rozstaw", "text": "Ustal rozstaw podstawowy i ewentualny rozstaw strefy brzegowej na podstawie obliczeń cieplnych."},
        {"@type": "HowToStep", "position": 3, "name": "Oblicz rurę w polu", "text": "Podziel powierzchnie przez odpowiadające im rozstawy i zastosuj jawną rezerwę geometryczną."},
        {"@type": "HowToStep", "position": 4, "name": "Dodaj dobiegi", "text": "Dla każdej pętli dodaj osobno odcinek zasilający i powrotny."},
        {"@type": "HowToStep", "position": 5, "name": "Wyznacz przepływy", "text": "Oblicz całkowity przepływ z mocy i różnicy temperatur, a następnie przypisz moc do poszczególnych obwodów."},
        {"@type": "HowToStep", "position": 6, "name": "Sprawdź hydraulikę i geometrię", "text": "Porównaj długość, spadek ciśnienia, pola jastrychu oraz rzeczywisty przebieg pętli na rzucie."}
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/#faq",
      "mainEntity": [
        {"@type": "Question", "name": "Ile pętli podłogówki na salon 20 m²?", "acceptedAnswer": {"@type": "Answer", "text": "Przy przykładowym rozstawie 15 cm, krótkim dobiegu i całej powierzchni czynnej często wychodzą 2 pętle. Ostateczny wynik zależy od mocy, geometrii, średnicy rury i przyjętego limitu oporu."}},
        {"@type": "Question", "name": "Ile pętli podłogówki na 30 m² salonu?", "acceptedAnswer": {"@type": "Answer", "text": "W przejrzystym przykładzie z artykułu wychodzą 3 pętle, ale gęstszy rozstaw, daleki rozdzielacz, duże przeszklenie lub nieregularny rzut mogą zmienić podział."}},
        {"@type": "Question", "name": "Ile pętli podłogówki na salon 40 m²?", "acceptedAnswer": {"@type": "Answer", "text": "Przy rozstawie 15 cm, dobiegu 6 m w jedną stronę i limicie 100 m przykład wskazuje 4 pętle. To nie jest uniwersalna rekomendacja bez obliczeń cieplnych i hydraulicznych."}},
        {"@type": "Question", "name": "Czy salon 50 m² wystarczą 4 pętle?", "acceptedAnswer": {"@type": "Answer", "text": "Mogą wystarczyć w jednym układzie, a w innym potrzebne będzie 5 lub więcej. Cztery pętle w przykładzie są blisko wpisanego limitu długości, dlatego trzeba sprawdzić hydraulikę i rozrysować rzeczywiste trasy."}},
        {"@type": "Question", "name": "Ile m² może ogrzewać jedna pętla?", "acceptedAnswer": {"@type": "Answer", "text": "Nie ma jednej wartości. Pole na pętlę zależy od rozstawu, dobiegu, obciążenia cieplnego, przepływu, średnicy i geometrii."}},
        {"@type": "Question", "name": "Czy przy oknie HST zawsze robi się osobną pętlę?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Osobna pętla może być uzasadniona wielkością strefy, jej obciążeniem i geometrią, ale nie jest automatycznym wymogiem dla każdego przeszklenia."}},
        {"@type": "Question", "name": "Czy pętle w jednym salonie muszą być identycznej długości?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Ważne jest, aby każda pętla miała obliczony przepływ, akceptowalny opór i możliwość regulacji. Podobne długości zwykle ułatwiają równoważenie."}},
        {"@type": "Question", "name": "Czy limit 100 m dla rury 16 × 2 mm wynika wprost z normy?", "acceptedAnswer": {"@type": "Answer", "text": "Nie należy przedstawiać go jako uniwersalnego nakazu normowego. To często stosowane kryterium projektowe oceniane razem z przepływem, średnicą wewnętrzną i oporem."}},
        {"@type": "Question", "name": "Czy więcej pętli oznacza większy całkowity przepływ?", "acceptedAnswer": {"@type": "Answer", "text": "Nie automatycznie. Całkowity przepływ wynika przede wszystkim z wymaganej mocy i projektowej różnicy temperatur. Więcej obwodów dzieli tę wartość pomiędzy pętle."}},
        {"@type": "Question", "name": "Czy kalkulator wystarczy do wykonania podłogówki w salonie?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Kalkulator daje wstępny podział przy uproszczonej geometrii. Projekt powinien uwzględniać rzut, wyłączenia, dylatacje, rzeczywiste trasy, przepływy i straty ciśnienia."}}
      ]
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/#article",
      "headline": "Ile pętli podłogówki w salonie? Kalkulator długości rur i przepływu",
      "description": "Oblicz wstępną liczbę pętli w salonie z uwzględnieniem powierzchni czynnej, rozstawu, dobiegu, przepływu i spadku ciśnienia.",
      "url": "https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/",
      "mainEntityOfPage": {"@id": "https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/#webpage"},
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "dateModified": "2026-08-31",
      "inLanguage": "pl-PL",
      "articleSection": "Ogrzewanie podłogowe",
      "keywords": [
        "ile pętli podłogówki w salonie",
        "ile pętli podłogówki na 30 m²",
        "salon z kuchnią ile pętli",
        "powierzchnia czynna podłogówki",
        "dobieg do rozdzielacza",
        "długość pętli ogrzewania podłogowego"
      ],
      "isBasedOn": [
        "https://www.iso.org/standard/74683.html",
        "https://www.iso.org/standard/74684.html",
        "https://www.iso.org/standard/74685.html"
      ],
      "about": [
        {"@type": "Thing", "name": "Ogrzewanie podłogowe"},
        {"@type": "Thing", "name": "Pętle grzewcze w salonie"},
        {"@type": "Thing", "name": "Hydraulika instalacji grzewczych"}
      ]
    }
  ]
}
</script>

<script>
(function () {
  "use strict";

  var root = document.getElementById("rk-salon-guide");
  if (!root) { return; }

  var defaults = {
    "rk-salon-total-area": 35,
    "rk-salon-active-area": 30,
    "rk-salon-edge-area": 4,
    "rk-salon-main-spacing": 15,
    "rk-salon-edge-spacing": 10,
    "rk-salon-run": 6,
    "rk-salon-allowance": 5,
    "rk-salon-length-limit": 100,
    "rk-salon-heat-loss": 2400,
    "rk-salon-delta-t": 5,
    "rk-salon-inner-diameter": 12,
    "rk-salon-water-temp": 30,
    "rk-salon-extra-loss": 3,
    "rk-salon-loss-limit": 20
  };

  function byId(id) { return document.getElementById(id); }

  function numberValue(id, fallback) {
    var element = byId(id);
    if (!element) { return fallback; }
    var parsed = Number.parseFloat(String(element.value).replace(",", "."));
    if (!Number.isFinite(parsed)) { return fallback; }
    return parsed;
  }

  function clamp(value, minimum, maximum) {
    return Math.min(maximum, Math.max(minimum, value));
  }

  function formatNumber(value, digits) {
    if (!Number.isFinite(value)) { return "—"; }
    return value.toLocaleString("pl-PL", {
      minimumFractionDigits: digits,
      maximumFractionDigits: digits
    });
  }

  function loopWord(value) {
    if (value === 1) { return "pętla"; }
    var last = value % 10;
    var lastTwo = value % 100;
    if (last >= 2) {
      if (last <= 4) {
        if (lastTwo < 12) { return "pętle"; }
        if (lastTwo > 14) { return "pętle"; }
      }
    }
    return "pętli";
  }

  function readData() {
    return {
      totalArea: numberValue("rk-salon-total-area", defaults["rk-salon-total-area"]),
      activeArea: numberValue("rk-salon-active-area", defaults["rk-salon-active-area"]),
      edgeArea: numberValue("rk-salon-edge-area", defaults["rk-salon-edge-area"]),
      mainSpacing: numberValue("rk-salon-main-spacing", defaults["rk-salon-main-spacing"]),
      edgeSpacing: numberValue("rk-salon-edge-spacing", defaults["rk-salon-edge-spacing"]),
      run: numberValue("rk-salon-run", defaults["rk-salon-run"]),
      allowance: numberValue("rk-salon-allowance", defaults["rk-salon-allowance"]),
      lengthLimit: numberValue("rk-salon-length-limit", defaults["rk-salon-length-limit"]),
      heatLoss: numberValue("rk-salon-heat-loss", defaults["rk-salon-heat-loss"]),
      deltaT: numberValue("rk-salon-delta-t", defaults["rk-salon-delta-t"]),
      innerDiameter: numberValue("rk-salon-inner-diameter", defaults["rk-salon-inner-diameter"]),
      waterTemp: numberValue("rk-salon-water-temp", defaults["rk-salon-water-temp"]),
      extraLoss: numberValue("rk-salon-extra-loss", defaults["rk-salon-extra-loss"]),
      lossLimit: numberValue("rk-salon-loss-limit", defaults["rk-salon-loss-limit"])
    };
  }

  function validateData(data) {
    var errors = [];
    if (!(data.totalArea > 0)) { errors.push("Powierzchnia salonu musi być większa od zera."); }
    if (!(data.activeArea > 0)) { errors.push("Powierzchnia czynna musi być większa od zera."); }
    if (data.activeArea > data.totalArea) { errors.push("Powierzchnia czynna nie może być większa od całej powierzchni salonu."); }
    if (data.edgeArea < 0) { errors.push("Powierzchnia strefy brzegowej nie może być ujemna."); }
    if (data.edgeArea > data.activeArea) { errors.push("Strefa brzegowa nie może być większa od powierzchni czynnej."); }
    if (!(data.mainSpacing > 0)) { errors.push("Rozstaw podstawowy musi być większy od zera."); }
    if (!(data.edgeSpacing > 0)) { errors.push("Rozstaw strefy musi być większy od zera."); }
    if (data.run < 0) { errors.push("Dobieg nie może być ujemny."); }
    if (data.allowance < 0) { errors.push("Rezerwa geometryczna nie może być ujemna."); }
    if (!(data.lengthLimit > 0)) { errors.push("Limit długości musi być większy od zera."); }
    if (!(data.heatLoss > 0)) { errors.push("Strata ciepła musi być większa od zera."); }
    if (!(data.deltaT > 0)) { errors.push("Różnica temperatur musi być większa od zera."); }
    if (!(data.innerDiameter > 0)) { errors.push("Średnica wewnętrzna musi być większa od zera."); }
    if (!(data.lossLimit > 0)) { errors.push("Limit spadku ciśnienia musi być większy od zera."); }
    if (data.lengthLimit <= (2 * data.run + 5)) { errors.push("Limit pętli jest zbyt mały w stosunku do dwóch dobiegów."); }
    return errors;
  }

  function hydraulicForLoop(length, flowLitresMinute, data) {
    var diameter = data.innerDiameter / 1000;
    var flowCubicSecond = flowLitresMinute / 60000;
    var area = Math.PI * diameter * diameter / 4;
    var velocity = flowCubicSecond / area;
    var temperatureOffset = data.waterTemp - 20;
    var density = clamp(998.2 - 0.3 * temperatureOffset, 970, 1001);
    var kinematicViscosity = 1.004e-6 * Math.exp(-0.022 * temperatureOffset);
    kinematicViscosity = clamp(kinematicViscosity, 0.4e-6, 1.8e-6);
    var reynolds = velocity * diameter / kinematicViscosity;
    var friction = 0;
    if (reynolds > 0) {
      if (reynolds < 2300) {
        friction = 64 / reynolds;
      } else {
        var roughness = 0.0000015;
        var term = roughness / (3.7 * diameter) + 5.74 / Math.pow(reynolds, 0.9);
        friction = 0.25 / Math.pow(Math.log10(term), 2);
      }
    }
    var linearLoss = friction * (length / diameter) * (density * velocity * velocity / 2) / 1000;
    return {
      loss: linearLoss + data.extraLoss,
      linearLoss: linearLoss,
      velocity: velocity,
      reynolds: reynolds
    };
  }

  function candidateFor(count, fieldLength, totalFlow, data) {
    var totalLength = fieldLength + count * 2 * data.run;
    var averageLength = totalLength / count;
    var flowPerLoop = totalFlow / count;
    var hydraulic = hydraulicForLoop(averageLength, flowPerLoop, data);
    var passesLength = averageLength <= data.lengthLimit;
    var passesLoss = hydraulic.loss <= data.lossLimit;
    var assessment = "za mało obwodów";
    var badgeClass = "is-fail";
    if (passesLength) {
      if (passesLoss) {
        var lengthRatio = averageLength / data.lengthLimit;
        var lossRatio = hydraulic.loss / data.lossLimit;
        assessment = "spełnia kryteria";
        badgeClass = "is-pass";
        if (lengthRatio > 0.9) {
          assessment = "wariant graniczny";
          badgeClass = "is-limit";
        } else if (lossRatio > 0.85) {
          assessment = "wariant graniczny";
          badgeClass = "is-limit";
        }
      }
    }
    return {
      count: count,
      totalLength: totalLength,
      averageLength: averageLength,
      flowPerLoop: flowPerLoop,
      pressureLoss: hydraulic.loss,
      velocity: hydraulic.velocity,
      reynolds: hydraulic.reynolds,
      passesLength: passesLength,
      passesLoss: passesLoss,
      assessment: assessment,
      badgeClass: badgeClass
    };
  }

  function calculateModel(data) {
    var mainArea = data.activeArea - data.edgeArea;
    var mainSpacingMetres = data.mainSpacing / 100;
    var edgeSpacingMetres = data.edgeSpacing / 100;
    var allowanceFactor = 1 + data.allowance / 100;
    var fieldLength = mainArea / mainSpacingMetres;
    if (data.edgeArea > 0) { fieldLength += data.edgeArea / edgeSpacingMetres; }
    fieldLength *= allowanceFactor;

    var usableFieldPerLoop = data.lengthLimit - 2 * data.run;
    var countFromLength = Math.max(1, Math.ceil(fieldLength / usableFieldPerLoop));
    var totalFlow = data.heatLoss / (69.8 * data.deltaT);
    var recommendedCount = countFromLength;
    var recommended = candidateFor(recommendedCount, fieldLength, totalFlow, data);

    while (recommendedCount < 30) {
      if (recommended.passesLength) {
        if (recommended.passesLoss) { break; }
      }
      recommendedCount += 1;
      recommended = candidateFor(recommendedCount, fieldLength, totalFlow, data);
    }

    var startCount = Math.max(1, recommendedCount - 1);
    var candidateCounts = [startCount, recommendedCount, recommendedCount + 1];
    var uniqueCounts = [];
    candidateCounts.forEach(function (value) {
      if (uniqueCounts.indexOf(value) === -1) { uniqueCounts.push(value); }
    });
    var candidates = uniqueCounts.map(function (value) {
      return candidateFor(value, fieldLength, totalFlow, data);
    });

    return {
      mainArea: mainArea,
      excludedArea: data.totalArea - data.activeArea,
      fieldLength: fieldLength,
      totalFlow: totalFlow,
      unitLoad: data.heatLoss / data.activeArea,
      countFromLength: countFromLength,
      recommendedCount: recommendedCount,
      recommended: recommended,
      candidates: candidates
    };
  }

  function setText(id, textValue) {
    var element = byId(id);
    if (element) { element.textContent = textValue; }
  }

  function renderComparison(model) {
    var body = byId("rk-salon-compare-body");
    if (!body) { return; }
    var rows = model.candidates.map(function (candidate) {
      var rowClass = candidate.count === model.recommendedCount ? " class=\"is-recommended\"" : "";
      var label = candidate.count === model.recommendedCount ? "rekomendowany" : candidate.assessment;
      return "<tr" + rowClass + ">" +
        "<td data-label=\"Liczba obwodów\"><strong>" + candidate.count + "</strong> " + loopWord(candidate.count) + "</td>" +
        "<td data-label=\"Rura łącznie\">" + formatNumber(candidate.totalLength, 0) + " m</td>" +
        "<td data-label=\"Średnia długość\">" + formatNumber(candidate.averageLength, 1) + " m</td>" +
        "<td data-label=\"Przepływ na pętlę\">" + formatNumber(candidate.flowPerLoop, 2) + " l/min</td>" +
        "<td data-label=\"Spadek ciśnienia\">" + formatNumber(candidate.pressureLoss, 1) + " kPa</td>" +
        "<td data-label=\"Ocena\"><span class=\"rk-salon-badge " + candidate.badgeClass + "\">" + label + "</span></td>" +
        "</tr>";
    });
    body.innerHTML = rows.join("");
  }

  function renderDiagnostics(data, model) {
    var container = byId("rk-salon-diagnostics");
    if (!container) { return; }
    var messages = [];
    var excludedShare = model.excludedArea / data.totalArea;

    if (excludedShare > 0.3) {
      messages.push({warn: true, text: "Powierzchnia czynna jest mniejsza od 70% salonu. Sprawdź na rzucie, czy wszystkie wyłączenia są rzeczywiście trwałe i czy pozostałe pole może pokryć stratę ciepła."});
    } else {
      messages.push({warn: false, text: "Powierzchnia wyłączona wynosi " + formatNumber(model.excludedArea, 1) + " m². Kalkulator nie narzucił stałego procentu zabudowy."});
    }

    if (data.run > 10) {
      messages.push({warn: true, text: "Dobieg jest długi. Każda dodatkowa pętla dodaje około " + formatNumber(2 * data.run, 1) + " m rury zasilającej i powrotnej."});
    } else {
      messages.push({warn: false, text: "Do każdego obwodu doliczono osobno dwa dobiegi po " + formatNumber(data.run, 1) + " m."});
    }

    if (data.edgeArea > 0) {
      messages.push({warn: false, text: "Strefa brzegowa obejmuje " + formatNumber(data.edgeArea, 1) + " m² przy rozstawie " + formatNumber(data.edgeSpacing, 1) + " cm. Kalkulator nie przesądza, czy wymaga osobnej pętli."});
    } else {
      messages.push({warn: false, text: "Nie wydzielono strefy brzegowej. Zweryfikuj lokalne obciążenie przy dużych przeszkleniach."});
    }

    if (model.unitLoad > 100) {
      messages.push({warn: true, text: "Wymagana moc jednostkowa wynosi " + formatNumber(model.unitLoad, 0) + " W/m². Sama większa liczba pętli nie potwierdza, że podłoga uzyska taką moc bez przekroczenia ograniczeń temperatury powierzchni."});
    } else {
      messages.push({warn: false, text: "Wymagana średnia moc czynnego pola wynosi " + formatNumber(model.unitLoad, 0) + " W/m². Trzeba ją jeszcze sprawdzić dla konkretnej konstrukcji podłogi i parametrów wody."});
    }

    if (model.recommendedCount > model.countFromLength) {
      messages.push({warn: true, text: "Samo kryterium długości wskazało " + model.countFromLength + " " + loopWord(model.countFromLength) + ", ale model hydrauliczny zwiększył wynik do " + model.recommendedCount + "."});
    } else {
      messages.push({warn: false, text: "Wpisane kryterium długości i referencyjnego oporu spełnia pierwszy wspólny wariant: " + model.recommendedCount + " " + loopWord(model.recommendedCount) + "."});
    }

    messages.push({warn: true, text: "Geometria, dylatacje, kominek, wyspa i rzeczywista trasa ślimaka mogą wymusić jeszcze inny podział niż model średni."});

    container.innerHTML = messages.map(function (item) {
      var className = item.warn ? "rk-salon-diagnostic is-warn" : "rk-salon-diagnostic";
      return "<div class=\"" + className + "\">" + item.text + "</div>";
    }).join("");
  }

  function drawChart(data, model) {
    var canvas = byId("rk-salon-chart");
    if (!canvas) { return; }
    var context = canvas.getContext("2d");
    if (!context) { return; }
    var wrapperWidth = canvas.parentElement ? canvas.parentElement.clientWidth : 600;
    var displayWidth = Math.max(300, wrapperWidth);
    var displayHeight = 270;
    var pixelRatio = window.devicePixelRatio || 1;
    canvas.width = Math.round(displayWidth * pixelRatio);
    canvas.height = Math.round(displayHeight * pixelRatio);
    canvas.style.width = displayWidth + "px";
    canvas.style.height = displayHeight + "px";
    context.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);
    context.clearRect(0, 0, displayWidth, displayHeight);

    var padding = {left: 48, right: 48, top: 30, bottom: 43};
    var plotWidth = displayWidth - padding.left - padding.right;
    var plotHeight = displayHeight - padding.top - padding.bottom;
    var lengthMax = Math.max(data.lengthLimit * 1.2, 120);
    var lossMax = Math.max(data.lossLimit * 1.35, 25);
    var candidates = model.candidates;

    context.font = "11px system-ui, sans-serif";
    context.lineWidth = 1;
    for (var grid = 0; grid <= 4; grid += 1) {
      var y = padding.top + plotHeight * grid / 4;
      context.strokeStyle = "#d8e6eb";
      context.beginPath();
      context.moveTo(padding.left, y);
      context.lineTo(displayWidth - padding.right, y);
      context.stroke();
      var lengthValue = lengthMax * (1 - grid / 4);
      var lossValue = lossMax * (1 - grid / 4);
      context.fillStyle = "#617784";
      context.textAlign = "right";
      context.fillText(formatNumber(lengthValue, 0), padding.left - 7, y + 4);
      context.textAlign = "left";
      context.fillText(formatNumber(lossValue, 0), displayWidth - padding.right + 7, y + 4);
    }

    var lengthLimitY = padding.top + plotHeight * (1 - data.lengthLimit / lengthMax);
    context.setLineDash([6, 5]);
    context.strokeStyle = "#ff6a3d";
    context.beginPath();
    context.moveTo(padding.left, lengthLimitY);
    context.lineTo(displayWidth - padding.right, lengthLimitY);
    context.stroke();
    context.setLineDash([]);

    var step = plotWidth / candidates.length;
    var barWidth = Math.min(62, step * 0.45);
    var points = [];
    candidates.forEach(function (candidate, index) {
      var centerX = padding.left + step * index + step / 2;
      var barHeight = clamp(candidate.averageLength / lengthMax, 0, 1) * plotHeight;
      var barY = padding.top + plotHeight - barHeight;
      context.fillStyle = candidate.count === model.recommendedCount ? "#078fbe" : "#8fb8c7";
      context.fillRect(centerX - barWidth / 2, barY, barWidth, barHeight);
      context.fillStyle = "#203744";
      context.textAlign = "center";
      context.fillText(candidate.count + " " + loopWord(candidate.count), centerX, displayHeight - 20);
      context.fillText(formatNumber(candidate.averageLength, 0) + " m", centerX, Math.max(15, barY - 7));

      var pointY = padding.top + plotHeight * (1 - clamp(candidate.pressureLoss / lossMax, 0, 1));
      points.push({x: centerX, y: pointY, value: candidate.pressureLoss});
    });

    context.strokeStyle = "#ff6a3d";
    context.lineWidth = 3;
    context.beginPath();
    points.forEach(function (point, index) {
      if (index === 0) { context.moveTo(point.x, point.y); }
      else { context.lineTo(point.x, point.y); }
    });
    context.stroke();
    points.forEach(function (point) {
      context.fillStyle = "#ff6a3d";
      context.beginPath();
      context.arc(point.x, point.y, 5, 0, Math.PI * 2);
      context.fill();
      context.fillStyle = "#203744";
      context.textAlign = "center";
      context.fillText(formatNumber(point.value, 1) + " kPa", point.x, point.y - 10);
    });

    context.save();
    context.translate(13, padding.top + plotHeight / 2);
    context.rotate(-Math.PI / 2);
    context.fillStyle = "#47606d";
    context.textAlign = "center";
    context.fillText("długość [m]", 0, 0);
    context.restore();
    context.save();
    context.translate(displayWidth - 9, padding.top + plotHeight / 2);
    context.rotate(Math.PI / 2);
    context.fillStyle = "#47606d";
    context.textAlign = "center";
    context.fillText("spadek [kPa]", 0, 0);
    context.restore();
  }

  function svgElement(name, attributes) {
    var element = document.createElementNS("http://www.w3.org/2000/svg", name);
    Object.keys(attributes).forEach(function (key) {
      element.setAttribute(key, String(attributes[key]));
    });
    return element;
  }

  function drawPlan(data, model) {
    var svg = byId("rk-salon-plan");
    if (!svg) { return; }
    while (svg.firstChild) { svg.removeChild(svg.firstChild); }

    var roomX = 40;
    var roomY = 34;
    var roomWidth = 520;
    var roomHeight = 190;
    var count = model.recommendedCount;
    var edgeShare = data.activeArea > 0 ? data.edgeArea / data.activeArea : 0;
    var edgeWidth = clamp(roomWidth * edgeShare, 0, roomWidth * 0.32);

    svg.appendChild(svgElement("rect", {x: roomX, y: roomY, width: roomWidth, height: roomHeight, rx: 13, fill: "#e9f3f6", stroke: "#14384d", "stroke-width": 2}));
    if (edgeWidth > 1) {
      svg.appendChild(svgElement("rect", {x: roomX + roomWidth - edgeWidth, y: roomY, width: edgeWidth, height: roomHeight, rx: 9, fill: "#ffe4d9"}));
    }

    var bandHeight = roomHeight / count;
    for (var index = 0; index < count; index += 1) {
      var top = roomY + index * bandHeight;
      var center = top + bandHeight / 2;
      if (index > 0) {
        svg.appendChild(svgElement("line", {x1: roomX, y1: top, x2: roomX + roomWidth, y2: top, stroke: "#9fb8c3", "stroke-width": 1, "stroke-dasharray": "5 5"}));
      }
      var pathData = "M " + (roomX + 20) + " " + center;
      var segments = 7;
      for (var segment = 1; segment <= segments; segment += 1) {
        var x = roomX + 20 + (roomWidth - 40) * segment / segments;
        var offset = segment % 2 === 0 ? -bandHeight * 0.22 : bandHeight * 0.22;
        pathData += " L " + x + " " + (center + offset);
      }
      svg.appendChild(svgElement("path", {d: pathData, fill: "none", stroke: index % 2 === 0 ? "#078fbe" : "#16836b", "stroke-width": 3, "stroke-linecap": "round", "stroke-linejoin": "round"}));
      var loopText = svgElement("text", {x: roomX + 9, y: center - 7, fill: "#102536", "font-size": 11, "font-weight": 800});
      loopText.textContent = "P" + (index + 1);
      svg.appendChild(loopText);
    }

    svg.appendChild(svgElement("line", {x1: roomX + roomWidth - 130, y1: roomY - 8, x2: roomX + roomWidth, y2: roomY - 8, stroke: "#25c7d8", "stroke-width": 7, "stroke-linecap": "round"}));
    var windowText = svgElement("text", {x: roomX + roomWidth - 128, y: roomY - 16, fill: "#14384d", "font-size": 11, "font-weight": 800});
    windowText.textContent = "przeszklenie / HST";
    svg.appendChild(windowText);

    if (edgeWidth > 1) {
      var edgeText = svgElement("text", {x: roomX + roomWidth - edgeWidth / 2, y: roomY + roomHeight + 22, fill: "#d94b3d", "font-size": 11, "font-weight": 800, "text-anchor": "middle"});
      edgeText.textContent = "strefa " + formatNumber(data.edgeArea, 1) + " m²";
      svg.appendChild(edgeText);
    }
    var caption = svgElement("text", {x: roomX, y: 258, fill: "#5f7783", "font-size": 11});
    caption.textContent = count + " " + loopWord(count) + " • schemat ideowy, nie trasa wykonawcza";
    svg.appendChild(caption);
  }

  function renderModel(data, model) {
    var recommendation = model.recommended;
    setText("rk-salon-loop-count", model.recommendedCount + " " + loopWord(model.recommendedCount));
    setText("rk-salon-result-summary", "Pierwszy wspólny wariant spełniający wpisany limit długości " + formatNumber(data.lengthLimit, 0) + " m i referencyjny limit oporu " + formatNumber(data.lossLimit, 0) + " kPa.");
    setText("rk-salon-field-length", formatNumber(model.fieldLength, 0) + " m");
    setText("rk-salon-total-length", formatNumber(recommendation.totalLength, 0) + " m");
    setText("rk-salon-average-length", formatNumber(recommendation.averageLength, 1) + " m");
    setText("rk-salon-unit-load", formatNumber(model.unitLoad, 0) + " W/m²");
    setText("rk-salon-total-flow", formatNumber(model.totalFlow, 2) + " l/min");
    setText("rk-salon-loop-flow", formatNumber(recommendation.flowPerLoop, 2) + " l/min");
    setText("rk-salon-pressure-loss", formatNumber(recommendation.pressureLoss, 1) + " kPa");
    setText("rk-salon-velocity", formatNumber(recommendation.velocity, 2) + " m/s");

    var status = byId("rk-salon-status");
    if (status) {
      status.className = "rk-salon-result-status";
      var lengthRatio = recommendation.averageLength / data.lengthLimit;
      var lossRatio = recommendation.pressureLoss / data.lossLimit;
      if (lengthRatio > 0.9) {
        status.className += " is-borderline";
        status.innerHTML = "<strong>Wariant graniczny długościowo.</strong> Średnia pętla wykorzystuje ponad 90% wpisanego limitu. Porównaj wariant z dodatkowym obwodem i sprawdź geometrię na rzucie.";
      } else if (lossRatio > 0.85) {
        status.className += " is-borderline";
        status.innerHTML = "<strong>Wariant graniczny hydraulicznie.</strong> Referencyjny opór wykorzystuje ponad 85% wpisanego limitu. Sprawdź krytyczną, a nie tylko średnią pętlę.";
      } else {
        status.innerHTML = "<strong>Wariant spełnia wpisane kryteria modelu.</strong> Nie jest to jeszcze potwierdzenie wydajności cieplnej ani poprawności rzeczywistej trasy pętli.";
      }
      if (model.recommendedCount >= 30) {
        status.className = "rk-salon-result-status is-warning";
        status.innerHTML = "<strong>Nie uzyskano rozsądnego wariantu w zakresie modelu.</strong> Sprawdź dane wejściowe, jednostki i przyjęte limity.";
      }
    }

    renderComparison(model);
    renderDiagnostics(data, model);
    drawChart(data, model);
    drawPlan(data, model);
  }

  function calculate() {
    var data = readData();
    var errors = validateData(data);
    var errorBox = byId("rk-salon-error");
    if (errors.length > 0) {
      if (errorBox) {
        errorBox.textContent = errors.join(" ");
        errorBox.classList.add("is-visible");
      }
      return;
    }
    if (errorBox) {
      errorBox.textContent = "";
      errorBox.classList.remove("is-visible");
    }
    renderModel(data, calculateModel(data));
  }

  function resetCalculator() {
    Object.keys(defaults).forEach(function (id) {
      var element = byId(id);
      if (element) { element.value = String(defaults[id]); }
    });
    calculate();
  }

  var calculateButton = byId("rk-salon-calculate");
  var resetButton = byId("rk-salon-reset");
  if (calculateButton) { calculateButton.addEventListener("click", calculate); }
  if (resetButton) { resetButton.addEventListener("click", resetCalculator); }

  var calculator = root.querySelector("[data-rk-salon-calculator]");
  if (calculator) {
    calculator.querySelectorAll("input, select").forEach(function (field) {
      field.addEventListener("change", calculate);
      field.addEventListener("input", function () {
        window.clearTimeout(field.rkSalonTimer);
        field.rkSalonTimer = window.setTimeout(calculate, 220);
      });
    });
  }

  var navLinks = root.querySelectorAll(".rk-salon-nav-track a[href^='#']");
  navLinks.forEach(function (link) {
    link.addEventListener("click", function (event) {
      var target = root.querySelector(link.getAttribute("href"));
      if (!target) { return; }
      event.preventDefault();
      target.scrollIntoView({behavior: "smooth", block: "start"});
    });
  });

  function updateProgress() {
    var progress = root.querySelector(".rk-salon-progress");
    if (!progress) { return; }
    var documentElement = document.documentElement;
    var scrollTop = window.pageYOffset || documentElement.scrollTop || 0;
    var scrollable = documentElement.scrollHeight - documentElement.clientHeight;
    var percentage = scrollable > 0 ? scrollTop / scrollable * 100 : 0;
    progress.style.width = clamp(percentage, 0, 100) + "%";
  }

  var resizeTimer = 0;
  window.addEventListener("scroll", updateProgress, {passive: true});
  window.addEventListener("resize", function () {
    window.clearTimeout(resizeTimer);
    resizeTimer = window.setTimeout(calculate, 140);
  });

  calculate();
  updateProgress();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/">Salon ile pętli podłogówki? Kalkulator długości rur i przepływu.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<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>
  #ez-toc-container .ez-toc-list,
  #ez-toc-container .ez-toc-list ul,
  #ez-toc-container .ez-toc-list ol{margin-top:0!important;margin-bottom:0!important}
  #ez-toc-container .ez-toc-list li{margin:0!important;padding:3px 0!important;line-height:1.4!important}
  #ez-toc-container .ez-toc-list ul,
  #ez-toc-container .ez-toc-list ol{padding-left:28px!important}

  #rk-labor-guide{
    --rk-dark:#102536;
    --rk-navy:#14384d;
    --rk-blue:#078fbe;
    --rk-cyan:#25c7d8;
    --rk-cyan-soft:#e8fbff;
    --rk-orange:#ff6a3d;
    --rk-orange-soft:#fff1eb;
    --rk-green:#16836b;
    --rk-green-soft:#eaf8f3;
    --rk-yellow:#d99b16;
    --rk-yellow-soft:#fff8df;
    --rk-red:#d94b3d;
    --rk-red-soft:#fff0ee;
    --rk-ink:#1f2c37;
    --rk-text:#475967;
    --rk-muted:#6b7e8a;
    --rk-line:#d5e4eb;
    --rk-soft:#f4f9fb;
    --rk-white:#fff;
    width:100%;
    max-width:1180px;
    margin:34px auto 72px;
    color:var(--rk-ink);
    font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
    font-size:18px;
    line-height:1.75;
  }
  #rk-labor-guide,#rk-labor-guide *{box-sizing:border-box}
  #rk-labor-guide img,#rk-labor-guide svg{max-width:100%}
  #rk-labor-guide button,#rk-labor-guide input,#rk-labor-guide select,#rk-labor-guide label,#rk-labor-guide summary,#rk-labor-guide a{font:inherit;-webkit-tap-highlight-color:transparent}
  #rk-labor-guide a{color:var(--rk-blue);font-weight:780;text-decoration-thickness:1px;text-underline-offset:3px}
  #rk-labor-guide p,#rk-labor-guide ul,#rk-labor-guide ol{margin-top:0;margin-bottom:1.1em}
  #rk-labor-guide h2,#rk-labor-guide h3,#rk-labor-guide h4{margin-top:0;color:var(--rk-dark);font-weight:950;letter-spacing:-.035em}
  #rk-labor-guide h2{margin-bottom:18px;font-size:clamp(1.8rem,4vw,2.75rem);line-height:1.08}
  #rk-labor-guide h3{margin-bottom:10px;font-size:clamp(1.08rem,2.2vw,1.34rem);line-height:1.22}
  #rk-labor-guide h4{margin-bottom:8px;font-size:1rem;line-height:1.3}
  #rk-labor-guide .rk-labor-shell{position:relative;overflow:hidden;border:1px solid var(--rk-line);border-radius:32px;background:var(--rk-white);box-shadow:0 28px 70px rgba(16,37,54,.11)}
  #rk-labor-guide .rk-labor-progress-track{position:sticky;z-index:60;top:0;height:5px;background:rgba(213,228,235,.88)}
  #rk-labor-guide .rk-labor-progress{width:0;height:100%;background:linear-gradient(90deg,var(--rk-orange),var(--rk-cyan))}
  #rk-labor-guide .rk-labor-hero{position:relative;overflow:hidden;padding:clamp(40px,7vw,78px);color:var(--rk-white);background:radial-gradient(circle at 91% 17%,rgba(255,106,61,.35),transparent 28%),radial-gradient(circle at 76% 96%,rgba(37,199,216,.25),transparent 35%),linear-gradient(126deg,#0f2233,#143d53 72%,#2e3944)}
  #rk-labor-guide .rk-labor-hero:after{content:"";position:absolute;right:-105px;bottom:-135px;width:330px;height:330px;border:42px solid rgba(255,255,255,.055);border-radius:50%}
  #rk-labor-guide .rk-labor-hero-grid{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(270px,.65fr);gap:clamp(28px,5vw,62px);align-items:center}
  #rk-labor-guide .rk-labor-eyebrow,#rk-labor-guide .rk-labor-kicker{display:inline-flex;align-items:center;gap:9px;margin-bottom:15px;color:var(--rk-blue);font-size:.68rem;font-weight:950;letter-spacing:.075em;line-height:1.35;text-transform:uppercase}
  #rk-labor-guide .rk-labor-eyebrow{color:#8ff4ff}
  #rk-labor-guide .rk-labor-eyebrow b{width:11px;height:11px;border-radius:50%;background:var(--rk-orange);box-shadow:0 0 0 7px rgba(255,106,61,.14)}
  #rk-labor-guide .rk-labor-hero-title{max-width:790px;margin-bottom:19px;color:var(--rk-white);font-size:clamp(2.25rem,6vw,4.35rem);font-weight:950;letter-spacing:-.055em;line-height:.98}
  #rk-labor-guide .rk-labor-hero-lead{max-width:760px;margin-bottom:25px;color:#dceaf0;font-size:clamp(1.02rem,2vw,1.23rem);line-height:1.68}
  #rk-labor-guide .rk-labor-meta{display:flex;flex-wrap:wrap;gap:10px}
  #rk-labor-guide .rk-labor-meta span{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid rgba(255,255,255,.14);border-radius:999px;color:#eaf7fa;background:rgba(255,255,255,.075);font-size:.75rem;font-weight:800}
  #rk-labor-guide .rk-labor-hero-card{position:relative;padding:26px;border:1px solid rgba(255,255,255,.16);border-radius:25px;background:rgba(5,27,42,.56);box-shadow:0 20px 44px rgba(0,0,0,.19);backdrop-filter:blur(9px)}
  #rk-labor-guide .rk-labor-hero-card small{display:block;margin-bottom:10px;color:#8eeef7;font-size:.67rem;font-weight:900;letter-spacing:.07em;text-transform:uppercase}
  #rk-labor-guide .rk-labor-hero-number{margin-bottom:7px;color:var(--rk-white);font-size:clamp(2rem,5vw,3.25rem);font-weight:950;letter-spacing:-.055em;line-height:1}
  #rk-labor-guide .rk-labor-hero-card p{margin-bottom:16px;color:#d9e9ee;font-size:.78rem;line-height:1.55}
  #rk-labor-guide .rk-labor-hero-values{display:grid;grid-template-columns:1fr 1fr;gap:9px}
  #rk-labor-guide .rk-labor-hero-values div{padding:12px;border-radius:14px;color:#dcecf1;background:rgba(255,255,255,.075);font-size:.68rem}
  #rk-labor-guide .rk-labor-hero-values strong{display:block;color:var(--rk-white);font-size:1.08rem}
  #rk-labor-guide .rk-labor-nav{padding:17px clamp(18px,5vw,58px) 20px;border-bottom:1px solid var(--rk-line);background:var(--rk-white)}
  #rk-labor-guide .rk-labor-nav-title{display:flex;align-items:center;gap:9px;margin-bottom:11px;color:var(--rk-muted);font-size:.64rem;font-weight:950;letter-spacing:.065em;text-transform:uppercase}
  #rk-labor-guide .rk-labor-nav-title:before{content:"";width:10px;height:10px;border-radius:3px;background:var(--rk-orange);box-shadow:0 0 0 5px var(--rk-orange-soft)}
  #rk-labor-guide .rk-labor-nav-links{display:flex;flex-wrap:wrap;gap:8px}
  #rk-labor-guide .rk-labor-nav a{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:8px 12px;border:1px solid transparent;border-radius:999px;color:var(--rk-dark);background:var(--rk-soft);font-size:.7rem;font-weight:900;line-height:1.3;text-align:center;text-decoration:none}
  #rk-labor-guide .rk-labor-nav a:hover,#rk-labor-guide .rk-labor-nav a:focus-visible{color:var(--rk-white);background:var(--rk-blue)}
  #rk-labor-guide .rk-labor-body{padding:0 clamp(20px,6vw,76px) clamp(42px,7vw,76px)}
  #rk-labor-guide .rk-labor-section{padding:clamp(48px,7vw,82px) 0;border-bottom:1px solid var(--rk-line);scroll-margin-top:88px}
  #rk-labor-guide .rk-labor-section:last-child{border-bottom:0}
  #rk-labor-guide .rk-labor-lead{max-width:930px;color:var(--rk-text);font-size:clamp(1.02rem,2vw,1.16rem)}
  #rk-labor-guide .rk-labor-answer{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,.65fr);gap:20px;margin-top:24px}
  #rk-labor-guide .rk-labor-answer-main,#rk-labor-guide .rk-labor-answer-side,#rk-labor-guide .rk-labor-card,#rk-labor-guide .rk-labor-step{padding:clamp(20px,3vw,28px);border:1px solid var(--rk-line);border-radius:21px;background:var(--rk-white)}
  #rk-labor-guide .rk-labor-answer-main{border-left:7px solid var(--rk-cyan);background:var(--rk-cyan-soft)}
  #rk-labor-guide .rk-labor-answer-side{border-left:7px solid var(--rk-orange);background:var(--rk-orange-soft)}
  #rk-labor-guide .rk-labor-answer strong.rk-labor-big{display:block;margin:5px 0;color:var(--rk-dark);font-size:clamp(1.55rem,4vw,2.65rem);line-height:1.05}
  #rk-labor-guide .rk-labor-grid-2,#rk-labor-guide .rk-labor-grid-3,#rk-labor-guide .rk-labor-grid-4{display:grid;gap:17px;margin-top:23px}
  #rk-labor-guide .rk-labor-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
  #rk-labor-guide .rk-labor-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
  #rk-labor-guide .rk-labor-grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
  #rk-labor-guide .rk-labor-card{position:relative;overflow:hidden}
  #rk-labor-guide .rk-labor-card-number{display:inline-flex;align-items:center;justify-content:center;min-width:42px;height:42px;margin-bottom:14px;padding:0 10px;border-radius:13px;color:var(--rk-white);background:var(--rk-navy);font-weight:950}
  #rk-labor-guide .rk-labor-card p:last-child,#rk-labor-guide .rk-labor-step p:last-child{margin-bottom:0}
  #rk-labor-guide .rk-labor-table-wrap{margin-top:23px}
  #rk-labor-guide table{width:100%;border-collapse:separate;border-spacing:0;overflow:hidden;border:1px solid var(--rk-line);border-radius:18px;background:var(--rk-white)}
  #rk-labor-guide th,#rk-labor-guide td{padding:14px 16px;border-right:1px solid var(--rk-line);border-bottom:1px solid var(--rk-line);text-align:left;vertical-align:top}
  #rk-labor-guide th:last-child,#rk-labor-guide td:last-child{border-right:0}
  #rk-labor-guide tbody tr:last-child td{border-bottom:0}
  #rk-labor-guide th{color:var(--rk-white);background:var(--rk-navy);font-size:.76rem;font-weight:900;letter-spacing:.025em}
  #rk-labor-guide tbody tr:nth-child(even) td{background:var(--rk-soft)}
  #rk-labor-guide .rk-labor-table-em{font-weight:950;color:var(--rk-dark)}
  #rk-labor-guide .rk-labor-callout{margin-top:22px;padding:20px 22px;border-left:6px solid var(--rk-cyan);border-radius:16px;background:var(--rk-cyan-soft)}
  #rk-labor-guide .rk-labor-callout.is-warm{border-color:var(--rk-orange);background:var(--rk-orange-soft)}
  #rk-labor-guide .rk-labor-callout.is-yellow{border-color:var(--rk-yellow);background:var(--rk-yellow-soft)}
  #rk-labor-guide .rk-labor-callout p:last-child{margin-bottom:0}
  #rk-labor-guide .rk-labor-scope{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:24px}
  #rk-labor-guide .rk-labor-scope>article{padding:25px;border:1px solid var(--rk-line);border-radius:20px;background:var(--rk-soft)}
  #rk-labor-guide .rk-labor-scope h3{padding-bottom:10px;border-bottom:1px solid var(--rk-line)}
  #rk-labor-guide .rk-labor-scope h4{margin-top:21px;color:var(--rk-blue)}

  #rk-labor-guide .rk-labor-tool{overflow:hidden;margin-top:28px;border:1px solid #315469;border-radius:28px;background:#0f2636;box-shadow:0 25px 54px rgba(16,37,54,.18)}
  #rk-labor-guide .rk-labor-tool-head{padding:clamp(27px,5vw,44px);color:#dcebf1;background:radial-gradient(circle at 92% 12%,rgba(255,106,61,.26),transparent 24%),linear-gradient(125deg,#102536,#17435a)}
  #rk-labor-guide .rk-labor-tool-head h2{color:var(--rk-white)}
  #rk-labor-guide .rk-labor-tool-head p:last-child{margin-bottom:0}
  #rk-labor-guide .rk-labor-tool-body{padding:clamp(20px,4vw,38px)}
  #rk-labor-guide .rk-labor-shared{padding:22px;border:1px solid #38586c;border-radius:20px;background:rgba(255,255,255,.04)}
  #rk-labor-guide .rk-labor-shared h3{color:var(--rk-white)}
  #rk-labor-guide .rk-labor-fields{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
  #rk-labor-guide .rk-labor-field{min-width:0}
  #rk-labor-guide .rk-labor-field label{display:block;margin-bottom:7px;color:#dcebf1;font-size:.67rem;font-weight:900;line-height:1.35}
  #rk-labor-guide .rk-labor-field input,#rk-labor-guide .rk-labor-field select,#rk-labor-guide .rk-labor-offer input,#rk-labor-guide .rk-labor-offer select{width:100%;min-height:46px;padding:9px 11px;border:1px solid #557182;border-radius:11px;outline:none;color:var(--rk-dark);background:var(--rk-white)}
  #rk-labor-guide .rk-labor-field input:focus,#rk-labor-guide .rk-labor-field select:focus,#rk-labor-guide .rk-labor-offer input:focus,#rk-labor-guide .rk-labor-offer select:focus{border-color:var(--rk-cyan);box-shadow:0 0 0 3px rgba(37,199,216,.17)}
  #rk-labor-guide input:disabled{color:#788a95;background:#dbe5e9;cursor:not-allowed}
  #rk-labor-guide .rk-labor-offers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:18px}
  #rk-labor-guide .rk-labor-offer{overflow:hidden;border:1px solid #38586c;border-radius:20px;background:rgba(255,255,255,.04)}
  #rk-labor-guide .rk-labor-offer-head{padding:20px;border-bottom:1px solid #38586c;background:rgba(255,255,255,.045)}
  #rk-labor-guide .rk-labor-offer-head h3{margin-bottom:4px;color:var(--rk-white)}
  #rk-labor-guide .rk-labor-offer-head p{margin-bottom:0;color:#a9bfca;font-size:.7rem}
  #rk-labor-guide .rk-labor-base-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:15px}
  #rk-labor-guide .rk-labor-mini-label{display:block;margin-bottom:6px;color:#c8dae2;font-size:.62rem;font-weight:850}
  #rk-labor-guide .rk-labor-line-head,#rk-labor-guide .rk-labor-line{display:grid;grid-template-columns:minmax(145px,1.35fr) minmax(112px,.85fr) minmax(100px,.7fr);gap:9px;align-items:center;padding:10px 15px}
  #rk-labor-guide .rk-labor-line-head{color:#91aeba;background:#0b202e;font-size:.59rem;font-weight:950;letter-spacing:.04em;text-transform:uppercase}
  #rk-labor-guide .rk-labor-line{border-top:1px solid #29495c}
  #rk-labor-guide .rk-labor-line:first-of-type{border-top:0}
  #rk-labor-guide .rk-labor-line-name{color:#e3eff3;font-size:.68rem;font-weight:850;line-height:1.35}
  #rk-labor-guide .rk-labor-line-name small{display:block;margin-top:2px;color:#8fa9b5;font-size:.58rem;font-weight:650}
  #rk-labor-guide .rk-labor-line select,#rk-labor-guide .rk-labor-line input{min-height:40px;padding:7px 8px;font-size:.66rem}
  #rk-labor-guide .rk-labor-actions{display:flex;flex-wrap:wrap;gap:11px;margin-top:21px}
  #rk-labor-guide .rk-labor-calculate,#rk-labor-guide .rk-labor-reset{border:0;border-radius:12px;font-weight:900;cursor:pointer;transition:transform .18s ease,background .18s ease,box-shadow .18s ease}
  #rk-labor-guide .rk-labor-calculate{padding:14px 22px;color:var(--rk-white);background:linear-gradient(135deg,var(--rk-orange),#e9552c);box-shadow:0 12px 24px rgba(255,106,61,.22)}
  #rk-labor-guide .rk-labor-reset{padding:14px 19px;color:#dcebf1;background:#29485a}
  #rk-labor-guide .rk-labor-calculate:hover,#rk-labor-guide .rk-labor-reset:hover{transform:translateY(-2px)}
  #rk-labor-guide .rk-labor-results{padding:clamp(24px,5vw,42px);border-top:1px solid #38586c;color:#dcebf1;background:#0b202e}
  #rk-labor-guide .rk-labor-results h3,#rk-labor-guide .rk-labor-results h4{color:var(--rk-white)}
  #rk-labor-guide .rk-labor-result-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
  #rk-labor-guide .rk-labor-result-card{min-width:0;padding:17px;border:1px solid #36566a;border-radius:17px;background:rgba(255,255,255,.045)}
  #rk-labor-guide .rk-labor-result-card.is-main{border-color:var(--rk-cyan);background:linear-gradient(145deg,rgba(37,199,216,.2),rgba(37,199,216,.07))}
  #rk-labor-guide .rk-labor-result-card small{display:block;min-height:2.8em;color:#9fb7c2;font-size:.65rem;font-weight:800;line-height:1.4}
  #rk-labor-guide .rk-labor-result-number{margin-top:7px;color:var(--rk-white);font-size:clamp(1.2rem,3vw,1.9rem);font-weight:950;letter-spacing:-.04em;line-height:1.1}
  #rk-labor-guide .rk-labor-chart{margin-top:22px;padding:20px;border:1px solid #36566a;border-radius:18px;background:rgba(255,255,255,.035)}
  #rk-labor-guide .rk-labor-chart h4{margin-bottom:14px}
  #rk-labor-guide .rk-labor-bar-row{display:grid;grid-template-columns:75px minmax(0,1fr) 105px;gap:10px;align-items:center;margin-top:12px;color:#dcebf1;font-size:.7rem;font-weight:850}
  #rk-labor-guide .rk-labor-bar-track{display:flex;height:24px;overflow:hidden;border-radius:999px;background:#29485a}
  #rk-labor-guide .rk-labor-segment{width:0;height:100%;transition:width .3s ease}
  #rk-labor-guide .rk-labor-segment.is-base{background:#25c7d8}
  #rk-labor-guide .rk-labor-segment.is-floor{background:#ff6a3d}
  #rk-labor-guide .rk-labor-segment.is-hydraulic{background:#f1bf3f}
  #rk-labor-guide .rk-labor-segment.is-control{background:#6e87df}
  #rk-labor-guide .rk-labor-segment.is-other{background:#8aa0ad}
  #rk-labor-guide .rk-labor-legend{display:flex;flex-wrap:wrap;gap:10px 16px;margin-top:16px;color:#a9bfca;font-size:.62rem}
  #rk-labor-guide .rk-labor-legend span{display:inline-flex;align-items:center;gap:6px}
  #rk-labor-guide .rk-labor-legend i{display:inline-block;width:11px;height:11px;border-radius:3px}
  #rk-labor-guide .rk-labor-status{margin-top:16px;padding:15px 17px;border-left:5px solid var(--rk-cyan);border-radius:13px;color:#dcebf1;background:rgba(37,199,216,.1)}
  #rk-labor-guide .rk-labor-status.is-warning{border-color:var(--rk-yellow);background:rgba(229,170,40,.12)}
  #rk-labor-guide .rk-labor-status strong{color:var(--rk-white)}
  #rk-labor-guide .rk-labor-tool-note{margin-top:14px;color:#94acb8;font-size:.65rem;line-height:1.55}
  #rk-labor-guide .rk-labor-inline-cta{position:relative;overflow:hidden;margin-top:31px;padding:clamp(27px,5vw,42px);border-radius:25px;color:var(--rk-white);background:radial-gradient(circle at 88% 15%,rgba(255,106,61,.26),transparent 25%),linear-gradient(126deg,#102536,#17465d)}
  #rk-labor-guide .rk-labor-inline-cta h3{color:var(--rk-white);font-size:clamp(1.45rem,3vw,2.1rem)}
  #rk-labor-guide .rk-labor-inline-cta p{max-width:880px;color:#d8e8ee}
  #rk-labor-guide .rk-labor-cta-button{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:13px 20px;border-radius:14px;color:var(--rk-white)!important;background:linear-gradient(135deg,var(--rk-orange),#e9542d);box-shadow:0 14px 26px rgba(255,106,61,.24);text-decoration:none!important;transition:transform .18s ease,box-shadow .18s ease}
  #rk-labor-guide .rk-labor-cta-button:hover,#rk-labor-guide .rk-labor-cta-button:focus-visible{transform:translateY(-2px);box-shadow:0 18px 30px rgba(255,106,61,.3)}
  #rk-labor-guide .rk-labor-disclosure{display:block;margin-top:10px;color:#9eb6c2;font-size:.62rem}
  #rk-labor-guide .rk-labor-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:24px;counter-reset:rk-labor-step}
  #rk-labor-guide .rk-labor-step{position:relative;padding-top:62px;counter-increment:rk-labor-step}
  #rk-labor-guide .rk-labor-step:before{content:counter(rk-labor-step,decimal-leading-zero);position:absolute;top:18px;left:22px;color:var(--rk-blue);font-size:1.25rem;font-weight:950}
  #rk-labor-guide .rk-labor-checklist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;margin:22px 0 0;padding:0;list-style:none}
  #rk-labor-guide .rk-labor-checklist li{position:relative;margin:0;padding:14px 15px 14px 48px;border:1px solid var(--rk-line);border-radius:14px;background:var(--rk-soft)}
  #rk-labor-guide .rk-labor-checklist li:before{content:"✓";position:absolute;top:13px;left:16px;display:grid;width:23px;height:23px;place-items:center;border-radius:50%;color:var(--rk-white);background:var(--rk-green);font-size:.7rem;font-weight:950}
  #rk-labor-guide .rk-labor-faq{display:grid;gap:10px;margin-top:23px}
  #rk-labor-guide .rk-labor-faq details{overflow:hidden;border:1px solid var(--rk-line);border-radius:15px;background:var(--rk-white)}
  #rk-labor-guide .rk-labor-faq summary{position:relative;padding:17px 52px 17px 18px;color:var(--rk-dark);font-weight:900;cursor:pointer;list-style:none}
  #rk-labor-guide .rk-labor-faq summary::-webkit-details-marker{display:none}
  #rk-labor-guide .rk-labor-faq summary:after{content:"+";position:absolute;top:13px;right:17px;font-size:1.35rem}
  #rk-labor-guide .rk-labor-faq details[open] summary:after{content:"−"}
  #rk-labor-guide .rk-labor-faq-answer{padding:0 18px 18px;color:var(--rk-text)}
  #rk-labor-guide .rk-labor-faq-answer p:last-child{margin-bottom:0}
  #rk-labor-guide .rk-labor-sources{padding:23px;border:1px solid var(--rk-line);border-radius:18px;background:var(--rk-soft);color:var(--rk-text);font-size:.83rem}
  #rk-labor-guide .rk-labor-sources strong{display:block;margin-bottom:8px;color:var(--rk-dark)}
  #rk-labor-guide .rk-labor-update{margin-top:12px;color:var(--rk-muted);font-size:.7rem;font-weight:800}
  #rk-labor-guide .rk-labor-author{position:relative;overflow:hidden;margin-top:clamp(48px,7vw,82px);border:1px solid var(--rk-line);border-radius:27px;background:var(--rk-white)}
  #rk-labor-guide .rk-labor-author>input{position:absolute;opacity:0;pointer-events:none}
  #rk-labor-guide .rk-labor-author-head{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:27px clamp(22px,5vw,42px);color:#dcebf1;background:linear-gradient(126deg,var(--rk-dark),var(--rk-navy))}
  #rk-labor-guide .rk-labor-author-head h2{margin-bottom:4px;color:var(--rk-white)}
  #rk-labor-guide .rk-labor-author-head p{margin-bottom:0}
  #rk-labor-guide .rk-labor-author-mark{flex:0 0 auto;padding:9px 12px;border:1px solid rgba(255,255,255,.16);border-radius:999px;color:#93f3fc;font-size:.65rem;font-weight:950;letter-spacing:.06em}
  #rk-labor-guide .rk-labor-author-layout{display:grid;grid-template-columns:270px minmax(0,1fr)}
  #rk-labor-guide .rk-labor-author-side{padding:28px;border-right:1px solid var(--rk-line);background:var(--rk-soft);text-align:center}
  #rk-labor-guide .rk-labor-author-photo{width:150px;height:150px;margin:0 auto 16px;overflow:hidden;border:6px solid var(--rk-white);border-radius:50%;box-shadow:0 12px 28px rgba(16,37,54,.16)}
  #rk-labor-guide .rk-labor-author-photo img{width:100%;height:100%;object-fit:cover}
  #rk-labor-guide .rk-labor-author-name{color:var(--rk-dark);font-size:1.18rem;font-weight:950}
  #rk-labor-guide .rk-labor-author-role{margin-top:5px;color:var(--rk-muted);font-size:.72rem;line-height:1.55}
  #rk-labor-guide .rk-labor-author-social-label{margin-top:24px;color:var(--rk-muted);font-size:.63rem;font-weight:900;letter-spacing:.05em;text-transform:uppercase}
  #rk-labor-guide .rk-labor-author-social{display:flex;justify-content:center;gap:9px;margin-top:9px}
  #rk-labor-guide .rk-labor-author-social a{display:grid;width:42px;height:42px;place-items:center;border:1px solid var(--rk-line);border-radius:13px;color:var(--rk-dark);background:var(--rk-white);transition:transform .18s ease,color .18s ease,border-color .18s ease}
  #rk-labor-guide .rk-labor-author-social a:hover,#rk-labor-guide .rk-labor-author-social a:focus-visible{transform:translateY(-2px);color:var(--rk-blue);border-color:var(--rk-cyan)}
  #rk-labor-guide .rk-labor-author-social svg{width:20px;height:20px;fill:currentColor}
  #rk-labor-guide .rk-labor-author-main{padding:clamp(24px,5vw,42px)}
  #rk-labor-guide .rk-labor-author-quote{position:relative;margin:0;padding:22px 22px 22px 28px;border-left:6px solid var(--rk-orange);border-radius:15px;background:var(--rk-orange-soft)}
  #rk-labor-guide .rk-labor-author-quote p{margin-bottom:0;color:var(--rk-dark);font-weight:760}
  #rk-labor-guide .rk-labor-author-tabs{display:flex;margin-top:24px;border-bottom:1px solid var(--rk-line)}
  #rk-labor-guide .rk-labor-author-tab{padding:11px 14px;border-bottom:3px solid transparent;color:var(--rk-muted);font-size:.72rem;font-weight:900;cursor:pointer}
  #rk-labor-guide .rk-labor-author-panel{display:none;padding-top:18px;color:var(--rk-text)}
  #rk-labor-guide .rk-labor-author-panel p:last-child{margin-bottom:0}
  #rk-labor-author-about:checked~.rk-labor-author-layout .rk-labor-author-panel-about,#rk-labor-author-exp:checked~.rk-labor-author-layout .rk-labor-author-panel-exp,#rk-labor-author-sites:checked~.rk-labor-author-layout .rk-labor-author-panel-sites{display:block}
  #rk-labor-author-about:checked~.rk-labor-author-layout label[for="rk-labor-author-about"],#rk-labor-author-exp:checked~.rk-labor-author-layout label[for="rk-labor-author-exp"],#rk-labor-author-sites:checked~.rk-labor-author-layout label[for="rk-labor-author-sites"]{color:var(--rk-dark);border-bottom-color:var(--rk-cyan)}
  #rk-labor-guide .rk-labor-site-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
  #rk-labor-guide .rk-labor-site-links a{padding:8px 11px;border-radius:999px;background:var(--rk-soft);font-size:.7rem;text-decoration:none}
  #rk-labor-guide .rk-labor-final-cta{margin-top:28px;padding:clamp(32px,6vw,58px);border-radius:27px;color:#dcebf1;background:radial-gradient(circle at 89% 16%,rgba(255,106,61,.29),transparent 25%),linear-gradient(126deg,#102536,#17465d);text-align:center}
  #rk-labor-guide .rk-labor-final-cta h2{max-width:850px;margin-right:auto;margin-left:auto;color:var(--rk-white)}
  #rk-labor-guide .rk-labor-final-cta p{max-width:850px;margin-right:auto;margin-left:auto}
  @media(max-width:980px){
    #rk-labor-guide .rk-labor-hero-grid,#rk-labor-guide .rk-labor-answer{grid-template-columns:1fr}
    #rk-labor-guide .rk-labor-fields{grid-template-columns:repeat(3,minmax(0,1fr))}
    #rk-labor-guide .rk-labor-grid-4,#rk-labor-guide .rk-labor-result-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    #rk-labor-guide .rk-labor-grid-3,#rk-labor-guide .rk-labor-steps{grid-template-columns:repeat(2,minmax(0,1fr))}
  }
  @media(max-width:760px){
    #rk-labor-guide{margin:16px auto 46px;font-size:16px}
    #rk-labor-guide .rk-labor-shell{border-radius:20px}
    #rk-labor-guide .rk-labor-hero{padding:34px 22px}
    #rk-labor-guide .rk-labor-body{padding-right:18px;padding-left:18px}
    #rk-labor-guide .rk-labor-nav{padding:15px 18px 18px}
    #rk-labor-guide .rk-labor-nav-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
    #rk-labor-guide .rk-labor-nav a{width:100%;min-height:45px;padding:8px 9px;border-radius:13px;font-size:.66rem}
    #rk-labor-guide .rk-labor-grid-2,#rk-labor-guide .rk-labor-grid-3,#rk-labor-guide .rk-labor-grid-4,#rk-labor-guide .rk-labor-scope,#rk-labor-guide .rk-labor-offers,#rk-labor-guide .rk-labor-steps,#rk-labor-guide .rk-labor-checklist,#rk-labor-guide .rk-labor-fields{grid-template-columns:1fr}
    #rk-labor-guide .rk-labor-result-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    #rk-labor-guide .rk-labor-author-layout{grid-template-columns:1fr}
    #rk-labor-guide .rk-labor-author-side{border-right:0;border-bottom:1px solid var(--rk-line)}
    #rk-labor-guide .rk-labor-author-head{align-items:flex-start}
    #rk-labor-guide .rk-labor-author-mark{display:none}
    #rk-labor-guide .rk-labor-bar-row{grid-template-columns:58px minmax(0,1fr) 86px;font-size:.62rem}
    #rk-labor-guide table,#rk-labor-guide thead,#rk-labor-guide tbody,#rk-labor-guide tr,#rk-labor-guide th,#rk-labor-guide td{display:block;width:100%}
    #rk-labor-guide thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
    #rk-labor-guide table{border:0;background:transparent}
    #rk-labor-guide tbody{display:grid;gap:13px}
    #rk-labor-guide tr{overflow:hidden;border:1px solid var(--rk-line);border-radius:15px;background:var(--rk-white)}
    #rk-labor-guide td,#rk-labor-guide tbody tr:last-child td{display:grid;grid-template-columns:minmax(108px,.78fr) minmax(0,1.22fr);gap:12px;padding:11px 13px;border-right:0;border-bottom:1px solid var(--rk-line)!important;background:var(--rk-white)!important}
    #rk-labor-guide td:last-child{border-bottom:0!important}
    #rk-labor-guide td:before{content:attr(data-label);color:var(--rk-muted);font-size:.69rem;font-weight:900}
  }
  @media(max-width:540px){
    #rk-labor-guide .rk-labor-result-grid{grid-template-columns:1fr}
    #rk-labor-guide .rk-labor-base-fields{grid-template-columns:1fr}
    #rk-labor-guide .rk-labor-line-head{display:none}
    #rk-labor-guide .rk-labor-line{grid-template-columns:1fr 1fr;padding:14px}
    #rk-labor-guide .rk-labor-line-name{grid-column:1/-1}
    #rk-labor-guide .rk-labor-author-tabs{overflow-x:auto}
    #rk-labor-guide .rk-labor-author-tab{flex:0 0 auto}
  }
  @media(prefers-reduced-motion:reduce){
    #rk-labor-guide *,#rk-labor-guide *:before,#rk-labor-guide *:after{scroll-behavior:auto!important;transition:none!important}
  }
</style>

<article id="rk-labor-guide">
  <div class="rk-labor-shell">
    <div class="rk-labor-progress-track" aria-hidden="true"><div class="rk-labor-progress" id="rk-labor-progress"></div></div>
    <header class="rk-labor-hero">
      <div class="rk-labor-hero-grid">
        <div>
          <span class="rk-labor-eyebrow"><b></b> Koszt robocizny • zakres oferty • 2026</span>
          <div class="rk-labor-hero-title">Cena za m² nie wystarczy, żeby porównać wykonawców</div>
          <p class="rk-labor-hero-lead">Sprawdź orientacyjne poziomy cen, rozdziel powierzchnię całkowitą od czynnej i policz dwie oferty według tego samego zakresu: od izolacji po próbę szczelności, uruchomienie i automatykę.</p>
          <div class="rk-labor-meta"><span>Aktualizacja: 29.08.2026</span><span>Jedno narzędzie porównawcze</span><span>Ceny bez udawanej dokładności</span></div>
        </div>
        <aside class="rk-labor-hero-card" aria-label="Orientacyjne poziomy robocizny">
          <small>Szybki punkt odniesienia</small>
          <div class="rk-labor-hero-number">40–120+ zł/m²</div>
          <p>To szeroki przedział różnych zakresów, a nie jedna stawka dla każdej budowy. Najpierw sprawdź, co wykonawca liczy w cenie bazowej.</p>
          <div class="rk-labor-hero-values"><div><strong>40–60</strong>samo układanie rur</div><div><strong>60–90</strong>szerszy standard prac</div><div><strong>90–120+</strong>małe lub złożone zlecenia</div><div><strong>netto czy brutto?</strong>zawsze zapisz w ofercie</div></div>
        </aside>
      </div>
    </header>

    <nav class="rk-labor-nav" aria-label="Spis treści artykułu">
      <span class="rk-labor-nav-title">Spis treści — przejdź do sekcji</span>
      <div class="rk-labor-nav-links">
        <a href="#rk-labor-answer">Cena robocizny 2026</a>
        <a href="#rk-labor-scope">Zakres robocizny</a>
        <a href="#rk-labor-calculator">Kalkulator ofert</a>
        <a href="#rk-labor-area">Powierzchnia rozliczeniowa</a>
        <a href="#rk-labor-variants">Same rury czy pełny zakres</a>
        <a href="#rk-labor-components">Izolacja i rozdzielacz</a>
        <a href="#rk-labor-test">Próba a uruchomienie</a>
        <a href="#rk-labor-spacing">Rozstaw 10 i 15 cm</a>
        <a href="#rk-labor-complexity">Kondygnacje i remont</a>
        <a href="#rk-labor-examples">Koszt 100–150 m²</a>
        <a href="#rk-labor-compare">Porównanie ofert</a>
        <a href="#rk-labor-contract">Checklista umowy</a>
        <a href="#rk-labor-errors">Najczęstsze błędy</a>
        <a href="#rk-labor-faq">FAQ</a>
        <a href="#rk-labor-sources">Metodyka i źródła</a>
      </div>
    </nav>

    <main class="rk-labor-body">
      <section class="rk-labor-section" id="rk-labor-answer">
        <span class="rk-labor-kicker">Najważniejsza odpowiedź</span>
        <h2>Ile kosztuje robocizna podłogówki za m² w 2026 roku?</h2>
        <p class="rk-labor-lead">Nie istnieje jedna uczciwa cena za m² ogrzewania podłogowego bez opisu zakresu. Inaczej wycenia się samo mocowanie rur na gotowym podłożu, a inaczej przygotowanie izolacji, montaż rozdzielacza, podłączenie obwodów, próbę, napełnienie i uruchomienie.</p>
        <div class="rk-labor-answer">
          <div class="rk-labor-answer-main">
            <span class="rk-labor-kicker">Orientacyjnie, sierpień 2026</span>
            <strong class="rk-labor-big">60–90 zł/m²</strong>
            <p>może być sensownym punktem startowym dla szerszego standardu robocizny w typowym domu, ale dopiero po wpisaniu zakresu, podstawy rozliczenia, liczby kondygnacji i ceny netto lub brutto.</p>
          </div>
          <div class="rk-labor-answer-side">
            <span class="rk-labor-kicker">Najczęstszy błąd</span>
            <strong class="rk-labor-big">65 ≠ 65</strong>
            <p>Dwie identyczne stawki mogą dać różne rachunki, gdy jedna jest liczona od powierzchni całkowitej, druga od czynnej, a rozdzielacz i próba są dopłatami.</p>
          </div>
        </div>
        <div class="rk-labor-table-wrap">
          <table>
            <thead><tr><th>Rodzaj wyceny</th><th>Orientacyjny poziom</th><th>Co może obejmować</th><th>Co koniecznie sprawdzić</th></tr></thead>
            <tbody>
              <tr><td data-label="Rodzaj wyceny" class="rk-labor-table-em">Samo układanie rur</td><td data-label="Orientacyjny poziom">około 40–60 zł/m²</td><td data-label="Co może obejmować">Mocowanie rur na przygotowanej warstwie systemowej.</td><td data-label="Co koniecznie sprawdzić">Dobiegi, podłączenia pętli, rozdzielacz i próba.</td></tr>
              <tr><td data-label="Rodzaj wyceny" class="rk-labor-table-em">Szerszy standard robocizny</td><td data-label="Orientacyjny poziom">około 60–90 zł/m²</td><td data-label="Co może obejmować">Część przygotowania, rury, podłączenia i kontrolę szczelności.</td><td data-label="Co koniecznie sprawdzić">Dokładną listę prac, powierzchnię rozliczeniową i uruchomienie.</td></tr>
              <tr><td data-label="Rodzaj wyceny" class="rk-labor-table-em">Małe lub złożone zlecenie</td><td data-label="Orientacyjny poziom">około 90–120+ zł/m²</td><td data-label="Co może obejmować">Więcej pracy jednostkowej, kilka kondygnacji, trudną logistykę lub nietypowy zakres.</td><td data-label="Co koniecznie sprawdzić">Czy stawka jest ryczałtem oraz jakie prace są osobno.</td></tr>
            </tbody>
          </table>
        </div>
        <div class="rk-labor-callout is-yellow"><p><strong>To widełki redakcyjne do pierwszego budżetu, nie cennik ani obietnica ceny.</strong> Lokalne oferty mogą znaleźć się poniżej lub powyżej tych wartości. Porównuj kwoty z tej samej daty, z tym samym zakresem, podatkiem i powierzchnią rozliczeniową.</p></div>
      </section>

      <section class="rk-labor-section" id="rk-labor-scope">
        <span class="rk-labor-kicker">Cena jest skrótem zakresu</span>
        <h2>Co naprawdę może obejmować robocizna ogrzewania podłogowego?</h2>
        <p class="rk-labor-lead">Hasło „kompletna podłogówka” nie ma jednej technicznej definicji. Najbezpieczniej rozbić ofertę na pozycje i przy każdej zaznaczyć: w cenie bazowej, dopłata albo nieustalone.</p>
        <div class="rk-labor-scope">
          <article>
            <h3>Przygotowanie podłoża i warstw pod rurą</h3>
            <p>W tej części mogą znaleźć się porządki, korekty podłoża, układanie izolacji, folii, taśmy brzegowej oraz przygotowanie przejść i dylatacji.</p>
            <h4>Kiedy rozliczać powierzchnię całkowitą?</h4>
            <p>Izolację i warstwy pod rurą zwykle wykonuje się na większej powierzchni niż samo aktywne pole grzewcze. Podstawa rozliczenia powinna być wpisana osobno.</p>
            <p>Przed wyceną sprawdź <a href="https://projekt-ogrzewania.pl/jakie-sa-najlepsze-sposoby-izolacji-pod-ogrzewanie-podlogowe/">sposób izolacji pod ogrzewanie podłogowe</a>, <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">ilość styropianu</a> oraz <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">izolację brzegową i dylatacje</a>.</p>
          </article>
          <article>
            <h3>Rury, rozdzielacz i czynności hydrauliczne</h3>
            <p>Druga grupa obejmuje trasowanie, mocowanie rur, dobiegi, montaż szafki i rozdzielacza, opis oraz podłączenie pętli, próbę szczelności, napełnienie, odpowietrzenie i ewentualne uruchomienie.</p>
            <h4>Kiedy rozliczać powierzchnię czynną?</h4>
            <p>Rury nie muszą znajdować się pod trwałą zabudową i innymi wyłączonymi polami. Dlatego ich montaż może być liczony od powierzchni rzeczywiście ogrzewanej, ale trzeba to nazwać wprost.</p>
            <p>Liczbę rur i obwodów weryfikują osobno <a href="https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/">kalkulator ilości rury</a> oraz analiza <a href="https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/">długości pojedynczej pętli</a>.</p>
          </article>
        </div>
        <div class="rk-labor-table-wrap">
          <table>
            <thead><tr><th>Pozycja</th><th>Typowa jednostka</th><th>Pytanie do wykonawcy</th></tr></thead>
            <tbody>
              <tr><td data-label="Pozycja">Przygotowanie podłoża, izolacja, folia</td><td data-label="Typowa jednostka">m² powierzchni całkowitej</td><td data-label="Pytanie do wykonawcy">Czy materiał i poprawki podłoża są osobno?</td></tr>
              <tr><td data-label="Pozycja">Trasowanie i mocowanie rur</td><td data-label="Typowa jednostka">m² powierzchni czynnej lub całkowitej</td><td data-label="Pytanie do wykonawcy">Który metraż jest podstawą faktury?</td></tr>
              <tr><td data-label="Pozycja">Szafka i rozdzielacz</td><td data-label="Typowa jednostka">sztuka</td><td data-label="Pytanie do wykonawcy">Czy obejmuje montaż, uzbrojenie i opis?</td></tr>
              <tr><td data-label="Pozycja">Podłączenie pętli</td><td data-label="Typowa jednostka">obwód</td><td data-label="Pytanie do wykonawcy">Czy podłączenia i oznaczenia są w stawce m²?</td></tr>
              <tr><td data-label="Pozycja">Próba szczelności</td><td data-label="Typowa jednostka">ryczałt lub instalacja</td><td data-label="Pytanie do wykonawcy">Jakie medium, ciśnienie, czas i protokół?</td></tr>
              <tr><td data-label="Pozycja">Płukanie, napełnienie, odpowietrzenie</td><td data-label="Typowa jednostka">ryczałt</td><td data-label="Pytanie do wykonawcy">Czy płyn i jego przygotowanie są w cenie?</td></tr>
              <tr><td data-label="Pozycja">Uruchomienie i równoważenie</td><td data-label="Typowa jednostka">ryczałt lub obwód</td><td data-label="Pytanie do wykonawcy">Czy obejmuje przepływy i nastawy rozdzielacza?</td></tr>
              <tr><td data-label="Pozycja">Automatyka strefowa</td><td data-label="Typowa jednostka">strefa</td><td data-label="Pytanie do wykonawcy">Czy jest okablowanie, montaż i konfiguracja?</td></tr>
              <tr><td data-label="Pozycja">Transport i logistyka</td><td data-label="Typowa jednostka">ryczałt</td><td data-label="Pytanie do wykonawcy">Czy dojazd, wniesienie i kolejne wizyty są w cenie?</td></tr>
            </tbody>
          </table>
        </div>
      </section>

      <section class="rk-labor-section" id="rk-labor-calculator">
        <div class="rk-labor-tool">
          <header class="rk-labor-tool-head">
            <span class="rk-labor-eyebrow"><b></b> Interaktywny kalkulator i porównywarka</span>
            <h2>Porównaj dwie oferty na podłogówkę według tego samego zakresu</h2>
            <p>Wpisz dane inwestycji, a następnie oznacz każdą pozycję jako zawartą w stawce bazowej, płatną dodatkowo albo nieustaloną. Narzędzie nie zgaduje brakujących cen — pokazuje je jako ryzyko porównania.</p>
          </header>
          <div class="rk-labor-tool-body">
            <form aria-label="Dane ofert wykonawców" onsubmit="return false">
              <div class="rk-labor-shared">
                <h3>Wspólne dane budynku</h3>
                <div class="rk-labor-fields">
                  <div class="rk-labor-field"><label for="rk-labor-total-area">Powierzchnia całkowita [m²]</label><input id="rk-labor-total-area" type="number" min="1" max="5000" step="1" value="120" inputmode="decimal"></div>
                  <div class="rk-labor-field"><label for="rk-labor-active-area">Powierzchnia czynna [m²]</label><input id="rk-labor-active-area" type="number" min="1" max="5000" step="1" value="105" inputmode="decimal"></div>
                  <div class="rk-labor-field"><label for="rk-labor-manifolds">Liczba rozdzielaczy</label><input id="rk-labor-manifolds" type="number" min="1" max="50" step="1" value="1" inputmode="numeric"></div>
                  <div class="rk-labor-field"><label for="rk-labor-loops">Liczba pętli</label><input id="rk-labor-loops" type="number" min="1" max="300" step="1" value="10" inputmode="numeric"></div>
                  <div class="rk-labor-field"><label for="rk-labor-zones">Liczba stref automatyki</label><input id="rk-labor-zones" type="number" min="0" max="100" step="1" value="6" inputmode="numeric"></div>
                </div>
              </div>

              <div class="rk-labor-offers">
                <section class="rk-labor-offer" aria-label="Oferta A">
                  <header class="rk-labor-offer-head">
                    <h3>Oferta A</h3><p>Przykładowe dane są edytowalne.</p>
                    <div class="rk-labor-base-fields">
                      <label><span class="rk-labor-mini-label">Stawka bazowa [zł/m²]</span><input id="rk-labor-a-base" type="number" min="0" max="2000" step="1" value="65" inputmode="decimal"></label>
                      <label><span class="rk-labor-mini-label">Podstawa stawki</span><select id="rk-labor-a-basis"><option value="active" selected>powierzchnia czynna</option><option value="total">powierzchnia całkowita</option></select></label>
                    </div>
                  </header>
                  <div class="rk-labor-line-head"><span>Pozycja</span><span>Status</span><span>Cena jedn.</span></div>
                  <div class="rk-labor-line"><span class="rk-labor-line-name">Izolacja i przygotowanie<small>zł/m² całkowitej</small></span><select id="rk-labor-a-insulation-status"><option value="included">w bazie</option><option value="extra" selected>dopłata</option><option value="unknown">nieustalone</option></select><input id="rk-labor-a-insulation-price" type="number" min="0" step="1" value="18" inputmode="decimal" aria-label="Oferta A cena izolacji za metr kwadratowy"></div>
                  <div class="rk-labor-line"><span class="rk-labor-line-name">Montaż rozdzielacza<small>zł/szt.</small></span><select id="rk-labor-a-manifold-status"><option value="included">w bazie</option><option value="extra" selected>dopłata</option><option value="unknown">nieustalone</option></select><input id="rk-labor-a-manifold-price" type="number" min="0" step="10" value="850" inputmode="decimal" aria-label="Oferta A cena montażu rozdzielacza"></div>
                  <div class="rk-labor-line"><span class="rk-labor-line-name">Podłączenie pętli<small>zł/obwód</small></span><select id="rk-labor-a-loops-status"><option value="included" selected>w bazie</option><option value="extra">dopłata</option><option value="unknown">nieustalone</option></select><input id="rk-labor-a-loops-price" type="number" min="0" step="10" value="90" inputmode="decimal" aria-label="Oferta A cena podłączenia pętli"></div>
                  <div class="rk-labor-line"><span class="rk-labor-line-name">Próba z protokołem<small>zł/instalacja</small></span><select id="rk-labor-a-test-status"><option value="included" selected>w bazie</option><option value="extra">dopłata</option><option value="unknown">nieustalone</option></select><input id="rk-labor-a-test-price" type="number" min="0" step="10" value="500" inputmode="decimal" aria-label="Oferta A cena próby szczelności"></div>
                  <div class="rk-labor-line"><span class="rk-labor-line-name">Płukanie i napełnienie<small>zł/instalacja</small></span><select id="rk-labor-a-flush-status"><option value="included">w bazie</option><option value="extra">dopłata</option><option value="unknown" selected>nieustalone</option></select><input id="rk-labor-a-flush-price" type="number" min="0" step="10" value="600" inputmode="decimal" aria-label="Oferta A cena płukania i napełnienia"></div>
                  <div class="rk-labor-line"><span class="rk-labor-line-name">Uruchomienie i regulacja<small>zł/instalacja</small></span><select id="rk-labor-a-start-status"><option value="included">w bazie</option><option value="extra">dopłata</option><option value="unknown" selected>nieustalone</option></select><input id="rk-labor-a-start-price" type="number" min="0" step="10" value="900" inputmode="decimal" aria-label="Oferta A cena uruchomienia i regulacji"></div>
                  <div class="rk-labor-line"><span class="rk-labor-line-name">Automatyka strefowa<small>zł/strefa</small></span><select id="rk-labor-a-controls-status"><option value="included">w bazie</option><option value="extra" selected>dopłata</option><option value="unknown">nieustalone</option></select><input id="rk-labor-a-controls-price" type="number" min="0" step="10" value="180" inputmode="decimal" aria-label="Oferta A cena montażu automatyki na strefę"></div>
                  <div class="rk-labor-line"><span class="rk-labor-line-name">Transport i logistyka<small>zł/ryczałt</small></span><select id="rk-labor-a-transport-status"><option value="included">w bazie</option><option value="extra" selected>dopłata</option><option value="unknown">nieustalone</option></select><input id="rk-labor-a-transport-price" type="number" min="0" step="10" value="350" inputmode="decimal" aria-label="Oferta A koszt transportu"></div>
                  <div class="rk-labor-line"><span class="rk-labor-line-name">Inne prace<small>zł/ryczałt</small></span><select id="rk-labor-a-other-status"><option value="included" selected>w bazie</option><option value="extra">dopłata</option><option value="unknown">nieustalone</option></select><input id="rk-labor-a-other-price" type="number" min="0" step="10" value="0" inputmode="decimal" aria-label="Oferta A inne koszty"></div>
                </section>

                <section class="rk-labor-offer" aria-label="Oferta B">
                  <header class="rk-labor-offer-head">
                    <h3>Oferta B</h3><p>Ten sam zakres, druga metoda wyceny.</p>
                    <div class="rk-labor-base-fields">
                      <label><span class="rk-labor-mini-label">Stawka bazowa [zł/m²]</span><input id="rk-labor-b-base" type="number" min="0" max="2000" step="1" value="78" inputmode="decimal"></label>
                      <label><span class="rk-labor-mini-label">Podstawa stawki</span><select id="rk-labor-b-basis"><option value="active">powierzchnia czynna</option><option value="total" selected>powierzchnia całkowita</option></select></label>
                    </div>
                  </header>
                  <div class="rk-labor-line-head"><span>Pozycja</span><span>Status</span><span>Cena jedn.</span></div>
                  <div class="rk-labor-line"><span class="rk-labor-line-name">Izolacja i przygotowanie<small>zł/m² całkowitej</small></span><select id="rk-labor-b-insulation-status"><option value="included" selected>w bazie</option><option value="extra">dopłata</option><option value="unknown">nieustalone</option></select><input id="rk-labor-b-insulation-price" type="number" min="0" step="1" value="18" inputmode="decimal" aria-label="Oferta B cena izolacji za metr kwadratowy"></div>
                  <div class="rk-labor-line"><span class="rk-labor-line-name">Montaż rozdzielacza<small>zł/szt.</small></span><select id="rk-labor-b-manifold-status"><option value="included" selected>w bazie</option><option value="extra">dopłata</option><option value="unknown">nieustalone</option></select><input id="rk-labor-b-manifold-price" type="number" min="0" step="10" value="850" inputmode="decimal" aria-label="Oferta B cena montażu rozdzielacza"></div>
                  <div class="rk-labor-line"><span class="rk-labor-line-name">Podłączenie pętli<small>zł/obwód</small></span><select id="rk-labor-b-loops-status"><option value="included" selected>w bazie</option><option value="extra">dopłata</option><option value="unknown">nieustalone</option></select><input id="rk-labor-b-loops-price" type="number" min="0" step="10" value="90" inputmode="decimal" aria-label="Oferta B cena podłączenia pętli"></div>
                  <div class="rk-labor-line"><span class="rk-labor-line-name">Próba z protokołem<small>zł/instalacja</small></span><select id="rk-labor-b-test-status"><option value="included" selected>w bazie</option><option value="extra">dopłata</option><option value="unknown">nieustalone</option></select><input id="rk-labor-b-test-price" type="number" min="0" step="10" value="500" inputmode="decimal" aria-label="Oferta B cena próby szczelności"></div>
                  <div class="rk-labor-line"><span class="rk-labor-line-name">Płukanie i napełnienie<small>zł/instalacja</small></span><select id="rk-labor-b-flush-status"><option value="included" selected>w bazie</option><option value="extra">dopłata</option><option value="unknown">nieustalone</option></select><input id="rk-labor-b-flush-price" type="number" min="0" step="10" value="600" inputmode="decimal" aria-label="Oferta B cena płukania i napełnienia"></div>
                  <div class="rk-labor-line"><span class="rk-labor-line-name">Uruchomienie i regulacja<small>zł/instalacja</small></span><select id="rk-labor-b-start-status"><option value="included" selected>w bazie</option><option value="extra">dopłata</option><option value="unknown">nieustalone</option></select><input id="rk-labor-b-start-price" type="number" min="0" step="10" value="900" inputmode="decimal" aria-label="Oferta B cena uruchomienia i regulacji"></div>
                  <div class="rk-labor-line"><span class="rk-labor-line-name">Automatyka strefowa<small>zł/strefa</small></span><select id="rk-labor-b-controls-status"><option value="included">w bazie</option><option value="extra" selected>dopłata</option><option value="unknown">nieustalone</option></select><input id="rk-labor-b-controls-price" type="number" min="0" step="10" value="160" inputmode="decimal" aria-label="Oferta B cena montażu automatyki na strefę"></div>
                  <div class="rk-labor-line"><span class="rk-labor-line-name">Transport i logistyka<small>zł/ryczałt</small></span><select id="rk-labor-b-transport-status"><option value="included" selected>w bazie</option><option value="extra">dopłata</option><option value="unknown">nieustalone</option></select><input id="rk-labor-b-transport-price" type="number" min="0" step="10" value="350" inputmode="decimal" aria-label="Oferta B koszt transportu"></div>
                  <div class="rk-labor-line"><span class="rk-labor-line-name">Inne prace<small>zł/ryczałt</small></span><select id="rk-labor-b-other-status"><option value="included" selected>w bazie</option><option value="extra">dopłata</option><option value="unknown">nieustalone</option></select><input id="rk-labor-b-other-price" type="number" min="0" step="10" value="0" inputmode="decimal" aria-label="Oferta B inne koszty"></div>
                </section>
              </div>
              <div class="rk-labor-actions"><button class="rk-labor-calculate" id="rk-labor-calculate" type="button">Porównaj oferty</button><button class="rk-labor-reset" id="rk-labor-reset" type="button">Przywróć przykład</button></div>
            </form>
          </div>
          <div class="rk-labor-results" aria-live="polite">
            <h3>Wynik dla wpisanych ofert</h3>
            <div class="rk-labor-result-grid">
              <div class="rk-labor-result-card is-main"><small>Oferta A — znany koszt</small><div class="rk-labor-result-number" id="rk-labor-a-total">11 265 zł</div></div>
              <div class="rk-labor-result-card"><small>Oferta A — efektywnie na m² całkowitej</small><div class="rk-labor-result-number" id="rk-labor-a-meter">93,88 zł/m²</div></div>
              <div class="rk-labor-result-card is-main"><small>Oferta B — znany koszt</small><div class="rk-labor-result-number" id="rk-labor-b-total">10 320 zł</div></div>
              <div class="rk-labor-result-card"><small>Oferta B — efektywnie na m² całkowitej</small><div class="rk-labor-result-number" id="rk-labor-b-meter">86,00 zł/m²</div></div>
              <div class="rk-labor-result-card"><small>Różnica znanych kosztów</small><div class="rk-labor-result-number" id="rk-labor-difference">945 zł</div></div>
              <div class="rk-labor-result-card"><small>Pozycje nieustalone w A</small><div class="rk-labor-result-number" id="rk-labor-a-unknown">2</div></div>
              <div class="rk-labor-result-card"><small>Pozycje nieustalone w B</small><div class="rk-labor-result-number" id="rk-labor-b-unknown">0</div></div>
              <div class="rk-labor-result-card"><small>Różnica powierzchni</small><div class="rk-labor-result-number" id="rk-labor-area-difference">15 m²</div></div>
            </div>
            <div class="rk-labor-chart" role="img" aria-label="Porównanie struktury znanych kosztów ofert A i B">
              <h4>Struktura znanych kosztów</h4>
              <div class="rk-labor-bar-row"><span>Oferta A</span><div class="rk-labor-bar-track"><i class="rk-labor-segment is-base" id="rk-labor-a-bar-base"></i><i class="rk-labor-segment is-floor" id="rk-labor-a-bar-floor"></i><i class="rk-labor-segment is-hydraulic" id="rk-labor-a-bar-hydraulic"></i><i class="rk-labor-segment is-control" id="rk-labor-a-bar-control"></i><i class="rk-labor-segment is-other" id="rk-labor-a-bar-other"></i></div><strong id="rk-labor-a-bar-value">11 265 zł</strong></div>
              <div class="rk-labor-bar-row"><span>Oferta B</span><div class="rk-labor-bar-track"><i class="rk-labor-segment is-base" id="rk-labor-b-bar-base"></i><i class="rk-labor-segment is-floor" id="rk-labor-b-bar-floor"></i><i class="rk-labor-segment is-hydraulic" id="rk-labor-b-bar-hydraulic"></i><i class="rk-labor-segment is-control" id="rk-labor-b-bar-control"></i><i class="rk-labor-segment is-other" id="rk-labor-b-bar-other"></i></div><strong id="rk-labor-b-bar-value">10 320 zł</strong></div>
              <div class="rk-labor-legend"><span><i style="background:#25c7d8"></i>stawka bazowa</span><span><i style="background:#ff6a3d"></i>podłoże i izolacja</span><span><i style="background:#f1bf3f"></i>hydraulika i próba</span><span><i style="background:#6e87df"></i>uruchomienie i automatyka</span><span><i style="background:#8aa0ad"></i>transport i inne</span></div>
            </div>
            <div class="rk-labor-status is-warning" id="rk-labor-status"><strong>Oferta B ma niższy znany koszt, ale w ofercie A pozostają 2 pozycje nieustalone.</strong> Zanim wybierzesz cenę, uzupełnij płukanie oraz uruchomienie.</div>
            <p class="rk-labor-tool-note">Wynik jest prostym zestawieniem wpisanych cen robocizny. Nie obejmuje materiałów, podatków, poprawek budowlanych ani pozycji oznaczonych jako „nieustalone”. Kwota „w bazie” nie jest dodawana drugi raz. Wartości startowe są wyłącznie przykładem działania.</p>
          </div>
        </div>

        <aside class="rk-labor-inline-cta" aria-label="Projekt przed wyborem wykonawcy">
          <span class="rk-labor-eyebrow"><b></b> To samo zapytanie dla każdej ekipy</span>
          <h3>Kalkulator policzył ceny zapisane w ofertach. Nadal nie wie, czy obie ekipy wyceniły właściwą liczbę pętli.</h3>
          <p>Najuczciwiej porównasz wykonawców wtedy, gdy każda firma otrzyma ten sam projekt: te same powierzchnie czynne, rozstawy, długości pętli, dobiegi, rozdzielacze i zakres uruchomienia. Niższa stawka może oznaczać po prostu mniej elementów w ofercie.</p>
          <a class="rk-labor-cta-button rk-labor-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt przed wyborem wykonawcy</a>
          <small class="rk-labor-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
        </aside>
      </section>

      <section class="rk-labor-section" id="rk-labor-area">
        <span class="rk-labor-kicker">Dwie różne podstawy rachunku</span>
        <h2>Powierzchnia całkowita czy czynna — od ilu m² liczy się robociznę?</h2>
        <p class="rk-labor-lead">To jeden z najważniejszych punktów oferty. Powierzchnia całkowita podłóg i powierzchnia rzeczywiście ogrzewana nie są tym samym, dlatego identyczna stawka za m² może dać inną kwotę końcową.</p>
        <div class="rk-labor-grid-2">
          <article class="rk-labor-card"><span class="rk-labor-card-number">A</span><h3>Powierzchnia całkowita</h3><p>Obejmuje podłogi objęte zakresem prac, także miejsca, w których nie będzie rury. Może być logiczną podstawą dla izolacji, folii, taśmy lub prac przygotowawczych.</p><h4>Co zapisać w ofercie?</h4><p>Konkretny metraż, pomieszczenia objęte pracą oraz sposób pomiaru wnęk, schodów i powierzchni wyłączonych.</p></article>
          <article class="rk-labor-card"><span class="rk-labor-card-number">B</span><h3>Powierzchnia czynna grzewczo</h3><p>To pole, na którym rzeczywiście układane są rury. Nie obejmuje trwałej zabudowy i innych fragmentów świadomie wyłączonych z ogrzewania.</p><h4>Co zapisać w ofercie?</h4><p>Metraż czynny wynikający z rzutu, a nie oszacowany procent powierzchni domu. Do niego trzeba doliczyć rzeczywiste dobiegi pętli.</p></article>
        </div>
        <div class="rk-labor-callout"><p><strong>Przykład:</strong> dom ma 120 m² podłóg i 105 m² powierzchni czynnej. Stawka 70 zł/m² daje odpowiednio 8400 zł albo 7350 zł. Różnica 1050 zł powstaje jeszcze przed sprawdzeniem rozdzielacza, próby i uruchomienia.</p></div>
      </section>

      <section class="rk-labor-section" id="rk-labor-variants">
        <span class="rk-labor-kicker">Taniej nie zawsze znaczy ten sam produkt</span>
        <h2>Samo układanie rur a pełniejszy zakres robocizny</h2>
        <p class="rk-labor-lead">Wycena samego mocowania rur może być całkowicie prawidłowa, jeżeli inwestor lub inna ekipa odpowiada za pozostałe prace. Problem zaczyna się dopiero wtedy, gdy ofertę częściową porównuje się z ofertą obejmującą więcej etapów.</p>
        <div class="rk-labor-table-wrap">
          <table>
            <thead><tr><th>Etap</th><th>Samo układanie rur</th><th>Szerszy zakres robocizny</th><th>Dokument odbiorowy</th></tr></thead>
            <tbody>
              <tr><td data-label="Etap">Ocena przygotowania podłoża</td><td data-label="Samo układanie rur">często po stronie inwestora</td><td data-label="Szerszy zakres robocizny">może być objęta ofertą</td><td data-label="Dokument odbiorowy">ustalenie zakresu i odpowiedzialności</td></tr>
              <tr><td data-label="Etap">Izolacja, folia, taśma</td><td data-label="Samo układanie rur">zwykle poza zakresem</td><td data-label="Szerszy zakres robocizny">w bazie lub jako dopłata</td><td data-label="Dokument odbiorowy">kontrola warstw przed zakryciem</td></tr>
              <tr><td data-label="Etap">Trasowanie i mocowanie rur</td><td data-label="Samo układanie rur">zakres podstawowy</td><td data-label="Szerszy zakres robocizny">zakres podstawowy</td><td data-label="Dokument odbiorowy">zdjęcia i opis pętli</td></tr>
              <tr><td data-label="Etap">Rozdzielacz i podłączenia</td><td data-label="Samo układanie rur">często dodatkowo</td><td data-label="Szerszy zakres robocizny">często w zakresie</td><td data-label="Dokument odbiorowy">opis obwodów</td></tr>
              <tr><td data-label="Etap">Próba szczelności</td><td data-label="Samo układanie rur">do ustalenia</td><td data-label="Szerszy zakres robocizny">powinna być nazwana wprost</td><td data-label="Dokument odbiorowy">protokół próby</td></tr>
              <tr><td data-label="Etap">Napełnienie i odpowietrzenie</td><td data-label="Samo układanie rur">zwykle osobno</td><td data-label="Szerszy zakres robocizny">zależnie od umowy</td><td data-label="Dokument odbiorowy">potwierdzenie wykonania</td></tr>
              <tr><td data-label="Etap">Uruchomienie i nastawy</td><td data-label="Samo układanie rur">poza zakresem</td><td data-label="Szerszy zakres robocizny">nie zawsze w cenie</td><td data-label="Dokument odbiorowy">nastawy lub protokół uruchomienia</td></tr>
            </tbody>
          </table>
        </div>
        <p>Jeżeli potrzebujesz pełnego budżetu z materiałami, zobacz osobno <a href="https://projekt-ogrzewania.pl/ile-kosztuje-100-m%C2%B2-ogrzewania-podlogowego/">koszt ogrzewania podłogowego dla 100 m²</a> oraz <a href="https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/">kompleksową wycenę wodnej podłogówki</a>. Ten artykuł celowo pozostaje przy robociźnie.</p>
      </section>

      <section class="rk-labor-section" id="rk-labor-components">
        <span class="rk-labor-kicker">Najczęstsze dopłaty</span>
        <h2>Izolacja, rozdzielacz, podłączenia i automatyka — co bywa liczone osobno?</h2>
        <div class="rk-labor-grid-4">
          <article class="rk-labor-card"><span class="rk-labor-card-number">01</span><h3>Izolacja i system mocowania</h3><p>Robocizna zależy od liczby warstw, konieczności docinania oraz rodzaju systemu. Folia z nadrukiem i klipsy nie są tym samym rozwiązaniem co płyta systemowa z wypustkami.</p></article>
          <article class="rk-labor-card"><span class="rk-labor-card-number">02</span><h3>Rozdzielacz i szafka</h3><p>Trzeba rozdzielić montaż szafki, osadzenie rozdzielacza, uzbrojenie, podłączenie magistrali i opis obwodów. Sama nazwa „montaż rozdzielacza” może oznaczać różny zakres.</p></article>
          <article class="rk-labor-card"><span class="rk-labor-card-number">03</span><h3>Podłączenie każdej pętli</h3><p>Liczba obwodów wpływa na liczbę połączeń i opisów. Nie należy jej automatycznie wyznaczać z powierzchni bez rozkładu pomieszczeń, długości i hydrauliki.</p></article>
          <article class="rk-labor-card"><span class="rk-labor-card-number">04</span><h3>Automatyka strefowa</h3><p>Osobnymi etapami mogą być okablowanie, montaż regulatorów, siłowników, listwy, konfiguracja oraz sprawdzenie działania. Cena urządzeń nie jest ceną robocizny.</p></article>
        </div>
        <p>Przed zamówieniem rozdzielacza warto zrozumieć jego rolę w artykule <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacz do podłogówki</a>. Po uruchomieniu przepływy odczytuje się na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach rozdzielacza</a>, ale ich nastawy powinny wynikać z obliczeń, a nie z podzielenia jednego przepływu po równo.</p>
      </section>

      <section class="rk-labor-section" id="rk-labor-test">
        <span class="rk-labor-kicker">Trzy osobne czynności</span>
        <h2>Próba szczelności to nie uruchomienie i nie regulacja przepływów</h2>
        <p class="rk-labor-lead">W ofertach te pojęcia bywają łączone w jedno zdanie, choć dotyczą innych momentów i innych rezultatów. Warto wycenić je oddzielnie.</p>
        <div class="rk-labor-grid-3">
          <article class="rk-labor-card"><span class="rk-labor-card-number">P</span><h3>Próba szczelności</h3><p>Ma potwierdzić szczelność wykonanego układu zgodnie z przyjętą procedurą. Powinny być ustalone warunki, czas, medium i forma protokołu.</p></article>
          <article class="rk-labor-card"><span class="rk-labor-card-number">N</span><h3>Napełnienie i odpowietrzenie</h3><p>Dotyczy przygotowania instalacji do pracy: płukania, napełnienia właściwym medium i usunięcia powietrza z poszczególnych obwodów.</p></article>
          <article class="rk-labor-card"><span class="rk-labor-card-number">R</span><h3>Uruchomienie i równoważenie</h3><p>Obejmuje sprawdzenie działania oraz ustawienie przepływów zgodnie z danymi projektowymi. Każda pętla może wymagać innej wartości.</p></article>
        </div>
        <p>Szczegółową procedurę opisuje artykuł o <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/">próbie szczelności ogrzewania podłogowego</a>. Jeżeli wykonawca wpisuje tylko „próba w cenie”, dopytaj, czy otrzymasz protokół i czy kontrola nastąpi przed zakryciem rur.</p>
      </section>

      <section class="rk-labor-section" id="rk-labor-spacing">
        <span class="rk-labor-kicker">Rozstaw wpływa na pracę, ale nie tworzy taryfy</span>
        <h2>Czy rozstaw 10 cm musi kosztować więcej niż 15 cm?</h2>
        <p class="rk-labor-lead">Przy tej samej powierzchni pola grzewczego zmiana rozstawu z 15 na 10 cm zwiększa teoretyczną gęstość rury o około 50%. Nie oznacza to jednak automatycznie wzrostu całej robocizny o 50% ani stałej dopłaty za każdy metr kwadratowy.</p>
        <div class="rk-labor-answer">
          <div class="rk-labor-answer-main"><h3>Co rzeczywiście może wzrosnąć?</h3><p>Ilość mocowań, liczba przejść, długość rury, prawdopodobna liczba obwodów oraz czas pracy przy rozdzielaczu. Wpływ zależy od geometrii pomieszczeń i przyjętego systemu montażu.</p></div>
          <div class="rk-labor-answer-side"><h3>Czego nie wolno zakładać?</h3><p>Że każde źródło ciepła wymaga jednego rozstawu albo że sam rodzaj budynku rozstrzyga układ rur. Rozstaw wynika z obciążenia cieplnego, powierzchni czynnej, parametrów wody i konstrukcji podłogi.</p></div>
        </div>
        <p>Pełne zasady doboru opisujemy w artykule <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstaw rur ogrzewania podłogowego 10 czy 15 cm</a>. Do wyceny robocizny wykonawca powinien otrzymać rzeczywisty układ, a nie założenie „wszędzie co 15 cm”.</p>
      </section>

      <section class="rk-labor-section" id="rk-labor-complexity">
        <span class="rk-labor-kicker">Co zmienia cenę poza metrażem?</span>
        <h2>Kondygnacje, małe pomieszczenia, logistyka i remont</h2>
        <p class="rk-labor-lead">Dwa domy po 120 m² mogą wymagać innego nakładu pracy. Różnicę tworzy liczba rozdzielaczy, pomieszczeń, drzwi i stref, sposób przygotowania podłoża, dostęp do budowy oraz kolejność robót.</p>
        <div class="rk-labor-grid-3">
          <article class="rk-labor-card"><span class="rk-labor-card-number">1F</span><h3>Jedna zwarta kondygnacja</h3><p>Mniej przenoszenia materiału i zwykle prostsza logistyka. Nadal trzeba uwzględnić oddzielne pomieszczenia, dylatacje i dobiegi.</p></article>
          <article class="rk-labor-card"><span class="rk-labor-card-number">2F</span><h3>Kilka kondygnacji</h3><p>Może oznaczać więcej rozdzielaczy, szafek, podejść, transportu pionowego oraz odrębne etapy próby i uruchomienia.</p></article>
          <article class="rk-labor-card"><span class="rk-labor-card-number">R</span><h3>Remont istniejącego domu</h3><p>Demontaż, naprawy podłoża, ograniczona wysokość i praca etapami powinny być wycenione osobno. Frezowanie ma inny proces niż nowa podłoga.</p></article>
        </div>
        <p>Dla modernizacji zobacz osobne opracowanie <a href="https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/">frezowanie ogrzewania podłogowego w starym domu</a>. Harmonogram pomaga ocenić artykuł <a href="https://projekt-ogrzewania.pl/ile-trwa-montaz-ogrzewania-podlogowego/">ile trwa montaż podłogówki</a> oraz poradnik <a href="https://projekt-ogrzewania.pl/kiedy-najlepiej-planowac-montaz-ogrzewania-podlogowego-w-nowym-domu/">kiedy planować montaż w nowym domu</a>.</p>
      </section>

      <section class="rk-labor-section" id="rk-labor-examples">
        <span class="rk-labor-kicker">Proste przykłady budżetowe</span>
        <h2>Ile może wynieść robocizna podłogówki dla 100, 120 i 150 m²?</h2>
        <p class="rk-labor-lead">Poniższe mnożenie pokazuje wyłącznie skalę kosztu przy dwóch orientacyjnych zakresach stawek. Nie uwzględnia osobnych ryczałtów, różnicy powierzchni czynnej, materiałów ani podatku.</p>
        <div class="rk-labor-table-wrap">
          <table>
            <thead><tr><th>Powierzchnia rozliczeniowa</th><th>Samo układanie rur 40–60 zł/m²</th><th>Szerszy standard 60–90 zł/m²</th><th>Najważniejsza uwaga</th></tr></thead>
            <tbody>
              <tr><td data-label="Powierzchnia rozliczeniowa" class="rk-labor-table-em">100 m²</td><td data-label="Samo układanie rur 40–60 zł/m²">4000–6000 zł</td><td data-label="Szerszy standard 60–90 zł/m²">6000–9000 zł</td><td data-label="Najważniejsza uwaga">Sprawdź, czy to 100 m² całkowitej, czy czynnej.</td></tr>
              <tr><td data-label="Powierzchnia rozliczeniowa" class="rk-labor-table-em">120 m²</td><td data-label="Samo układanie rur 40–60 zł/m²">4800–7200 zł</td><td data-label="Szerszy standard 60–90 zł/m²">7200–10 800 zł</td><td data-label="Najważniejsza uwaga">Rozdzielacz i próba mogą być ryczałtem.</td></tr>
              <tr><td data-label="Powierzchnia rozliczeniowa" class="rk-labor-table-em">150 m²</td><td data-label="Samo układanie rur 40–60 zł/m²">6000–9000 zł</td><td data-label="Szerszy standard 60–90 zł/m²">9000–13 500 zł</td><td data-label="Najważniejsza uwaga">Kilka kondygnacji może zmienić liczbę rozdzielaczy.</td></tr>
            </tbody>
          </table>
        </div>
        <div class="rk-labor-callout is-warm"><p><strong>Nie dodawaj obu kolumn.</strong> Reprezentują dwa różne poziomy zakresu. Własną ofertę policz w porównywarce, wpisując stawkę bazową oraz tylko te dopłaty, które wykonawca wyraźnie wskazał.</p></div>
      </section>

      <section class="rk-labor-section" id="rk-labor-compare">
        <span class="rk-labor-kicker">Najpierw ujednolić, potem porównać</span>
        <h2>Jak porównać dwie oferty na ogrzewanie podłogowe?</h2>
        <div class="rk-labor-steps">
          <article class="rk-labor-step"><h3>Wpisz ten sam zakres budynku</h3><p>Podaj obu wykonawcom identyczne kondygnacje, pomieszczenia, powierzchnię całkowitą oraz rzeczywiście ogrzewaną.</p></article>
          <article class="rk-labor-step"><h3>Dołącz ten sam projekt</h3><p>Porównanie ma sens, gdy obie firmy wyceniają tę samą liczbę pętli, rozdzielaczy, rozstawy i dobiegi.</p></article>
          <article class="rk-labor-step"><h3>Rozbij stawkę bazową</h3><p>Ustal, czy obejmuje izolację, mocowanie rur, podłączenia, montaż rozdzielacza i próbę.</p></article>
          <article class="rk-labor-step"><h3>Oddziel odbiór od uruchomienia</h3><p>Zapisz osobno próbę szczelności, płukanie, napełnienie, odpowietrzenie, regulację i automatykę.</p></article>
          <article class="rk-labor-step"><h3>Ujednolić podatki i terminy</h3><p>Porównaj kwoty netto z netto albo brutto z brutto oraz ten sam termin ważności i realizacji oferty.</p></article>
          <article class="rk-labor-step"><h3>Policz koszt znany i braki</h3><p>Nie wpisuj zera przy pozycji nieustalonej. Zaznacz brak, poproś o doprecyzowanie i dopiero wtedy wybieraj.</p></article>
        </div>
        <p>Osobnym kosztem jest dokumentacja. Wyjaśniamy to w poradniku <a href="https://projekt-ogrzewania.pl/ile-kosztuje-projekt-ogrzewania-podlogowego/">ile kosztuje projekt ogrzewania podłogowego</a>. Cena projektu nie powinna być ukrywana w robociźnie, jeżeli wykonawca jedynie przyjmuje własne założenia na budowie.</p>
      </section>

      <section class="rk-labor-section" id="rk-labor-contract">
        <span class="rk-labor-kicker">Do zapytania i umowy</span>
        <h2>Checklista przed podpisaniem umowy z wykonawcą podłogówki</h2>
        <ul class="rk-labor-checklist">
          <li>Adres, zakres kondygnacji i pomieszczeń objętych pracami.</li>
          <li>Powierzchnia całkowita oraz czynna wpisane jako dwie liczby.</li>
          <li>Projekt, według którego wyceniane są rozstawy i długości pętli.</li>
          <li>Liczba szafek, rozdzielaczy, pętli i stref automatyki.</li>
          <li>Jednoznaczna podstawa stawki za m².</li>
          <li>Lista prac zawartych w cenie bazowej.</li>
          <li>Ceny wszystkich dopłat i sposób ich zatwierdzania.</li>
          <li>Informacja, czy podane kwoty są netto, czy brutto.</li>
          <li>Odpowiedzialność za przygotowanie oraz odbiór podłoża.</li>
          <li>Rodzaj systemu mocowania rur i zakres wykonania izolacji.</li>
          <li>Warunki próby szczelności oraz protokół.</li>
          <li>Zakres płukania, napełnienia i odpowietrzenia.</li>
          <li>Zakres uruchomienia, regulacji i zapis nastaw.</li>
          <li>Dokumentacja zdjęciowa przed wykonaniem wylewki.</li>
          <li>Termin, etapy płatności i zasady odbioru.</li>
          <li>Procedura zgłaszania prac dodatkowych i poprawek.</li>
        </ul>
      </section>

      <section class="rk-labor-section" id="rk-labor-errors">
        <span class="rk-labor-kicker">Pułapki w uproszczonych cennikach</span>
        <h2>Najczęstsze błędy przy ocenie ceny robocizny</h2>
        <div class="rk-labor-grid-3">
          <article class="rk-labor-card"><span class="rk-labor-card-number">01</span><h3>Jedna stawka bez zakresu</h3><p>Nie wiadomo, czy obejmuje przygotowanie, rozdzielacz, podłączenia, próbę i uruchomienie.</p></article>
          <article class="rk-labor-card"><span class="rk-labor-card-number">02</span><h3>Nieznana powierzchnia</h3><p>Cena za m² nie mówi, czy wykonawca używa całej podłogi, aktywnego pola, czy jeszcze innego pomiaru.</p></article>
          <article class="rk-labor-card"><span class="rk-labor-card-number">03</span><h3>Sztywna dopłata za rozstaw</h3><p>Większa gęstość rur wpływa na pracę, lecz nie uzasadnia jednej uniwersalnej dopłaty dla każdego budynku.</p></article>
          <article class="rk-labor-card"><span class="rk-labor-card-number">04</span><h3>Próba nazwana uruchomieniem</h3><p>Kontrola szczelności nie zastępuje napełnienia, odpowietrzenia, regulacji przepływów i sprawdzenia sterowania.</p></article>
          <article class="rk-labor-card"><span class="rk-labor-card-number">05</span><h3>Równe przepływy dla pętli</h3><p>Obwody mogą przenosić inną moc i mieć inną długość. Nastawy nie powinny wynikać z prostego podziału po równo.</p></article>
          <article class="rk-labor-card"><span class="rk-labor-card-number">06</span><h3>Gwarantowana oszczędność</h3><p>Nie da się uczciwie obiecać stałego procentu oszczędności dzięki jednemu elementowi bez danych konkretnej inwestycji.</p></article>
        </div>
        <p>Poza ceną sprawdź również <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">najczęstsze błędy montażowe podłogówki</a>. Taniej wykonana instalacja nie jest oszczędnością, jeżeli po wylewce trzeba naprawiać rozmieszczenie rur, połączenia lub hydraulikę.</p>
      </section>

      <section class="rk-labor-section" id="rk-labor-faq">
        <span class="rk-labor-kicker">Pytania inwestorów</span>
        <h2>FAQ — cena robocizny ogrzewania podłogowego</h2>
        <div class="rk-labor-faq">
          <details><summary>Ile kosztuje robocizna podłogówki za m² w 2026 roku?</summary><div class="rk-labor-faq-answer"><p>Orientacyjnie samo układanie rur na przygotowanym podłożu może znajdować się w przedziale około 40–60 zł/m², szerszy standard robocizny około 60–90 zł/m², a małe lub złożone zlecenia około 90–120 zł/m² lub więcej. Są to szerokie punkty odniesienia, nie cennik. Zakres, lokalizacja, powierzchnia i sposób rozliczenia mogą istotnie zmienić ofertę.</p></div></details>
          <details><summary>Co obejmuje cena robocizny ogrzewania podłogowego?</summary><div class="rk-labor-faq-answer"><p>Nie ma jednego stałego zakresu. Oferta może obejmować przygotowanie warstw, izolację, mocowanie rur, montaż rozdzielacza, podłączenia pętli, próbę szczelności, napełnienie, uruchomienie i automatykę, ale każdą pozycję trzeba potwierdzić na piśmie.</p></div></details>
          <details><summary>Czy cenę liczy się od powierzchni całkowitej, czy czynnej?</summary><div class="rk-labor-faq-answer"><p>Zależy od rodzaju pracy i umowy. Izolacja może być liczona od powierzchni całkowitej, a układanie rur od powierzchni czynnej. Oferta powinna podawać oba metraże oraz podstawę każdej stawki.</p></div></details>
          <details><summary>Ile kosztuje robocizna podłogówki dla 100 m²?</summary><div class="rk-labor-faq-answer"><p>Przy orientacyjnej stawce 40–60 zł/m² samo układanie rur daje 4000–6000 zł. Przy szerszym standardzie 60–90 zł/m² daje 6000–9000 zł. Do wyniku mogą dojść ryczałty oraz dopłaty, a 100 m² musi być jasno zdefiniowane jako powierzchnia całkowita lub czynna.</p></div></details>
          <details><summary>Czy styropian i folia są w cenie układania podłogówki?</summary><div class="rk-labor-faq-answer"><p>Nie należy tego zakładać. Część ekip wycenia przygotowanie warstw osobno, a część zawiera wybrany zakres w cenie bazowej. Trzeba oddzielić robociznę od materiałów oraz wskazać liczbę warstw i powierzchnię rozliczeniową.</p></div></details>
          <details><summary>Czy montaż rozdzielacza jest w cenie za m²?</summary><div class="rk-labor-faq-answer"><p>Czasem tak, a czasem jest osobną pozycją za sztukę. Warto ustalić, czy chodzi tylko o osadzenie urządzenia, czy także szafkę, uzbrojenie, podłączenie magistrali, podłączenie pętli i ich opis.</p></div></details>
          <details><summary>Czy próba szczelności obejmuje uruchomienie instalacji?</summary><div class="rk-labor-faq-answer"><p>Nie automatycznie. Próba sprawdza szczelność według ustalonej procedury. Napełnienie, odpowietrzenie, uruchomienie, równoważenie przepływów oraz konfiguracja automatyki to osobne czynności.</p></div></details>
          <details><summary>Czy rozstaw rur 10 cm zwiększa cenę robocizny?</summary><div class="rk-labor-faq-answer"><p>Może zwiększyć nakład pracy, ilość mocowań, długość rury i liczbę obwodów. Nie istnieje jednak jedna obowiązkowa dopłata. Wpływ powinien wynikać z konkretnego projektu i geometrii, a nie z samego hasła „rozstaw 10 cm”.</p></div></details>
          <details><summary>Dlaczego tańsza oferta może mieć wyższy koszt końcowy?</summary><div class="rk-labor-faq-answer"><p>Może używać mniejszej powierzchni w nagłówku, ale naliczać rozdzielacz, podłączenia, próbę, transport i uruchomienie osobno. Dlatego porównuje się końcową kwotę znanych pozycji oraz liczbę elementów jeszcze nieustalonych.</p></div></details>
          <details><summary>Czy kalkulator obejmuje materiały i podatek?</summary><div class="rk-labor-faq-answer"><p>Nie. Narzędzie zestawia wpisane ceny robocizny i nie dolicza automatycznie materiałów ani podatku. Kwoty netto i brutto należy ujednolicić przed wpisaniem.</p></div></details>
          <details><summary>Czy projekt podłogówki jest częścią robocizny?</summary><div class="rk-labor-faq-answer"><p>Nie musi nią być. Projekt to odrębna dokumentacja określająca między innymi powierzchnie czynne, rozstawy, trasy, długości, przepływy i nastawy. Ten sam projekt pozwala przesłać wykonawcom porównywalne zapytanie.</p></div></details>
          <details><summary>Jakie dokumenty odebrać po montażu?</summary><div class="rk-labor-faq-answer"><p>Zakres odbioru powinien wynikać z umowy. Przydatne są zdjęcia rur przed zakryciem, opis obwodów, protokół próby, informacje o użytych materiałach oraz zapis danych uruchomienia i nastaw, jeśli były częścią zlecenia.</p></div></details>
        </div>
      </section>

      <section class="rk-labor-section" id="rk-labor-sources">
        <span class="rk-labor-kicker">Metodyka i neutralne źródła</span>
        <h2>Skąd pochodzą założenia i jak czytać widełki cenowe?</h2>
        <div class="rk-labor-sources">
          <strong>Widełki są punktem budżetowym, a dokumenty zewnętrzne opisują metodykę i kontekst</strong>
          <p>Podane przedziały cenowe są redakcyjnym modelem orientacyjnym z datą aktualizacji, a nie stawką wynikającą z normy lub urzędowego cennika. Główny Urząd Statystyczny publikuje <a href="https://stat.gov.pl/obszary-tematyczne/ceny-handel/ceny/ceny-robot-budowlano-montazowych-i-obiektow-budowlanych-pazdziernik-2024-r-,5,153.html" target="_blank" rel="noopener nofollow">wskaźniki cen produkcji budowlano-montażowej</a>, które pomagają śledzić zmianę poziomu cen w czasie, lecz nie wyznaczają detalicznej stawki za montaż podłogówki w konkretnym domu.</p>
          <p>Przy opisie i porównywaniu zakresu pomocne są urzędowe zasady dotyczące <a href="https://www.gov.pl/attachment/ca9d3252-3cc7-4f97-b9cc-da41071c3114" target="_blank" rel="noopener nofollow">przedmiaru i kosztorysowania robót</a>. Techniczny kontekst projektowania wodnego ogrzewania płaszczyznowego opisuje <a href="https://www.iso.org/standard/74684.html" target="_blank" rel="noopener nofollow">ISO 11855-3:2021</a>, a zagadnienia instalacji systemu obejmuje <a href="https://www.iso.org/standard/74686.html" target="_blank" rel="noopener nofollow">ISO 11855-5:2021</a>. Strony norm nie stanowią cenników wykonawczych.</p>
          <p>Własną decyzję opieraj na aktualnych ofertach z Twojej lokalizacji, wystawionych dla tego samego projektu, zakresu, terminu i sposobu rozliczenia.</p>
        </div>
        <div class="rk-labor-update">Ostatnia aktualizacja merytoryczna: 29 sierpnia 2026 r.</div>
      </section>

      <section class="rk-labor-author" id="rk-labor-author" aria-label="Autor opracowania">
        <input type="radio" name="rk-labor-author-tabs" id="rk-labor-author-about" checked>
        <input type="radio" name="rk-labor-author-tabs" id="rk-labor-author-exp">
        <input type="radio" name="rk-labor-author-tabs" id="rk-labor-author-sites">
        <header class="rk-labor-author-head"><div><span class="rk-labor-kicker" style="color:#83f3ff">Autor opracowania</span><h2>Robert Kucharski</h2><p>Projektant instalacji sanitarnych • specjalista HVAC i ogrzewania podłogowego</p></div><span class="rk-labor-author-mark">KOSZT • ZAKRES • HVAC</span></header>
        <div class="rk-labor-author-layout">
          <aside class="rk-labor-author-side">
            <div class="rk-labor-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant ogrzewania podłogowego" width="600" height="600" loading="lazy" decoding="async"></div>
            <div class="rk-labor-author-name">Robert Kucharski</div>
            <div class="rk-labor-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
            <div class="rk-labor-author-social-label">Znajdziesz mnie również:</div>
            <div class="rk-labor-author-social" aria-label="Profile Roberta Kucharskiego w mediach społecznościowych">
              <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener nofollow me" aria-label="Robert Kucharski na LinkedIn" title="LinkedIn"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5.2 7.7H1.6V22h3.6V7.7ZM3.4 2A2.1 2.1 0 1 0 3.4 6.2 2.1 2.1 0 0 0 3.4 2ZM22.4 13.8c0-4.3-2.3-6.3-5.4-6.3a4.7 4.7 0 0 0-4.2 2.3V7.7H9.2V22h3.6v-7.1c0-1.9.4-3.7 2.7-3.7 2.3 0 2.3 2.1 2.3 3.8v7h3.6l1-8.2Z"></path></svg></a>
              <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="noopener nofollow me" aria-label="Projekt-Ogrzewania.pl na Facebooku" title="Facebook"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M14.2 22v-9h3l.5-3.5h-3.5V7.3c0-1 .3-1.7 1.8-1.7h1.9V2.5c-.3 0-1.5-.1-2.8-.1-2.8 0-4.7 1.7-4.7 4.8v2.3H7.2V13h3.2v9h3.8Z"></path></svg></a>
              <a href="https://x.com/Projekt_HVAC" target="_blank" rel="noopener nofollow me" aria-label="Projekt HVAC w serwisie X" title="X"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.9 2H22l-6.8 7.8L23.2 22H17l-4.9-6.4L6.5 22H3.3l7.3-8.4L2.8 2h6.4l4.4 5.8L18.9 2Zm-1.1 17.8h1.7L8.3 4.1H6.5l11.3 15.7Z"></path></svg></a>
            </div>
          </aside>
          <div class="rk-labor-author-main">
            <blockquote class="rk-labor-author-quote"><p>„Cena za metr kwadratowy jest użyteczna dopiero wtedy, gdy wiadomo, od jakiej powierzchni jest liczona i co znajduje się w zakresie. Projekt pozwala wysłać kilku ekipom dokładnie to samo zapytanie, a dopiero wtedy porównujemy wykonawców, nie przypadkowe założenia.”</p></blockquote>
            <div class="rk-labor-author-tabs" role="tablist" aria-label="Informacje o autorze"><label class="rk-labor-author-tab" for="rk-labor-author-about">O autorze</label><label class="rk-labor-author-tab" for="rk-labor-author-exp">Doświadczenie</label><label class="rk-labor-author-tab" for="rk-labor-author-sites">Portale</label></div>
            <div class="rk-labor-author-panel rk-labor-author-panel-about"><p>Projektuję wodne ogrzewanie podłogowe, łącząc obliczenia cieplne z rzeczywistym przebiegiem rur, długościami pętli, przepływami, stratami ciśnienia i nastawami rozdzielaczy. W publikacjach rozdzielam orientacyjny budżet od wiążącej oferty dla konkretnego zakresu.</p><p><a href="https://projekt-ogrzewania.pl/author/admin3399/">Zobacz profil i pozostałe opracowania autora</a>.</p></div>
            <div class="rk-labor-author-panel rk-labor-author-panel-exp"><p>Dokumentacja projektowa określa powierzchnie czynne, liczbę obwodów, rozstawy i długości. Dzięki temu wykonawcy mogą wyceniać ten sam przedmiot prac, a inwestor widzi, czy różnica ceny wynika ze stawki, czy z pominiętego zakresu.</p></div>
            <div class="rk-labor-author-panel rk-labor-author-panel-sites"><p>Jestem właścicielem trzech serwisów branżowych. Powiązanie portali podaję jawnie, aby czytelnik znał autorstwo i kontekst linkowania.</p><div class="rk-labor-site-links"><a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a><a href="https://remont.biz.pl/" target="_blank" rel="noopener nofollow">Remont.biz.pl</a><a href="https://sobir.pl/" target="_blank" rel="noopener nofollow">Sobir.pl</a></div></div>
          </div>
        </div>
      </section>

      <section class="rk-labor-final-cta" aria-label="Projekt do porównania ofert wykonawców">
        <span class="rk-labor-kicker" style="color:#83f3ff">Jedna dokumentacja dla każdej ekipy</span>
        <h2>Otrzymaj projekt, który przekażesz wykonawcom do wyceny</h2>
        <p>Projekt określi powierzchnie czynne, rozstawy, trasy, długości pętli, dobiegi, przepływy i nastawy. Dzięki temu każda firma wycenia ten sam układ, a Ty możesz porównać zakres, kwotę i odpowiedzialność bez zgadywania.</p>
        <a class="rk-labor-cta-button rk-labor-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów kompletny projekt ogrzewania podłogowego</a>
        <small class="rk-labor-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
      </section>
    </main>
  </div>
</article>

<script type="application/ld+json">
{
  "@context":"https://schema.org",
  "@graph":[
    {
      "@type":"TechArticle",
      "@id":"https://projekt-ogrzewania.pl/podlogowka-cena-za-m%C2%B2-robocizny/#article",
      "url":"https://projekt-ogrzewania.pl/podlogowka-cena-za-m%C2%B2-robocizny/",
      "headline":"Podłogówka – cena za m² robocizny w 2026 r. Zakres prac i kalkulator",
      "description":"Orientacyjne ceny robocizny ogrzewania podłogowego, szczegółowy zakres prac oraz kalkulator porównujący dwie oferty wykonawców.",
      "inLanguage":"pl-PL",
      "dateModified":"2026-08-29",
      "mainEntityOfPage":{"@id":"https://projekt-ogrzewania.pl/podlogowka-cena-za-m%C2%B2-robocizny/#webpage"},
      "author":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher":{"@id":"https://projekt-ogrzewania.pl/#organization"},
      "about":[{"@type":"Thing","name":"Cena robocizny ogrzewania podłogowego"},{"@type":"Thing","name":"Zakres montażu podłogówki"},{"@type":"Thing","name":"Porównywanie ofert wykonawców"}],
      "isPartOf":{"@id":"https://projekt-ogrzewania.pl/#website"}
    },
    {
      "@type":"WebPage",
      "@id":"https://projekt-ogrzewania.pl/podlogowka-cena-za-m%C2%B2-robocizny/#webpage",
      "url":"https://projekt-ogrzewania.pl/podlogowka-cena-za-m%C2%B2-robocizny/",
      "name":"Podłogówka – cena za m² robocizny w 2026 r. Zakres prac i kalkulator",
      "description":"Sprawdź orientacyjne poziomy cen robocizny i porównaj dwie oferty według wspólnej powierzchni, liczby pętli, rozdzielaczy oraz zakresu uruchomienia.",
      "inLanguage":"pl-PL",
      "dateModified":"2026-08-29",
      "isPartOf":{"@id":"https://projekt-ogrzewania.pl/#website"},
      "breadcrumb":{"@id":"https://projekt-ogrzewania.pl/podlogowka-cena-za-m%C2%B2-robocizny/#breadcrumb"},
      "mainEntity":[{"@id":"https://projekt-ogrzewania.pl/podlogowka-cena-za-m%C2%B2-robocizny/#application"},{"@id":"https://projekt-ogrzewania.pl/podlogowka-cena-za-m%C2%B2-robocizny/#howto"},{"@id":"https://projekt-ogrzewania.pl/podlogowka-cena-za-m%C2%B2-robocizny/#faq"}]
    },
    {
      "@type":"BreadcrumbList",
      "@id":"https://projekt-ogrzewania.pl/podlogowka-cena-za-m%C2%B2-robocizny/#breadcrumb",
      "itemListElement":[{"@type":"ListItem","position":1,"name":"Strona główna","item":"https://projekt-ogrzewania.pl/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https://projekt-ogrzewania.pl/blog/"},{"@type":"ListItem","position":3,"name":"Cena robocizny podłogówki","item":"https://projekt-ogrzewania.pl/podlogowka-cena-za-m%C2%B2-robocizny/"}]
    },
    {
      "@type":"WebApplication",
      "@id":"https://projekt-ogrzewania.pl/podlogowka-cena-za-m%C2%B2-robocizny/#application",
      "name":"Kalkulator robocizny i porównywarka ofert podłogówki",
      "url":"https://projekt-ogrzewania.pl/podlogowka-cena-za-m%C2%B2-robocizny/#rk-labor-calculator",
      "applicationCategory":"FinanceApplication",
      "operatingSystem":"Dowolny system z przeglądarką internetową",
      "browserRequirements":"Obsługa JavaScript",
      "inLanguage":"pl-PL",
      "isAccessibleForFree":true,
      "author":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"},
      "description":"Narzędzie porównuje dwie oferty robocizny według powierzchni całkowitej i czynnej, stawki bazowej, rozdzielaczy, pętli, próby szczelności, uruchomienia, automatyki i pozostałych dopłat."
    },
    {
      "@type":"HowTo",
      "@id":"https://projekt-ogrzewania.pl/podlogowka-cena-za-m%C2%B2-robocizny/#howto",
      "name":"Jak porównać dwie oferty na wykonanie ogrzewania podłogowego?",
      "description":"Sześć kroków ujednolicenia zakresu i porównania kosztów robocizny podłogówki.",
      "inLanguage":"pl-PL",
      "step":[
        {"@type":"HowToStep","position":1,"name":"Wpisz ten sam zakres budynku","text":"Podaj obu wykonawcom identyczne kondygnacje, pomieszczenia, powierzchnię całkowitą oraz powierzchnię czynną."},
        {"@type":"HowToStep","position":2,"name":"Dołącz ten sam projekt","text":"Przekaż obu firmom tę samą liczbę pętli, rozdzielaczy, rozstawy i przebieg dobiegów."},
        {"@type":"HowToStep","position":3,"name":"Rozbij stawkę bazową","text":"Ustal, które prace obejmuje cena za metr kwadratowy, a które są dopłatą."},
        {"@type":"HowToStep","position":4,"name":"Oddziel próbę od uruchomienia","text":"Zapisz osobno próbę szczelności, napełnienie, odpowietrzenie, regulację oraz automatykę."},
        {"@type":"HowToStep","position":5,"name":"Ujednolić podatki i terminy","text":"Porównaj kwoty przedstawione w tym samym ujęciu podatkowym i dla tego samego terminu realizacji."},
        {"@type":"HowToStep","position":6,"name":"Policz koszty i braki","text":"Zsumuj znane pozycje i przed wyborem wykonawcy wyjaśnij wszystkie elementy oznaczone jako nieustalone."}
      ]
    },
    {
      "@type":"FAQPage",
      "@id":"https://projekt-ogrzewania.pl/podlogowka-cena-za-m%C2%B2-robocizny/#faq",
      "inLanguage":"pl-PL",
      "mainEntity":[
        {"@type":"Question","name":"Ile kosztuje robocizna podłogówki za m² w 2026 roku?","acceptedAnswer":{"@type":"Answer","text":"Orientacyjnie samo układanie rur na przygotowanym podłożu może znajdować się w przedziale około 40–60 zł/m², szerszy standard robocizny około 60–90 zł/m², a małe lub złożone zlecenia około 90–120 zł/m² lub więcej. Są to szerokie punkty odniesienia, nie cennik."}},
        {"@type":"Question","name":"Co obejmuje cena robocizny ogrzewania podłogowego?","acceptedAnswer":{"@type":"Answer","text":"Nie ma jednego stałego zakresu. Oferta może obejmować przygotowanie warstw, izolację, mocowanie rur, montaż rozdzielacza, podłączenia pętli, próbę szczelności, napełnienie, uruchomienie i automatykę, ale każdą pozycję trzeba potwierdzić na piśmie."}},
        {"@type":"Question","name":"Czy cenę liczy się od powierzchni całkowitej, czy czynnej?","acceptedAnswer":{"@type":"Answer","text":"Zależy od rodzaju pracy i umowy. Izolacja może być liczona od powierzchni całkowitej, a układanie rur od powierzchni czynnej. Oferta powinna podawać oba metraże oraz podstawę każdej stawki."}},
        {"@type":"Question","name":"Ile kosztuje robocizna podłogówki dla 100 m²?","acceptedAnswer":{"@type":"Answer","text":"Przy orientacyjnej stawce 40–60 zł/m² samo układanie rur daje 4000–6000 zł. Przy szerszym standardzie 60–90 zł/m² daje 6000–9000 zł. Do wyniku mogą dojść ryczałty oraz dopłaty."}},
        {"@type":"Question","name":"Czy styropian i folia są w cenie układania podłogówki?","acceptedAnswer":{"@type":"Answer","text":"Nie należy tego zakładać. Część ekip wycenia przygotowanie warstw osobno, a część zawiera wybrany zakres w cenie bazowej. Trzeba oddzielić robociznę od materiałów."}},
        {"@type":"Question","name":"Czy montaż rozdzielacza jest w cenie za m²?","acceptedAnswer":{"@type":"Answer","text":"Czasem tak, a czasem jest osobną pozycją za sztukę. Warto ustalić, czy chodzi tylko o osadzenie urządzenia, czy także szafkę, uzbrojenie, podłączenie magistrali, podłączenie pętli i ich opis."}},
        {"@type":"Question","name":"Czy próba szczelności obejmuje uruchomienie instalacji?","acceptedAnswer":{"@type":"Answer","text":"Nie automatycznie. Próba sprawdza szczelność. Napełnienie, odpowietrzenie, uruchomienie, równoważenie przepływów oraz konfiguracja automatyki to osobne czynności."}},
        {"@type":"Question","name":"Czy rozstaw rur 10 cm zwiększa cenę robocizny?","acceptedAnswer":{"@type":"Answer","text":"Może zwiększyć nakład pracy, ilość mocowań, długość rury i liczbę obwodów. Nie istnieje jednak jedna obowiązkowa dopłata. Wpływ powinien wynikać z konkretnego projektu i geometrii."}},
        {"@type":"Question","name":"Dlaczego tańsza oferta może mieć wyższy koszt końcowy?","acceptedAnswer":{"@type":"Answer","text":"Może naliczać rozdzielacz, podłączenia, próbę, transport i uruchomienie osobno. Dlatego porównuje się końcową kwotę znanych pozycji oraz liczbę elementów jeszcze nieustalonych."}},
        {"@type":"Question","name":"Czy kalkulator obejmuje materiały i podatek?","acceptedAnswer":{"@type":"Answer","text":"Nie. Narzędzie zestawia wpisane ceny robocizny i nie dolicza automatycznie materiałów ani podatku. Kwoty netto i brutto należy ujednolicić przed wpisaniem."}},
        {"@type":"Question","name":"Czy projekt podłogówki jest częścią robocizny?","acceptedAnswer":{"@type":"Answer","text":"Nie musi nią być. Projekt to odrębna dokumentacja określająca między innymi powierzchnie czynne, rozstawy, trasy, długości, przepływy i nastawy."}},
        {"@type":"Question","name":"Jakie dokumenty odebrać po montażu?","acceptedAnswer":{"@type":"Answer","text":"Zakres odbioru powinien wynikać z umowy. Przydatne są zdjęcia rur przed zakryciem, opis obwodów, protokół próby, informacje o użytych materiałach oraz zapis danych uruchomienia i nastaw, jeśli były częścią zlecenia."}}
      ]
    },
    {
      "@type":"Person",
      "@id":"https://projekt-ogrzewania.pl/#robert-kucharski",
      "name":"Robert Kucharski",
      "url":"https://projekt-ogrzewania.pl/author/admin3399/",
      "jobTitle":"Projektant instalacji sanitarnych, specjalista HVAC i ogrzewania podłogowego",
      "worksFor":{"@id":"https://projekt-ogrzewania.pl/#organization"},
      "affiliation":[{"@id":"https://projekt-ogrzewania.pl/#organization"},{"@id":"https://remont.biz.pl/#organization"},{"@id":"https://sobir.pl/#organization"}],
      "sameAs":["https://www.linkedin.com/in/robert-kucharski-38069b48/","https://www.facebook.com/projektogrzewaniapl","https://x.com/Projekt_HVAC"]
    },
    {"@type":"Organization","@id":"https://projekt-ogrzewania.pl/#organization","name":"Projekt-Ogrzewania.pl","url":"https://projekt-ogrzewania.pl/","founder":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"}},
    {"@type":"Organization","@id":"https://remont.biz.pl/#organization","name":"Remont.biz.pl","url":"https://remont.biz.pl/","founder":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"}},
    {"@type":"Organization","@id":"https://sobir.pl/#organization","name":"Sobir.pl","url":"https://sobir.pl/","founder":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"}},
    {"@type":"WebSite","@id":"https://projekt-ogrzewania.pl/#website","url":"https://projekt-ogrzewania.pl/","name":"Projekt-Ogrzewania.pl","inLanguage":"pl-PL","publisher":{"@id":"https://projekt-ogrzewania.pl/#organization"}}
  ]
}
</script>

<script>
(function(){
  "use strict";
  var root=document.getElementById("rk-labor-guide");
  if(!root){return;}

  var keys=["insulation","manifold","loops","test","flush","start","controls","transport","other"];
  var labels={insulation:"izolacja i przygotowanie",manifold:"montaż rozdzielacza",loops:"podłączenie pętli",test:"próba z protokołem",flush:"płukanie i napełnienie",start:"uruchomienie i regulacja",controls:"automatyka strefowa",transport:"transport i logistyka",other:"inne prace"};
  var formControls=root.querySelectorAll("#rk-labor-calculator input, #rk-labor-calculator select");
  var defaults=[];
  var i=0;
  for(i=0;i<formControls.length;i+=1){
    defaults.push({element:formControls[i],value:formControls[i].value});
  }

  function numberValue(id){
    var element=root.querySelector("#"+id);
    if(!element){return 0;}
    var value=parseFloat(String(element.value).replace(",","."));
    if(!isFinite(value)){return 0;}
    return value;
  }

  function integerValue(id){
    var value=Math.round(numberValue(id));
    if(value<0){return 0;}
    return value;
  }

  function textValue(id){
    var element=root.querySelector("#"+id);
    if(!element){return "";}
    return element.value;
  }

  function money(value){
    try{return value.toLocaleString("pl-PL",{minimumFractionDigits:0,maximumFractionDigits:0})+" zł";}
    catch(error){return Math.round(value)+" zł";}
  }

  function rate(value){
    try{return value.toLocaleString("pl-PL",{minimumFractionDigits:2,maximumFractionDigits:2})+" zł/m²";}
    catch(error){return value.toFixed(2).replace(".",",")+" zł/m²";}
  }

  function decimal(value,digits,suffix){
    try{return value.toLocaleString("pl-PL",{minimumFractionDigits:digits,maximumFractionDigits:digits})+suffix;}
    catch(error){return value.toFixed(digits).replace(".",",")+suffix;}
  }

  function setText(id,value){
    var element=root.querySelector("#"+id);
    if(element){element.textContent=value;}
  }

  function quantity(key,data){
    if(key==="insulation"){return data.totalArea;}
    if(key==="manifold"){return data.manifolds;}
    if(key==="loops"){return data.loops;}
    if(key==="controls"){return data.zones;}
    return 1;
  }

  function syncPriceFields(code){
    var index=0;
    for(index=0;index<keys.length;index+=1){
      var key=keys[index];
      var select=root.querySelector("#rk-labor-"+code+"-"+key+"-status");
      var priceInput=root.querySelector("#rk-labor-"+code+"-"+key+"-price");
      if(select){
        if(priceInput){priceInput.disabled=select.value!=="extra";}
      }
    }
  }

  function offerResult(code,data){
    var basis=textValue("rk-labor-"+code+"-basis");
    var billingArea=data.activeArea;
    if(basis==="total"){billingArea=data.totalArea;}
    var result={base:numberValue("rk-labor-"+code+"-base")*billingArea,floor:0,hydraulic:0,control:0,other:0,unknown:0,unknownNames:[]};
    var index=0;
    for(index=0;index<keys.length;index+=1){
      var key=keys[index];
      var status=textValue("rk-labor-"+code+"-"+key+"-status");
      if(status==="unknown"){
        result.unknown+=1;
        result.unknownNames.push(labels[key]);
      }
      if(status==="extra"){
        var itemCost=numberValue("rk-labor-"+code+"-"+key+"-price")*quantity(key,data);
        if(key==="insulation"){result.floor+=itemCost;}
        if(key==="manifold"){result.hydraulic+=itemCost;}
        if(key==="loops"){result.hydraulic+=itemCost;}
        if(key==="test"){result.hydraulic+=itemCost;}
        if(key==="flush"){result.hydraulic+=itemCost;}
        if(key==="start"){result.control+=itemCost;}
        if(key==="controls"){result.control+=itemCost;}
        if(key==="transport"){result.other+=itemCost;}
        if(key==="other"){result.other+=itemCost;}
      }
    }
    result.total=result.base+result.floor+result.hydraulic+result.control+result.other;
    return result;
  }

  function setSegment(code,name,value,scale){
    var element=root.querySelector("#rk-labor-"+code+"-bar-"+name);
    if(!element){return;}
    var width=0;
    if(scale>0){width=value/scale*100;}
    element.style.width=Math.max(0,Math.min(100,width))+"%";
  }

  function unknownText(result){
    if(result.unknown===0){return "brak";}
    return result.unknownNames.join(", ");
  }

  function calculate(){
    syncPriceFields("a");
    syncPriceFields("b");
    var data={
      totalArea:numberValue("rk-labor-total-area"),
      activeArea:numberValue("rk-labor-active-area"),
      manifolds:integerValue("rk-labor-manifolds"),
      loops:integerValue("rk-labor-loops"),
      zones:integerValue("rk-labor-zones")
    };
    var valid=true;
    if(data.totalArea<=0){valid=false;}
    if(data.activeArea<=0){valid=false;}
    if(data.activeArea>data.totalArea){valid=false;}
    if(data.manifolds<1){valid=false;}
    if(data.loops<1){valid=false;}
    var status=root.querySelector("#rk-labor-status");
    if(!valid){
      status.className="rk-labor-status is-warning";
      status.innerHTML="<strong>Sprawdź wspólne dane budynku.</strong> Powierzchnie muszą być dodatnie, powierzchnia czynna nie może przekraczać całkowitej, a instalacja musi mieć co najmniej jeden rozdzielacz i jedną pętlę.";
      return;
    }

    var a=offerResult("a",data);
    var b=offerResult("b",data);
    var difference=Math.abs(a.total-b.total);
    setText("rk-labor-a-total",money(a.total));
    setText("rk-labor-b-total",money(b.total));
    setText("rk-labor-a-meter",rate(a.total/data.totalArea));
    setText("rk-labor-b-meter",rate(b.total/data.totalArea));
    setText("rk-labor-difference",money(difference));
    setText("rk-labor-a-unknown",String(a.unknown));
    setText("rk-labor-b-unknown",String(b.unknown));
    setText("rk-labor-area-difference",decimal(data.totalArea-data.activeArea,0," m²"));
    setText("rk-labor-a-bar-value",money(a.total));
    setText("rk-labor-b-bar-value",money(b.total));

    var scale=Math.max(a.total,b.total);
    setSegment("a","base",a.base,scale);
    setSegment("a","floor",a.floor,scale);
    setSegment("a","hydraulic",a.hydraulic,scale);
    setSegment("a","control",a.control,scale);
    setSegment("a","other",a.other,scale);
    setSegment("b","base",b.base,scale);
    setSegment("b","floor",b.floor,scale);
    setSegment("b","hydraulic",b.hydraulic,scale);
    setSegment("b","control",b.control,scale);
    setSegment("b","other",b.other,scale);

    var lead="Obie oferty mają taki sam znany koszt.";
    if(a.total<b.total){lead="Oferta A ma niższy znany koszt o "+money(difference)+".";}
    if(b.total<a.total){lead="Oferta B ma niższy znany koszt o "+money(difference)+".";}
    if(a.unknown===0){
      if(b.unknown===0){
        status.className="rk-labor-status";
        status.innerHTML="<strong>"+lead+"</strong> Według zaznaczeń obie oferty mają ustalony zakres wszystkich dziewięciu pozycji. Nadal sprawdź materiały, podatki, warunki odbioru i zgodność z projektem.";
        return;
      }
    }
    status.className="rk-labor-status is-warning";
    status.innerHTML="<strong>"+lead+" Nie traktuj tego jeszcze jako pełnego porównania.</strong> Nieustalone w A: "+unknownText(a)+". Nieustalone w B: "+unknownText(b)+".";
  }

  function reset(){
    var index=0;
    for(index=0;index<defaults.length;index+=1){
      defaults[index].element.value=defaults[index].value;
    }
    calculate();
  }

  var calculateButton=root.querySelector("#rk-labor-calculate");
  var resetButton=root.querySelector("#rk-labor-reset");
  if(calculateButton){calculateButton.addEventListener("click",calculate);}
  if(resetButton){resetButton.addEventListener("click",reset);}
  root.addEventListener("input",function(event){
    var target=event.target;
    if(!target){return;}
    if(target.tagName==="INPUT"){calculate();}
  });
  root.addEventListener("change",function(event){
    var target=event.target;
    if(!target){return;}
    if(target.tagName==="SELECT"){calculate();}
  });

  function updateProgress(){
    var progress=root.querySelector("#rk-labor-progress");
    if(!progress){return;}
    var rect=root.getBoundingClientRect();
    var distance=root.offsetHeight-window.innerHeight;
    var passed=-rect.top;
    if(passed<0){passed=0;}
    if(passed>distance){passed=distance;}
    var percent=0;
    if(distance>0){percent=passed/distance*100;}
    progress.style.width=Math.max(0,Math.min(100,percent))+"%";
  }

  window.addEventListener("scroll",updateProgress,{passive:true});
  window.addEventListener("resize",updateProgress);
  calculate();
  updateProgress();
})();
</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>
