<?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 ogrzewania - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/category/rozstaw-rur-ogrzewania/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/category/rozstaw-rur-ogrzewania/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Fri, 16 Oct 2026 03:53:30 +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 ogrzewania - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/category/rozstaw-rur-ogrzewania/</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>Rozstaw rur ogrzewania podłogowego przy pompie ciepła.</title>
		<link>https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/</link>
					<comments>https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 22 Dec 2024 11:02:08 +0000</pubDate>
				<category><![CDATA[Ekologiczne ogrzewanie]]></category>
		<category><![CDATA[Energooszczędne budownictwo]]></category>
		<category><![CDATA[Niskotemperaturowe systemy grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Oszczędzanie energii]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Projekty grzewcze]]></category>
		<category><![CDATA[Rozstaw rur ogrzewania]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[izolacja budynku]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[niskotemperaturowe ogrzewanie]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędne ogrzewanie]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[rozstaw rur]]></category>
		<category><![CDATA[system grzewczy]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=1823</guid>

					<description><![CDATA[<p>Ogrzewanie domu za pomocą pompy ciepła to oszczędne i ekologiczne rozwiązanie. Kluczem do efektywności systemu jest odpowiednio zaprojektowany rozstaw rur ogrzewania podłogowego przy pompie ciepła oraz utrzymanie niskiej temperatury zasilania na poziomie 35 stopni Celsjusza. Dowiedz się, jak optymalnie zaplanować układ grzewczy, zadbać o izolację budynku oraz jakich zasad przestrzegać, aby pompa ciepła pracowała wydajnie i ekonomicznie przez długie lata.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">Rozstaw rur ogrzewania podłogowego przy pompie ciepła.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-sp-guide {
    --rk-sp-dark: #102536;
    --rk-sp-navy: #14384d;
    --rk-sp-graphite: #2b3f4d;
    --rk-sp-blue: #078fbe;
    --rk-sp-cyan: #28c9da;
    --rk-sp-cyan-soft: #eafcff;
    --rk-sp-orange: #ff7438;
    --rk-sp-red: #e33d35;
    --rk-sp-green: #16856b;
    --rk-sp-green-soft: #eaf8f4;
    --rk-sp-yellow: #d99a13;
    --rk-sp-yellow-soft: #fff8df;
    --rk-sp-ink: #1f2937;
    --rk-sp-text: #465866;
    --rk-sp-muted: #687986;
    --rk-sp-line: #dce8ee;
    --rk-sp-soft: #f5f9fb;
    --rk-sp-warm: #fff4ed;
    --rk-sp-white: #ffffff;
    width: 100%;
    max-width: 1080px;
    margin: 34px auto 70px;
    color: var(--rk-sp-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.78;
  }

  #rk-sp-guide,
  #rk-sp-guide * {
    box-sizing: border-box;
  }

  #rk-sp-guide img,
  #rk-sp-guide svg {
    max-width: 100%;
  }

  #rk-sp-guide button,
  #rk-sp-guide input,
  #rk-sp-guide select,
  #rk-sp-guide a,
  #rk-sp-guide summary {
    font: inherit;
    -webkit-tap-highlight-color: transparent;
  }

  #rk-sp-guide a {
    color: var(--rk-sp-blue);
    font-weight: 760;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }

  #rk-sp-guide a:hover {
    color: var(--rk-sp-red);
  }

  #rk-sp-guide h2,
  #rk-sp-guide h3,
  #rk-sp-guide h4 {
    margin-top: 0;
    color: var(--rk-sp-dark);
    font-weight: 900;
    letter-spacing: -0.035em;
    line-height: 1.18;
  }

  #rk-sp-guide h2 {
    margin-bottom: 18px;
    font-size: clamp(1.65rem, 3.7vw, 2.6rem);
  }

  #rk-sp-guide h3 {
    margin-bottom: 12px;
    font-size: clamp(1.18rem, 2.5vw, 1.56rem);
  }

  #rk-sp-guide h4 {
    margin-bottom: 8px;
    font-size: 1.02rem;
    letter-spacing: -0.015em;
  }

  /* Ochrona przed dekoracjami nagłówków dodawanymi przez motyw po publikacji. */
  #rk-sp-guide h2::before,
  #rk-sp-guide h2::after,
  #rk-sp-guide h3::before,
  #rk-sp-guide h3::after,
  #rk-sp-guide h4::before,
  #rk-sp-guide h4::after {
    content: none !important;
    display: none !important;
  }

  #rk-sp-guide p {
    margin: 0 0 1.25em;
    color: var(--rk-sp-text);
  }

  #rk-sp-guide strong {
    color: var(--rk-sp-dark);
  }

  #rk-sp-guide section[id] {
    scroll-margin-top: 28px;
  }

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

  #rk-sp-guide .rk-sp-progress-track {
    position: sticky;
    z-index: 30;
    top: 0;
    width: 100%;
    height: 5px;
    overflow: hidden;
    background: rgba(255, 255, 255, 0.82);
  }

  #rk-sp-guide .rk-sp-progress {
    width: 0;
    height: 100%;
    background: linear-gradient(90deg, var(--rk-sp-cyan), var(--rk-sp-blue), var(--rk-sp-orange), var(--rk-sp-red));
  }

  #rk-sp-guide .rk-sp-hero {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    padding: clamp(38px, 6.5vw, 78px);
    color: var(--rk-sp-white);
    background:
      radial-gradient(circle at 88% 12%, rgba(255, 116, 56, 0.35), transparent 27%),
      radial-gradient(circle at 82% 78%, rgba(40, 201, 218, 0.24), transparent 31%),
      linear-gradient(135deg, #0d2230 0%, #143b50 58%, #095e78 100%);
  }

  #rk-sp-guide .rk-sp-hero::before,
  #rk-sp-guide .rk-sp-hero::after {
    content: "";
    position: absolute;
    z-index: -1;
    border-radius: 50%;
    pointer-events: none;
  }

  #rk-sp-guide .rk-sp-hero::before {
    right: -115px;
    bottom: -170px;
    width: 390px;
    height: 390px;
    border: 58px solid rgba(255, 255, 255, 0.055);
  }

  #rk-sp-guide .rk-sp-hero::after {
    right: 115px;
    bottom: -130px;
    width: 230px;
    height: 230px;
    border: 34px solid rgba(255, 116, 56, 0.11);
  }

  #rk-sp-guide .rk-sp-badge {
    display: inline-flex;
    gap: 10px;
    align-items: center;
    margin: 0 0 24px;
    padding: 8px 15px;
    border: 1px solid rgba(255, 255, 255, 0.22);
    border-radius: 999px;
    color: var(--rk-sp-white);
    background: rgba(255, 255, 255, 0.08);
    font-size: 0.74rem;
    font-weight: 900;
    letter-spacing: 0.1em;
    line-height: 1.35;
    text-transform: uppercase;
  }

  #rk-sp-guide .rk-sp-badge-dot {
    width: 10px;
    height: 10px;
    flex: 0 0 10px;
    border-radius: 50%;
    background: var(--rk-sp-orange);
    box-shadow: 0 0 0 6px rgba(255, 116, 56, 0.18);
  }

  #rk-sp-guide .rk-sp-hero h2 {
    max-width: 940px;
    margin-bottom: 24px;
    color: var(--rk-sp-white);
    font-size: clamp(2rem, 5.1vw, 3.8rem);
    letter-spacing: -0.055em;
  }

  #rk-sp-guide .rk-sp-hero h2 span {
    color: #84edf5;
  }

  #rk-sp-guide .rk-sp-hook {
    max-width: 930px;
    margin: 0 0 26px;
    padding: clamp(20px, 3.6vw, 30px);
    border: 1px solid rgba(255, 255, 255, 0.17);
    border-left: 5px solid var(--rk-sp-orange);
    border-radius: 0 18px 18px 0;
    background: rgba(255, 255, 255, 0.09);
  }

  #rk-sp-guide .rk-sp-hook p {
    margin: 0;
    color: #f3f8fa;
    font-size: clamp(1.02rem, 2.1vw, 1.23rem);
    font-weight: 620;
    line-height: 1.7;
  }

  #rk-sp-guide .rk-sp-hook strong {
    color: var(--rk-sp-white);
  }

  #rk-sp-guide .rk-sp-hero-lead {
    max-width: 920px;
    color: #dcecf1;
    font-size: clamp(1rem, 2vw, 1.15rem);
  }

  #rk-sp-guide .rk-sp-hero-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 9px 18px;
    margin-top: 28px;
  }

  #rk-sp-guide .rk-sp-hero-meta span {
    display: inline-flex;
    gap: 8px;
    align-items: center;
    color: #d8e8ee;
    font-size: 0.76rem;
    font-weight: 780;
  }

  #rk-sp-guide .rk-sp-hero-meta i {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--rk-sp-orange);
  }

  #rk-sp-guide .rk-sp-author-strip {
    display: flex;
    gap: 14px;
    align-items: center;
    margin-top: 30px;
  }

  #rk-sp-guide .rk-sp-author-strip img {
    width: 58px;
    height: 58px;
    border: 3px solid rgba(255, 255, 255, 0.85);
    border-radius: 50%;
    object-fit: cover;
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.2);
  }

  #rk-sp-guide .rk-sp-author-strip b,
  #rk-sp-guide .rk-sp-author-strip small {
    display: block;
  }

  #rk-sp-guide .rk-sp-author-strip b {
    color: var(--rk-sp-white);
    font-size: 0.9rem;
  }

  #rk-sp-guide .rk-sp-author-strip small {
    color: #c8dce4;
    font-size: 0.7rem;
    line-height: 1.45;
  }

  #rk-sp-guide .rk-sp-nav {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    padding: 24px clamp(20px, 4vw, 52px);
    border-bottom: 1px solid var(--rk-sp-line);
    background: var(--rk-sp-soft);
  }

  #rk-sp-guide .rk-sp-nav a {
    display: flex;
    gap: 10px;
    align-items: center;
    min-height: 54px;
    padding: 11px 14px;
    border: 1px solid var(--rk-sp-line);
    border-radius: 14px;
    color: var(--rk-sp-dark);
    background: var(--rk-sp-white);
    font-size: 0.74rem;
    font-weight: 850;
    line-height: 1.35;
    text-decoration: none;
  }

  #rk-sp-guide .rk-sp-nav a:hover,
  #rk-sp-guide .rk-sp-nav a:focus-visible {
    border-color: var(--rk-sp-cyan);
    color: var(--rk-sp-blue);
  }

  #rk-sp-guide .rk-sp-nav-num {
    display: inline-flex;
    width: 28px;
    height: 28px;
    flex: 0 0 28px;
    align-items: center;
    justify-content: center;
    border-radius: 9px;
    color: var(--rk-sp-white);
    background: var(--rk-sp-dark);
    font-size: 0.65rem;
    font-weight: 900;
  }

  #rk-sp-guide .rk-sp-content {
    padding: clamp(28px, 5vw, 64px);
  }

  #rk-sp-guide .rk-sp-section {
    margin-top: clamp(54px, 8vw, 92px);
  }

  #rk-sp-guide .rk-sp-section:first-child {
    margin-top: 0;
  }

  #rk-sp-guide .rk-sp-section-head {
    max-width: 880px;
    margin-bottom: 28px;
  }

  #rk-sp-guide .rk-sp-eyebrow {
    display: block;
    margin-bottom: 10px;
    color: var(--rk-sp-red);
    font-size: 0.7rem;
    font-weight: 900;
    letter-spacing: 0.12em;
    text-transform: uppercase;
  }

  #rk-sp-guide .rk-sp-lead {
    color: var(--rk-sp-graphite);
    font-size: clamp(1.02rem, 2vw, 1.18rem);
  }

  #rk-sp-guide .rk-sp-dropcap::first-letter {
    float: left;
    margin: 0.08em 0.12em 0 0;
    color: var(--rk-sp-orange);
    font-size: 3.5em;
    font-weight: 900;
    line-height: 0.82;
  }

  #rk-sp-guide .rk-sp-verdict {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 28px;
    align-items: center;
    margin: 30px 0;
    padding: clamp(25px, 4.5vw, 42px);
    border: 1px solid #ffcbb7;
    border-radius: 24px;
    background: linear-gradient(135deg, #fff9f5, var(--rk-sp-warm));
  }

  #rk-sp-guide .rk-sp-verdict p:last-child {
    margin-bottom: 0;
  }

  #rk-sp-guide .rk-sp-verdict-number {
    min-width: 190px;
    padding: 20px;
    border-radius: 21px;
    color: var(--rk-sp-white);
    background: linear-gradient(145deg, var(--rk-sp-orange), var(--rk-sp-red));
    text-align: center;
    box-shadow: 0 17px 38px rgba(227, 61, 53, 0.22);
  }

  #rk-sp-guide .rk-sp-verdict-number b,
  #rk-sp-guide .rk-sp-verdict-number small {
    display: block;
    color: var(--rk-sp-white);
  }

  #rk-sp-guide .rk-sp-verdict-number b {
    font-size: clamp(2.1rem, 5vw, 3.4rem);
    line-height: 1;
  }

  #rk-sp-guide .rk-sp-verdict-number small {
    margin-top: 8px;
    font-size: 0.67rem;
    font-weight: 850;
    line-height: 1.35;
  }

  #rk-sp-guide .rk-sp-formulas {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    margin: 28px 0;
  }

  #rk-sp-guide .rk-sp-formula {
    padding: 24px;
    border: 1px solid var(--rk-sp-line);
    border-radius: 19px;
    background: var(--rk-sp-soft);
  }

  #rk-sp-guide .rk-sp-formula-code {
    display: block;
    margin: 12px 0;
    color: var(--rk-sp-dark);
    font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
    font-size: clamp(1rem, 2.6vw, 1.35rem);
    font-weight: 800;
    line-height: 1.45;
  }

  #rk-sp-guide .rk-sp-formula small {
    display: block;
    color: var(--rk-sp-muted);
    font-size: 0.72rem;
    line-height: 1.55;
  }

  #rk-sp-guide .rk-sp-grid-4,
  #rk-sp-guide .rk-sp-grid-3,
  #rk-sp-guide .rk-sp-grid-2 {
    display: grid;
    gap: 16px;
  }

  #rk-sp-guide .rk-sp-grid-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  #rk-sp-guide .rk-sp-grid-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  #rk-sp-guide .rk-sp-grid-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #rk-sp-guide .rk-sp-card {
    min-width: 0;
    padding: 23px;
    border: 1px solid var(--rk-sp-line);
    border-radius: 19px;
    background: var(--rk-sp-white);
    box-shadow: 0 10px 26px rgba(16, 37, 54, 0.06);
  }

  #rk-sp-guide .rk-sp-card p:last-child {
    margin-bottom: 0;
  }

  #rk-sp-guide .rk-sp-pitch {
    display: inline-flex;
    min-width: 68px;
    min-height: 48px;
    align-items: center;
    justify-content: center;
    margin-bottom: 18px;
    padding: 8px 12px;
    border-radius: 13px;
    color: var(--rk-sp-white);
    background: var(--rk-sp-dark);
    font-size: 1rem;
    font-weight: 900;
  }

  #rk-sp-guide .rk-sp-card.rk-sp-special {
    border-color: #ffd2bf;
    background: var(--rk-sp-warm);
  }

  #rk-sp-guide .rk-sp-card.rk-sp-recommended {
    border-color: #9ee8ee;
    background: var(--rk-sp-cyan-soft);
  }

  #rk-sp-guide .rk-sp-card.rk-sp-caution {
    border-color: #ead58e;
    background: var(--rk-sp-yellow-soft);
  }

  #rk-sp-guide .rk-sp-mini-list {
    margin: 13px 0 0;
    padding: 0;
    list-style: none;
  }

  #rk-sp-guide .rk-sp-mini-list li {
    display: grid;
    grid-template-columns: 8px minmax(0, 1fr);
    gap: 9px;
    margin: 8px 0;
    color: var(--rk-sp-text);
    font-size: 0.78rem;
    line-height: 1.5;
  }

  #rk-sp-guide .rk-sp-mini-list li span:first-child {
    width: 7px;
    height: 7px;
    margin-top: 0.55em;
    border-radius: 50%;
    background: var(--rk-sp-orange);
  }

  #rk-sp-guide .rk-sp-table-wrap {
    margin: 28px 0;
  }

  #rk-sp-guide .rk-sp-table {
    width: 100%;
    border-collapse: separate;
    border: 1px solid var(--rk-sp-line);
    border-spacing: 0;
    border-radius: 18px;
    overflow: hidden;
    background: var(--rk-sp-white);
    font-size: 0.77rem;
  }

  #rk-sp-guide .rk-sp-table th,
  #rk-sp-guide .rk-sp-table td {
    padding: 14px 13px;
    border-bottom: 1px solid var(--rk-sp-line);
    vertical-align: top;
    text-align: left;
    line-height: 1.5;
  }

  #rk-sp-guide .rk-sp-table th {
    color: var(--rk-sp-white);
    background: var(--rk-sp-dark);
    font-size: 0.68rem;
    font-weight: 900;
    letter-spacing: 0.035em;
    text-transform: uppercase;
  }

  #rk-sp-guide .rk-sp-table tr:last-child td {
    border-bottom: 0;
  }

  #rk-sp-guide .rk-sp-table td strong {
    white-space: nowrap;
  }

  #rk-sp-guide .rk-sp-note {
    margin: 24px 0;
    padding: 20px 22px;
    border-left: 5px solid var(--rk-sp-blue);
    border-radius: 0 15px 15px 0;
    background: var(--rk-sp-cyan-soft);
  }

  #rk-sp-guide .rk-sp-note.rk-sp-note-warn {
    border-left-color: var(--rk-sp-orange);
    background: var(--rk-sp-warm);
  }

  #rk-sp-guide .rk-sp-note p:last-child {
    margin-bottom: 0;
  }

  #rk-sp-guide .rk-sp-lab {
    overflow: hidden;
    margin: 30px 0;
    border: 1px solid #b8e9ee;
    border-radius: 25px;
    background: #fbfeff;
    box-shadow: 0 20px 55px rgba(7, 143, 190, 0.1);
  }

  #rk-sp-guide .rk-sp-lab-head {
    padding: clamp(24px, 4vw, 36px);
    color: var(--rk-sp-white);
    background: linear-gradient(135deg, var(--rk-sp-dark), #12546c);
  }

  #rk-sp-guide .rk-sp-lab-head h3,
  #rk-sp-guide .rk-sp-lab-head p,
  #rk-sp-guide .rk-sp-lab-head strong {
    color: var(--rk-sp-white);
  }

  #rk-sp-guide .rk-sp-lab-head p:last-child {
    margin-bottom: 0;
    color: #d5e9ef;
  }

  #rk-sp-guide .rk-sp-lab-body {
    padding: clamp(22px, 4vw, 36px);
  }

  #rk-sp-guide .rk-sp-controls {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
  }

  #rk-sp-guide .rk-sp-control {
    min-width: 0;
    padding: 17px;
    border: 1px solid var(--rk-sp-line);
    border-radius: 16px;
    background: var(--rk-sp-white);
  }

  #rk-sp-guide .rk-sp-control label {
    display: flex;
    gap: 8px;
    align-items: baseline;
    justify-content: space-between;
    margin-bottom: 10px;
    color: var(--rk-sp-dark);
    font-size: 0.73rem;
    font-weight: 850;
    line-height: 1.35;
  }

  #rk-sp-guide .rk-sp-control output {
    color: var(--rk-sp-red);
    font-size: 0.74rem;
    font-weight: 900;
    white-space: nowrap;
  }

  #rk-sp-guide .rk-sp-control input[type="range"] {
    width: 100%;
    accent-color: var(--rk-sp-orange);
  }

  #rk-sp-guide .rk-sp-control select {
    width: 100%;
    min-height: 46px;
    padding: 9px 10px;
    border: 1px solid #c8d8df;
    border-radius: 10px;
    color: var(--rk-sp-dark);
    background: var(--rk-sp-white);
    font-size: 0.76rem;
    font-weight: 700;
  }

  #rk-sp-guide .rk-sp-control small {
    display: block;
    margin-top: 8px;
    color: var(--rk-sp-muted);
    font-size: 0.64rem;
    line-height: 1.45;
  }

  #rk-sp-guide .rk-sp-live-summary {
    margin: 22px 0;
    padding: 18px 20px;
    border-radius: 15px;
    color: var(--rk-sp-dark);
    background: var(--rk-sp-cyan-soft);
    font-size: 0.83rem;
    font-weight: 760;
  }

  #rk-sp-guide .rk-sp-results {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
  }

  #rk-sp-guide .rk-sp-result {
    min-width: 0;
    padding: 22px;
    border: 1px solid var(--rk-sp-line);
    border-radius: 18px;
    background: var(--rk-sp-white);
  }

  #rk-sp-guide .rk-sp-result-head {
    display: flex;
    gap: 12px;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 16px;
  }

  #rk-sp-guide .rk-sp-result-title {
    color: var(--rk-sp-dark);
    font-size: 1.08rem;
    font-weight: 900;
  }

  #rk-sp-guide .rk-sp-status {
    display: inline-flex;
    align-items: center;
    min-height: 31px;
    padding: 6px 10px;
    border-radius: 999px;
    color: var(--rk-sp-dark);
    background: var(--rk-sp-soft);
    font-size: 0.62rem;
    font-weight: 900;
    line-height: 1.25;
    text-align: center;
  }

  #rk-sp-guide .rk-sp-status.is-good {
    color: #0d5d4a;
    background: var(--rk-sp-green-soft);
  }

  #rk-sp-guide .rk-sp-status.is-warn {
    color: #765200;
    background: var(--rk-sp-yellow-soft);
  }

  #rk-sp-guide .rk-sp-status.is-bad {
    color: #9f2b27;
    background: #ffebe8;
  }

  #rk-sp-guide .rk-sp-result-values {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 11px;
  }

  #rk-sp-guide .rk-sp-result-value {
    padding: 12px;
    border-radius: 12px;
    background: var(--rk-sp-soft);
  }

  #rk-sp-guide .rk-sp-result-value span,
  #rk-sp-guide .rk-sp-result-value b {
    display: block;
  }

  #rk-sp-guide .rk-sp-result-value span {
    color: var(--rk-sp-muted);
    font-size: 0.61rem;
    font-weight: 760;
    line-height: 1.35;
  }

  #rk-sp-guide .rk-sp-result-value b {
    margin-top: 3px;
    color: var(--rk-sp-dark);
    font-size: 0.9rem;
    line-height: 1.3;
  }

  #rk-sp-guide .rk-sp-result-foot {
    margin-top: 13px;
    color: var(--rk-sp-muted);
    font-size: 0.65rem;
    line-height: 1.5;
  }

  #rk-sp-guide .rk-sp-chart-panel {
    margin: 25px 0;
    padding: clamp(19px, 3vw, 28px);
    border: 1px solid var(--rk-sp-line);
    border-radius: 19px;
    background: var(--rk-sp-white);
  }

  #rk-sp-guide .rk-sp-chart-panel h4 {
    margin-bottom: 5px;
  }

  #rk-sp-guide .rk-sp-chart-caption {
    margin-bottom: 16px;
    color: var(--rk-sp-muted);
    font-size: 0.71rem;
    line-height: 1.55;
  }

  #rk-sp-guide .rk-sp-chart-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 9px 15px;
    margin-bottom: 12px;
    color: var(--rk-sp-text);
    font-size: 0.66rem;
    font-weight: 800;
  }

  #rk-sp-guide .rk-sp-chart-legend span {
    display: inline-flex;
    gap: 7px;
    align-items: center;
  }

  #rk-sp-guide .rk-sp-chart-legend i {
    width: 22px;
    height: 4px;
    border-radius: 99px;
  }

  #rk-sp-guide .rk-sp-chart-svg {
    display: block;
    width: 100%;
    height: auto;
    overflow: visible;
  }

  #rk-sp-guide .rk-sp-eff-list {
    display: grid;
    gap: 13px;
  }

  #rk-sp-guide .rk-sp-eff-row {
    display: grid;
    grid-template-columns: 76px minmax(0, 1fr) minmax(130px, auto);
    gap: 12px;
    align-items: center;
  }

  #rk-sp-guide .rk-sp-eff-label,
  #rk-sp-guide .rk-sp-eff-value {
    color: var(--rk-sp-dark);
    font-size: 0.7rem;
    font-weight: 850;
  }

  #rk-sp-guide .rk-sp-eff-value {
    text-align: right;
  }

  #rk-sp-guide .rk-sp-eff-track {
    height: 15px;
    overflow: hidden;
    border-radius: 999px;
    background: var(--rk-sp-soft);
  }

  #rk-sp-guide .rk-sp-eff-bar {
    width: 0;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--rk-sp-cyan), var(--rk-sp-blue));
    transition: width 240ms ease;
  }

  #rk-sp-guide .rk-sp-equation {
    margin: 26px 0;
    padding: clamp(22px, 4vw, 34px);
    border-radius: 22px;
    color: var(--rk-sp-white);
    background: linear-gradient(135deg, var(--rk-sp-dark), #173f55);
  }

  #rk-sp-guide .rk-sp-equation h3,
  #rk-sp-guide .rk-sp-equation p,
  #rk-sp-guide .rk-sp-equation strong {
    color: var(--rk-sp-white);
  }

  #rk-sp-guide .rk-sp-equation-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
    margin-top: 20px;
  }

  #rk-sp-guide .rk-sp-equation-card {
    min-width: 0;
    padding: 17px;
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 15px;
    background: rgba(255, 255, 255, 0.07);
  }

  #rk-sp-guide .rk-sp-equation-card b,
  #rk-sp-guide .rk-sp-equation-card small {
    display: block;
    color: var(--rk-sp-white);
  }

  #rk-sp-guide .rk-sp-equation-card b {
    font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
    font-size: 0.9rem;
    line-height: 1.45;
  }

  #rk-sp-guide .rk-sp-equation-card small {
    margin-top: 7px;
    color: #c8dce4;
    font-size: 0.63rem;
    line-height: 1.45;
  }

  #rk-sp-guide .rk-sp-diagram-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    margin: 28px 0;
  }

  #rk-sp-guide .rk-sp-diagram {
    min-width: 0;
    padding: 18px;
    border: 1px solid var(--rk-sp-line);
    border-radius: 19px;
    background: var(--rk-sp-soft);
  }

  #rk-sp-guide .rk-sp-diagram svg {
    display: block;
    width: 100%;
    height: auto;
  }

  #rk-sp-guide .rk-sp-diagram figcaption {
    margin-top: 13px;
    color: var(--rk-sp-muted);
    font-size: 0.68rem;
    line-height: 1.55;
  }

  #rk-sp-guide .rk-sp-checklist {
    display: grid;
    gap: 12px;
    margin: 24px 0;
    padding: 0;
    counter-reset: rk-sp-check;
    list-style: none;
  }

  #rk-sp-guide .rk-sp-checklist li {
    display: grid;
    grid-template-columns: 46px minmax(0, 1fr);
    gap: 14px;
    align-items: start;
    padding: 18px;
    border: 1px solid var(--rk-sp-line);
    border-radius: 16px;
    background: var(--rk-sp-white);
    counter-increment: rk-sp-check;
  }

  #rk-sp-guide .rk-sp-checklist li::before {
    content: counter(rk-sp-check, decimal-leading-zero);
    display: inline-flex;
    width: 42px;
    height: 42px;
    align-items: center;
    justify-content: center;
    border-radius: 12px;
    color: var(--rk-sp-white);
    background: var(--rk-sp-dark);
    font-size: 0.67rem;
    font-weight: 900;
  }

  #rk-sp-guide .rk-sp-checklist strong,
  #rk-sp-guide .rk-sp-checklist span {
    display: block;
  }

  #rk-sp-guide .rk-sp-checklist span {
    margin-top: 4px;
    color: var(--rk-sp-text);
    font-size: 0.78rem;
    line-height: 1.55;
  }

  #rk-sp-guide .rk-sp-faq {
    display: grid;
    gap: 12px;
  }

  #rk-sp-guide .rk-sp-faq details {
    border: 1px solid var(--rk-sp-line);
    border-radius: 16px;
    background: var(--rk-sp-white);
  }

  #rk-sp-guide .rk-sp-faq summary {
    position: relative;
    padding: 19px 54px 19px 20px;
    color: var(--rk-sp-dark);
    cursor: pointer;
    font-size: 0.86rem;
    font-weight: 850;
    line-height: 1.45;
    list-style: none;
  }

  #rk-sp-guide .rk-sp-faq summary::-webkit-details-marker {
    display: none;
  }

  #rk-sp-guide .rk-sp-faq summary::after {
    content: "+";
    position: absolute;
    top: 50%;
    right: 18px;
    display: inline-flex;
    width: 28px;
    height: 28px;
    align-items: center;
    justify-content: center;
    border-radius: 9px;
    color: var(--rk-sp-white);
    background: var(--rk-sp-dark);
    font-size: 1rem;
    transform: translateY(-50%);
  }

  #rk-sp-guide .rk-sp-faq details[open] summary::after {
    content: "−";
    background: var(--rk-sp-orange);
  }

  #rk-sp-guide .rk-sp-faq-answer {
    padding: 0 20px 20px;
  }

  #rk-sp-guide .rk-sp-faq-answer p:last-child {
    margin-bottom: 0;
  }

  #rk-sp-guide .rk-sp-cta {
    display: grid;
    grid-template-columns: 1fr;
    gap: 24px;
    margin: 46px 0;
    padding: clamp(26px, 5vw, 42px);
    border-radius: 23px;
    color: var(--rk-sp-white);
    background:
      radial-gradient(circle at 92% 18%, rgba(255, 106, 42, 0.3), transparent 30%),
      linear-gradient(135deg, var(--rk-sp-dark), #173f55);
  }

  #rk-sp-guide .rk-sp-cta h3,
  #rk-sp-guide .rk-sp-cta p,
  #rk-sp-guide .rk-sp-cta strong {
    color: var(--rk-sp-white);
  }

  #rk-sp-guide .rk-sp-cta p {
    margin-bottom: 0;
    color: #d7e7ec;
  }

  #rk-sp-guide .rk-sp-cta-actions {
    display: grid;
    gap: 9px;
    min-width: 0;
  }

  #rk-sp-guide .rk-sp-button {
    display: inline-flex;
    min-height: 54px;
    align-items: center;
    justify-content: center;
    padding: 13px 18px;
    border-radius: 13px;
    color: var(--rk-sp-white);
    background: linear-gradient(145deg, var(--rk-sp-orange), var(--rk-sp-red));
    box-shadow: 0 12px 26px rgba(227, 61, 53, 0.22);
    font-size: 0.8rem;
    font-weight: 900;
    text-align: center;
    text-decoration: none;
  }

  #rk-sp-guide .rk-sp-button:hover,
  #rk-sp-guide .rk-sp-button:focus-visible {
    color: var(--rk-sp-white);
    transform: translateY(-1px);
  }

  #rk-sp-guide .rk-sp-cta small {
    color: #afc8d1;
    font-size: 0.66rem;
    line-height: 1.45;
    text-align: center;
  }

  #rk-sp-guide .rk-sp-sources {
    margin-top: 44px;
    padding: 23px;
    border: 1px solid var(--rk-sp-line);
    border-radius: 17px;
    background: var(--rk-sp-soft);
    color: var(--rk-sp-muted);
    font-size: 0.69rem;
    line-height: 1.65;
  }

  #rk-sp-guide .rk-sp-sources strong {
    display: block;
    margin-bottom: 8px;
  }

  #rk-sp-guide .rk-sp-author-box {
    overflow: hidden;
    margin-top: 52px;
    border: 1px solid #cfe1e9;
    border-radius: 25px;
    background: var(--rk-sp-white);
    box-shadow: 0 20px 52px rgba(16, 37, 54, 0.09);
  }

  #rk-sp-guide .rk-sp-author-box,
  #rk-sp-guide .rk-sp-author-box * {
    box-sizing: border-box;
  }

  #rk-sp-guide .rk-sp-author-box h2::before,
  #rk-sp-guide .rk-sp-author-box h2::after,
  #rk-sp-guide .rk-sp-author-box h3::before,
  #rk-sp-guide .rk-sp-author-box h3::after,
  #rk-sp-guide .rk-sp-author-box p::before,
  #rk-sp-guide .rk-sp-author-box p::after,
  #rk-sp-guide .rk-sp-author-box a::before,
  #rk-sp-guide .rk-sp-author-box a::after,
  #rk-sp-guide .rk-sp-author-box button::before,
  #rk-sp-guide .rk-sp-author-box button::after {
    content: none !important;
    display: none !important;
  }

  #rk-sp-guide .rk-sp-author-head {
    display: flex;
    gap: 18px;
    align-items: center;
    justify-content: space-between;
    padding: clamp(24px, 4vw, 38px);
    border-bottom: 5px solid var(--rk-sp-cyan);
    color: var(--rk-sp-white);
    background: linear-gradient(135deg, var(--rk-sp-dark), #17465c);
  }

  #rk-sp-guide .rk-sp-author-head h2 {
    margin-bottom: 6px;
    color: var(--rk-sp-white);
    font-size: clamp(1.55rem, 3.5vw, 2.45rem);
  }

  #rk-sp-guide .rk-sp-author-head p {
    margin: 0;
    color: #d7e9ef;
    font-size: 0.8rem;
  }

  #rk-sp-guide .rk-sp-author-badge {
    flex: 0 0 auto;
    padding: 10px 15px;
    border: 1px solid rgba(40, 201, 218, 0.45);
    border-radius: 13px;
    color: #7cebf2;
    background: rgba(40, 201, 218, 0.08);
    font-size: 0.7rem;
    font-weight: 900;
    letter-spacing: 0.08em;
  }

  #rk-sp-guide .rk-sp-author-layout {
    display: grid;
    grid-template-columns: 290px minmax(0, 1fr);
  }

  #rk-sp-guide .rk-sp-author-profile {
    padding: 32px;
    border-right: 1px solid var(--rk-sp-line);
    background: var(--rk-sp-soft);
    text-align: center;
  }

  #rk-sp-guide .rk-sp-author-photo {
    display: block;
    width: 148px;
    height: 148px;
    margin: 0 auto 19px;
    border: 5px solid var(--rk-sp-white);
    border-radius: 50%;
    object-fit: cover;
    box-shadow: 0 16px 32px rgba(16, 37, 54, 0.15);
  }

  #rk-sp-guide .rk-sp-author-name {
    margin-bottom: 7px;
    font-size: 1.28rem;
  }

  #rk-sp-guide .rk-sp-author-role {
    display: block;
    color: var(--rk-sp-blue);
    font-size: 0.71rem;
    font-weight: 900;
    letter-spacing: 0.055em;
    line-height: 1.55;
    text-transform: uppercase;
  }

  #rk-sp-guide .rk-sp-author-links {
    display: grid;
    gap: 8px;
    margin-top: 22px;
  }

  #rk-sp-guide .rk-sp-author-link {
    display: flex;
    min-height: 43px;
    align-items: center;
    justify-content: center;
    padding: 9px 12px;
    border: 1px solid #cadde5;
    border-radius: 11px;
    color: var(--rk-sp-dark);
    background: var(--rk-sp-white);
    font-size: 0.72rem;
    font-weight: 850;
    text-decoration: none;
  }

  #rk-sp-guide .rk-sp-author-link:hover,
  #rk-sp-guide .rk-sp-author-link:focus-visible {
    border-color: var(--rk-sp-cyan);
    color: var(--rk-sp-blue);
  }

  #rk-sp-guide .rk-sp-author-main {
    min-width: 0;
  }

  #rk-sp-guide .rk-sp-author-quote {
    position: relative;
    margin: 0;
    padding: clamp(30px, 5vw, 52px);
    border-bottom: 1px solid var(--rk-sp-line);
  }

  #rk-sp-guide .rk-sp-author-quote-mark {
    display: block;
    height: 38px;
    color: var(--rk-sp-cyan);
    font-family: Georgia, serif;
    font-size: 3.8rem;
    font-weight: 900;
    line-height: 0.9;
  }

  #rk-sp-guide .rk-sp-author-quote p {
    margin: 8px 0 0;
    color: var(--rk-sp-dark);
    font-size: clamp(1rem, 2vw, 1.22rem);
    font-style: italic;
    font-weight: 760;
    line-height: 1.72;
  }

  #rk-sp-guide .rk-sp-author-quote footer {
    margin-top: 14px;
    color: var(--rk-sp-muted);
    font-size: 0.69rem;
    font-weight: 820;
  }

  #rk-sp-guide .rk-sp-author-tabs {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    border-bottom: 1px solid var(--rk-sp-line);
    background: var(--rk-sp-soft);
  }

  #rk-sp-guide .rk-sp-author-tab {
    min-height: 53px;
    padding: 11px;
    border: 0;
    border-right: 1px solid var(--rk-sp-line);
    color: var(--rk-sp-muted);
    background: transparent;
    cursor: pointer;
    font-size: 0.68rem;
    font-weight: 900;
    letter-spacing: 0.035em;
    text-transform: uppercase;
  }

  #rk-sp-guide .rk-sp-author-tab:last-child {
    border-right: 0;
  }

  #rk-sp-guide .rk-sp-author-tab:hover,
  #rk-sp-guide .rk-sp-author-tab:focus-visible {
    color: var(--rk-sp-blue);
    background: var(--rk-sp-cyan-soft);
  }

  #rk-sp-guide .rk-sp-author-tab[aria-selected="true"] {
    color: var(--rk-sp-blue);
    background: var(--rk-sp-white);
    box-shadow: inset 0 -4px 0 var(--rk-sp-blue);
  }

  #rk-sp-guide .rk-sp-author-panels {
    padding: clamp(25px, 4vw, 40px);
  }

  #rk-sp-guide .rk-sp-author-panel[hidden] {
    display: none;
  }

  #rk-sp-guide .rk-sp-author-panel p:last-child {
    margin-bottom: 0;
  }

  #rk-sp-guide .rk-sp-portal-list {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    margin-top: 18px;
  }

  #rk-sp-guide .rk-sp-portal-list a {
    display: flex;
    min-height: 48px;
    align-items: center;
    justify-content: center;
    padding: 10px;
    border: 1px solid var(--rk-sp-line);
    border-radius: 12px;
    color: var(--rk-sp-dark);
    background: var(--rk-sp-soft);
    font-size: 0.72rem;
    font-weight: 900;
    text-align: center;
    text-decoration: none;
  }

  #rk-sp-guide .rk-sp-disclaimer {
    margin-top: 28px;
    padding-top: 22px;
    border-top: 1px solid var(--rk-sp-line);
    color: var(--rk-sp-muted);
    font-size: 0.69rem;
    line-height: 1.65;
  }

  #rk-sp-guide .rk-sp-sr-only {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
  }

  @media (prefers-reduced-motion: reduce) {
    #rk-sp-guide .rk-sp-eff-bar {
      transition: none;
    }
  }

  @media (max-width: 940px) {
    #rk-sp-guide .rk-sp-nav {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    #rk-sp-guide .rk-sp-verdict {
      grid-template-columns: 1fr;
    }

    #rk-sp-guide .rk-sp-verdict-number {
      justify-self: start;
    }

    #rk-sp-guide .rk-sp-grid-4 {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    #rk-sp-guide .rk-sp-grid-3,
    #rk-sp-guide .rk-sp-controls {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    #rk-sp-guide .rk-sp-author-layout {
      grid-template-columns: 240px minmax(0, 1fr);
    }

    #rk-sp-guide .rk-sp-author-profile {
      padding: 26px 20px;
    }
  }

  @media (max-width: 720px) {
    #rk-sp-guide {
      margin: 18px auto 46px;
      font-size: 16px;
    }

    #rk-sp-guide .rk-sp-shell {
      border-radius: 21px;
    }

    #rk-sp-guide .rk-sp-hero,
    #rk-sp-guide .rk-sp-content {
      padding: 27px 20px;
    }

    #rk-sp-guide .rk-sp-nav {
      grid-template-columns: 1fr;
      padding: 18px;
    }

    #rk-sp-guide .rk-sp-formulas,
    #rk-sp-guide .rk-sp-grid-4,
    #rk-sp-guide .rk-sp-grid-3,
    #rk-sp-guide .rk-sp-grid-2,
    #rk-sp-guide .rk-sp-controls,
    #rk-sp-guide .rk-sp-results,
    #rk-sp-guide .rk-sp-diagram-grid,
    #rk-sp-guide .rk-sp-equation-grid {
      grid-template-columns: 1fr;
    }

    #rk-sp-guide .rk-sp-card,
    #rk-sp-guide .rk-sp-result,
    #rk-sp-guide .rk-sp-chart-panel {
      padding: 18px;
    }

    #rk-sp-guide .rk-sp-table,
    #rk-sp-guide .rk-sp-table tbody,
    #rk-sp-guide .rk-sp-table tr,
    #rk-sp-guide .rk-sp-table td {
      display: block;
      width: 100%;
    }

    #rk-sp-guide .rk-sp-table {
      border: 0;
      background: transparent;
    }

    #rk-sp-guide .rk-sp-table thead {
      position: absolute;
      width: 1px;
      height: 1px;
      overflow: hidden;
      clip: rect(0, 0, 0, 0);
    }

    #rk-sp-guide .rk-sp-table tr {
      margin-bottom: 14px;
      padding: 9px 15px;
      border: 1px solid var(--rk-sp-line);
      border-radius: 16px;
      background: var(--rk-sp-white);
      box-shadow: 0 8px 22px rgba(16, 37, 54, 0.05);
    }

    #rk-sp-guide .rk-sp-table td {
      display: grid;
      grid-template-columns: minmax(105px, 0.8fr) minmax(0, 1.2fr);
      gap: 12px;
      padding: 10px 0;
      border-bottom: 1px solid var(--rk-sp-line);
    }

    #rk-sp-guide .rk-sp-table td::before {
      content: attr(data-label);
      color: var(--rk-sp-dark);
      font-size: 0.64rem;
      font-weight: 900;
      letter-spacing: 0.02em;
      line-height: 1.45;
      text-transform: uppercase;
    }

    #rk-sp-guide .rk-sp-table tr:last-child td,
    #rk-sp-guide .rk-sp-table td:last-child {
      border-bottom: 0;
    }

    #rk-sp-guide .rk-sp-eff-row {
      grid-template-columns: 66px minmax(0, 1fr);
    }

    #rk-sp-guide .rk-sp-eff-value {
      grid-column: 1 / -1;
      margin-top: -6px;
      text-align: left;
    }

    #rk-sp-guide .rk-sp-author-head {
      display: block;
    }

    #rk-sp-guide .rk-sp-author-badge {
      display: inline-block;
      margin-top: 14px;
    }

    #rk-sp-guide .rk-sp-author-layout {
      grid-template-columns: 1fr;
    }

    #rk-sp-guide .rk-sp-author-profile {
      border-right: 0;
      border-bottom: 1px solid var(--rk-sp-line);
    }

    #rk-sp-guide .rk-sp-author-tabs {
      grid-template-columns: 1fr;
    }

    #rk-sp-guide .rk-sp-author-tab,
    #rk-sp-guide .rk-sp-author-tab:last-child {
      border-right: 0;
      border-bottom: 1px solid var(--rk-sp-line);
    }

    #rk-sp-guide .rk-sp-author-tab:last-child {
      border-bottom: 0;
    }

    #rk-sp-guide .rk-sp-author-tab[aria-selected="true"] {
      box-shadow: inset 4px 0 0 var(--rk-sp-blue);
    }

    #rk-sp-guide .rk-sp-portal-list {
      grid-template-columns: 1fr;
    }
  }

  @media (max-width: 430px) {
    #rk-sp-guide .rk-sp-hero,
    #rk-sp-guide .rk-sp-content {
      padding-right: 16px;
      padding-left: 16px;
    }

    #rk-sp-guide .rk-sp-result-values {
      grid-template-columns: 1fr;
    }

    #rk-sp-guide .rk-sp-table td {
      grid-template-columns: 1fr;
      gap: 3px;
    }

    #rk-sp-guide .rk-sp-author-strip {
      align-items: flex-start;
    }

    #rk-sp-guide .rk-sp-cta {
      padding: 24px 18px;
    }
  }
</style>

<article id="rk-sp-guide" itemscope="" itemtype="https://schema.org/TechArticle">
  <div class="rk-sp-shell">
    <div class="rk-sp-progress-track" aria-hidden="true"><div class="rk-sp-progress"></div></div>

    <header class="rk-sp-hero">
      <div class="rk-sp-badge"><span class="rk-sp-badge-dot" aria-hidden="true"></span>Analiza techniczna • pompa ciepła</div>
      <h2 itemprop="alternativeHeadline">Rozstaw rur ogrzewania podłogowego przy pompie ciepła – <span>5, 10, 15 czy 20 cm?</span></h2>

      <div class="rk-sp-hook">
        <p><strong>Rozstaw rur nie jest ustawieniem wybieranym z katalogu.</strong> Decyduje, czy pomieszczenie otrzyma potrzebną moc przy wodzie o temperaturze korzystnej dla pompy ciepła, czy instalacja będzie wymagała podnoszenia temperatury zasilania.</p>
      </div>

      <p class="rk-sp-hero-lead">W poradniku porównuję cztery rozstawy, pokazuję zużycie rury, przepływy i opory hydrauliczne oraz udostępniam interaktywny przykład: ten sam pokój, ta sama strata ciepła, ale cztery różne warianty ułożenia rur.</p>

      <div class="rk-sp-hero-meta" aria-label="Informacje o opracowaniu">
        <span><i aria-hidden="true"></i>Autor: Robert Kucharski</span>
        <span><i aria-hidden="true"></i>Pierwotna publikacja: 3 marca 2025 r.</span>
        <span><i aria-hidden="true"></i>Aktualizacja: 22 sierpnia 2026 r.</span>
      </div>

      <div class="rk-sp-author-strip">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski – projektant instalacji sanitarnych" width="58" height="58" loading="eager">
        <div>
          <b>Robert Kucharski</b>
          <small>Projektant instalacji sanitarnych • HVAC • ogrzewanie podłogowe • obliczenia hydrauliczne</small>
        </div>
      </div>
    </header>

    <nav class="rk-sp-nav" aria-label="Spis treści artykułu">
      <a href="#rk-sp-zasada"><span class="rk-sp-nav-num">01</span>Dlaczego rozstaw jest ważny?</a>
      <a href="#rk-sp-porownanie"><span class="rk-sp-nav-num">02</span>Porównanie 5–20 cm</a>
      <a href="#rk-sp-kalkulator"><span class="rk-sp-nav-num">03</span>Interaktywny przykład</a>
      <a href="#rk-sp-wykres"><span class="rk-sp-nav-num">04</span>Moc i temperatura wody</a>
      <a href="#rk-sp-hydraulika"><span class="rk-sp-nav-num">05</span>Przepływ i opory</a>
      <a href="#rk-sp-strefy"><span class="rk-sp-nav-num">06</span>Łazienki i przeszklenia</a>
      <a href="#rk-sp-schematy"><span class="rk-sp-nav-num">07</span>Przekrój i układ pętli</a>
      <a href="#rk-sp-dobor"><span class="rk-sp-nav-num">08</span>Procedura doboru</a>
      <a href="#rk-sp-faq"><span class="rk-sp-nav-num">09</span>FAQ</a>
    </nav>

    <div class="rk-sp-content" itemprop="articleBody">
      <section class="rk-sp-section" id="rk-sp-zasada" aria-labelledby="rk-sp-h-zasada">
        <div class="rk-sp-section-head">
          <span class="rk-sp-eyebrow">Najpierw obciążenie cieplne, później rozstaw</span>
          <h2 id="rk-sp-h-zasada">Dlaczego rozstaw rur ogrzewania podłogowego przy pompie ciepła ma tak duże znaczenie?</h2>
        </div>

        <p class="rk-sp-lead rk-sp-dropcap">Pompa ciepła nie potrzebuje „zawsze 10 cm”. Potrzebuje instalacji zdolnej przekazać projektową moc przy możliwie niskiej temperaturze wody. Punktem wyjścia jest obciążenie cieplne konkretnego pomieszczenia, a nie rodzaj źródła ciepła zapisany na tabliczce urządzenia.</p>

        <p>Jeżeli salon traci obliczeniowo 900 W, a aktywna powierzchnia grzewcza wynosi 20 m², podłoga musi przekazać średnio 45 W/m². Tę samą moc można próbować uzyskać przy rozstawie 10, 15 albo 20 cm, lecz każdy wariant będzie wymagał innej średniej temperatury wody i da inny rozkład temperatury na powierzchni. Dlatego poprawny projekt zaczyna się od obciążenia cieplnego zgodnego z metodą EN 12831, następnie przechodzi przez obliczenia wydajności powierzchni według EN 1264, a dopiero później ustala rozstaw i przepływ.</p>

        <div class="rk-sp-verdict">
          <div>
            <span class="rk-sp-eyebrow">Najważniejszy wniosek</span>
            <h3>Gęstszy rozstaw nie oszczędza energii sam z siebie.</h3>
            <p>Może jednak pozwolić przekazać wymaganą moc przy niższej temperaturze zasilania. Mniejsza różnica temperatur między źródłem dolnym a instalacją grzewczą tworzy lepsze warunki termodynamiczne dla pompy ciepła.</p>
          </div>
          <div class="rk-sp-verdict-number" aria-label="Typowy cel temperatury zasilania dla instalacji niskotemperaturowej">
            <b>30–35°C</b>
            <small>częsty zakres projektowy, ale nie uniwersalna gwarancja</small>
          </div>
        </div>

        <div class="rk-sp-formulas">
          <div class="rk-sp-formula">
            <h3>Wymagana moc jednostkowa</h3>
            <span class="rk-sp-formula-code">q<sub>req</sub> = Φ<sub>HL</sub> / A<sub>H</sub></span>
            <small>q<sub>req</sub> — wymagany strumień ciepła [W/m²], Φ<sub>HL</sub> — projektowe obciążenie pomieszczenia [W], A<sub>H</sub> — aktywna powierzchnia podłogi [m²].</small>
          </div>
          <div class="rk-sp-formula">
            <h3>Średnia różnica temperatur</h3>
            <span class="rk-sp-formula-code">Δθ<sub>H</sub> = (θ<sub>V</sub> − θ<sub>R</sub>) / ln[(θ<sub>V</sub> − θ<sub>i</sub>)/(θ<sub>R</sub> − θ<sub>i</sub>)]</span>
            <small>W obliczeniach powierzchni grzewczej liczy się temperatura zasilania, powrotu i pomieszczenia, a nie samo hasło „zasilanie 35°C”.</small>
          </div>
        </div>

        <p>Więcej o granicach temperatury wody opisuję w analizie <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalnej temperatury zasilania podłogówki</a>, natomiast metodykę cieplną rozwija opracowanie dotyczące <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">normy PN-EN 1264</a>.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-porownanie" aria-labelledby="rk-sp-h-porownanie">
        <div class="rk-sp-section-head">
          <span class="rk-sp-eyebrow">Cztery rozstawy, cztery różne konsekwencje</span>
          <h2 id="rk-sp-h-porownanie">Techniczne porównanie rozstawów rur 5, 10, 15 i 20 cm</h2>
          <p>Żaden z poniższych rozstawów nie jest automatycznie dobry albo zły. Ocenie podlegają równocześnie moc cieplna, temperatura powierzchni, temperatura wody, długość pętli i opór hydrauliczny.</p>
        </div>

        <div class="rk-sp-grid-4">
          <article class="rk-sp-card rk-sp-special">
            <span class="rk-sp-pitch">5 cm</span>
            <h3>Rozstaw specjalny</h3>
            <p>Największe zagęszczenie rur, ale również największe zużycie materiału i liczba obwodów.</p>
            <ul class="rk-sp-mini-list">
              <li><span aria-hidden="true"></span><span>około 21 m rury na 1 m² z zapasem trasowym 5%</span></li>
              <li><span aria-hidden="true"></span><span>strefy brzegowe i małe powierzchnie o dużym obciążeniu</span></li>
              <li><span aria-hidden="true"></span><span>konieczna kontrola promienia gięcia i długości pętli</span></li>
            </ul>
          </article>

          <article class="rk-sp-card rk-sp-recommended">
            <span class="rk-sp-pitch">10 cm</span>
            <h3>Rozstaw gęsty</h3>
            <p>Częsty wybór dla instalacji niskotemperaturowych, ale nadal powinien wynikać z obliczeń.</p>
            <ul class="rk-sp-mini-list">
              <li><span aria-hidden="true"></span><span>około 10,5 m rury na 1 m²</span></li>
              <li><span aria-hidden="true"></span><span>niższa wymagana temperatura wody niż przy 15–20 cm</span></li>
              <li><span aria-hidden="true"></span><span>większa liczba pętli i sekcji rozdzielacza</span></li>
            </ul>
          </article>

          <article class="rk-sp-card">
            <span class="rk-sp-pitch">15 cm</span>
            <h3>Rozstaw pośredni</h3>
            <p>Może być poprawny w dobrze izolowanych pomieszczeniach o umiarkowanym obciążeniu cieplnym.</p>
            <ul class="rk-sp-mini-list">
              <li><span aria-hidden="true"></span><span>około 7,0 m rury na 1 m²</span></li>
              <li><span aria-hidden="true"></span><span>mniejszy koszt materiału i mniej pętli</span></li>
              <li><span aria-hidden="true"></span><span>wymaga sprawdzenia mocy przy wybranej okładzinie</span></li>
            </ul>
          </article>

          <article class="rk-sp-card rk-sp-caution">
            <span class="rk-sp-pitch">20 cm</span>
            <h3>Rozstaw rzadki</h3>
            <p>Nie jest zakazany, lecz ma mniejszą rezerwę mocy i większe różnice temperatury powierzchni.</p>
            <ul class="rk-sp-mini-list">
              <li><span aria-hidden="true"></span><span>około 5,25 m rury na 1 m²</span></li>
              <li><span aria-hidden="true"></span><span>tylko dla niskiego obciążenia potwierdzonego obliczeniami</span></li>
              <li><span aria-hidden="true"></span><span>ryzyko potrzeby podniesienia temperatury zasilania</span></li>
            </ul>
          </article>
        </div>

        <div class="rk-sp-table-wrap">
          <table class="rk-sp-table">
            <thead>
              <tr>
                <th scope="col">Rozstaw</th>
                <th scope="col">Geometria rury</th>
                <th scope="col">Z zapasem 5%</th>
                <th scope="col">Wpływ na temperaturę wody</th>
                <th scope="col">Najczęstsze zastosowanie</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td data-label="Rozstaw"><strong>5 cm</strong></td>
                <td data-label="Geometria rury">20,0 m/m²</td>
                <td data-label="Z zapasem 5%">21,0 m/m²</td>
                <td data-label="Temperatura wody">najniższa z porównywanych</td>
                <td data-label="Zastosowanie">strefa specjalna, brzegowa, mała aktywna powierzchnia</td>
              </tr>
              <tr>
                <td data-label="Rozstaw"><strong>10 cm</strong></td>
                <td data-label="Geometria rury">10,0 m/m²</td>
                <td data-label="Z zapasem 5%">10,5 m/m²</td>
                <td data-label="Temperatura wody">niska przy typowych obciążeniach</td>
                <td data-label="Zastosowanie">łazienki, panele o wyższym oporze, strefy obciążone</td>
              </tr>
              <tr>
                <td data-label="Rozstaw"><strong>15 cm</strong></td>
                <td data-label="Geometria rury">6,67 m/m²</td>
                <td data-label="Z zapasem 5%">7,0 m/m²</td>
                <td data-label="Temperatura wody">umiarkowana, zależna od okładziny</td>
                <td data-label="Zastosowanie">dobrze izolowane pokoje o małych stratach</td>
              </tr>
              <tr>
                <td data-label="Rozstaw"><strong>20 cm</strong></td>
                <td data-label="Geometria rury">5,0 m/m²</td>
                <td data-label="Z zapasem 5%">5,25 m/m²</td>
                <td data-label="Temperatura wody">najwyższa z porównywanych</td>
                <td data-label="Zastosowanie">pomieszczenia o bardzo niskim obciążeniu, po weryfikacji</td>
              </tr>
            </tbody>
          </table>
        </div>

        <div class="rk-sp-note rk-sp-note-warn">
          <p><strong>Skąd wartości metrów rury?</strong> Dla regularnego pola grzewczego długość geometryczna wynosi w przybliżeniu 1/s, gdzie s jest rozstawem w metrach. Zapas 5% uwzględnia łuki i niedoskonałość geometrii, ale nie obejmuje doprowadzeń od rozdzielacza. Szczegółowe wyjaśnienie zawiera poradnik <a href="https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/">ile rury potrzeba na 1 m² ogrzewania podłogowego</a>.</p>
        </div>
      </section>

      <section class="rk-sp-section" id="rk-sp-kalkulator" aria-labelledby="rk-sp-h-kalkulator">
        <div class="rk-sp-section-head">
          <span class="rk-sp-eyebrow">Ten sam pokój, cztery warianty</span>
          <h2 id="rk-sp-h-kalkulator">Interaktywny przykład: dlaczego rozstaw rur przy pompie ciepła jest tak ważny?</h2>
          <p>Ustaw parametry pomieszczenia. Narzędzie porówna jednocześnie rozstawy 5, 10, 15 i 20 cm, aby pokazać kompromis między temperaturą wody, długością rury, liczbą obwodów i hydrauliką.</p>
        </div>

        <div class="rk-sp-lab" aria-label="Interaktywny model porównawczy rozstawu rur">
          <div class="rk-sp-lab-head">
            <h3>Model porównawczy dla rury 16×2 mm</h3>
            <p>Założenie bazowe: mokry system podłogowy, typowa wylewka, woda jako czynnik grzewczy. Obliczenia mają charakter edukacyjny i nie zastępują projektu zgodnego z EN 1264.</p>
          </div>

          <div class="rk-sp-lab-body">
            <div class="rk-sp-controls">
              <div class="rk-sp-control">
                <label for="rk-sp-area">Aktywna powierzchnia <output id="rk-sp-area-out" for="rk-sp-area">20 m²</output></label>
                <input id="rk-sp-area" type="range" min="6" max="50" step="1" value="20">
                <small>Powierzchnia rzeczywiście pokryta rurami, bez stałej zabudowy.</small>
              </div>

              <div class="rk-sp-control">
                <label for="rk-sp-load">Obciążenie jednostkowe <output id="rk-sp-load-out" for="rk-sp-load">50 W/m²</output></label>
                <input id="rk-sp-load" type="range" min="20" max="100" step="5" value="50">
                <small>Projektowa strata ciepła podzielona przez aktywną powierzchnię.</small>
              </div>

              <div class="rk-sp-control">
                <label for="rk-sp-floor">Opór okładziny podłogowej</label>
                <select id="rk-sp-floor">
                  <option value="0.01">Płytki / kamień — R 0,01</option>
                  <option value="0.05">Winyl / cienka okładzina — R 0,05</option>
                  <option value="0.10" selected="">Panele / drewno — R 0,10</option>
                  <option value="0.15">Okładzina graniczna — R 0,15</option>
                </select>
                <small>R<sub>λ,B</sub> w m²K/W. Do projektu wpisuje się wartość konkretnego produktu.</small>
              </div>

              <div class="rk-sp-control">
                <label for="rk-sp-zone">Rodzaj strefy</label>
                <select id="rk-sp-zone">
                  <option value="20|29" selected="">Pokój — 20°C / podłoga maks. 29°C</option>
                  <option value="24|33">Łazienka — 24°C / podłoga maks. 33°C</option>
                  <option value="20|35">Strefa brzegowa — 20°C / podłoga maks. 35°C</option>
                </select>
                <small>Temperatura pomieszczenia i orientacyjna granica temperatury powierzchni.</small>
              </div>

              <div class="rk-sp-control">
                <label for="rk-sp-delta">Spadek temperatury wody ΔT</label>
                <select id="rk-sp-delta">
                  <option value="3">3 K</option>
                  <option value="5" selected="">5 K</option>
                  <option value="7">7 K</option>
                </select>
                <small>Różnica między zasilaniem i powrotem wpływa na przepływ oraz średnią temperaturę wody.</small>
              </div>

              <div class="rk-sp-control">
                <label for="rk-sp-loop-max">Przyjęty limit długości pętli</label>
                <select id="rk-sp-loop-max">
                  <option value="80">80 m</option>
                  <option value="90" selected="">90 m</option>
                  <option value="100">100 m</option>
                </select>
                <small>To parametr modelu, nie uniwersalna wartość normowa.</small>
              </div>
            </div>

            <div class="rk-sp-live-summary" id="rk-sp-live-summary" aria-live="polite">Pomieszczenie 20 m² wymaga 1000 W mocy grzewczej, czyli 50 W/m².</div>

            <div class="rk-sp-results" id="rk-sp-results" aria-live="polite"></div>

            <div class="rk-sp-chart-panel" id="rk-sp-wykres">
              <h4>Moc podłogi a rozstaw rur i temperatura zasilania</h4>
              <p class="rk-sp-chart-caption">Wykres aktualizuje się po zmianie okładziny, rodzaju strefy i ΔT. Linia limitu powierzchni pokazuje, że brakującej mocy nie wolno zawsze „dobić” wyższą temperaturą.</p>
              <div class="rk-sp-chart-legend" aria-hidden="true">
                <span><i style="background:#28c9da"></i>30°C</span>
                <span><i style="background:#078fbe"></i>35°C</span>
                <span><i style="background:#ff7438"></i>40°C</span>
                <span><i style="background:#e33d35"></i>45°C</span>
                <span><i style="height:2px;background:#687986"></i>limit powierzchni</span>
              </div>
              <div id="rk-sp-power-chart"></div>
            </div>

            <div class="rk-sp-chart-panel">
              <h4>Wymagana temperatura zasilania i względny indeks warunków pracy pompy</h4>
              <p class="rk-sp-chart-caption">Indeks nie jest katalogowym COP. Porównuje wyłącznie wpływ wymaganego podniesienia temperatury przy tej samej temperaturze źródła 0°C; najlepszy wariant w bieżącym porównaniu otrzymuje 100%.</p>
              <div class="rk-sp-eff-list" id="rk-sp-eff-list" aria-live="polite"></div>
            </div>

            <div class="rk-sp-note">
              <p><strong>Jak czytać wynik?</strong> Najpierw sprawdź, czy moc mieści się w limicie temperatury powierzchni. Następnie oceń temperaturę zasilania, liczbę pętli i opór hydrauliczny. Najniższa temperatura wody nie zawsze oznacza najlepszy projekt, jeśli wymaga nieproporcjonalnej liczby obwodów i rozdzielaczy.</p>
            </div>
          </div>
        </div>
      </section>

      <section class="rk-sp-section" id="rk-sp-wplyw" aria-labelledby="rk-sp-h-wplyw">
        <div class="rk-sp-section-head">
          <span class="rk-sp-eyebrow">Temperatura podnoszenia decyduje o warunkach pracy</span>
          <h2 id="rk-sp-h-wplyw">Wpływ rozstawu rur na temperaturę zasilania i sprawność pompy ciepła</h2>
        </div>

        <p>W pompie ciepła sprężarka przenosi energię z niższego poziomu temperatury na wyższy. Im większa jest różnica między źródłem a temperaturą wymaganą przez instalację, tym trudniejsze są warunki pracy. Dlatego rozstaw rur wpływa na efektywność pośrednio: zmienia zdolność podłogi do przekazania mocy przy określonej temperaturze wody.</p>

        <div class="rk-sp-grid-3">
          <article class="rk-sp-card rk-sp-recommended">
            <span class="rk-sp-pitch">1</span>
            <h3>Gęstszy rozstaw</h3>
            <p>Zmniejsza opór przewodzenia między rurą a powierzchnią i ogranicza różnice temperatury na podłodze.</p>
          </article>
          <article class="rk-sp-card">
            <span class="rk-sp-pitch">2</span>
            <h3>Niższa temperatura wody</h3>
            <p>Ta sama moc może zostać oddana przy mniejszej średniej różnicy temperatur między wodą a pomieszczeniem.</p>
          </article>
          <article class="rk-sp-card rk-sp-special">
            <span class="rk-sp-pitch">3</span>
            <h3>Mniejszy skok temperatury</h3>
            <p>Pompa ciepła pracuje w korzystniejszych warunkach, ale rzeczywisty COP zależy także od temperatury zewnętrznej i konkretnego urządzenia.</p>
          </article>
        </div>

        <div class="rk-sp-note rk-sp-note-warn">
          <p><strong>Nie wpisuję sztywnego „2–3% COP na każdy stopień”.</strong> Taki skrót nie jest uniwersalny. Zmiana zależy od konstrukcji pompy, czynnika chłodniczego, temperatury źródła, modulacji, odszraniania i mapy pracy producenta. Wiarygodne porównanie kosztów wymaga danych urządzenia dla konkretnych punktów pracy.</p>
        </div>

        <p>Rozwinięcie tej zależności znajdziesz w artykule o tym, dlaczego <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">niska temperatura zasilania jest korzystna dla podłogówki z pompą ciepła</a>.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-hydraulika" aria-labelledby="rk-sp-h-hydraulika">
        <div class="rk-sp-section-head">
          <span class="rk-sp-eyebrow">Ciepło musi jeszcze przepłynąć przez instalację</span>
          <h2 id="rk-sp-h-hydraulika">Obliczenia przepływu, długości pętli i strat ciśnienia</h2>
          <p>Dobór cieplny i hydrauliczny są nierozłączne. Zagęszczenie rur zwiększa ich łączną długość, dlatego tę samą powierzchnię trzeba podzielić na większą liczbę pętli.</p>
        </div>

        <div class="rk-sp-equation">
          <h3>Trzy równania, które kontrolują projekt</h3>
          <div class="rk-sp-equation-grid">
            <div class="rk-sp-equation-card">
              <b>V̇ ≈ 0,86 · Φ / ΔT</b>
              <small>Przepływ objętościowy w l/h dla wody; Φ w W, ΔT w K.</small>
            </div>
            <div class="rk-sp-equation-card">
              <b>L ≈ A / s · 1,05</b>
              <small>Orientacyjna długość pola grzewczego; doprowadzenia liczy się oddzielnie.</small>
            </div>
            <div class="rk-sp-equation-card">
              <b>Δp = λ · L/D · ρv²/2</b>
              <small>Równanie Darcy’ego-Weisbacha dla straty liniowej rury.</small>
            </div>
          </div>
        </div>

        <p>Przepływ wynika z mocy przenoszonej przez pętlę i przyjętego spadku temperatury. Zbyt mały przepływ zwiększa różnicę między początkiem i końcem obwodu. Zbyt duży przepływ podnosi prędkość oraz opory. Dlatego rotametr nie służy do ustawiania „wszędzie 2 l/min”, lecz do realizacji wartości policzonych dla konkretnej pętli.</p>

        <div class="rk-sp-grid-2">
          <article class="rk-sp-card">
            <h3>Co obejmuje wynik interaktywny?</h3>
            <ul class="rk-sp-mini-list">
              <li><span aria-hidden="true"></span><span>łączną długość pola wraz z 5% zapasu geometrycznego</span></li>
              <li><span aria-hidden="true"></span><span>liczbę pętli wynikającą z przyjętego limitu długości</span></li>
              <li><span aria-hidden="true"></span><span>przepływ całkowity i średni przepływ jednej pętli</span></li>
              <li><span aria-hidden="true"></span><span>orientacyjną stratę rury 16×2 mm z rezerwą 15%</span></li>
            </ul>
          </article>
          <article class="rk-sp-card rk-sp-caution">
            <h3>Czego wynik nie obejmuje?</h3>
            <ul class="rk-sp-mini-list">
              <li><span aria-hidden="true"></span><span>oporów rozdzielacza, zaworów, rotametrów i przewodów zasilających</span></li>
              <li><span aria-hidden="true"></span><span>rzeczywistej długości doprowadzeń do każdego pomieszczenia</span></li>
              <li><span aria-hidden="true"></span><span>indywidualnej chropowatości, temperatury i dodatku glikolu</span></li>
              <li><span aria-hidden="true"></span><span>doboru pompy obiegowej i nastaw równoważących cały układ</span></li>
            </ul>
          </article>
        </div>

        <p>W praktycznym projekcie należy jeszcze porównać najbardziej niekorzystny obwód z dostępną wysokością podnoszenia. Osobno omawiam <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">spadek temperatury ΔT</a>, dobór <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnicy rur ogrzewania podłogowego</a> oraz funkcję <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacza do podłogówki</a>.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-strefy" aria-labelledby="rk-sp-h-strefy">
        <div class="rk-sp-section-head">
          <span class="rk-sp-eyebrow">Jedna reguła nie obsłuży całego domu</span>
          <h2 id="rk-sp-h-strefy">Łazienki, strefy brzegowe i duże przeszklenia</h2>
          <p>Pomieszczenia różnią się temperaturą obliczeniową, aktywną powierzchnią i stratami przez przegrody. To dlatego jednolity rozstaw w całym budynku bywa rozwiązaniem wygodnym wykonawczo, lecz niekoniecznie poprawnym projektowo.</p>
        </div>

        <div class="rk-sp-grid-3">
          <article class="rk-sp-card rk-sp-recommended">
            <span class="rk-sp-pitch">Ł</span>
            <h3>Łazienka</h3>
            <p>Temperatura obliczeniowa jest zwykle wyższa, a aktywną powierzchnię ograniczają wanna, brodzik lub stała zabudowa. Rozstaw 10 cm jest częsty, ale 5 cm nie naprawi zbyt małej powierzchni ani przekroczenia dopuszczalnej temperatury podłogi.</p>
          </article>

          <article class="rk-sp-card rk-sp-special">
            <span class="rk-sp-pitch">B</span>
            <h3>Strefa brzegowa</h3>
            <p>Zagęszczenie rur w pasie przy przegrodzie zewnętrznej może ograniczyć spadek temperatury powierzchni. Szerokość i moc strefy powinny wynikać z rozkładu strat, a nie z automatycznego pasa „metr od okna”.</p>
          </article>

          <article class="rk-sp-card rk-sp-caution">
            <span class="rk-sp-pitch">G</span>
            <h3>Duże przeszklenie</h3>
            <p>Liczy się powierzchnia szyby, współczynnik U, temperatura zewnętrzna, szczelność i geometria pomieszczenia. Nowoczesne przeszklenie nie zawsze wymaga 5 cm, a słabe może wymagać dodatkowego emitera.</p>
          </article>
        </div>

        <div class="rk-sp-note">
          <p><strong>Strefa brzegowa powinna być policzona.</strong> Jeżeli ma inne obciążenie niż część wewnętrzna, można wydzielić ją osobnym obwodem albo odpowiednio poprowadzić zasilanie pętli. Więcej przykładów zawiera opracowanie o <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-obwodowa-w-ogrzewaniu-podlogowym/">strefie brzegowej w ogrzewaniu podłogowym</a>.</p>
        </div>
      </section>

      <section class="rk-sp-section" id="rk-sp-schematy" aria-labelledby="rk-sp-h-schematy">
        <div class="rk-sp-section-head">
          <span class="rk-sp-eyebrow">Schematy podporządkowane tematowi rozstawu</span>
          <h2 id="rk-sp-h-schematy">Co rozstaw zmienia w przekroju podłogi i układzie pętli?</h2>
          <p>Przekrój nie służy tu do opisywania wszystkich warstw budowlanych. Pokazuje wyłącznie drogę ciepła od rury do pomieszczenia oraz miejsce, w którym opór okładziny i odległość między rurami wpływają na wynik.</p>
        </div>

        <div class="rk-sp-diagram-grid">
          <figure class="rk-sp-diagram">
            <svg viewBox="0 0 520 330" role="img" aria-labelledby="rk-sp-cross-title rk-sp-cross-desc">
              <title id="rk-sp-cross-title">Przekrój ogrzewanej podłogi i droga przepływu ciepła</title>
              <desc id="rk-sp-cross-desc">Dwie rury w warstwie jastrychu, okładzina podłogowa nad nimi oraz strzałki przepływu ciepła do pomieszczenia.</desc>
              <rect x="20" y="35" width="480" height="54" rx="8" fill="#eafcff" stroke="#078fbe" stroke-width="2"></rect>
              <text x="260" y="67" text-anchor="middle" fill="#14384d" font-size="18" font-weight="800">okładzina i jej opór Rλ,B</text>
              <rect x="20" y="90" width="480" height="150" fill="#e8edf0" stroke="#b5c6ce" stroke-width="2"></rect>
              <text x="260" y="120" text-anchor="middle" fill="#465866" font-size="16" font-weight="700">jastrych — rozprowadzenie ciepła</text>
              <circle cx="155" cy="190" r="28" fill="#ff7438" stroke="#e33d35" stroke-width="6"></circle>
              <circle cx="365" cy="190" r="28" fill="#ff7438" stroke="#e33d35" stroke-width="6"></circle>
              <path d="M155 158 C145 125 135 112 125 96" fill="none" stroke="#078fbe" stroke-width="5" stroke-linecap="round"></path>
              <path d="M365 158 C375 125 385 112 395 96" fill="none" stroke="#078fbe" stroke-width="5" stroke-linecap="round"></path>
              <path d="M220 190 H300" stroke="#102536" stroke-width="3"></path>
              <path d="M220 181 V199 M300 181 V199" stroke="#102536" stroke-width="3"></path>
              <text x="260" y="178" text-anchor="middle" fill="#102536" font-size="17" font-weight="900">rozstaw T</text>
              <rect x="20" y="241" width="480" height="55" rx="0 0 8 8" fill="#dce8ee" stroke="#b5c6ce" stroke-width="2"></rect>
              <text x="260" y="274" text-anchor="middle" fill="#465866" font-size="16" font-weight="700">izolacja ograniczająca strumień w dół</text>
            </svg>
            <figcaption>Większy rozstaw wydłuża boczną drogę przewodzenia ciepła i zwiększa różnice temperatury na powierzchni. Okładzina o większym oporze dodatkowo ogranicza strumień do pomieszczenia.</figcaption>
          </figure>

          <figure class="rk-sp-diagram">
            <svg viewBox="0 0 520 330" role="img" aria-labelledby="rk-sp-loop-title rk-sp-loop-desc">
              <title id="rk-sp-loop-title">Porównanie pola rur przy rozstawie 10 i 20 cm</title>
              <desc id="rk-sp-loop-desc">Dwa pola o tej samej powierzchni. Po lewej więcej linii rur w rozstawie 10 cm, po prawej mniej linii w rozstawie 20 cm.</desc>
              <rect x="18" y="36" width="226" height="250" rx="14" fill="#f5f9fb" stroke="#28c9da" stroke-width="3"></rect>
              <rect x="276" y="36" width="226" height="250" rx="14" fill="#fff4ed" stroke="#ff7438" stroke-width="3"></rect>
              <text x="131" y="68" text-anchor="middle" fill="#102536" font-size="19" font-weight="900">10 cm</text>
              <text x="389" y="68" text-anchor="middle" fill="#102536" font-size="19" font-weight="900">20 cm</text>
              <path d="M50 92 H212 V116 H50 V140 H212 V164 H50 V188 H212 V212 H50 V236 H212 V260 H50" fill="none" stroke="#078fbe" stroke-width="8" stroke-linejoin="round" stroke-linecap="round"></path>
              <path d="M308 100 H470 V150 H308 V200 H470 V250 H308" fill="none" stroke="#e33d35" stroke-width="8" stroke-linejoin="round" stroke-linecap="round"></path>
              <text x="131" y="310" text-anchor="middle" fill="#465866" font-size="15" font-weight="700">więcej rury i pętli</text>
              <text x="389" y="310" text-anchor="middle" fill="#465866" font-size="15" font-weight="700">mniejsza rezerwa mocy</text>
            </svg>
            <figcaption>Ta sama powierzchnia przy 10 cm zużywa około dwa razy więcej rury niż przy 20 cm. Projekt musi więc równocześnie dobrać liczbę pętli i sekcji rozdzielacza.</figcaption>
          </figure>
        </div>

        <p>Na schemacie widoczna jest także przyczyna, dla której nie wolno oceniać rozstawu bez okładziny. Panele o dużym oporze cieplnym mogą wymusić niższą odległość między rurami lub wyższą temperaturę wody, natomiast cienka ceramika przekazuje ciepło łatwiej. Nie oznacza to jednak automatycznie, że pod płytkami zawsze można zastosować 15 albo 20 cm.</p>
      </section>

      <section class="rk-sp-section" id="rk-sp-dobor" aria-labelledby="rk-sp-h-dobor">
        <div class="rk-sp-section-head">
          <span class="rk-sp-eyebrow">Procedura zamiast zasady „wszędzie 10 cm”</span>
          <h2 id="rk-sp-h-dobor">Jak prawidłowo dobrać rozstaw rur do pompy ciepła?</h2>
        </div>

        <ol class="rk-sp-checklist" id="rk-sp-selection-checklist">
          <li><div><strong>Oblicz projektowe obciążenie każdego pomieszczenia.</strong><span>Średnia dla całego domu nie pokaże problemu małej łazienki albo narożnego pokoju z dużą powierzchnią szkła.</span></div></li>
          <li><div><strong>Wyznacz aktywną powierzchnię grzewczą.</strong><span>Stała zabudowa może istotnie zmniejszyć pole, z którego podłoga rzeczywiście oddaje ciepło.</span></div></li>
          <li><div><strong>Ustal opór cieplny planowanej okładziny.</strong><span>Do obliczeń przyjmij wartość konkretnego zestawu: okładzina, podkład i ewentualne warstwy pośrednie.</span></div></li>
          <li><div><strong>Porównaj wydajność rozstawów przy temperaturze projektowej.</strong><span>Sprawdź 5, 10, 15 i 20 cm zamiast zakładać jeden wariant dla całego budynku.</span></div></li>
          <li><div><strong>Zweryfikuj temperaturę powierzchni podłogi.</strong><span>Jeżeli limit zostaje przekroczony, samo dalsze podnoszenie temperatury zasilania nie jest poprawnym rozwiązaniem.</span></div></li>
          <li><div><strong>Podziel powierzchnię na hydraulicznie wykonalne pętle.</strong><span>Uwzględnij doprowadzenia, średnicę rury, wymagane przepływy i najbardziej niekorzystny obwód.</span></div></li>
          <li><div><strong>Sprawdź punkt pracy pompy obiegowej i nastawy rozdzielacza.</strong><span>Projekt kończy się wartościami przepływu dla każdej sekcji, a nie samym rysunkiem rury na rzucie.</span></div></li>
        </ol>

        <div class="rk-sp-note rk-sp-note-warn">
          <p><strong>Rozstaw 10 czy 15 cm?</strong> Odpowiedź może być inna w każdym pomieszczeniu. Osobne porównanie tych dwóch wariantów znajdziesz w artykule <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstaw rur ogrzewania podłogowego co 10 czy 15 cm</a>.</p>
        </div>
      </section>

      <section class="rk-sp-section" id="rk-sp-faq" aria-labelledby="rk-sp-h-faq">
        <div class="rk-sp-section-head">
          <span class="rk-sp-eyebrow">Pytania inwestorów i wykonawców</span>
          <h2 id="rk-sp-h-faq">FAQ – rozstaw rur ogrzewania podłogowego przy pompie ciepła</h2>
        </div>

        <div class="rk-sp-faq">
          <details id="rk-sp-faq-1">
            <summary>Jaki rozstaw rur ogrzewania podłogowego jest najlepszy przy pompie ciepła?</summary>
            <div class="rk-sp-faq-answer"><p>Nie istnieje jeden najlepszy rozstaw dla wszystkich pomieszczeń. W wielu nowych domach stosuje się 10 lub 15 cm, ale ostateczny wybór powinien wynikać z obciążenia cieplnego, aktywnej powierzchni, oporu okładziny, temperatury wody i obliczeń hydraulicznych.</p></div>
          </details>

          <details id="rk-sp-faq-2">
            <summary>Czy przy pompie ciepła rury zawsze trzeba układać co 10 cm?</summary>
            <div class="rk-sp-faq-answer"><p>Nie. Rozstaw 10 cm zwiększa wydajność przy niskiej temperaturze wody, lecz w pomieszczeniu o małej stracie ciepła poprawny może być również rozstaw 15 cm. Zastosowanie 10 cm bez obliczeń może niepotrzebnie zwiększyć liczbę pętli i rozdzielaczy.</p></div>
          </details>

          <details id="rk-sp-faq-3">
            <summary>Czy rozstaw 15 cm będzie wystarczający dla pompy ciepła?</summary>
            <div class="rk-sp-faq-answer"><p>Może być wystarczający, jeżeli przy projektowej temperaturze zasilania podłoga pokrywa obciążenie pomieszczenia bez przekroczenia dopuszczalnej temperatury powierzchni. Sam fakt zastosowania pompy ciepła nie przesądza o wyborze 10 albo 15 cm.</p></div>
          </details>

          <details id="rk-sp-faq-4">
            <summary>Kiedy można zastosować rozstaw rur co 20 cm?</summary>
            <div class="rk-sp-faq-answer"><p>Rozstaw 20 cm można rozważyć w pomieszczeniach o bardzo małym obciążeniu i korzystnej okładzinie, po potwierdzeniu wydajności. Trzeba również ocenić równomierność temperatury powierzchni i ewentualną konieczność podniesienia temperatury wody.</p></div>
          </details>

          <details id="rk-sp-faq-5">
            <summary>Czy warto układać podłogówkę co 5 cm?</summary>
            <div class="rk-sp-faq-answer"><p>Rozstaw 5 cm jest rozwiązaniem specjalnym. Zwiększa zużycie rury do około 21 m/m² wraz z niewielkim zapasem, wymaga większej liczby krótkich pętli i kontroli promienia gięcia. Najczęściej wykorzystuje się go lokalnie, a nie na całej powierzchni domu.</p></div>
          </details>

          <details id="rk-sp-faq-6">
            <summary>Jaki rozstaw rur zastosować pod panelami, a jaki pod płytkami?</summary>
            <div class="rk-sp-faq-answer"><p>Rodzaj okładziny jest tylko jednym z parametrów. Panele i podkład mają zwykle większy opór cieplny niż płytki, dlatego mogą wymagać gęstszego rozstawu lub wyższej temperatury wody. Nie można jednak przypisać rozstawu wyłącznie na podstawie nazwy materiału.</p></div>
          </details>

          <details id="rk-sp-faq-7">
            <summary>Ile rury potrzeba na 1 m² podłogówki?</summary>
            <div class="rk-sp-faq-answer"><p>Orientacyjnie z zapasem geometrycznym 5% potrzeba około 21 m/m² przy rozstawie 5 cm, 10,5 m/m² przy 10 cm, 7 m/m² przy 15 cm oraz 5,25 m/m² przy 20 cm. Do wyniku należy dodać doprowadzenia do rozdzielacza.</p></div>
          </details>

          <details id="rk-sp-faq-8">
            <summary>Jak rozstaw rur wpływa na temperaturę zasilania pompy ciepła?</summary>
            <div class="rk-sp-faq-answer"><p>Przy tej samej mocy i konstrukcji podłogi gęstszy rozstaw zwykle pozwala zastosować niższą średnią temperaturę wody. Dokładna różnica zależy od budowy systemu, okładziny, temperatury powrotu oraz wymaganej mocy jednostkowej.</p></div>
          </details>

          <details id="rk-sp-faq-9">
            <summary>Czy mniejszy rozstaw rur zawsze podnosi COP pompy ciepła?</summary>
            <div class="rk-sp-faq-answer"><p>Nie bezpośrednio. Korzyść pojawia się wtedy, gdy gęstszy rozstaw umożliwia realne obniżenie temperatury zasilania. Rzeczywisty COP zależy również od temperatury źródła, konstrukcji urządzenia, modulacji, odszraniania i sterowania.</p></div>
          </details>

          <details id="rk-sp-faq-10">
            <summary>Jaki rozstaw rur zastosować w łazience?</summary>
            <div class="rk-sp-faq-answer"><p>W łazienkach często stosuje się 10 cm ze względu na wyższą temperaturę obliczeniową i małą aktywną powierzchnię. Jeżeli podłoga nie pokrywa obciążenia bez przekroczenia temperatury powierzchni, potrzebny może być dodatkowy emiter zamiast dalszego zagęszczania rur.</p></div>
          </details>

          <details id="rk-sp-faq-11">
            <summary>Czy przy dużym przeszkleniu trzeba wykonać strefę brzegową co 5 cm?</summary>
            <div class="rk-sp-faq-answer"><p>Nie zawsze. Strefa brzegowa powinna wynikać z obliczonej straty przez przeszklenie i rozkładu temperatury w pomieszczeniu. W nowym, ciepłym oknie może wystarczyć standardowy rozstaw, natomiast przy dużym obciążeniu nawet 5 cm może nie zastąpić dodatkowego emitera.</p></div>
          </details>

          <details id="rk-sp-faq-12">
            <summary>Jaka powinna być maksymalna długość pętli przy rurze 16×2 mm?</summary>
            <div class="rk-sp-faq-answer"><p>Nie ma jednej długości właściwej dla każdego układu. W praktyce często przyjmuje się około 80–100 m łącznie z doprowadzeniami, ale prawidłowy limit wynika z przepływu, średnicy wewnętrznej, oporu pętli, dostępnego ciśnienia i możliwości zrównoważenia instalacji.</p></div>
          </details>

          <details id="rk-sp-faq-13">
            <summary>Czy można zastosować jeden rozstaw rur w całym domu?</summary>
            <div class="rk-sp-faq-answer"><p>Można, jeżeli obliczenia potwierdzą spełnienie wymagań wszystkich pomieszczeń. Najczęściej jednak łazienki, pomieszczenia narożne i strefy przy dużych przeszkleniach wymagają innego podejścia niż sypialnie lub komunikacja.</p></div>
          </details>
        </div>
      </section>

      <div class="rk-sp-cta" aria-label="Projekt ogrzewania podłogowego">
        <div>
          <h3>Potrzebujesz rozstawów i przepływów wynikających z obliczeń?</h3>
          <p>Projekt określa obciążenie każdego pomieszczenia, rozstaw i przebieg rur, liczbę pętli, temperaturę pracy, wymagane przepływy oraz opory hydrauliczne instalacji.</p>
        </div>
        <div class="rk-sp-cta-actions">
          <a class="rk-sp-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
          <small>Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl, serwisu należącego do autora artykułu.</small>
        </div>
      </div>

      <div class="rk-sp-sources" aria-label="Źródła techniczne opracowania">
        <strong>Źródła i podstawa techniczna opracowania</strong>
        Metodyka cieplna: <a href="https://www.dinmedia.de/en/standard/din-en-1264-2/332537063" target="_blank" rel="noopener noreferrer">DIN Media – EN 1264-2:2021</a>, <a href="https://www.dinmedia.de/en/standard/din-en-1264-3/332537135" target="_blank" rel="noopener noreferrer">DIN Media – EN 1264-3:2021</a> oraz <a href="https://www.iso.org/standard/74683.html" target="_blank" rel="noopener noreferrer">ISO 11855-2:2021</a>. Obciążenie cieplne: <a href="https://www.dinmedia.de/en/standard/din-en-12831-1/261292587" target="_blank" rel="noopener noreferrer">DIN Media – EN 12831-1:2017</a>. Wpływ różnicy temperatur na pompy ciepła: <a href="https://publications.jrc.ec.europa.eu/repository/bitstream/JRC99264/2015%20jrc%20geothermal%20energy%20status%20report_online.pdf" target="_blank" rel="noopener noreferrer">Joint Research Centre – Geothermal Energy Status Report</a>. Hydraulika: <a href="https://ecommons.udayton.edu/cgi/viewcontent.cgi?article=1013&amp;context=cee_coursenotes" target="_blank" rel="noopener noreferrer">University of Dayton – Head Loss in Pipes</a> oraz <a href="https://webbook.nist.gov/chemistry/fluid/" target="_blank" rel="noopener noreferrer">NIST – Thermophysical Properties of Fluid Systems</a>.
      </div>

      <aside class="rk-sp-author-box" aria-labelledby="rk-sp-author-title" itemprop="author" itemscope="" itemtype="https://schema.org/Person">
        <div class="rk-sp-author-head">
          <div>
            <h2 id="rk-sp-author-title">Autor opracowania</h2>
            <p>Praktyka projektowa, wiedza techniczna i język zrozumiały dla inwestora.</p>
          </div>
          <span class="rk-sp-author-badge" aria-label="Doświadczenie, eksperckość, autorytet i wiarygodność w branży HVAC">E-E-A-T • HVAC</span>
        </div>

        <div class="rk-sp-author-layout">
          <div class="rk-sp-author-profile">
            <img decoding="async" class="rk-sp-author-photo" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski – projektant instalacji sanitarnych i specjalista ogrzewania podłogowego" width="180" height="180" loading="lazy" itemprop="image">
            <h3 class="rk-sp-author-name" itemprop="name">Robert Kucharski</h3>
            <span class="rk-sp-author-role" itemprop="jobTitle">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</span>

            <div class="rk-sp-author-links" aria-label="Profile Roberta Kucharskiego">
              <a class="rk-sp-author-link" href="https://www.facebook.com/robert.kucharski.budowa.bez.sciemy" target="_blank" rel="noopener noreferrer me" itemprop="sameAs">Facebook</a>
              <a class="rk-sp-author-link" href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer me" itemprop="sameAs">LinkedIn</a>
              <a class="rk-sp-author-link" href="https://projekt-ogrzewania.pl/author/admin3399/" itemprop="url">Profil autora</a>
            </div>
          </div>

          <div class="rk-sp-author-main">
            <blockquote class="rk-sp-author-quote">
              <span class="rk-sp-author-quote-mark" aria-hidden="true">“</span>
              <p>Przy pompie ciepła rozstaw rur nie jest kwestią estetyki ani przyzwyczajenia wykonawcy. To parametr, który decyduje, czy wymagana moc zostanie przekazana przy niskiej temperaturze wody, czy inwestor będzie zmuszony podnosić temperaturę zasilania.</p>
              <footer>Robert Kucharski — autor i projektant instalacji</footer>
            </blockquote>

            <div class="rk-sp-author-tabs" role="tablist" aria-label="Szczegółowe informacje o autorze">
              <button class="rk-sp-author-tab" id="rk-sp-author-tab-about" type="button" role="tab" aria-selected="true" aria-controls="rk-sp-author-panel-about">O autorze</button>
              <button class="rk-sp-author-tab" id="rk-sp-author-tab-experience" type="button" role="tab" aria-selected="false" aria-controls="rk-sp-author-panel-experience" tabindex="-1">Doświadczenie</button>
              <button class="rk-sp-author-tab" id="rk-sp-author-tab-portals" type="button" role="tab" aria-selected="false" aria-controls="rk-sp-author-panel-portals" tabindex="-1">Portale</button>
            </div>

            <div class="rk-sp-author-panels">
              <div class="rk-sp-author-panel" id="rk-sp-author-panel-about" role="tabpanel" aria-labelledby="rk-sp-author-tab-about" itemprop="description">
                <p>Specjalizuję się w projektowaniu wodnego ogrzewania podłogowego, obliczeniach obciążenia cieplnego i hydrauliki instalacji. Łączę wymagania techniczne z praktycznym spojrzeniem inwestora: dokumentacja ma być policzona, czytelna i możliwa do poprawnego wykonania.</p>
              </div>

              <div class="rk-sp-author-panel" id="rk-sp-author-panel-experience" role="tabpanel" aria-labelledby="rk-sp-author-tab-experience" hidden="">
                <p>W projektach określam straty ciepła poszczególnych pomieszczeń, temperatury pracy, rozstawy, długości i przebieg pętli, wymagane przepływy, opory hydrauliczne, liczbę sekcji rozdzielaczy oraz założenia regulacji. Publikacje techniczne opieram na tej samej kolejności obliczeń, która obowiązuje przy przygotowaniu dokumentacji dla konkretnego budynku.</p>
                <p itemprop="knowsAbout">Zakres specjalizacji: ogrzewanie podłogowe, pompy ciepła, hydraulika instalacji, obliczenia OZC, systemy HVAC i efektywność energetyczna budynków.</p>
              </div>

              <div class="rk-sp-author-panel" id="rk-sp-author-panel-portals" role="tabpanel" aria-labelledby="rk-sp-author-tab-portals" hidden="">
                <p>Jestem właścicielem trzech serwisów branżowych. Informację tę podaję jawnie, aby czytelnik znał autorstwo opracowania oraz kontekst linkowania między portalami.</p>
                <div class="rk-sp-portal-list">
                  <a href="https://projekt-ogrzewania.pl/" target="_blank" rel="noopener noreferrer me" itemprop="sameAs">Projekt-Ogrzewania.pl</a>
                  <a href="https://remont.biz.pl/" target="_blank" rel="noopener noreferrer me" itemprop="sameAs">Remont.biz.pl</a>
                  <a href="https://sobir.pl/" target="_blank" rel="noopener noreferrer me" itemprop="sameAs">Sobir.pl</a>
                </div>
              </div>
            </div>
          </div>
        </div>
      </aside>

      <p class="rk-sp-disclaimer"><strong>Nota techniczna:</strong> Interaktywny moduł służy do porównania wpływu rozstawu przy jednakowych założeniach. Współczynniki zastępcze opisują typowy mokry system z rurą 16×2 mm i nie są charakterystyką konkretnego produktu. Projekt wykonawczy powinien wykorzystywać zweryfikowane dane systemowe, rzeczywistą konstrukcję podłogi, obliczenia EN 1264, obciążenie cieplne EN 12831 i pełny bilans hydrauliczny.</p>
    </div>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#article",
      "url": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/",
      "headline": "Rozstaw rur ogrzewania podłogowego przy pompie ciepła.",
      "alternativeHeadline": "Rozstaw rur ogrzewania podłogowego przy pompie ciepła – 5, 10, 15 czy 20 cm?",
      "description": "Techniczny poradnik o rozstawie rur podłogówki przy pompie ciepła: moc podłogi, temperatura zasilania, długość pętli, przepływ, opory i kalkulator porównawczy.",
      "mainEntityOfPage": {
        "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#webpage"
      },
      "author": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "datePublished": "2025-03-03",
      "dateModified": "2026-08-22",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "proficiencyLevel": "Intermediate",
      "articleSection": [
        "Ogrzewanie podłogowe",
        "Pompy ciepła",
        "Projektowanie instalacji",
        "Hydraulika instalacji",
        "Efektywność energetyczna",
        "Normy techniczne"
      ],
      "keywords": "Rozstaw rur ogrzewania podłogowego przy pompie ciepła, jaki rozstaw rur do podłogówki przy pompie ciepła, rozstaw rur 10 czy 15 cm, rozstaw podłogówki co 20 cm, podłogówka co 5 cm, ile rury na m2, temperatura zasilania pompy ciepła, długość pętli podłogówki, przepływ podłogówki, opory hydrauliczne",
      "about": [
        {
          "@type": "Thing",
          "name": "Rozstaw rur ogrzewania podłogowego przy pompie ciepła"
        },
        {
          "@type": "Thing",
          "name": "Wodne ogrzewanie podłogowe"
        },
        {
          "@type": "Thing",
          "name": "Pompa ciepła"
        },
        {
          "@type": "Thing",
          "name": "Hydraulika instalacji grzewczych"
        }
      ],
      "mentions": [
        {
          "@type": "DefinedTerm",
          "name": "Rozstaw rur",
          "description": "Odległość osiowa między sąsiednimi przewodami ogrzewania podłogowego."
        },
        {
          "@type": "DefinedTerm",
          "name": "Projektowe obciążenie cieplne",
          "description": "Moc potrzebna do utrzymania wymaganej temperatury wewnętrznej w projektowych warunkach zewnętrznych."
        },
        {
          "@type": "DefinedTerm",
          "name": "Średnia logarytmiczna różnica temperatur",
          "description": "Różnica temperatur medium grzewczego względem pomieszczenia uwzględniająca temperaturę zasilania i powrotu."
        },
        {
          "@type": "Thing",
          "name": "EN 1264:2021"
        },
        {
          "@type": "Thing",
          "name": "EN 12831-1:2017"
        },
        {
          "@type": "Thing",
          "name": "ISO 11855-2:2021"
        },
        {
          "@type": "Thing",
          "name": "Równanie Darcy-Weisbacha"
        }
      ],
      "citation": [
        {
          "@type": "CreativeWork",
          "name": "DIN EN 1264-2:2021 – Floor heating: thermal output",
          "url": "https://www.dinmedia.de/en/standard/din-en-1264-2/332537063"
        },
        {
          "@type": "CreativeWork",
          "name": "DIN EN 1264-3:2021 – Dimensioning",
          "url": "https://www.dinmedia.de/en/standard/din-en-1264-3/332537135"
        },
        {
          "@type": "CreativeWork",
          "name": "ISO 11855-2:2021 – Determination of design heating and cooling capacity",
          "url": "https://www.iso.org/standard/74683.html"
        },
        {
          "@type": "CreativeWork",
          "name": "DIN EN 12831-1:2017 – Method for calculation of design heat load",
          "url": "https://www.dinmedia.de/en/standard/din-en-12831-1/261292587"
        },
        {
          "@type": "Report",
          "name": "2015 JRC Geothermal Energy Status Report",
          "url": "https://publications.jrc.ec.europa.eu/repository/bitstream/JRC99264/2015%20jrc%20geothermal%20energy%20status%20report_online.pdf"
        },
        {
          "@type": "CreativeWork",
          "name": "Head Loss in Pipes – University of Dayton",
          "url": "https://ecommons.udayton.edu/cgi/viewcontent.cgi?article=1013&context=cee_coursenotes"
        },
        {
          "@type": "WebPage",
          "name": "Thermophysical Properties of Fluid Systems – NIST",
          "url": "https://webbook.nist.gov/chemistry/fluid/"
        }
      ],
      "hasPart": [
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#calculator"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-selection-checklist"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-1"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-2"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-3"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-4"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-5"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-6"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-7"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-8"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-9"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-10"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-11"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-12"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-13"
        }
      ]
    },
    {
      "@type": [
        "WebPage",
        "FAQPage"
      ],
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#webpage",
      "url": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/",
      "name": "Rozstaw rur ogrzewania podłogowego przy pompie ciepła.",
      "description": "Porównanie rozstawów 5, 10, 15 i 20 cm: moc podłogi, temperatura wody, długość pętli, przepływ, opory i interaktywny przykład.",
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/#website"
      },
      "breadcrumb": {
        "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#breadcrumb"
      },
      "datePublished": "2025-03-03",
      "dateModified": "2026-08-22",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-1"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-2"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-3"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-4"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-5"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-6"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-7"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-8"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-9"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-10"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-11"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-12"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-13"
        }
      ],
      "potentialAction": {
        "@type": "ReadAction",
        "target": [
          "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/"
        ]
      }
    },
    {
      "@type": "SoftwareApplication",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#calculator",
      "name": "Porównywarka rozstawu rur ogrzewania podłogowego przy pompie ciepła",
      "description": "Interaktywny model porównujący rozstawy 5, 10, 15 i 20 cm pod względem wymaganej temperatury zasilania, długości rury, liczby pętli, przepływu i orientacyjnej straty ciśnienia.",
      "applicationCategory": "UtilitiesApplication",
      "applicationSubCategory": "Engineering calculator",
      "operatingSystem": "Web browser",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      },
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#article"
      },
      "featureList": [
        "Porównanie rozstawów 5, 10, 15 i 20 cm",
        "Orientacyjna temperatura zasilania",
        "Długość rury i liczba pętli",
        "Przepływ całkowity i przepływ pętli",
        "Orientacyjna strata ciśnienia rury 16×2 mm",
        "Wykres mocy podłogi",
        "Względny indeks warunków pracy pompy ciepła"
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
        "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
        "caption": "Robert Kucharski – projektant instalacji sanitarnych i specjalista HVAC"
      },
      "jobTitle": "Projektant instalacji sanitarnych i specjalista branży budowlano-instalacyjnej",
      "description": "Projektant instalacji sanitarnych, specjalista ogrzewania podłogowego, hydrauliki instalacji, obliczeń obciążenia cieplnego i systemów HVAC. Właściciel serwisów Projekt-Ogrzewania.pl, Remont.biz.pl i Sobir.pl.",
      "worksFor": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "affiliation": [
        {
          "@id": "https://projekt-ogrzewania.pl/#website"
        },
        {
          "@id": "https://remont.biz.pl/#website"
        },
        {
          "@id": "https://sobir.pl/#website"
        }
      ],
      "knowsAbout": [
        "HVAC",
        "ogrzewanie podłogowe",
        "pompy ciepła",
        "projektowanie instalacji sanitarnych",
        "hydraulika instalacji grzewczych",
        "obliczenia OZC",
        "EN 1264",
        "efektywność energetyczna"
      ],
      "sameAs": [
        "https://projekt-ogrzewania.pl/",
        "https://remont.biz.pl/",
        "https://sobir.pl/",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg",
        "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg"
      },
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/"
      ]
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt-Ogrzewania.pl",
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "WebSite",
      "@id": "https://remont.biz.pl/#website",
      "url": "https://remont.biz.pl/",
      "name": "Remont.biz.pl",
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "WebSite",
      "@id": "https://sobir.pl/#website",
      "url": "https://sobir.pl/",
      "name": "Sobir.pl",
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#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": "Rozstaw rur ogrzewania podłogowego przy pompie ciepła",
          "item": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/"
        }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-selection-checklist",
      "name": "Procedura doboru rozstawu rur ogrzewania podłogowego do pompy ciepła",
      "numberOfItems": 7,
      "itemListOrder": "https://schema.org/ItemListOrderAscending",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Obliczenie obciążenia cieplnego",
          "description": "Określenie projektowej straty ciepła każdego pomieszczenia."
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Aktywna powierzchnia grzewcza",
          "description": "Wyznaczenie powierzchni rzeczywiście dostępnej dla rur."
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Opór cieplny okładziny",
          "description": "Przyjęcie oporu konkretnego zestawu okładziny i podkładu."
        },
        {
          "@type": "ListItem",
          "position": 4,
          "name": "Porównanie wydajności rozstawów",
          "description": "Sprawdzenie 5, 10, 15 i 20 cm przy projektowej temperaturze wody."
        },
        {
          "@type": "ListItem",
          "position": 5,
          "name": "Temperatura powierzchni podłogi",
          "description": "Weryfikacja granicy komfortu i bezpieczeństwa okładziny."
        },
        {
          "@type": "ListItem",
          "position": 6,
          "name": "Podział na pętle",
          "description": "Dobór liczby obwodów, długości i średnicy rur."
        },
        {
          "@type": "ListItem",
          "position": 7,
          "name": "Bilans hydrauliczny",
          "description": "Obliczenie przepływów, oporów, punktu pracy pompy i nastaw rozdzielacza."
        }
      ]
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-1",
      "name": "Jaki rozstaw rur ogrzewania podłogowego jest najlepszy przy pompie ciepła?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Nie istnieje jeden najlepszy rozstaw dla wszystkich pomieszczeń. W wielu nowych domach stosuje się 10 lub 15 cm, ale ostateczny wybór powinien wynikać z obciążenia cieplnego, aktywnej powierzchni, oporu okładziny, temperatury wody i obliczeń hydraulicznych."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-2",
      "name": "Czy przy pompie ciepła rury zawsze trzeba układać co 10 cm?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Nie. Rozstaw 10 cm zwiększa wydajność przy niskiej temperaturze wody, lecz w pomieszczeniu o małej stracie ciepła poprawny może być również rozstaw 15 cm. Zastosowanie 10 cm bez obliczeń może niepotrzebnie zwiększyć liczbę pętli i rozdzielaczy."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-3",
      "name": "Czy rozstaw 15 cm będzie wystarczający dla pompy ciepła?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Może być wystarczający, jeżeli przy projektowej temperaturze zasilania podłoga pokrywa obciążenie pomieszczenia bez przekroczenia dopuszczalnej temperatury powierzchni. Sam fakt zastosowania pompy ciepła nie przesądza o wyborze 10 albo 15 cm."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-4",
      "name": "Kiedy można zastosować rozstaw rur co 20 cm?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Rozstaw 20 cm można rozważyć w pomieszczeniach o bardzo małym obciążeniu i korzystnej okładzinie, po potwierdzeniu wydajności. Trzeba również ocenić równomierność temperatury powierzchni i ewentualną konieczność podniesienia temperatury wody."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-5",
      "name": "Czy warto układać podłogówkę co 5 cm?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Rozstaw 5 cm jest rozwiązaniem specjalnym. Zwiększa zużycie rury do około 21 m/m² wraz z niewielkim zapasem, wymaga większej liczby krótkich pętli i kontroli promienia gięcia. Najczęściej wykorzystuje się go lokalnie, a nie na całej powierzchni domu."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-6",
      "name": "Jaki rozstaw rur zastosować pod panelami, a jaki pod płytkami?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Rodzaj okładziny jest tylko jednym z parametrów. Panele i podkład mają zwykle większy opór cieplny niż płytki, dlatego mogą wymagać gęstszego rozstawu lub wyższej temperatury wody. Nie można jednak przypisać rozstawu wyłącznie na podstawie nazwy materiału."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-7",
      "name": "Ile rury potrzeba na 1 m² podłogówki?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Orientacyjnie z zapasem geometrycznym 5% potrzeba około 21 m/m² przy rozstawie 5 cm, 10,5 m/m² przy 10 cm, 7 m/m² przy 15 cm oraz 5,25 m/m² przy 20 cm. Do wyniku należy dodać doprowadzenia do rozdzielacza."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-8",
      "name": "Jak rozstaw rur wpływa na temperaturę zasilania pompy ciepła?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Przy tej samej mocy i konstrukcji podłogi gęstszy rozstaw zwykle pozwala zastosować niższą średnią temperaturę wody. Dokładna różnica zależy od budowy systemu, okładziny, temperatury powrotu oraz wymaganej mocy jednostkowej."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-9",
      "name": "Czy mniejszy rozstaw rur zawsze podnosi COP pompy ciepła?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Nie bezpośrednio. Korzyść pojawia się wtedy, gdy gęstszy rozstaw umożliwia realne obniżenie temperatury zasilania. Rzeczywisty COP zależy również od temperatury źródła, konstrukcji urządzenia, modulacji, odszraniania i sterowania."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-10",
      "name": "Jaki rozstaw rur zastosować w łazience?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "W łazienkach często stosuje się 10 cm ze względu na wyższą temperaturę obliczeniową i małą aktywną powierzchnię. Jeżeli podłoga nie pokrywa obciążenia bez przekroczenia temperatury powierzchni, potrzebny może być dodatkowy emiter zamiast dalszego zagęszczania rur."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-11",
      "name": "Czy przy dużym przeszkleniu trzeba wykonać strefę brzegową co 5 cm?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Nie zawsze. Strefa brzegowa powinna wynikać z obliczonej straty przez przeszklenie i rozkładu temperatury w pomieszczeniu. W nowym, ciepłym oknie może wystarczyć standardowy rozstaw, natomiast przy dużym obciążeniu nawet 5 cm może nie zastąpić dodatkowego emitera."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-12",
      "name": "Jaka powinna być maksymalna długość pętli przy rurze 16×2 mm?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Nie ma jednej długości właściwej dla każdego układu. W praktyce często przyjmuje się około 80–100 m łącznie z doprowadzeniami, ale prawidłowy limit wynika z przepływu, średnicy wewnętrznej, oporu pętli, dostępnego ciśnienia i możliwości zrównoważenia instalacji."
      }
    },
    {
      "@type": "Question",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#rk-sp-faq-13",
      "name": "Czy można zastosować jeden rozstaw rur w całym domu?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Można, jeżeli obliczenia potwierdzą spełnienie wymagań wszystkich pomieszczeń. Najczęściej jednak łazienki, pomieszczenia narożne i strefy przy dużych przeszkleniach wymagają innego podejścia niż sypialnie lub komunikacja."
      }
    }
  ]
}
</script>

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

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

    var progress = root.querySelector(".rk-sp-progress");
    var areaInput = root.querySelector("#rk-sp-area");
    var areaOutput = root.querySelector("#rk-sp-area-out");
    var loadInput = root.querySelector("#rk-sp-load");
    var loadOutput = root.querySelector("#rk-sp-load-out");
    var floorInput = root.querySelector("#rk-sp-floor");
    var zoneInput = root.querySelector("#rk-sp-zone");
    var deltaInput = root.querySelector("#rk-sp-delta");
    var loopMaxInput = root.querySelector("#rk-sp-loop-max");
    var liveSummary = root.querySelector("#rk-sp-live-summary");
    var resultsHost = root.querySelector("#rk-sp-results");
    var chartHost = root.querySelector("#rk-sp-power-chart");
    var efficiencyHost = root.querySelector("#rk-sp-eff-list");

    var configs = [
      { pitch: 5, spacingResistance: 0.030, label: "specjalny" },
      { pitch: 10, spacingResistance: 0.045, label: "gęsty" },
      { pitch: 15, spacingResistance: 0.065, label: "pośredni" },
      { pitch: 20, spacingResistance: 0.090, label: "rzadki" }
    ];

    var chartSeries = [
      { supply: 30, color: "#28c9da" },
      { supply: 35, color: "#078fbe" },
      { supply: 40, color: "#ff7438" },
      { supply: 45, color: "#e33d35" }
    ];

    var number0 = new Intl.NumberFormat("pl-PL", { maximumFractionDigits: 0 });
    var number1 = new Intl.NumberFormat("pl-PL", { minimumFractionDigits: 1, maximumFractionDigits: 1 });

    function readState() {
      var zone = zoneInput.value.split("|").map(Number);
      return {
        area: Number(areaInput.value),
        load: Number(loadInput.value),
        floorResistance: Number(floorInput.value),
        roomTemperature: zone[0],
        maxFloorTemperature: zone[1],
        delta: Number(deltaInput.value),
        loopMax: Number(loopMaxInput.value)
      };
    }

    function logMeanDifference(supply, returnTemperature, roomTemperature) {
      var upper = supply - roomTemperature;
      var lower = returnTemperature - roomTemperature;
      if (upper <= 0 || lower <= 0) return 0;
      if (Math.abs(upper - lower) < 0.000001) return upper;
      return (upper - lower) / Math.log(upper / lower);
    }

    function heatFlux(config, supply, state) {
      var returnTemperature = supply - state.delta;
      var meanDifference = logMeanDifference(supply, returnTemperature, state.roomTemperature);
      if (!meanDifference) return 0;
      var surfaceResistance = 0.0926;
      var totalResistance = surfaceResistance + state.floorResistance + config.spacingResistance;
      return meanDifference / totalResistance;
    }

    function requiredSupply(config, state) {
      var low = state.roomTemperature + state.delta + 0.2;
      var high = 55;
      if (heatFlux(config, high, state) < state.load) return null;
      for (var i = 0; i < 60; i += 1) {
        var middle = (low + high) / 2;
        if (heatFlux(config, middle, state) >= state.load) high = middle;
        else low = middle;
      }
      return high;
    }

    function surfaceTemperatureForFlux(flux, roomTemperature) {
      if (flux <= 0) return roomTemperature;
      return roomTemperature + Math.pow(flux / 8.92, 1 / 1.1);
    }

    function surfaceFluxLimit(state) {
      var difference = state.maxFloorTemperature - state.roomTemperature;
      return difference > 0 ? 8.92 * Math.pow(difference, 1.1) : 0;
    }

    function pipeLength(config, state) {
      return state.area * (100 / config.pitch) * 1.05;
    }

    function hydraulicLoss(length, flowLitresPerHour) {
      if (length <= 0 || flowLitresPerHour <= 0) return 0;
      var diameter = 0.012;
      var density = 994;
      var viscosity = 0.000719;
      var roughness = 0.000007;
      var volumeFlow = flowLitresPerHour / 3600000;
      var sectionArea = Math.PI * diameter * diameter / 4;
      var velocity = volumeFlow / sectionArea;
      var reynolds = density * velocity * diameter / viscosity;
      var friction;

      if (reynolds < 2300) {
        friction = 64 / Math.max(reynolds, 1);
      } else {
        friction = 0.25 / Math.pow(Math.log10(roughness / (3.7 * diameter) + 5.74 / Math.pow(reynolds, 0.9)), 2);
      }

      return friction * (length / diameter) * (density * velocity * velocity / 2) / 1000 * 1.15;
    }

    function carnotIndicator(supply) {
      if (supply === null) return null;
      var sourceKelvin = 273.15;
      var condenserKelvin = 273.15 + supply + 5;
      return condenserKelvin / (condenserKelvin - sourceKelvin);
    }

    function calculate(config, state) {
      var demand = state.area * state.load;
      var length = pipeLength(config, state);
      var loops = Math.max(1, Math.ceil(length / state.loopMax));
      var averageLength = length / loops;
      var totalFlow = 0.86 * demand / state.delta;
      var flowPerLoop = totalFlow / loops;
      var pressureLoss = hydraulicLoss(averageLength, flowPerLoop);
      var supply = requiredSupply(config, state);
      var surfaceTemperature = surfaceTemperatureForFlux(state.load, state.roomTemperature);
      var limitFlux = surfaceFluxLimit(state);
      var status;

      if (state.load > limitFlux) {
        status = { className: "is-bad", text: "limit powierzchni" };
      } else if (supply === null) {
        status = { className: "is-bad", text: "poza zakresem" };
      } else if (supply <= 35) {
        status = { className: "is-good", text: "bardzo niska Tz" };
      } else if (supply <= 40) {
        status = { className: "is-warn", text: "wymaga weryfikacji" };
      } else {
        status = { className: "is-bad", text: "wysoka Tz" };
      }

      return {
        config: config,
        demand: demand,
        length: length,
        loops: loops,
        averageLength: averageLength,
        totalFlow: totalFlow,
        flowPerLoop: flowPerLoop,
        pressureLoss: pressureLoss,
        supply: supply,
        surfaceTemperature: surfaceTemperature,
        limitFlux: limitFlux,
        status: status,
        indicator: carnotIndicator(supply)
      };
    }

    function renderResults(state, calculations) {
      areaOutput.textContent = number0.format(state.area) + " m²";
      loadOutput.textContent = number0.format(state.load) + " W/m²";
      liveSummary.textContent = "Pomieszczenie " + number0.format(state.area) + " m² wymaga " + number0.format(state.area * state.load) + " W mocy grzewczej, czyli " + number0.format(state.load) + " W/m². Temperatura powierzchni wynikająca z tego strumienia to około " + number1.format(calculations[0].surfaceTemperature) + "°C.";

      resultsHost.innerHTML = calculations.map(function (result) {
        var supplyText = result.supply === null ? "> 55°C" : number1.format(result.supply) + "°C";
        return "" +
          "<article class=\"rk-sp-result\">" +
            "<div class=\"rk-sp-result-head\">" +
              "<span class=\"rk-sp-result-title\">Rozstaw " + result.config.pitch + " cm</span>" +
              "<span class=\"rk-sp-status " + result.status.className + "\">" + result.status.text + "</span>" +
            "</div>" +
            "<div class=\"rk-sp-result-values\">" +
              "<div class=\"rk-sp-result-value\"><span>Wymagana temperatura zasilania</span><b>" + supplyText + "</b></div>" +
              "<div class=\"rk-sp-result-value\"><span>Rura bez doprowadzeń</span><b>" + number0.format(result.length) + " m</b></div>" +
              "<div class=\"rk-sp-result-value\"><span>Liczba pętli</span><b>" + result.loops + "</b></div>" +
              "<div class=\"rk-sp-result-value\"><span>Przepływ całkowity</span><b>" + number0.format(result.totalFlow) + " l/h</b></div>" +
            "</div>" +
            "<div class=\"rk-sp-result-foot\">Średnia pętla: " + number1.format(result.averageLength) + " m · przepływ pętli: " + number0.format(result.flowPerLoop) + " l/h · orientacyjna strata rury: " + number1.format(result.pressureLoss) + " kPa.</div>" +
          "</article>";
      }).join("");
    }

    function renderEfficiency(calculations) {
      var valid = calculations.filter(function (result) { return result.indicator !== null; });
      var best = valid.length ? Math.max.apply(null, valid.map(function (result) { return result.indicator; })) : 1;

      efficiencyHost.innerHTML = calculations.map(function (result) {
        var index = result.indicator === null ? 0 : result.indicator / best * 100;
        var value = result.supply === null
          ? "wymagana Tz powyżej 55°C"
          : "Tz " + number1.format(result.supply) + "°C · indeks " + number0.format(index) + "%";
        return "" +
          "<div class=\"rk-sp-eff-row\">" +
            "<span class=\"rk-sp-eff-label\">" + result.config.pitch + " cm</span>" +
            "<div class=\"rk-sp-eff-track\" aria-hidden=\"true\"><div class=\"rk-sp-eff-bar\" style=\"width:" + Math.max(0, Math.min(100, index)) + "%\"></div></div>" +
            "<span class=\"rk-sp-eff-value\">" + value + "</span>" +
          "</div>";
      }).join("");
    }

    function renderPowerChart(state) {
      if (!chartHost) return;
      var width = Math.max(300, Math.round(chartHost.getBoundingClientRect().width || 700));
      var height = width < 470 ? 355 : 390;
      var margin = { top: 24, right: 16, bottom: 52, left: 48 };
      var plotWidth = width - margin.left - margin.right;
      var plotHeight = height - margin.top - margin.bottom;
      var limit = surfaceFluxLimit(state);
      var allValues = [limit];

      chartSeries.forEach(function (series) {
        configs.forEach(function (config) {
          allValues.push(heatFlux(config, series.supply, state));
        });
      });

      var maxValue = Math.max.apply(null, allValues.concat([80]));
      var yMax = Math.ceil(maxValue / 20) * 20;
      var x = function (index) {
        return margin.left + (configs.length === 1 ? plotWidth / 2 : index * plotWidth / (configs.length - 1));
      };
      var y = function (value) {
        return margin.top + plotHeight - value / yMax * plotHeight;
      };

      var grid = "";
      for (var tick = 0; tick <= 5; tick += 1) {
        var tickValue = yMax * tick / 5;
        var tickY = y(tickValue);
        grid += "<line x1=\"" + margin.left + "\" y1=\"" + tickY + "\" x2=\"" + (width - margin.right) + "\" y2=\"" + tickY + "\" stroke=\"#dce8ee\" stroke-width=\"1\"/>";
        grid += "<text x=\"" + (margin.left - 9) + "\" y=\"" + (tickY + 4) + "\" text-anchor=\"end\" fill=\"#687986\" font-size=\"11\">" + number0.format(tickValue) + "</text>";
      }

      var xLabels = configs.map(function (config, index) {
        return "<text x=\"" + x(index) + "\" y=\"" + (height - 18) + "\" text-anchor=\"middle\" fill=\"#465866\" font-size=\"12\" font-weight=\"800\">" + config.pitch + " cm</text>";
      }).join("");

      var seriesMarkup = chartSeries.map(function (series) {
        var points = configs.map(function (config, index) {
          return { x: x(index), y: y(heatFlux(config, series.supply, state)), value: heatFlux(config, series.supply, state) };
        });
        var path = points.map(function (point, index) {
          return (index === 0 ? "M" : "L") + point.x + " " + point.y;
        }).join(" ");
        var circles = points.map(function (point) {
          return "<circle cx=\"" + point.x + "\" cy=\"" + point.y + "\" r=\"4.5\" fill=\"#ffffff\" stroke=\"" + series.color + "\" stroke-width=\"3\"><title>" + series.supply + "°C, " + number1.format(point.value) + " W/m²</title></circle>";
        }).join("");
        return "<path d=\"" + path + "\" fill=\"none\" stroke=\"" + series.color + "\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>" + circles;
      }).join("");

      var limitY = y(limit);
      var limitMarkup = "<line x1=\"" + margin.left + "\" y1=\"" + limitY + "\" x2=\"" + (width - margin.right) + "\" y2=\"" + limitY + "\" stroke=\"#687986\" stroke-width=\"2\" stroke-dasharray=\"7 6\"/>" +
        "<text x=\"" + (width - margin.right) + "\" y=\"" + Math.max(13, limitY - 7) + "\" text-anchor=\"end\" fill=\"#465866\" font-size=\"11\" font-weight=\"800\">limit " + number0.format(limit) + " W/m²</text>";

      chartHost.innerHTML = "" +
        "<svg class=\"rk-sp-chart-svg\" viewBox=\"0 0 " + width + " " + height + "\" role=\"img\" aria-labelledby=\"rk-sp-chart-title rk-sp-chart-desc\">" +
          "<title id=\"rk-sp-chart-title\">Moc podłogi w zależności od rozstawu rur i temperatury zasilania</title>" +
          "<desc id=\"rk-sp-chart-desc\">Cztery linie przedstawiają orientacyjną moc dla temperatur zasilania 30, 35, 40 i 45 stopni Celsjusza przy rozstawach 5, 10, 15 i 20 centymetrów.</desc>" +
          "<text x=\"" + margin.left + "\" y=\"14\" fill=\"#465866\" font-size=\"11\" font-weight=\"800\">W/m²</text>" +
          grid + limitMarkup + seriesMarkup + xLabels +
        "</svg>";
    }

    function update() {
      var state = readState();
      var calculations = configs.map(function (config) { return calculate(config, state); });
      renderResults(state, calculations);
      renderEfficiency(calculations);
      renderPowerChart(state);
    }

    [areaInput, loadInput, floorInput, zoneInput, deltaInput, loopMaxInput].forEach(function (control) {
      control.addEventListener("input", update);
      control.addEventListener("change", update);
    });

    function updateProgress() {
      if (!progress) return;
      var rect = root.getBoundingClientRect();
      var total = root.offsetHeight + window.innerHeight;
      var current = window.innerHeight - rect.top;
      var ratio = Math.max(0, Math.min(1, current / total));
      progress.style.width = ratio * 100 + "%";
    }

    window.addEventListener("scroll", updateProgress, { passive: true });
    window.addEventListener("resize", updateProgress);

    if ("ResizeObserver" in window && chartHost) {
      var resizeObserver = new ResizeObserver(function () {
        renderPowerChart(readState());
      });
      resizeObserver.observe(chartHost);
    } else {
      window.addEventListener("resize", function () {
        renderPowerChart(readState());
      });
    }

    var authorTabs = Array.prototype.slice.call(root.querySelectorAll(".rk-sp-author-tab"));
    var authorPanels = Array.prototype.slice.call(root.querySelectorAll(".rk-sp-author-panel"));

    function activateAuthorTab(tab, shouldFocus) {
      authorTabs.forEach(function (item) {
        var selected = item === tab;
        item.setAttribute("aria-selected", selected ? "true" : "false");
        item.tabIndex = selected ? 0 : -1;
      });

      authorPanels.forEach(function (panel) {
        panel.hidden = panel.id !== tab.getAttribute("aria-controls");
      });

      if (shouldFocus) tab.focus();
    }

    authorTabs.forEach(function (tab, index) {
      tab.addEventListener("click", function () {
        activateAuthorTab(tab, false);
      });

      tab.addEventListener("keydown", function (event) {
        var nextIndex = index;
        if (event.key === "ArrowRight" || event.key === "ArrowDown") nextIndex = (index + 1) % authorTabs.length;
        else if (event.key === "ArrowLeft" || event.key === "ArrowUp") nextIndex = (index - 1 + authorTabs.length) % authorTabs.length;
        else if (event.key === "Home") nextIndex = 0;
        else if (event.key === "End") nextIndex = authorTabs.length - 1;
        else return;

        event.preventDefault();
        activateAuthorTab(authorTabs[nextIndex], true);
      });
    });

    update();
    updateProgress();
  }());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">Rozstaw rur ogrzewania podłogowego przy pompie ciepła.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
