<?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 pętle grzewcze - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/tag/petle-grzewcze/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/tag/petle-grzewcze/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Thu, 17 Sep 2026 18:58:39 +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 pętle grzewcze - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/petle-grzewcze/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Samodzielny montaż ogrzewania podłogowego – 5 błędów przed wylewką.</title>
		<link>https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 19 Apr 2026 19:27:33 +0000</pubDate>
				<category><![CDATA[Budowa domu]]></category>
		<category><![CDATA[Efektywne ogrzewanie]]></category>
		<category><![CDATA[Efektywność ogrzewania]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradnik inwestora]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Poradniki inwestora]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[Systemy ogrzewania]]></category>
		<category><![CDATA[Technika grzewcza]]></category>
		<category><![CDATA[Technika instalacyjna]]></category>
		<category><![CDATA[błędy wykonawcze]]></category>
		<category><![CDATA[budowa domu]]></category>
		<category><![CDATA[dylatacje]]></category>
		<category><![CDATA[hydraulika]]></category>
		<category><![CDATA[izolacja termiczna]]></category>
		<category><![CDATA[jastrych]]></category>
		<category><![CDATA[montaż samodzielny]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[pętle grzewcze]]></category>
		<category><![CDATA[porady techniczne]]></category>
		<category><![CDATA[próba szczelności]]></category>
		<category><![CDATA[projekt instalacji]]></category>
		<category><![CDATA[rura pex]]></category>
		<category><![CDATA[zebra termiczna]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=4245</guid>

					<description><![CDATA[<p>Planujesz samodzielny montaż instalacji grzewczej, by zaoszczędzić na robociźnie? Wiele osób, wpisując w wyszukiwarkę frazę „jak samemu zrobić ogrzewanie podłogowe”, skupia się wyłącznie na prostocie rozkładania rur PEX, zapominając o bezlitosnych prawach fizyki budowli i mechaniki płynów. Ten techniczny przewodnik obala popularne mity i analizuje pięć najpoważniejszych „grzechów głównych” popełnianych przez inwestorów. Dowiesz się z niego, dlaczego brak profesjonalnego projektu, zignorowanie dylatacji czy zbyt długie pętle grzewcze mogą doprowadzić do nieodwracalnych uszkodzeń wylewki i kosztownego remontu. Zamiast uczyć się na własnych błędach pod warstwą betonu, poznaj inżynierskie standardy, które zagwarantują Ci komfort cieplny i niskie rachunki przez kolejne trzydzieści lat.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/">Samodzielny montaż ogrzewania podłogowego – 5 błędów przed wylewką.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-diy-guide {
    --rk-navy: #0b2536;
    --rk-navy-2: #12394d;
    --rk-navy-3: #1b465b;
    --rk-cyan: #29c4d7;
    --rk-cyan-dark: #0786a6;
    --rk-cyan-soft: #def7fa;
    --rk-orange: #ff6846;
    --rk-orange-dark: #df4e30;
    --rk-yellow: #f2b526;
    --rk-green: #2fcda1;
    --rk-green-dark: #14775f;
    --rk-red: #d7504a;
    --rk-red-dark: #9f332e;
    --rk-ink: #10283a;
    --rk-copy: #3c5668;
    --rk-muted: #688091;
    --rk-line: #d3e2e8;
    --rk-bg: #f3f8fa;
    --rk-white: #ffffff;
    color: var(--rk-ink);
    font-family: Arial, Helvetica, sans-serif;
    line-height: 1.62;
    margin: 0 auto;
    max-width: 1360px;
    overflow-wrap: anywhere;
    width: 100%;
  }

  #rk-diy-guide,
  #rk-diy-guide * {
    box-sizing: border-box;
    min-width: 0;
  }

  #rk-diy-guide a {
    color: var(--rk-cyan-dark);
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }

  #rk-diy-guide a:hover,
  #rk-diy-guide a:focus-visible {
    color: var(--rk-orange-dark);
  }

  #rk-diy-guide button,
  #rk-diy-guide input,
  #rk-diy-guide select {
    font: inherit;
  }

  #rk-diy-guide button:focus-visible,
  #rk-diy-guide a:focus-visible,
  #rk-diy-guide summary:focus-visible,
  #rk-diy-guide select:focus-visible {
    outline: 3px solid rgba(41, 196, 215, 0.48);
    outline-offset: 3px;
  }

  #rk-diy-guide img {
    display: block;
    height: auto;
    max-width: 100%;
  }

  #rk-diy-guide .rk-diy-shell {
    background: var(--rk-white);
    border: 1px solid var(--rk-line);
    box-shadow: 0 22px 65px rgba(13, 41, 57, 0.12);
    overflow: hidden;
  }

  #rk-diy-guide .rk-diy-hero {
    background:
      radial-gradient(circle at 89% 111%, rgba(41, 196, 215, 0.24) 0, rgba(41, 196, 215, 0.24) 17%, transparent 17.2%),
      linear-gradient(120deg, #0b2536 0%, #143e52 61%, #0d6576 100%);
    color: #ffffff;
    overflow: hidden;
    padding: 62px 58px 56px;
    position: relative;
  }

  #rk-diy-guide .rk-diy-hero::before {
    background: var(--rk-orange);
    border-radius: 50%;
    box-shadow: 0 0 0 9px rgba(255, 104, 70, 0.14);
    content: "";
    height: 12px;
    left: 58px;
    position: absolute;
    top: 43px;
    width: 12px;
  }

  #rk-diy-guide .rk-diy-kicker {
    color: #6ce5ef;
    display: block;
    font-size: 0.77rem;
    font-weight: 900;
    letter-spacing: 0.13em;
    margin: 0 0 19px 28px;
    text-transform: uppercase;
  }

  #rk-diy-guide .rk-diy-hero-title,
  #rk-diy-guide .rk-diy-section-title,
  #rk-diy-guide .rk-diy-cta-title,
  #rk-diy-guide .rk-diy-author-title {
    font-family: Arial, Helvetica, sans-serif;
    font-weight: 900;
    letter-spacing: -0.035em;
    line-height: 1.06;
  }

  #rk-diy-guide .rk-diy-hero-title {
    font-size: clamp(2.35rem, 5.8vw, 5.15rem);
    margin: 0;
    max-width: 1190px;
  }

  #rk-diy-guide .rk-diy-hero-title span {
    color: #69e7f2;
  }

  #rk-diy-guide .rk-diy-hero-lead {
    color: #e3f0f4;
    font-size: clamp(1.08rem, 2vw, 1.42rem);
    line-height: 1.55;
    margin: 27px 0 0;
    max-width: 1110px;
  }

  #rk-diy-guide .rk-diy-hero-tags,
  #rk-diy-guide .rk-diy-meta,
  #rk-diy-guide .rk-diy-shortcuts {
    display: flex;
    flex-wrap: wrap;
  }

  #rk-diy-guide .rk-diy-hero-tags {
    gap: 10px;
    margin-top: 30px;
  }

  #rk-diy-guide .rk-diy-hero-tags span {
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.24);
    border-radius: 999px;
    color: #ffffff;
    font-size: 0.82rem;
    font-weight: 800;
    padding: 8px 14px;
  }

  #rk-diy-guide .rk-diy-meta {
    color: #c5d9df;
    font-size: 0.83rem;
    font-weight: 700;
    gap: 12px 24px;
    margin-top: 34px;
  }

  #rk-diy-guide .rk-diy-meta strong {
    color: #ffffff;
  }

  #rk-diy-guide .rk-diy-shortcuts {
    align-items: center;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-line);
    gap: 9px;
    padding: 22px 34px;
    position: static;
  }

  #rk-diy-guide .rk-diy-shortcuts-label {
    color: var(--rk-ink);
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    margin-right: 4px;
    text-transform: uppercase;
  }

  #rk-diy-guide .rk-diy-shortcuts a {
    background: #f1f6f8;
    border: 1px solid transparent;
    border-radius: 999px;
    color: var(--rk-ink);
    font-size: 0.76rem;
    font-weight: 800;
    line-height: 1.25;
    padding: 8px 12px;
    text-decoration: none;
  }

  #rk-diy-guide .rk-diy-shortcuts a:hover,
  #rk-diy-guide .rk-diy-shortcuts a:focus-visible {
    background: var(--rk-cyan-soft);
    border-color: #91dce5;
    color: #075f78;
  }

  #rk-diy-guide .rk-diy-section {
    padding: 64px 58px;
  }

  #rk-diy-guide .rk-diy-section + .rk-diy-section {
    border-top: 1px solid var(--rk-line);
  }

  #rk-diy-guide .rk-diy-section-soft {
    background: var(--rk-bg);
  }

  #rk-diy-guide .rk-diy-section-dark {
    background: var(--rk-navy);
    color: #ffffff;
  }

  #rk-diy-guide .rk-diy-eyebrow {
    color: var(--rk-cyan-dark);
    display: block;
    font-size: 0.75rem;
    font-weight: 900;
    letter-spacing: 0.12em;
    margin-bottom: 12px;
    text-transform: uppercase;
  }

  #rk-diy-guide .rk-diy-section-dark .rk-diy-eyebrow {
    color: #68e6ef;
  }

  #rk-diy-guide .rk-diy-section-title,
  #rk-diy-guide .rk-diy-author-title {
    color: var(--rk-ink);
    font-size: clamp(2rem, 4vw, 3.55rem);
    margin: 0;
    max-width: 1090px;
  }

  #rk-diy-guide .rk-diy-section-dark .rk-diy-section-title {
    color: #ffffff;
  }

  #rk-diy-guide .rk-diy-lead {
    color: var(--rk-copy);
    font-size: clamp(1.03rem, 1.7vw, 1.25rem);
    line-height: 1.7;
    margin: 22px 0 0;
    max-width: 1130px;
  }

  #rk-diy-guide .rk-diy-copy {
    color: var(--rk-copy);
    margin: 22px 0 0;
  }

  #rk-diy-guide .rk-diy-section-dark .rk-diy-lead,
  #rk-diy-guide .rk-diy-section-dark .rk-diy-copy {
    color: #c8dbe2;
  }

  #rk-diy-guide .rk-diy-copy strong,
  #rk-diy-guide .rk-diy-lead strong {
    color: var(--rk-ink);
  }

  #rk-diy-guide .rk-diy-section-dark .rk-diy-copy strong,
  #rk-diy-guide .rk-diy-section-dark .rk-diy-lead strong {
    color: #ffffff;
  }

  #rk-diy-guide .rk-diy-answer {
    background: linear-gradient(135deg, #e6fafd 0%, #f8fcfd 100%);
    border: 1px solid #9cdfe8;
    border-left: 7px solid var(--rk-cyan);
    border-radius: 18px;
    margin-top: 28px;
    padding: 27px 29px;
  }

  #rk-diy-guide .rk-diy-answer strong {
    color: var(--rk-ink);
    display: block;
    font-size: 1.22rem;
    line-height: 1.4;
  }

  #rk-diy-guide .rk-diy-answer p {
    color: var(--rk-copy);
    margin: 10px 0 0;
  }

  #rk-diy-guide .rk-diy-grid-2,
  #rk-diy-guide .rk-diy-grid-3,
  #rk-diy-guide .rk-diy-grid-4,
  #rk-diy-guide .rk-diy-source-grid,
  #rk-diy-guide .rk-diy-author-facts {
    display: grid;
    gap: 18px;
    margin-top: 30px;
  }

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

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

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

  #rk-diy-guide .rk-diy-card {
    background: #ffffff;
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    padding: 24px;
  }

  #rk-diy-guide .rk-diy-section-soft .rk-diy-card {
    background: rgba(255, 255, 255, 0.88);
  }

  #rk-diy-guide .rk-diy-card-number,
  #rk-diy-guide .rk-diy-icon {
    align-items: center;
    background: var(--rk-cyan-soft);
    border-radius: 10px;
    color: #076c85;
    display: inline-flex;
    font-size: 0.8rem;
    font-weight: 900;
    height: 36px;
    justify-content: center;
    margin-bottom: 14px;
    min-width: 36px;
    padding: 0 10px;
  }

  #rk-diy-guide .rk-diy-icon.is-stop {
    background: #ffe8e2;
    color: var(--rk-red-dark);
  }

  #rk-diy-guide .rk-diy-icon.is-check {
    background: #fff3d4;
    color: #79580d;
  }

  #rk-diy-guide .rk-diy-icon.is-ok {
    background: #e5f9f2;
    color: var(--rk-green-dark);
  }

  #rk-diy-guide .rk-diy-card h3,
  #rk-diy-guide .rk-diy-card h4 {
    color: var(--rk-ink);
    line-height: 1.3;
    margin: 0 0 9px;
  }

  #rk-diy-guide .rk-diy-card h3 {
    font-size: 1.12rem;
  }

  #rk-diy-guide .rk-diy-card h4 {
    font-size: 1rem;
  }

  #rk-diy-guide .rk-diy-card p {
    color: var(--rk-copy);
    margin: 0;
  }

  #rk-diy-guide .rk-diy-card p + p {
    margin-top: 10px;
  }

  #rk-diy-guide .rk-diy-note {
    background: #fff6e2;
    border-left: 6px solid var(--rk-yellow);
    border-radius: 14px;
    color: #5b4a1d;
    margin-top: 26px;
    padding: 18px 21px;
  }

  #rk-diy-guide .rk-diy-note p {
    margin: 0;
  }

  #rk-diy-guide .rk-diy-note-good {
    background: #e9faf5;
    border-left-color: var(--rk-green);
    color: #145e4d;
  }

  #rk-diy-guide .rk-diy-note-bad {
    background: #fff0ec;
    border-left-color: var(--rk-orange);
    color: #743425;
  }

  #rk-diy-guide .rk-diy-bullets {
    color: var(--rk-copy);
    margin: 20px 0 0;
    padding-left: 22px;
  }

  #rk-diy-guide .rk-diy-bullets li + li {
    margin-top: 9px;
  }

  #rk-diy-guide .rk-diy-table-wrap {
    margin-top: 30px;
    overflow-x: auto;
  }

  #rk-diy-guide table {
    border-collapse: separate;
    border-spacing: 0;
    min-width: 780px;
    width: 100%;
  }

  #rk-diy-guide th {
    background: var(--rk-navy);
    border-bottom: 1px solid #31576a;
    color: #ffffff;
    font-size: 0.77rem;
    letter-spacing: 0.04em;
    padding: 15px 16px;
    text-align: left;
    text-transform: uppercase;
  }

  #rk-diy-guide th:first-child {
    border-radius: 14px 0 0;
  }

  #rk-diy-guide th:last-child {
    border-radius: 0 14px 0 0;
  }

  #rk-diy-guide td {
    background: #ffffff;
    border-bottom: 1px solid var(--rk-line);
    color: var(--rk-copy);
    padding: 16px;
    vertical-align: top;
  }

  #rk-diy-guide tbody tr td:first-child {
    border-left: 1px solid var(--rk-line);
  }

  #rk-diy-guide tbody tr td:last-child {
    border-right: 1px solid var(--rk-line);
  }

  #rk-diy-guide tbody tr:last-child td:first-child {
    border-radius: 0 0 0 14px;
  }

  #rk-diy-guide tbody tr:last-child td:last-child {
    border-radius: 0 0 14px;
  }

  #rk-diy-guide td strong {
    color: var(--rk-ink);
  }

  #rk-diy-guide .rk-diy-stage-graphic {
    background: var(--rk-navy);
    border-radius: 22px;
    color: #ffffff;
    margin-top: 32px;
    padding: 28px;
  }

  #rk-diy-guide .rk-diy-stage-intro {
    color: #bdd5de;
    margin: 0 0 20px;
  }

  #rk-diy-guide .rk-diy-stage-tabs {
    display: grid;
    gap: 10px;
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }

  #rk-diy-guide .rk-diy-stage-tab {
    background: #173e51;
    border: 1px solid #356178;
    border-radius: 13px;
    color: #ffffff;
    cursor: pointer;
    font-weight: 900;
    line-height: 1.25;
    min-height: 64px;
    padding: 11px 12px;
  }

  #rk-diy-guide .rk-diy-stage-tab[aria-selected="true"] {
    background: var(--rk-cyan);
    border-color: var(--rk-cyan);
    color: #072838;
  }

  #rk-diy-guide .rk-diy-stage-panel {
    background: #17394b;
    border: 1px solid #356178;
    border-radius: 18px;
    margin-top: 18px;
    padding: 25px;
  }

  #rk-diy-guide .rk-diy-stage-label {
    color: #71e6ef;
    display: block;
    font-size: 0.73rem;
    font-weight: 900;
    letter-spacing: 0.1em;
    text-transform: uppercase;
  }

  #rk-diy-guide .rk-diy-stage-panel h3 {
    color: #ffffff;
    font-size: 1.55rem;
    line-height: 1.25;
    margin: 7px 0 8px;
  }

  #rk-diy-guide .rk-diy-stage-panel > p {
    color: #c8dce3;
    margin: 0;
  }

  #rk-diy-guide .rk-diy-stage-facts {
    display: grid;
    gap: 12px;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin-top: 20px;
  }

  #rk-diy-guide .rk-diy-stage-fact {
    background: rgba(255, 255, 255, 0.055);
    border: 1px solid rgba(255, 255, 255, 0.13);
    border-radius: 13px;
    padding: 16px;
  }

  #rk-diy-guide .rk-diy-stage-fact strong {
    color: #71e6ef;
    display: block;
    font-size: 0.72rem;
    letter-spacing: 0.07em;
    margin-bottom: 6px;
    text-transform: uppercase;
  }

  #rk-diy-guide .rk-diy-stage-fact span {
    color: #ffffff;
  }

  #rk-diy-guide .rk-diy-analyzer {
    background: #102f42;
    border: 1px solid #315a70;
    border-radius: 22px;
    margin-top: 32px;
    padding: 28px;
  }

  #rk-diy-guide .rk-diy-analyzer-head {
    border-bottom: 1px solid #315a70;
    margin-bottom: 25px;
    padding-bottom: 20px;
  }

  #rk-diy-guide .rk-diy-analyzer-head h3 {
    color: #ffffff;
    font-size: clamp(1.55rem, 3vw, 2.3rem);
    line-height: 1.2;
    margin: 0;
  }

  #rk-diy-guide .rk-diy-analyzer-head p {
    color: #bad3dc;
    margin: 9px 0 0;
  }

  #rk-diy-guide .rk-diy-analyzer-stage {
    background: #17394b;
    border: 1px solid #376177;
    border-radius: 17px;
    margin-top: 18px;
    padding: 22px;
  }

  #rk-diy-guide .rk-diy-analyzer-stage.is-optional {
    background: #153647;
  }

  #rk-diy-guide .rk-diy-stage-head {
    align-items: flex-start;
    display: flex;
    gap: 13px;
    margin-bottom: 18px;
  }

  #rk-diy-guide .rk-diy-stage-number {
    align-items: center;
    background: var(--rk-cyan);
    border-radius: 10px;
    color: #082c3c;
    display: inline-flex;
    flex: 0 0 38px;
    font-weight: 900;
    height: 38px;
    justify-content: center;
  }

  #rk-diy-guide .rk-diy-stage-head h4 {
    color: #ffffff;
    font-size: 1.15rem;
    line-height: 1.3;
    margin: 0;
  }

  #rk-diy-guide .rk-diy-stage-head p {
    color: #aecad5;
    font-size: 0.88rem;
    margin: 4px 0 0;
  }

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

  #rk-diy-guide .rk-diy-field {
    display: block;
  }

  #rk-diy-guide .rk-diy-field > span {
    color: #eaf6f8;
    display: block;
    font-size: 0.79rem;
    font-weight: 800;
    line-height: 1.35;
    margin-bottom: 7px;
  }

  #rk-diy-guide .rk-diy-field small {
    color: #9bbbc7;
    display: block;
    font-size: 0.72rem;
    line-height: 1.4;
    margin-top: 6px;
  }

  #rk-diy-guide .rk-diy-field select {
    appearance: auto;
    background: #ffffff;
    border: 1px solid #b8ccd5;
    border-radius: 10px;
    color: var(--rk-ink);
    min-height: 48px;
    padding: 10px 12px;
    width: 100%;
  }

  #rk-diy-guide .rk-diy-analyzer-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 11px;
    margin-top: 20px;
  }

  #rk-diy-guide .rk-diy-analyze-button,
  #rk-diy-guide .rk-diy-reset-button {
    border-radius: 11px;
    cursor: pointer;
    font-weight: 900;
    min-height: 48px;
    padding: 11px 18px;
  }

  #rk-diy-guide .rk-diy-analyze-button {
    background: var(--rk-orange);
    border: 1px solid var(--rk-orange);
    color: #ffffff;
  }

  #rk-diy-guide .rk-diy-analyze-button:hover {
    background: var(--rk-orange-dark);
  }

  #rk-diy-guide .rk-diy-reset-button {
    background: transparent;
    border: 1px solid #5d7c8d;
    color: #ffffff;
  }

  #rk-diy-guide .rk-diy-result {
    background: #ffffff;
    border-left: 7px solid var(--rk-yellow);
    border-radius: 17px;
    margin-top: 22px;
    padding: 24px;
  }

  #rk-diy-guide .rk-diy-result.is-good {
    border-left-color: var(--rk-green);
  }

  #rk-diy-guide .rk-diy-result.is-stop {
    border-left-color: var(--rk-orange);
  }

  #rk-diy-guide .rk-diy-result-status {
    color: var(--rk-ink) !important;
    font-size: clamp(1.35rem, 2.6vw, 2rem);
    font-weight: 900;
    line-height: 1.25;
    margin: 0;
  }

  #rk-diy-guide .rk-diy-result-intro {
    color: var(--rk-copy) !important;
    margin: 8px 0 0;
  }

  #rk-diy-guide .rk-diy-result-counts {
    display: grid;
    gap: 12px;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin-top: 19px;
  }

  #rk-diy-guide .rk-diy-result-count {
    background: #f1f7f9;
    border: 1px solid var(--rk-line);
    border-radius: 12px;
    padding: 14px;
  }

  #rk-diy-guide .rk-diy-result-count span {
    color: var(--rk-muted) !important;
    display: block;
    font-size: 0.71rem;
    font-weight: 900;
    letter-spacing: 0.06em;
    text-transform: uppercase;
  }

  #rk-diy-guide .rk-diy-result-count strong {
    color: var(--rk-ink) !important;
    display: block;
    font-size: 1.45rem;
    margin-top: 3px;
  }

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

  #rk-diy-guide .rk-diy-result-column {
    background: #f5f9fa;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    padding: 16px;
  }

  #rk-diy-guide .rk-diy-result-column h4 {
    color: var(--rk-ink) !important;
    font-size: 0.88rem;
    letter-spacing: 0.05em;
    margin: 0 0 10px;
    text-transform: uppercase;
  }

  #rk-diy-guide .rk-diy-result-column.is-ok h4 {
    color: var(--rk-green-dark) !important;
  }

  #rk-diy-guide .rk-diy-result-column.is-check h4 {
    color: #88600e !important;
  }

  #rk-diy-guide .rk-diy-result-column.is-stop h4 {
    color: #a83d2d !important;
  }

  #rk-diy-guide .rk-diy-result-column ul {
    color: var(--rk-copy) !important;
    font-size: 0.87rem;
    margin: 0;
    padding-left: 18px;
  }

  #rk-diy-guide .rk-diy-result-column li + li {
    margin-top: 7px;
  }

  #rk-diy-guide .rk-diy-disclaimer {
    color: #667d8c !important;
    font-size: 0.78rem;
    margin: 15px 0 0;
  }

  #rk-diy-guide .rk-diy-cta {
    background:
      radial-gradient(circle at 93% 120%, rgba(41, 196, 215, 0.22) 0, rgba(41, 196, 215, 0.22) 19%, transparent 19.2%),
      linear-gradient(125deg, #0b2536 0%, #153e51 62%, #0d6272 100%);
    border-radius: 21px;
    color: #ffffff;
    margin-top: 34px;
    overflow: hidden;
    padding: 36px;
  }

  #rk-diy-guide .rk-diy-cta-title {
    color: #ffffff;
    font-size: clamp(1.7rem, 3.3vw, 2.8rem);
    margin: 0;
    max-width: 990px;
  }

  #rk-diy-guide .rk-diy-cta p {
    color: #cee0e6;
    margin: 14px 0 0;
    max-width: 990px;
  }

  #rk-diy-guide .rk-diy-cta-button {
    background: var(--rk-orange);
    border-radius: 12px;
    box-shadow: 0 12px 25px rgba(255, 104, 70, 0.24);
    color: #ffffff;
    display: inline-block;
    font-weight: 900;
    margin-top: 22px;
    padding: 14px 20px;
    text-decoration: none;
  }

  #rk-diy-guide .rk-diy-cta-button:hover,
  #rk-diy-guide .rk-diy-cta-button:focus-visible {
    background: #ffffff;
    color: var(--rk-orange-dark);
  }

  #rk-diy-guide .rk-diy-link-disclosure {
    color: #a9c4ce;
    display: block;
    font-size: 0.75rem;
    margin-top: 12px;
  }

  #rk-diy-guide .rk-diy-final {
    background: linear-gradient(180deg, #f4fafb 0%, #ffffff 100%);
  }

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

  #rk-diy-guide .rk-diy-source-card {
    background: #f2f7f9;
    border: 1px solid #cfe0e7;
    border-radius: 15px;
    padding: 20px;
  }

  #rk-diy-guide .rk-diy-source-card a {
    color: var(--rk-cyan-dark);
    font-size: 1rem;
    font-weight: 900;
  }

  #rk-diy-guide .rk-diy-source-card p {
    color: var(--rk-copy);
    margin: 8px 0 0;
  }

  #rk-diy-guide .rk-diy-responsibility {
    background: #fff0eb;
    border-left: 6px solid var(--rk-orange);
    border-radius: 14px;
    color: #613427;
    margin-top: 26px;
    padding: 19px 22px;
  }

  #rk-diy-guide .rk-diy-responsibility p {
    margin: 0;
  }

  #rk-diy-guide .rk-diy-faq {
    display: grid;
    gap: 12px;
    margin-top: 30px;
  }

  #rk-diy-guide .rk-diy-faq details {
    background: #ffffff;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    overflow: hidden;
  }

  #rk-diy-guide .rk-diy-faq summary {
    color: var(--rk-ink);
    cursor: pointer;
    font-weight: 900;
    list-style: none;
    padding: 19px 52px 19px 20px;
    position: relative;
  }

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

  #rk-diy-guide .rk-diy-faq summary::after {
    color: var(--rk-cyan-dark);
    content: "+";
    font-size: 1.55rem;
    font-weight: 700;
    position: absolute;
    right: 20px;
    top: 12px;
  }

  #rk-diy-guide .rk-diy-faq details[open] summary::after {
    content: "−";
  }

  #rk-diy-guide .rk-diy-faq-answer {
    border-top: 1px solid var(--rk-line);
    color: var(--rk-copy);
    padding: 18px 20px;
  }

  #rk-diy-guide .rk-diy-faq-answer p {
    margin: 0;
  }

  #rk-diy-guide .rk-diy-author {
    background: #eef6f8;
    border-top: 1px solid var(--rk-line);
    padding: 64px 58px;
  }

  #rk-diy-guide .rk-diy-author-layout {
    background: #ffffff;
    border: 1px solid #cbdde5;
    border-radius: 21px;
    display: grid;
    grid-template-columns: 290px minmax(0, 1fr);
    overflow: hidden;
  }

  #rk-diy-guide .rk-diy-author-side {
    align-items: center;
    background: var(--rk-navy);
    color: #ffffff;
    display: flex;
    flex-direction: column;
    padding: 35px 25px;
    text-align: center;
  }

  #rk-diy-guide .rk-diy-author-photo {
    background: #ffffff;
    border: 6px solid rgba(255, 255, 255, 0.2);
    border-radius: 50%;
    overflow: hidden;
    width: 158px;
  }

  #rk-diy-guide .rk-diy-author-name {
    font-size: 1.25rem;
    font-weight: 900;
    margin-top: 20px;
  }

  #rk-diy-guide .rk-diy-author-name a {
    color: #ffffff;
    text-decoration: none;
  }

  #rk-diy-guide .rk-diy-author-role {
    color: #bcd2db;
    font-size: 0.82rem;
    margin: 8px 0 0;
  }

  #rk-diy-guide .rk-diy-author-social {
    display: flex;
    gap: 10px;
    margin-top: 21px;
  }

  #rk-diy-guide .rk-diy-author-social a {
    align-items: center;
    border: 1px solid #497185;
    border-radius: 50%;
    color: #d8e9ee;
    display: inline-flex;
    height: 42px;
    justify-content: center;
    text-decoration: none;
    width: 42px;
  }

  #rk-diy-guide .rk-diy-author-social a:hover {
    background: var(--rk-cyan);
    color: var(--rk-navy);
  }

  #rk-diy-guide .rk-diy-author-main {
    padding: 37px;
  }

  #rk-diy-guide .rk-diy-author-title {
    font-size: clamp(1.85rem, 3.5vw, 3rem);
  }

  #rk-diy-guide .rk-diy-author-quote {
    background: #f7fbfc;
    border: 1px solid #cfe0e7;
    border-left: 6px solid var(--rk-cyan);
    border-radius: 14px;
    color: var(--rk-ink);
    font-size: 1.04rem;
    font-style: italic;
    font-weight: 700;
    line-height: 1.7;
    margin-top: 24px;
    padding: 20px 22px;
  }

  #rk-diy-guide .rk-diy-author-main > p {
    color: var(--rk-copy);
    margin: 18px 0 0;
  }

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

  #rk-diy-guide .rk-diy-author-fact {
    background: #eef7f9;
    border: 1px solid #d2e4e9;
    border-radius: 13px;
    color: var(--rk-copy);
    font-size: 0.84rem;
    padding: 15px;
  }

  #rk-diy-guide .rk-diy-author-fact strong {
    color: var(--rk-cyan-dark);
    display: block;
    font-size: 0.73rem;
    letter-spacing: 0.06em;
    margin-bottom: 5px;
    text-transform: uppercase;
  }

  #rk-diy-guide .rk-diy-visually-hidden {
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    height: 1px;
    overflow: hidden;
    position: absolute;
    white-space: nowrap;
    width: 1px;
  }

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

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

    #rk-diy-guide .rk-diy-result-grid,
    #rk-diy-guide .rk-diy-result-counts {
      grid-template-columns: minmax(0, 1fr);
    }
  }

  @media (max-width: 820px) {
    #rk-diy-guide .rk-diy-hero,
    #rk-diy-guide .rk-diy-section,
    #rk-diy-guide .rk-diy-author {
      padding-left: 28px;
      padding-right: 28px;
    }

    #rk-diy-guide .rk-diy-hero::before {
      left: 28px;
    }

    #rk-diy-guide .rk-diy-shortcuts {
      padding-left: 22px;
      padding-right: 22px;
    }

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

    #rk-diy-guide .rk-diy-stage-facts {
      grid-template-columns: minmax(0, 1fr);
    }

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

  @media (max-width: 660px) {
    #rk-diy-guide .rk-diy-hero {
      padding-bottom: 42px;
      padding-top: 52px;
    }

    #rk-diy-guide .rk-diy-section,
    #rk-diy-guide .rk-diy-author {
      padding-bottom: 46px;
      padding-top: 46px;
    }

    #rk-diy-guide .rk-diy-grid-2,
    #rk-diy-guide .rk-diy-grid-3,
    #rk-diy-guide .rk-diy-grid-4,
    #rk-diy-guide .rk-diy-fields,
    #rk-diy-guide .rk-diy-source-grid,
    #rk-diy-guide .rk-diy-author-facts,
    #rk-diy-guide .rk-diy-stage-tabs {
      grid-template-columns: minmax(0, 1fr);
    }

    #rk-diy-guide .rk-diy-stage-graphic,
    #rk-diy-guide .rk-diy-analyzer,
    #rk-diy-guide .rk-diy-cta {
      border-radius: 17px;
      padding: 20px;
    }

    #rk-diy-guide .rk-diy-stage-panel,
    #rk-diy-guide .rk-diy-analyzer-stage,
    #rk-diy-guide .rk-diy-result {
      padding: 18px;
    }

    #rk-diy-guide .rk-diy-analyzer-actions {
      display: grid;
      grid-template-columns: minmax(0, 1fr);
    }

    #rk-diy-guide .rk-diy-analyze-button,
    #rk-diy-guide .rk-diy-reset-button,
    #rk-diy-guide .rk-diy-cta-button {
      text-align: center;
      width: 100%;
    }

    #rk-diy-guide .rk-diy-table-wrap {
      overflow: visible;
    }

    #rk-diy-guide table,
    #rk-diy-guide thead,
    #rk-diy-guide tbody,
    #rk-diy-guide tr,
    #rk-diy-guide th,
    #rk-diy-guide td {
      display: block;
      min-width: 0;
      width: 100%;
    }

    #rk-diy-guide thead {
      clip: rect(0 0 0 0);
      clip-path: inset(50%);
      height: 1px;
      overflow: hidden;
      position: absolute;
      white-space: nowrap;
      width: 1px;
    }

    #rk-diy-guide tbody {
      display: grid;
      gap: 14px;
    }

    #rk-diy-guide tbody tr {
      background: #ffffff;
      border: 1px solid var(--rk-line);
      border-radius: 14px;
      overflow: hidden;
    }

    #rk-diy-guide td,
    #rk-diy-guide tbody tr td:first-child,
    #rk-diy-guide tbody tr td:last-child {
      border: 0;
      border-bottom: 1px solid #e1ebef;
      border-radius: 0;
      padding: 13px 15px;
    }

    #rk-diy-guide td:last-child {
      border-bottom: 0;
    }

    #rk-diy-guide td::before {
      color: var(--rk-cyan-dark);
      content: attr(data-label);
      display: block;
      font-size: 0.69rem;
      font-weight: 900;
      letter-spacing: 0.07em;
      margin-bottom: 4px;
      text-transform: uppercase;
    }

    #rk-diy-guide .rk-diy-author-main {
      padding: 25px 20px;
    }
  }

  @media (max-width: 430px) {
    #rk-diy-guide .rk-diy-hero,
    #rk-diy-guide .rk-diy-section,
    #rk-diy-guide .rk-diy-author {
      padding-left: 18px;
      padding-right: 18px;
    }

    #rk-diy-guide .rk-diy-hero::before {
      left: 18px;
    }

    #rk-diy-guide .rk-diy-shortcuts {
      padding-left: 14px;
      padding-right: 14px;
    }

    #rk-diy-guide .rk-diy-shortcuts a {
      flex: 1 1 calc(50% - 9px);
      text-align: center;
    }

    #rk-diy-guide .rk-diy-shortcuts-label {
      flex: 1 0 100%;
    }

    #rk-diy-guide .rk-diy-hero-title {
      font-size: 2.2rem;
    }

    #rk-diy-guide .rk-diy-section-title {
      font-size: 1.88rem;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    #rk-diy-guide *,
    #rk-diy-guide *::before,
    #rk-diy-guide *::after {
      scroll-behavior: auto;
      transition-duration: 0.01ms;
    }
  }
</style>

<article id="rk-diy-guide" aria-labelledby="rk-diy-visual-title">
  <div class="rk-diy-shell">
    <header class="rk-diy-hero">
      <span class="rk-diy-kicker">Samodzielny montaż · kontrola przed wylewką 2026</span>
      <div class="rk-diy-hero-title" id="rk-diy-visual-title">Samodzielny montaż ogrzewania podłogowego: <span>5 błędów, których beton nie ukryje</span></div>
      <p class="rk-diy-hero-lead">Ułożenie rury to tylko widoczna część pracy. O tym, czy instalacja będzie grzała równomiernie i da się wyregulować, decydują także obliczenia, hydraulika pętli, dylatacje, próba szczelności oraz dokumentacja wykonana przed zakryciem podłogi.</p>
      <div class="rk-diy-hero-tags" aria-label="Zakres poradnika">
        <span>projekt i OZC</span>
        <span>pętle i hydraulika</span>
        <span>rury i dylatacje</span>
        <span>próba szczelności</span>
        <span>jastrych i dokumentacja</span>
      </div>
      <div class="rk-diy-meta">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: <strong>około 27 minut</strong></span>
        <span>Aktualizacja techniczna: <strong>17 września 2026 r.</strong></span>
      </div>
    </header>

    <nav class="rk-diy-shortcuts" aria-label="Na skróty — wszystkie sekcje artykułu">
      <span class="rk-diy-shortcuts-label">Na skróty</span>
      <a href="#rk-diy-answer">Szybka odpowiedź</a>
      <a href="#rk-diy-scope">Zakres prac</a>
      <a href="#rk-diy-return">Punkt bez powrotu</a>
      <a href="#rk-diy-analyzer-section">Analizator</a>
      <a href="#rk-diy-error1">Błąd 1</a>
      <a href="#rk-diy-error2">Błąd 2</a>
      <a href="#rk-diy-repair">Uszkodzona rura</a>
      <a href="#rk-diy-error3">Błąd 3</a>
      <a href="#rk-diy-error4">Błąd 4</a>
      <a href="#rk-diy-error5">Błąd 5</a>
      <a href="#rk-diy-hydraulics">Hydraulika</a>
      <a href="#rk-diy-pour-day">Dzień wylewki</a>
      <a href="#rk-diy-documentation">Dokumentacja</a>
      <a href="#rk-diy-after">Po wylewce</a>
      <a href="#rk-diy-myths">Fakty i mity</a>
      <a href="#rk-diy-checklist">Checklista</a>
      <a href="#rk-diy-summary">Podsumowanie</a>
      <a href="#rk-diy-sources">Źródła</a>
      <a href="#rk-diy-faq">FAQ</a>
      <a href="#rk-diy-author">Autor</a>
    </nav>

    <section class="rk-diy-section" id="rk-diy-answer">
      <span class="rk-diy-eyebrow">Odpowiedź w 60 sekund</span>
      <h2 class="rk-diy-section-title">Czy można samemu zrobić ogrzewanie podłogowe?</h2>
      <p class="rk-diy-lead"><strong>Można samodzielnie wykonać część prac montażowych, ale nie należy zastępować obliczeń zestawem uniwersalnych reguł.</strong> Inwestor może przygotować podłoże, rozłożyć izolację, zamocować rury i wykonać dokumentację, jeżeli pracuje według kompletnego projektu oraz zna wymagania zastosowanego systemu.</p>
      <div class="rk-diy-answer">
        <strong>Samodzielność dotyczy sposobu wykonania — nie zwalnia z projektu, kontroli ani odbioru.</strong>
        <p>Przed wylewką trzeba potwierdzić powierzchnie czynne, rozstawy, podział i długości pętli, wymagane przepływy, stan rur, dylatacje, wynik próby szczelności oraz technologię jastrychu. Po zakryciu nie da się już łatwo przełożyć rury ani odtworzyć jej rzeczywistej trasy.</p>
      </div>
      <div class="rk-diy-grid-3">
        <article class="rk-diy-card"><span class="rk-diy-icon is-ok">MOŻESZ</span><h3>Wykonać zgodnie z dokumentacją</h3><p>Przygotować warstwy, rozwinąć i zamocować rurę, oznaczyć pętle, zrobić zdjęcia oraz uczestniczyć w kontroli, jeżeli projekt i instrukcje są jednoznaczne.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-icon is-check">POLICZ</span><h3>Nie dobierać „na oko”</h3><p>Rozstaw, długość, przepływ, opór pętli, parametry wody i nastawy rozdzielacza muszą wynikać z obciążenia cieplnego oraz hydrauliki.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-icon is-stop">STOP</span><h3>Nie zakrywać wątpliwości</h3><p>Uszkodzona rura, niezgodny przebieg, brak próby lub nieustalone dylatacje są powodem do zatrzymania wylewki, a nie do liczenia na późniejszą regulację.</p></article>
      </div>
      <p class="rk-diy-copy">Punktem odniesienia powinien być <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">profesjonalny projekt ogrzewania podłogowego</a>, a nie sam schemat z katalogu lub metraż rury wyliczony z powierzchni domu.</p>
    </section>

    <section class="rk-diy-section rk-diy-section-soft" id="rk-diy-scope">
      <span class="rk-diy-eyebrow">Rozdziel wykonanie od projektowania</span>
      <h2 class="rk-diy-section-title">Co można wykonać samodzielnie, a co wymaga obliczeń?</h2>
      <p class="rk-diy-lead">Najbezpieczniejszy model to samodzielny montaż według policzonej dokumentacji. Projekt określa wynik, a wykonawca — także inwestor wykonujący instalację dla siebie — odpowiada za przeniesienie go na budowę i zgłoszenie każdej potrzebnej zmiany.</p>
      <div class="rk-diy-table-wrap">
        <table>
          <thead><tr><th>Decyzja lub czynność</th><th>Co jest potrzebne</th><th>Czy można wykonać samodzielnie?</th><th>Dowód przed wylewką</th></tr></thead>
          <tbody>
            <tr><td data-label="Czynność"><strong>Przygotowanie podłoża i izolacji</strong></td><td data-label="Podstawa">Projekt warstw, rzędne, parametry materiałów i koordynacja instalacji.</td><td data-label="Samodzielnie">Tak, po rozpoznaniu podłoża i technologii.</td><td data-label="Dowód">Oględziny stabilności, ciągłości warstw i zdjęcia.</td></tr>
            <tr><td data-label="Czynność"><strong>Obciążenie cieplne pomieszczeń</strong></td><td data-label="Podstawa">Dane przegród, wentylacji, temperatur i warunków projektowych.</td><td data-label="Samodzielnie">Tylko przy właściwej wiedzy i metodzie obliczeniowej.</td><td data-label="Dowód">Wyniki dla każdego pomieszczenia, nie tylko całego domu.</td></tr>
            <tr><td data-label="Czynność"><strong>Rozstaw i podział pętli</strong></td><td data-label="Podstawa">Moc, powierzchnia czynna, podłoga, parametry wody i hydraulika.</td><td data-label="Samodzielnie">Układanie tak; dobór bez obliczeń — nie.</td><td data-label="Dowód">Rzut z rozstawami, trasami, długościami i numerami pętli.</td></tr>
            <tr><td data-label="Czynność"><strong>Rozwijanie i mocowanie rury</strong></td><td data-label="Podstawa">Instrukcja systemu, promienie gięcia, rozstaw mocowań i projekt.</td><td data-label="Samodzielnie">Tak, przy użyciu właściwych narzędzi i kontroli.</td><td data-label="Dowód">Brak uszkodzeń, zgodna trasa i zdjęcia z miarą.</td></tr>
            <tr><td data-label="Czynność"><strong>Próba i odbiór</strong></td><td data-label="Podstawa">Ustalona procedura, odpowiednie przyrządy i protokół.</td><td data-label="Samodzielnie">Tylko jeżeli osoba potrafi bezpiecznie wykonać i ocenić próbę.</td><td data-label="Dowód">Podpisany protokół z warunkami, czasem i wynikiem.</td></tr>
          </tbody>
        </table>
      </div>
      <div class="rk-diy-note"><p><strong>Ważne:</strong> fraza „robię sam” nie oznacza, że każdy etap musi być wykonany bez konsultacji. Najbardziej opłaca się zachować dla siebie prace kontrolowalne, a zlecić te, których błędny wynik zostanie trwale zamknięty w podłodze.</p></div>
    </section>

    <section class="rk-diy-section" id="rk-diy-return">
      <span class="rk-diy-eyebrow">Granica między poprawką a remontem</span>
      <h2 class="rk-diy-section-title">Punkt bez powrotu: co znika pod jastrychem?</h2>
      <p class="rk-diy-lead">Wykonanie wylewki nie kończy całej instalacji, ale zamyka dostęp do jej najdłuższego elementu. Dlatego odbiór przed zalaniem powinien dotyczyć nie tylko szczelności, lecz wszystkich cech, których później nie da się potwierdzić bez odkrywek.</p>
      <div class="rk-diy-grid-3">
        <article class="rk-diy-card"><span class="rk-diy-card-number">PRZED</span><h3>Łatwe do poprawienia</h3><ul class="rk-diy-bullets"><li>przebieg i rozstaw rur,</li><li>mocowanie oraz łuki,</li><li>oznaczenia pętli,</li><li>osłony przejść,</li><li>lokalizacja dylatacji.</li></ul></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">PO</span><h3>Możliwe bez kucia</h3><ul class="rk-diy-bullets"><li>odpowietrzenie,</li><li>regulacja przepływów,</li><li>nastawy temperatur,</li><li>część usterek automatyki,</li><li>serwis elementów rozdzielacza.</li></ul></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">TRUDNE</span><h3>Zamknięte w podłodze</h3><ul class="rk-diy-bullets"><li>zbyt mała powierzchnia czynna,</li><li>zły rozstaw lub podział obwodów,</li><li>załamanie i uszkodzenie rury,</li><li>brak ochrony na dylatacji,</li><li>nieznana trasa przewodów.</li></ul></article>
      </div>
      <div class="rk-diy-note rk-diy-note-bad"><p><strong>Nie traktuj regulacji jako planu naprawczego.</strong> Rotametr może ograniczyć lub ustawić przepływ w dostępnych granicach, ale nie zmieni powierzchni grzejnej, średnicy rury, jej przebiegu ani konstrukcji podłogi.</p></div>
    </section>

    <section class="rk-diy-section rk-diy-section-dark" id="rk-diy-analyzer-section">
      <span class="rk-diy-eyebrow">Jedno narzędzie, które ma praktyczny sens</span>
      <h2 class="rk-diy-section-title">Analizator: czy można już wykonać wylewkę?</h2>
      <p class="rk-diy-lead">To audyt kompletności, a nie kalkulator jakości i nie protokół odbioru. Odpowiadaj na podstawie projektu, oględzin, pomiarów i dokumentów. Wynik nie przyznaje punktów — rozdziela fakty potwierdzone, braki do sprawdzenia oraz warunki blokujące zakrycie instalacji.</p>
      <div class="rk-diy-analyzer" id="rk-diy-analyzer">
        <div class="rk-diy-analyzer-head">
          <h3>Kontrola przed zamówieniem jastrychu</h3>
          <p>Jeżeli nie masz dowodu, wybierz „nie wiem”. Brak informacji o elemencie ukrywanym w podłodze jest wynikiem kontroli, a nie neutralną odpowiedzią.</p>
        </div>

        <div class="rk-diy-analyzer-stage">
          <div class="rk-diy-stage-head"><span class="rk-diy-stage-number">1</span><div><h4>Projekt cieplny i układ pętli</h4><p>Czy wiadomo, jaką moc ma przekazać każde pomieszczenie i jak instalacja ma to osiągnąć?</p></div></div>
          <div class="rk-diy-fields">
            <label class="rk-diy-field"><span>Obciążenie cieplne jest określone dla każdego pomieszczenia</span><select class="rk-diy-audit-field" data-severity="critical" data-label="Obciążenie cieplne pomieszczeń" data-action="Wstrzymaj wylewkę i ustal projektowe obciążenie cieplne każdego pomieszczenia."><option value="unknown">Nie wiem / brak dokumentu</option><option value="yes">Tak, mam wyniki</option><option value="no">Nie, przyjęto wartość orientacyjną</option></select></label>
            <label class="rk-diy-field"><span>Powierzchnie czynne i strefy bez rur są naniesione na rzut</span><select class="rk-diy-audit-field" data-severity="critical" data-label="Powierzchnie czynne" data-action="Porównaj rzeczywiste pola grzewcze ze stałą zabudową i wymaganą mocą przed ich zakryciem."><option value="unknown">Nie wiem / nie porównano</option><option value="yes">Tak, są zgodne z rzutem</option><option value="no">Nie, układ zmieniano na budowie</option></select></label>
            <label class="rk-diy-field"><span>Rzut określa rozstawy, podział, długości i numery pętli</span><select class="rk-diy-audit-field" data-severity="critical" data-label="Rzut wykonawczy pętli" data-action="Uzupełnij przebieg, rozstawy, podział i długości pętli oraz zweryfikuj je z wykonaniem."><option value="unknown">Brak kompletnego rzutu</option><option value="yes">Tak, wykonanie porównano</option><option value="no">Nie, pętle ułożono z głowy</option></select></label>
          </div>
        </div>

        <div class="rk-diy-analyzer-stage">
          <div class="rk-diy-stage-head"><span class="rk-diy-stage-number">2</span><div><h4>Hydraulika i identyfikacja obwodów</h4><p>Równe odstępy rur nie potwierdzają, że pompa i rozdzielacz zapewnią wymagane przepływy.</p></div></div>
          <div class="rk-diy-fields">
            <label class="rk-diy-field"><span>Typ i wymiar rury są zgodne z projektem oraz systemem połączeń</span><select class="rk-diy-audit-field" data-severity="critical" data-label="Zgodność rury" data-action="Potwierdź dokładny typ, wymiar, barierę tlenową i zgodność połączeń przed zakryciem."><option value="unknown">Nie wiem / brak karty</option><option value="yes">Tak, zgodność potwierdzona</option><option value="no">Nie, zastosowano zamiennik bez weryfikacji</option></select></label>
            <label class="rk-diy-field"><span>Przepływy i opory pętli policzono dla rzeczywistych długości</span><select class="rk-diy-audit-field" data-severity="critical" data-label="Hydraulika pętli" data-action="Policz wymagane przepływy i spadki ciśnienia dla rzeczywistych obwodów oraz medium."><option value="unknown">Nie wiem / niepoliczone</option><option value="yes">Tak, mam zestawienie</option><option value="no">Nie, oceniono tylko długość</option></select></label>
            <label class="rk-diy-field"><span>Każda pętla jest trwale opisana przy rozdzielaczu</span><select class="rk-diy-audit-field" data-severity="warning" data-label="Oznaczenia pętli" data-action="Oznacz zasilanie i powrót każdego obwodu oraz zapisz pomieszczenie i rzeczywistą długość."><option value="unknown">Nie wiem / opisy tymczasowe</option><option value="yes">Tak, oznaczenia są trwałe</option><option value="no">Nie, obwody nie są opisane</option></select></label>
          </div>
        </div>

        <div class="rk-diy-analyzer-stage">
          <div class="rk-diy-stage-head"><span class="rk-diy-stage-number">3</span><div><h4>Stan rur i przejścia</h4><p>Oględziny wykonuje się na całej dostępnej trasie, również przy nawrotach, dobiegach i mocowaniach.</p></div></div>
          <div class="rk-diy-fields">
            <label class="rk-diy-field"><span>Nie ma załamań, nacięć, spłaszczeń ani niezatwierdzonych napraw</span><select class="rk-diy-audit-field" data-severity="critical" data-label="Stan rur" data-action="Wstrzymaj zakrycie, oznacz każde uszkodzenie i zastosuj wyłącznie procedurę dopuszczoną dla konkretnego systemu."><option value="unknown">Nie sprawdzono całej trasy</option><option value="yes">Tak, stan potwierdzony</option><option value="no">Nie, jest uszkodzenie lub przypadkowa naprawa</option></select></label>
            <label class="rk-diy-field"><span>Rury są stabilnie zamocowane, a łuki spełniają wymagania systemu</span><select class="rk-diy-audit-field" data-severity="critical" data-label="Mocowanie i łuki" data-action="Popraw mocowania, nawroty i miejsca unoszenia się rury przed wykonaniem jastrychu."><option value="unknown">Nie sprawdzono</option><option value="yes">Tak, sprawdzono</option><option value="no">Nie, są luźne odcinki lub ciasne łuki</option></select></label>
            <label class="rk-diy-field"><span>Przejścia przez dylatacje i przegrody mają zaprojektowaną ochronę</span><select class="rk-diy-audit-field" data-severity="critical" data-label="Ochrona przejść" data-action="Ustal i wykonaj osłony rur w miejscach ruchu pól oraz przejść przez przegrody."><option value="unknown">Nie wiem / brak planu</option><option value="yes">Tak, wykonano zgodnie z planem</option><option value="no">Nie, rura przechodzi bez ochrony</option></select></label>
          </div>
        </div>

        <div class="rk-diy-analyzer-stage">
          <div class="rk-diy-stage-head"><span class="rk-diy-stage-number">4</span><div><h4>Dylatacje, taśma brzegowa i próba</h4><p>Technologia jastrychu musi być skoordynowana z instalacją przed przyjazdem ekipy posadzkarskiej.</p></div></div>
          <div class="rk-diy-fields">
            <label class="rk-diy-field"><span>Taśma brzegowa jest ciągła i nie została obcięta przedwcześnie</span><select class="rk-diy-audit-field" data-severity="critical" data-label="Taśma brzegowa" data-action="Przywróć ciągłe oddzielenie jastrychu od ścian, słupów i innych elementów zgodnie z technologią."><option value="unknown">Nie sprawdzono obwodu</option><option value="yes">Tak, ciągłość potwierdzona</option><option value="no">Nie, są przerwy lub za niski pas</option></select></label>
            <label class="rk-diy-field"><span>Plan pól i szczelin dylatacyjnych uzgodniono z jastrychem oraz okładziną</span><select class="rk-diy-audit-field" data-severity="critical" data-label="Plan dylatacji" data-action="Uzgodnij podział pól, szczeliny konstrukcyjne i ich przeniesienie do okładziny przed wylewką."><option value="unknown">Nie wiem / brak planu</option><option value="yes">Tak, plan jest uzgodniony</option><option value="no">Nie, decyzję zostawiono ekipie w dniu wylewki</option></select></label>
            <label class="rk-diy-field"><span>Próba szczelności została wykonana właściwą procedurą i zakończona wynikiem pozytywnym</span><select class="rk-diy-audit-field" data-severity="critical" data-label="Próba szczelności" data-action="Nie wykonuj jastrychu bez zakończonej próby, wyjaśnienia nieprawidłowości i protokołu."><option value="unknown">Brak protokołu / nie wiem</option><option value="yes">Tak, wynik pozytywny</option><option value="no">Nie wykonano lub wynik budzi wątpliwości</option></select></label>
          </div>
        </div>

        <div class="rk-diy-analyzer-stage">
          <div class="rk-diy-stage-head"><span class="rk-diy-stage-number">5</span><div><h4>Dokumentacja i technologia jastrychu</h4><p>Ostatnia kontrola tworzy punkt odniesienia dla posadzkarza, późniejszego wiercenia i uruchomienia.</p></div></div>
          <div class="rk-diy-fields">
            <label class="rk-diy-field"><span>Zdjęcia pokazują wszystkie pętle, przejścia i odległości od stałych punktów</span><select class="rk-diy-audit-field" data-severity="warning" data-label="Dokumentacja zdjęciowa" data-action="Wykonaj zdjęcia całej powierzchni z miarą i punktami odniesienia przed zakryciem rur."><option value="unknown">Zdjęcia niepełne</option><option value="yes">Tak, komplet wykonany</option><option value="no">Nie wykonano zdjęć</option></select></label>
            <label class="rk-diy-field"><span>Protokół zawiera pętle, długości, odstępstwa i wynik próby</span><select class="rk-diy-audit-field" data-severity="warning" data-label="Protokół i inwentaryzacja" data-action="Uzupełnij zestawienie obwodów, zaakceptowane zmiany, wynik próby i osoby odpowiedzialne."><option value="unknown">Dokument niekompletny</option><option value="yes">Tak, dokumentacja kompletna</option><option value="no">Nie ma protokołu</option></select></label>
            <label class="rk-diy-field"><span>Rodzaj, grubość, pielęgnacja i procedura wygrzewania jastrychu są uzgodnione</span><select class="rk-diy-audit-field" data-severity="warning" data-label="Technologia jastrychu" data-action="Uzgodnij z wykonawcą jastrychu warunki ułożenia, pielęgnacji, uruchomienia i pomiaru wilgotności."><option value="unknown">Nie ustalono</option><option value="yes">Tak, mam pisemne wytyczne</option><option value="no">Nie, plan ma powstać później</option></select></label>
          </div>
        </div>

        <div class="rk-diy-analyzer-actions">
          <button class="rk-diy-analyze-button" id="rk-diy-run" type="button">Sprawdź gotowość do wylewki</button>
          <button class="rk-diy-reset-button" id="rk-diy-reset" type="button">Wyczyść odpowiedzi</button>
        </div>
        <div class="rk-diy-result" id="rk-diy-result" aria-live="polite">
          <p class="rk-diy-result-status" id="rk-diy-result-status">Uzupełnij 15 punktów na podstawie rzeczywistego wykonania</p>
          <p class="rk-diy-result-intro" id="rk-diy-result-intro">Wynik rozdzieli informacje potwierdzone, wymagające uzupełnienia i blokujące zakrycie instalacji.</p>
          <div class="rk-diy-result-counts" aria-label="Podsumowanie analizy">
            <div class="rk-diy-result-count"><span>Potwierdzone</span><strong id="rk-diy-ok-count">0</strong></div>
            <div class="rk-diy-result-count"><span>Do sprawdzenia</span><strong id="rk-diy-check-count">15</strong></div>
            <div class="rk-diy-result-count"><span>Krytyczne</span><strong id="rk-diy-stop-count">0</strong></div>
          </div>
          <div class="rk-diy-result-grid">
            <div class="rk-diy-result-column is-ok"><h4>Potwierdzone</h4><ul id="rk-diy-ok-list"><li>Jeszcze brak ocenionych danych.</li></ul></div>
            <div class="rk-diy-result-column is-check"><h4>Do sprawdzenia</h4><ul id="rk-diy-check-list"><li>Uzupełnij formularz na podstawie projektu, oględzin i protokołów.</li></ul></div>
            <div class="rk-diy-result-column is-stop"><h4>Wstrzymaj wylewkę</h4><ul id="rk-diy-stop-list"><li>Brak oceny nie oznacza gotowości do zakrycia rur.</li></ul></div>
          </div>
          <p class="rk-diy-disclaimer">Analizator jest edukacyjną listą kontrolną. Nie zastępuje projektu, instrukcji zastosowanego systemu, procedury próby, odbioru instalacji ani oceny technologii jastrychu.</p>
        </div>
      </div>

      <aside class="rk-diy-cta" aria-label="Weryfikacja projektu przed wykonaniem wylewki">
        <div class="rk-diy-cta-title">Rury są już rozłożone? Zanim zamówisz wylewkę, porównaj wykonanie z obliczeniami</div>
        <p>Projekt pozwala sprawdzić powierzchnie czynne, rozstawy, długości pętli, wymagane przepływy, spadki ciśnienia i nastawy rozdzielacza, dopóki instalacja pozostaje dostępna i można jeszcze skorygować jej przebieg.</p>
        <a class="rk-diy-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt i zweryfikuj układ przed wylewką</a>
        <small class="rk-diy-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </aside>
    </section>

    <section class="rk-diy-section" id="rk-diy-error1">
      <span class="rk-diy-eyebrow">Błąd 1 · montaż „na oko”</span>
      <h2 class="rk-diy-section-title">Układanie rur bez projektu cieplnego i hydraulicznego</h2>
      <p class="rk-diy-lead">Najbardziej niebezpieczny skrót zaczyna się od założenia, że jeden rozstaw i jedna maksymalna długość pętli pasują do każdego pomieszczenia. W rzeczywistości łazienka, salon z przeszkleniami i sypialnia mogą mieć inne obciążenie, inną powierzchnię czynną oraz inną okładzinę.</p>
      <div class="rk-diy-grid-3">
        <article class="rk-diy-card"><span class="rk-diy-card-number">1</span><h3>Brak mocy dla pomieszczeń</h3><p>Wskaźnik W/m² dla całego domu nie pokazuje, gdzie wystąpi największe obciążenie. Potrzebne jest <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne</a> przypisane do konkretnych pomieszczeń.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">2</span><h3>Rozstaw z przyzwyczajenia</h3><p>Odstęp rur wynika z wymaganej mocy, parametrów wody, konstrukcji podłogi i ograniczeń temperatury powierzchni, a nie z samego rodzaju źródła ciepła.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">3</span><h3>Metraż bez podziału obwodów</h3><p>Orientacyjna ilość rury nie wyznacza liczby pętli, ich dobiegów, wymaganych przepływów ani oporu krytycznej drogi.</p></article>
      </div>
      <p class="rk-diy-copy">Dylemat <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstaw rur co 10 czy 15 cm</a> należy rozstrzygać na podstawie warunków danego pola grzewczego. Gęściej nie zawsze znaczy lepiej: rośnie metraż, liczba obwodów i koszt, a ostateczny efekt nadal ogranicza podłoga oraz parametry wody.</p>
      <div class="rk-diy-note rk-diy-note-bad"><p><strong>Nie używaj tabeli „rozstaw = moc” bez warunków.</strong> Wydajność zależy od różnicy temperatur, budowy podłogi, położenia rury i oporu okładziny. Ta sama geometria nie daje jednej stałej mocy w każdym domu.</p></div>
    </section>

    <section class="rk-diy-section rk-diy-section-soft" id="rk-diy-error2">
      <span class="rk-diy-eyebrow">Błąd 2 · estetyka zamiast kontroli</span>
      <h2 class="rk-diy-section-title">Niewłaściwe pętle, mocowanie i uszkodzenia rur</h2>
      <p class="rk-diy-lead">Równo ułożony ślimak może mieć niezgodną długość, zbyt ciasny nawrót albo uszkodzoną warstwę zewnętrzną. Odbiór nie powinien kończyć się na zdjęciu całego pomieszczenia — trzeba obejrzeć newralgiczne miejsca z bliska.</p>
      <div class="rk-diy-grid-4">
        <article class="rk-diy-card"><span class="rk-diy-card-number">A</span><h3>Rozwijanie kręgu</h3><p>Użyj rozwijaka i prowadź rurę bez skręcania osiowego. Nie ciągnij jej po ostrych krawędziach, zbrojeniu ani zabrudzonym podłożu.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">B</span><h3>Promień gięcia</h3><p>Wartość dopuszczalna zależy od konkretnego wyrobu, temperatury montażu i narzędzia. Nie przyjmuj uniwersalnej wielokrotności bez dokumentacji.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">C</span><h3>Mocowanie</h3><p>Rura ma pozostać w zaprojektowanym położeniu podczas chodzenia i wykonywania jastrychu, bez punktowego zgniatania oraz unoszenia łuków.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">D</span><h3>Dobiegi</h3><p>Odcinki od rozdzielacza do pola zwiększają długość i opór. Ich skupienie może też zmienić lokalną emisję ciepła i wymagać ochrony.</p></article>
      </div>
      <div class="rk-diy-note"><p><strong>Kolor rury niczego nie rozstrzyga.</strong> Przed montażem sprawdź dokładne oznaczenie, wymiar, klasę zastosowania, barierę ograniczającą przenikanie tlenu, zgodne złączki oraz instrukcję transportu i gięcia.</p></div>
    </section>

    <section class="rk-diy-section" id="rk-diy-repair">
      <span class="rk-diy-eyebrow">Nie improwizuj z elementem ukrywanym na dekady</span>
      <h2 class="rk-diy-section-title">Co zrobić z załamaną lub uszkodzoną rurą?</h2>
      <p class="rk-diy-lead">Nie istnieje jedna metoda naprawy właściwa dla każdego PE-X, PE-RT i przewodu wielowarstwowego. Sposób postępowania musi wynikać z dokumentacji dokładnego systemu. Podgrzewanie, prostowanie lub zakładanie przypadkowej złączki na podstawie filmu nie potwierdza trwałości naprawy.</p>
      <div class="rk-diy-grid-3">
        <article class="rk-diy-card"><span class="rk-diy-icon is-stop">1</span><h3>Zatrzymaj pracę</h3><p>Nie zakrywaj miejsca i nie próbuj ukryć śladu. Oznacz położenie, zrób zdjęcie oraz zapisz typ rury i charakter uszkodzenia.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-icon is-check">2</span><h3>Sprawdź procedurę systemu</h3><p>Ustal, czy wyrób dopuszcza przywrócenie kształtu, wycięcie odcinka, wymianę całej pętli albo konkretną naprawę systemową.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-icon is-ok">3</span><h3>Zweryfikuj i udokumentuj</h3><p>Po zaakceptowanej czynności wykonaj ponowną kontrolę i próbę. Miejsce nanieś na rzut powykonawczy wraz z użytymi elementami.</p></article>
      </div>
      <p class="rk-diy-copy"><strong>Celem pozostaje pętla z jednego odcinka bez ukrytych połączeń.</strong> Gdy naprawa pod jastrychem jest konieczna i dopuszczona, powinna być dostępna w dokumentacji systemu, wykonana właściwymi narzędziami, sprawdzona oraz trwale zlokalizowana.</p>
    </section>

    <section class="rk-diy-section rk-diy-section-soft" id="rk-diy-error3">
      <span class="rk-diy-eyebrow">Błąd 3 · manometr bez procedury</span>
      <h2 class="rk-diy-section-title">Brak poprawnie udokumentowanej próby szczelności</h2>
      <p class="rk-diy-lead">Zdjęcie wskazówki manometru nie jest pełnym protokołem. Wynik trzeba interpretować razem z medium, temperaturą, czasem, ciśnieniem początkowym i końcowym, konfiguracją instalacji oraz wymaganiami przyjętej procedury.</p>
      <div class="rk-diy-table-wrap">
        <table>
          <thead><tr><th>Element protokołu</th><th>Dlaczego jest potrzebny</th><th>Czego nie wolno zakładać</th></tr></thead>
          <tbody>
            <tr><td data-label="Element"><strong>Identyfikacja instalacji</strong></td><td data-label="Znaczenie">Łączy wynik z budynkiem, rozdzielaczem, zakresem i datą próby.</td><td data-label="Nie zakładaj">Że samo zdjęcie bez opisu będzie czytelne po latach.</td></tr>
            <tr><td data-label="Element"><strong>Medium i warunki</strong></td><td data-label="Znaczenie">Zmiany temperatury i właściwości medium wpływają na wskazania.</td><td data-label="Nie zakładaj">Że każda zmiana wskazówki oznacza przeciek albo że każdy stabilny odczyt potwierdza całość.</td></tr>
            <tr><td data-label="Element"><strong>Ciśnienie i czas</strong></td><td data-label="Znaczenie">Muszą odpowiadać projektowi, dokumentacji elementów i przyjętej procedurze.</td><td data-label="Nie zakładaj">Uniwersalnego „6 bar przez 24 godziny” dla wszystkich systemów.</td></tr>
            <tr><td data-label="Element"><strong>Oględziny</strong></td><td data-label="Znaczenie">Pozwalają sprawdzić dostępne połączenia, rury i armaturę podczas próby.</td><td data-label="Nie zakładaj">Że manometr zastępuje kontrolę całej dostępnej instalacji.</td></tr>
            <tr><td data-label="Element"><strong>Wynik i podpisy</strong></td><td data-label="Znaczenie">Zapisują ocenę, uwagi, odstępstwa i odpowiedzialność uczestników.</td><td data-label="Nie zakładaj">Że brak zauważonego wycieku jest automatycznie formalnym odbiorem.</td></tr>
          </tbody>
        </table>
      </div>
      <p class="rk-diy-copy">Szczegółowy zakres czynności omawia poradnik o <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/">próbie szczelności ogrzewania podłogowego</a>. Stan instalacji podczas wykonywania jastrychu również należy ustalić w procedurze — ciśnienie ma przede wszystkim umożliwić wykrycie uszkodzenia, a nie „usztywniać” rurę czy chronić nieistniejące połączenia w polu.</p>
    </section>

    <section class="rk-diy-section" id="rk-diy-error4">
      <span class="rk-diy-eyebrow">Błąd 4 · plan pól dopiero przy pompie</span>
      <h2 class="rk-diy-section-title">Dylatacje, taśma brzegowa i przejścia rur „na później”</h2>
      <p class="rk-diy-lead">Rura, jastrych, ściany i okładzina pracują w jednym układzie. Podział pól nie powinien powstać spontanicznie w dniu wylewki, bo musi uwzględniać geometrię pomieszczeń, istniejące szczeliny konstrukcyjne, przewężenia, progi i późniejsze wykończenie.</p>
      <div class="rk-diy-grid-3">
        <article class="rk-diy-card"><span class="rk-diy-card-number">OBWÓD</span><h3>Taśma brzegowa</h3><p>Oddziela jastrych od ścian, słupów i innych elementów. Musi tworzyć ciągłą barierę i zachować odpowiednią wysokość do zakończenia prac posadzkowych.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">POLE</span><h3>Szczeliny i podział</h3><p>Nie ma jednej powierzchni lub długości boku właściwej dla każdego jastrychu. Kryteria zależą od materiału, kształtu, grubości i technologii wykonawcy.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">PRZEJŚCIE</span><h3>Rury przez szczeliny</h3><p>Przejścia ogranicza się i chroni tak, aby ruch sąsiednich pól nie działał bezpośrednio na przewód. Rodzaj oraz długość osłony wynikają z rozwiązania projektowego.</p></article>
      </div>
      <p class="rk-diy-copy">Więcej przykładów i zasad koordynacji opisuje artykuł o <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">izolacji brzegowej i dylatacjach</a>. Plan szczelin trzeba też przekazać wykonawcy okładziny, ponieważ zachowanie jastrychu i wykończenia nie są od siebie niezależne.</p>
    </section>

    <section class="rk-diy-section rk-diy-section-soft" id="rk-diy-error5">
      <span class="rk-diy-eyebrow">Błąd 5 · warstwy traktowane osobno</span>
      <h2 class="rk-diy-section-title">Zła izolacja, przypadkowy jastrych i zbyt wczesne uruchomienie</h2>
      <p class="rk-diy-lead">Podłogówka nie jest samą rurą. Izolacja, podłoże, jastrych, okładzina i sposób uruchomienia wpływają na straty w dół, trwałość podłogi, bezwładność oraz osiągalną moc.</p>
      <div class="rk-diy-grid-4">
        <article class="rk-diy-card"><span class="rk-diy-card-number">1</span><h3>Izolacja bez obliczeń</h3><p>Grubość w centymetrach nie wystarcza. Liczą się przewodność materiału, układ warstw, mostki, warunki pod przegrodą i wytrzymałość mechaniczna.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">2</span><h3>Niestabilne podparcie</h3><p>Szczeliny, kołyszące się płyty i instalacje wciśnięte przypadkowo pod izolację mogą tworzyć miejsca nierównomiernego podparcia jastrychu.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">3</span><h3>Jastrych „jak zawsze”</h3><p>Rodzaj, grubość, zbrojenie, dodatki, pola, pielęgnacja i dopuszczenie do ogrzewania muszą tworzyć jedną technologię, a nie zestaw osobnych porad.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">4</span><h3>Grzanie jako suszarka</h3><p>Nie uruchamiaj instalacji przypadkową temperaturą, aby przyspieszyć prace. Wygrzewanie i pomiar wilgotności wykonuje się według uzgodnionej procedury.</p></article>
      </div>
      <p class="rk-diy-copy">Warstwy izolacyjne szerzej omawia poradnik <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">ile styropianu pod ogrzewanie podłogowe</a>, a wymagania posadzki — <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">kompletny przewodnik po wylewce na podłogówkę</a>.</p>
    </section>

    <section class="rk-diy-section" id="rk-diy-hydraulics">
      <span class="rk-diy-eyebrow">Długość jest jednym z parametrów</span>
      <h2 class="rk-diy-section-title">Dlaczego długość pętli nie wystarcza do oceny hydrauliki?</h2>
      <p class="rk-diy-lead">Dwie pętle o tej samej długości mogą wymagać innych przepływów, a dwie o różnych długościach mogą być poprawnie zrównoważone. Ocena wymaga połączenia mocy, temperatur, geometrii rury, medium i dostępnego ciśnienia.</p>
      <div class="rk-diy-grid-4">
        <article class="rk-diy-card"><span class="rk-diy-card-number">Q</span><h3>Moc pętli</h3><p>Im więcej ciepła ma przenieść obwód przy przyjętej różnicy temperatur, tym większy przepływ może być potrzebny.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">dᵢ</span><h3>Średnica wewnętrzna</h3><p>Ten sam wymiar zewnętrzny nie zawsze oznacza identyczne światło i charakterystykę hydrauliczną produktu.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">L</span><h3>Cała droga</h3><p>Liczy się pętla wraz z dobiegami, przyłączami i elementami miejscowymi — od belki zasilającej do powrotnej.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">Δp</span><h3>Dostępny napór</h3><p>Pompa ma obsłużyć przepływ całego układu i opór drogi krytycznej, a rozdzielacz musi umożliwić regulację pozostałych obwodów.</p></article>
      </div>
      <div class="rk-diy-note"><p><strong>Około 100 m dla typowej rury 16 × 2 mm może być praktycznym pułapem roboczym, ale nie jest uniwersalnym limitem normowym.</strong> Dopuszczalna długość może być mniejsza lub inna zależnie od przepływu, światła rury, medium i założeń regulacji.</p></div>
      <p class="rk-diy-copy">Zobacz osobne wyjaśnienie <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalnej długości pętli</a> oraz skutków, jakie może powodować <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">za długa pętla podłogówki</a>.</p>
    </section>

    <section class="rk-diy-section rk-diy-section-soft" id="rk-diy-pour-day">
      <span class="rk-diy-eyebrow">Ostatnie godziny pełnego dostępu</span>
      <h2 class="rk-diy-section-title">Dzień wykonywania jastrychu: plan kontroli</h2>
      <p class="rk-diy-lead">W dniu wylewki nie powinny powstawać nowe decyzje projektowe. Celem jest ochrona wcześniej odebranej instalacji, kontrola uzgodnionych warunków i szybka reakcja, jeżeli podczas robót wydarzy się coś nieprzewidzianego.</p>
      <div class="rk-diy-grid-3">
        <article class="rk-diy-card"><span class="rk-diy-card-number">PRZED</span><h3>Odbiór i przekazanie</h3><ul class="rk-diy-bullets"><li>porównaj trasy z rzutem,</li><li>sprawdź wynik próby,</li><li>potwierdź taśmy i dylatacje,</li><li>wykonaj komplet zdjęć,</li><li>przekaż technologię ekipie.</li></ul></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">W TRAKCIE</span><h3>Ochrona instalacji</h3><ul class="rk-diy-bullets"><li>kontroluj sposób poruszania się,</li><li>nie przeciągaj sprzętu po rurach,</li><li>obserwuj wskazania przyjętej kontroli,</li><li>pilnuj szczelin i przejść,</li><li>zgłaszaj każde uszkodzenie natychmiast.</li></ul></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">PO</span><h3>Zapis warunków</h3><ul class="rk-diy-bullets"><li>zanotuj datę i rodzaj jastrychu,</li><li>zapisz zauważone zdarzenia,</li><li>potwierdź pielęgnację,</li><li>ustal termin kolejnych kontroli,</li><li>zabezpiecz dokumentację.</li></ul></article>
      </div>
      <div class="rk-diy-note rk-diy-note-bad"><p><strong>Jeżeli rura zostanie uszkodzona podczas prac, zatrzymaj roboty w tym miejscu.</strong> Natychmiastowa lokalizacja i naprawa według właściwej procedury są lepsze niż próba odnalezienia problemu po zakończeniu całej podłogi.</p></div>
    </section>

    <section class="rk-diy-section" id="rk-diy-documentation">
      <span class="rk-diy-eyebrow">Najtańsze ubezpieczenie wiedzy o instalacji</span>
      <h2 class="rk-diy-section-title">Zdjęcia i inwentaryzacja powykonawcza</h2>
      <p class="rk-diy-lead">Zdjęcia powinny pozwolić odtworzyć położenie rur, a nie tylko potwierdzić, że na budowie leżała podłogówka. Fotografuj całe pola i szczegóły, zawsze z rozpoznawalnym punktem odniesienia.</p>
      <div class="rk-diy-grid-3">
        <article class="rk-diy-card"><span class="rk-diy-card-number">KADR</span><h3>Pełne pomieszczenie</h3><p>Wykonaj zdjęcia z kilku stron, obejmujące ściany, otwory, stałe elementy i cały przebieg pętli. Zachowaj logiczną kolejność plików.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">MIARA</span><h3>Odległości od punktów stałych</h3><p>Dodaj miarkę lub zaznacz wymiary od ścian, progów, słupów i przepustów. Sama perspektywa aparatu nie pozwala później wyznaczyć bezpiecznego miejsca wiercenia.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">DETAL</span><h3>Przejścia i odstępstwa</h3><p>Sfotografuj dylatacje, osłony, podejścia do rozdzielacza, zagęszczenia dobiegów i każdą zaakceptowaną zmianę lub naprawę.</p></article>
      </div>
      <ul class="rk-diy-bullets">
        <li>zapisz producenta, pełne oznaczenie i numery partii rury,</li>
        <li>zanotuj rzeczywistą długość i obsługiwane pomieszczenie każdej pętli,</li>
        <li>oznacz pary zasilanie–powrót oraz numer belki rozdzielacza,</li>
        <li>dołącz protokół próby, zmiany względem projektu i osoby zatwierdzające,</li>
        <li>zachowaj dokumenty jastrychu, procedurę wygrzewania i późniejsze nastawy.</li>
      </ul>
    </section>

    <section class="rk-diy-section rk-diy-section-soft" id="rk-diy-after">
      <span class="rk-diy-eyebrow">Zakrycie rur nie oznacza końca prac</span>
      <h2 class="rk-diy-section-title">Co robić po wykonaniu jastrychu?</h2>
      <p class="rk-diy-lead">Po wylewce rozpoczyna się etap pielęgnacji, kontrolowanego uruchomienia i przygotowania podłoża do okładziny. Terminy i temperatury zależą od konkretnego jastrychu — nie należy kopiować jednej procedury do każdego materiału.</p>
      <div class="rk-diy-grid-4">
        <article class="rk-diy-card"><span class="rk-diy-card-number">1</span><h3>Pielęgnacja</h3><p>Chroń podłogę przed zbyt szybkim wysychaniem, przeciągami, mrozem i obciążeniami zgodnie z wytycznymi wykonawcy jastrychu.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">2</span><h3>Wygrzewanie</h3><p>Rozpocznij w terminie i według przebiegu właściwego dla zastosowanej mieszanki. Zapisuj daty oraz temperatury zamiast polegać na pamięci.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">3</span><h3>Wilgotność</h3><p>Protokół wygrzewania nie zastępuje oceny wilgotności przed montażem okładziny. Metodę i wartości graniczne dobiera się do materiałów.</p></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">4</span><h3>Regulacja</h3><p>Po odpowietrzeniu i ustabilizowaniu pracy ustaw projektowe przepływy oraz parametry źródła. Nie kopiuj jednej wartości na wszystkie rotametry.</p></article>
      </div>
      <div class="rk-diy-note"><p><strong>Próba szczelności, wygrzewanie jastrychu, pomiar wilgotności i regulacja hydrauliczna to cztery różne czynności.</strong> Pozytywny wynik jednej nie zastępuje pozostałych.</p></div>
    </section>

    <section class="rk-diy-section" id="rk-diy-myths">
      <span class="rk-diy-eyebrow">Skróty myślowe, które trafiają pod beton</span>
      <h2 class="rk-diy-section-title">Fakty i mity samodzielnego montażu</h2>
      <div class="rk-diy-table-wrap">
        <table>
          <thead><tr><th>Stwierdzenie</th><th>Ocena</th><th>Wyjaśnienie</th></tr></thead>
          <tbody>
            <tr><td data-label="Stwierdzenie"><strong>„Rozstaw 15 cm pasuje do całego domu”</strong></td><td data-label="Ocena">Mit</td><td data-label="Wyjaśnienie">Rozstaw wynika z wymaganej mocy, powierzchni czynnej, podłogi i parametrów wody dla danego pomieszczenia.</td></tr>
            <tr><td data-label="Stwierdzenie"><strong>„Każda pętla musi mieć niemal identyczną długość”</strong></td><td data-label="Ocena">Mit</td><td data-label="Wyjaśnienie">Celem są właściwe przepływy i możliwa regulacja. Długość jest ważna, ale nie zastępuje obliczenia oporu.</td></tr>
            <tr><td data-label="Stwierdzenie"><strong>„100 m to absolutny limit każdej pętli”</strong></td><td data-label="Ocena">Mit</td><td data-label="Wyjaśnienie">To bywa praktyczny pułap w typowych warunkach, lecz granica zależy od rury, przepływu, medium i dostępnego ciśnienia.</td></tr>
            <tr><td data-label="Stwierdzenie"><strong>„6 bar przez 24 godziny wystarcza zawsze”</strong></td><td data-label="Ocena">Mit</td><td data-label="Wyjaśnienie">Warunki próby przyjmuje się z właściwej procedury, projektu i dokumentacji konkretnych elementów.</td></tr>
            <tr><td data-label="Stwierdzenie"><strong>„Zdjęcia przed wylewką są częścią dokumentacji”</strong></td><td data-label="Ocena">Fakt</td><td data-label="Wyjaśnienie">Pomagają odtworzyć trasy, ograniczyć ryzyko wiercenia i zlokalizować późniejsze odstępstwa.</td></tr>
            <tr><td data-label="Stwierdzenie"><strong>„Samodzielny montaż może być poprawny”</strong></td><td data-label="Ocena">Fakt warunkowy</td><td data-label="Wyjaśnienie">Wymaga projektu, właściwych materiałów, umiejętności, kontroli, próby i uczciwego zatrzymania prac przy niepewności.</td></tr>
          </tbody>
        </table>
      </div>
    </section>

    <section class="rk-diy-section rk-diy-section-soft" id="rk-diy-checklist">
      <span class="rk-diy-eyebrow">Do wydrukowania przed odbiorem</span>
      <h2 class="rk-diy-section-title">Checklista przed wylewką</h2>
      <p class="rk-diy-lead">Poniższa lista jest podsumowaniem, nie substytutem dokumentacji systemu. Każde „nie wiem” przy elemencie ukrywanym pod jastrychem powinno mieć właściciela i termin wyjaśnienia.</p>
      <div class="rk-diy-grid-3">
        <article class="rk-diy-card"><span class="rk-diy-card-number">PROJEKT</span><h3>Dane zgodne z wykonaniem</h3><ul class="rk-diy-bullets"><li>obciążenia pomieszczeń,</li><li>powierzchnie czynne,</li><li>rozstawy i strefy brzegowe,</li><li>podział oraz długości pętli,</li><li>przepływy, opory i nastawy.</li></ul></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">MONTAŻ</span><h3>Warstwy i rury odebrane</h3><ul class="rk-diy-bullets"><li>stabilne podłoże i izolacja,</li><li>ciągła taśma brzegowa,</li><li>brak uszkodzeń rur,</li><li>poprawne mocowania i łuki,</li><li>chronione przejścia.</li></ul></article>
        <article class="rk-diy-card"><span class="rk-diy-card-number">DOWODY</span><h3>Dokumenty gotowe</h3><ul class="rk-diy-bullets"><li>pozytywny protokół próby,</li><li>opisy rozdzielacza,</li><li>zdjęcia z miarą,</li><li>rzut powykonawczy i zmiany,</li><li>procedura jastrychu i uruchomienia.</li></ul></article>
      </div>
      <div class="rk-diy-note rk-diy-note-good"><p><strong>Zasada odbioru:</strong> sprawdzaj cechę, dokumentuj wynik i przypisuj odpowiedzialność. Sam podpis pod ogólnym zdaniem „instalacja wykonana prawidłowo” nie zastępuje danych, na podstawie których można to stwierdzić.</p></div>
    </section>

    <section class="rk-diy-section rk-diy-final" id="rk-diy-summary">
      <span class="rk-diy-eyebrow">Najważniejszy wniosek</span>
      <h2 class="rk-diy-section-title">Samodzielny montaż ma sens, jeśli projekt wyprzedza wykonanie</h2>
      <p class="rk-diy-lead">Największą oszczędnością nie jest pominięcie obliczeń, lecz wykonanie pracy raz i zachowanie możliwości korekty do ostatniej chwili przed jastrychem. Projekt określa parametry, montaż je realizuje, a odbiór potwierdza zgodność.</p>
      <div class="rk-diy-cta">
        <div class="rk-diy-cta-title">Zanim beton zakryje instalację, zamień układ rur w sprawdzony projekt</div>
        <p>Opracowanie łączy obciążenia cieplne, powierzchnie czynne, rozstawy, długości obwodów, przepływy, spadki ciśnienia i nastawy rozdzielacza. Dzięki temu wiadomo, które elementy można wykonać samodzielnie i z czym porównać gotową instalację.</p>
        <a class="rk-diy-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
        <small class="rk-diy-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-diy-section" id="rk-diy-sources">
      <span class="rk-diy-eyebrow">Podstawa techniczna</span>
      <h2 class="rk-diy-section-title">Źródła oficjalne i zakres poradnika</h2>
      <p class="rk-diy-lead">Odnośniki zewnętrzne w treści zostały zebrane wyłącznie w tej sekcji i prowadzą do oficjalnych kart norm oraz dokumentów urzędowych. Pełne wymagania trzeba zawsze połączyć z projektem i dokumentacją dokładnie zastosowanego systemu.</p>
      <div class="rk-diy-source-grid">
        <article class="rk-diy-source-card"><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — wydajność systemów płaszczyznowych</a><p>Oficjalna karta części opisującej metody wyznaczania wydajności wbudowanych wodnych systemów ogrzewania i chłodzenia.</p></article>
        <article class="rk-diy-source-card"><a href="https://www.iso.org/standard/74684.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-3:2021 — projektowanie i wymiarowanie</a><p>Oficjalna karta części obejmującej metody projektowania oraz wymiarowania systemów płaszczyznowych.</p></article>
        <article class="rk-diy-source-card"><a href="https://www.iso.org/standard/74685.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-5:2021 — instalowanie systemów</a><p>Oficjalna karta części dotyczącej wymagań instalacyjnych dla wbudowanych wodnych systemów ogrzewania i chłodzenia.</p></article>
        <article class="rk-diy-source-card"><a href="https://knowledge.bsigroup.com/products/water-based-surface-embedded-heating-and-cooling-systems-installation-1" target="_blank" rel="nofollow noopener noreferrer">BS EN 1264-4:2021 — instalowanie</a><p>Oficjalna karta BSI części normy dotyczącej konstrukcji, wykonania oraz kontroli systemów wbudowanych.</p></article>
        <article class="rk-diy-source-card"><a href="https://isap.sejm.gov.pl/isap.nsf/download.xsp/WDU20220001225/O/D20221225.pdf" target="_blank" rel="nofollow noopener noreferrer">Warunki Techniczne — tekst jednolity</a><p>Oficjalny dokument Dziennika Ustaw zawierający między innymi wymagania izolacyjności cieplnej przegród.</p></article>
      </div>
      <div class="rk-diy-responsibility"><p><strong>Zakres odpowiedzialności:</strong> poradnik i analizator pomagają uporządkować decyzje przed wylewką, lecz nie są projektem, instrukcją konkretnego wyrobu, protokołem próby, formalnym odbiorem ani oceną jastrychu. Ostateczne wymagania wynikają z dokumentacji inwestycji, aktualnych dokumentów zastosowanych elementów i rzeczywistych warunków budynku.</p></div>
    </section>

    <section class="rk-diy-section rk-diy-section-soft" id="rk-diy-faq">
      <span class="rk-diy-eyebrow">Pytania inwestorów wykonujących instalację samodzielnie</span>
      <h2 class="rk-diy-section-title">FAQ — samodzielny montaż ogrzewania podłogowego</h2>
      <div class="rk-diy-faq">
        <details><summary>Czy można samodzielnie zamontować wodne ogrzewanie podłogowe?</summary><div class="rk-diy-faq-answer"><p>Można samodzielnie wykonać prace montażowe, jeżeli instalacja ma kompletny projekt, zastosowane elementy są zgodne systemowo, a osoba wykonująca potrafi kontrolować warstwy, rury, połączenia i próbę. Samodzielność nie zastępuje obliczeń cieplnych, hydrauliki ani odbioru przed wylewką.</p></div></details>
        <details><summary>Czy projekt podłogówki jest formalnie obowiązkowy?</summary><div class="rk-diy-faq-answer"><p>Zakres formalny zależy od rodzaju inwestycji i dokumentacji budynku. Niezależnie od kwalifikacji prawnej potrzebne są dane wykonawcze pozwalające ustalić moc pomieszczeń, powierzchnie czynne, rozstawy, pętle, przepływy i nastawy. Brak jednego uniwersalnego obowiązku nie oznacza, że instalację można prawidłowo dobrać bez obliczeń.</p></div></details>
        <details><summary>Czy rozstaw 15 cm jest odpowiedni w każdym pomieszczeniu?</summary><div class="rk-diy-faq-answer"><p>Nie. Rozstaw dobiera się do obciążenia cieplnego, dostępnej powierzchni, konstrukcji podłogi, okładziny, temperatury wody i limitów temperatury powierzchni. Jedna wartość dla całego domu może prowadzić do niepotrzebnego zagęszczenia albo niedoboru mocy.</p></div></details>
        <details><summary>Czy 100 m to absolutna maksymalna długość pętli?</summary><div class="rk-diy-faq-answer"><p>Nie jest to uniwersalny limit normowy. Około 100 m bywa praktycznym pułapem dla typowych pętli 16 × 2 mm, lecz poprawność zależy od światła rury, przepływu, medium, oporów miejscowych, dostępnego ciśnienia i możliwości regulacji.</p></div></details>
        <details><summary>Czy wszystkie pętle powinny mieć taką samą długość?</summary><div class="rk-diy-faq-answer"><p>Nie. Powinny zapewniać wymagane przepływy i dać się zrównoważyć. Bardzo duże różnice mogą utrudniać regulację, ale sztuczne wydłużanie krótkiej pętli również zwiększa opór. Ocenia się obliczone przepływy i spadki ciśnienia, nie sam procent różnicy długości.</p></div></details>
        <details><summary>Jakie ciśnienie i czas próby szczelności zastosować?</summary><div class="rk-diy-faq-answer"><p>Nie należy przyjmować jednej wartości dla wszystkich instalacji. Ciśnienie, czas, medium, etapy i kryteria oceny trzeba ustalić według projektu, dokumentacji zastosowanych elementów oraz właściwej procedury odbiorowej. Warunki i wynik zapisuje się w protokole.</p></div></details>
        <details><summary>Czy rury powinny pozostać pod ciśnieniem podczas wykonywania jastrychu?</summary><div class="rk-diy-faq-answer"><p>Stan instalacji podczas robót ustala się według przyjętej procedury i dokumentacji systemu. Kontrola ma pomóc szybko wykryć ewentualne uszkodzenie. Nie należy uzasadniać jej twierdzeniem, że ciśnienie uniwersalnie usztywnia rurę lub zabezpiecza połączenia.</p></div></details>
        <details><summary>Czy próbę można wykonać sprężonym powietrzem?</summary><div class="rk-diy-faq-answer"><p>Medium próby oraz środki bezpieczeństwa muszą wynikać z właściwej procedury i warunków budowy. Gaz pod ciśnieniem magazynuje energię i wymaga szczególnej ostrożności, właściwych przyrządów oraz oceny ryzyka. Nie należy improwizować ani przekraczać dopuszczeń elementów.</p></div></details>
        <details><summary>Co zrobić z załamaną rurą ogrzewania podłogowego?</summary><div class="rk-diy-faq-answer"><p>Zatrzymaj montaż, oznacz miejsce i sprawdź instrukcję dokładnego produktu. Dopuszczona metoda zależy od materiału oraz konstrukcji rury. Po każdej zaakceptowanej naprawie potrzebna jest ponowna kontrola, próba i dokumentacja lokalizacji.</p></div></details>
        <details><summary>Czy wolno ukryć złączkę naprawczą pod wylewką?</summary><div class="rk-diy-faq-answer"><p>Pętle projektuje się bez ukrytych połączeń. Jeśli awaryjna naprawa jest konieczna, musi być rozwiązaniem wyraźnie dopuszczonym dla danego systemu, wykonanym właściwymi narzędziami, sprawdzonym próbą i dokładnie naniesionym na dokumentację. W wielu sytuacjach bezpieczniejsza jest wymiana całej pętli.</p></div></details>
        <details><summary>Gdzie trzeba wykonać dylatacje jastrychu?</summary><div class="rk-diy-faq-answer"><p>Podział zależy od materiału jastrychu, geometrii, grubości, przewężeń, istniejących szczelin konstrukcyjnych, pól grzewczych i wykończenia. Nie ma jednej powierzchni ani długości boku właściwej dla każdej technologii. Plan trzeba uzgodnić przed wylewką.</p></div></details>
        <details><summary>Jak chronić rurę przechodzącą przez dylatację?</summary><div class="rk-diy-faq-answer"><p>Przejścia ogranicza się do niezbędnych i prowadzi w osłonie pozwalającej przejąć ruch sąsiednich pól. Rodzaj oraz długość zabezpieczenia powinny wynikać z projektu i technologii jastrychu, a położenie należy sfotografować.</p></div></details>
        <details><summary>Ile izolacji ułożyć pod ogrzewaniem podłogowym?</summary><div class="rk-diy-faq-answer"><p>Nie można odpowiedzieć samą liczbą centymetrów. Dobór zależy od współczynnika przewodzenia materiału, wymaganej izolacyjności całej przegrody, temperatur po obu stronach, mostków cieplnych, dostępnej wysokości i wytrzymałości pod obciążeniem.</p></div></details>
        <details><summary>Kiedy można rozpocząć wygrzewanie jastrychu?</summary><div class="rk-diy-faq-answer"><p>Termin i przebieg zależą od rodzaju jastrychu, jego receptury, grubości, warunków dojrzewania oraz wytycznych wykonawcy. Nie należy automatycznie stosować jednej liczby dni i jednego przyrostu temperatury do wszystkich podłóg.</p></div></details>
        <details><summary>Jakie zdjęcia zrobić przed wylewką?</summary><div class="rk-diy-faq-answer"><p>Sfotografuj całe pomieszczenia z kilku kierunków, podejścia do rozdzielacza, przejścia, dylatacje, miejsca napraw i strefy bez rur. Dodaj miarę oraz stałe punkty odniesienia, aby można było odtworzyć odległości po zakryciu instalacji.</p></div></details>
        <details><summary>Co sprawdzić bezpośrednio przed rozpoczęciem wylewki?</summary><div class="rk-diy-faq-answer"><p>Porównaj wykonanie z projektem, obejrzyj całą rurę, sprawdź mocowania, osłony, taśmę i dylatacje, zakończ próbę z protokołem, oznacz pętle, wykonaj dokumentację zdjęciową oraz potwierdź technologię jastrychu, pielęgnację i późniejsze uruchomienie.</p></div></details>
      </div>
    </section>

    <section class="rk-diy-author" id="rk-diy-author">
      <span class="rk-diy-eyebrow">Opracowanie eksperckie</span>
      <h2 class="rk-diy-author-title">Autor i weryfikacja merytoryczna</h2>
      <div class="rk-diy-author-layout">
        <aside class="rk-diy-author-side">
          <div class="rk-diy-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych" width="400" height="400" loading="lazy" decoding="async"></div>
          <div class="rk-diy-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
          <p class="rk-diy-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
          <div class="rk-diy-author-social" aria-label="Profile autora">
            <a href="https://www.linkedin.com/in/robert-kucharski-b8b906199/" target="_blank" rel="nofollow noopener noreferrer me" aria-label="LinkedIn Roberta Kucharskiego">in</a>
            <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Facebook Projekt Ogrzewania">f</a>
            <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Profil Projekt HVAC w serwisie X">X</a>
          </div>
        </aside>
        <div class="rk-diy-author-main">
          <div class="rk-diy-author-quote">„Moim zdaniem samodzielny montaż może być wykonany dobrze, ale tylko wtedy, gdy inwestor nie próbuje zastąpić projektu zestawem internetowych reguł. Rurę można ułożyć własnymi rękami; strat ciepła, przepływów i oporów nie da się jednak policzyć na oko.”</div>
          <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 czynności możliwe do wykonania na budowie od decyzji wymagających danych oraz obliczeń.</p>
          <p>Weryfikacja tego materiału objęła obciążenia pomieszczeń, podział i hydraulikę pętli, wymagania przed zakryciem rur, znaczenie próby szczelności, koordynację dylatacji oraz dokumentację powykonawczą. Treść nie przypisuje uniwersalnych wartości wszystkim systemom, ponieważ warunki montażu i odbioru zależą od projektu oraz dokładnie zastosowanych elementów.</p>
          <p>Publikuje również w portalach <a href="https://remont.biz.pl/" target="_blank" rel="nofollow noopener noreferrer">Remont.biz.pl</a> i <a href="https://sobir.pl/" target="_blank" rel="nofollow noopener noreferrer">Sobir.pl</a>. <a href="https://projekt-ogrzewania.pl/author/admin3399/">Zobacz pozostałe artykuły Roberta Kucharskiego w serwisie Projekt-Ogrzewania.pl</a>.</p>
          <div class="rk-diy-author-facts">
            <div class="rk-diy-author-fact"><strong>Zakres</strong>ogrzewanie podłogowe, bilanse cieplne i hydraulika instalacji</div>
            <div class="rk-diy-author-fact"><strong>Metoda pracy</strong>projekt, dokumentacja systemu i kontrola rzeczywistego wykonania</div>
            <div class="rk-diy-author-fact"><strong>Aktualizacja</strong>stan techniczny materiału sprawdzony 17 września 2026 r.</div>
          </div>
        </div>
      </div>
    </section>
  </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",
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@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",
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "samodzielny montaż ogrzewania podłogowego",
        "projektowe obciążenie cieplne",
        "hydraulika pętli grzewczych",
        "próba szczelności instalacji",
        "równoważenie hydrauliczne"
      ],
      "worksFor": [
        { "@id": "https://projekt-ogrzewania.pl/#organization" },
        { "@id": "https://remont.biz.pl/#organization" },
        { "@id": "https://sobir.pl/#organization" }
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-b8b906199/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Samodzielny-montaz-ogrzewania-podlogowego-–-5-bledow-ktorych-nie-naprawisz-po-wylewce.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Samodzielny-montaz-ogrzewania-podlogowego-–-5-bledow-ktorych-nie-naprawisz-po-wylewce.webp",
      "width": 900,
      "height": 900,
      "caption": "Samodzielny montaż ogrzewania podłogowego — pięć błędów przed wylewką"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/#breadcrumb",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Strona główna", "item": "https://projekt-ogrzewania.pl/" },
        { "@type": "ListItem", "position": 2, "name": "Poradniki", "item": "https://projekt-ogrzewania.pl/blog/" },
        { "@type": "ListItem", "position": 3, "name": "Samodzielny montaż ogrzewania podłogowego", "item": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/" }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/#webpage",
      "url": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/",
      "name": "Samodzielny montaż ogrzewania podłogowego – 5 błędów przed wylewką",
      "description": "Praktyczny poradnik samodzielnego montażu podłogówki: projekt, pętle, rury, dylatacje, próba szczelności, jastrych i kontrola przed zakryciem instalacji.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/#breadcrumb" },
      "primaryImageOfPage": { "@id": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/#primaryimage" },
      "datePublished": "2026-04-19T19:27:33+00:00",
      "dateModified": "2026-09-17T12:00:00+02:00",
      "inLanguage": "pl-PL",
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/#article" }
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/#article",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/#webpage" },
      "headline": "Samodzielny montaż ogrzewania podłogowego – 5 błędów przed wylewką",
      "description": "Techniczny przewodnik dla inwestora wykonującego podłogówkę samodzielnie, z analizatorem gotowości do wylewki i checklistą odbiorową.",
      "image": { "@id": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/#primaryimage" },
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "datePublished": "2026-04-19T19:27:33+00:00",
      "dateModified": "2026-09-17T12:00:00+02:00",
      "inLanguage": "pl-PL",
      "about": [
        "samodzielny montaż ogrzewania podłogowego",
        "kontrola przed wylewką",
        "pętle ogrzewania podłogowego",
        "próba szczelności",
        "dylatacje jastrychu",
        "hydraulika podłogówki"
      ],
      "keywords": "samodzielny montaż ogrzewania podłogowego, montaż podłogówki, błędy przed wylewką, próba szczelności, pętle podłogówki, dylatacje",
      "isAccessibleForFree": true,
      "hasPart": [
        { "@id": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/#analyzer" },
        { "@id": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/#howto" },
        { "@id": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/#error-list" },
        { "@id": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/#faq-schema" }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/#analyzer",
      "name": "Analizator gotowości podłogówki do wykonania wylewki",
      "url": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/#rk-diy-analyzer-section",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Dowolny system z nowoczesną przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "description": "Edukacyjny audyt piętnastu warunków dotyczących projektu, hydrauliki, rur, dylatacji, próby i dokumentacji przed zakryciem instalacji."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/#howto",
      "name": "Jak sprawdzić samodzielnie zamontowaną podłogówkę przed wylewką",
      "description": "Sześć etapów kontroli ogrzewania podłogowego przed wykonaniem jastrychu.",
      "totalTime": "PT45M",
      "step": [
        { "@type": "HowToStep", "position": 1, "name": "Porównaj wykonanie z projektem", "text": "Sprawdź obciążenia pomieszczeń, powierzchnie czynne, rozstawy, trasy, długości i zaakceptowane zmiany." },
        { "@type": "HowToStep", "position": 2, "name": "Zweryfikuj hydraulikę", "text": "Porównaj rzeczywiste pętle z wymaganymi przepływami, oporami i zakresem regulacji rozdzielacza." },
        { "@type": "HowToStep", "position": 3, "name": "Obejrzyj rury", "text": "Sprawdź brak uszkodzeń, poprawne łuki, mocowania, osłony przejść i zgodność zastosowanego wyrobu." },
        { "@type": "HowToStep", "position": 4, "name": "Skontroluj taśmy i dylatacje", "text": "Potwierdź ciągłość oddzielenia brzegowego, podział pól i ochronę rur przechodzących przez szczeliny." },
        { "@type": "HowToStep", "position": 5, "name": "Wykonaj i udokumentuj próbę", "text": "Przeprowadź właściwą procedurę, wyjaśnij nieprawidłowości i zachowaj kompletny protokół." },
        { "@type": "HowToStep", "position": 6, "name": "Zapisz stan przed zakryciem", "text": "Wykonaj zdjęcia z miarą, opisz pętle, nanieś odstępstwa i uzgodnij technologię jastrychu oraz uruchomienia." }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/#error-list",
      "name": "Pięć błędów samodzielnego montażu ogrzewania podłogowego",
      "numberOfItems": 5,
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Układanie rur bez projektu cieplnego i hydraulicznego" },
        { "@type": "ListItem", "position": 2, "name": "Niewłaściwe pętle, mocowanie i uszkodzenia rur" },
        { "@type": "ListItem", "position": 3, "name": "Brak poprawnie udokumentowanej próby szczelności" },
        { "@type": "ListItem", "position": 4, "name": "Brak koordynacji dylatacji, taśmy brzegowej i przejść rur" },
        { "@type": "ListItem", "position": 5, "name": "Zła izolacja, przypadkowy jastrych i zbyt wczesne uruchomienie" }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/#faq-schema",
      "mainEntity": [
        { "@type": "Question", "name": "Czy można samodzielnie zamontować wodne ogrzewanie podłogowe?", "acceptedAnswer": { "@type": "Answer", "text": "Można samodzielnie wykonać prace montażowe, jeżeli instalacja ma kompletny projekt, zastosowane elementy są zgodne, a wykonawca potrafi kontrolować warstwy, rury, połączenia i próbę. Samodzielność nie zastępuje obliczeń ani odbioru." } },
        { "@type": "Question", "name": "Czy projekt podłogówki jest formalnie obowiązkowy?", "acceptedAnswer": { "@type": "Answer", "text": "Zakres formalny zależy od inwestycji. Niezależnie od niego potrzebne są dane wykonawcze określające moc pomieszczeń, powierzchnie czynne, rozstawy, pętle, przepływy i nastawy." } },
        { "@type": "Question", "name": "Czy rozstaw 15 cm jest odpowiedni w każdym pomieszczeniu?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Rozstaw dobiera się do obciążenia cieplnego, powierzchni czynnej, konstrukcji podłogi, okładziny, temperatury wody i limitów temperatury powierzchni." } },
        { "@type": "Question", "name": "Czy 100 m to absolutna maksymalna długość pętli?", "acceptedAnswer": { "@type": "Answer", "text": "Nie jest to uniwersalny limit normowy. Poprawność zależy od światła rury, przepływu, medium, oporów miejscowych, dostępnego ciśnienia i możliwości regulacji." } },
        { "@type": "Question", "name": "Czy wszystkie pętle powinny mieć taką samą długość?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Pętle powinny zapewniać wymagane przepływy i dać się zrównoważyć. Ocenia się obliczone przepływy i spadki ciśnienia, nie sam procent różnicy długości." } },
        { "@type": "Question", "name": "Jakie ciśnienie i czas próby szczelności zastosować?", "acceptedAnswer": { "@type": "Answer", "text": "Nie ma jednej wartości dla wszystkich instalacji. Ciśnienie, czas, medium, etapy i kryteria oceny trzeba ustalić według projektu, dokumentacji elementów i właściwej procedury." } },
        { "@type": "Question", "name": "Czy rury powinny pozostać pod ciśnieniem podczas wykonywania jastrychu?", "acceptedAnswer": { "@type": "Answer", "text": "Stan instalacji podczas robót ustala się według przyjętej procedury i dokumentacji systemu. Kontrola ma pomóc wykryć ewentualne uszkodzenie." } },
        { "@type": "Question", "name": "Czy próbę można wykonać sprężonym powietrzem?", "acceptedAnswer": { "@type": "Answer", "text": "Medium próby i środki bezpieczeństwa muszą wynikać z właściwej procedury. Gaz pod ciśnieniem magazynuje energię i wymaga oceny ryzyka, odpowiednich przyrządów i ostrożności." } },
        { "@type": "Question", "name": "Co zrobić z załamaną rurą ogrzewania podłogowego?", "acceptedAnswer": { "@type": "Answer", "text": "Trzeba zatrzymać montaż, oznaczyć miejsce i sprawdzić instrukcję dokładnego produktu. Po zaakceptowanej naprawie potrzebne są kontrola, próba i dokumentacja lokalizacji." } },
        { "@type": "Question", "name": "Czy wolno ukryć złączkę naprawczą pod wylewką?", "acceptedAnswer": { "@type": "Answer", "text": "Pętle projektuje się bez ukrytych połączeń. Konieczna naprawa musi być rozwiązaniem dopuszczonym dla systemu, wykonanym właściwie, sprawdzonym i naniesionym na dokumentację." } },
        { "@type": "Question", "name": "Gdzie trzeba wykonać dylatacje jastrychu?", "acceptedAnswer": { "@type": "Answer", "text": "Podział zależy od materiału jastrychu, geometrii, grubości, przewężeń, istniejących szczelin, pól grzewczych i wykończenia. Plan trzeba uzgodnić przed wylewką." } },
        { "@type": "Question", "name": "Jak chronić rurę przechodzącą przez dylatację?", "acceptedAnswer": { "@type": "Answer", "text": "Przejścia ogranicza się do niezbędnych i prowadzi w osłonie pozwalającej przejąć ruch sąsiednich pól. Rodzaj zabezpieczenia wynika z projektu i technologii jastrychu." } },
        { "@type": "Question", "name": "Ile izolacji ułożyć pod ogrzewaniem podłogowym?", "acceptedAnswer": { "@type": "Answer", "text": "Dobór zależy od przewodności materiału, wymaganej izolacyjności przegrody, temperatur, mostków, dostępnej wysokości i wytrzymałości. Sama liczba centymetrów nie wystarcza." } },
        { "@type": "Question", "name": "Kiedy można rozpocząć wygrzewanie jastrychu?", "acceptedAnswer": { "@type": "Answer", "text": "Termin i przebieg zależą od rodzaju jastrychu, receptury, grubości, warunków dojrzewania oraz wytycznych wykonawcy. Nie ma jednej procedury dla wszystkich podłóg." } },
        { "@type": "Question", "name": "Jakie zdjęcia zrobić przed wylewką?", "acceptedAnswer": { "@type": "Answer", "text": "Należy sfotografować całe pomieszczenia, podejścia, przejścia, dylatacje, naprawy i strefy bez rur, dodając miarę oraz stałe punkty odniesienia." } },
        { "@type": "Question", "name": "Co sprawdzić bezpośrednio przed rozpoczęciem wylewki?", "acceptedAnswer": { "@type": "Answer", "text": "Trzeba porównać wykonanie z projektem, obejrzeć rury, mocowania, osłony, taśmę i dylatacje, zakończyć próbę, oznaczyć pętle, wykonać zdjęcia i uzgodnić technologię jastrychu." } }
      ]
    },
    {
      "@type": "Service",
      "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/#service",
      "name": "Indywidualny projekt instalacji ogrzewania podłogowego",
      "url": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/",
      "provider": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "areaServed": { "@type": "Country", "name": "Polska" },
      "serviceType": "Projekt ogrzewania podłogowego",
      "description": "Projekt obejmujący obliczenia cieplne i hydrauliczne, rozmieszczenie pętli, rozstawy, długości, przepływy i nastawy rozdzielacza."
    }
  ]
}
</script>

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

  var guide = document.getElementById("rk-diy-guide");
  if (!guide) {
    return;
  }
  if (guide.getAttribute("data-rk-ready") === "1") {
    return;
  }
  guide.setAttribute("data-rk-ready", "1");

  function renderList(elementId, items, emptyText) {
    var list = document.getElementById(elementId);
    if (!list) {
      return;
    }
    list.textContent = "";
    if (items.length === 0) {
      var emptyItem = document.createElement("li");
      emptyItem.textContent = emptyText;
      list.appendChild(emptyItem);
      return;
    }
    items.forEach(function (itemText) {
      var item = document.createElement("li");
      item.textContent = itemText;
      list.appendChild(item);
    });
  }

  function analyzeReadiness() {
    var fields = guide.querySelectorAll(".rk-diy-audit-field");
    var ok = [];
    var check = [];
    var stop = [];

    fields.forEach(function (field) {
      var value = field.value;
      var severity = field.getAttribute("data-severity") || "warning";
      var label = field.getAttribute("data-label") || "Element kontroli";
      var action = field.getAttribute("data-action") || "Wyjaśnij ten punkt przed wykonaniem jastrychu.";

      if (value === "yes") {
        ok.push(label + " — potwierdzone.");
        return;
      }
      if (severity === "critical") {
        if (value === "no") {
          stop.push(action);
          return;
        }
        stop.push("Brak potwierdzenia: " + label.toLowerCase() + ". " + action);
        return;
      }
      check.push(action);
    });

    var result = document.getElementById("rk-diy-result");
    var status = document.getElementById("rk-diy-result-status");
    var intro = document.getElementById("rk-diy-result-intro");
    result.classList.remove("is-good");
    result.classList.remove("is-stop");

    if (stop.length > 0) {
      result.classList.add("is-stop");
      status.textContent = "Nie zamawiaj jeszcze jastrychu — wyjaśnij warunki krytyczne";
      intro.textContent = "Co najmniej jeden brak dotyczy cechy, której po zakryciu nie da się wiarygodnie sprawdzić albo łatwo poprawić.";
    } else {
      if (check.length > 0) {
        status.textContent = "Dane krytyczne potwierdzone, ale dokumentacja nie jest kompletna";
        intro.textContent = "Uzupełnij wskazane materiały i uzgodnienia, a następnie wykonaj formalny odbiór przed wylewką.";
      } else {
        result.classList.add("is-good");
        status.textContent = "Lista kompletna — przejdź do formalnego odbioru instalacji";
        intro.textContent = "Analizator nie wykazał braków. Porównaj odpowiedzi z dokumentami i potwierdź gotowość zgodnie z procedurą inwestycji.";
      }
    }

    document.getElementById("rk-diy-ok-count").textContent = String(ok.length);
    document.getElementById("rk-diy-check-count").textContent = String(check.length);
    document.getElementById("rk-diy-stop-count").textContent = String(stop.length);
    renderList("rk-diy-ok-list", ok, "Brak potwierdzonych elementów.");
    renderList("rk-diy-check-list", check, "Brak dodatkowych punktów do sprawdzenia.");
    renderList("rk-diy-stop-list", stop, "Nie wskazano warunku blokującego wylewkę.");
  }

  function resetAnalyzer() {
    var fields = guide.querySelectorAll(".rk-diy-audit-field");
    fields.forEach(function (field) {
      field.selectedIndex = 0;
    });
    var result = document.getElementById("rk-diy-result");
    result.classList.remove("is-good");
    result.classList.remove("is-stop");
    document.getElementById("rk-diy-result-status").textContent = "Uzupełnij 15 punktów na podstawie rzeczywistego wykonania";
    document.getElementById("rk-diy-result-intro").textContent = "Wynik rozdzieli informacje potwierdzone, wymagające uzupełnienia i blokujące zakrycie instalacji.";
    document.getElementById("rk-diy-ok-count").textContent = "0";
    document.getElementById("rk-diy-check-count").textContent = String(fields.length);
    document.getElementById("rk-diy-stop-count").textContent = "0";
    renderList("rk-diy-ok-list", [], "Jeszcze brak ocenionych danych.");
    renderList("rk-diy-check-list", [], "Uzupełnij formularz na podstawie projektu, oględzin i protokołów.");
    renderList("rk-diy-stop-list", [], "Brak oceny nie oznacza gotowości do zakrycia rur.");
  }

  var runButton = document.getElementById("rk-diy-run");
  var resetButton = document.getElementById("rk-diy-reset");
  if (runButton) {
    runButton.addEventListener("click", analyzeReadiness);
  }
  if (resetButton) {
    resetButton.addEventListener("click", resetAnalyzer);
  }
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/">Samodzielny montaż ogrzewania podłogowego – 5 błędów przed wylewką.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<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>Rotametr (wskaźnik przepływu) w rozdzielaczu ogrzewania podłogowego.</title>
		<link>https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/</link>
					<comments>https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 29 Nov 2025 17:11:32 +0000</pubDate>
				<category><![CDATA[Hydraulika]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Konserwacja systemów grzewczych]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Regulacja instalacji]]></category>
		<category><![CDATA[Rozdzielacz do podłogówki]]></category>
		<category><![CDATA[Rozdzielacze do podłogówki]]></category>
		<category><![CDATA[Rozdzielacze grzewcze]]></category>
		<category><![CDATA[Serwis i konserwacja]]></category>
		<category><![CDATA[hydraulika]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pętle grzewcze]]></category>
		<category><![CDATA[podłogówka]]></category>
		<category><![CDATA[przepływomierz]]></category>
		<category><![CDATA[regulacja przepływu]]></category>
		<category><![CDATA[rotametr]]></category>
		<category><![CDATA[rozdzielacz]]></category>
		<category><![CDATA[wskaźnik przepływu]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2873</guid>

					<description><![CDATA[<p>Rotametr (wskaźnik przepływu) w rozdzielaczu ogrzewania podłogowego to jeden z tych elementów instalacji, które wyglądają niepozornie, ale mają ogromny wpływ na komfort cieplny całego domu. W artykule wyjaśniam, jak działa rotametr, dlaczego jest kluczowy dla równoważenia hydraulicznego oraz jak prawidłowo ustawić przepływy na każdej pętli podłogówki. Dzięki temu dowiesz się, jak uniknąć przegrzewania pomieszczeń, zimnych stref na podłodze i niepotrzebnych strat energii.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">Rotametr (wskaźnik przepływu) w rozdzielaczu ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-flow-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: #f1b93e;
    --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-flow-guide,
  #rk-flow-guide * {
    box-sizing: border-box;
  }

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

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

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

  #rk-flow-guide p,
  #rk-flow-guide ul,
  #rk-flow-guide ol {
    margin-top: 0;
    margin-bottom: 1.1em;
  }

  #rk-flow-guide h2,
  #rk-flow-guide h3,
  #rk-flow-guide h4 {
    margin-top: 0;
    color: var(--rk-dark);
    font-weight: 950;
    letter-spacing: -0.035em;
  }

  #rk-flow-guide h2 {
    margin-bottom: 18px;
    font-size: clamp(1.8rem, 4vw, 2.75rem);
    line-height: 1.08;
  }

  #rk-flow-guide h3 {
    margin-bottom: 10px;
    font-size: clamp(1.08rem, 2.2vw, 1.35rem);
    line-height: 1.22;
  }

  #rk-flow-guide .rk-flow-shell {
    position: relative;
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 32px;
    background: var(--rk-white);
    box-shadow: 0 28px 70px rgba(16, 37, 54, 0.11);
  }

  #rk-flow-guide .rk-flow-progress-track {
    position: sticky;
    z-index: 60;
    top: 0;
    height: 5px;
    background: rgba(213, 228, 235, 0.86);
  }

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

  #rk-flow-guide .rk-flow-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(40px, 7vw, 78px);
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 17%, rgba(255, 106, 61, 0.35), transparent 28%),
      radial-gradient(circle at 76% 96%, rgba(37, 199, 216, 0.25), transparent 35%),
      linear-gradient(126deg, #0f2233, #143d53 72%, #2e3944);
  }

  #rk-flow-guide .rk-flow-hero::after {
    position: absolute;
    right: -75px;
    bottom: -110px;
    width: 370px;
    height: 370px;
    border: 42px solid rgba(255, 255, 255, 0.045);
    border-radius: 50%;
    content: "";
  }

  #rk-flow-guide .rk-flow-hero-inner {
    position: relative;
    z-index: 2;
    max-width: 900px;
  }

  #rk-flow-guide .rk-flow-eyebrow,
  #rk-flow-guide .rk-flow-kicker {
    display: inline-flex;
    gap: 9px;
    align-items: center;
    margin-bottom: 17px;
    color: var(--rk-orange);
    font-size: 0.72rem;
    font-weight: 950;
    letter-spacing: 0.09em;
    line-height: 1.35;
    text-transform: uppercase;
  }

  #rk-flow-guide .rk-flow-eyebrow {
    padding: 9px 14px;
    border: 1px solid rgba(255, 255, 255, 0.24);
    border-radius: 999px;
    color: #e2fbff;
    background: rgba(255, 255, 255, 0.06);
  }

  #rk-flow-guide .rk-flow-eyebrow b {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 7px rgba(255, 106, 61, 0.16);
  }

  #rk-flow-guide .rk-flow-hero-title {
    max-width: 880px;
    margin-bottom: 22px;
    color: var(--rk-white);
    font-size: clamp(2.15rem, 5.4vw, 4.4rem);
    font-weight: 980;
    letter-spacing: -0.058em;
    line-height: 0.99;
  }

  #rk-flow-guide .rk-flow-hero-lead {
    max-width: 840px;
    margin-bottom: 25px;
    color: #d9e9f0;
    font-size: clamp(1rem, 2vw, 1.22rem);
    line-height: 1.7;
  }

  #rk-flow-guide .rk-flow-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 11px 24px;
    color: #c5dae3;
    font-size: 0.74rem;
    font-weight: 800;
  }

  #rk-flow-guide .rk-flow-meta span {
    display: inline-flex;
    gap: 8px;
    align-items: center;
  }

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

  #rk-flow-guide .rk-flow-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    padding: 20px clamp(22px, 5vw, 60px);
    border-bottom: 1px solid var(--rk-line);
    background: #f8fbfc;
  }

  #rk-flow-guide .rk-flow-nav strong {
    display: inline-flex;
    align-items: center;
    margin-right: 5px;
    color: var(--rk-dark);
    font-size: 0.76rem;
    letter-spacing: 0.07em;
    text-transform: uppercase;
  }

  #rk-flow-guide .rk-flow-nav a {
    display: inline-flex;
    align-items: center;
    min-height: 39px;
    padding: 7px 13px;
    border: 1px solid var(--rk-line);
    border-radius: 999px;
    color: var(--rk-navy);
    background: var(--rk-white);
    font-size: 0.76rem;
    font-weight: 850;
    line-height: 1.25;
    text-decoration: none;
  }

  #rk-flow-guide .rk-flow-nav a:hover,
  #rk-flow-guide .rk-flow-nav a:focus-visible {
    border-color: var(--rk-cyan);
    outline: 0;
    color: var(--rk-dark);
    background: var(--rk-cyan-soft);
  }

  #rk-flow-guide .rk-flow-section {
    padding: clamp(38px, 6vw, 72px);
    border-bottom: 1px solid var(--rk-line);
    scroll-margin-top: 24px;
  }

  #rk-flow-guide .rk-flow-intro {
    max-width: 900px;
    color: var(--rk-text);
    font-size: 1.05rem;
  }

  #rk-flow-guide .rk-flow-answer {
    display: grid;
    grid-template-columns: 1.1fr 0.9fr;
    gap: 22px;
    margin-top: 28px;
  }

  #rk-flow-guide .rk-flow-answer-main,
  #rk-flow-guide .rk-flow-answer-side {
    padding: clamp(25px, 4vw, 38px);
    border-radius: 24px;
  }

  #rk-flow-guide .rk-flow-answer-main {
    color: #e7f7fb;
    background: linear-gradient(135deg, var(--rk-dark), #19475d);
  }

  #rk-flow-guide .rk-flow-answer-main h3 {
    color: var(--rk-white);
  }

  #rk-flow-guide .rk-flow-answer-main strong {
    color: #8df3ff;
  }

  #rk-flow-guide .rk-flow-answer-side {
    border: 1px solid #f2d7ca;
    background: var(--rk-orange-soft);
  }

  #rk-flow-guide .rk-flow-formula {
    margin-top: 24px;
    padding: 23px;
    border: 1px solid #b9dce7;
    border-radius: 19px;
    text-align: center;
    background: var(--rk-cyan-soft);
  }

  #rk-flow-guide .rk-flow-formula strong {
    display: block;
    color: var(--rk-dark);
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(1.2rem, 3vw, 1.8rem);
    letter-spacing: 0;
  }

  #rk-flow-guide .rk-flow-formula span {
    display: block;
    margin-top: 8px;
    color: var(--rk-muted);
    font-size: 0.78rem;
  }

  #rk-flow-guide .rk-flow-grid-3,
  #rk-flow-guide .rk-flow-grid-2,
  #rk-flow-guide .rk-flow-errors {
    display: grid;
    gap: 18px;
    margin-top: 28px;
  }

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

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

  #rk-flow-guide .rk-flow-card,
  #rk-flow-guide .rk-flow-error {
    padding: 24px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-white);
  }

  #rk-flow-guide .rk-flow-card p,
  #rk-flow-guide .rk-flow-error p {
    margin-bottom: 0;
    color: var(--rk-text);
    font-size: 0.9rem;
  }

  #rk-flow-guide .rk-flow-card-number,
  #rk-flow-guide .rk-flow-error b {
    display: inline-flex;
    margin-bottom: 12px;
    color: var(--rk-orange);
    font-size: 0.7rem;
    font-weight: 950;
    letter-spacing: 0.08em;
    text-transform: uppercase;
  }

  #rk-flow-guide .rk-flow-notice {
    margin-top: 24px;
    padding: 20px 22px;
    border-left: 5px solid var(--rk-yellow);
    border-radius: 0 15px 15px 0;
    color: var(--rk-text);
    background: var(--rk-yellow-soft);
  }

  #rk-flow-guide .rk-flow-notice.is-red {
    border-left-color: var(--rk-red);
    background: var(--rk-red-soft);
  }

  #rk-flow-guide .rk-flow-notice p:last-child {
    margin-bottom: 0;
  }

  #rk-flow-guide .rk-flow-table-wrap {
    margin-top: 28px;
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 22px;
  }

  #rk-flow-guide .rk-flow-table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
  }

  #rk-flow-guide .rk-flow-table th,
  #rk-flow-guide .rk-flow-table td {
    padding: 16px 17px;
    border-right: 1px solid var(--rk-line);
    border-bottom: 1px solid var(--rk-line);
    vertical-align: top;
    text-align: left;
  }

  #rk-flow-guide .rk-flow-table th:last-child,
  #rk-flow-guide .rk-flow-table td:last-child {
    border-right: 0;
  }

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

  #rk-flow-guide .rk-flow-table thead th {
    color: var(--rk-white);
    background: var(--rk-dark);
    font-size: 0.76rem;
    letter-spacing: 0.04em;
    text-transform: uppercase;
  }

  #rk-flow-guide .rk-flow-table tbody th {
    width: 25%;
    color: var(--rk-dark);
    background: var(--rk-soft);
  }

  #rk-flow-guide .rk-flow-table td {
    color: var(--rk-text);
    font-size: 0.9rem;
  }

  #rk-flow-guide .rk-flow-lab {
    overflow: hidden;
    margin-top: 30px;
    border: 1px solid #b9dbe6;
    border-radius: 28px;
    background: var(--rk-white);
    box-shadow: 0 22px 55px rgba(16, 37, 54, 0.1);
  }

  #rk-flow-guide .rk-flow-tool-head {
    padding: 28px clamp(24px, 5vw, 46px);
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 20%, rgba(255, 106, 61, 0.28), transparent 30%),
      linear-gradient(128deg, #102b3d, #12516b);
  }

  #rk-flow-guide .rk-flow-tool-head h3 {
    margin-bottom: 8px;
    color: var(--rk-white);
    font-size: clamp(1.35rem, 3vw, 2rem);
  }

  #rk-flow-guide .rk-flow-tool-head p {
    max-width: 850px;
    margin-bottom: 0;
    color: #d5eaf1;
  }

  #rk-flow-guide .rk-flow-lab-grid {
    display: grid;
    grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
    align-items: stretch;
  }

  #rk-flow-guide .rk-flow-device-stage {
    position: relative;
    display: grid;
    place-items: center;
    min-height: 640px;
    padding: 28px;
    border-right: 1px solid rgba(255, 255, 255, 0.1);
    background:
      radial-gradient(circle at 50% 38%, rgba(37, 199, 216, 0.14), transparent 35%),
      linear-gradient(145deg, #0d2232, #132f42);
  }

  #rk-flow-guide .rk-flow-device-svg {
    width: min(100%, 390px);
    height: auto;
    overflow: visible;
    filter: drop-shadow(0 24px 24px rgba(0, 0, 0, 0.22));
  }

  #rk-flow-guide .rk-flow-svg-label {
    fill: #c9e1e9;
    font-family: Inter, ui-sans-serif, system-ui, sans-serif;
    font-size: 14px;
    font-weight: 850;
  }

  #rk-flow-guide .rk-flow-svg-unit {
    fill: #78efff;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: 0.08em;
  }

  #rk-flow-guide .rk-flow-svg-float {
    transform: translateY(var(--rk-flow-offset, 0px));
    transition: transform 240ms ease;
  }

  #rk-flow-guide .rk-flow-device-svg.is-jumping .rk-flow-svg-float {
    animation: rk-flow-jump 0.36s infinite alternate ease-in-out;
  }

  #rk-flow-guide .rk-flow-device-svg.is-dirty .rk-flow-svg-window {
    fill: rgba(183, 157, 79, 0.42);
  }

  @keyframes rk-flow-jump {
    from { transform: translateY(calc(var(--rk-flow-offset, 0px) - 9px)); }
    to { transform: translateY(calc(var(--rk-flow-offset, 0px) + 9px)); }
  }

  #rk-flow-guide .rk-flow-part-buttons {
    position: absolute;
    right: 18px;
    bottom: 18px;
    left: 18px;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 7px;
  }

  #rk-flow-guide .rk-flow-part-button {
    padding: 7px 10px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 999px;
    color: #d9edf4;
    background: rgba(255, 255, 255, 0.07);
    cursor: pointer;
    font-size: 0.68rem;
    font-weight: 850;
  }

  #rk-flow-guide .rk-flow-part-button.is-active {
    border-color: var(--rk-cyan);
    color: var(--rk-dark);
    background: var(--rk-cyan);
  }

  #rk-flow-guide .rk-flow-lab-panel {
    min-width: 0;
    padding: clamp(25px, 4vw, 42px);
    background: var(--rk-white);
  }

  #rk-flow-guide .rk-flow-part-info {
    margin-bottom: 24px;
    padding: 19px;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    background: var(--rk-soft);
  }

  #rk-flow-guide .rk-flow-part-info h4 {
    margin-bottom: 6px;
  }

  #rk-flow-guide .rk-flow-part-info p {
    margin-bottom: 0;
    color: var(--rk-text);
    font-size: 0.84rem;
  }

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

  #rk-flow-guide .rk-flow-field {
    min-width: 0;
  }

  #rk-flow-guide .rk-flow-field.is-wide {
    grid-column: 1 / -1;
  }

  #rk-flow-guide .rk-flow-field > label {
    display: block;
    margin-bottom: 7px;
    color: var(--rk-dark);
    font-size: 0.76rem;
    font-weight: 900;
    line-height: 1.35;
  }

  #rk-flow-guide .rk-flow-field input[type="number"],
  #rk-flow-guide .rk-flow-field select {
    width: 100%;
    min-height: 48px;
    padding: 10px 12px;
    border: 1px solid #bcd0d9;
    border-radius: 11px;
    outline: 0;
    color: var(--rk-ink);
    background: var(--rk-white);
    font-size: 0.87rem;
  }

  #rk-flow-guide .rk-flow-field input:focus,
  #rk-flow-guide .rk-flow-field select:focus {
    border-color: var(--rk-blue);
    box-shadow: 0 0 0 4px rgba(7, 143, 190, 0.12);
  }

  #rk-flow-guide .rk-flow-range-wrap {
    padding: 15px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    background: var(--rk-soft);
  }

  #rk-flow-guide .rk-flow-range-head {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 9px;
    color: var(--rk-dark);
    font-size: 0.78rem;
    font-weight: 900;
  }

  #rk-flow-guide input[type="range"] {
    width: 100%;
    accent-color: var(--rk-blue);
    cursor: pointer;
  }

  #rk-flow-guide .rk-flow-live-result {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    margin-top: 20px;
  }

  #rk-flow-guide .rk-flow-live-stat {
    padding: 15px 12px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    text-align: center;
    background: var(--rk-white);
  }

  #rk-flow-guide .rk-flow-live-stat span {
    display: block;
    color: var(--rk-muted);
    font-size: 0.66rem;
    font-weight: 850;
    letter-spacing: 0.05em;
    text-transform: uppercase;
  }

  #rk-flow-guide .rk-flow-live-stat strong {
    display: block;
    margin-top: 4px;
    color: var(--rk-dark);
    font-size: 1.2rem;
    line-height: 1.2;
  }

  #rk-flow-guide .rk-flow-state-box {
    margin-top: 18px;
    padding: 18px;
    border: 1px solid #b7e3d5;
    border-radius: 16px;
    background: var(--rk-green-soft);
  }

  #rk-flow-guide .rk-flow-state-box.is-warning {
    border-color: #ecd58a;
    background: var(--rk-yellow-soft);
  }

  #rk-flow-guide .rk-flow-state-box.is-danger {
    border-color: #efbbb5;
    background: var(--rk-red-soft);
  }

  #rk-flow-guide .rk-flow-state-box h4 {
    margin-bottom: 6px;
  }

  #rk-flow-guide .rk-flow-state-box p {
    margin-bottom: 0;
    color: var(--rk-text);
    font-size: 0.83rem;
  }

  #rk-flow-guide .rk-flow-tool-note {
    margin: 0;
    padding: 18px clamp(24px, 5vw, 46px);
    border-top: 1px solid var(--rk-line);
    color: var(--rk-muted);
    background: #f8fbfc;
    font-size: 0.77rem;
    line-height: 1.55;
  }

  #rk-flow-guide .rk-flow-manifold {
    overflow: hidden;
    margin-top: 30px;
    border: 1px solid #b9dbe6;
    border-radius: 28px;
    background: var(--rk-white);
    box-shadow: 0 22px 55px rgba(16, 37, 54, 0.1);
  }

  #rk-flow-guide .rk-flow-manifold-controls {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 13px;
    padding: 22px clamp(22px, 4vw, 38px);
    border-bottom: 1px solid var(--rk-line);
    background: #f8fbfc;
  }

  #rk-flow-guide .rk-flow-scenario-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    padding: 18px clamp(22px, 4vw, 38px);
    border-bottom: 1px solid var(--rk-line);
  }

  #rk-flow-guide .rk-flow-scenario-button {
    padding: 9px 13px;
    border: 1px solid #b8cfd9;
    border-radius: 999px;
    color: var(--rk-navy);
    background: var(--rk-white);
    cursor: pointer;
    font-size: 0.73rem;
    font-weight: 850;
  }

  #rk-flow-guide .rk-flow-scenario-button:hover,
  #rk-flow-guide .rk-flow-scenario-button:focus-visible,
  #rk-flow-guide .rk-flow-scenario-button.is-active {
    border-color: var(--rk-blue);
    outline: 0;
    color: var(--rk-white);
    background: var(--rk-navy);
  }

  #rk-flow-guide .rk-flow-meters-grid {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 12px;
    padding: 26px clamp(18px, 3vw, 32px);
    background:
      linear-gradient(180deg, rgba(37, 199, 216, 0.04), transparent 25%),
      var(--rk-white);
  }

  #rk-flow-guide .rk-flow-loop-card {
    min-width: 0;
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-white);
  }

  #rk-flow-guide .rk-flow-loop-head {
    padding: 14px 12px;
    color: var(--rk-white);
    text-align: center;
    background: var(--rk-navy);
  }

  #rk-flow-guide .rk-flow-loop-head strong {
    display: block;
    font-size: 0.82rem;
    line-height: 1.25;
  }

  #rk-flow-guide .rk-flow-loop-head span {
    display: block;
    margin-top: 3px;
    color: #c8dce4;
    font-size: 0.64rem;
    font-weight: 750;
  }

  #rk-flow-guide .rk-flow-mini-meter-wrap {
    position: relative;
    display: grid;
    place-items: center;
    min-height: 300px;
    padding: 20px 8px;
    background: linear-gradient(180deg, #eff7fa, #f9fbfc);
  }

  #rk-flow-guide .rk-flow-mini-meter {
    position: relative;
    width: 78px;
    height: 245px;
  }

  #rk-flow-guide .rk-flow-mini-scale {
    position: absolute;
    top: 0;
    left: 0;
    width: 25px;
    height: 100%;
    color: var(--rk-muted);
    font-size: 0.6rem;
    font-weight: 850;
  }

  #rk-flow-guide .rk-flow-mini-scale span {
    position: absolute;
    right: 0;
    transform: translateY(-50%);
  }

  #rk-flow-guide .rk-flow-mini-tube {
    position: absolute;
    top: 0;
    right: 5px;
    width: 42px;
    height: 100%;
    overflow: hidden;
    border: 4px solid #9cb7c2;
    border-radius: 14px 14px 18px 18px;
    background:
      repeating-linear-gradient(180deg, transparent 0, transparent 39px, rgba(16, 37, 54, 0.12) 40px, transparent 41px),
      linear-gradient(90deg, rgba(255, 255, 255, 0.78), rgba(158, 218, 229, 0.28), rgba(255, 255, 255, 0.68));
    box-shadow: inset 6px 0 9px rgba(255, 255, 255, 0.65);
  }

  #rk-flow-guide .rk-flow-mini-float {
    position: absolute;
    top: 50%;
    right: 3px;
    left: 3px;
    height: 16px;
    border: 2px solid #9e2b22;
    border-radius: 6px;
    background: linear-gradient(180deg, #ff735f, #cf3129);
    box-shadow: 0 2px 5px rgba(125, 25, 18, 0.25);
    transform: translateY(-50%);
    transition: top 220ms ease;
  }

  #rk-flow-guide .rk-flow-mini-target {
    position: absolute;
    z-index: 3;
    top: 50%;
    right: -9px;
    left: -9px;
    height: 3px;
    border-radius: 999px;
    background: var(--rk-green);
    box-shadow: 0 0 0 4px rgba(22, 131, 107, 0.13);
    transition: top 220ms ease;
  }

  #rk-flow-guide .rk-flow-mini-target::after {
    position: absolute;
    top: -8px;
    right: -7px;
    color: var(--rk-green);
    content: "cel";
    font-size: 0.55rem;
    font-weight: 950;
    text-transform: uppercase;
  }

  #rk-flow-guide .rk-flow-loop-status {
    position: absolute;
    right: 8px;
    bottom: 8px;
    left: 8px;
    padding: 6px 7px;
    border-radius: 9px;
    color: var(--rk-white);
    background: var(--rk-green);
    font-size: 0.61rem;
    font-weight: 900;
    line-height: 1.25;
    text-align: center;
  }

  #rk-flow-guide .rk-flow-loop-status.is-low,
  #rk-flow-guide .rk-flow-loop-status.is-high {
    background: var(--rk-orange);
  }

  #rk-flow-guide .rk-flow-loop-status.is-zero,
  #rk-flow-guide .rk-flow-loop-status.is-limit {
    background: var(--rk-red);
  }

  #rk-flow-guide .rk-flow-loop-controls {
    padding: 13px;
  }

  #rk-flow-guide .rk-flow-loop-field {
    margin-bottom: 10px;
  }

  #rk-flow-guide .rk-flow-loop-field:last-child {
    margin-bottom: 0;
  }

  #rk-flow-guide .rk-flow-loop-field label {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 4px;
    color: var(--rk-muted);
    font-size: 0.61rem;
    font-weight: 850;
    line-height: 1.25;
  }

  #rk-flow-guide .rk-flow-loop-field input[type="number"] {
    width: 100%;
    min-height: 36px;
    padding: 6px 8px;
    border: 1px solid #c2d5dd;
    border-radius: 8px;
    outline: 0;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: 0.72rem;
  }

  #rk-flow-guide .rk-flow-loop-field input[type="range"] {
    display: block;
  }

  #rk-flow-guide .rk-flow-manifold-summary {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    padding: 22px clamp(22px, 4vw, 38px);
    border-top: 1px solid var(--rk-line);
    background: #f8fbfc;
  }

  #rk-flow-guide .rk-flow-summary-card {
    padding: 16px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    text-align: center;
    background: var(--rk-white);
  }

  #rk-flow-guide .rk-flow-summary-card span {
    display: block;
    color: var(--rk-muted);
    font-size: 0.65rem;
    font-weight: 850;
    letter-spacing: 0.05em;
    text-transform: uppercase;
  }

  #rk-flow-guide .rk-flow-summary-card strong {
    display: block;
    margin-top: 4px;
    color: var(--rk-dark);
    font-size: 1.15rem;
    line-height: 1.2;
  }

  #rk-flow-guide .rk-flow-chart {
    display: grid;
    gap: 13px;
    padding: 25px clamp(22px, 4vw, 38px);
    border-top: 1px solid var(--rk-line);
  }

  #rk-flow-guide .rk-flow-chart-row {
    display: grid;
    grid-template-columns: 95px minmax(0, 1fr) 70px;
    gap: 12px;
    align-items: center;
    font-size: 0.75rem;
    font-weight: 850;
  }

  #rk-flow-guide .rk-flow-chart-bars {
    position: relative;
    height: 30px;
    overflow: hidden;
    border-radius: 9px;
    background: #e8f0f3;
  }

  #rk-flow-guide .rk-flow-chart-target,
  #rk-flow-guide .rk-flow-chart-actual {
    position: absolute;
    left: 0;
    border-radius: 0 999px 999px 0;
    transition: width 220ms ease;
  }

  #rk-flow-guide .rk-flow-chart-target {
    top: 4px;
    height: 9px;
    background: var(--rk-green);
  }

  #rk-flow-guide .rk-flow-chart-actual {
    bottom: 4px;
    height: 9px;
    background: var(--rk-orange);
  }

  #rk-flow-guide .rk-flow-chart-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    padding: 0 clamp(22px, 4vw, 38px) 24px;
    color: var(--rk-muted);
    font-size: 0.68rem;
    font-weight: 800;
  }

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

  #rk-flow-guide .rk-flow-chart-legend i {
    width: 18px;
    height: 7px;
    border-radius: 999px;
  }

  #rk-flow-guide .rk-flow-cta {
    margin-top: clamp(30px, 5vw, 54px);
    padding: clamp(30px, 5vw, 50px);
    border-radius: 27px;
    color: #e7f5fa;
    background:
      radial-gradient(circle at 90% 10%, rgba(255, 106, 61, 0.32), transparent 34%),
      linear-gradient(132deg, #10283a, #174b61);
  }

  #rk-flow-guide .rk-flow-cta h2,
  #rk-flow-guide .rk-flow-final-cta h2 {
    color: #ffffff !important;
  }

  #rk-flow-guide .rk-flow-cta p,
  #rk-flow-guide .rk-flow-final-cta p {
    max-width: 890px;
    color: #deedf3;
  }

  #rk-flow-guide .rk-flow-cta-button {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    min-height: 56px;
    padding: 14px 25px;
    border-radius: 16px;
    color: #ffffff !important;
    background: linear-gradient(90deg, var(--rk-orange), #f24a3e);
    box-shadow: 0 15px 30px rgba(242, 74, 62, 0.25);
    font-weight: 950;
    line-height: 1.25;
    text-align: center;
    text-decoration: none;
  }

  #rk-flow-guide .rk-flow-cta-button:hover,
  #rk-flow-guide .rk-flow-cta-button:focus-visible {
    outline: 3px solid rgba(255, 255, 255, 0.3);
    transform: translateY(-1px);
  }

  #rk-flow-guide .rk-flow-disclosure {
    display: block;
    margin-top: 14px;
    color: #bcd2dc;
    font-size: 0.72rem;
    line-height: 1.45;
  }

  #rk-flow-guide .rk-flow-steps {
    counter-reset: rkstep;
    display: grid;
    gap: 15px;
    margin-top: 27px;
  }

  #rk-flow-guide .rk-flow-step {
    counter-increment: rkstep;
    display: grid;
    grid-template-columns: 52px 1fr;
    gap: 16px;
    align-items: start;
    padding: 20px;
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    background: var(--rk-soft);
  }

  #rk-flow-guide .rk-flow-step::before {
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    border-radius: 14px;
    color: var(--rk-white);
    background: var(--rk-navy);
    content: counter(rkstep, decimal-leading-zero);
    font-size: 0.78rem;
    font-weight: 950;
  }

  #rk-flow-guide .rk-flow-step h3 {
    margin-bottom: 4px;
  }

  #rk-flow-guide .rk-flow-step p {
    margin-bottom: 0;
    color: var(--rk-text);
    font-size: 0.9rem;
  }

  #rk-flow-guide .rk-flow-diagnostic {
    display: grid;
    grid-template-columns: 0.72fr 1.28fr;
    gap: 22px;
    margin-top: 28px;
  }

  #rk-flow-guide .rk-flow-diagnostic-buttons {
    display: grid;
    gap: 10px;
  }

  #rk-flow-guide .rk-flow-diagnostic-button {
    padding: 15px 16px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    color: var(--rk-dark);
    background: var(--rk-white);
    cursor: pointer;
    font-weight: 850;
    text-align: left;
  }

  #rk-flow-guide .rk-flow-diagnostic-button.is-active {
    border-color: var(--rk-blue);
    color: var(--rk-white);
    background: var(--rk-navy);
  }

  #rk-flow-guide .rk-flow-diagnostic-result {
    padding: 28px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-soft);
  }

  #rk-flow-guide .rk-flow-diagnostic-result ul {
    margin-bottom: 0;
    padding-left: 1.2em;
    color: var(--rk-text);
  }

  #rk-flow-guide .rk-flow-checklist {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin-top: 25px;
  }

  #rk-flow-guide .rk-flow-checkitem {
    position: relative;
    padding: 16px 16px 16px 49px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    color: var(--rk-text);
    background: var(--rk-white);
    font-size: 0.88rem;
  }

  #rk-flow-guide .rk-flow-checkitem::before {
    position: absolute;
    top: 16px;
    left: 16px;
    display: grid;
    place-items: center;
    width: 23px;
    height: 23px;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-green);
    content: "✓";
    font-size: 0.75rem;
    font-weight: 950;
  }

  #rk-flow-guide .rk-flow-download {
    display: grid;
    grid-template-columns: 0.72fr 1.28fr;
    gap: 26px;
    align-items: center;
    margin-top: 28px;
    padding: clamp(24px, 5vw, 42px);
    border: 1px solid #b9dce7;
    border-radius: 24px;
    background: linear-gradient(135deg, var(--rk-cyan-soft), #f8fbfc);
  }

  #rk-flow-guide .rk-flow-download-preview {
    display: grid;
    place-items: center;
    min-height: 220px;
    border-radius: 18px;
    color: var(--rk-white);
    background:
      linear-gradient(160deg, rgba(255, 106, 61, 0.28), transparent 45%),
      var(--rk-navy);
  }

  #rk-flow-guide .rk-flow-download-preview svg {
    width: 135px;
    fill: none;
    stroke: #72efff;
    stroke-width: 3;
  }

  #rk-flow-guide .rk-flow-download-link {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    min-height: 52px;
    padding: 12px 20px;
    border-radius: 14px;
    color: #ffffff !important;
    background: var(--rk-blue);
    font-weight: 900;
    text-decoration: none;
  }

  #rk-flow-guide .rk-flow-faq {
    display: grid;
    gap: 11px;
    margin-top: 25px;
  }

  #rk-flow-guide .rk-flow-faq details {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 15px;
    background: var(--rk-white);
  }

  #rk-flow-guide .rk-flow-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-flow-guide .rk-flow-faq summary::-webkit-details-marker {
    display: none;
  }

  #rk-flow-guide .rk-flow-faq summary::after {
    position: absolute;
    top: 50%;
    right: 19px;
    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%);
  }

  #rk-flow-guide .rk-flow-faq details[open] summary::after {
    content: "−";
  }

  #rk-flow-guide .rk-flow-faq-answer {
    padding: 0 20px 18px;
    color: var(--rk-text);
    font-size: 0.92rem;
  }

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

  #rk-flow-guide .rk-flow-source-box {
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    background: var(--rk-soft);
  }

  #rk-flow-guide .rk-flow-source-box p:last-child {
    margin-bottom: 0;
  }

  #rk-flow-guide .rk-flow-update {
    margin-top: 18px;
    padding: 16px 18px;
    border: 1px solid #badde7;
    border-radius: 14px;
    color: var(--rk-dark);
    background: var(--rk-cyan-soft);
    font-size: 0.82rem;
    font-weight: 850;
  }

  #rk-flow-guide .rk-flow-author {
    overflow: hidden;
    margin: clamp(38px, 6vw, 70px);
    border: 1px solid var(--rk-line);
    border-radius: 28px;
    background: var(--rk-white);
    box-shadow: 0 25px 55px rgba(16, 37, 54, 0.09);
  }

  #rk-flow-guide .rk-flow-author > input {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    opacity: 0;
    pointer-events: none;
  }

  #rk-flow-guide .rk-flow-author-head {
    display: flex;
    justify-content: space-between;
    gap: 20px;
    align-items: flex-start;
    padding: 30px 34px;
    border-bottom: 6px solid var(--rk-cyan);
    color: #dceaf0;
    background: var(--rk-dark);
  }

  #rk-flow-guide .rk-flow-author-head h2 {
    margin-bottom: 6px;
    color: #ffffff !important;
  }

  #rk-flow-guide .rk-flow-author-head p {
    margin-bottom: 0;
    color: #dceaf0;
  }

  #rk-flow-guide .rk-flow-author-mark {
    flex: 0 0 auto;
    padding: 10px 14px;
    border: 1px solid rgba(37, 199, 216, 0.5);
    border-radius: 999px;
    color: #70efff;
    font-size: 0.7rem;
    font-weight: 950;
    letter-spacing: 0.06em;
    white-space: nowrap;
  }

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

  #rk-flow-guide .rk-flow-author-side {
    padding: 38px 28px;
    border-right: 1px solid var(--rk-line);
    text-align: center;
    background: #f3f8fa;
  }

  #rk-flow-guide .rk-flow-author-photo {
    width: 176px;
    margin: 0 auto 22px;
    overflow: hidden;
    border: 9px solid var(--rk-white);
    border-radius: 50%;
    box-shadow: 0 16px 35px rgba(16, 37, 54, 0.14);
    aspect-ratio: 1;
  }

  #rk-flow-guide .rk-flow-author-photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

  #rk-flow-guide .rk-flow-author-name {
    color: var(--rk-dark);
    font-size: 1.35rem;
    font-weight: 950;
    letter-spacing: -0.03em;
  }

  #rk-flow-guide .rk-flow-author-role {
    margin-top: 7px;
    color: var(--rk-blue);
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.04em;
    line-height: 1.45;
    text-transform: uppercase;
  }

  #rk-flow-guide .rk-flow-author-social-label {
    margin-top: 25px;
    color: var(--rk-muted);
    font-size: 0.7rem;
    font-weight: 850;
    text-transform: uppercase;
  }

  #rk-flow-guide .rk-flow-author-social {
    display: flex;
    justify-content: center;
    gap: 10px;
    margin-top: 10px;
  }

  #rk-flow-guide .rk-flow-author-social a {
    display: grid;
    place-items: center;
    width: 43px;
    height: 43px;
    border: 1px solid #bdd7e1;
    border-radius: 13px;
    color: var(--rk-navy);
    background: var(--rk-white);
    text-decoration: none;
  }

  #rk-flow-guide .rk-flow-author-social a:hover,
  #rk-flow-guide .rk-flow-author-social a:focus-visible {
    border-color: var(--rk-cyan);
    outline: 0;
    color: var(--rk-blue);
    background: var(--rk-cyan-soft);
  }

  #rk-flow-guide .rk-flow-author-social svg {
    width: 21px;
    height: 21px;
    fill: currentColor;
  }

  #rk-flow-guide .rk-flow-author-main {
    min-width: 0;
    padding: 38px;
  }

  #rk-flow-guide .rk-flow-author-quote {
    position: relative;
    margin: 0 0 25px;
    padding: 27px 28px 27px 74px;
    border: 0;
    border-radius: 20px;
    background: var(--rk-cyan-soft);
  }

  #rk-flow-guide .rk-flow-author-quote::before {
    position: absolute;
    top: 6px;
    left: 24px;
    color: var(--rk-cyan);
    content: "“";
    font-family: Georgia, serif;
    font-size: 4.5rem;
    font-weight: 900;
    line-height: 1;
  }

  #rk-flow-guide .rk-flow-author-quote p {
    margin-bottom: 0;
    color: var(--rk-dark);
    font-weight: 850;
    font-style: italic;
  }

  #rk-flow-guide .rk-flow-author-tabs {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 14px 14px 0 0;
  }

  #rk-flow-guide .rk-flow-author-tab {
    padding: 13px 8px;
    border-right: 1px solid var(--rk-line);
    color: var(--rk-muted);
    background: var(--rk-soft);
    cursor: pointer;
    font-size: 0.72rem;
    font-weight: 900;
    text-align: center;
    text-transform: uppercase;
  }

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

  #rk-flow-guide .rk-flow-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-flow-guide .rk-flow-author-panel p:last-child {
    margin-bottom: 0;
  }

  #rk-flow-author-about:checked ~ .rk-flow-author-layout .rk-flow-author-panel-about,
  #rk-flow-author-exp:checked ~ .rk-flow-author-layout .rk-flow-author-panel-exp,
  #rk-flow-author-sites:checked ~ .rk-flow-author-layout .rk-flow-author-panel-sites {
    display: block;
  }

  #rk-flow-author-about:checked ~ .rk-flow-author-layout label[for="rk-flow-author-about"],
  #rk-flow-author-exp:checked ~ .rk-flow-author-layout label[for="rk-flow-author-exp"],
  #rk-flow-author-sites:checked ~ .rk-flow-author-layout label[for="rk-flow-author-sites"] {
    color: var(--rk-blue);
    background: var(--rk-white);
    box-shadow: inset 0 -4px 0 var(--rk-blue);
  }

  #rk-flow-guide .rk-flow-site-links {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
  }

  #rk-flow-guide .rk-flow-site-links a {
    padding: 8px 11px;
    border: 1px solid var(--rk-line);
    border-radius: 999px;
    background: var(--rk-soft);
    font-size: 0.78rem;
    text-decoration: none;
  }

  #rk-flow-guide .rk-flow-final-cta {
    margin: 0 clamp(38px, 6vw, 70px) clamp(38px, 6vw, 70px);
    padding: clamp(34px, 6vw, 58px);
    border-radius: 28px;
    color: #e6f5fa;
    background:
      radial-gradient(circle at 91% 10%, rgba(255, 106, 61, 0.34), transparent 33%),
      linear-gradient(132deg, #10283a, #174b61);
  }

  @media (max-width: 980px) {
    #rk-flow-guide .rk-flow-lab-grid,
    #rk-flow-guide .rk-flow-author-layout,
    #rk-flow-guide .rk-flow-diagnostic,
    #rk-flow-guide .rk-flow-download {
      grid-template-columns: 1fr;
    }

    #rk-flow-guide .rk-flow-device-stage,
    #rk-flow-guide .rk-flow-author-side {
      border-right: 0;
      border-bottom: 1px solid var(--rk-line);
    }

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

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

  @media (max-width: 680px) {
    #rk-flow-guide {
      margin: 14px auto 42px;
      font-size: 16px;
    }

    #rk-flow-guide .rk-flow-shell {
      border-radius: 20px;
    }

    #rk-flow-guide .rk-flow-hero,
    #rk-flow-guide .rk-flow-section {
      padding: 30px 20px;
    }

    #rk-flow-guide .rk-flow-nav {
      gap: 8px;
      padding: 16px;
    }

    #rk-flow-guide .rk-flow-nav strong {
      width: 100%;
    }

    #rk-flow-guide .rk-flow-nav a {
      flex: 1 1 calc(50% - 8px);
      justify-content: center;
      white-space: normal;
      text-align: center;
    }

    #rk-flow-guide .rk-flow-answer,
    #rk-flow-guide .rk-flow-grid-3,
    #rk-flow-guide .rk-flow-grid-2,
    #rk-flow-guide .rk-flow-errors,
    #rk-flow-guide .rk-flow-field-grid,
    #rk-flow-guide .rk-flow-live-result,
    #rk-flow-guide .rk-flow-manifold-controls,
    #rk-flow-guide .rk-flow-meters-grid,
    #rk-flow-guide .rk-flow-manifold-summary,
    #rk-flow-guide .rk-flow-checklist {
      grid-template-columns: 1fr;
    }

    #rk-flow-guide .rk-flow-device-stage {
      min-height: 590px;
      padding: 20px 12px 110px;
    }

    #rk-flow-guide .rk-flow-part-buttons {
      right: 10px;
      bottom: 14px;
      left: 10px;
    }

    #rk-flow-guide .rk-flow-mini-meter-wrap {
      min-height: 280px;
    }

    #rk-flow-guide .rk-flow-table-wrap {
      overflow: visible;
      border: 0;
      border-radius: 0;
    }

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

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

    #rk-flow-guide .rk-flow-table tr {
      overflow: hidden;
      margin-bottom: 14px;
      border: 1px solid var(--rk-line);
      border-radius: 15px;
      background: var(--rk-white);
    }

    #rk-flow-guide .rk-flow-table tbody th,
    #rk-flow-guide .rk-flow-table td {
      padding: 13px 15px;
      border-right: 0;
      border-bottom: 1px solid var(--rk-line);
    }

    #rk-flow-guide .rk-flow-table td::before {
      display: block;
      margin-bottom: 3px;
      color: var(--rk-blue);
      content: attr(data-label);
      font-size: 0.68rem;
      font-weight: 950;
      letter-spacing: 0.06em;
      text-transform: uppercase;
    }

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

    #rk-flow-guide .rk-flow-chart-row {
      grid-template-columns: 70px minmax(0, 1fr) 55px;
      gap: 8px;
    }

    #rk-flow-guide .rk-flow-step {
      grid-template-columns: 42px 1fr;
      padding: 16px;
    }

    #rk-flow-guide .rk-flow-step::before {
      width: 38px;
      height: 38px;
    }

    #rk-flow-guide .rk-flow-author,
    #rk-flow-guide .rk-flow-final-cta {
      margin: 28px 16px;
    }

    #rk-flow-guide .rk-flow-author-head {
      display: block;
      padding: 25px 22px;
    }

    #rk-flow-guide .rk-flow-author-mark {
      display: inline-flex;
      margin-top: 17px;
      white-space: normal;
    }

    #rk-flow-guide .rk-flow-author-main {
      padding: 24px 18px;
    }

    #rk-flow-guide .rk-flow-author-quote {
      padding: 65px 20px 22px;
    }

    #rk-flow-guide .rk-flow-author-quote::before {
      top: 4px;
      left: 20px;
    }

    #rk-flow-guide .rk-flow-author-tabs {
      grid-template-columns: 1fr;
      border-radius: 13px 13px 0 0;
    }

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

    #rk-flow-guide .rk-flow-cta-button,
    #rk-flow-guide .rk-flow-download-link {
      width: 100%;
    }
  }

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

<article id="rk-flow-guide" aria-label="Rotametr i regulacja przepływu w ogrzewaniu podłogowym">
  <div class="rk-flow-shell">
    <div class="rk-flow-progress-track" aria-hidden="true"><div class="rk-flow-progress" id="rk-flow-progress"></div></div>

    <header class="rk-flow-hero">
      <div class="rk-flow-hero-inner">
        <span class="rk-flow-eyebrow"><b aria-hidden="true"></b> Hydraulika podłogówki • aktualizacja 2026</span>
        <div class="rk-flow-hero-title">Rotametr pokazuje przepływ. Projekt mówi, jaki przepływ ma być</div>
        <p class="rk-flow-hero-lead">Naucz się prawidłowo odczytywać wskaźnik, oblicz przepływ wynikający z mocy pętli i zobacz na pięciu animowanych rotametrach, co dzieje się z rozdzielaczem przed oraz po równoważeniu hydraulicznym.</p>
        <div class="rk-flow-meta">
          <span><i aria-hidden="true"></i> Czytanie: około 20 minut</span>
          <span><i aria-hidden="true"></i> Dwa narzędzia interaktywne</span>
          <span><i aria-hidden="true"></i> Aktualizacja: 29 sierpnia 2026 r.</span>
        </div>
      </div>
    </header>

    <nav class="rk-flow-nav" aria-label="Spis treści artykułu">
      <strong>Na skróty</strong>
      <a href="#rk-flow-answer">Szybka odpowiedź</a>
      <a href="#rk-flow-anatomy">Budowa i odczyt</a>
      <a href="#rk-flow-manifold-tool">Symulator 5 pętli</a>
      <a href="#rk-flow-reading">Skala i montaż</a>
      <a href="#rk-flow-regulation">Regulacja</a>
      <a href="#rk-flow-diagnostics">Diagnostyka</a>
      <a href="#rk-flow-checklist">Checklista</a>
      <a href="#rk-flow-faq">FAQ</a>
    </nav>

    <main>
      <section class="rk-flow-section" id="rk-flow-answer">
        <span class="rk-flow-kicker">Odpowiedź w 60 sekund</span>
        <h2>Co pokazuje rotametr w ogrzewaniu podłogowym?</h2>
        <p class="rk-flow-intro">Rotametr pokazuje chwilowy przepływ objętościowy przez konkretną pętlę, najczęściej w litrach na minutę. Nie mierzy bezpośrednio mocy cieplnej, temperatury podłogi ani sprawności instalacji. Prawidłową wartością nie jest jedna uniwersalna liczba, lecz przepływ obliczony dla danego obwodu.</p>

        <div class="rk-flow-answer">
          <div class="rk-flow-answer-main">
            <h3>Najważniejsza zasada</h3>
            <p><strong>Przepływ projektowy wynika przede wszystkim z mocy przekazywanej przez pętlę i przyjętego ΔT.</strong> Długość rury wpływa na opór hydrauliczny i decyduje, czy pompa oraz zawór pozwolą wymaganą wartość osiągnąć.</p>
          </div>
          <div class="rk-flow-answer-side">
            <h3>Nie ustawiaj wszystkich pętli jednakowo</h3>
            <p>Łazienka, salon i sypialnia mogą wymagać różnych przepływów, nawet gdy mają podobną długość rury. Decydują moc obwodu, parametry wody, powierzchnia, rozstaw rur i ograniczenia zastosowanej podłogi.</p>
          </div>
        </div>

        <div class="rk-flow-formula" aria-label="Wzór na przepływ w pętli ogrzewania podłogowego">
          <strong>V̇ [l/min] ≈ Q [W] ÷ (69,8 × ΔT [K])</strong>
          <span>Dla wody w typowych temperaturach ogrzewania podłogowego; przy innym medium należy uwzględnić jego właściwości.</span>
        </div>

        <div class="rk-flow-grid-3">
          <article class="rk-flow-card"><span class="rk-flow-card-number">Rotametr mierzy</span><h3>Przepływ objętościowy</h3><p>Odczyt informuje, ile litrów wody przepływa przez pętlę w ciągu minuty. Zakres skali zależy od konkretnego urządzenia.</p></article>
          <article class="rk-flow-card"><span class="rk-flow-card-number">Rotametr nie mierzy</span><h3>Mocy i temperatury</h3><p>Do określenia przenoszonej mocy potrzebny jest również spadek temperatury pomiędzy zasilaniem i powrotem.</p></article>
          <article class="rk-flow-card"><span class="rk-flow-card-number">Regulacja służy</span><h3>Równoważeniu obwodów</h3><p>Ograniczenie przepływu w części pętli zmienia warunki całego równoległego układu. Każdą korektę trzeba zweryfikować na pozostałych wskaźnikach.</p></article>
        </div>
      </section>

      <section class="rk-flow-section" id="rk-flow-anatomy">
        <span class="rk-flow-kicker">Interaktywna anatomia urządzenia</span>
        <h2>Budowa rotametru i nauka prawidłowego odczytu</h2>
        <p class="rk-flow-intro">Kliknij element urządzenia, ustaw parametry pętli i porusz suwakiem rzeczywistego odczytu. Model pokaże położenie wskaźnika, przepływ wymagany oraz różnicę pomiędzy projektem a stanem instalacji.</p>

        <div class="rk-flow-lab" id="rk-flow-lab">
          <div class="rk-flow-tool-head">
            <h3>Laboratorium rotametru</h3>
            <p>Model jest edukacyjnym przekrojem funkcjonalnym. Konkretna konstrukcja, punkt odczytu, kierunek skali i sposób regulacji muszą być sprawdzone w instrukcji danego rozdzielacza.</p>
          </div>

          <div class="rk-flow-lab-grid">
            <div class="rk-flow-device-stage">
              <svg class="rk-flow-device-svg" id="rk-flow-device-svg" viewBox="0 0 380 650" role="img" aria-labelledby="rk-flow-svg-title rk-flow-svg-desc">
                <title id="rk-flow-svg-title">Interaktywny przekrój rotametru</title>
                <desc id="rk-flow-svg-desc">Przezroczysty wskaźnik przepływu ze skalą, ruchomym pływakiem, zaworem regulacyjnym, uszczelką i przyłączem do rozdzielacza.</desc>
                <defs>
                  <linearGradient id="rk-flow-metal" x1="0" x2="1"><stop offset="0" stop-color="#8ba3ad"/><stop offset="0.28" stop-color="#eef5f7"/><stop offset="0.55" stop-color="#829ba6"/><stop offset="0.82" stop-color="#f5fafb"/><stop offset="1" stop-color="#718a95"/></linearGradient>
                  <linearGradient id="rk-flow-glass" x1="0" x2="1"><stop offset="0" stop-color="#ffffff" stop-opacity="0.82"/><stop offset="0.35" stop-color="#b9edf4" stop-opacity="0.38"/><stop offset="0.7" stop-color="#ffffff" stop-opacity="0.65"/><stop offset="1" stop-color="#7fc9d7" stop-opacity="0.36"/></linearGradient>
                  <linearGradient id="rk-flow-red" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#ff826c"/><stop offset="1" stop-color="#bd281f"/></linearGradient>
                  <filter id="rk-flow-shadow"><feDropShadow dx="0" dy="7" stdDeviation="8" flood-opacity="0.25"/></filter>
                </defs>

                <rect x="28" y="548" width="324" height="72" rx="26" fill="url(#rk-flow-metal)" filter="url(#rk-flow-shadow)"/>
                <rect x="160" y="530" width="60" height="92" rx="10" fill="#526b76"/>
                <rect x="168" y="538" width="44" height="76" rx="8" fill="#243d49"/>
                <path d="M176 614v22m14-22v22m14-22v22" stroke="#a9bec7" stroke-width="4"/>
                <ellipse cx="190" cy="533" rx="43" ry="12" fill="#e14d3d" opacity="0.86"/>
                <ellipse cx="190" cy="533" rx="31" ry="7" fill="#7f1f1a" opacity="0.7"/>

                <rect x="132" y="94" width="116" height="396" rx="29" fill="#6e8a96" opacity="0.55"/>
                <rect class="rk-flow-svg-window" x="140" y="103" width="100" height="378" rx="24" fill="url(#rk-flow-glass)" stroke="#bed3db" stroke-width="4"/>
                <rect x="153" y="118" width="18" height="345" rx="9" fill="#ffffff" opacity="0.46"/>
                <rect x="213" y="118" width="10" height="345" rx="5" fill="#47b4c7" opacity="0.16"/>

                <g stroke="#58727e" stroke-width="2">
                  <path d="M118 118h20"/><path d="M123 176h15"/><path d="M118 234h20"/><path d="M123 292h15"/><path d="M118 350h20"/><path d="M123 408h15"/><path d="M118 466h20"/>
                </g>
                <g class="rk-flow-svg-label" text-anchor="end">
                  <text id="rk-flow-scale-label-0" x="110" y="123">0,0</text>
                  <text id="rk-flow-scale-label-1" x="115" y="181">0,5</text>
                  <text id="rk-flow-scale-label-2" x="110" y="239">1,0</text>
                  <text id="rk-flow-scale-label-3" x="115" y="297">1,5</text>
                  <text id="rk-flow-scale-label-4" x="110" y="355">2,0</text>
                  <text id="rk-flow-scale-label-5" x="115" y="413">2,5</text>
                  <text id="rk-flow-scale-label-6" x="110" y="471">3,0</text>
                </g>
                <text class="rk-flow-svg-unit" x="190" y="77" text-anchor="middle">L/MIN</text>

                <line id="rk-flow-big-target" x1="127" y1="280" x2="253" y2="280" stroke="#42d4a4" stroke-width="4" stroke-dasharray="7 5"/>
                <text id="rk-flow-target-label" x="260" y="285" fill="#7af3c7" font-size="12" font-weight="900">CEL</text>

                <g id="rk-flow-big-float" class="rk-flow-svg-float">
                  <rect x="147" y="108" width="86" height="27" rx="9" fill="url(#rk-flow-red)" stroke="#8f251d" stroke-width="3"/>
                  <rect x="155" y="115" width="70" height="4" rx="2" fill="#ffd0c9" opacity="0.7"/>
                  <path d="M160 136h60l-8 13h-44z" fill="#9f261f"/>
                </g>

                <path d="M190 512c-15-13-15-32 0-45 15 13 15 32 0 45z" fill="#2fcfe0" opacity="0.8"/>
                <path d="M190 451v-34" stroke="#2fcfe0" stroke-width="5" stroke-linecap="round"/>
                <path d="M180 430l10-13 10 13" fill="none" stroke="#2fcfe0" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>

                <rect x="144" y="478" width="92" height="60" rx="15" fill="url(#rk-flow-red)" stroke="#8f251d" stroke-width="4"/>
                <path d="M154 493h72m-72 13h72m-72 13h72" stroke="#ffb2a6" stroke-width="3" opacity="0.7"/>
                <ellipse cx="190" cy="538" rx="37" ry="8" fill="#1d2d35" opacity="0.55"/>
                <ellipse cx="190" cy="538" rx="27" ry="5" fill="#e4edf0"/>
                <ellipse cx="190" cy="538" rx="20" ry="4" fill="#df4537"/>
              </svg>

              <div class="rk-flow-part-buttons" aria-label="Elementy rotametru">
                <button type="button" class="rk-flow-part-button is-active" data-part="scale">Korpus i skala</button>
                <button type="button" class="rk-flow-part-button" data-part="float">Wskaźnik</button>
                <button type="button" class="rk-flow-part-button" data-part="valve">Regulacja</button>
                <button type="button" class="rk-flow-part-button" data-part="seal">Uszczelnienie</button>
                <button type="button" class="rk-flow-part-button" data-part="connection">Przyłącze</button>
              </div>
            </div>

            <div class="rk-flow-lab-panel">
              <div class="rk-flow-part-info">
                <h4 id="rk-flow-part-title">Przezroczysty korpus i skala</h4>
                <p id="rk-flow-part-copy">Korpus umożliwia obserwację elementu pomiarowego. Zakres, kierunek skali, dopuszczalna temperatura, ciśnienie i medium zależą od modelu; należy je sprawdzić w dokumentacji producenta.</p>
              </div>

              <div class="rk-flow-field-grid">
                <div class="rk-flow-field">
                  <label for="rk-flow-lab-power">Moc przypisana do pętli [W]</label>
                  <input type="number" id="rk-flow-lab-power" min="50" max="1500" step="10" value="420">
                </div>
                <div class="rk-flow-field">
                  <label for="rk-flow-lab-dt">Projektowe ΔT [K]</label>
                  <input type="number" id="rk-flow-lab-dt" min="2" max="15" step="0.5" value="5">
                </div>
                <div class="rk-flow-field">
                  <label for="rk-flow-lab-direction">Kierunek skali modelu</label>
                  <select id="rk-flow-lab-direction"><option value="zero-top">Zero u góry</option><option value="zero-bottom">Zero na dole</option></select>
                </div>
                <div class="rk-flow-field">
                  <label for="rk-flow-lab-symptom">Zachowanie wskaźnika</label>
                  <select id="rk-flow-lab-symptom"><option value="stable">Stabilny odczyt</option><option value="jumping">Pływak skacze</option><option value="stuck">Zablokowany wskaźnik</option><option value="dirty">Zabrudzony korpus</option></select>
                </div>
                <div class="rk-flow-field is-wide">
                  <div class="rk-flow-range-wrap">
                    <div class="rk-flow-range-head"><span>Rzeczywisty odczyt</span><strong id="rk-flow-lab-actual-label">1,20 l/min</strong></div>
                    <input type="range" id="rk-flow-lab-actual" min="0" max="3" step="0.05" value="1.2">
                  </div>
                </div>
              </div>

              <div class="rk-flow-live-result">
                <div class="rk-flow-live-stat"><span>Przepływ wymagany</span><strong id="rk-flow-lab-required">1,20</strong></div>
                <div class="rk-flow-live-stat"><span>Odczyt</span><strong id="rk-flow-lab-actual-stat">1,20</strong></div>
                <div class="rk-flow-live-stat"><span>Odchylenie</span><strong id="rk-flow-lab-deviation">0%</strong></div>
              </div>

              <div class="rk-flow-state-box" id="rk-flow-lab-state">
                <h4 id="rk-flow-lab-state-title">Odczyt zgodny z celem</h4>
                <p id="rk-flow-lab-state-copy">Przepływ mieści się w przyjętym paśmie tolerancji. Po każdej korekcie sprawdź jeszcze pozostałe pętle oraz stabilność pompy.</p>
              </div>
            </div>
          </div>
          <p class="rk-flow-tool-note">Model nie określa rzeczywistej charakterystyki konkretnego przepływomierza. Punkt odczytu, kierunek ruchu i sposób regulacji należy zawsze zweryfikować w instrukcji rozdzielacza.</p>
        </div>
      </section>

<section class="rk-flow-section" id="rk-flow-manifold-tool">
        <span class="rk-flow-kicker">Pięć pętli, pięć różnych wartości</span>
        <h2>Interaktywny symulator równoważenia rozdzielacza</h2>
        <p class="rk-flow-intro">Zmień moc, długość i rzeczywisty odczyt każdego obwodu. Zielona linia pokaże przepływ obliczony z mocy oraz ΔT, a czerwony wskaźnik przesunie się dokładnie tak, jak pływak na rotametrze. Długość pętli nie zmienia celu — służy do oceny ryzyka nadmiernego oporu.</p>

        <div class="rk-flow-manifold" id="rk-flow-manifold">
          <div class="rk-flow-tool-head">
            <h3>Rozdzielacz pięcioobwodowy na żywo</h3>
            <p>Ustaw parametry, porównaj cel z odczytem albo wybierz gotowy scenariusz diagnostyczny. Wszystkie wartości pozostają edytowalne.</p>
          </div>

          <div class="rk-flow-manifold-controls">
            <div class="rk-flow-field"><label for="rk-flow-global-dt">Projektowe ΔT wszystkich pętli [K]</label><input type="number" id="rk-flow-global-dt" min="2" max="15" step="0.5" value="5"></div>
            <div class="rk-flow-field"><label for="rk-flow-scale-max">Zakres skali rotametrów</label><select id="rk-flow-scale-max"><option value="3">0–3 l/min</option><option value="4">0–4 l/min</option><option value="5">0–5 l/min</option></select></div>
            <div class="rk-flow-field"><label for="rk-flow-tolerance">Tolerancja porównania</label><select id="rk-flow-tolerance"><option value="10">±10%</option><option value="15">±15%</option><option value="20">±20%</option></select></div>
          </div>

          <div class="rk-flow-scenario-buttons" aria-label="Gotowe scenariusze pracy rozdzielacza">
            <button type="button" class="rk-flow-scenario-button is-active" data-scenario="unbalanced">Układ rozregulowany</button>
            <button type="button" class="rk-flow-scenario-button" data-scenario="balanced">Ustaw według projektu</button>
            <button type="button" class="rk-flow-scenario-button" data-scenario="air">Zapowietrzona pętla</button>
            <button type="button" class="rk-flow-scenario-button" data-scenario="filter">Zabrudzony filtr</button>
            <button type="button" class="rk-flow-scenario-button" data-scenario="actuator">Zamknięty obwód</button>
            <button type="button" class="rk-flow-scenario-button" data-scenario="reset">Przywróć dane</button>
          </div>

          <div class="rk-flow-meters-grid">
            <article class="rk-flow-loop-card" data-loop="0">
              <div class="rk-flow-loop-head"><strong>Salon</strong><span>Pętla 01</span></div>
              <div class="rk-flow-mini-meter-wrap">
                <div class="rk-flow-mini-meter">
                  <div class="rk-flow-mini-scale"><span data-scale-step="0" style="top:0%">0</span><span data-scale-step="1" style="top:25%">0,75</span><span data-scale-step="2" style="top:50%">1,5</span><span data-scale-step="3" style="top:75%">2,25</span><span data-scale-step="4" style="top:100%">3</span></div>
                  <div class="rk-flow-mini-tube"><div class="rk-flow-mini-target"></div><div class="rk-flow-mini-float"></div></div>
                </div>
                <div class="rk-flow-loop-status">Odczyt prawidłowy</div>
              </div>
              <div class="rk-flow-loop-controls">
                <div class="rk-flow-loop-field"><label><span>Moc [W]</span><b class="rk-flow-loop-target-label">cel 0,00</b></label><input class="rk-flow-loop-power" type="number" min="50" max="1500" step="10" value="650"></div>
                <div class="rk-flow-loop-field"><label><span>Długość [m]</span><b>kontrola oporu</b></label><input class="rk-flow-loop-length" type="number" min="10" max="150" step="1" value="85"></div>
                <div class="rk-flow-loop-field"><label><span>Odczyt [l/min]</span><b class="rk-flow-loop-actual-label">1,10</b></label><input class="rk-flow-loop-actual" type="range" min="0" max="3" step="0.05" value="1.1"></div>
              </div>
            </article>

            <article class="rk-flow-loop-card" data-loop="1">
              <div class="rk-flow-loop-head"><strong>Kuchnia</strong><span>Pętla 02</span></div>
              <div class="rk-flow-mini-meter-wrap">
                <div class="rk-flow-mini-meter">
                  <div class="rk-flow-mini-scale"><span data-scale-step="0" style="top:0%">0</span><span data-scale-step="1" style="top:25%">0,75</span><span data-scale-step="2" style="top:50%">1,5</span><span data-scale-step="3" style="top:75%">2,25</span><span data-scale-step="4" style="top:100%">3</span></div>
                  <div class="rk-flow-mini-tube"><div class="rk-flow-mini-target"></div><div class="rk-flow-mini-float"></div></div>
                </div>
                <div class="rk-flow-loop-status">Odczyt prawidłowy</div>
              </div>
              <div class="rk-flow-loop-controls">
                <div class="rk-flow-loop-field"><label><span>Moc [W]</span><b class="rk-flow-loop-target-label">cel 0,00</b></label><input class="rk-flow-loop-power" type="number" min="50" max="1500" step="10" value="420"></div>
                <div class="rk-flow-loop-field"><label><span>Długość [m]</span><b>kontrola oporu</b></label><input class="rk-flow-loop-length" type="number" min="10" max="150" step="1" value="65"></div>
                <div class="rk-flow-loop-field"><label><span>Odczyt [l/min]</span><b class="rk-flow-loop-actual-label">1,40</b></label><input class="rk-flow-loop-actual" type="range" min="0" max="3" step="0.05" value="1.4"></div>
              </div>
            </article>

            <article class="rk-flow-loop-card" data-loop="2">
              <div class="rk-flow-loop-head"><strong>Łazienka</strong><span>Pętla 03</span></div>
              <div class="rk-flow-mini-meter-wrap">
                <div class="rk-flow-mini-meter">
                  <div class="rk-flow-mini-scale"><span data-scale-step="0" style="top:0%">0</span><span data-scale-step="1" style="top:25%">0,75</span><span data-scale-step="2" style="top:50%">1,5</span><span data-scale-step="3" style="top:75%">2,25</span><span data-scale-step="4" style="top:100%">3</span></div>
                  <div class="rk-flow-mini-tube"><div class="rk-flow-mini-target"></div><div class="rk-flow-mini-float"></div></div>
                </div>
                <div class="rk-flow-loop-status">Odczyt prawidłowy</div>
              </div>
              <div class="rk-flow-loop-controls">
                <div class="rk-flow-loop-field"><label><span>Moc [W]</span><b class="rk-flow-loop-target-label">cel 0,00</b></label><input class="rk-flow-loop-power" type="number" min="50" max="1500" step="10" value="380"></div>
                <div class="rk-flow-loop-field"><label><span>Długość [m]</span><b>kontrola oporu</b></label><input class="rk-flow-loop-length" type="number" min="10" max="150" step="1" value="55"></div>
                <div class="rk-flow-loop-field"><label><span>Odczyt [l/min]</span><b class="rk-flow-loop-actual-label">1,70</b></label><input class="rk-flow-loop-actual" type="range" min="0" max="3" step="0.05" value="1.7"></div>
              </div>
            </article>

            <article class="rk-flow-loop-card" data-loop="3">
              <div class="rk-flow-loop-head"><strong>Sypialnia</strong><span>Pętla 04</span></div>
              <div class="rk-flow-mini-meter-wrap">
                <div class="rk-flow-mini-meter">
                  <div class="rk-flow-mini-scale"><span data-scale-step="0" style="top:0%">0</span><span data-scale-step="1" style="top:25%">0,75</span><span data-scale-step="2" style="top:50%">1,5</span><span data-scale-step="3" style="top:75%">2,25</span><span data-scale-step="4" style="top:100%">3</span></div>
                  <div class="rk-flow-mini-tube"><div class="rk-flow-mini-target"></div><div class="rk-flow-mini-float"></div></div>
                </div>
                <div class="rk-flow-loop-status">Odczyt prawidłowy</div>
              </div>
              <div class="rk-flow-loop-controls">
                <div class="rk-flow-loop-field"><label><span>Moc [W]</span><b class="rk-flow-loop-target-label">cel 0,00</b></label><input class="rk-flow-loop-power" type="number" min="50" max="1500" step="10" value="300"></div>
                <div class="rk-flow-loop-field"><label><span>Długość [m]</span><b>kontrola oporu</b></label><input class="rk-flow-loop-length" type="number" min="10" max="150" step="1" value="60"></div>
                <div class="rk-flow-loop-field"><label><span>Odczyt [l/min]</span><b class="rk-flow-loop-actual-label">0,70</b></label><input class="rk-flow-loop-actual" type="range" min="0" max="3" step="0.05" value="0.7"></div>
              </div>
            </article>

            <article class="rk-flow-loop-card" data-loop="4">
              <div class="rk-flow-loop-head"><strong>Korytarz</strong><span>Pętla 05</span></div>
              <div class="rk-flow-mini-meter-wrap">
                <div class="rk-flow-mini-meter">
                  <div class="rk-flow-mini-scale"><span data-scale-step="0" style="top:0%">0</span><span data-scale-step="1" style="top:25%">0,75</span><span data-scale-step="2" style="top:50%">1,5</span><span data-scale-step="3" style="top:75%">2,25</span><span data-scale-step="4" style="top:100%">3</span></div>
                  <div class="rk-flow-mini-tube"><div class="rk-flow-mini-target"></div><div class="rk-flow-mini-float"></div></div>
                </div>
                <div class="rk-flow-loop-status">Odczyt prawidłowy</div>
              </div>
              <div class="rk-flow-loop-controls">
                <div class="rk-flow-loop-field"><label><span>Moc [W]</span><b class="rk-flow-loop-target-label">cel 0,00</b></label><input class="rk-flow-loop-power" type="number" min="50" max="1500" step="10" value="180"></div>
                <div class="rk-flow-loop-field"><label><span>Długość [m]</span><b>kontrola oporu</b></label><input class="rk-flow-loop-length" type="number" min="10" max="150" step="1" value="35"></div>
                <div class="rk-flow-loop-field"><label><span>Odczyt [l/min]</span><b class="rk-flow-loop-actual-label">1,20</b></label><input class="rk-flow-loop-actual" type="range" min="0" max="3" step="0.05" value="1.2"></div>
              </div>
            </article>
          </div>

          <div class="rk-flow-manifold-summary">
            <div class="rk-flow-summary-card"><span>Przepływ wymagany</span><strong id="rk-flow-total-target">0,00 l/min</strong></div>
            <div class="rk-flow-summary-card"><span>Przepływ odczytany</span><strong id="rk-flow-total-actual">0,00 l/min</strong></div>
            <div class="rk-flow-summary-card"><span>Pętle w tolerancji</span><strong id="rk-flow-balanced-count">0 z 5</strong></div>
            <div class="rk-flow-summary-card"><span>Ocena rozdzielacza</span><strong id="rk-flow-manifold-verdict">Do regulacji</strong></div>
          </div>

          <div class="rk-flow-chart" aria-label="Wykres przepływów wymaganych i odczytanych">
            <div class="rk-flow-chart-row" data-chart-loop="0"><span>Salon</span><div class="rk-flow-chart-bars"><div class="rk-flow-chart-target"></div><div class="rk-flow-chart-actual"></div></div><b class="rk-flow-chart-value">0,00</b></div>
            <div class="rk-flow-chart-row" data-chart-loop="1"><span>Kuchnia</span><div class="rk-flow-chart-bars"><div class="rk-flow-chart-target"></div><div class="rk-flow-chart-actual"></div></div><b class="rk-flow-chart-value">0,00</b></div>
            <div class="rk-flow-chart-row" data-chart-loop="2"><span>Łazienka</span><div class="rk-flow-chart-bars"><div class="rk-flow-chart-target"></div><div class="rk-flow-chart-actual"></div></div><b class="rk-flow-chart-value">0,00</b></div>
            <div class="rk-flow-chart-row" data-chart-loop="3"><span>Sypialnia</span><div class="rk-flow-chart-bars"><div class="rk-flow-chart-target"></div><div class="rk-flow-chart-actual"></div></div><b class="rk-flow-chart-value">0,00</b></div>
            <div class="rk-flow-chart-row" data-chart-loop="4"><span>Korytarz</span><div class="rk-flow-chart-bars"><div class="rk-flow-chart-target"></div><div class="rk-flow-chart-actual"></div></div><b class="rk-flow-chart-value">0,00</b></div>
          </div>
          <div class="rk-flow-chart-legend"><span><i style="background:#16836b"></i> przepływ wymagany</span><span><i style="background:#ff6a3d"></i> przepływ odczytany</span></div>

          <div class="rk-flow-table-wrap" style="margin:0 clamp(22px,4vw,38px) 28px">
            <table class="rk-flow-table">
              <thead><tr><th scope="col">Pętla</th><th scope="col">Wymagany</th><th scope="col">Odczyt</th><th scope="col">Odchylenie</th><th scope="col">Ocena</th></tr></thead>
              <tbody>
                <tr data-result-loop="0"><th scope="row">Salon</th><td data-label="Wymagany" class="rk-flow-result-target">—</td><td data-label="Odczyt" class="rk-flow-result-actual">—</td><td data-label="Odchylenie" class="rk-flow-result-deviation">—</td><td data-label="Ocena" class="rk-flow-result-status">—</td></tr>
                <tr data-result-loop="1"><th scope="row">Kuchnia</th><td data-label="Wymagany" class="rk-flow-result-target">—</td><td data-label="Odczyt" class="rk-flow-result-actual">—</td><td data-label="Odchylenie" class="rk-flow-result-deviation">—</td><td data-label="Ocena" class="rk-flow-result-status">—</td></tr>
                <tr data-result-loop="2"><th scope="row">Łazienka</th><td data-label="Wymagany" class="rk-flow-result-target">—</td><td data-label="Odczyt" class="rk-flow-result-actual">—</td><td data-label="Odchylenie" class="rk-flow-result-deviation">—</td><td data-label="Ocena" class="rk-flow-result-status">—</td></tr>
                <tr data-result-loop="3"><th scope="row">Sypialnia</th><td data-label="Wymagany" class="rk-flow-result-target">—</td><td data-label="Odczyt" class="rk-flow-result-actual">—</td><td data-label="Odchylenie" class="rk-flow-result-deviation">—</td><td data-label="Ocena" class="rk-flow-result-status">—</td></tr>
                <tr data-result-loop="4"><th scope="row">Korytarz</th><td data-label="Wymagany" class="rk-flow-result-target">—</td><td data-label="Odczyt" class="rk-flow-result-actual">—</td><td data-label="Odchylenie" class="rk-flow-result-deviation">—</td><td data-label="Ocena" class="rk-flow-result-status">—</td></tr>
              </tbody>
            </table>
          </div>

          <p class="rk-flow-tool-note">Symulator nie wylicza rzeczywistego przepływu na podstawie długości. Do tego potrzebne są m.in. charakterystyka pompy, opory rur, zaworów, rozdzielacza, medium i magistrali. Długość służy wyłącznie do ostrzegania o konieczności kontroli hydraulicznej.</p>
        </div>

        <aside class="rk-flow-cta" aria-label="Projekt ogrzewania podłogowego z przepływami">
          <span class="rk-flow-kicker" style="color:#7af0ff">Znasz przepływ docelowy — teraz sprawdź możliwość jego osiągnięcia</span>
          <h2>Rotametr pokaże wynik, ale nie zaprojektuje hydrauliki instalacji</h2>
          <p>Symulator oblicza przepływ z mocy i ΔT oraz porównuje go z odczytem. Nie sprawdzi jednak, czy pompa zapewni wymagane ciśnienie, czy pętle mają prawidłowe długości ani jakie powinny być nastawy wszystkich zaworów. Do tego potrzebne są pełne obliczenia cieplne i hydrauliczne.</p>
          <a class="rk-flow-cta-button rk-flow-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt z przepływami i nastawami rotametrów</a>
          <small class="rk-flow-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
        </aside>
      </section>


      <section class="rk-flow-section" id="rk-flow-reading">
        <span class="rk-flow-kicker">Skala, kierunek i miejsce montażu</span>
        <h2>Jak prawidłowo odczytać rotametr?</h2>
        <p class="rk-flow-intro">Najpierw rozpoznaj konstrukcję konkretnego przepływomierza. Nie w każdym modelu zero znajduje się w tym samym miejscu, a element wskazujący może poruszać się w przeciwnym kierunku. Również krawędź, z której wykonuje się odczyt, wynika z dokumentacji producenta.</p>

        <div class="rk-flow-grid-3">
          <article class="rk-flow-card"><span class="rk-flow-card-number">01 • Kierunek skali</span><h3>Zero może być u góry albo na dole</h3><p>W rozdzielaczach podłogowych często spotyka się skalę rosnącą w dół, ale nie jest to reguła dla wszystkich konstrukcji.</p></article>
          <article class="rk-flow-card"><span class="rk-flow-card-number">02 • Linia odczytu</span><h3>Sprawdź wskazaną krawędź</h3><p>Nie uśredniaj położenia całego pływaka. Odczyt wykonuje się z krawędzi określonej przez producenta danego wskaźnika.</p></article>
          <article class="rk-flow-card"><span class="rk-flow-card-number">03 • Warunki pracy</span><h3>Pompa i obwody muszą być otwarte</h3><p>Porównanie nastaw wykonuje się przy stabilnej pracy pompy, otwartych obwodach przeznaczonych do regulacji i odpowietrzonej instalacji.</p></article>
        </div>

        <div class="rk-flow-notice"><p><strong>Rotametr na zasilaniu czy na powrocie?</strong> Nie istnieje jedna odpowiedź dla wszystkich rozdzielaczy. Wielu producentów montuje przepływomierze na belce zasilającej, a zawory pod siłowniki na powrotnej. Inne konstrukcje mogą mieć odmienny układ. Należy zachować kierunek przepływu wymagany przez produkt.</p></div>

        <div class="rk-flow-table-wrap">
          <table class="rk-flow-table">
            <thead><tr><th scope="col">Parametr</th><th scope="col">Co należy sprawdzić</th><th scope="col">Dlaczego jest ważny</th></tr></thead>
            <tbody>
              <tr><th scope="row">Zakres skali</th><td data-label="Kontrola">Na przykład 0–3, 0–4 albo 0–5 l/min.</td><td data-label="Znaczenie">Wartość projektowa powinna mieścić się w użytecznej części skali, a nie tuż przy jej granicy.</td></tr>
              <tr><th scope="row">Kierunek przepływu</th><td data-label="Kontrola">Strzałkę, belkę zasilającą i powrotną oraz położenie rozdzielacza.</td><td data-label="Znaczenie">Odwrócony przepływ może powodować błędne wskazanie albo brak prawidłowej regulacji.</td></tr>
              <tr><th scope="row">Punkt odczytu</th><td data-label="Kontrola">Krawędź pływaka lub tłoczka wskazaną w instrukcji.</td><td data-label="Znaczenie">Błąd kilku milimetrów może dać zauważalną różnicę na krótkiej skali.</td></tr>
              <tr><th scope="row">Funkcja regulacyjna</th><td data-label="Kontrola">Czy rotametr ma zintegrowany zawór i blokadę nastawy.</td><td data-label="Znaczenie">Nie każdy wskaźnik jest jednocześnie elementem do dławienia obwodu.</td></tr>
              <tr><th scope="row">Medium</th><td data-label="Kontrola">Wodę, glikol oraz dopuszczone stężenie.</td><td data-label="Znaczenie">Inna gęstość i lepkość mogą wpływać na wskazanie i wymagają danych producenta.</td></tr>
              <tr><th scope="row">Temperatura i ciśnienie</th><td data-label="Kontrola">Dopuszczalne parametry robocze oraz próby.</td><td data-label="Znaczenie">Nie wolno przenosić wartości jednego modelu na wszystkie przepływomierze.</td></tr>
            </tbody>
          </table>
        </div>
      </section>

      <section class="rk-flow-section" id="rk-flow-hydraulics">
        <span class="rk-flow-kicker">Moc, ΔT i opór hydrauliczny</span>
        <h2>Od czego naprawdę zależy przepływ pętli?</h2>
        <p class="rk-flow-intro">Przepływ wymagany wynika z bilansu energii. Długość, średnica i kształt pętli wpływają na stratę ciśnienia, dlatego decydują o tym, czy pompa jest w stanie taki przepływ wymusić. To dwie różne części projektu i nie wolno ich ze sobą utożsamiać.</p>

        <div class="rk-flow-grid-2">
          <article class="rk-flow-card"><span class="rk-flow-card-number">Przepływ projektowy</span><h3>Moc podzielona przez pojemność cieplną i ΔT</h3><p>Jeżeli pętla ma przekazać więcej watów przy tym samym spadku temperatury, potrzebuje większego przepływu. Zwiększenie ΔT zmniejsza wymagany przepływ, ale zmienia temperatury wody i rozkład temperatury podłogi.</p></article>
          <article class="rk-flow-card"><span class="rk-flow-card-number">Możliwość osiągnięcia</span><h3>Opory pętli, zaworu i całej drogi przepływu</h3><p>Na dostępny przepływ wpływają długość i średnica rury, kształtki, rozdzielacz, zawór, filtr, magistrala, medium oraz spręż dyspozycyjny pompy.</p></article>
        </div>

        <div class="rk-flow-table-wrap">
          <table class="rk-flow-table">
            <thead><tr><th scope="col">Moc pętli</th><th scope="col">ΔT = 5 K</th><th scope="col">ΔT = 7 K</th><th scope="col">Wniosek</th></tr></thead>
            <tbody>
              <tr><th scope="row">250 W</th><td data-label="ΔT = 5 K">około 0,72 l/min</td><td data-label="ΔT = 7 K">około 0,51 l/min</td><td data-label="Wniosek">Mała pętla może mieć prawidłowy przepływ poniżej 1 l/min.</td></tr>
              <tr><th scope="row">400 W</th><td data-label="ΔT = 5 K">około 1,15 l/min</td><td data-label="ΔT = 7 K">około 0,82 l/min</td><td data-label="Wniosek">Jedna uniwersalna nastawa dla całego rozdzielacza nie ma uzasadnienia.</td></tr>
              <tr><th scope="row">700 W</th><td data-label="ΔT = 5 K">około 2,01 l/min</td><td data-label="ΔT = 7 K">około 1,43 l/min</td><td data-label="Wniosek">Większy przepływ może być prawidłowy, jeśli wynika z projektu i mieści się w możliwościach hydraulicznych.</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-flow-notice is-red"><p><strong>Nie ratuj zbyt opornej pętli samym zwiększaniem biegu pompy.</strong> Jeśli wymagany przepływ jest nieosiągalny, trzeba sprawdzić długość, średnicę, załamanie rury, zawory, filtr, odpowietrzenie, magistralę i dobór pompy. Wyższe ciśnienie może zwiększyć hałas oraz zużycie energii, nie usuwając przyczyny.</p></div>
      </section>

      <section class="rk-flow-section" id="rk-flow-regulation">
        <span class="rk-flow-kicker">Kolejność ma znaczenie</span>
        <h2>Jak ustawić rotametry na rozdzielaczu krok po kroku?</h2>
        <p class="rk-flow-intro">Poniższa procedura zakłada, że instalacja jest ukończona, szczelna, napełniona, przepłukana i posiada projektowe wartości przepływów. Jeżeli producent rozdzielacza określa inną kolejność regulacji, jego instrukcja ma pierwszeństwo.</p>

        <div class="rk-flow-steps">
          <article class="rk-flow-step"><div><h3>Przygotuj tabelę przepływów projektowych</h3><p>Dla każdej pętli zapisz nazwę pomieszczenia, numer obwodu i wymaganą wartość w l/min. Nie reguluj wszystkich wskaźników na jedną liczbę.</p></div></article>
          <article class="rk-flow-step"><div><h3>Sprawdź kierunek i zakres przepływomierzy</h3><p>Potwierdź belkę zasilającą i powrotną, kierunek strzałek, punkt odczytu, zakres skali oraz sposób odblokowania i regulacji danego modelu.</p></div></article>
          <article class="rk-flow-step"><div><h3>Otwórz obwody przeznaczone do równoważenia</h3><p>Siłowniki i zawory muszą pozwalać na przepływ. Upewnij się, że sterowanie pokojowe nie zamknęło części pętli podczas regulacji.</p></div></article>
          <article class="rk-flow-step"><div><h3>Odpowietrz i przepłucz instalację</h3><p>Niestabilny strumień oraz pęcherze powietrza uniemożliwiają wiarygodny odczyt. Pętle przepłukuje się zgodnie z procedurą rozruchu, zwykle pojedynczo.</p></div></article>
          <article class="rk-flow-step"><div><h3>Ustaw pompę w przewidzianym trybie pracy</h3><p>Pompa powinna pracować stabilnie i zapewniać projektowy punkt pracy. Regulacja na przypadkowym najwyższym biegu nie daje miarodajnych nastaw eksploatacyjnych.</p></div></article>
          <article class="rk-flow-step"><div><h3>Ustawiaj wartości projektowe na kolejnych pętlach</h3><p>Reguluj powoli i zgodnie z konstrukcją zaworu. Po zmianie poczekaj na uspokojenie wskazania przed oceną wartości.</p></div></article>
          <article class="rk-flow-step"><div><h3>Wróć do wcześniej ustawionych obwodów</h3><p>Pętle pracują równolegle, dlatego korekta jednej może zmienić przepływy w pozostałych. Wykonaj co najmniej jedną pełną rundę kontroli całego rozdzielacza.</p></div></article>
          <article class="rk-flow-step"><div><h3>Zablokuj i udokumentuj nastawy</h3><p>Zastosuj blokady przewidziane przez producenta, zapisz wartości, oznacz pętle oraz zweryfikuj pracę instalacji po osiągnięciu stabilnych temperatur.</p></div></article>
        </div>

        <p style="margin-top:24px">Więcej o doborze elementów belki znajdziesz w przewodniku <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacz do ogrzewania podłogowego</a>, a zależność pomiędzy przepływem i dostępnym sprężem rozwija <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulator doboru pompy obiegowej</a>.</p>
      </section>

      <section class="rk-flow-section" id="rk-flow-diagnostics">
        <span class="rk-flow-kicker">Objaw nie jest jeszcze diagnozą</span>
        <h2>Rotametr wskazuje zero, skacze albo nie reaguje — co sprawdzić?</h2>
        <p class="rk-flow-intro">Kliknij objaw. Zamiast jednej automatycznej odpowiedzi otrzymasz uporządkowaną listę możliwych przyczyn oraz bezpieczną kolejność kontroli.</p>

        <div class="rk-flow-diagnostic">
          <div class="rk-flow-diagnostic-buttons" role="group" aria-label="Wybór objawu rotametru">
            <button type="button" class="rk-flow-diagnostic-button is-active" data-diagnostic="stable">Stabilny odczyt</button>
            <button type="button" class="rk-flow-diagnostic-button" data-diagnostic="jumping">Pływak skacze lub drga</button>
            <button type="button" class="rk-flow-diagnostic-button" data-diagnostic="onezero">Jeden rotametr wskazuje zero</button>
            <button type="button" class="rk-flow-diagnostic-button" data-diagnostic="allzero">Wszystkie wskazują zero</button>
            <button type="button" class="rk-flow-diagnostic-button" data-diagnostic="dirty">Wskaźnik jest mętny lub zablokowany</button>
          </div>

          <div class="rk-flow-diagnostic-result" aria-live="polite">
            <span class="rk-flow-kicker" id="rk-flow-diagnostic-label">Stan odniesienia</span>
            <h3 id="rk-flow-diagnostic-title">Stabilny odczyt zgodny z projektem</h3>
            <p id="rk-flow-diagnostic-copy">Wskaźnik nie pulsuje, a jego wartość pozostaje w pobliżu nastawy projektowej. To dobry punkt wyjścia, ale trzeba jeszcze zweryfikować pozostałe obwody i temperatury instalacji.</p>
            <h4>Sprawdź kolejno:</h4>
            <ul id="rk-flow-diagnostic-list"><li>zgodność odczytu z tabelą projektową,</li><li>stabilność wszystkich pętli,</li><li>temperaturę zasilania i powrotu po ustabilizowaniu pracy.</li></ul>
          </div>
        </div>

        <div class="rk-flow-notice"><p><strong>Nie odkręcaj rotametru pod ciśnieniem.</strong> Czyszczenie albo wymiana wkładki wymaga odcięcia odpowiedniej części instalacji, obniżenia ciśnienia i wykonania procedury przewidzianej przez producenta. Po ponownym montażu należy sprawdzić szczelność.</p></div>
      </section>

      <section class="rk-flow-section" id="rk-flow-errors">
        <span class="rk-flow-kicker">Błędy regulacji i interpretacji</span>
        <h2>Najczęstsze błędy przy rotametrach</h2>
        <div class="rk-flow-errors">
          <article class="rk-flow-error"><b>Błąd 01</b><h3>Jednakowy przepływ na każdej pętli</h3><p>Obwody mają różne moce, powierzchnie i warunki pracy. Jedna wartość dla całej belki zwykle nie odpowiada projektowi.</p></article>
          <article class="rk-flow-error"><b>Błąd 02</b><h3>Wyznaczanie przepływu wyłącznie z długości</h3><p>Długość wpływa na opór, ale przepływ docelowy wynika z mocy pętli i ΔT.</p></article>
          <article class="rk-flow-error"><b>Błąd 03</b><h3>Regulacja przy zamkniętych siłownikach</h3><p>Sterowanie pokojowe zmienia stan obwodów, więc odczyty nie przedstawiają pełnych warunków równoważenia.</p></article>
          <article class="rk-flow-error"><b>Błąd 04</b><h3>Najwyższy bieg pompy jako rozwiązanie</h3><p>Zwiększenie ciśnienia może jedynie zamaskować opór, zwiększyć hałas i zmienić wszystkie nastawy.</p></article>
          <article class="rk-flow-error"><b>Błąd 05</b><h3>Odczyt z niewłaściwej krawędzi</h3><p>Interpretacja zależy od konstrukcji wskaźnika. Punkt odczytu trzeba sprawdzić w instrukcji urządzenia.</p></article>
          <article class="rk-flow-error"><b>Błąd 06</b><h3>Założenie, że rotametr zawsze jest na powrocie</h3><p>W wielu rozdzielaczach przepływomierze pracują na zasilaniu. Liczy się układ i kierunek wymagany przez produkt.</p></article>
          <article class="rk-flow-error"><b>Błąd 07</b><h3>Regulacja zapowietrzonego układu</h3><p>Pęcherze gazu powodują niestabilny odczyt i mogą blokować część obwodu. Najpierw usuwa się przyczynę.</p></article>
          <article class="rk-flow-error"><b>Błąd 08</b><h3>Brak ponownej kontroli całej belki</h3><p>Każde dławienie zmienia rozdział ciśnienia. Poprzednio ustawione pętle trzeba sprawdzić ponownie.</p></article>
        </div>
      </section>

      <section class="rk-flow-section" id="rk-flow-checklist">
        <span class="rk-flow-kicker">Checklista przed odbiorem nastaw</span>
        <h2>Co powinno być sprawdzone i zapisane?</h2>
        <div class="rk-flow-checklist">
          <div class="rk-flow-checkitem">Numer i nazwa każdej pętli</div>
          <div class="rk-flow-checkitem">Projektowa moc przypisana do obwodu</div>
          <div class="rk-flow-checkitem">Wymagany przepływ w l/min</div>
          <div class="rk-flow-checkitem">Projektowe ΔT instalacji</div>
          <div class="rk-flow-checkitem">Długość oraz średnica rury</div>
          <div class="rk-flow-checkitem">Zakres i kierunek skali rotametru</div>
          <div class="rk-flow-checkitem">Stan siłowników i zaworów</div>
          <div class="rk-flow-checkitem">Odpowietrzenie oraz czystość filtra</div>
          <div class="rk-flow-checkitem">Tryb i nastawa pompy obiegowej</div>
          <div class="rk-flow-checkitem">Końcowy odczyt każdego obwodu</div>
          <div class="rk-flow-checkitem">Ponowna kontrola po pełnej regulacji</div>
          <div class="rk-flow-checkitem">Dokumentacja zdjęciowa rozdzielacza</div>
        </div>

        <div class="rk-flow-download" aria-label="Bezpłatna infografika o rotametrach">
          <div class="rk-flow-download-preview" aria-hidden="true">
            <svg viewBox="0 0 120 150"><rect x="24" y="8" width="72" height="134" rx="8"/><path d="M38 31h44M38 47h44M38 63h27M44 91h32v35H44zM52 98v20m8-20v20m8-20v20"/></svg>
          </div>
          <div>
            <span class="rk-flow-kicker">Darmowy materiał na budowę</span>
            <h3>Pobierz infografikę o rotametrach</h3>
            <p>Jednostronicowe opracowanie zawiera schemat budowy, podstawowe zasady odczytu, tabelę i checklistę najczęstszych błędów. Możesz zapisać je w telefonie albo wydrukować.</p>
            <a class="rk-flow-download-link" href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego.pdf" target="_blank" rel="noopener">Pobierz bezpłatny poradnik PDF</a>
          </div>
        </div>
      </section>

      <section class="rk-flow-section" id="rk-flow-faq">
        <span class="rk-flow-kicker">Najczęstsze pytania inwestorów i instalatorów</span>
        <h2>Rotametry w ogrzewaniu podłogowym — FAQ</h2>
        <div class="rk-flow-faq">
          <details><summary>Jaki przepływ ustawić na rotametrze ogrzewania podłogowego?</summary><div class="rk-flow-faq-answer"><p>Wartość powinna wynikać z mocy przypisanej do pętli i projektowego ΔT. Nie istnieje jeden przepływ właściwy dla wszystkich obwodów. Długość rury służy następnie do sprawdzenia oporu i możliwości osiągnięcia wymaganej wartości.</p></div></details>
          <details><summary>Jak obliczyć przepływ w pojedynczej pętli?</summary><div class="rk-flow-faq-answer"><p>Dla wody można orientacyjnie zastosować zależność: przepływ w l/min równa się mocy pętli w watach podzielonej przez iloczyn 69,8 i ΔT w kelwinach. Wynik trzeba skonfrontować z hydrauliką obwodu oraz zakresem rotametru.</p></div></details>
          <details><summary>Czy długość pętli wyznacza ustawienie rotametru?</summary><div class="rk-flow-faq-answer"><p>Nie bezpośrednio. Długość zwiększa lub zmniejsza stratę ciśnienia, natomiast przepływ projektowy wynika z mocy i ΔT. Długa pętla może nie osiągnąć potrzebnej wartości, jeśli jej opór jest zbyt duży dla dostępnego sprężu pompy.</p></div></details>
          <details><summary>Czy rotametry montuje się na zasilaniu czy na powrocie?</summary><div class="rk-flow-faq-answer"><p>Zależy to od konstrukcji rozdzielacza. W wielu rozwiązaniach przepływomierze znajdują się na belce zasilającej, a zawory z siłownikami na powrotnej. Należy zachować położenie i kierunek przepływu wskazany przez producenta.</p></div></details>
          <details><summary>Dlaczego jeden rotametr wskazuje zero?</summary><div class="rk-flow-faq-answer"><p>Możliwe przyczyny to zamknięty zawór lub siłownik, zapowietrzenie, zablokowana iglica, zabrudzony wskaźnik, niedrożność albo załamanie rury. Najpierw porównuje się ten obwód z pozostałymi i sprawdza elementy dostępne przy rozdzielaczu.</p></div></details>
          <details><summary>Dlaczego wszystkie rotametry wskazują zero?</summary><div class="rk-flow-faq-answer"><p>Należy sprawdzić pracę pompy, zawory główne, sterowanie, zasilanie siłowników, filtr, ciśnienie, odpowietrzenie i prawidłowy kierunek przepływu. Awaria pompy jest tylko jedną z możliwych przyczyn.</p></div></details>
          <details><summary>Co oznacza skaczący albo drgający pływak?</summary><div class="rk-flow-faq-answer"><p>Częstą przyczyną jest powietrze, ale możliwe są również niestabilna praca pompy, pulsowanie zaworu, zanieczyszczenie, niewłaściwy kierunek przepływu albo zbyt duża różnica ciśnienia. Sam objaw nie przesądza diagnozy.</p></div></details>
          <details><summary>Czy można ustawić wszystkie rotametry na 1,5 l/min?</summary><div class="rk-flow-faq-answer"><p>Tylko wtedy, gdy przypadkowo dokładnie takie wartości wynikają z projektu wszystkich pętli. W rzeczywistym domu obwody obsługują różne moce, dlatego jednakowa nastawa zwykle prowadzi do niedopasowania hydraulicznego.</p></div></details>
          <details><summary>Czy większy przepływ zawsze oznacza więcej ciepła?</summary><div class="rk-flow-faq-answer"><p>Nie w sposób nieograniczony. Przenoszona moc zależy jednocześnie od przepływu i różnicy temperatur, a emisja podłogi od jej konstrukcji oraz temperatury powierzchni. Nadmierny przepływ może zwiększać opory, hałas i pobór energii pompy.</p></div></details>
          <details><summary>Czy zabrudzony rotametr można samodzielnie wyczyścić?</summary><div class="rk-flow-faq-answer"><p>Tylko zgodnie z instrukcją producenta, po odcięciu odpowiedniej części instalacji i bezpiecznym obniżeniu ciśnienia. Nie wolno wykręcać wkładki z pracującego rozdzielacza. Po montażu należy sprawdzić szczelność.</p></div></details>
        </div>
      </section>

      <section class="rk-flow-section" id="rk-flow-sources">
        <span class="rk-flow-kicker">Podstawa techniczna opracowania</span>
        <h2>Dokumentacja producenta ma pierwszeństwo</h2>
        <div class="rk-flow-source-box">
          <p>Przykłady przepływomierzy montowanych na belce zasilającej można znaleźć w dokumentacjach rozdzielaczy <a href="https://www.caleffi.com/en-us/assembly-668s1-caleffi-6686c5s1a" target="_blank" rel="noopener nofollow">Caleffi TwistFlow</a>, <a href="https://www.watts.eu/en-gb/products/eu/hydronic-radiant-heating-solutions/stainless-steel-manifolds" target="_blank" rel="noopener nofollow">Watts</a> oraz <a href="https://www.rehau.com/us-en/mechanicalplumbing/search-by-product/pro-balance-manifolds" target="_blank" rel="noopener nofollow">REHAU PRO-BALANCE</a>. Pokazuje to, dlaczego nie wolno przyjmować uniwersalnej zasady o montażu wyłącznie na powrocie.</p>
          <p>Rozdzielacze, skale, blokady i automatyczne sposoby równoważenia różnią się pomiędzy systemami. Artykuł nie zastępuje instrukcji produktu, projektu hydraulicznego, procedury rozruchu ani oceny instalacji na miejscu.</p>
        </div>
        <div class="rk-flow-update">Ostatnia aktualizacja merytoryczna: 29 sierpnia 2026 r.</div>
      </section>
    </main>

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

      <header class="rk-flow-author-head">
        <div><span class="rk-flow-kicker">Autor opracowania</span><h2>Robert Kucharski</h2><p>Projektant instalacji sanitarnych • specjalista HVAC i ogrzewania podłogowego</p></div>
        <span class="rk-flow-author-mark">HYDRAULIKA • HVAC</span>
      </header>

      <div class="rk-flow-author-layout">
        <aside class="rk-flow-author-side">
          <div class="rk-flow-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant ogrzewania podłogowego" width="600" height="600" loading="lazy" decoding="async"></div>
          <div class="rk-flow-author-name">Robert Kucharski</div>
          <div class="rk-flow-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
          <div class="rk-flow-author-social-label">Znajdziesz mnie również:</div>
          <div class="rk-flow-author-social" aria-label="Profile Roberta Kucharskiego w mediach społecznościowych">
            <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener nofollow me" aria-label="Robert Kucharski na LinkedIn" title="LinkedIn"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5.2 7.7H1.6V22h3.6V7.7ZM3.4 2A2.1 2.1 0 1 0 3.4 6.2 2.1 2.1 0 0 0 3.4 2ZM22.4 13.8c0-4.3-2.3-6.3-5.4-6.3a4.7 4.7 0 0 0-4.2 2.3V7.7H9.2V22h3.6v-7.1c0-1.9.4-3.7 2.7-3.7 2.3 0 2.3 2.1 2.3 3.8v7h3.6l1-8.2Z"/></svg></a>
            <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="noopener nofollow me" aria-label="Projekt-Ogrzewania.pl na Facebooku" title="Facebook"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M14.2 22v-9h3l.5-3.5h-3.5V7.3c0-1 .3-1.7 1.8-1.7h1.9V2.5c-.3 0-1.5-.1-2.8-.1-2.8 0-4.7 1.7-4.7 4.8v2.3H7.2V13h3.2v9h3.8Z"/></svg></a>
            <a href="https://x.com/Projekt_HVAC" target="_blank" rel="noopener nofollow me" aria-label="Projekt HVAC w serwisie X" title="X"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.9 2H22l-6.8 7.8L23.2 22H17l-4.9-6.4L6.5 22H3.3l7.3-8.4L2.8 2h6.4l4.4 5.8L18.9 2Zm-1.1 17.8h1.7L8.3 4.1H6.5l11.3 15.7Z"/></svg></a>
          </div>
        </aside>

        <div class="rk-flow-author-main">
          <blockquote class="rk-flow-author-quote"><p>„Rotametr nie mówi, ile wody powinno płynąć. On tylko pokazuje, ile płynie w tej chwili. Właściwa wartość musi najpierw wynikać z mocy, ΔT i obliczeń hydraulicznych konkretnej pętli.”</p></blockquote>
          <div class="rk-flow-author-tabs" role="tablist" aria-label="Informacje o autorze">
            <label class="rk-flow-author-tab" for="rk-flow-author-about">O autorze</label>
            <label class="rk-flow-author-tab" for="rk-flow-author-exp">Doświadczenie</label>
            <label class="rk-flow-author-tab" for="rk-flow-author-sites">Portale</label>
          </div>
          <div class="rk-flow-author-panel rk-flow-author-panel-about"><p>Projektuję wodne ogrzewanie podłogowe, łącząc obliczenia strat ciepła z doborem temperatur, rozstawów, przepływów, długości pętli, strat ciśnienia i nastaw rozdzielaczy.</p></div>
          <div class="rk-flow-author-panel rk-flow-author-panel-exp"><p>Dokumentacja wykonawcza zawiera dla każdego obwodu długość, wymaganą moc, przepływ oraz nastawę. Dzięki temu rozruch instalacji nie polega na ustawianiu wszystkich rotametrów „na oko”.</p></div>
          <div class="rk-flow-author-panel rk-flow-author-panel-sites"><p>Jestem właścicielem trzech serwisów branżowych. Powiązanie portali podaję jawnie, aby czytelnik znał autorstwo i kontekst linkowania.</p><div class="rk-flow-site-links"><a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a><a href="https://remont.biz.pl/" target="_blank" rel="noopener nofollow">Remont.biz.pl</a><a href="https://sobir.pl/" target="_blank" rel="noopener nofollow">Sobir.pl</a></div></div>
        </div>
      </div>
    </section>

    <section class="rk-flow-final-cta" aria-label="Projekt ogrzewania podłogowego z nastawami rotametrów">
      <span class="rk-flow-kicker" style="color:#7af0ff">Zamknij hydraulikę przed uruchomieniem instalacji</span>
      <h2>Otrzymaj projekt z przepływem dla każdej pętli</h2>
      <p>Dokumentacja łączy straty ciepła, temperaturę zasilania i powrotu, rozstawy rur, długości obwodów, przepływy, straty ciśnienia, dobór rozdzielaczy i nastawy. Instalator otrzymuje wartości, które może ustawić i zweryfikować na budowie.</p>
      <a class="rk-flow-cta-button rk-flow-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
      <small class="rk-flow-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
    </section>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/#article",
      "url": "https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/",
      "headline": "Rotametr w ogrzewaniu podłogowym – jak odczytać i ustawić przepływ na rozdzielaczu?",
      "description": "Techniczny poradnik o odczycie rotametru, obliczaniu przepływu pętli, równoważeniu rozdzielacza i diagnostyce braku albo niestabilności przepływu.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-29",
      "mainEntityOfPage": {"@id": "https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/#webpage"},
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "about": [
        {"@type": "Thing", "name": "Rotametr"},
        {"@type": "Thing", "name": "Ogrzewanie podłogowe"},
        {"@type": "Thing", "name": "Równoważenie hydrauliczne"},
        {"@type": "Thing", "name": "Rozdzielacz ogrzewania podłogowego"}
      ],
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"}
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/#webpage",
      "url": "https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/",
      "name": "Rotametr w ogrzewaniu podłogowym – odczyt i regulacja przepływu",
      "description": "Jak odczytać rotametr, obliczyć właściwy przepływ i wyregulować pętle ogrzewania podłogowego.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-29",
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"},
      "breadcrumb": {"@id": "https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/#breadcrumb"},
      "mainEntity": [
        {"@id": "https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/#application"},
        {"@id": "https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/#howto"},
        {"@id": "https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/#faq"}
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/#breadcrumb",
      "itemListElement": [
        {"@type": "ListItem", "position": 1, "name": "Strona główna", "item": "https://projekt-ogrzewania.pl/"},
        {"@type": "ListItem", "position": 2, "name": "Hydraulika", "item": "https://projekt-ogrzewania.pl/category/hydraulika/"},
        {"@type": "ListItem", "position": 3, "name": "Rotametr w ogrzewaniu podłogowym", "item": "https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/"}
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/#application",
      "name": "Symulator rotametrów i równoważenia rozdzielacza",
      "url": "https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/#rk-flow-manifold-tool",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "Obsługa JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "description": "Interaktywne narzędzie oblicza przepływ wymagany z mocy pętli i delta T, porównuje go z odczytem oraz pokazuje pięć animowanych rotametrów."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/#howto",
      "name": "Jak wyregulować rotametry ogrzewania podłogowego?",
      "description": "Bezpieczna kolejność przygotowania, ustawiania i dokumentowania przepływów na rozdzielaczu.",
      "inLanguage": "pl-PL",
      "step": [
        {"@type": "HowToStep", "position": 1, "name": "Przygotuj tabelę przepływów projektowych", "text": "Dla każdej pętli zapisz nazwę pomieszczenia, numer obwodu i wymaganą wartość w l/min. Nie reguluj wszystkich wskaźników na jedną liczbę."},
        {"@type": "HowToStep", "position": 2, "name": "Sprawdź kierunek i zakres przepływomierzy", "text": "Potwierdź belkę zasilającą i powrotną, kierunek strzałek, punkt odczytu, zakres skali oraz sposób odblokowania i regulacji danego modelu."},
        {"@type": "HowToStep", "position": 3, "name": "Otwórz obwody przeznaczone do równoważenia", "text": "Siłowniki i zawory muszą pozwalać na przepływ. Upewnij się, że sterowanie pokojowe nie zamknęło części pętli podczas regulacji."},
        {"@type": "HowToStep", "position": 4, "name": "Odpowietrz i przepłucz instalację", "text": "Niestabilny strumień oraz pęcherze powietrza uniemożliwiają wiarygodny odczyt. Pętle przepłukuje się zgodnie z procedurą rozruchu, zwykle pojedynczo."},
        {"@type": "HowToStep", "position": 5, "name": "Ustaw pompę w przewidzianym trybie pracy", "text": "Pompa powinna pracować stabilnie i zapewniać projektowy punkt pracy. Regulacja na przypadkowym najwyższym biegu nie daje miarodajnych nastaw eksploatacyjnych."},
        {"@type": "HowToStep", "position": 6, "name": "Ustawiaj wartości projektowe na kolejnych pętlach", "text": "Reguluj powoli i zgodnie z konstrukcją zaworu. Po zmianie poczekaj na uspokojenie wskazania przed oceną wartości."},
        {"@type": "HowToStep", "position": 7, "name": "Wróć do wcześniej ustawionych obwodów", "text": "Pętle pracują równolegle, dlatego korekta jednej może zmienić przepływy w pozostałych. Wykonaj co najmniej jedną pełną rundę kontroli całego rozdzielacza."},
        {"@type": "HowToStep", "position": 8, "name": "Zablokuj i udokumentuj nastawy", "text": "Zastosuj blokady przewidziane przez producenta, zapisz wartości, oznacz pętle oraz zweryfikuj pracę instalacji po osiągnięciu stabilnych temperatur."}
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {"@type": "Question", "name": "Jaki przepływ ustawić na rotametrze ogrzewania podłogowego?", "acceptedAnswer": {"@type": "Answer", "text": "Wartość powinna wynikać z mocy przypisanej do pętli i projektowego ΔT. Nie istnieje jeden przepływ właściwy dla wszystkich obwodów. Długość rury służy następnie do sprawdzenia oporu i możliwości osiągnięcia wymaganej wartości."}},
        {"@type": "Question", "name": "Jak obliczyć przepływ w pojedynczej pętli?", "acceptedAnswer": {"@type": "Answer", "text": "Dla wody można orientacyjnie zastosować zależność: przepływ w l/min równa się mocy pętli w watach podzielonej przez iloczyn 69,8 i ΔT w kelwinach. Wynik trzeba skonfrontować z hydrauliką obwodu oraz zakresem rotametru."}},
        {"@type": "Question", "name": "Czy długość pętli wyznacza ustawienie rotametru?", "acceptedAnswer": {"@type": "Answer", "text": "Nie bezpośrednio. Długość zwiększa lub zmniejsza stratę ciśnienia, natomiast przepływ projektowy wynika z mocy i ΔT. Długa pętla może nie osiągnąć potrzebnej wartości, jeśli jej opór jest zbyt duży dla dostępnego sprężu pompy."}},
        {"@type": "Question", "name": "Czy rotametry montuje się na zasilaniu czy na powrocie?", "acceptedAnswer": {"@type": "Answer", "text": "Zależy to od konstrukcji rozdzielacza. W wielu rozwiązaniach przepływomierze znajdują się na belce zasilającej, a zawory z siłownikami na powrotnej. Należy zachować położenie i kierunek przepływu wskazany przez producenta."}},
        {"@type": "Question", "name": "Dlaczego jeden rotametr wskazuje zero?", "acceptedAnswer": {"@type": "Answer", "text": "Możliwe przyczyny to zamknięty zawór lub siłownik, zapowietrzenie, zablokowana iglica, zabrudzony wskaźnik, niedrożność albo załamanie rury. Najpierw porównuje się ten obwód z pozostałymi i sprawdza elementy dostępne przy rozdzielaczu."}},
        {"@type": "Question", "name": "Dlaczego wszystkie rotametry wskazują zero?", "acceptedAnswer": {"@type": "Answer", "text": "Należy sprawdzić pracę pompy, zawory główne, sterowanie, zasilanie siłowników, filtr, ciśnienie, odpowietrzenie i prawidłowy kierunek przepływu. Awaria pompy jest tylko jedną z możliwych przyczyn."}},
        {"@type": "Question", "name": "Co oznacza skaczący albo drgający pływak?", "acceptedAnswer": {"@type": "Answer", "text": "Częstą przyczyną jest powietrze, ale możliwe są również niestabilna praca pompy, pulsowanie zaworu, zanieczyszczenie, niewłaściwy kierunek przepływu albo zbyt duża różnica ciśnienia. Sam objaw nie przesądza diagnozy."}},
        {"@type": "Question", "name": "Czy można ustawić wszystkie rotametry na 1,5 l/min?", "acceptedAnswer": {"@type": "Answer", "text": "Tylko wtedy, gdy przypadkowo dokładnie takie wartości wynikają z projektu wszystkich pętli. W rzeczywistym domu obwody obsługują różne moce, dlatego jednakowa nastawa zwykle prowadzi do niedopasowania hydraulicznego."}},
        {"@type": "Question", "name": "Czy większy przepływ zawsze oznacza więcej ciepła?", "acceptedAnswer": {"@type": "Answer", "text": "Nie w sposób nieograniczony. Przenoszona moc zależy jednocześnie od przepływu i różnicy temperatur, a emisja podłogi od jej konstrukcji oraz temperatury powierzchni. Nadmierny przepływ może zwiększać opory, hałas i pobór energii pompy."}},
        {"@type": "Question", "name": "Czy zabrudzony rotametr można samodzielnie wyczyścić?", "acceptedAnswer": {"@type": "Answer", "text": "Tylko zgodnie z instrukcją producenta, po odcięciu odpowiedniej części instalacji i bezpiecznym obniżeniu ciśnienia. Nie wolno wykręcać wkładki z pracującego rozdzielacza. Po montażu należy sprawdzić szczelność."}}
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/robert-kucharski/",
      "jobTitle": "Projektant instalacji sanitarnych, specjalista HVAC i ogrzewania podłogowego",
      "worksFor": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "affiliation": [
        {"@id": "https://projekt-ogrzewania.pl/#organization"},
        {"@id": "https://remont.biz.pl/#organization"},
        {"@id": "https://sobir.pl/#organization"}
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt-Ogrzewania.pl",
      "inLanguage": "pl-PL",
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"}
    }
  ]
}
</script>

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

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

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

  var toNumber = function (field, fallback) {
    var value = parseFloat(field.value);
    if (!Number.isFinite(value)) {
      return fallback;
    }
    return value;
  };

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

  var format = function (value, digits) {
    return Number(value).toLocaleString("pl-PL", {
      minimumFractionDigits: digits,
      maximumFractionDigits: digits
    });
  };

  var signedPercent = function (value) {
    var rounded = Math.round(value);
    if (rounded > 0) {
      return "+" + rounded + "%";
    }
    return rounded + "%";
  };

  var progress = byId("rk-flow-progress");
  var updateProgress = function () {
    if (!progress) {
      return;
    }
    var rootTop = window.scrollY + root.getBoundingClientRect().top;
    var distance = root.offsetHeight - window.innerHeight;
    if (distance < 1) {
      progress.style.width = "100%";
      return;
    }
    var percent = clamp((window.scrollY - rootTop) / distance * 100, 0, 100);
    progress.style.width = percent + "%";
  };
  window.addEventListener("scroll", updateProgress, {passive: true});
  window.addEventListener("resize", updateProgress);
  updateProgress();

  var partData = {
    scale: {
      title: "Przezroczysty korpus i skala",
      copy: "Korpus umożliwia obserwację elementu pomiarowego. Zakres, kierunek skali, dopuszczalna temperatura, ciśnienie i medium zależą od modelu; należy je sprawdzić w dokumentacji producenta."
    },
    float: {
      title: "Element wskazujący przepływ",
      copy: "Położenie pływaka albo tłoczka odpowiada przepływowi w warunkach kalibracji urządzenia. Odczyt wykonuje się z krawędzi wskazanej przez producenta, a nie z przypadkowego punktu całego elementu."
    },
    valve: {
      title: "Mechanizm regulacyjny",
      copy: "W zależności od konstrukcji rotametr może współpracować z regulacją przepływu albo sam zawierać element dławiący. Nie obracaj korpusu ani pierścienia bez sprawdzenia instrukcji i sposobu odblokowania."
    },
    seal: {
      title: "Uszczelnienie wkładki",
      copy: "O-ring albo inne uszczelnienie oddziela wodę instalacyjną od otoczenia. Demontaż pod ciśnieniem grozi wyciekiem. Po czyszczeniu lub wymianie elementu konieczna jest kontrola szczelności."
    },
    connection: {
      title: "Przyłącze do belki rozdzielacza",
      copy: "Przyłącze ustala położenie urządzenia oraz kierunek przepływu przez element pomiarowy. Rotametr trzeba montować na właściwej belce i zgodnie ze strzałką lub dokumentacją systemu."
    }
  };

  var partButtons = root.querySelectorAll(".rk-flow-part-button");
  var partTitle = byId("rk-flow-part-title");
  var partCopy = byId("rk-flow-part-copy");
  partButtons.forEach(function (button) {
    button.addEventListener("click", function () {
      partButtons.forEach(function (item) {
        item.classList.remove("is-active");
      });
      button.classList.add("is-active");
      var selected = partData[button.getAttribute("data-part")];
      if (!selected) {
        return;
      }
      partTitle.textContent = selected.title;
      partCopy.textContent = selected.copy;
    });
  });

  var labPower = byId("rk-flow-lab-power");
  var labDt = byId("rk-flow-lab-dt");
  var labDirection = byId("rk-flow-lab-direction");
  var labSymptom = byId("rk-flow-lab-symptom");
  var labActual = byId("rk-flow-lab-actual");
  var labSvg = byId("rk-flow-device-svg");
  var labFloat = byId("rk-flow-big-float");
  var labTarget = byId("rk-flow-big-target");
  var labTargetLabel = byId("rk-flow-target-label");
  var labState = byId("rk-flow-lab-state");

  var updateLab = function () {
    var power = clamp(toNumber(labPower, 420), 50, 1500);
    var deltaT = clamp(toNumber(labDt, 5), 2, 15);
    var actual = clamp(toNumber(labActual, 1.2), 0, 3);
    var required = power / (69.8 * deltaT);
    var deviation = required > 0 ? (actual - required) / required * 100 : 0;
    var zeroAtTop = labDirection.value === "zero-top";
    var actualFraction = clamp(actual / 3, 0, 1);
    var targetFraction = clamp(required / 3, 0, 1);
    if (!zeroAtTop) {
      actualFraction = 1 - actualFraction;
      targetFraction = 1 - targetFraction;
    }

    labFloat.style.setProperty("--rk-flow-offset", format(actualFraction * 330, 1).replace(",", ".") + "px");
    var targetY = 121 + targetFraction * 330;
    labTarget.setAttribute("y1", targetY);
    labTarget.setAttribute("y2", targetY);
    labTargetLabel.setAttribute("y", targetY + 5);
    labTargetLabel.textContent = required > 3 ? "CEL > SKALA" : "CEL " + format(required, 2);

    for (var index = 0; index < 7; index += 1) {
      var label = byId("rk-flow-scale-label-" + index);
      var scaleValue = index * 0.5;
      if (!zeroAtTop) {
        scaleValue = 3 - scaleValue;
      }
      label.textContent = format(scaleValue, 1);
    }

    byId("rk-flow-lab-required").textContent = format(required, 2);
    byId("rk-flow-lab-actual-stat").textContent = format(actual, 2);
    byId("rk-flow-lab-actual-label").textContent = format(actual, 2) + " l/min";
    byId("rk-flow-lab-deviation").textContent = signedPercent(deviation);

    labSvg.classList.remove("is-jumping", "is-dirty");
    labState.classList.remove("is-warning", "is-danger");
    var stateTitle = "Odczyt zgodny z celem";
    var stateCopy = "Przepływ mieści się w paśmie ±10%. Po każdej korekcie sprawdź pozostałe pętle oraz stabilność pracy pompy.";
    var symptom = labSymptom.value;

    if (symptom === "jumping") {
      labSvg.classList.add("is-jumping");
      labState.classList.add("is-warning");
      stateTitle = "Odczyt jest niestabilny";
      stateCopy = "Skaczący wskaźnik może oznaczać powietrze, pulsowanie pompy albo zaworu, zanieczyszczenie lub niekorzystną różnicę ciśnienia. Najpierw ustabilizuj układ, dopiero potem reguluj.";
    } else if (symptom === "stuck") {
      labState.classList.add("is-danger");
      stateTitle = "Wskaźnik może być zablokowany";
      stateCopy = "Brak reakcji nie dowodzi braku przepływu. Sprawdź zawór, siłownik, odpowietrzenie i czystość elementu. Demontaż wykonuje się dopiero po odcięciu instalacji oraz obniżeniu ciśnienia.";
    } else if (symptom === "dirty") {
      labSvg.classList.add("is-dirty");
      labState.classList.add("is-warning");
      stateTitle = "Skala może być niewiarygodna do odczytu";
      stateCopy = "Osad ogranicza widoczność i może utrudniać ruch elementu wskazującego. Czyszczenie musi być zgodne z instrukcją produktu, a po złożeniu potrzebna jest kontrola szczelności.";
    } else if (required > 3) {
      labState.classList.add("is-danger");
      stateTitle = "Przepływ wymagany wykracza poza skalę";
      stateCopy = "Nie można wiarygodnie ustawić celu na wskaźniku 0–3 l/min. Trzeba zweryfikować założenia obwodu, ΔT, podział mocy i dobór elementów hydraulicznych.";
    } else if (deviation < -10) {
      labState.classList.add("is-warning");
      stateTitle = "Przepływ jest niższy od celu";
      stateCopy = "Sprawdź nastawę, otwarcie zaworu i siłownika, odpowietrzenie, filtr, opór pętli oraz dostępny spręż pompy. Nie podnoś temperatury zasilania zamiast usunięcia przyczyny.";
    } else if (deviation > 10) {
      labState.classList.add("is-warning");
      stateTitle = "Przepływ jest wyższy od celu";
      stateCopy = "Ograniczaj przepływ zgodnie z konstrukcją zaworu i obserwuj pozostałe pętle, ponieważ zmiana jednej gałęzi wpływa na cały równoległy układ.";
    }

    byId("rk-flow-lab-state-title").textContent = stateTitle;
    byId("rk-flow-lab-state-copy").textContent = stateCopy;
  };

  [labPower, labDt, labDirection, labSymptom, labActual].forEach(function (field) {
    field.addEventListener("input", updateLab);
    field.addEventListener("change", updateLab);
  });
  updateLab();

  var defaultLoops = [
    {power: 650, length: 85, actual: 1.1},
    {power: 420, length: 65, actual: 1.4},
    {power: 380, length: 55, actual: 1.7},
    {power: 300, length: 60, actual: 0.7},
    {power: 180, length: 35, actual: 1.2}
  ];
  var loopCards = Array.prototype.slice.call(root.querySelectorAll(".rk-flow-loop-card"));
  var globalDt = byId("rk-flow-global-dt");
  var scaleMax = byId("rk-flow-scale-max");
  var tolerance = byId("rk-flow-tolerance");
  var scenarioButtons = root.querySelectorAll(".rk-flow-scenario-button");

  var clearScenario = function () {
    scenarioButtons.forEach(function (button) {
      button.classList.remove("is-active");
    });
  };

  var updateManifold = function () {
    var deltaT = clamp(toNumber(globalDt, 5), 2, 15);
    var maximum = clamp(toNumber(scaleMax, 3), 3, 5);
    var allowed = clamp(toNumber(tolerance, 10), 5, 30);
    var totalTarget = 0;
    var totalActual = 0;
    var balanced = 0;

    loopCards.forEach(function (card, index) {
      var powerField = card.querySelector(".rk-flow-loop-power");
      var lengthField = card.querySelector(".rk-flow-loop-length");
      var actualField = card.querySelector(".rk-flow-loop-actual");
      var power = clamp(toNumber(powerField, defaultLoops[index].power), 50, 1500);
      var length = clamp(toNumber(lengthField, defaultLoops[index].length), 10, 150);
      actualField.max = maximum;
      var actual = clamp(toNumber(actualField, defaultLoops[index].actual), 0, maximum);
      if (toNumber(actualField, actual) > maximum) {
        actualField.value = maximum;
      }
      var target = power / (69.8 * deltaT);
      var deviation = target > 0 ? (actual - target) / target * 100 : 0;
      var inTolerance = Math.abs(deviation) <= allowed;

      totalTarget += target;
      totalActual += actual;
      var countsAsBalanced = inTolerance;
      if (target > maximum) {
        countsAsBalanced = false;
      }
      if (length > 100) {
        countsAsBalanced = false;
      }
      if (countsAsBalanced) {
        balanced += 1;
      }

      card.querySelector(".rk-flow-loop-target-label").textContent = "cel " + format(target, 2);
      card.querySelector(".rk-flow-loop-actual-label").textContent = format(actual, 2);
      card.querySelector(".rk-flow-mini-target").style.top = clamp(target / maximum * 100, 0, 100) + "%";
      card.querySelector(".rk-flow-mini-float").style.top = clamp(actual / maximum * 100, 0, 100) + "%";

      card.querySelectorAll("[data-scale-step]").forEach(function (label) {
        var step = parseInt(label.getAttribute("data-scale-step"), 10);
        label.textContent = format(maximum * step / 4, step === 0 ? 0 : 2).replace(/,00$/, "").replace(/,50$/, ",5").replace(/,25$/, ",25").replace(/,75$/, ",75");
      });

      var status = card.querySelector(".rk-flow-loop-status");
      status.classList.remove("is-low", "is-high", "is-zero", "is-limit");
      var statusText = "W tolerancji";
      var resultText = "W tolerancji";
      if (target > maximum) {
        statusText = "Cel poza skalą";
        resultText = "Cel poza skalą rotametru";
        status.classList.add("is-limit");
      } else if (actual < 0.05) {
        statusText = "Brak przepływu";
        resultText = "Brak przepływu — diagnostyka";
        status.classList.add("is-zero");
      } else if (deviation < -allowed) {
        statusText = "Za mały przepływ";
        resultText = "Poniżej celu";
        status.classList.add("is-low");
      } else if (deviation > allowed) {
        statusText = "Za duży przepływ";
        resultText = "Powyżej celu";
        status.classList.add("is-high");
      } else if (length > 100) {
        statusText = "Przepływ OK • sprawdź opór";
        resultText = "Przepływ OK, kontrola długiej pętli";
        status.classList.add("is-limit");
      } else if (length > 90) {
        statusText = "Przepływ OK • długa pętla";
        resultText = "Przepływ OK, sprawdź opór";
        status.classList.add("is-low");
      }
      status.textContent = statusText;

      var chart = root.querySelector("[data-chart-loop='" + index + "']");
      chart.querySelector(".rk-flow-chart-target").style.width = clamp(target / maximum * 100, 0, 100) + "%";
      chart.querySelector(".rk-flow-chart-actual").style.width = clamp(actual / maximum * 100, 0, 100) + "%";
      chart.querySelector(".rk-flow-chart-value").textContent = format(target, 2) + " / " + format(actual, 2);

      var row = root.querySelector("[data-result-loop='" + index + "']");
      row.querySelector(".rk-flow-result-target").textContent = format(target, 2) + " l/min";
      row.querySelector(".rk-flow-result-actual").textContent = format(actual, 2) + " l/min";
      row.querySelector(".rk-flow-result-deviation").textContent = signedPercent(deviation);
      row.querySelector(".rk-flow-result-status").textContent = resultText;
    });

    byId("rk-flow-total-target").textContent = format(totalTarget, 2) + " l/min";
    byId("rk-flow-total-actual").textContent = format(totalActual, 2) + " l/min";
    byId("rk-flow-balanced-count").textContent = balanced + " z " + loopCards.length;
    if (balanced === loopCards.length) {
      byId("rk-flow-manifold-verdict").textContent = "Przepływy zgodne";
    } else if (balanced === 0) {
      byId("rk-flow-manifold-verdict").textContent = "Diagnostyka wymagana";
    } else {
      byId("rk-flow-manifold-verdict").textContent = "Do dalszej regulacji";
    }
  };

  var setActuals = function (values) {
    loopCards.forEach(function (card, index) {
      var field = card.querySelector(".rk-flow-loop-actual");
      field.value = clamp(values[index], 0, toNumber(scaleMax, 3));
    });
  };

  var calculatedTargets = function () {
    var deltaT = clamp(toNumber(globalDt, 5), 2, 15);
    var maximum = toNumber(scaleMax, 3);
    return loopCards.map(function (card) {
      var power = toNumber(card.querySelector(".rk-flow-loop-power"), 300);
      return clamp(power / (69.8 * deltaT), 0, maximum);
    });
  };

  var applyScenario = function (name) {
    var targets = calculatedTargets();
    if (name === "balanced") {
      setActuals(targets);
    } else if (name === "air") {
      targets[2] = 0.15;
      setActuals(targets);
    } else if (name === "filter") {
      setActuals(targets.map(function (value) { return value * 0.45; }));
    } else if (name === "actuator") {
      targets[3] = 0;
      setActuals(targets);
    } else if (name === "reset") {
      globalDt.value = 5;
      scaleMax.value = 3;
      tolerance.value = 10;
      loopCards.forEach(function (card, index) {
        card.querySelector(".rk-flow-loop-power").value = defaultLoops[index].power;
        card.querySelector(".rk-flow-loop-length").value = defaultLoops[index].length;
        card.querySelector(".rk-flow-loop-actual").value = defaultLoops[index].actual;
      });
      name = "unbalanced";
    } else {
      setActuals(defaultLoops.map(function (loop) { return loop.actual; }));
    }

    clearScenario();
    scenarioButtons.forEach(function (button) {
      if (button.getAttribute("data-scenario") === name) {
        button.classList.add("is-active");
      }
    });
    updateManifold();
  };

  scenarioButtons.forEach(function (button) {
    button.addEventListener("click", function () {
      applyScenario(button.getAttribute("data-scenario"));
    });
  });

  [globalDt, scaleMax, tolerance].forEach(function (field) {
    field.addEventListener("input", function () {
      clearScenario();
      updateManifold();
    });
    field.addEventListener("change", function () {
      clearScenario();
      updateManifold();
    });
  });

  loopCards.forEach(function (card) {
    card.querySelectorAll("input").forEach(function (field) {
      field.addEventListener("input", function () {
        clearScenario();
        updateManifold();
      });
      field.addEventListener("change", function () {
        clearScenario();
        updateManifold();
      });
    });
  });
  updateManifold();

  var diagnosticData = {
    stable: {
      label: "Stan odniesienia",
      title: "Stabilny odczyt zgodny z projektem",
      copy: "Wskaźnik nie pulsuje, a jego wartość pozostaje w pobliżu nastawy projektowej. To dobry punkt wyjścia, ale trzeba jeszcze zweryfikować pozostałe obwody i temperatury instalacji.",
      items: ["zgodność odczytu z tabelą projektową,", "stabilność wszystkich pętli,", "temperaturę zasilania i powrotu po ustabilizowaniu pracy."]
    },
    jumping: {
      label: "Objaw: odczyt niestabilny",
      title: "Skaczący pływak nie oznacza wyłącznie powietrza",
      copy: "Powietrze jest częstą przyczyną, ale podobny objaw może powodować pulsowanie pompy lub zaworu, zanieczyszczenie, niewłaściwy kierunek przepływu albo zbyt duża różnica ciśnienia.",
      items: ["czy instalacja została prawidłowo odpowietrzona i przepłukana,", "czy pompa pracuje stabilnie w przewidzianym trybie,", "czy zawory nie pulsują oraz czy filtr i wkładka są czyste."]
    },
    onezero: {
      label: "Objaw: jeden obwód bez przepływu",
      title: "Porównaj niedziałającą pętlę z pozostałymi",
      copy: "Jeżeli pozostałe rotametry pracują, przyczyna najczęściej znajduje się w konkretnym obwodzie albo jego zaworze. Nie wyklucza to jednak błędu wskazania samego rotametru.",
      items: ["otwarcie zaworu i stan siłownika tej pętli,", "zapowietrzenie, blokadę iglicy i czystość wkładki,", "drożność, załamanie rury oraz możliwość osiągnięcia przepływu przy danym oporze."]
    },
    allzero: {
      label: "Objaw: brak przepływu na całej belce",
      title: "Najpierw sprawdź elementy wspólne dla rozdzielacza",
      copy: "Jednoczesne zero na wszystkich wskaźnikach kieruje uwagę na pompę, zawory główne, sterowanie, filtr, ciśnienie albo kierunek przepływu. Awaria pompy jest jedną z możliwości, a nie gotową diagnozą.",
      items: ["zasilanie, tryb pracy i pracę pompy obiegowej,", "otwarcie zaworów głównych oraz stan sterowania i siłowników,", "ciśnienie, filtr, odpowietrzenie i zgodność kierunku przepływu."]
    },
    dirty: {
      label: "Objaw: ograniczona widoczność albo ruch",
      title: "Osad może zakłócać odczyt i pracę elementu",
      copy: "Mętny korpus nie pozwala dokładnie określić położenia wskaźnika, a zanieczyszczenia mogą ograniczać jego ruch. Nie wykręcaj wkładki z rozdzielacza pracującego pod ciśnieniem.",
      items: ["instrukcję czyszczenia konkretnego modelu,", "możliwość bezpiecznego odcięcia i rozprężenia właściwej części instalacji,", "stan uszczelnienia oraz szczelność po ponownym montażu."]
    }
  };

  var diagnosticButtons = root.querySelectorAll(".rk-flow-diagnostic-button");
  var updateDiagnostic = function (name) {
    var data = diagnosticData[name];
    if (!data) {
      return;
    }
    diagnosticButtons.forEach(function (button) {
      button.classList.toggle("is-active", button.getAttribute("data-diagnostic") === name);
    });
    byId("rk-flow-diagnostic-label").textContent = data.label;
    byId("rk-flow-diagnostic-title").textContent = data.title;
    byId("rk-flow-diagnostic-copy").textContent = data.copy;
    var list = byId("rk-flow-diagnostic-list");
    list.textContent = "";
    data.items.forEach(function (item) {
      var line = document.createElement("li");
      line.textContent = item;
      list.appendChild(line);
    });
  };
  diagnosticButtons.forEach(function (button) {
    button.addEventListener("click", function () {
      updateDiagnostic(button.getAttribute("data-diagnostic"));
    });
  });

  var faqItems = root.querySelectorAll(".rk-flow-faq details");
  faqItems.forEach(function (item) {
    item.addEventListener("toggle", function () {
      if (!item.open) {
        return;
      }
      faqItems.forEach(function (other) {
        if (other !== item) {
          other.open = false;
        }
      });
    });
  });
})();
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">Rotametr (wskaźnik przepływu) w rozdzielaczu ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</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>Za długa pętla podłogówki.</title>
		<link>https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/</link>
					<comments>https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Thu, 06 Feb 2025 17:41:12 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Komfort cieplny]]></category>
		<category><![CDATA[Komfort cieplny w domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Regulacja hydrauliczna]]></category>
		<category><![CDATA[Technologie grzewcze]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[koszty ogrzewania]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pętle grzewcze]]></category>
		<category><![CDATA[pompa obiegowa]]></category>
		<category><![CDATA[projektowanie instalacji]]></category>
		<category><![CDATA[regulacja hydrauliczna]]></category>
		<category><![CDATA[straty ciśnienia]]></category>
		<category><![CDATA[za długa pętla podłogówki]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2103</guid>

					<description><![CDATA[<p>Za długa pętla podłogówki bywa jednym z najbardziej niedocenianych zagrożeń związanych z instalacją ogrzewania podłogowego. Jeśli jedna pętla jest zbyt długa, możesz borykać się z nierównomiernym rozkładem temperatur w pomieszczeniach, nadmiernym obciążeniem pompy obiegowej oraz wyższymi rachunkami za ogrzewanie. Niewłaściwy dobór obwodu grzewczego wiąże się też z potencjalnymi problemami w późniejszej regulacji i eksploatacji całej instalacji. Właśnie dlatego tak ważne jest poznanie zasad prawidłowego projektowania oraz stosowanie sprawdzonych rozwiązań, które pozwolą uniknąć dodatkowych kosztów i zapewnić pełen komfort cieplny w każdym pomieszczeniu.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">Za długa pętla podłogówki.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-loopdiag-guide {
    --rk-dark: #102536;
    --rk-navy: #14384d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e9fbff;
    --rk-orange: #ff6d38;
    --rk-red: #df4537;
    --rk-yellow: #f2bd42;
    --rk-yellow-soft: #fff8df;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-purple: #6d5bd0;
    --rk-ink: #1f2937;
    --rk-text: #475968;
    --rk-muted: #6c7e8a;
    --rk-line: #d6e5ec;
    --rk-soft: #f4f9fb;
    --rk-warm: #fff3ec;
    --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.76;
  }

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

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

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

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

  #rk-loopdiag-guide p,
  #rk-loopdiag-guide ul,
  #rk-loopdiag-guide ol {
    margin-top: 0;
    margin-bottom: 1.15em;
  }

  #rk-loopdiag-guide h2,
  #rk-loopdiag-guide h3,
  #rk-loopdiag-guide h4 {
    margin-top: 0;
    color: var(--rk-dark);
    font-weight: 950;
    letter-spacing: -0.035em;
  }

  #rk-loopdiag-guide h2 {
    margin-bottom: 18px;
    font-size: clamp(1.8rem, 4vw, 2.75rem);
    line-height: 1.08;
  }

  #rk-loopdiag-guide h3 {
    margin-bottom: 10px;
    font-size: clamp(1.08rem, 2.2vw, 1.36rem);
    line-height: 1.22;
  }

  #rk-loopdiag-guide .rk-loopdiag-shell {
    position: relative;
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 32px;
    background: var(--rk-white);
    box-shadow: 0 28px 70px rgba(16, 37, 54, 0.11);
  }

  #rk-loopdiag-guide .rk-loopdiag-progress-track {
    position: sticky;
    z-index: 60;
    top: 0;
    height: 5px;
    background: rgba(214, 229, 236, 0.8);
  }

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

  #rk-loopdiag-guide .rk-loopdiag-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(38px, 7vw, 74px);
    color: var(--rk-white);
    background:
      radial-gradient(circle at 89% 21%, rgba(255, 109, 56, 0.36), transparent 29%),
      radial-gradient(circle at 76% 90%, rgba(37, 199, 216, 0.22), transparent 34%),
      linear-gradient(126deg, #0f2233, #143d53 74%, #2b3743);
  }

  #rk-loopdiag-guide .rk-loopdiag-hero::after {
    content: "";
    position: absolute;
    right: -80px;
    bottom: -90px;
    width: 360px;
    height: 360px;
    border: 42px solid rgba(255, 255, 255, 0.045);
    border-radius: 50%;
  }

  #rk-loopdiag-guide .rk-loopdiag-hero-grid {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: center;
  }

  #rk-loopdiag-guide .rk-loopdiag-eyebrow,
  #rk-loopdiag-guide .rk-loopdiag-kicker {
    display: inline-flex;
    gap: 9px;
    align-items: center;
    margin-bottom: 17px;
    color: var(--rk-orange);
    font-size: 0.72rem;
    font-weight: 950;
    letter-spacing: 0.09em;
    line-height: 1.35;
    text-transform: uppercase;
  }

  #rk-loopdiag-guide .rk-loopdiag-eyebrow {
    padding: 9px 14px;
    border: 1px solid rgba(255, 255, 255, 0.24);
    border-radius: 999px;
    color: #dffbff;
    background: rgba(255, 255, 255, 0.055);
  }

  #rk-loopdiag-guide .rk-loopdiag-eyebrow b {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 7px rgba(255, 109, 56, 0.16);
  }

  #rk-loopdiag-guide .rk-loopdiag-hero-title {
    max-width: 790px;
    margin-bottom: 22px;
    color: var(--rk-white);
    font-size: clamp(2.15rem, 5.2vw, 4.35rem);
    font-weight: 980;
    letter-spacing: -0.058em;
    line-height: 0.99;
  }

  #rk-loopdiag-guide .rk-loopdiag-hero-lead {
    max-width: 800px;
    margin-bottom: 25px;
    color: #d7e8ef;
    font-size: clamp(1rem, 2vw, 1.22rem);
    line-height: 1.7;
  }

  #rk-loopdiag-guide .rk-loopdiag-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 11px 24px;
    color: #c7dbe4;
    font-size: 0.72rem;
    font-weight: 800;
  }

  #rk-loopdiag-guide .rk-loopdiag-meta span {
    display: inline-flex;
    gap: 8px;
    align-items: center;
  }

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

  #rk-loopdiag-guide .rk-loopdiag-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    padding: 17px clamp(22px, 5vw, 58px);
    border-bottom: 1px solid var(--rk-line);
    background: var(--rk-white);
  }

  #rk-loopdiag-guide .rk-loopdiag-nav a {
    padding: 8px 13px;
    border: 1px solid #c9dfe7;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-soft);
    font-size: 0.69rem;
    font-weight: 900;
    line-height: 1.35;
    text-decoration: none;
  }

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

  #rk-loopdiag-guide .rk-loopdiag-body {
    padding: clamp(30px, 6vw, 68px);
  }

  #rk-loopdiag-guide .rk-loopdiag-section {
    scroll-margin-top: 30px;
    margin-bottom: clamp(58px, 9vw, 100px);
  }

  #rk-loopdiag-guide .rk-loopdiag-lead {
    max-width: 930px;
    color: var(--rk-text);
    font-size: clamp(1.02rem, 2vw, 1.2rem);
    line-height: 1.82;
  }

  #rk-loopdiag-guide .rk-loopdiag-dropcap::first-letter {
    float: left;
    margin: 10px 10px 0 0;
    color: var(--rk-orange);
    font-size: 4.4rem;
    font-weight: 950;
    line-height: 0.75;
  }

  #rk-loopdiag-guide .rk-loopdiag-answer {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(260px, 0.75fr);
    gap: 0;
    overflow: hidden;
    margin-top: 26px;
    border: 1px solid var(--rk-line);
    border-radius: 24px;
  }

  #rk-loopdiag-guide .rk-loopdiag-answer-main,
  #rk-loopdiag-guide .rk-loopdiag-answer-side {
    padding: clamp(25px, 4vw, 38px);
  }

  #rk-loopdiag-guide .rk-loopdiag-answer-main {
    background: var(--rk-soft);
  }

  #rk-loopdiag-guide .rk-loopdiag-answer-side {
    color: #4f4637;
    border-left: 1px solid #f1d993;
    background: var(--rk-yellow-soft);
  }

  #rk-loopdiag-guide .rk-loopdiag-answer p:last-child,
  #rk-loopdiag-guide .rk-loopdiag-card p:last-child,
  #rk-loopdiag-guide .rk-loopdiag-callout p:last-child {
    margin-bottom: 0;
  }

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

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

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

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

  #rk-loopdiag-guide .rk-loopdiag-card {
    min-width: 0;
    padding: 25px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-white);
    box-shadow: 0 10px 28px rgba(16, 37, 54, 0.055);
  }

  #rk-loopdiag-guide .rk-loopdiag-card-number {
    display: inline-flex;
    min-width: 44px;
    height: 44px;
    align-items: center;
    justify-content: center;
    margin-bottom: 17px;
    padding: 0 10px;
    border-radius: 13px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-blue), var(--rk-cyan));
    font-size: 0.72rem;
    font-weight: 950;
  }

  #rk-loopdiag-guide .rk-loopdiag-callout {
    margin-top: 24px;
    padding: 24px 27px;
    border-left: 6px solid var(--rk-cyan);
    border-radius: 0 18px 18px 0;
    background: var(--rk-cyan-soft);
  }

  #rk-loopdiag-guide .rk-loopdiag-callout.is-warning {
    border-left-color: var(--rk-orange);
    background: var(--rk-warm);
  }

  #rk-loopdiag-guide .rk-loopdiag-table-wrap {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-white);
  }

  #rk-loopdiag-guide table {
    width: 100%;
    margin: 0;
    border-collapse: collapse;
    table-layout: fixed;
  }

  #rk-loopdiag-guide th,
  #rk-loopdiag-guide td {
    padding: 17px 15px;
    border: 0;
    border-bottom: 1px solid var(--rk-line);
    vertical-align: top;
    text-align: left;
    overflow-wrap: anywhere;
  }

  #rk-loopdiag-guide th {
    color: var(--rk-white);
    background: var(--rk-dark);
    font-size: 0.7rem;
    font-weight: 900;
    letter-spacing: 0.02em;
    line-height: 1.4;
  }

  #rk-loopdiag-guide td {
    color: var(--rk-text);
    font-size: 0.83rem;
    line-height: 1.6;
  }

  #rk-loopdiag-guide tr:last-child td {
    border-bottom: 0;
  }

  #rk-loopdiag-guide tbody tr:nth-child(even) td {
    background: var(--rk-soft);
  }

  #rk-loopdiag-guide .rk-loopdiag-audit {
    overflow: hidden;
    border: 1px solid #bcdde8;
    border-radius: 28px;
    background: var(--rk-white);
    box-shadow: 0 20px 48px rgba(16, 37, 54, 0.09);
  }

  #rk-loopdiag-guide .rk-loopdiag-audit-head {
    padding: clamp(28px, 5vw, 48px);
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 15%, rgba(255, 109, 56, 0.35), transparent 29%),
      linear-gradient(125deg, var(--rk-dark), #164a62);
  }

  #rk-loopdiag-guide .rk-loopdiag-audit-head h2,
  #rk-loopdiag-guide .rk-loopdiag-audit-head p {
    color: var(--rk-white);
  }

  #rk-loopdiag-guide .rk-loopdiag-audit-head p {
    max-width: 900px;
    margin-bottom: 0;
    color: #d8eaf1;
  }

  #rk-loopdiag-guide .rk-loopdiag-audit-layout {
    display: grid;
    grid-template-columns: minmax(300px, 0.8fr) minmax(0, 1.2fr);
  }

  #rk-loopdiag-guide .rk-loopdiag-audit-form {
    padding: clamp(25px, 4vw, 38px);
    border-right: 1px solid var(--rk-line);
    background: var(--rk-soft);
  }

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

  #rk-loopdiag-guide .rk-loopdiag-field {
    min-width: 0;
  }

  #rk-loopdiag-guide .rk-loopdiag-field.is-full {
    grid-column: 1 / -1;
  }

  #rk-loopdiag-guide .rk-loopdiag-field label {
    display: block;
    min-height: 2.6em;
    margin-bottom: 6px;
    color: var(--rk-dark);
    font-size: 0.7rem;
    font-weight: 900;
    line-height: 1.3;
  }

  #rk-loopdiag-guide .rk-loopdiag-field input,
  #rk-loopdiag-guide .rk-loopdiag-field select {
    width: 100%;
    min-height: 48px;
    padding: 10px 12px;
    border: 1px solid #bdd4de;
    border-radius: 12px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: 0.82rem;
    font-weight: 760;
    outline: none;
  }

  #rk-loopdiag-guide .rk-loopdiag-field input:focus,
  #rk-loopdiag-guide .rk-loopdiag-field select:focus {
    border-color: var(--rk-blue);
    box-shadow: 0 0 0 4px rgba(7, 143, 190, 0.12);
  }

  #rk-loopdiag-guide .rk-loopdiag-checks {
    display: grid;
    gap: 10px;
    margin-top: 18px;
  }

  #rk-loopdiag-guide .rk-loopdiag-check {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 11px;
    align-items: start;
    padding: 12px;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    background: var(--rk-white);
    cursor: pointer;
  }

  #rk-loopdiag-guide .rk-loopdiag-check input {
    width: 20px;
    height: 20px;
    margin-top: 2px;
    accent-color: var(--rk-blue);
  }

  #rk-loopdiag-guide .rk-loopdiag-check span {
    color: var(--rk-text);
    font-size: 0.75rem;
    font-weight: 760;
    line-height: 1.45;
  }

  #rk-loopdiag-guide .rk-loopdiag-audit-reset {
    width: 100%;
    min-height: 48px;
    margin-top: 17px;
    padding: 11px 16px;
    border: 1px solid #bdd4de;
    border-radius: 12px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-weight: 900;
    cursor: pointer;
  }

  #rk-loopdiag-guide .rk-loopdiag-audit-reset:hover,
  #rk-loopdiag-guide .rk-loopdiag-audit-reset:focus-visible {
    color: var(--rk-white);
    border-color: var(--rk-blue);
    background: var(--rk-blue);
  }

  #rk-loopdiag-guide .rk-loopdiag-audit-output {
    min-width: 0;
    padding: clamp(25px, 4vw, 42px);
  }

  #rk-loopdiag-guide .rk-loopdiag-metrics {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 20px;
  }

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

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

  #rk-loopdiag-guide .rk-loopdiag-metric small {
    display: block;
    min-height: 2.7em;
    color: var(--rk-muted);
    font-size: 0.65rem;
    font-weight: 850;
    line-height: 1.35;
  }

  #rk-loopdiag-guide .rk-loopdiag-metric strong {
    display: block;
    margin-top: 6px;
    color: var(--rk-dark);
    font-size: clamp(1.15rem, 2.6vw, 1.75rem);
    font-weight: 950;
    line-height: 1.15;
  }

  #rk-loopdiag-guide .rk-loopdiag-audit-status {
    margin-bottom: 20px;
    padding: 18px 20px;
    border-left: 6px solid var(--rk-green);
    border-radius: 0 15px 15px 0;
    background: var(--rk-green-soft);
  }

  #rk-loopdiag-guide .rk-loopdiag-audit-status.is-warning {
    border-left-color: var(--rk-yellow);
    background: var(--rk-yellow-soft);
  }

  #rk-loopdiag-guide .rk-loopdiag-audit-status.is-danger {
    border-left-color: var(--rk-red);
    background: #fff0ef;
  }

  #rk-loopdiag-guide .rk-loopdiag-audit-status strong,
  #rk-loopdiag-guide .rk-loopdiag-audit-status span {
    display: block;
  }

  #rk-loopdiag-guide .rk-loopdiag-audit-status span {
    margin-top: 4px;
    color: var(--rk-text);
    font-size: 0.77rem;
    line-height: 1.55;
  }

  #rk-loopdiag-guide .rk-loopdiag-audit-plan {
    overflow: hidden;
    margin-bottom: 20px;
    padding: 14px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-soft);
  }

  #rk-loopdiag-guide .rk-loopdiag-audit-plan svg {
    display: block;
    width: 100%;
    height: auto;
  }

  #rk-loopdiag-guide .rk-loopdiag-audit-list {
    display: grid;
    gap: 10px;
    margin: 0;
    padding: 0;
    list-style: none;
  }

  #rk-loopdiag-guide .rk-loopdiag-audit-list li {
    position: relative;
    margin: 0;
    padding: 12px 14px 12px 43px;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    color: var(--rk-text);
    background: var(--rk-white);
    font-size: 0.77rem;
    line-height: 1.5;
  }

  #rk-loopdiag-guide .rk-loopdiag-audit-list li::before {
    content: "!";
    position: absolute;
    top: 12px;
    left: 13px;
    display: inline-flex;
    width: 21px;
    height: 21px;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: 0.66rem;
    font-weight: 950;
  }

  #rk-loopdiag-guide .rk-loopdiag-tool-note {
    padding: 18px clamp(25px, 4vw, 42px);
    border-top: 1px solid var(--rk-line);
    color: var(--rk-muted);
    background: #fbfdfe;
    font-size: 0.69rem;
    line-height: 1.55;
  }

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

  #rk-loopdiag-guide .rk-loopdiag-formula {
    min-width: 0;
    padding: 25px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: linear-gradient(145deg, var(--rk-white), var(--rk-cyan-soft));
  }

  #rk-loopdiag-guide .rk-loopdiag-formula span {
    display: block;
    margin-bottom: 10px;
    color: var(--rk-blue);
    font-size: 0.68rem;
    font-weight: 950;
    letter-spacing: 0.06em;
    text-transform: uppercase;
  }

  #rk-loopdiag-guide .rk-loopdiag-formula strong {
    display: block;
    overflow-wrap: anywhere;
    color: var(--rk-dark);
    font-size: clamp(1.18rem, 2.6vw, 1.7rem);
    line-height: 1.35;
  }

  #rk-loopdiag-guide .rk-loopdiag-formula p {
    margin: 12px 0 0;
    color: var(--rk-text);
    font-size: 0.76rem;
    line-height: 1.6;
  }

  #rk-loopdiag-guide .rk-loopdiag-inline-cta,
  #rk-loopdiag-guide .rk-loopdiag-final-cta {
    overflow: hidden;
    border-radius: 27px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 16%, rgba(255, 109, 56, 0.39), transparent 28%),
      linear-gradient(125deg, var(--rk-dark), #17475e);
  }

  #rk-loopdiag-guide .rk-loopdiag-inline-cta {
    margin-top: 25px;
    padding: clamp(28px, 5vw, 48px);
  }

  #rk-loopdiag-guide .rk-loopdiag-final-cta {
    margin-top: clamp(55px, 8vw, 88px);
    padding: clamp(31px, 5vw, 55px);
  }

  #rk-loopdiag-guide .rk-loopdiag-inline-cta h3,
  #rk-loopdiag-guide .rk-loopdiag-final-cta h2 {
    max-width: 880px;
    color: var(--rk-white);
  }

  #rk-loopdiag-guide .rk-loopdiag-inline-cta p,
  #rk-loopdiag-guide .rk-loopdiag-final-cta p {
    max-width: 920px;
    color: #d7e9f1;
  }

  #rk-loopdiag-guide .rk-loopdiag-cta-button {
    display: inline-flex;
    min-height: 54px;
    align-items: center;
    justify-content: center;
    margin-top: 8px;
    padding: 13px 23px;
    border-radius: 14px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-orange), #ef4937);
    box-shadow: 0 14px 30px rgba(239, 73, 55, 0.25);
    font-weight: 950;
    line-height: 1.35;
    text-align: center;
    text-decoration: none;
  }

  #rk-loopdiag-guide .rk-loopdiag-cta-button:hover,
  #rk-loopdiag-guide .rk-loopdiag-cta-button:focus-visible {
    color: var(--rk-white);
    transform: translateY(-2px);
    box-shadow: 0 18px 36px rgba(239, 73, 55, 0.32);
  }

  #rk-loopdiag-guide .rk-loopdiag-disclosure {
    display: block;
    margin-top: 12px;
    color: #b9d0db;
    font-size: 0.65rem;
    line-height: 1.5;
  }

  #rk-loopdiag-guide .rk-loopdiag-steps {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    counter-reset: joint-step;
  }

  #rk-loopdiag-guide .rk-loopdiag-step {
    position: relative;
    min-width: 0;
    padding: 25px 25px 25px 78px;
    border: 1px solid var(--rk-line);
    border-radius: 19px;
    background: var(--rk-white);
  }

  #rk-loopdiag-guide .rk-loopdiag-step::before {
    counter-increment: joint-step;
    content: counter(joint-step, decimal-leading-zero);
    position: absolute;
    top: 24px;
    left: 22px;
    display: inline-flex;
    width: 42px;
    height: 42px;
    align-items: center;
    justify-content: center;
    border-radius: 13px;
    color: var(--rk-white);
    background: var(--rk-dark);
    font-size: 0.68rem;
    font-weight: 950;
  }

  #rk-loopdiag-guide .rk-loopdiag-step p {
    margin-bottom: 0;
    color: var(--rk-text);
  }

  #rk-loopdiag-guide .rk-loopdiag-error {
    position: relative;
    padding: 26px;
    border: 1px solid #f0cbc5;
    border-radius: 20px;
    background: #fff9f8;
  }

  #rk-loopdiag-guide .rk-loopdiag-error b {
    display: inline-block;
    margin-bottom: 11px;
    color: var(--rk-red);
    font-size: 0.68rem;
    letter-spacing: 0.08em;
  }

  #rk-loopdiag-guide .rk-loopdiag-checklist {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 13px;
    margin: 22px 0 0;
    padding: 0;
    list-style: none;
  }

  #rk-loopdiag-guide .rk-loopdiag-checklist li {
    position: relative;
    margin: 0;
    padding: 17px 17px 17px 51px;
    border: 1px solid var(--rk-line);
    border-radius: 15px;
    color: var(--rk-text);
    background: var(--rk-soft);
  }

  #rk-loopdiag-guide .rk-loopdiag-checklist li::before {
    content: "✓";
    position: absolute;
    top: 17px;
    left: 17px;
    display: inline-flex;
    width: 23px;
    height: 23px;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-green);
    font-size: 0.69rem;
    font-weight: 950;
  }

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

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

  #rk-loopdiag-guide .rk-loopdiag-faq summary {
    position: relative;
    padding: 19px 55px 19px 20px;
    color: var(--rk-dark);
    font-weight: 900;
    line-height: 1.45;
    cursor: pointer;
    list-style: none;
  }

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

  #rk-loopdiag-guide .rk-loopdiag-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: 50%;
    color: var(--rk-white);
    background: var(--rk-blue);
    transform: translateY(-50%);
  }

  #rk-loopdiag-guide .rk-loopdiag-faq details[open] summary::after {
    content: "−";
  }

  #rk-loopdiag-guide .rk-loopdiag-faq-answer {
    padding: 0 20px 20px;
    color: var(--rk-text);
  }

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

  #rk-loopdiag-guide .rk-loopdiag-sources {
    padding: 24px 27px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    color: var(--rk-text);
    background: var(--rk-soft);
    font-size: 0.76rem;
    line-height: 1.65;
  }

  #rk-loopdiag-guide .rk-loopdiag-sources strong {
    display: block;
    margin-bottom: 8px;
    color: var(--rk-dark);
  }

  #rk-loopdiag-guide .rk-loopdiag-author {
    position: relative;
    overflow: hidden;
    margin-top: clamp(55px, 8vw, 88px);
    border: 1px solid var(--rk-line);
    border-radius: 27px;
    background: var(--rk-white);
    box-shadow: 0 20px 50px rgba(16, 37, 54, 0.09);
  }

  #rk-loopdiag-guide .rk-loopdiag-author > input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
  }

  #rk-loopdiag-guide .rk-loopdiag-author-head {
    display: flex;
    gap: 20px;
    align-items: center;
    justify-content: space-between;
    padding: clamp(27px, 5vw, 44px);
    color: var(--rk-white);
    border-bottom: 5px solid var(--rk-cyan);
    background: var(--rk-dark);
  }

  #rk-loopdiag-guide .rk-loopdiag-author-head h2,
  #rk-loopdiag-guide .rk-loopdiag-author-head p {
    color: var(--rk-white);
  }

  #rk-loopdiag-guide .rk-loopdiag-author-head h2 {
    margin-bottom: 5px;
  }

  #rk-loopdiag-guide .rk-loopdiag-author-head p {
    margin-bottom: 0;
    color: #d7e9f1;
  }

  #rk-loopdiag-guide .rk-loopdiag-author-mark {
    flex: 0 0 auto;
    padding: 12px 17px;
    border: 1px solid rgba(37, 199, 216, 0.4);
    border-radius: 15px;
    color: #79f1ff;
    font-size: 0.72rem;
    font-weight: 950;
    letter-spacing: 0.08em;
  }

  #rk-loopdiag-guide .rk-loopdiag-author-layout {
    display: grid;
    grid-template-columns: minmax(270px, 0.64fr) minmax(0, 1.36fr);
  }

  #rk-loopdiag-guide .rk-loopdiag-author-side {
    padding: clamp(30px, 5vw, 48px);
    border-right: 1px solid var(--rk-line);
    background: var(--rk-soft);
    text-align: center;
  }

  #rk-loopdiag-guide .rk-loopdiag-author-photo {
    width: min(205px, 74%);
    margin: 0 auto 22px;
    overflow: hidden;
    border: 8px solid var(--rk-white);
    border-radius: 50%;
    box-shadow: 0 16px 36px rgba(16, 37, 54, 0.14);
    aspect-ratio: 1;
  }

  #rk-loopdiag-guide .rk-loopdiag-author-photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

  #rk-loopdiag-guide .rk-loopdiag-author-name {
    margin-bottom: 7px;
    color: var(--rk-dark);
    font-size: 1.5rem;
    font-weight: 950;
    letter-spacing: -0.04em;
    line-height: 1.1;
  }

  #rk-loopdiag-guide .rk-loopdiag-author-role {
    color: var(--rk-blue);
    font-size: 0.7rem;
    font-weight: 950;
    letter-spacing: 0.07em;
    line-height: 1.55;
    text-transform: uppercase;
  }

  #rk-loopdiag-guide .rk-loopdiag-author-main {
    padding: clamp(30px, 5vw, 48px);
  }

  #rk-loopdiag-guide .rk-loopdiag-author-quote {
    position: relative;
    margin: 0 0 24px;
    padding: 24px 24px 24px 68px;
    border: 0;
    border-radius: 18px;
    background: var(--rk-cyan-soft);
  }

  #rk-loopdiag-guide .rk-loopdiag-author-quote::before {
    content: "“";
    position: absolute;
    top: 3px;
    left: 20px;
    color: var(--rk-cyan);
    font-size: 4rem;
    font-weight: 950;
    line-height: 1;
  }

  #rk-loopdiag-guide .rk-loopdiag-author-quote p {
    margin-bottom: 0;
    color: var(--rk-dark);
    font-size: 1.01rem;
    font-style: italic;
    font-weight: 800;
    line-height: 1.75;
  }

  #rk-loopdiag-guide .rk-loopdiag-author-tabs {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 15px 15px 0 0;
  }

  #rk-loopdiag-guide .rk-loopdiag-author-tab {
    padding: 14px 10px;
    color: var(--rk-muted);
    background: var(--rk-soft);
    font-size: 0.7rem;
    font-weight: 900;
    line-height: 1.35;
    text-align: center;
    text-transform: uppercase;
    cursor: pointer;
  }

  #rk-loopdiag-guide .rk-loopdiag-author-tab + .rk-loopdiag-author-tab {
    border-left: 1px solid var(--rk-line);
  }

  #rk-loopdiag-guide .rk-loopdiag-author-panel {
    display: none;
    min-height: 176px;
    padding: 25px;
    border: 1px solid var(--rk-line);
    border-top: 0;
    border-radius: 0 0 15px 15px;
  }

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

  #rk-loopdiag-author-about:checked ~ .rk-loopdiag-author-layout .rk-loopdiag-author-panel-about,
  #rk-loopdiag-author-exp:checked ~ .rk-loopdiag-author-layout .rk-loopdiag-author-panel-exp,
  #rk-loopdiag-author-sites:checked ~ .rk-loopdiag-author-layout .rk-loopdiag-author-panel-sites {
    display: block;
  }

  #rk-loopdiag-author-about:checked ~ .rk-loopdiag-author-layout label[for="rk-loopdiag-author-about"],
  #rk-loopdiag-author-exp:checked ~ .rk-loopdiag-author-layout label[for="rk-loopdiag-author-exp"],
  #rk-loopdiag-author-sites:checked ~ .rk-loopdiag-author-layout label[for="rk-loopdiag-author-sites"] {
    color: var(--rk-blue);
    background: var(--rk-white);
    box-shadow: inset 0 -5px 0 var(--rk-blue);
  }

  #rk-loopdiag-guide .rk-loopdiag-site-links {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 14px;
  }

  #rk-loopdiag-guide .rk-loopdiag-site-links a {
    padding: 8px 13px;
    border: 1px solid #c6dbe4;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: 0.74rem;
    font-weight: 900;
    text-decoration: none;
  }

  #rk-loopdiag-guide .rk-loopdiag-site-links a:hover,
  #rk-loopdiag-guide .rk-loopdiag-site-links a:focus-visible {
    color: var(--rk-white);
    border-color: var(--rk-blue);
    background: var(--rk-blue);
  }

  @media (max-width: 980px) {
    #rk-loopdiag-guide .rk-loopdiag-hero-grid,
    #rk-loopdiag-guide .rk-loopdiag-answer,
    #rk-loopdiag-guide .rk-loopdiag-audit-layout,
    #rk-loopdiag-guide .rk-loopdiag-author-layout {
      grid-template-columns: 1fr;
    }

    #rk-loopdiag-guide .rk-loopdiag-answer-side,
    #rk-loopdiag-guide .rk-loopdiag-audit-form,
    #rk-loopdiag-guide .rk-loopdiag-author-side {
      border-right: 0;
      border-left: 0;
      border-bottom: 1px solid var(--rk-line);
    }

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

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

  @media (max-width: 720px) {
    #rk-loopdiag-guide {
      margin-top: 20px;
      font-size: 16px;
    }

    #rk-loopdiag-guide .rk-loopdiag-shell {
      border-radius: 20px;
    }

    #rk-loopdiag-guide .rk-loopdiag-hero,
    #rk-loopdiag-guide .rk-loopdiag-body {
      padding-right: 21px;
      padding-left: 21px;
    }

    #rk-loopdiag-guide .rk-loopdiag-nav {
      width: auto;
      margin: 18px 20px 0;
      padding: 20px;
      gap: 10px;
      border: 1px solid var(--rk-line);
      border-radius: 20px;
      background: var(--rk-soft);
    }

    #rk-loopdiag-guide .rk-loopdiag-nav::before {
      content: "NA SKRÓTY";
      flex: 0 0 100%;
      margin-bottom: 4px;
      color: var(--rk-dark);
      font-size: 0.75rem;
      font-weight: 900;
      letter-spacing: 0.08em;
      line-height: 1.3;
    }

    #rk-loopdiag-guide .rk-loopdiag-grid-2,
    #rk-loopdiag-guide .rk-loopdiag-grid-3,
    #rk-loopdiag-guide .rk-loopdiag-grid-4,
    #rk-loopdiag-guide .rk-loopdiag-steps,
    #rk-loopdiag-guide .rk-loopdiag-checklist,
    #rk-loopdiag-guide .rk-loopdiag-metrics {
      grid-template-columns: 1fr;
    }

    #rk-loopdiag-guide .rk-loopdiag-formulas {
      grid-template-columns: 1fr;
    }

    #rk-loopdiag-guide .rk-loopdiag-fields {
      grid-template-columns: 1fr;
    }

    #rk-loopdiag-guide .rk-loopdiag-field.is-full {
      grid-column: auto;
    }

    #rk-loopdiag-guide .rk-loopdiag-field label,
    #rk-loopdiag-guide .rk-loopdiag-metric small {
      min-height: 0;
    }

    #rk-loopdiag-guide .rk-loopdiag-step {
      padding: 76px 22px 23px;
    }

    #rk-loopdiag-guide .rk-loopdiag-step::before {
      top: 20px;
      left: 21px;
    }

    #rk-loopdiag-guide .rk-loopdiag-author-head {
      align-items: flex-start;
      flex-direction: column;
    }

    #rk-loopdiag-guide .rk-loopdiag-author-main {
      padding-right: 20px;
      padding-left: 20px;
    }

    #rk-loopdiag-guide .rk-loopdiag-author-quote {
      padding: 58px 20px 21px;
    }

    #rk-loopdiag-guide .rk-loopdiag-author-quote::before {
      top: 0;
      left: 18px;
    }

    #rk-loopdiag-guide .rk-loopdiag-author-tabs {
      grid-template-columns: 1fr;
      border-radius: 15px 15px 0 0;
    }

    #rk-loopdiag-guide .rk-loopdiag-author-tab + .rk-loopdiag-author-tab {
      border-top: 1px solid var(--rk-line);
      border-left: 0;
    }

    #rk-loopdiag-guide .rk-loopdiag-table-wrap {
      overflow: visible;
      border: 0;
      background: transparent;
    }

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

    #rk-loopdiag-guide thead {
      position: absolute;
      width: 1px;
      height: 1px;
      overflow: hidden;
      clip: rect(0 0 0 0);
      white-space: nowrap;
    }

    #rk-loopdiag-guide tbody {
      display: grid;
      gap: 13px;
    }

    #rk-loopdiag-guide tbody tr {
      overflow: hidden;
      border: 1px solid var(--rk-line);
      border-radius: 16px;
      background: var(--rk-white);
      box-shadow: 0 8px 22px rgba(16, 37, 54, 0.05);
    }

    #rk-loopdiag-guide td,
    #rk-loopdiag-guide tbody tr:nth-child(even) td {
      display: grid;
      grid-template-columns: minmax(110px, 0.8fr) minmax(0, 1.2fr);
      gap: 12px;
      align-items: start;
      padding: 13px 15px;
      border-bottom: 1px solid var(--rk-line);
      background: var(--rk-white);
    }

    #rk-loopdiag-guide td:last-child {
      border-bottom: 0;
    }

    #rk-loopdiag-guide td::before {
      content: attr(data-label);
      color: var(--rk-dark);
      font-size: 0.69rem;
      font-weight: 900;
      line-height: 1.45;
    }
  }

  @media (max-width: 470px) {
    #rk-loopdiag-guide .rk-loopdiag-hero-title {
      font-size: 2.1rem;
    }

    #rk-loopdiag-guide td,
    #rk-loopdiag-guide tbody tr:nth-child(even) td {
      grid-template-columns: 1fr;
      gap: 4px;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    #rk-loopdiag-guide *,
    #rk-loopdiag-guide *::before,
    #rk-loopdiag-guide *::after {
      scroll-behavior: auto !important;
      transition-duration: 0.01ms !important;
    }
  }


#rk-loopdiag-guide .rk-loopdiag-equivalence {
    display: grid;
    gap: 12px;
    margin: 20px 0;
    padding: 20px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-soft);
  }

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

  #rk-loopdiag-guide .rk-loopdiag-equivalence-row span,
  #rk-loopdiag-guide .rk-loopdiag-equivalence-row strong {
    color: var(--rk-dark);
    font-size: 0.72rem;
    line-height: 1.35;
  }

  #rk-loopdiag-guide .rk-loopdiag-equivalence-row strong {
    text-align: right;
  }

  #rk-loopdiag-guide .rk-loopdiag-bar-track {
    height: 15px;
    overflow: hidden;
    border-radius: 999px;
    background: #dcebf0;
  }

  #rk-loopdiag-guide .rk-loopdiag-bar {
    display: block;
    width: 0;
    height: 100%;
    border-radius: inherit;
    transition: width 220ms ease;
  }

  #rk-loopdiag-guide .rk-loopdiag-bar.is-eps { background: var(--rk-cyan); }
  #rk-loopdiag-guide .rk-loopdiag-bar.is-xps { background: var(--rk-purple); }
  #rk-loopdiag-guide .rk-loopdiag-bar.is-pir { background: var(--rk-orange); }

  #rk-loopdiag-guide .rk-loopdiag-layer-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 14px 0 0;
    padding: 0;
    list-style: none;
  }

  #rk-loopdiag-guide .rk-loopdiag-layer-legend li {
    display: inline-flex;
    gap: 7px;
    align-items: center;
    margin: 0;
    color: var(--rk-muted);
    font-size: 0.65rem;
    font-weight: 800;
  }

  #rk-loopdiag-guide .rk-loopdiag-layer-legend i {
    width: 11px;
    height: 11px;
    border-radius: 3px;
  }

  #rk-loopdiag-guide .rk-loopdiag-myth {
    position: relative;
    overflow: hidden;
    padding: clamp(24px, 4vw, 38px);
    border: 1px solid #ffd0c2;
    border-radius: 24px;
    background: linear-gradient(135deg, #fff6f1, #fffdfb);
  }

  #rk-loopdiag-guide .rk-loopdiag-myth::before {
    content: "MIT";
    position: absolute;
    top: 16px;
    right: 18px;
    color: rgba(223, 69, 55, 0.09);
    font-size: clamp(3.2rem, 9vw, 7rem);
    font-weight: 980;
    line-height: 1;
  }

  #rk-loopdiag-guide .rk-loopdiag-myth > * {
    position: relative;
    z-index: 1;
  }

  #rk-loopdiag-guide .rk-loopdiag-decision {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    margin-top: 24px;
  }

  #rk-loopdiag-guide .rk-loopdiag-decision-card {
    min-width: 0;
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-radius: 19px;
    background: var(--rk-white);
  }

  #rk-loopdiag-guide .rk-loopdiag-decision-card b {
    display: inline-flex;
    margin-bottom: 12px;
    padding: 5px 9px;
    border-radius: 8px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: 0.65rem;
  }

  #rk-loopdiag-guide .rk-loopdiag-decision-card h3 {
    margin-bottom: 8px;
    font-size: 1rem;
  }

  #rk-loopdiag-guide .rk-loopdiag-decision-card p {
    margin: 0;
    color: var(--rk-text);
    font-size: 0.75rem;
    line-height: 1.55;
  }

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

  @media (max-width: 720px) {
    #rk-loopdiag-guide .rk-loopdiag-decision {
      grid-template-columns: 1fr;
    }

    #rk-loopdiag-guide .rk-loopdiag-equivalence-row {
      grid-template-columns: 70px minmax(0, 1fr) 64px;
      gap: 9px;
    }
  }
  #rk-loopdiag-guide .rk-loopdiag-concepts {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    margin-top: 24px;
  }

  #rk-loopdiag-guide .rk-loopdiag-concept {
    min-width: 0;
    padding: 24px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: linear-gradient(145deg, var(--rk-white), var(--rk-soft));
  }

  #rk-loopdiag-guide .rk-loopdiag-concept b {
    display: inline-flex;
    min-width: 42px;
    height: 42px;
    align-items: center;
    justify-content: center;
    margin-bottom: 15px;
    padding: 0 10px;
    border-radius: 12px;
    color: var(--rk-white);
    background: var(--rk-dark);
    font-size: 0.7rem;
  }

  #rk-loopdiag-guide .rk-loopdiag-concept h3 {
    margin-bottom: 8px;
    font-size: 1.04rem;
  }

  #rk-loopdiag-guide .rk-loopdiag-concept p {
    margin: 0;
    color: var(--rk-text);
    font-size: 0.78rem;
    line-height: 1.62;
  }

  #rk-loopdiag-guide .rk-loopdiag-comparison {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    margin: 0 0 20px;
  }

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

  #rk-loopdiag-guide .rk-loopdiag-scenario.is-b {
    border-color: #a9e0e8;
    background: var(--rk-cyan-soft);
  }

  #rk-loopdiag-guide .rk-loopdiag-scenario span {
    display: block;
    margin-bottom: 5px;
    color: var(--rk-muted);
    font-size: 0.64rem;
    font-weight: 950;
    letter-spacing: 0.06em;
    text-transform: uppercase;
  }

  #rk-loopdiag-guide .rk-loopdiag-scenario strong {
    display: block;
    color: var(--rk-dark);
    font-size: 1.1rem;
    font-weight: 950;
    line-height: 1.25;
  }

  #rk-loopdiag-guide .rk-loopdiag-scenario small {
    display: block;
    margin-top: 7px;
    color: var(--rk-text);
    font-size: 0.68rem;
    line-height: 1.45;
  }

  #rk-loopdiag-guide .rk-loopdiag-chart {
    margin-bottom: 20px;
    padding: 21px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-soft);
  }

  #rk-loopdiag-guide .rk-loopdiag-chart-title {
    margin-bottom: 14px;
    color: var(--rk-dark);
    font-size: 0.74rem;
    font-weight: 950;
  }

  #rk-loopdiag-guide .rk-loopdiag-bar-row {
    display: grid;
    grid-template-columns: 92px minmax(0, 1fr) 110px;
    gap: 11px;
    align-items: center;
    margin-top: 12px;
  }

  #rk-loopdiag-guide .rk-loopdiag-bar-row span,
  #rk-loopdiag-guide .rk-loopdiag-bar-row strong {
    color: var(--rk-dark);
    font-size: 0.69rem;
    line-height: 1.35;
  }

  #rk-loopdiag-guide .rk-loopdiag-bar-row strong {
    text-align: right;
  }

  #rk-loopdiag-guide .rk-loopdiag-bar-track {
    height: 18px;
    overflow: hidden;
    border-radius: 999px;
    background: #dcebf0;
  }

  #rk-loopdiag-guide .rk-loopdiag-bar {
    display: block;
    width: 0;
    height: 100%;
    border-radius: inherit;
    transition: width 220ms ease;
  }

  #rk-loopdiag-guide .rk-loopdiag-bar.is-a {
    background: linear-gradient(90deg, var(--rk-orange), #ef4937);
  }

  #rk-loopdiag-guide .rk-loopdiag-bar.is-b {
    background: linear-gradient(90deg, var(--rk-blue), var(--rk-cyan));
  }

  #rk-loopdiag-guide .rk-loopdiag-truth {
    position: relative;
    overflow: hidden;
    padding: clamp(25px, 4vw, 40px);
    border: 1px solid #ffd0c2;
    border-radius: 24px;
    background: linear-gradient(135deg, #fff4ee, #fffdfb);
  }

  #rk-loopdiag-guide .rk-loopdiag-truth::after {
    content: "FAKT";
    position: absolute;
    top: 17px;
    right: 19px;
    color: rgba(223, 69, 55, 0.08);
    font-size: clamp(3.1rem, 9vw, 7rem);
    font-weight: 980;
    line-height: 1;
  }

  #rk-loopdiag-guide .rk-loopdiag-truth > * {
    position: relative;
    z-index: 1;
  }

  #rk-loopdiag-guide .rk-loopdiag-factors {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 15px;
    margin-top: 24px;
  }

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

  #rk-loopdiag-guide .rk-loopdiag-factor b {
    display: inline-flex;
    margin-bottom: 11px;
    padding: 5px 9px;
    border-radius: 8px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: 0.63rem;
  }

  #rk-loopdiag-guide .rk-loopdiag-factor h3 {
    margin-bottom: 7px;
    font-size: 1rem;
  }

  #rk-loopdiag-guide .rk-loopdiag-factor p {
    margin: 0;
    color: var(--rk-text);
    font-size: 0.74rem;
    line-height: 1.55;
  }

  #rk-loopdiag-guide .rk-loopdiag-assumption {
    margin-top: 18px;
    padding: 17px 19px;
    border: 1px dashed #b9d6e0;
    border-radius: 15px;
    color: var(--rk-text);
    background: #fbfdfe;
    font-size: 0.71rem;
    line-height: 1.55;
  }

  @media (max-width: 980px) {
    #rk-loopdiag-guide .rk-loopdiag-concepts,
    #rk-loopdiag-guide .rk-loopdiag-factors {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }
  }

  @media (max-width: 720px) {
    #rk-loopdiag-guide .rk-loopdiag-concepts,
    #rk-loopdiag-guide .rk-loopdiag-factors,
    #rk-loopdiag-guide .rk-loopdiag-comparison {
      grid-template-columns: 1fr;
    }

    #rk-loopdiag-guide .rk-loopdiag-bar-row {
      grid-template-columns: 72px minmax(0, 1fr);
      gap: 8px;
    }

    #rk-loopdiag-guide .rk-loopdiag-bar-row strong {
      grid-column: 1 / -1;
      text-align: left;
    }
  }


  #rk-loopdiag-guide .rk-loopdiag-stage-note {
    margin: 0 0 20px;
    padding: 16px 18px;
    border: 1px solid #c8e1e9;
    border-radius: 15px;
    color: var(--rk-text);
    background: var(--rk-cyan-soft);
    font-size: 0.76rem;
    line-height: 1.55;
  }

  #rk-loopdiag-guide .rk-loopdiag-diagnostic-title {
    margin: 25px 0 12px;
    color: var(--rk-dark);
    font-size: 0.78rem;
    font-weight: 950;
    letter-spacing: 0.045em;
    line-height: 1.4;
    text-transform: uppercase;
  }

  #rk-loopdiag-guide .rk-loopdiag-loop-map {
    display: grid;
    gap: 10px;
    margin: 18px 0 20px;
    padding: 18px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: linear-gradient(145deg, #f8fcfd, #edf7fa);
  }

  #rk-loopdiag-guide .rk-loopdiag-loop-map-head {
    display: grid;
    grid-template-columns: 95px minmax(0, 1fr) 90px;
    gap: 12px;
    align-items: center;
    margin-bottom: 4px;
    color: var(--rk-muted);
    font-size: 0.62rem;
    font-weight: 900;
    letter-spacing: 0.04em;
    text-transform: uppercase;
  }

  #rk-loopdiag-guide .rk-loopdiag-loop-row {
    display: grid;
    grid-template-columns: 95px minmax(0, 1fr) 90px;
    gap: 12px;
    align-items: center;
    min-width: 0;
  }

  #rk-loopdiag-guide .rk-loopdiag-loop-label,
  #rk-loopdiag-guide .rk-loopdiag-loop-value {
    color: var(--rk-dark);
    font-size: 0.69rem;
    font-weight: 900;
    line-height: 1.35;
  }

  #rk-loopdiag-guide .rk-loopdiag-loop-value {
    color: var(--rk-muted);
    text-align: right;
  }

  #rk-loopdiag-guide .rk-loopdiag-loop-line {
    position: relative;
    display: block;
    overflow: hidden;
    height: 14px;
    border: 1px solid #b9d5df;
    border-radius: 999px;
    background: var(--rk-white);
  }

  #rk-loopdiag-guide .rk-loopdiag-loop-line::before {
    content: "";
    position: absolute;
    top: 3px;
    right: 4px;
    bottom: 3px;
    left: 4px;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--rk-orange), var(--rk-cyan));
    opacity: 0.85;
  }

  #rk-loopdiag-guide .rk-loopdiag-loop-row.is-reference .rk-loopdiag-loop-line::before {
    background: linear-gradient(90deg, #4fa5c0, #65d4c0);
    opacity: 0.65;
  }

  #rk-loopdiag-guide .rk-loopdiag-loop-row.is-warning .rk-loopdiag-loop-line {
    border-color: #e4bd4c;
    box-shadow: 0 0 0 4px rgba(242, 189, 66, 0.12);
  }

  #rk-loopdiag-guide .rk-loopdiag-loop-row.is-warning .rk-loopdiag-loop-line::before {
    background: linear-gradient(90deg, var(--rk-orange), var(--rk-yellow));
  }

  #rk-loopdiag-guide .rk-loopdiag-loop-row.is-danger .rk-loopdiag-loop-line {
    border-color: var(--rk-red);
    box-shadow: 0 0 0 4px rgba(223, 69, 55, 0.12);
  }

  #rk-loopdiag-guide .rk-loopdiag-loop-row.is-danger .rk-loopdiag-loop-line::before {
    background: linear-gradient(90deg, var(--rk-red), var(--rk-orange));
  }

  #rk-loopdiag-guide .rk-loopdiag-pump-box {
    margin-top: 5px;
    padding: 13px 15px;
    border-left: 5px solid var(--rk-blue);
    border-radius: 0 13px 13px 0;
    color: var(--rk-text);
    background: var(--rk-white);
    font-size: 0.69rem;
    line-height: 1.5;
  }

  #rk-loopdiag-guide .rk-loopdiag-result-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin-top: 18px;
  }

  #rk-loopdiag-guide .rk-loopdiag-result-box {
    min-width: 0;
    padding: 17px;
    border: 1px solid var(--rk-line);
    border-radius: 15px;
    background: var(--rk-white);
  }

  #rk-loopdiag-guide .rk-loopdiag-result-box strong {
    display: block;
    margin-bottom: 7px;
    color: var(--rk-dark);
    font-size: 0.75rem;
    line-height: 1.4;
  }

  #rk-loopdiag-guide .rk-loopdiag-result-box p {
    margin: 0;
    color: var(--rk-text);
    font-size: 0.72rem;
    line-height: 1.55;
  }

  #rk-loopdiag-guide .rk-loopdiag-mini-note {
    display: block;
    margin-top: 5px;
    color: var(--rk-muted);
    font-size: 0.62rem;
    font-weight: 700;
    line-height: 1.4;
  }

  #rk-loopdiag-guide .rk-loopdiag-badge {
    display: inline-flex;
    align-items: center;
    margin: 0 6px 6px 0;
    padding: 6px 10px;
    border: 1px solid #c6dde5;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-soft);
    font-size: 0.65rem;
    font-weight: 900;
    line-height: 1.3;
  }

  #rk-loopdiag-guide .rk-loopdiag-badge.is-orange {
    border-color: #f2cdbb;
    color: #9b3b1f;
    background: var(--rk-warm);
  }

  #rk-loopdiag-guide .rk-loopdiag-field-note {
    display: block;
    margin-top: 5px;
    color: var(--rk-muted);
    font-size: 0.61rem;
    font-weight: 700;
    line-height: 1.4;
  }

  #rk-loopdiag-guide .rk-loopdiag-sales-cta {
    text-decoration: none;
  }

  @media (max-width: 720px) {
    #rk-loopdiag-guide .rk-loopdiag-result-grid {
      grid-template-columns: 1fr;
    }

    #rk-loopdiag-guide .rk-loopdiag-loop-map {
      padding: 14px;
    }

    #rk-loopdiag-guide .rk-loopdiag-loop-map-head,
    #rk-loopdiag-guide .rk-loopdiag-loop-row {
      grid-template-columns: 72px minmax(0, 1fr) 68px;
      gap: 8px;
    }

    #rk-loopdiag-guide .rk-loopdiag-loop-label,
    #rk-loopdiag-guide .rk-loopdiag-loop-value {
      font-size: 0.62rem;
    }
  }

</style>

<article id="rk-loopdiag-guide">
  <div class="rk-loopdiag-shell">
    <div class="rk-loopdiag-progress-track" aria-hidden="true"><div class="rk-loopdiag-progress" id="rk-loopdiag-progress"></div></div>

    <header class="rk-loopdiag-hero">
      <div class="rk-loopdiag-hero-grid">
        <div>
          <span class="rk-loopdiag-eyebrow"><b></b> Hydraulika pętli • diagnostyka bez zgadywania</span>
          <div class="rk-loopdiag-hero-title">Za długa pętla podłogówki – objawy, diagnostyka i sposoby naprawy</div>
          <p class="rk-loopdiag-hero-lead">Sama liczba metrów nie przesądza jeszcze, że obwód jest wadliwy. O problemie decyduje połączenie długości, średnicy rury, wymaganego przepływu, straty ciśnienia i możliwości pompy. Zobacz, jak odróżnić rzeczywiście za długą pętlę od zapowietrzenia, zamkniętego zaworu, zabrudzonego filtra albo źle ustawionej instalacji.</p>
          <div class="rk-loopdiag-meta">
            <span><i></i> Autor: Robert Kucharski</span>
            <span><i></i> Aktualizacja techniczna: 27 sierpnia 2026 r.</span>
            <span><i></i> Przepływ • ΔT • opory hydrauliczne</span>
          </div>
        </div>
      </div>
    </header>

    <nav class="rk-loopdiag-nav" aria-label="Spis treści artykułu">
      <a href="#rk-loopdiag-answer">Szybka odpowiedź</a>
      <a href="#rk-loopdiag-meaning">Co znaczy „za długa”?</a>
      <a href="#rk-loopdiag-diagnostic">Panel diagnostyczny</a>
      <a href="#rk-loopdiag-hydraulics">Hydraulika</a>
      <a href="#rk-loopdiag-symptoms">Objawy</a>
      <a href="#rk-loopdiag-procedure">Diagnostyka krok po kroku</a>
      <a href="#rk-loopdiag-repair">Naprawa</a>
      <a href="#rk-loopdiag-myths">Błędne rozwiązania</a>
      <a href="#rk-loopdiag-examples">Przykłady</a>
      <a href="#rk-loopdiag-checklist">Checklista</a>
      <a href="#rk-loopdiag-faq">FAQ</a>
      <a href="#rk-loopdiag-author">Autor</a>
    </nav>

    <div class="rk-loopdiag-body">
      <section class="rk-loopdiag-section" id="rk-loopdiag-answer">
        <span class="rk-loopdiag-kicker">Najkrótsza techniczna odpowiedź</span>
        <h2>Za długa pętla to taka, której nie da się zasilić wymaganym przepływem przy akceptowalnej stracie ciśnienia</h2>
        <p class="rk-loopdiag-lead rk-loopdiag-dropcap">Nie istnieje jedna długość graniczna właściwa dla każdej podłogówki. Obwód 100 m z rury 16 × 2 mm może w jednym pomieszczeniu pracować poprawnie, a w innym wymagać przepływu, którego instalacja nie potrafi zapewnić. Z kolei pętla krótsza może grzać słabo z powodu zamkniętego zaworu, powietrza, brudnego filtra albo nieprawidłowego punktu pracy pompy.</p>

        <div class="rk-loopdiag-answer">
          <div class="rk-loopdiag-answer-main">
            <h3>Co najczęściej zdradza problem?</h3>
            <p>Podejrzana pętla ma wyraźnie mniejszy przepływ niż wynika z projektu, dużą różnicę temperatur zasilania i powrotu oraz nie dostarcza wymaganej mocy. Jeżeli pozostałe obwody tego samego rozdzielacza pracują prawidłowo, rośnie prawdopodobieństwo problemu lokalnego.</p>
            <p>To nadal nie jest dowód. Zanim uznasz długość za przyczynę, sprawdź rotametr, zawór na powrocie, siłownik, wkładkę zaworową, filtr oraz możliwość przepłukania i odpowietrzenia pojedynczego obwodu.</p>
          </div>
          <aside class="rk-loopdiag-answer-side">
            <h3>Praktyczna zasada dla rury 16 × 2 mm</h3>
            <p>W budownictwie mieszkaniowym wygodnym celem projektowym jest często około <strong>70–90 m całkowitej długości pętli</strong>. Okolice 100 m wymagają już sprawdzenia hydraulicznego, a nie automatycznej akceptacji albo odrzucenia. Do długości wlicza się oba dobiegi od rozdzielacza.</p>
          </aside>
        </div>

        <div class="rk-loopdiag-callout is-warning"><p><strong>Jeżeli szukasz wyłącznie zasad wymiarowania nowej instalacji,</strong> przejdź do osobnego opracowania o <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalnej długości pętli ogrzewania podłogowego</a>. Ten artykuł koncentruje się na diagnostyce podejrzanego obwodu i możliwościach naprawy.</p></div>
      </section>

      <section class="rk-loopdiag-section" id="rk-loopdiag-meaning">
        <span class="rk-loopdiag-kicker">Metry są tylko jednym z parametrów</span>
        <h2>Co naprawdę oznacza „za długa pętla podłogówki”?</h2>
        <p class="rk-loopdiag-lead">Rura stawia przepływającej wodzie opór. Im dłuższy i węższy przewód oraz im większy wymagany przepływ, tym większej różnicy ciśnienia potrzeba, aby przetłoczyć wodę przez obwód. Zależność nie jest liniowa: podwojenie przepływu nie oznacza jedynie podwojenia straty ciśnienia.</p>

        <div class="rk-loopdiag-concepts">
          <div class="rk-loopdiag-concept"><b>L</b><h3>Długość całkowita</h3><p>Odcinek w polu grzejnym oraz zasilający i powrotny dobieg od rozdzielacza. Najczęstszy błąd to liczenie wyłącznie rury ułożonej w pomieszczeniu.</p></div>
          <div class="rk-loopdiag-concept"><b>V̇</b><h3>Wymagany przepływ</h3><p>Wynika z mocy cieplnej pętli i przyjętej różnicy temperatur. Dwa obwody tej samej długości mogą potrzebować zupełnie innych przepływów.</p></div>
          <div class="rk-loopdiag-concept"><b>Δp</b><h3>Strata ciśnienia</h3><p>Suma oporu rury, łuków, wkładki zaworowej, rotametru i elementów wspólnych. Musi mieścić się w możliwościach pompy przy łącznym przepływie instalacji.</p></div>
        </div>

        <div class="rk-loopdiag-table-wrap">
          <table>
            <thead><tr><th>Rura</th><th>Jak interpretować długość?</th><th>Co jeszcze sprawdzić?</th><th>Najczęstszy błąd</th></tr></thead>
            <tbody>
              <tr><td data-label="Rura"><strong>16 × 2 mm</strong></td><td data-label="Interpretacja">W wielu domach rozsądny cel to około 70–90 m. Około 100 m nie jest normatywną granicą, lecz sygnałem do kontroli przepływu i Δp.</td><td data-label="Co sprawdzić?">Wymaganą moc, przepływ, wykres oporu konkretnej rury, armaturę i obwód krytyczny.</td><td data-label="Najczęstszy błąd">Traktowanie 100 m jako liczby ważnej niezależnie od mocy i pompy.</td></tr>
              <tr><td data-label="Rura"><strong>17 × 2 mm</strong></td><td data-label="Interpretacja">Większa średnica wewnętrzna może ograniczyć opór względem 16 × 2 mm, ale nie daje zgody na dowolne wydłużanie.</td><td data-label="Co sprawdzić?">Dane producenta, średnicę rzeczywistą, wymagany przepływ i promień gięcia.</td><td data-label="Najczęstszy błąd">Przenoszenie limitów z innego systemu lub materiału rury.</td></tr>
              <tr><td data-label="Rura"><strong>20 × 2 mm</strong></td><td data-label="Interpretacja">Może obsłużyć dłuższy obwód przy mniejszym oporze jednostkowym, lecz ma większy promień gięcia i inne warunki wykonawcze.</td><td data-label="Co sprawdzić?">Wykres Δp, prędkość wody, rozstaw, pojemność i zgodność systemu mocowania.</td><td data-label="Najczęstszy błąd">Dobór większej średnicy bez koordynacji całej podłogi.</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-loopdiag-callout"><p><strong>Długość nie jest celem samym w sobie.</strong> Projektant może przyjąć własne kryterium, na przykład obwody z rury 16 × 2 mm nieprzekraczające 100 m, prędkość około 0,15–0,6 m/s i projektową stratę pętli rzędu 15–20 kPa. Są to kryteria projektu, nie uniwersalne wartości normatywne dla każdej instalacji.</p></div>
      </section>

      <section class="rk-loopdiag-section" id="rk-loopdiag-diagnostic">
        <div class="rk-loopdiag-audit">
          <div class="rk-loopdiag-audit-head">
            <span class="rk-loopdiag-kicker" style="color:#79f1ff">Interaktywny panel diagnostyczny</span>
            <h2>Czy pętla naprawdę jest za długa?</h2>
            <p>Wprowadź dostępne dane. Panel połączy długość, przepływ, ΔT i objawy, a następnie wskaże najbardziej logiczną kolejność kontroli. Wynik jest hipotezą diagnostyczną — nie zastępuje pomiaru straty ciśnienia ani obliczeń hydraulicznych.</p>
          </div>

          <div class="rk-loopdiag-audit-layout">
            <form class="rk-loopdiag-audit-form" id="rk-loopdiag-diagnostic-form" aria-label="Panel diagnostyczny za długiej pętli ogrzewania podłogowego">
              <div class="rk-loopdiag-fields">
                <div class="rk-loopdiag-field is-full"><label for="rk-loopdiag-stage">Etap prac</label><select id="rk-loopdiag-stage"><option value="working">Instalacja pracuje</option><option value="uncommissioned">Po wylewce, przed pełnym uruchomieniem</option><option value="before">Przed wykonaniem wylewki</option></select></div>
                <div class="rk-loopdiag-field"><label for="rk-loopdiag-pipe">Wymiar rury</label><select id="rk-loopdiag-pipe"><option value="16">16 × 2 mm</option><option value="17">17 × 2 mm</option><option value="20">20 × 2 mm</option></select></div>
                <div class="rk-loopdiag-field"><label for="rk-loopdiag-length">Całkowita długość pętli [m]</label><input id="rk-loopdiag-length" type="number" min="0" max="250" step="1" value="112" inputmode="numeric"><small class="rk-loopdiag-field-note">Wpisz 0, jeżeli długość jest nieznana. Uwzględnij oba dobiegi.</small></div>
                <div class="rk-loopdiag-field"><label for="rk-loopdiag-flow">Zmierzony przepływ [l/min]</label><input id="rk-loopdiag-flow" type="number" min="0" max="8" step="0.1" value="0.6" inputmode="decimal"><small class="rk-loopdiag-field-note">Odczyt po ustabilizowaniu pracy instalacji.</small></div>
                <div class="rk-loopdiag-field"><label for="rk-loopdiag-design-flow">Wymagany przepływ z projektu [l/min]</label><input id="rk-loopdiag-design-flow" type="number" min="0" max="8" step="0.1" value="1.5" inputmode="decimal"><small class="rk-loopdiag-field-note">Wpisz 0, jeśli nie masz projektu.</small></div>
                <div class="rk-loopdiag-field"><label for="rk-loopdiag-supply">Temperatura zasilania [°C]</label><input id="rk-loopdiag-supply" type="number" min="10" max="70" step="0.1" value="35" inputmode="decimal"></div>
                <div class="rk-loopdiag-field"><label for="rk-loopdiag-return">Temperatura powrotu [°C]</label><input id="rk-loopdiag-return" type="number" min="5" max="65" step="0.1" value="25" inputmode="decimal"></div>
              </div>

              <div class="rk-loopdiag-checks">
                <label class="rk-loopdiag-check"><input id="rk-loopdiag-other-loops" type="checkbox" checked><span>Pozostałe pętle tego rozdzielacza osiągają prawidłowy przepływ.</span></label>
                <label class="rk-loopdiag-check"><input id="rk-loopdiag-valves-checked" type="checkbox"><span>Sprawdzono pełne otwarcie rotametru, zaworu powrotnego, wkładki i siłownika.</span></label>
                <label class="rk-loopdiag-check"><input id="rk-loopdiag-flushed" type="checkbox"><span>Podejrzaną pętlę przepłukano i odpowietrzono osobno przy zamkniętych pozostałych obwodach.</span></label>
                <label class="rk-loopdiag-check"><input id="rk-loopdiag-all-weak" type="checkbox"><span>Wszystkie lub prawie wszystkie pętle mają zbyt mały przepływ.</span></label>
              </div>
              <button class="rk-loopdiag-audit-reset" id="rk-loopdiag-diagnostic-reset" type="button">Przywróć przykład diagnostyczny</button>
            </form>

            <div class="rk-loopdiag-audit-output" aria-live="polite">
              <div class="rk-loopdiag-stage-note" id="rk-loopdiag-stage-note"><strong>Instalacja pracuje:</strong> porównujemy odczyty po stabilizacji i najpierw wykluczamy przyczyny regulacyjne oraz wykonawcze.</div>

              <div class="rk-loopdiag-metrics rk-loopdiag-metrics-4">
                <div class="rk-loopdiag-metric"><small>Zmierzona różnica ΔT</small><strong id="rk-loopdiag-result-dt">10,0 K</strong></div>
                <div class="rk-loopdiag-metric"><small>Realizacja przepływu projektowego</small><strong id="rk-loopdiag-result-flow-ratio">40%</strong></div>
                <div class="rk-loopdiag-metric"><small>Orientacyjnie transportowana moc</small><strong id="rk-loopdiag-result-power">419 W</strong></div>
                <div class="rk-loopdiag-metric"><small>Ocena długości</small><strong id="rk-loopdiag-result-length">wysokie ryzyko</strong></div>
              </div>

              <div class="rk-loopdiag-audit-status is-warning" id="rk-loopdiag-diagnostic-status">
                <strong id="rk-loopdiag-diagnostic-title">Długość jest podejrzana, ale diagnostyka nie jest zakończona</strong>
                <span id="rk-loopdiag-diagnostic-copy">Niski przepływ i duże ΔT pasują do wysokiego oporu, lecz przed uznaniem pętli za wadliwą trzeba sprawdzić zawory oraz przepłukać obwód osobno.</span>
              </div>

              <div class="rk-loopdiag-loop-map" aria-label="Schemat równoległych pętli rozdzielacza">
                <div class="rk-loopdiag-loop-map-head"><span>Rozdzielacz</span><span>Pętle równoległe</span><span>Przepływ</span></div>
                <div class="rk-loopdiag-loop-row is-reference"><span class="rk-loopdiag-loop-label">Pętla A</span><span class="rk-loopdiag-loop-line"></span><span class="rk-loopdiag-loop-value">referencyjna</span></div>
                <div class="rk-loopdiag-loop-row is-reference"><span class="rk-loopdiag-loop-label">Pętla B</span><span class="rk-loopdiag-loop-line"></span><span class="rk-loopdiag-loop-value">referencyjna</span></div>
                <div class="rk-loopdiag-loop-row is-warning" id="rk-loopdiag-suspect-loop"><span class="rk-loopdiag-loop-label">Badana pętla</span><span class="rk-loopdiag-loop-line"></span><span class="rk-loopdiag-loop-value" id="rk-loopdiag-map-value">0,6 l/min</span></div>
                <div class="rk-loopdiag-pump-box" id="rk-loopdiag-pump-note"><strong>Jak czytać schemat:</strong> przepływy pętli się sumują, lecz ich spadków ciśnienia nie dodaje się do siebie. Pompa musi pokonać opór obwodu krytycznego i elementów wspólnych przy łącznym przepływie instalacji.</div>
              </div>

              <div class="rk-loopdiag-diagnostic-title">Najbardziej prawdopodobne przyczyny i kolejność działania</div>
              <ul class="rk-loopdiag-audit-list" id="rk-loopdiag-diagnostic-list"></ul>

              <div class="rk-loopdiag-result-grid">
                <div class="rk-loopdiag-result-box"><strong>Co mówi obliczona moc?</strong><p id="rk-loopdiag-power-note">Wartość pokazuje ilość ciepła niesioną przez wodę przy podanym przepływie i ΔT. Nie jest mocą całej podłogi ani pomiarem strat pomieszczenia.</p></div>
                <div class="rk-loopdiag-result-box"><strong>Czego panel nie rozstrzyga?</strong><p>Nie liczy dokładnej Δp rury i armatury, krzywej pompy, temperatury powierzchni ani mocy oddawanej w niestabilnych warunkach. Do decyzji wykonawczej potrzebne są dane producenta i projekt.</p></div>
              </div>
            </div>
          </div>
          <div class="rk-loopdiag-tool-note"><strong>Zakres narzędzia:</strong> wynik jest przesiewową analizą objawów. Wzór P ≈ 69,8 × V̇ × ΔT zakłada wodę i ustaloną pracę. Długość jest klasyfikowana orientacyjnie; ostatecznie trzeba sprawdzić stratę ciśnienia przy wymaganym przepływie i punkt pracy pompy.</div>
        </div>

        <div class="rk-loopdiag-inline-cta">
          <span class="rk-loopdiag-kicker" style="color:#79f1ff">Wynik zależy od kompletnej hydrauliki</span>
          <h3>Przed wylewką można jeszcze poprawić podział pętli bez kucia gotowej podłogi</h3>
          <p>Panel może wskazać ryzyko, ale nie zna przepływów wszystkich obwodów, oporów magistrali, charakterystyki rozdzielacza ani punktu pracy pompy. W projekcie każda pętla otrzymuje długość z dobiegami, wymagany przepływ, stratę ciśnienia i nastawę. Jeżeli posadzka nie została jeszcze wykonana, to najlepszy moment na korektę.</p>
          <a class="rk-loopdiag-cta-button rk-loopdiag-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt z obliczeniami hydraulicznymi</a>
          <small class="rk-loopdiag-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
        </div>
      </section>

      <section class="rk-loopdiag-section" id="rk-loopdiag-hydraulics">
        <span class="rk-loopdiag-kicker">Dlaczego długi obwód ogranicza przepływ?</span>
        <h2>Długość, przepływ i średnica tworzą jeden problem hydrauliczny</h2>
        <p class="rk-loopdiag-lead">Stratę ciśnienia pętli wyznacza się dla konkretnego przepływu. Samo stwierdzenie „rura ma 110 m” jest niepełne, dopóki nie wiadomo, czy obwód ma przenieść 300 W, 700 W czy 1000 W oraz jaką przyjęto różnicę temperatur.</p>

        <div class="rk-loopdiag-formulas">
          <div class="rk-loopdiag-formula"><span>Moc niesiona przez wodę</span><strong>P ≈ 69,8 × V̇ × ΔT</strong><p>P w watach, przepływ V̇ w l/min, ΔT w kelwinach. Wzór jest użyteczny po ustabilizowaniu temperatur i dla wody.</p></div>
          <div class="rk-loopdiag-formula"><span>Wymagany przepływ</span><strong>V̇ ≈ P / (69,8 × ΔT)</strong><p>Pętla o mocy 600 W przy ΔT = 5 K potrzebuje około 1,72 l/min. Przy ΔT = 7 K byłoby to około 1,23 l/min.</p></div>
          <div class="rk-loopdiag-formula"><span>Strata pętli</span><strong>Δp = Σ(R × L) + Σζ</strong><p>Do oporu liniowego rury dochodzą opory miejscowe, rozdzielacz, rotametr i wkładka zaworowa. Dokładne wartości odczytuje się z danych producenta.</p></div>
        </div>

        <div class="rk-loopdiag-grid-3">
          <div class="rk-loopdiag-card"><span class="rk-loopdiag-card-number">01</span><h3>Większa długość</h3><p>Każdy dodatkowy metr zwiększa opór liniowy. Dobiegi prowadzone przez komunikację są hydraulicznie tak samo realne jak rura w salonie, nawet jeśli nie zwiększają czynnej powierzchni grzejnej tego pomieszczenia.</p></div>
          <div class="rk-loopdiag-card"><span class="rk-loopdiag-card-number">02</span><h3>Większy przepływ</h3><p>Gdy pętla ma dostarczyć większą moc przy małym ΔT, potrzebuje większego przepływu. Opór rośnie wtedy szybciej niż liniowo, dlatego ten sam metr rury może być łatwy albo trudny hydraulicznie.</p></div>
          <div class="rk-loopdiag-card"><span class="rk-loopdiag-card-number">03</span><h3>Mniejsza średnica wewnętrzna</h3><p>Niewielka zmiana średnicy istotnie wpływa na prędkość i stratę ciśnienia. Nie porównuj rur wyłącznie po średnicy zewnętrznej; znaczenie ma pełny wymiar, materiał i wykres producenta.</p></div>
        </div>

        <h3>Przepływy równoległych pętli się sumują, a straty ciśnienia nie</h3>
        <p>Rozdzielacz łączy obwody równolegle. Pompa obsługuje łączny przepływ wszystkich otwartych pętli, ale jej wymagana wysokość podnoszenia wynika z obwodu krytycznego — pętli i drogi wspólnej o największym wymaganym spadku ciśnienia. Nie dodaje się 15 kPa z pierwszej pętli, 18 kPa z drugiej i 20 kPa z trzeciej.</p>
        <p>Dlatego dobór pompy wymaga dwóch osi jednocześnie: przepływu całkowitego oraz wysokości podnoszenia dla drogi krytycznej. Więcej pokazuje <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulator doboru pompy obiegowej</a>. Samo ustawienie wyższego biegu bez obliczeń może zwiększyć hałas, pobór prądu i trudności z regulacją, a nadal nie rozwiązać źle podzielonego pola.</p>

        <div class="rk-loopdiag-callout"><p><strong>Moc źródła ciepła i ciśnienie dyspozycyjne to różne wielkości.</strong> Większy kocioł albo pompa ciepła może wytwarzać więcej ciepła, ale nie gwarantuje większego przepływu przez pętlę. O przepływie decydują pompa obiegowa, charakterystyka sieci, zawory, filtry, sprzęgło lub bufor i sposób połączenia obiegów.</p></div>
      </section>

      <section class="rk-loopdiag-section" id="rk-loopdiag-symptoms">
        <span class="rk-loopdiag-kicker">Objawy nie są dowodem</span>
        <h2>Jakie objawy może dawać za długa pętla podłogówki?</h2>
        <p class="rk-loopdiag-lead">Najbardziej miarodajny jest zestaw kilku zgodnych obserwacji. Pojedynczy zimniejszy fragment podłogi, hałas albo niski odczyt rotametru może mieć zupełnie inną przyczynę.</p>

        <div class="rk-loopdiag-table-wrap">
          <table>
            <thead><tr><th>Obserwacja</th><th>Dlaczego pasuje do dużego oporu?</th><th>Co może dawać taki sam objaw?</th><th>Jak rozstrzygnąć?</th></tr></thead>
            <tbody>
              <tr><td data-label="Obserwacja"><strong>Przepływ wyraźnie poniżej projektu</strong></td><td data-label="Związek z oporem">Pompa nie osiąga wymaganego punktu na pętli o wysokiej Δp.</td><td data-label="Inna przyczyna">Przymknięty rotametr, zawór, siłownik, zabrudzona wkładka lub filtr.</td><td data-label="Jak sprawdzić?">Potwierdź pełne otwarcie, porównaj obwody i sprawdź przepływ po osobnym płukaniu.</td></tr>
              <tr><td data-label="Obserwacja"><strong>Duże ΔT zasilanie–powrót</strong></td><td data-label="Związek z oporem">Mały strumień wody oddaje relatywnie dużo ciepła na jednostkę masy.</td><td data-label="Inna przyczyna">Zbyt mała nastawa przepływu, rozruch wychłodzonej posadzki albo błąd pomiaru.</td><td data-label="Jak sprawdzić?">Mierz po stabilizacji, tym samym przyrządem i porównaj z wymaganym przepływem.</td></tr>
              <tr><td data-label="Obserwacja"><strong>Pomieszczenie nie osiąga temperatury</strong></td><td data-label="Związek z oporem">Pętla może nie transportować mocy potrzebnej do pokrycia strat.</td><td data-label="Inna przyczyna">Za mała czynna powierzchnia, zły rozstaw, wysoki opór okładziny, niskie zasilanie lub większe straty budynku.</td><td data-label="Jak sprawdzić?">Porównaj wymaganą moc, moc podłogi, temperaturę powierzchni, przepływ i ΔT.</td></tr>
              <tr><td data-label="Obserwacja"><strong>Inne pętle działają, jedna nie</strong></td><td data-label="Związek z oporem">Wskazuje problem lokalny, a długa pętla może być obwodem krytycznym.</td><td data-label="Inna przyczyna">Lokalna blokada zaworu, powietrze, zagięcie rury albo uszkodzony rotametr.</td><td data-label="Jak sprawdzić?">Zamknij pozostałe obwody, przepłucz podejrzaną pętlę w obu kierunkach i wykonaj ponowny odczyt.</td></tr>
              <tr><td data-label="Obserwacja"><strong>Wszystkie pętle mają niski przepływ</strong></td><td data-label="Związek z oporem">Rzadko wskazuje jedną za długą pętlę.</td><td data-label="Inna przyczyna">Filtr, pompa, zawór mieszający, zapowietrzona część wspólna, zamknięta armatura lub nieprawidłowy obieg źródła.</td><td data-label="Jak sprawdzić?">Diagnozuj elementy wspólne i punkt pracy pompy przed analizą pojedynczych długości.</td></tr>
              <tr><td data-label="Obserwacja"><strong>Nierówna temperatura powierzchni</strong></td><td data-label="Związek z oporem">Niedostateczny przepływ może ograniczyć średnią moc pętli.</td><td data-label="Inna przyczyna">Różny rozstaw, meble, grubość jastrychu, okładzina, dywan albo uszkodzenie izolacji.</td><td data-label="Jak sprawdzić?">Po stabilizacji wykonaj pomiary powierzchni i zestaw je z dokumentacją przebiegu rur.</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-loopdiag-callout is-warning"><p><strong>Długa pętla nie powoduje sama z siebie powstawania powietrza.</strong> Może być trudniejsza do skutecznego przepłukania, ale przyczyn zapowietrzania szuka się w sposobie napełniania, nieszczelności, zasysaniu powietrza, odpowietrznikach, ciśnieniu i jakości wody. Zobacz osobny poradnik o <a href="https://projekt-ogrzewania.pl/objawy-zapowietrzenia-ogrzewania-podlogowego/">objawach zapowietrzenia podłogówki</a>.</p></div>

        <p>Nie należy też upraszczać rozkładu temperatury do „gorącego początku i zimnego końca”. W układzie ślimakowym przewód zasilający biegnie obok powrotnego, dzięki czemu powierzchnia jest naturalnie wyrównywana. Za mały przepływ obniża średnią zdolność pętli do oddawania mocy, lecz obraz termiczny zależy także od wzoru ułożenia, rozstawu i warstw podłogi.</p>
      </section>

      <section class="rk-loopdiag-section" id="rk-loopdiag-procedure">
        <span class="rk-loopdiag-kicker">Osiem kroków przed wydaniem wyroku</span>
        <h2>Jak sprawdzić za długą pętlę podłogówki krok po kroku?</h2>
        <p class="rk-loopdiag-lead">Diagnostykę prowadź od danych i prostych przyczyn do pomiarów całego układu. Zwiększenie biegu pompy na początku może zamaskować objaw, ale utrudnia ustalenie źródła problemu.</p>

        <div class="rk-loopdiag-steps">
          <div class="rk-loopdiag-step"><h3>Ustal rzeczywistą długość całej pętli</h3><p>Odczytaj długość z projektu, protokołu wykonawczego albo oznaczeń na rurze. Dodaj przewód zasilający i powrotny od rozdzielacza do pola grzejnego. Jeżeli danych nie ma, oznacz długość jako nieznaną zamiast zgadywać z powierzchni.</p></div>
          <div class="rk-loopdiag-step"><h3>Otwórz zawory i sprawdź siłownik</h3><p>Zdejmij lub wysteruj siłownik, potwierdź ruch trzpienia zaworu, otwórz rotametr zgodnie z instrukcją rozdzielacza i sprawdź zawory odcinające. Zablokowana wkładka potrafi całkowicie imitować nadmierny opór rury.</p></div>
          <div class="rk-loopdiag-step"><h3>Odczytaj przepływ po ustabilizowaniu instalacji</h3><p>Nie oceniaj pętli w pierwszych minutach po starcie. Zapisz przepływ na rotametrze, ustawienie pompy, liczbę otwartych obwodów i porównaj odczyt z wymaganiem projektowym, a nie tylko z sąsiednią pętlą.</p></div>
          <div class="rk-loopdiag-step"><h3>Zmierz temperaturę zasilania i powrotu</h3><p>Zmierz temperatury możliwie tym samym przyrządem i w porównywalnych miejscach. Duże ΔT po stabilizacji wraz z niskim przepływem wspiera hipotezę ograniczonego przepływu, ale samo nie identyfikuje przyczyny.</p></div>
          <div class="rk-loopdiag-step"><h3>Przepłucz i odpowietrz podejrzaną pętlę osobno</h3><p>Zamknij pozostałe obwody i przepłukuj badaną pętlę zgodnie z instrukcją systemu. Obserwuj pęcherzyki, zanieczyszczenia oraz swobodę przepływu. Nie przekraczaj dopuszczalnego ciśnienia rury i armatury.</p></div>
          <div class="rk-loopdiag-step"><h3>Porównaj ją z innymi obwodami rozdzielacza</h3><p>Sprawdź, czy problem dotyczy jednej pętli, grupy za wspólnym elementem czy całego rozdzielacza. Jedna słaba pętla kieruje uwagę na jej zawór, zagięcie, powietrze i opór; wszystkie słabe obwody — na część wspólną.</p></div>
          <div class="rk-loopdiag-step"><h3>Sprawdź filtr, pompę i część wspólną</h3><p>Skontroluj filtr, zawory, mieszacz, sprzęgło lub bufor, kierunki przepływu i dostępne ciśnienie pompy przy łącznym strumieniu. Wysoki bieg nie pomoże, jeżeli zawór jest zamknięty albo obieg źródła nie dostarcza wody.</p></div>
          <div class="rk-loopdiag-step"><h3>Porównaj wymagany przepływ z oporem hydraulicznym</h3><p>Na podstawie mocy pętli i ΔT wyznacz wymagany przepływ, a z danych rury i armatury — stratę ciśnienia. Zestaw obwód krytyczny z charakterystyką pompy. Dopiero ten krok potwierdza, czy długość jest zasadniczym problemem.</p></div>
        </div>

        <div class="rk-loopdiag-callout"><p><strong>Rotametr jest wskaźnikiem i elementem równoważącym, nie dodatkową pompą.</strong> Może zdławić łatwiejsze obwody i pomóc rozdzielić dostępne ciśnienie, ale nie usuwa oporu zbyt długiej pętli. Zasady odczytu opisuje poradnik <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">jak ustawić i interpretować rotametr</a>.</p></div>
      </section>

      <section class="rk-loopdiag-section" id="rk-loopdiag-repair">
        <span class="rk-loopdiag-kicker">Możliwości zależą od etapu budowy</span>
        <h2>Co zrobić z za długą pętlą przed wylewką i po wykonaniu posadzki?</h2>

        <div class="rk-loopdiag-decision">
          <div class="rk-loopdiag-decision-card"><span>Przed wylewką</span><h3>Podziel obwód, dopóki rury są dostępne</h3><p>To najbezpieczniejszy moment na korektę. Duże pole można rozdzielić na dwie pętle o zbliżonym obciążeniu i rozsądnych długościach, ułożyć nowe dobiegi oraz zapewnić osobne króćce na rozdzielaczu. Należy ponownie policzyć przepływy i opory, a nie tylko przeciąć rurę w przypadkowym miejscu.</p><ul><li>uwzględnij dobiegi i przejścia przez drzwi,</li><li>nie umieszczaj złącz w warstwie podłogi bez rozwiązania dopuszczonego przez system,</li><li>sprawdź dylatacje, tuleje ochronne i kolejność układania,</li><li>wykonaj próbę szczelności i dokumentację fotograficzną.</li></ul></div>
          <div class="rk-loopdiag-decision-card"><span>Po wylewce</span><h3>Najpierw wykorzystaj rozwiązania bezinwazyjne</h3><p>Rozpocznij od zaworów, przepłukania, odpowietrzenia, czyszczenia filtra, równoważenia i weryfikacji ustawień pompy. Jeżeli obliczenia potwierdzą brak ciśnienia dyspozycyjnego, czasem pomaga korekta hydrauliki części wspólnej albo właściwie dobrana pompa — pod warunkiem że prędkości, hałas i pozostałe obwody pozostają akceptowalne.</p><ul><li>nie zwiększaj temperatury zasilania zamiast naprawy przepływu,</li><li>nie zamykaj nadmiernie wszystkich dobrych pętli, aby „wymusić” jedną złą,</li><li>przy braku wymaganej mocy rozważ dodatkowy emiter,</li><li>fizyczny podział zatopionej pętli zwykle oznacza ingerencję w podłogę.</li></ul></div>
        </div>

        <h3>Jakie rozwiązanie jest naprawdę naprawą?</h3>
        <div class="rk-loopdiag-table-wrap">
          <table>
            <thead><tr><th>Działanie</th><th>Kiedy ma sens?</th><th>Czego nie potrafi?</th><th>Ryzyko</th></tr></thead>
            <tbody>
              <tr><td data-label="Działanie"><strong>Przepłukanie i odpowietrzenie</strong></td><td data-label="Kiedy ma sens?">Gdy przepływ ogranicza powietrze lub zanieczyszczenie.</td><td data-label="Ograniczenie">Nie zmniejszy obliczeniowej straty ciśnienia długiej rury.</td><td data-label="Ryzyko">Nieprawidłowa procedura może pozostawić powietrze lub przekroczyć ciśnienie systemu.</td></tr>
              <tr><td data-label="Działanie"><strong>Równoważenie rozdzielacza</strong></td><td data-label="Kiedy ma sens?">Gdy krótkie pętle przejmują nadmierny przepływ, a dostępne ciśnienie pozwala zasilić krytyczną.</td><td data-label="Ograniczenie">Nie stworzy dodatkowej wysokości podnoszenia ponad możliwości pompy.</td><td data-label="Ryzyko">Zbyt agresywne dławienie może pogorszyć przepływ całkowity i komfort innych pomieszczeń.</td></tr>
              <tr><td data-label="Działanie"><strong>Korekta ustawienia lub doboru pompy</strong></td><td data-label="Kiedy ma sens?">Po policzeniu łącznego przepływu i oporu drogi krytycznej.</td><td data-label="Ograniczenie">Nie naprawia zaworu, zagięcia, brudnego filtra ani błędnego podziału pola.</td><td data-label="Ryzyko">Hałas, większy pobór prądu, zbyt wysokie prędkości i rozregulowanie instalacji.</td></tr>
              <tr><td data-label="Działanie"><strong>Podział pętli</strong></td><td data-label="Kiedy ma sens?">Przed wylewką lub przy planowanym remoncie podłogi, gdy długość rzeczywiście powoduje nadmierną Δp.</td><td data-label="Ograniczenie">Nie da się go zwykle wykonać bez dostępu do rury i wolnych króćców.</td><td data-label="Ryzyko">Uszkodzenie podłogi, niepożądane złącza i brak miejsca na rozdzielaczu.</td></tr>
              <tr><td data-label="Działanie"><strong>Dodatkowy emiter</strong></td><td data-label="Kiedy ma sens?">Gdy po wykonaniu posadzki pętla nie może dostarczyć całej wymaganej mocy bez kosztownej przebudowy.</td><td data-label="Ograniczenie">Nie usuwa przyczyny hydraulicznej pętli.</td><td data-label="Ryzyko">Wymaga prawidłowego doboru temperatur, sterowania i estetycznej integracji.</td></tr>
            </tbody>
          </table>
        </div>
      </section>

      <section class="rk-loopdiag-section" id="rk-loopdiag-myths">
        <span class="rk-loopdiag-kicker">Sześć pozornie prostych napraw</span>
        <h2>Czego nie robić, gdy podejrzewasz za długą pętlę?</h2>
        <div class="rk-loopdiag-grid-3">
          <div class="rk-loopdiag-error"><b>MIT 01</b><h3>„Większy kocioł poprawi przepływ”</h3><p>Moc cieplna źródła nie jest wysokością podnoszenia pompy. Przewymiarowane źródło może częściej taktować, a przepływ w pętli pozostanie bez zmian.</p></div>
          <div class="rk-loopdiag-error"><b>MIT 02</b><h3>„Ustaw pompę na maksimum”</h3><p>Najwyższy bieg bez obliczeń może wywołać szum i zwiększyć zużycie prądu. Najpierw trzeba znać łączny przepływ, obwód krytyczny i krzywą pompy.</p></div>
          <div class="rk-loopdiag-error"><b>MIT 03</b><h3>„Rotametr wymusi dowolny przepływ”</h3><p>Rotametr może dławić, ale nie usuwa oporu. Jeśli ciśnienia dyspozycyjnego jest za mało, pełne otwarcie nie zapewni oczekiwanej wartości.</p></div>
          <div class="rk-loopdiag-error"><b>MIT 04</b><h3>„Długa pętla zawsze się zapowietrza”</h3><p>Długość może utrudniać płukanie, lecz nie wytwarza powietrza. Trzeba znaleźć rzeczywistą drogę jego dostawania się lub błąd napełnienia.</p></div>
          <div class="rk-loopdiag-error"><b>MIT 05</b><h3>„Podnieś temperaturę zasilania”</h3><p>Wyższa temperatura może chwilowo zwiększyć moc przy małym przepływie, ale nie naprawia hydrauliki i może pogorszyć sprawność źródła oraz temperaturę powierzchni.</p></div>
          <div class="rk-loopdiag-error"><b>MIT 06</b><h3>„Każde 100 m trzeba rozkuć”</h3><p>100 m nie jest uniwersalną granicą awarii. Jeżeli pętla osiąga wymagany przepływ, ΔT i moc przy akceptowalnej Δp, sama liczba nie uzasadnia ingerencji.</p></div>
        </div>
      </section>

      <section class="rk-loopdiag-section" id="rk-loopdiag-examples">
        <span class="rk-loopdiag-kicker">Cztery sytuacje, cztery różne wnioski</span>
        <h2>Przykłady diagnostyczne: 90, 112 i 130 metrów</h2>
        <p class="rk-loopdiag-lead">Poniższe scenariusze pokazują sposób rozumowania. Nie są tabelą dopuszczalnych długości, ponieważ nie zawierają pełnej charakterystyki rury, armatury i pompy.</p>

        <div class="rk-loopdiag-table-wrap">
          <table>
            <thead><tr><th>Scenariusz</th><th>Dane</th><th>Najbardziej logiczny wniosek</th><th>Następny krok</th></tr></thead>
            <tbody>
              <tr><td data-label="Scenariusz"><strong>A • 90 m, stabilna praca</strong></td><td data-label="Dane">16 × 2 mm, 1,4 l/min przy wymaganych 1,3 l/min, ΔT = 5 K, pomieszczenie osiąga temperaturę.</td><td data-label="Wniosek">Brak oznak, że długość jest problemem. Pętla transportuje zakładaną moc.</td><td data-label="Następny krok">Pozostawić nastawy i udokumentować odczyty sezonowe.</td></tr>
              <tr><td data-label="Scenariusz"><strong>B • 112 m, jedna słaba pętla</strong></td><td data-label="Dane">16 × 2 mm, 0,6 l/min przy wymaganych 1,5 l/min, ΔT = 10 K, inne pętle działają.</td><td data-label="Wniosek">Wysoki opór jest prawdopodobny, lecz trzeba jeszcze wykluczyć zawór, powietrze i zanieczyszczenie.</td><td data-label="Następny krok">Sprawdzenie armatury, osobne płukanie, następnie obliczenie Δp przy 1,5 l/min.</td></tr>
              <tr><td data-label="Scenariusz"><strong>C • 85 m, cały rozdzielacz słaby</strong></td><td data-label="Dane">Każda pętla osiąga tylko 0,3–0,5 l/min; problem pojawił się po serwisie.</td><td data-label="Wniosek">Długość jednego obwodu nie wyjaśnia wspólnego objawu. Najpierw trzeba zbadać filtr, zawory, pompę, mieszacz i obieg źródła.</td><td data-label="Następny krok">Kontrola części wspólnej oraz kierunków przepływu.</td></tr>
              <tr><td data-label="Scenariusz"><strong>D • 130 m przed wylewką</strong></td><td data-label="Dane">16 × 2 mm, brak obliczonego przepływu i Δp, długi dobieg przez korytarz.</td><td data-label="Wniosek">Ryzyko jest wysokie, a koszt korekty teraz niewielki względem późniejszej przebudowy.</td><td data-label="Następny krok">Podział pola na dwa obwody i ponowne obliczenie rozdzielacza przed próbą szczelności.</td></tr>
            </tbody>
          </table>
        </div>

        <p>Jeżeli nie znasz długości, nie wyznaczaj jej wyłącznie ze wzoru na powierzchnię i rozstaw. Taki szacunek pomija realne dobiegi, omijanie zabudowy, strefy brzegowe i sposób ułożenia. Orientacyjną ilość rury można sprawdzić w osobnym <a href="https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/">kalkulatorze długości rury</a>, ale do diagnostyki najlepiej zdobyć projekt, zdjęcia lub protokół wykonawczy.</p>
      </section>

      <section class="rk-loopdiag-section" id="rk-loopdiag-checklist">
        <span class="rk-loopdiag-kicker">Kontrola przed zalaniem rur</span>
        <h2>Checklista: jak nie dopuścić do zbyt długiej pętli?</h2>
        <p class="rk-loopdiag-lead">Najtańsza naprawa to korekta na rysunku. Dokumentacja powinna łączyć układ pomieszczeń z hydrauliką rozdzielacza, a nie kończyć się na podaniu jednego rozstawu rur.</p>
        <ul class="rk-loopdiag-checklist">
          <li>Każda pętla ma oznaczoną całkowitą długość wraz z zasilaniem i powrotem od rozdzielacza.</li>
          <li>Podział dużych pomieszczeń uwzględnia dylatacje, progi, przeszklenia i stałą zabudowę.</li>
          <li>Wymagany przepływ wynika z mocy obwodu i przyjętego ΔT, zwykle projektowanego indywidualnie.</li>
          <li>Strata ciśnienia jest policzona dla konkretnej rury, przepływu, rotametru i wkładki zaworowej.</li>
          <li>Wskazano obwód krytyczny oraz opór przewodów i armatury wspólnej.</li>
          <li>Punkt pracy pompy odpowiada sumie przepływów i wysokości podnoszenia drogi krytycznej.</li>
          <li>Prędkości w rurach mieszczą się w przyjętym zakresie projektowym bez ryzyka hałasu i sedymentacji.</li>
          <li>Rozdzielacz ma wystarczającą liczbę króćców; oszczędzanie jednego wyjścia nie wydłuża nadmiernie obwodów.</li>
          <li>Rury przechodzące przez dylatacje i progi mają właściwą ochronę, a pola jastrychu są skoordynowane.</li>
          <li>Przed wylewką wykonano próbę szczelności, opisano pętle i zapisano odczyty długości z oznaczeń rury.</li>
          <li>Wykonano zdjęcia przebiegu rur z miarą i zaznaczono miejsca bezpiecznego wiercenia.</li>
          <li>Nastawy rotametrów i wymagane przepływy są częścią dokumentacji uruchomieniowej.</li>
        </ul>

        <div class="rk-loopdiag-callout"><p><strong>Pętle nie muszą mieć identycznej długości.</strong> Powinny być możliwe do zrównoważenia przy wymaganych przepływach. Sztuczne wydłużanie małego obwodu tylko po to, aby zrównać metry, zwiększa opór i może niepotrzebnie ogrzewać dobiegi. Zobacz, jak <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">planować rozmieszczenie pętli grzewczych</a>.</p></div>
      </section>

      <section class="rk-loopdiag-section" id="rk-loopdiag-faq">
        <span class="rk-loopdiag-kicker">Najczęstsze pytania</span>
        <h2>Za długa pętla podłogówki — FAQ</h2>
        <div class="rk-loopdiag-faq">
          <details><summary>Ile metrów może mieć pętla podłogówki 16 × 2 mm?</summary><div class="rk-loopdiag-faq-answer"><p>Nie ma jednej długości właściwej dla wszystkich instalacji. W domach często projektuje się około 70–90 m całkowitej długości, a okolice 100 m traktuje jako zakres wymagający kontroli hydraulicznej. O akceptacji decydują wymagany przepływ, strata ciśnienia rury i armatury oraz punkt pracy pompy.</p></div></details>
          <details><summary>Czy 100 m pętli to zawsze za dużo?</summary><div class="rk-loopdiag-faq-answer"><p>Nie. Sto metrów nie jest uniwersalną granicą awarii ani normatywnym limitem. Jeżeli obwód osiąga wymagany przepływ i moc przy akceptowalnej stracie ciśnienia, może pracować poprawnie. Dla rury 16 × 2 mm taka długość powinna jednak zostać świadomie zweryfikowana.</p></div></details>
          <details><summary>Jakie są objawy zbyt długiej pętli?</summary><div class="rk-loopdiag-faq-answer"><p>Najczęstszy zestaw to przepływ wyraźnie poniżej projektu, duże ΔT po ustabilizowaniu pracy i niedogrzanie pomieszczenia, podczas gdy inne pętle działają prawidłowo. Są to objawy nieswoiste; identyczny efekt mogą dać zawory, powietrze, filtr, zagięcie rury lub źle dobrana pompa.</p></div></details>
          <details><summary>Czy za długa pętla powoduje zapowietrzanie?</summary><div class="rk-loopdiag-faq-answer"><p>Nie wytwarza powietrza sama z siebie. Długi obwód może być trudniejszy do skutecznego przepłukania, lecz przyczyn powracającego powietrza trzeba szukać w napełnianiu, odpowietrzaniu, ciśnieniu, nieszczelności, zasysaniu lub jakości wody instalacyjnej.</p></div></details>
          <details><summary>Czy mocniejsza pompa naprawi za długą pętlę?</summary><div class="rk-loopdiag-faq-answer"><p>Czasem właściwie dobrana pompa zapewni brakujące ciśnienie, ale decyzja wymaga obliczenia łącznego przepływu, oporu drogi krytycznej i sprawdzenia prędkości. Zbyt duża pompa może zwiększyć hałas, pobór energii i problemy z regulacją, a nie naprawi zamkniętego zaworu ani zagięcia.</p></div></details>
          <details><summary>Czy większy kocioł lub pompa ciepła zwiększy przepływ?</summary><div class="rk-loopdiag-faq-answer"><p>Nie automatycznie. Moc cieplna źródła i wysokość podnoszenia pompy obiegowej to różne parametry. O przepływie decydują pompa, opory sieci, zawory, filtry, elementy rozdzielające oraz sposób połączenia obiegu źródła z rozdzielaczem.</p></div></details>
          <details><summary>Czy rotametrem można wyrównać bardzo długą pętlę?</summary><div class="rk-loopdiag-faq-answer"><p>Rotametr może zdławić łatwiejsze obwody i pomóc w równoważeniu, lecz nie usuwa straty ciśnienia długiej pętli. Jeśli pompa nie ma wymaganego ciśnienia dyspozycyjnego, pełne otwarcie rotametru nie zagwarantuje potrzebnego przepływu.</p></div></details>
          <details><summary>Co zrobić z za długą pętlą przed wylewką?</summary><div class="rk-loopdiag-faq-answer"><p>Najlepiej podzielić pole na dwa poprawnie obliczone obwody, zaplanować osobne dobiegi i ponownie sprawdzić rozdzielacz, przepływy oraz opory. Przed zalaniem trzeba wykonać próbę szczelności, opisać pętle i udokumentować przebieg rur.</p></div></details>
          <details><summary>Co zrobić po wykonaniu wylewki?</summary><div class="rk-loopdiag-faq-answer"><p>Najpierw sprawdź zawory, siłownik, rotametr, filtr, odpowietrzenie, osobne płukanie, równoważenie i punkt pracy pompy. Jeżeli obliczenia potwierdzą nadmierny opór, możliwości obejmują korektę hydrauliki, właściwie dobraną pompę lub dodatkowy emiter; fizyczny podział zwykle wymaga ingerencji w podłogę.</p></div></details>
          <details><summary>Czy wszystkie pętle muszą mieć identyczną długość?</summary><div class="rk-loopdiag-faq-answer"><p>Nie. Pętle powinny być możliwe do zrównoważenia przy przepływach wynikających z ich mocy, ale nie muszą mieć tej samej liczby metrów. Sztuczne wydłużanie małego obwodu może niepotrzebnie zwiększyć opór i ogrzewać strefy dobiegowe.</p></div></details>
        </div>
      </section>

      <section class="rk-loopdiag-section" id="rk-loopdiag-sources">
        <span class="rk-loopdiag-kicker">Podstawa techniczna</span>
        <h2>Źródła i zakres odpowiedzialności</h2>
        <p>Metodykę projektowania i wymiarowania wodnych systemów płaszczyznowych opisuje <a href="https://www.iso.org/standard/74684.html" target="_blank" rel="noopener nofollow">ISO 11855-3:2021</a>, natomiast zagadnienia wykonawcze obejmuje <a href="https://www.iso.org/standard/74685.html" target="_blank" rel="noopener nofollow">ISO 11855-5:2021</a>. Wykresy strat ciśnienia, zależności przepływu i prędkości należy odczytywać dla konkretnego systemu, na przykład z <a href="https://www.uponor.com/getmedia/04a9120d-b7d8-4001-82c5-9662aa1a1e56/nubos-technical-information-052014-english?sitename=UponorInternational" target="_blank" rel="noopener nofollow">dokumentacji technicznej Uponor Nubos</a>.</p>
        <p>Dokumentacja wykonawcza powinna zapisywać nie tylko nazwę pomieszczenia, lecz także parametry obwodu. Przykładowy protokół systemowy obejmuje między innymi długość pętli, ilość wody i nastawy zaworów; zobacz <a href="https://brandportal.uponor.com/asset/0552cf8b-28a2-4979-9f9c-ff4e00f3a8dd/IOM-Comfort-Port-EN-1094795.pdf" target="_blank" rel="noopener nofollow">instrukcję i protokół Uponor Comfort Port</a>.</p>
        <div class="rk-loopdiag-sources"><p><strong>Ważne:</strong> artykuł oraz panel mają charakter edukacyjny. Nie zastępują projektu, pomiaru przepływu i temperatur, kontroli instalatora ani danych producenta konkretnej rury, rozdzielacza i pompy. Przed płukaniem, próbą ciśnieniową albo zmianą ustawień należy stosować instrukcje użytego systemu.</p></div>
      </section>

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

        <header class="rk-loopdiag-author-head">
          <div><span class="rk-loopdiag-kicker">Autor opracowania</span><h2>Robert Kucharski</h2><p>Projektant instalacji sanitarnych • specjalista HVAC i ogrzewania podłogowego</p></div>
          <span class="rk-loopdiag-author-mark">E-E-A-T • HVAC</span>
        </header>

        <div class="rk-loopdiag-author-layout">
          <aside class="rk-loopdiag-author-side">
            <div class="rk-loopdiag-author-photo"><img 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="600" height="600" loading="lazy" decoding="async"></div>
            <div class="rk-loopdiag-author-name">Robert Kucharski</div>
            <div class="rk-loopdiag-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
          </aside>

          <div class="rk-loopdiag-author-main">
            <blockquote class="rk-loopdiag-author-quote"><p>„Nie uznaję pętli za zbyt długą dlatego, że przekroczyła okrągłą liczbę metrów. Najpierw sprawdzam, jakiego przepływu potrzebuje, jaki opór tworzy i czy pompa potrafi obsłużyć obwód krytyczny przy pracy całego rozdzielacza.”</p></blockquote>

            <div class="rk-loopdiag-author-tabs" role="tablist" aria-label="Informacje o autorze">
              <label class="rk-loopdiag-author-tab" for="rk-loopdiag-author-about">O autorze</label>
              <label class="rk-loopdiag-author-tab" for="rk-loopdiag-author-exp">Doświadczenie</label>
              <label class="rk-loopdiag-author-tab" for="rk-loopdiag-author-sites">Portale</label>
            </div>

            <div class="rk-loopdiag-author-panel rk-loopdiag-author-panel-about"><p>Projektuję wodne ogrzewanie podłogowe i przygotowuję techniczne publikacje dotyczące HVAC, hydrauliki oraz świadomego prowadzenia inwestycji. W diagnostyce rozdzielam objaw od przyczyny, aby niskiego przepływu nie przypisywać automatycznie długości rury.</p></div>
            <div class="rk-loopdiag-author-panel rk-loopdiag-author-panel-exp"><p>W dokumentacji wyznaczam obciążenia cieplne pomieszczeń, temperatury zasilania i powrotu, rozstawy, długości pętli, wymagane przepływy, opory hydrauliczne, nastawy rozdzielaczy oraz punkt pracy pompy. Dzięki temu jeszcze przed wylewką można wskazać obwód krytyczny i poprawić podział pól.</p></div>
            <div class="rk-loopdiag-author-panel rk-loopdiag-author-panel-sites">
              <p>Jestem właścicielem trzech serwisów branżowych. Powiązanie portali podaję jawnie, aby czytelnik znał autorstwo i kontekst linkowania.</p>
              <div class="rk-loopdiag-site-links"><a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a><a href="https://remont.biz.pl/" target="_blank" rel="noopener nofollow">Remont.biz.pl</a><a href="https://sobir.pl/" target="_blank" rel="noopener nofollow">Sobir.pl</a></div>
            </div>
          </div>
        </div>
      </section>

      <section class="rk-loopdiag-final-cta" aria-label="Projekt ogrzewania podłogowego">
        <span class="rk-loopdiag-kicker" style="color:#79f1ff">Hydraulikę najłatwiej poprawić na etapie rysunku</span>
        <h2>Sprawdź długości, przepływy i opory pętli przed wykonaniem wylewki</h2>
        <p>Indywidualny projekt obejmuje podział pomieszczeń na obwody, długości z dobiegami, wymagane przepływy, straty ciśnienia, nastawy rozdzielacza i dobór punktu pracy pompy. Otrzymujesz dokumentację, według której można ułożyć i uruchomić instalację bez zgadywania na budowie.</p>
        <a class="rk-loopdiag-cta-button rk-loopdiag-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
        <small class="rk-loopdiag-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
      </section>
    </div>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/#article",
      "url": "https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/",
      "headline": "Za długa pętla podłogówki – objawy, diagnostyka i sposoby naprawy",
      "description": "Za długa pętla podłogówki? Sprawdź przepływ, ΔT, objawy i możliwości naprawy. Zobacz, kiedy winna jest długość, a kiedy pompa lub regulacja.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-27",
      "author": {"@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "mainEntityOfPage": {"@id": "https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/#webpage"},
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"},
      "proficiencyLevel": "Expert",
      "articleSection": [
        "Diagnostyka zbyt długiej pętli",
        "Długość pętli i strata ciśnienia",
        "Przepływ i różnica temperatur",
        "Rozdzielacz i obwód krytyczny",
        "Naprawa przed i po wylewce",
        "Równoważenie hydrauliczne"
      ],
      "keywords": [
        "za długa pętla podłogówki",
        "objawy za długiej pętli ogrzewania podłogowego",
        "jak naprawić za długą pętlę podłogówki",
        "pętla podłogówki 100 m",
        "niski przepływ na rotametrze",
        "duże delta T ogrzewania podłogowego",
        "opór hydrauliczny pętli",
        "mocniejsza pompa do podłogówki"
      ],
      "about": [
        {"@type": "Thing", "name": "Pętla ogrzewania podłogowego"},
        {"@type": "Thing", "name": "Strata ciśnienia"},
        {"@type": "Thing", "name": "Przepływ wody grzewczej"},
        {"@type": "Thing", "name": "Równoważenie hydrauliczne"},
        {"@type": "Thing", "name": "Pompa obiegowa"},
        {"@type": "Thing", "name": "Rozdzielacz ogrzewania podłogowego"}
      ],
      "citation": [
        "https://www.iso.org/standard/74684.html",
        "https://www.iso.org/standard/74685.html",
        "https://www.uponor.com/getmedia/04a9120d-b7d8-4001-82c5-9662aa1a1e56/nubos-technical-information-052014-english?sitename=UponorInternational",
        "https://brandportal.uponor.com/asset/0552cf8b-28a2-4979-9f9c-ff4e00f3a8dd/IOM-Comfort-Port-EN-1094795.pdf"
      ],
      "hasPart": [
        {"@id": "https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/#diagnostic"},
        {"@id": "https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/#howto"},
        {"@id": "https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/#faq"}
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/#webpage",
      "url": "https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/",
      "name": "Za długa pętla podłogówki – objawy, diagnostyka i sposoby naprawy",
      "description": "Za długa pętla podłogówki? Sprawdź przepływ, ΔT, objawy i możliwości naprawy. Zobacz, kiedy winna jest długość, a kiedy pompa lub regulacja.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-27",
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"},
      "breadcrumb": {"@id": "https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/#breadcrumb"},
      "mainEntity": {"@id": "https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/#article"}
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/za-dluga-petla-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": "Za długa pętla podłogówki", "item": "https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/"}
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/#diagnostic",
      "name": "Panel diagnostyczny: Czy pętla naprawdę jest za długa?",
      "description": "Edukacyjne narzędzie łączące długość pętli, przepływ, temperaturę zasilania i powrotu oraz objawy w celu ustalenia kolejności diagnostyki ogrzewania podłogowego.",
      "url": "https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/#rk-loopdiag-diagnostic",
      "applicationCategory": "UtilitiesApplication",
      "applicationSubCategory": "Narzędzie diagnostyczne HVAC",
      "operatingSystem": "Dowolny",
      "browserRequirements": "Włączona obsługa JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "offers": {"@type": "Offer", "price": "0", "priceCurrency": "PLN"},
      "featureList": [
        "obliczanie różnicy temperatur zasilania i powrotu",
        "porównanie przepływu zmierzonego z projektowym",
        "orientacyjne obliczenie mocy transportowanej przez wodę",
        "ocena ryzyka nadmiernej długości dla wybranego wymiaru rury",
        "rozróżnienie problemu lokalnego i wspólnego dla rozdzielacza",
        "uszeregowanie przyczyn i kolejnych czynności diagnostycznych",
        "dynamiczny schemat równoległych pętli"
      ],
      "author": {"@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"}
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/#howto",
      "name": "Jak sprawdzić za długą pętlę podłogówki krok po kroku",
      "description": "Osiem etapów diagnostyki podejrzanego obwodu od ustalenia długości po porównanie wymaganego przepływu z oporem hydraulicznym.",
      "inLanguage": "pl-PL",
      "step": [
        {"@type": "HowToStep", "position": 1, "name": "Ustal rzeczywistą długość całej pętli", "text": "Odczytaj długość z projektu, protokołu wykonawczego albo oznaczeń na rurze. Dodaj przewód zasilający i powrotny od rozdzielacza do pola grzejnego. Jeżeli danych nie ma, oznacz długość jako nieznaną zamiast zgadywać z powierzchni."},
        {"@type": "HowToStep", "position": 2, "name": "Otwórz zawory i sprawdź siłownik", "text": "Zdejmij lub wysteruj siłownik, potwierdź ruch trzpienia zaworu, otwórz rotametr zgodnie z instrukcją rozdzielacza i sprawdź zawory odcinające. Zablokowana wkładka potrafi całkowicie imitować nadmierny opór rury."},
        {"@type": "HowToStep", "position": 3, "name": "Odczytaj przepływ po ustabilizowaniu instalacji", "text": "Nie oceniaj pętli w pierwszych minutach po starcie. Zapisz przepływ na rotametrze, ustawienie pompy, liczbę otwartych obwodów i porównaj odczyt z wymaganiem projektowym, a nie tylko z sąsiednią pętlą."},
        {"@type": "HowToStep", "position": 4, "name": "Zmierz temperaturę zasilania i powrotu", "text": "Zmierz temperatury możliwie tym samym przyrządem i w porównywalnych miejscach. Duże ΔT po stabilizacji wraz z niskim przepływem wspiera hipotezę ograniczonego przepływu, ale samo nie identyfikuje przyczyny."},
        {"@type": "HowToStep", "position": 5, "name": "Przepłucz i odpowietrz podejrzaną pętlę osobno", "text": "Zamknij pozostałe obwody i przepłukuj badaną pętlę zgodnie z instrukcją systemu. Obserwuj pęcherzyki, zanieczyszczenia oraz swobodę przepływu. Nie przekraczaj dopuszczalnego ciśnienia rury i armatury."},
        {"@type": "HowToStep", "position": 6, "name": "Porównaj ją z innymi obwodami rozdzielacza", "text": "Sprawdź, czy problem dotyczy jednej pętli, grupy za wspólnym elementem czy całego rozdzielacza. Jedna słaba pętla kieruje uwagę na jej zawór, zagięcie, powietrze i opór; wszystkie słabe obwody — na część wspólną."},
        {"@type": "HowToStep", "position": 7, "name": "Sprawdź filtr, pompę i część wspólną", "text": "Skontroluj filtr, zawory, mieszacz, sprzęgło lub bufor, kierunki przepływu i dostępne ciśnienie pompy przy łącznym strumieniu. Wysoki bieg nie pomoże, jeżeli zawór jest zamknięty albo obieg źródła nie dostarcza wody."},
        {"@type": "HowToStep", "position": 8, "name": "Porównaj wymagany przepływ z oporem hydraulicznym", "text": "Na podstawie mocy pętli i ΔT wyznacz wymagany przepływ, a z danych rury i armatury — stratę ciśnienia. Zestaw obwód krytyczny z charakterystyką pompy. Dopiero ten krok potwierdza, czy długość jest zasadniczym problemem."}
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {"@type": "Question", "name": "Ile metrów może mieć pętla podłogówki 16 × 2 mm?", "acceptedAnswer": {"@type": "Answer", "text": "Nie ma jednej długości właściwej dla wszystkich instalacji. W domach często projektuje się około 70–90 m całkowitej długości, a okolice 100 m traktuje jako zakres wymagający kontroli hydraulicznej. O akceptacji decydują wymagany przepływ, strata ciśnienia rury i armatury oraz punkt pracy pompy."}},
        {"@type": "Question", "name": "Czy 100 m pętli to zawsze za dużo?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Sto metrów nie jest uniwersalną granicą awarii ani normatywnym limitem. Jeżeli obwód osiąga wymagany przepływ i moc przy akceptowalnej stracie ciśnienia, może pracować poprawnie. Dla rury 16 × 2 mm taka długość powinna jednak zostać świadomie zweryfikowana."}},
        {"@type": "Question", "name": "Jakie są objawy zbyt długiej pętli?", "acceptedAnswer": {"@type": "Answer", "text": "Najczęstszy zestaw to przepływ wyraźnie poniżej projektu, duże ΔT po ustabilizowaniu pracy i niedogrzanie pomieszczenia, podczas gdy inne pętle działają prawidłowo. Są to objawy nieswoiste; identyczny efekt mogą dać zawory, powietrze, filtr, zagięcie rury lub źle dobrana pompa."}},
        {"@type": "Question", "name": "Czy za długa pętla powoduje zapowietrzanie?", "acceptedAnswer": {"@type": "Answer", "text": "Nie wytwarza powietrza sama z siebie. Długi obwód może być trudniejszy do skutecznego przepłukania, lecz przyczyn powracającego powietrza trzeba szukać w napełnianiu, odpowietrzaniu, ciśnieniu, nieszczelności, zasysaniu lub jakości wody instalacyjnej."}},
        {"@type": "Question", "name": "Czy mocniejsza pompa naprawi za długą pętlę?", "acceptedAnswer": {"@type": "Answer", "text": "Czasem właściwie dobrana pompa zapewni brakujące ciśnienie, ale decyzja wymaga obliczenia łącznego przepływu, oporu drogi krytycznej i sprawdzenia prędkości. Zbyt duża pompa może zwiększyć hałas, pobór energii i problemy z regulacją, a nie naprawi zamkniętego zaworu ani zagięcia."}},
        {"@type": "Question", "name": "Czy większy kocioł lub pompa ciepła zwiększy przepływ?", "acceptedAnswer": {"@type": "Answer", "text": "Nie automatycznie. Moc cieplna źródła i wysokość podnoszenia pompy obiegowej to różne parametry. O przepływie decydują pompa, opory sieci, zawory, filtry, elementy rozdzielające oraz sposób połączenia obiegu źródła z rozdzielaczem."}},
        {"@type": "Question", "name": "Czy rotametrem można wyrównać bardzo długą pętlę?", "acceptedAnswer": {"@type": "Answer", "text": "Rotametr może zdławić łatwiejsze obwody i pomóc w równoważeniu, lecz nie usuwa straty ciśnienia długiej pętli. Jeśli pompa nie ma wymaganego ciśnienia dyspozycyjnego, pełne otwarcie rotametru nie zagwarantuje potrzebnego przepływu."}},
        {"@type": "Question", "name": "Co zrobić z za długą pętlą przed wylewką?", "acceptedAnswer": {"@type": "Answer", "text": "Najlepiej podzielić pole na dwa poprawnie obliczone obwody, zaplanować osobne dobiegi i ponownie sprawdzić rozdzielacz, przepływy oraz opory. Przed zalaniem trzeba wykonać próbę szczelności, opisać pętle i udokumentować przebieg rur."}},
        {"@type": "Question", "name": "Co zrobić po wykonaniu wylewki?", "acceptedAnswer": {"@type": "Answer", "text": "Najpierw sprawdź zawory, siłownik, rotametr, filtr, odpowietrzenie, osobne płukanie, równoważenie i punkt pracy pompy. Jeżeli obliczenia potwierdzą nadmierny opór, możliwości obejmują korektę hydrauliki, właściwie dobraną pompę lub dodatkowy emiter; fizyczny podział zwykle wymaga ingerencji w podłogę."}},
        {"@type": "Question", "name": "Czy wszystkie pętle muszą mieć identyczną długość?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Pętle powinny być możliwe do zrównoważenia przy przepływach wynikających z ich mocy, ale nie muszą mieć tej samej liczby metrów. Sztuczne wydłużanie małego obwodu może niepotrzebnie zwiększyć opór i ogrzewać strefy dobiegowe."}}
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "image": {"@type": "ImageObject", "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp"},
      "jobTitle": "Projektant instalacji sanitarnych i specjalista systemów HVAC",
      "description": "Projektant wodnego ogrzewania podłogowego, autor technicznych opracowań branżowych i właściciel serwisów Projekt-Ogrzewania.pl, Remont.biz.pl oraz Sobir.pl.",
      "knowsAbout": [
        "projektowanie ogrzewania podłogowego",
        "hydraulika instalacji grzewczych",
        "obliczanie strat ciśnienia",
        "równoważenie hydrauliczne",
        "dobór pomp obiegowych",
        "rozdzielacze ogrzewania podłogowego",
        "systemy HVAC"
      ],
      "sameAs": ["https://projekt-ogrzewania.pl/", "https://remont.biz.pl/", "https://sobir.pl/"],
      "owns": [
        {"@id": "https://projekt-ogrzewania.pl/#organization"},
        {"@id": "https://remont.biz.pl/#organization"},
        {"@id": "https://sobir.pl/#organization"}
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt Ogrzewania",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"},
      "owner": {"@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"}
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"},
      "owner": {"@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"}
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"},
      "owner": {"@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"}
    },
    {
      "@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"},
      "potentialAction": {
        "@type": "SearchAction",
        "target": {"@type": "EntryPoint", "urlTemplate": "https://projekt-ogrzewania.pl/?s={search_term_string}"},
        "query-input": "required name=search_term_string"
      }
    }
  ]
}
</script>
<script>
(function () {
  "use strict";

  function rkLoopdiagInit() {
    var root = document.getElementById("rk-loopdiag-guide");
    if (!root) {
      return false;
    }
    if (root.getAttribute("data-rk-loopdiag-ready") === "true") {
      return true;
    }

    var form = document.getElementById("rk-loopdiag-diagnostic-form");
    var stageInput = document.getElementById("rk-loopdiag-stage");
    var pipeInput = document.getElementById("rk-loopdiag-pipe");
    var lengthInput = document.getElementById("rk-loopdiag-length");
    var flowInput = document.getElementById("rk-loopdiag-flow");
    var designFlowInput = document.getElementById("rk-loopdiag-design-flow");
    var supplyInput = document.getElementById("rk-loopdiag-supply");
    var returnInput = document.getElementById("rk-loopdiag-return");
    var otherLoopsInput = document.getElementById("rk-loopdiag-other-loops");
    var valvesCheckedInput = document.getElementById("rk-loopdiag-valves-checked");
    var flushedInput = document.getElementById("rk-loopdiag-flushed");
    var allWeakInput = document.getElementById("rk-loopdiag-all-weak");
    var resetButton = document.getElementById("rk-loopdiag-diagnostic-reset");
    var stageNote = document.getElementById("rk-loopdiag-stage-note");
    var resultDt = document.getElementById("rk-loopdiag-result-dt");
    var resultFlowRatio = document.getElementById("rk-loopdiag-result-flow-ratio");
    var resultPower = document.getElementById("rk-loopdiag-result-power");
    var resultLength = document.getElementById("rk-loopdiag-result-length");
    var statusBox = document.getElementById("rk-loopdiag-diagnostic-status");
    var statusTitle = document.getElementById("rk-loopdiag-diagnostic-title");
    var statusCopy = document.getElementById("rk-loopdiag-diagnostic-copy");
    var listOutput = document.getElementById("rk-loopdiag-diagnostic-list");
    var suspectLoop = document.getElementById("rk-loopdiag-suspect-loop");
    var mapValue = document.getElementById("rk-loopdiag-map-value");
    var pumpNote = document.getElementById("rk-loopdiag-pump-note");
    var powerNote = document.getElementById("rk-loopdiag-power-note");

    var required = [
      form, stageInput, pipeInput, lengthInput, flowInput, designFlowInput,
      supplyInput, returnInput, otherLoopsInput, valvesCheckedInput,
      flushedInput, allWeakInput, resetButton, stageNote, resultDt,
      resultFlowRatio, resultPower, resultLength, statusBox, statusTitle,
      statusCopy, listOutput, suspectLoop, mapValue, pumpNote, powerNote
    ];
    var elementsReady = true;
    required.forEach(function (element) {
      if (!element) {
        elementsReady = false;
      }
    });
    if (!elementsReady) {
      return false;
    }

    var pipeProfiles = {
      "16": {name: "16 × 2 mm", comfortable: 90, verify: 100, high: 115},
      "17": {name: "17 × 2 mm", comfortable: 100, verify: 110, high: 125},
      "20": {name: "20 × 2 mm", comfortable: 120, verify: 140, high: 160}
    };

    function rkLoopdiagClamp(value, minimum, maximum, fallback) {
      var number = Number(String(value).replace(",", "."));
      if (!Number.isFinite(number)) {
        return fallback;
      }
      return Math.min(maximum, Math.max(minimum, number));
    }

    function rkLoopdiagNumber(value, digits) {
      return value.toLocaleString("pl-PL", {
        minimumFractionDigits: digits,
        maximumFractionDigits: digits
      });
    }

    function rkLoopdiagInteger(value) {
      return Math.round(value).toLocaleString("pl-PL", {
        maximumFractionDigits: 0
      });
    }

    function rkLoopdiagClear(element) {
      while (element.firstChild) {
        element.removeChild(element.firstChild);
      }
    }

    function rkLoopdiagRenderMessages(messages) {
      rkLoopdiagClear(listOutput);
      messages.slice(0, 7).forEach(function (message) {
        var item = document.createElement("li");
        item.textContent = message;
        listOutput.appendChild(item);
      });
    }

    function rkLoopdiagLengthAssessment(length, profile) {
      if (length <= 0) {
        return {risk: 0, label: "długość nieznana", text: "Bez długości nie można ocenić oporu rury. Ustal ją z projektu, protokołu albo oznaczeń na rurze."};
      }
      if (length <= profile.comfortable) {
        return {risk: 0, label: "typowy zakres", text: "Sama długość nie wygląda podejrzanie, ale przepływ i opór armatury nadal trzeba sprawdzić."};
      }
      if (length <= profile.verify) {
        return {risk: 1, label: "do sprawdzenia", text: "Długość znajduje się w zakresie, który warto potwierdzić obliczeniem straty ciśnienia przy wymaganym przepływie."};
      }
      if (length <= profile.high) {
        return {risk: 2, label: "podwyższone ryzyko", text: "Długość może tworzyć istotny opór. Nie odrzucaj pętli automatycznie, lecz wymagaj obliczenia hydraulicznego."};
      }
      return {risk: 3, label: "wysokie ryzyko", text: "Tak długa pętla ma wysokie ryzyko nadmiernej straty ciśnienia, szczególnie przy dużym wymaganym przepływie."};
    }

    function rkLoopdiagSetStatus(level, title, copy) {
      statusBox.className = "rk-loopdiag-audit-status";
      if (level === "warning") {
        statusBox.classList.add("is-warning");
      }
      if (level === "danger") {
        statusBox.classList.add("is-danger");
      }
      statusTitle.textContent = title;
      statusCopy.textContent = copy;

      suspectLoop.className = "rk-loopdiag-loop-row";
      if (level === "danger") {
        suspectLoop.classList.add("is-danger");
      } else if (level === "warning") {
        suspectLoop.classList.add("is-warning");
      } else {
        suspectLoop.classList.add("is-reference");
      }
    }

    function rkLoopdiagCalculate() {
      var stage = stageInput.value;
      var pipeKey = pipeInput.value;
      var profile = pipeProfiles[pipeKey];
      if (!profile) {
        pipeKey = "16";
        pipeInput.value = pipeKey;
        profile = pipeProfiles[pipeKey];
      }

      var length = rkLoopdiagClamp(lengthInput.value, 0, 250, 0);
      var flow = rkLoopdiagClamp(flowInput.value, 0, 8, 0);
      var designFlow = rkLoopdiagClamp(designFlowInput.value, 0, 8, 0);
      var supply = rkLoopdiagClamp(supplyInput.value, 10, 70, 35);
      var returnTemperature = rkLoopdiagClamp(returnInput.value, 5, 65, 25);
      var otherLoopsWork = otherLoopsInput.checked;
      var valvesChecked = valvesCheckedInput.checked;
      var flushed = flushedInput.checked;
      var allWeak = allWeakInput.checked;
      var temperatureOrderValid = supply > returnTemperature;
      var deltaT = 0;
      if (temperatureOrderValid) {
        deltaT = supply - returnTemperature;
      }
      var power = 69.8 * flow * deltaT;
      var flowRatio = null;
      if (designFlow > 0) {
        flowRatio = flow / designFlow * 100;
      }
      var lengthAssessment = rkLoopdiagLengthAssessment(length, profile);
      var lowFlow = false;
      var veryLowFlow = false;
      if (flowRatio !== null) {
        lowFlow = flowRatio < 80;
        veryLowFlow = flowRatio < 55;
      } else {
        lowFlow = flow < 0.8;
        veryLowFlow = flow < 0.5;
      }
      var highDelta = deltaT > 8;
      var veryHighDelta = deltaT > 12;
      var messages = [];
      var level = "ok";
      var title = "Brak wyraźnych przesłanek, że długość jest główną przyczyną";
      var copy = "Podane parametry nie tworzą typowego zestawu objawów za długiej pętli. Zachowaj nastawy i porównaj je z dokumentacją projektu.";

      resultDt.textContent = temperatureOrderValid ? rkLoopdiagNumber(deltaT, 1) + " K" : "sprawdź pomiar";
      resultFlowRatio.textContent = flowRatio === null ? "brak danych" : rkLoopdiagInteger(flowRatio) + "%";
      resultPower.textContent = temperatureOrderValid ? rkLoopdiagInteger(power) + " W" : "brak wyniku";
      resultLength.textContent = lengthAssessment.label;
      mapValue.textContent = rkLoopdiagNumber(flow, 1) + " l/min";
      if (length > 0) {
        mapValue.textContent += " • " + rkLoopdiagInteger(length) + " m";
      }

      if (stage === "before") {
        stageNote.innerHTML = "<strong>Przed wylewką:</strong> najważniejsza jest weryfikacja długości z dobiegami, wymaganego przepływu i obliczonej straty ciśnienia. Odczyty temperatur i przepływu mają sens dopiero po uruchomieniu.";
        if (length <= 0) {
          level = "warning";
          title = "Najpierw ustal długość pętli przed wykonaniem wylewki";
          copy = "Bez długości i wymaganego przepływu nie można potwierdzić podziału pola. Teraz można jeszcze poprawić obwody bez ingerencji w gotową podłogę.";
        } else if (lengthAssessment.risk >= 3) {
          level = "danger";
          title = "Wysokie ryzyko hydrauliczne przed wykonaniem wylewki";
          copy = "Dla rury " + profile.name + " podana długość wymaga ponownego podziału pola albo pełnego obliczenia, które wykaże akceptowalną stratę ciśnienia.";
        } else if (lengthAssessment.risk >= 2) {
          level = "warning";
          title = "Nie zalewaj pętli bez kontroli hydraulicznej";
          copy = lengthAssessment.text;
        } else {
          title = "Długość nie wskazuje na oczywisty błąd przed wylewką";
          copy = "To jeszcze nie zatwierdzenie obwodu. Sprawdź wymagany przepływ, stratę ciśnienia, dobiegi i punkt pracy pompy dla całego rozdzielacza.";
        }
        messages.push("Policz przepływ z mocy pętli i projektowego ΔT, następnie odczytaj opór jednostkowy z dokumentacji konkretnej rury.");
        messages.push("Wlicz oba dobiegi od rozdzielacza. Metry poza polem grzejnym nadal zwiększają stratę ciśnienia.");
        if (lengthAssessment.risk >= 2) {
          messages.push("Rozważ podział pola na dwa obwody i ponownie sprawdź liczbę króćców rozdzielacza przed próbą szczelności.");
        }
        messages.push("Zapisz długości, wymagane przepływy i nastawy w protokole oraz wykonaj dokumentację fotograficzną przed zalaniem rur.");
        powerNote.textContent = "Przed uruchomieniem nie interpretuj mocy wyliczonej z przykładowych temperatur i przepływu. W tym etapie kluczowy jest wymagany przepływ projektowy i obliczona Δp.";
      } else {
        if (stage === "uncommissioned") {
          stageNote.innerHTML = "<strong>Po wylewce, przed pełnym uruchomieniem:</strong> pierwszeństwo mają poprawne napełnienie, osobne płukanie każdej pętli, kontrola zaworów i protokół przepływów.";
        } else {
          stageNote.innerHTML = "<strong>Instalacja pracuje:</strong> porównujemy odczyty po stabilizacji i najpierw wykluczamy przyczyny regulacyjne oraz wykonawcze.";
        }

        if (allWeak) {
          level = "warning";
          title = "Najpierw sprawdź część wspólną instalacji";
          copy = "Jeżeli wszystkie pętle są słabe, jedna nadmierna długość nie wyjaśnia objawu. Skontroluj filtr, zawory, pompę, mieszacz, obieg źródła i odpowietrzenie rozdzielacza.";
        } else if (!temperatureOrderValid) {
          level = "warning";
          title = "Popraw pomiar temperatur przed interpretacją ΔT";
          copy = "Temperatura zasilania powinna być wyższa od temperatury powrotu podczas stabilnej pracy grzewczej. Sprawdź miejsca i dokładność pomiaru.";
        } else if (length <= 0) {
          level = "warning";
          title = "Objawy można ocenić, ale długość pozostaje nieznana";
          copy = "Niski przepływ lub duże ΔT wymagają diagnostyki, lecz bez długości nie da się powiązać ich z oporem rury. Ustal metry z dokumentacji i nadal wyklucz armaturę oraz powietrze.";
        } else if (lengthAssessment.risk >= 2) {
          if (lowFlow) {
            if (highDelta) {
              if (otherLoopsWork) {
                if (valvesChecked) {
                  if (flushed) {
                    level = "danger";
                    title = "Za długa pętla jest prawdopodobną przyczyną ograniczenia przepływu";
                    copy = "Długość, niski przepływ, duże ΔT i prawidłowa praca innych obwodów tworzą spójny obraz wysokiego oporu. Potwierdź go obliczeniem Δp i krzywą pompy.";
                  } else {
                    level = "warning";
                    title = "Długość jest podejrzana, ale pętla wymaga osobnego płukania";
                    copy = "Parametry pasują do wysokiego oporu, jednak powietrze lub zanieczyszczenie może dać ten sam objaw. Przepłucz obwód przy zamkniętych pozostałych pętlach.";
                  }
                } else {
                  level = "warning";
                  title = "Długość jest podejrzana, ale najpierw sprawdź armaturę";
                  copy = "Niski przepływ i duże ΔT pasują do wysokiego oporu, lecz zawór, siłownik albo rotametr mogą ograniczać przepływ niezależnie od metrów rury.";
                }
              } else {
                level = "warning";
                title = "Wysoki opór jest możliwy, ale brakuje porównania z innymi pętlami";
                copy = "Sprawdź, czy problem jest lokalny. Jeżeli podobnie zachowuje się cały rozdzielacz, zacznij od części wspólnej i punktu pracy pompy.";
              }
            } else {
              level = "warning";
              title = "Długość i niski przepływ wymagają obliczenia oporu";
              copy = "Brak dużego ΔT osłabia jednoznaczną diagnozę. Sprawdź stabilność pomiaru, moc pomieszczenia, zawory i stratę ciśnienia przy wymaganym przepływie.";
            }
          } else {
            level = "warning";
            title = "Pętla jest długa, lecz osiąga wymagany przepływ";
            copy = "Sama liczba metrów nie uzasadnia przebudowy. Potwierdź akceptowalną Δp, prędkość wody, temperaturę powierzchni i zapas pompy podczas pracy wszystkich obwodów.";
          }
        } else if (lowFlow) {
          level = "warning";
          title = "Sama długość nie wyjaśnia niskiego przepływu";
          copy = "Dla podanej długości najpierw sprawdź zawory, powietrze, zanieczyszczenie, zagięcie rury i część wspólną. Dopiero pomiar lub obliczenie oporu pozwoli wrócić do hipotezy długości.";
        } else if (highDelta) {
          level = "warning";
          title = "Duże ΔT wymaga sprawdzenia mimo prawidłowego przepływu";
          copy = "Zweryfikuj dokładność pomiaru, stabilność instalacji, rzeczywisty przepływ i moc pomieszczenia. Sama długość nie tworzy w tym zestawie jednoznacznej odpowiedzi.";
        }

        if (allWeak) {
          messages.push("Oczyść filtr, potwierdź pełne otwarcie armatury wspólnej i sprawdź, czy pompa pracuje we właściwym kierunku oraz trybie.");
          messages.push("Porównaj łączny wymagany przepływ rozdzielacza z krzywą pompy i oporem drogi wspólnej.");
        } else {
          if (!valvesChecked) {
            messages.push("Najpierw potwierdź pełne otwarcie rotametru, zaworu powrotnego i trzpienia pod siłownikiem. To najszybsza przyczyna do wykluczenia.");
          }
          if (!flushed) {
            messages.push("Przepłucz i odpowietrz badaną pętlę osobno przy zamkniętych pozostałych obwodach, zgodnie z instrukcją systemu.");
          }
          if (otherLoopsWork) {
            messages.push("Prawidłowa praca pozostałych pętli kieruje diagnostykę na lokalną armaturę, powietrze, zagięcie albo opór badanego obwodu.");
          } else {
            messages.push("Porównaj badaną pętlę z co najmniej dwoma obwodami tego samego rozdzielacza przy jednakowych warunkach pracy.");
          }
          if (lengthAssessment.risk >= 2) {
            messages.push("Oblicz stratę ciśnienia rury " + profile.name + " przy wymaganym przepływie i dodaj opór rotametru, wkładki oraz drogi wspólnej.");
          } else {
            messages.push("Długość nie należy do wysokiego pasma ryzyka; nie pomijaj zagięcia rury, nastaw, filtra i charakterystyki pompy.");
          }
        }

        if (flowRatio !== null) {
          if (veryLowFlow) {
            messages.push("Pętla osiąga mniej niż 55% przepływu projektowego. Nie kompensuj tego samą temperaturą zasilania.");
          } else if (lowFlow) {
            messages.push("Pętla nie osiąga 80% przepływu projektowego. Sprawdź wymaganie i warunki, przy których wykonano odczyt.");
          } else {
            messages.push("Zmierzony przepływ jest zbliżony do wymagania projektowego; sama długość nie jest dowodem usterki.");
          }
        } else {
          messages.push("Bez przepływu projektowego nie wiadomo, czy wartość na rotametrze jest wystarczająca dla mocy pomieszczenia.");
        }
        if (veryHighDelta) {
          messages.push("ΔT przekracza 12 K. Powtórz pomiar po stabilizacji i sprawdź, czy przepływ nie jest silnie ograniczony.");
        } else if (highDelta) {
          messages.push("ΔT przekracza 8 K. W połączeniu z niskim przepływem wspiera to hipotezę ograniczenia hydraulicznego.");
        }

        powerNote.textContent = "Przy podanych odczytach woda transportuje orientacyjnie " + rkLoopdiagInteger(power) + " W. Porównaj tę wartość z mocą wymaganą przez pomieszczenie, ale pamiętaj o dokładności rotametru, czujników i stabilności pracy.";
      }

      rkLoopdiagSetStatus(level, title, copy);
      rkLoopdiagRenderMessages(messages);

      if (allWeak) {
        pumpNote.innerHTML = "<strong>Wniosek ze schematu:</strong> niski przepływ wielu pętli wskazuje na część wspólną. Pompa musi obsłużyć sumę przepływów, a jej wysokość podnoszenia ma pokonać drogę krytyczną wraz z armaturą wspólną.";
      } else if (otherLoopsWork) {
        pumpNote.innerHTML = "<strong>Wniosek ze schematu:</strong> skoro inne pętle pracują poprawnie, problem jest prawdopodobnie lokalny. Najpierw sprawdź armaturę i płukanie badanej pętli, następnie jej Δp przy wymaganym przepływie.";
      } else {
        pumpNote.innerHTML = "<strong>Jak czytać schemat:</strong> przepływy pętli się sumują, lecz ich spadków ciśnienia nie dodaje się do siebie. Porównanie obwodów pokaże, czy problem jest lokalny, czy wspólny.";
      }
    }

    var inputs = [
      stageInput, pipeInput, lengthInput, flowInput, designFlowInput,
      supplyInput, returnInput, otherLoopsInput, valvesCheckedInput,
      flushedInput, allWeakInput
    ];
    inputs.forEach(function (input) {
      input.addEventListener("input", rkLoopdiagCalculate);
      input.addEventListener("change", rkLoopdiagCalculate);
    });
    form.addEventListener("submit", function (event) {
      event.preventDefault();
      rkLoopdiagCalculate();
    });
    resetButton.addEventListener("click", function () {
      stageInput.value = "working";
      pipeInput.value = "16";
      lengthInput.value = "112";
      flowInput.value = "0.6";
      designFlowInput.value = "1.5";
      supplyInput.value = "35";
      returnInput.value = "25";
      otherLoopsInput.checked = true;
      valvesCheckedInput.checked = false;
      flushedInput.checked = false;
      allWeakInput.checked = false;
      rkLoopdiagCalculate();
    });

    root.querySelectorAll('.rk-loopdiag-nav a[href^="#rk-loopdiag-"]').forEach(function (link) {
      link.addEventListener("click", function (event) {
        var target = document.querySelector(link.getAttribute("href"));
        if (!target) {
          return;
        }
        event.preventDefault();
        var behavior = "smooth";
        if (window.matchMedia) {
          if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
            behavior = "auto";
          }
        }
        target.scrollIntoView({behavior: behavior, block: "start"});
      });
    });

    var progress = document.getElementById("rk-loopdiag-progress");
    function rkLoopdiagUpdateProgress() {
      if (!progress) {
        return;
      }
      var rect = root.getBoundingClientRect();
      var viewport = window.innerHeight || document.documentElement.clientHeight;
      var total = root.offsetHeight - viewport;
      var passed = -rect.top;
      var percentValue = 0;
      if (total > 0) {
        percentValue = Math.max(0, Math.min(100, passed / total * 100));
      }
      progress.style.width = percentValue.toFixed(1) + "%";
    }
    window.addEventListener("scroll", rkLoopdiagUpdateProgress, {passive: true});
    window.addEventListener("resize", rkLoopdiagUpdateProgress);

    root.setAttribute("data-rk-loopdiag-ready", "true");
    rkLoopdiagCalculate();
    rkLoopdiagUpdateProgress();
    return true;
  }

  function rkLoopdiagBoot() {
    rkLoopdiagInit();
  }

  rkLoopdiagBoot();
  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", rkLoopdiagBoot, {once: true});
  }
  window.addEventListener("load", rkLoopdiagBoot, {once: true});
  window.setTimeout(rkLoopdiagBoot, 180);
  window.setTimeout(rkLoopdiagBoot, 700);
  window.setTimeout(rkLoopdiagBoot, 1600);

  if (window.MutationObserver) {
    var observerTarget = document.body || document.documentElement;
    if (observerTarget) {
      var observer = new MutationObserver(function () {
        if (rkLoopdiagInit()) {
          observer.disconnect();
        }
      });
      observer.observe(observerTarget, {childList: true, subtree: true});
      window.setTimeout(function () {
        observer.disconnect();
      }, 5000);
    }
  }
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">Za długa pętla podłogówki.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Jak zaplanować rozmieszczenie pętli grzewczych w ogrzewaniu podłogowym?</title>
		<link>https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Wed, 04 Dec 2024 17:37:44 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Komfort cieplny]]></category>
		<category><![CDATA[Modernizacja budynków]]></category>
		<category><![CDATA[Montaż ogrzewania]]></category>
		<category><![CDATA[Nowoczesne systemy grzewcze]]></category>
		<category><![CDATA[Nowoczesne technologie grzewcze]]></category>
		<category><![CDATA[Ogrzewanie domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Planowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projekty ogrzewania]]></category>
		<category><![CDATA[Systemy ogrzewania]]></category>
		<category><![CDATA[Technologie grzewcze]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[instalacja hydrauliczna]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[koszty ogrzewania]]></category>
		<category><![CDATA[nowoczesne technologie]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pętle grzewcze]]></category>
		<category><![CDATA[planowanie instalacji]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[strefy brzegowe]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=1610</guid>

					<description><![CDATA[<p>Planowanie pętli grzewczych w ogrzewaniu podłogowym to kluczowy etap, który wpływa na komfort cieplny i efektywność energetyczną budynku. W artykule omawiamy, jak krok po kroku rozplanować pętle grzewcze, aby zapewnić równomierne rozprowadzenie ciepła, uniknąć błędów montażowych oraz zoptymalizować koszty eksploatacji. Dowiedz się, jak długość pętli, rozstaw rur oraz strefy brzegowe wpływają na działanie systemu, a także jak skorzystać z darmowego projektu ogrzewania dostępnego online.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">Jak zaplanować rozmieszczenie pętli grzewczych w ogrzewaniu podłogowym?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-loop-guide {
    --rk-dark: #102536;
    --rk-navy: #14384d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e9fbff;
    --rk-orange: #ff6d38;
    --rk-red: #df4537;
    --rk-yellow: #f2bd42;
    --rk-yellow-soft: #fff8df;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-purple: #6d5bd0;
    --rk-ink: #1f2937;
    --rk-text: #475968;
    --rk-muted: #6c7e8a;
    --rk-line: #d6e5ec;
    --rk-soft: #f4f9fb;
    --rk-warm: #fff3ec;
    --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.76;
  }

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

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

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

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

  #rk-loop-guide p,
  #rk-loop-guide ul,
  #rk-loop-guide ol {
    margin-top: 0;
    margin-bottom: 1.15em;
  }

  #rk-loop-guide h2,
  #rk-loop-guide h3,
  #rk-loop-guide h4 {
    margin-top: 0;
    color: var(--rk-dark);
    font-weight: 950;
    letter-spacing: -0.035em;
  }

  #rk-loop-guide h2 {
    margin-bottom: 18px;
    font-size: clamp(1.8rem, 4vw, 2.75rem);
    line-height: 1.08;
  }

  #rk-loop-guide h3 {
    margin-bottom: 10px;
    font-size: clamp(1.08rem, 2.2vw, 1.36rem);
    line-height: 1.22;
  }

  #rk-loop-guide .rk-loop-shell {
    position: relative;
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 32px;
    background: var(--rk-white);
    box-shadow: 0 28px 70px rgba(16, 37, 54, 0.11);
  }

  #rk-loop-guide .rk-loop-progress-track {
    position: sticky;
    z-index: 60;
    top: 0;
    height: 5px;
    background: rgba(214, 229, 236, 0.8);
  }

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

  #rk-loop-guide .rk-loop-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(38px, 7vw, 74px);
    color: var(--rk-white);
    background:
      radial-gradient(circle at 89% 21%, rgba(255, 109, 56, 0.36), transparent 29%),
      radial-gradient(circle at 76% 90%, rgba(37, 199, 216, 0.22), transparent 34%),
      linear-gradient(126deg, #0f2233, #143d53 74%, #2b3743);
  }

  #rk-loop-guide .rk-loop-hero::after {
    content: "";
    position: absolute;
    right: -80px;
    bottom: -90px;
    width: 360px;
    height: 360px;
    border: 42px solid rgba(255, 255, 255, 0.045);
    border-radius: 50%;
  }

  #rk-loop-guide .rk-loop-hero-grid {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: center;
  }

  #rk-loop-guide .rk-loop-eyebrow,
  #rk-loop-guide .rk-loop-kicker {
    display: inline-flex;
    gap: 9px;
    align-items: center;
    margin-bottom: 17px;
    color: var(--rk-orange);
    font-size: 0.72rem;
    font-weight: 950;
    letter-spacing: 0.09em;
    line-height: 1.35;
    text-transform: uppercase;
  }

  #rk-loop-guide .rk-loop-eyebrow {
    padding: 9px 14px;
    border: 1px solid rgba(255, 255, 255, 0.24);
    border-radius: 999px;
    color: #dffbff;
    background: rgba(255, 255, 255, 0.055);
  }

  #rk-loop-guide .rk-loop-eyebrow b {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 7px rgba(255, 109, 56, 0.16);
  }

  #rk-loop-guide .rk-loop-hero-title {
    max-width: 790px;
    margin-bottom: 22px;
    color: var(--rk-white);
    font-size: clamp(2.15rem, 5.2vw, 4.35rem);
    font-weight: 980;
    letter-spacing: -0.058em;
    line-height: 0.99;
  }

  #rk-loop-guide .rk-loop-hero-lead {
    max-width: 800px;
    margin-bottom: 25px;
    color: #d7e8ef;
    font-size: clamp(1rem, 2vw, 1.22rem);
    line-height: 1.7;
  }

  #rk-loop-guide .rk-loop-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 11px 24px;
    color: #c7dbe4;
    font-size: 0.72rem;
    font-weight: 800;
  }

  #rk-loop-guide .rk-loop-meta span {
    display: inline-flex;
    gap: 8px;
    align-items: center;
  }

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

  #rk-loop-guide .rk-loop-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    padding: 17px clamp(22px, 5vw, 58px);
    border-bottom: 1px solid var(--rk-line);
    background: var(--rk-white);
  }

  #rk-loop-guide .rk-loop-nav a {
    padding: 8px 13px;
    border: 1px solid #c9dfe7;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-soft);
    font-size: 0.69rem;
    font-weight: 900;
    line-height: 1.35;
    text-decoration: none;
  }

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

  #rk-loop-guide .rk-loop-body {
    padding: clamp(30px, 6vw, 68px);
  }

  #rk-loop-guide .rk-loop-section {
    scroll-margin-top: 30px;
    margin-bottom: clamp(58px, 9vw, 100px);
  }

  #rk-loop-guide .rk-loop-lead {
    max-width: 930px;
    color: var(--rk-text);
    font-size: clamp(1.02rem, 2vw, 1.2rem);
    line-height: 1.82;
  }

  #rk-loop-guide .rk-loop-dropcap::first-letter {
    float: left;
    margin: 10px 10px 0 0;
    color: var(--rk-orange);
    font-size: 4.4rem;
    font-weight: 950;
    line-height: 0.75;
  }

  #rk-loop-guide .rk-loop-answer {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(260px, 0.75fr);
    gap: 0;
    overflow: hidden;
    margin-top: 26px;
    border: 1px solid var(--rk-line);
    border-radius: 24px;
  }

  #rk-loop-guide .rk-loop-answer-main,
  #rk-loop-guide .rk-loop-answer-side {
    padding: clamp(25px, 4vw, 38px);
  }

  #rk-loop-guide .rk-loop-answer-main {
    background: var(--rk-soft);
  }

  #rk-loop-guide .rk-loop-answer-side {
    color: #4f4637;
    border-left: 1px solid #f1d993;
    background: var(--rk-yellow-soft);
  }

  #rk-loop-guide .rk-loop-answer p:last-child,
  #rk-loop-guide .rk-loop-card p:last-child,
  #rk-loop-guide .rk-loop-callout p:last-child {
    margin-bottom: 0;
  }

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

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

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

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

  #rk-loop-guide .rk-loop-card {
    min-width: 0;
    padding: 25px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-white);
    box-shadow: 0 10px 28px rgba(16, 37, 54, 0.055);
  }

  #rk-loop-guide .rk-loop-card-number {
    display: inline-flex;
    min-width: 44px;
    height: 44px;
    align-items: center;
    justify-content: center;
    margin-bottom: 17px;
    padding: 0 10px;
    border-radius: 13px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-blue), var(--rk-cyan));
    font-size: 0.72rem;
    font-weight: 950;
  }

  #rk-loop-guide .rk-loop-callout {
    margin-top: 24px;
    padding: 24px 27px;
    border-left: 6px solid var(--rk-cyan);
    border-radius: 0 18px 18px 0;
    background: var(--rk-cyan-soft);
  }

  #rk-loop-guide .rk-loop-callout.is-warning {
    border-left-color: var(--rk-orange);
    background: var(--rk-warm);
  }

  #rk-loop-guide .rk-loop-table-wrap {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-white);
  }

  #rk-loop-guide table {
    width: 100%;
    margin: 0;
    border-collapse: collapse;
    table-layout: fixed;
  }

  #rk-loop-guide th,
  #rk-loop-guide td {
    padding: 17px 15px;
    border: 0;
    border-bottom: 1px solid var(--rk-line);
    vertical-align: top;
    text-align: left;
    overflow-wrap: anywhere;
  }

  #rk-loop-guide th {
    color: var(--rk-white);
    background: var(--rk-dark);
    font-size: 0.7rem;
    font-weight: 900;
    letter-spacing: 0.02em;
    line-height: 1.4;
  }

  #rk-loop-guide td {
    color: var(--rk-text);
    font-size: 0.83rem;
    line-height: 1.6;
  }

  #rk-loop-guide tr:last-child td {
    border-bottom: 0;
  }

  #rk-loop-guide tbody tr:nth-child(even) td {
    background: var(--rk-soft);
  }

  #rk-loop-guide .rk-loop-audit {
    overflow: hidden;
    border: 1px solid #bcdde8;
    border-radius: 28px;
    background: var(--rk-white);
    box-shadow: 0 20px 48px rgba(16, 37, 54, 0.09);
  }

  #rk-loop-guide .rk-loop-audit-head {
    padding: clamp(28px, 5vw, 48px);
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 15%, rgba(255, 109, 56, 0.35), transparent 29%),
      linear-gradient(125deg, var(--rk-dark), #164a62);
  }

  #rk-loop-guide .rk-loop-audit-head h2,
  #rk-loop-guide .rk-loop-audit-head p {
    color: var(--rk-white);
  }

  #rk-loop-guide .rk-loop-audit-head p {
    max-width: 900px;
    margin-bottom: 0;
    color: #d8eaf1;
  }

  #rk-loop-guide .rk-loop-audit-layout {
    display: grid;
    grid-template-columns: minmax(300px, 0.8fr) minmax(0, 1.2fr);
  }

  #rk-loop-guide .rk-loop-audit-form {
    padding: clamp(25px, 4vw, 38px);
    border-right: 1px solid var(--rk-line);
    background: var(--rk-soft);
  }

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

  #rk-loop-guide .rk-loop-field {
    min-width: 0;
  }

  #rk-loop-guide .rk-loop-field.is-full {
    grid-column: 1 / -1;
  }

  #rk-loop-guide .rk-loop-field label {
    display: block;
    min-height: 2.6em;
    margin-bottom: 6px;
    color: var(--rk-dark);
    font-size: 0.7rem;
    font-weight: 900;
    line-height: 1.3;
  }

  #rk-loop-guide .rk-loop-field input,
  #rk-loop-guide .rk-loop-field select {
    width: 100%;
    min-height: 48px;
    padding: 10px 12px;
    border: 1px solid #bdd4de;
    border-radius: 12px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: 0.82rem;
    font-weight: 760;
    outline: none;
  }

  #rk-loop-guide .rk-loop-field input:focus,
  #rk-loop-guide .rk-loop-field select:focus {
    border-color: var(--rk-blue);
    box-shadow: 0 0 0 4px rgba(7, 143, 190, 0.12);
  }

  #rk-loop-guide .rk-loop-checks {
    display: grid;
    gap: 10px;
    margin-top: 18px;
  }

  #rk-loop-guide .rk-loop-check {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 11px;
    align-items: start;
    padding: 12px;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    background: var(--rk-white);
    cursor: pointer;
  }

  #rk-loop-guide .rk-loop-check input {
    width: 20px;
    height: 20px;
    margin-top: 2px;
    accent-color: var(--rk-blue);
  }

  #rk-loop-guide .rk-loop-check span {
    color: var(--rk-text);
    font-size: 0.75rem;
    font-weight: 760;
    line-height: 1.45;
  }

  #rk-loop-guide .rk-loop-audit-reset {
    width: 100%;
    min-height: 48px;
    margin-top: 17px;
    padding: 11px 16px;
    border: 1px solid #bdd4de;
    border-radius: 12px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-weight: 900;
    cursor: pointer;
  }

  #rk-loop-guide .rk-loop-audit-reset:hover,
  #rk-loop-guide .rk-loop-audit-reset:focus-visible {
    color: var(--rk-white);
    border-color: var(--rk-blue);
    background: var(--rk-blue);
  }

  #rk-loop-guide .rk-loop-audit-output {
    min-width: 0;
    padding: clamp(25px, 4vw, 42px);
  }

  #rk-loop-guide .rk-loop-metrics {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 20px;
  }

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

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

  #rk-loop-guide .rk-loop-metric small {
    display: block;
    min-height: 2.7em;
    color: var(--rk-muted);
    font-size: 0.65rem;
    font-weight: 850;
    line-height: 1.35;
  }

  #rk-loop-guide .rk-loop-metric strong {
    display: block;
    margin-top: 6px;
    color: var(--rk-dark);
    font-size: clamp(1.15rem, 2.6vw, 1.75rem);
    font-weight: 950;
    line-height: 1.15;
  }

  #rk-loop-guide .rk-loop-audit-status {
    margin-bottom: 20px;
    padding: 18px 20px;
    border-left: 6px solid var(--rk-green);
    border-radius: 0 15px 15px 0;
    background: var(--rk-green-soft);
  }

  #rk-loop-guide .rk-loop-audit-status.is-warning {
    border-left-color: var(--rk-yellow);
    background: var(--rk-yellow-soft);
  }

  #rk-loop-guide .rk-loop-audit-status.is-danger {
    border-left-color: var(--rk-red);
    background: #fff0ef;
  }

  #rk-loop-guide .rk-loop-audit-status strong,
  #rk-loop-guide .rk-loop-audit-status span {
    display: block;
  }

  #rk-loop-guide .rk-loop-audit-status span {
    margin-top: 4px;
    color: var(--rk-text);
    font-size: 0.77rem;
    line-height: 1.55;
  }

  #rk-loop-guide .rk-loop-audit-plan {
    overflow: hidden;
    margin-bottom: 20px;
    padding: 14px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-soft);
  }

  #rk-loop-guide .rk-loop-audit-plan svg {
    display: block;
    width: 100%;
    height: auto;
  }

  #rk-loop-guide .rk-loop-audit-list {
    display: grid;
    gap: 10px;
    margin: 0;
    padding: 0;
    list-style: none;
  }

  #rk-loop-guide .rk-loop-audit-list li {
    position: relative;
    margin: 0;
    padding: 12px 14px 12px 43px;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    color: var(--rk-text);
    background: var(--rk-white);
    font-size: 0.77rem;
    line-height: 1.5;
  }

  #rk-loop-guide .rk-loop-audit-list li::before {
    content: "!";
    position: absolute;
    top: 12px;
    left: 13px;
    display: inline-flex;
    width: 21px;
    height: 21px;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: 0.66rem;
    font-weight: 950;
  }

  #rk-loop-guide .rk-loop-tool-note {
    padding: 18px clamp(25px, 4vw, 42px);
    border-top: 1px solid var(--rk-line);
    color: var(--rk-muted);
    background: #fbfdfe;
    font-size: 0.69rem;
    line-height: 1.55;
  }

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

  #rk-loop-guide .rk-loop-formula {
    min-width: 0;
    padding: 25px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: linear-gradient(145deg, var(--rk-white), var(--rk-cyan-soft));
  }

  #rk-loop-guide .rk-loop-formula span {
    display: block;
    margin-bottom: 10px;
    color: var(--rk-blue);
    font-size: 0.68rem;
    font-weight: 950;
    letter-spacing: 0.06em;
    text-transform: uppercase;
  }

  #rk-loop-guide .rk-loop-formula strong {
    display: block;
    overflow-wrap: anywhere;
    color: var(--rk-dark);
    font-size: clamp(1.18rem, 2.6vw, 1.7rem);
    line-height: 1.35;
  }

  #rk-loop-guide .rk-loop-formula p {
    margin: 12px 0 0;
    color: var(--rk-text);
    font-size: 0.76rem;
    line-height: 1.6;
  }

  #rk-loop-guide .rk-loop-inline-cta,
  #rk-loop-guide .rk-loop-final-cta {
    overflow: hidden;
    border-radius: 27px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 16%, rgba(255, 109, 56, 0.39), transparent 28%),
      linear-gradient(125deg, var(--rk-dark), #17475e);
  }

  #rk-loop-guide .rk-loop-inline-cta {
    margin-top: 25px;
    padding: clamp(28px, 5vw, 48px);
  }

  #rk-loop-guide .rk-loop-final-cta {
    margin-top: clamp(55px, 8vw, 88px);
    padding: clamp(31px, 5vw, 55px);
  }

  #rk-loop-guide .rk-loop-inline-cta h3,
  #rk-loop-guide .rk-loop-final-cta h2 {
    max-width: 880px;
    color: var(--rk-white);
  }

  #rk-loop-guide .rk-loop-inline-cta p,
  #rk-loop-guide .rk-loop-final-cta p {
    max-width: 920px;
    color: #d7e9f1;
  }

  #rk-loop-guide .rk-loop-cta-button {
    display: inline-flex;
    min-height: 54px;
    align-items: center;
    justify-content: center;
    margin-top: 8px;
    padding: 13px 23px;
    border-radius: 14px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-orange), #ef4937);
    box-shadow: 0 14px 30px rgba(239, 73, 55, 0.25);
    font-weight: 950;
    line-height: 1.35;
    text-align: center;
    text-decoration: none;
  }

  #rk-loop-guide .rk-loop-cta-button:hover,
  #rk-loop-guide .rk-loop-cta-button:focus-visible {
    color: var(--rk-white);
    transform: translateY(-2px);
    box-shadow: 0 18px 36px rgba(239, 73, 55, 0.32);
  }

  #rk-loop-guide .rk-loop-disclosure {
    display: block;
    margin-top: 12px;
    color: #b9d0db;
    font-size: 0.65rem;
    line-height: 1.5;
  }

  #rk-loop-guide .rk-loop-steps {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    counter-reset: joint-step;
  }

  #rk-loop-guide .rk-loop-step {
    position: relative;
    min-width: 0;
    padding: 25px 25px 25px 78px;
    border: 1px solid var(--rk-line);
    border-radius: 19px;
    background: var(--rk-white);
  }

  #rk-loop-guide .rk-loop-step::before {
    counter-increment: joint-step;
    content: counter(joint-step, decimal-leading-zero);
    position: absolute;
    top: 24px;
    left: 22px;
    display: inline-flex;
    width: 42px;
    height: 42px;
    align-items: center;
    justify-content: center;
    border-radius: 13px;
    color: var(--rk-white);
    background: var(--rk-dark);
    font-size: 0.68rem;
    font-weight: 950;
  }

  #rk-loop-guide .rk-loop-step p {
    margin-bottom: 0;
    color: var(--rk-text);
  }

  #rk-loop-guide .rk-loop-error {
    position: relative;
    padding: 26px;
    border: 1px solid #f0cbc5;
    border-radius: 20px;
    background: #fff9f8;
  }

  #rk-loop-guide .rk-loop-error b {
    display: inline-block;
    margin-bottom: 11px;
    color: var(--rk-red);
    font-size: 0.68rem;
    letter-spacing: 0.08em;
  }

  #rk-loop-guide .rk-loop-checklist {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 13px;
    margin: 22px 0 0;
    padding: 0;
    list-style: none;
  }

  #rk-loop-guide .rk-loop-checklist li {
    position: relative;
    margin: 0;
    padding: 17px 17px 17px 51px;
    border: 1px solid var(--rk-line);
    border-radius: 15px;
    color: var(--rk-text);
    background: var(--rk-soft);
  }

  #rk-loop-guide .rk-loop-checklist li::before {
    content: "✓";
    position: absolute;
    top: 17px;
    left: 17px;
    display: inline-flex;
    width: 23px;
    height: 23px;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-green);
    font-size: 0.69rem;
    font-weight: 950;
  }

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

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

  #rk-loop-guide .rk-loop-faq summary {
    position: relative;
    padding: 19px 55px 19px 20px;
    color: var(--rk-dark);
    font-weight: 900;
    line-height: 1.45;
    cursor: pointer;
    list-style: none;
  }

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

  #rk-loop-guide .rk-loop-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: 50%;
    color: var(--rk-white);
    background: var(--rk-blue);
    transform: translateY(-50%);
  }

  #rk-loop-guide .rk-loop-faq details[open] summary::after {
    content: "−";
  }

  #rk-loop-guide .rk-loop-faq-answer {
    padding: 0 20px 20px;
    color: var(--rk-text);
  }

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

  #rk-loop-guide .rk-loop-sources {
    padding: 24px 27px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    color: var(--rk-text);
    background: var(--rk-soft);
    font-size: 0.76rem;
    line-height: 1.65;
  }

  #rk-loop-guide .rk-loop-sources strong {
    display: block;
    margin-bottom: 8px;
    color: var(--rk-dark);
  }

  #rk-loop-guide .rk-loop-author {
    position: relative;
    overflow: hidden;
    margin-top: clamp(55px, 8vw, 88px);
    border: 1px solid var(--rk-line);
    border-radius: 27px;
    background: var(--rk-white);
    box-shadow: 0 20px 50px rgba(16, 37, 54, 0.09);
  }

  #rk-loop-guide .rk-loop-author > input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
  }

  #rk-loop-guide .rk-loop-author-head {
    display: flex;
    gap: 20px;
    align-items: center;
    justify-content: space-between;
    padding: clamp(27px, 5vw, 44px);
    color: var(--rk-white);
    border-bottom: 5px solid var(--rk-cyan);
    background: var(--rk-dark);
  }

  #rk-loop-guide .rk-loop-author-head h2,
  #rk-loop-guide .rk-loop-author-head p {
    color: var(--rk-white);
  }

  #rk-loop-guide .rk-loop-author-head h2 {
    margin-bottom: 5px;
  }

  #rk-loop-guide .rk-loop-author-head p {
    margin-bottom: 0;
    color: #d7e9f1;
  }

  #rk-loop-guide .rk-loop-author-mark {
    flex: 0 0 auto;
    padding: 12px 17px;
    border: 1px solid rgba(37, 199, 216, 0.4);
    border-radius: 15px;
    color: #79f1ff;
    font-size: 0.72rem;
    font-weight: 950;
    letter-spacing: 0.08em;
  }

  #rk-loop-guide .rk-loop-author-layout {
    display: grid;
    grid-template-columns: minmax(270px, 0.64fr) minmax(0, 1.36fr);
  }

  #rk-loop-guide .rk-loop-author-side {
    padding: clamp(30px, 5vw, 48px);
    border-right: 1px solid var(--rk-line);
    background: var(--rk-soft);
    text-align: center;
  }

  #rk-loop-guide .rk-loop-author-photo {
    width: min(205px, 74%);
    margin: 0 auto 22px;
    overflow: hidden;
    border: 8px solid var(--rk-white);
    border-radius: 50%;
    box-shadow: 0 16px 36px rgba(16, 37, 54, 0.14);
    aspect-ratio: 1;
  }

  #rk-loop-guide .rk-loop-author-photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

  #rk-loop-guide .rk-loop-author-name {
    margin-bottom: 7px;
    color: var(--rk-dark);
    font-size: 1.5rem;
    font-weight: 950;
    letter-spacing: -0.04em;
    line-height: 1.1;
  }

  #rk-loop-guide .rk-loop-author-role {
    color: var(--rk-blue);
    font-size: 0.7rem;
    font-weight: 950;
    letter-spacing: 0.07em;
    line-height: 1.55;
    text-transform: uppercase;
  }

  #rk-loop-guide .rk-loop-author-main {
    padding: clamp(30px, 5vw, 48px);
  }

  #rk-loop-guide .rk-loop-author-quote {
    position: relative;
    margin: 0 0 24px;
    padding: 24px 24px 24px 68px;
    border: 0;
    border-radius: 18px;
    background: var(--rk-cyan-soft);
  }

  #rk-loop-guide .rk-loop-author-quote::before {
    content: "“";
    position: absolute;
    top: 3px;
    left: 20px;
    color: var(--rk-cyan);
    font-size: 4rem;
    font-weight: 950;
    line-height: 1;
  }

  #rk-loop-guide .rk-loop-author-quote p {
    margin-bottom: 0;
    color: var(--rk-dark);
    font-size: 1.01rem;
    font-style: italic;
    font-weight: 800;
    line-height: 1.75;
  }

  #rk-loop-guide .rk-loop-author-tabs {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 15px 15px 0 0;
  }

  #rk-loop-guide .rk-loop-author-tab {
    padding: 14px 10px;
    color: var(--rk-muted);
    background: var(--rk-soft);
    font-size: 0.7rem;
    font-weight: 900;
    line-height: 1.35;
    text-align: center;
    text-transform: uppercase;
    cursor: pointer;
  }

  #rk-loop-guide .rk-loop-author-tab + .rk-loop-author-tab {
    border-left: 1px solid var(--rk-line);
  }

  #rk-loop-guide .rk-loop-author-panel {
    display: none;
    min-height: 176px;
    padding: 25px;
    border: 1px solid var(--rk-line);
    border-top: 0;
    border-radius: 0 0 15px 15px;
  }

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

  #rk-loop-author-about:checked ~ .rk-loop-author-layout .rk-loop-author-panel-about,
  #rk-loop-author-exp:checked ~ .rk-loop-author-layout .rk-loop-author-panel-exp,
  #rk-loop-author-sites:checked ~ .rk-loop-author-layout .rk-loop-author-panel-sites {
    display: block;
  }

  #rk-loop-author-about:checked ~ .rk-loop-author-layout label[for="rk-loop-author-about"],
  #rk-loop-author-exp:checked ~ .rk-loop-author-layout label[for="rk-loop-author-exp"],
  #rk-loop-author-sites:checked ~ .rk-loop-author-layout label[for="rk-loop-author-sites"] {
    color: var(--rk-blue);
    background: var(--rk-white);
    box-shadow: inset 0 -5px 0 var(--rk-blue);
  }

  #rk-loop-guide .rk-loop-site-links {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 14px;
  }

  #rk-loop-guide .rk-loop-site-links a {
    padding: 8px 13px;
    border: 1px solid #c6dbe4;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: 0.74rem;
    font-weight: 900;
    text-decoration: none;
  }

  #rk-loop-guide .rk-loop-site-links a:hover,
  #rk-loop-guide .rk-loop-site-links a:focus-visible {
    color: var(--rk-white);
    border-color: var(--rk-blue);
    background: var(--rk-blue);
  }

  @media (max-width: 980px) {
    #rk-loop-guide .rk-loop-hero-grid,
    #rk-loop-guide .rk-loop-answer,
    #rk-loop-guide .rk-loop-audit-layout,
    #rk-loop-guide .rk-loop-author-layout {
      grid-template-columns: 1fr;
    }

    #rk-loop-guide .rk-loop-answer-side,
    #rk-loop-guide .rk-loop-audit-form,
    #rk-loop-guide .rk-loop-author-side {
      border-right: 0;
      border-left: 0;
      border-bottom: 1px solid var(--rk-line);
    }

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

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

  @media (max-width: 720px) {
    #rk-loop-guide {
      margin-top: 20px;
      font-size: 16px;
    }

    #rk-loop-guide .rk-loop-shell {
      border-radius: 20px;
    }

    #rk-loop-guide .rk-loop-hero,
    #rk-loop-guide .rk-loop-body {
      padding-right: 21px;
      padding-left: 21px;
    }

    #rk-loop-guide .rk-loop-nav {
      width: auto;
      margin: 18px 20px 0;
      padding: 20px;
      gap: 10px;
      border: 1px solid var(--rk-line);
      border-radius: 20px;
      background: var(--rk-soft);
    }

    #rk-loop-guide .rk-loop-nav::before {
      content: "NA SKRÓTY";
      flex: 0 0 100%;
      margin-bottom: 4px;
      color: var(--rk-dark);
      font-size: 0.75rem;
      font-weight: 900;
      letter-spacing: 0.08em;
      line-height: 1.3;
    }

    #rk-loop-guide .rk-loop-grid-2,
    #rk-loop-guide .rk-loop-grid-3,
    #rk-loop-guide .rk-loop-grid-4,
    #rk-loop-guide .rk-loop-steps,
    #rk-loop-guide .rk-loop-checklist,
    #rk-loop-guide .rk-loop-metrics {
      grid-template-columns: 1fr;
    }

    #rk-loop-guide .rk-loop-formulas {
      grid-template-columns: 1fr;
    }

    #rk-loop-guide .rk-loop-fields {
      grid-template-columns: 1fr;
    }

    #rk-loop-guide .rk-loop-field.is-full {
      grid-column: auto;
    }

    #rk-loop-guide .rk-loop-field label,
    #rk-loop-guide .rk-loop-metric small {
      min-height: 0;
    }

    #rk-loop-guide .rk-loop-step {
      padding: 76px 22px 23px;
    }

    #rk-loop-guide .rk-loop-step::before {
      top: 20px;
      left: 21px;
    }

    #rk-loop-guide .rk-loop-author-head {
      align-items: flex-start;
      flex-direction: column;
    }

    #rk-loop-guide .rk-loop-author-main {
      padding-right: 20px;
      padding-left: 20px;
    }

    #rk-loop-guide .rk-loop-author-quote {
      padding: 58px 20px 21px;
    }

    #rk-loop-guide .rk-loop-author-quote::before {
      top: 0;
      left: 18px;
    }

    #rk-loop-guide .rk-loop-author-tabs {
      grid-template-columns: 1fr;
      border-radius: 15px 15px 0 0;
    }

    #rk-loop-guide .rk-loop-author-tab + .rk-loop-author-tab {
      border-top: 1px solid var(--rk-line);
      border-left: 0;
    }

    #rk-loop-guide .rk-loop-table-wrap {
      overflow: visible;
      border: 0;
      background: transparent;
    }

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

    #rk-loop-guide thead {
      position: absolute;
      width: 1px;
      height: 1px;
      overflow: hidden;
      clip: rect(0 0 0 0);
      white-space: nowrap;
    }

    #rk-loop-guide tbody {
      display: grid;
      gap: 13px;
    }

    #rk-loop-guide tbody tr {
      overflow: hidden;
      border: 1px solid var(--rk-line);
      border-radius: 16px;
      background: var(--rk-white);
      box-shadow: 0 8px 22px rgba(16, 37, 54, 0.05);
    }

    #rk-loop-guide td,
    #rk-loop-guide tbody tr:nth-child(even) td {
      display: grid;
      grid-template-columns: minmax(110px, 0.8fr) minmax(0, 1.2fr);
      gap: 12px;
      align-items: start;
      padding: 13px 15px;
      border-bottom: 1px solid var(--rk-line);
      background: var(--rk-white);
    }

    #rk-loop-guide td:last-child {
      border-bottom: 0;
    }

    #rk-loop-guide td::before {
      content: attr(data-label);
      color: var(--rk-dark);
      font-size: 0.69rem;
      font-weight: 900;
      line-height: 1.45;
    }
  }

  @media (max-width: 470px) {
    #rk-loop-guide .rk-loop-hero-title {
      font-size: 2.1rem;
    }

    #rk-loop-guide td,
    #rk-loop-guide tbody tr:nth-child(even) td {
      grid-template-columns: 1fr;
      gap: 4px;
    }
  }

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

<article id="rk-loop-guide" data-rk-loop-version="2026-08-26" aria-label="Jak zaplanować rozmieszczenie pętli grzewczych w ogrzewaniu podłogowym">
  <div class="rk-loop-shell">
    <div class="rk-loop-progress-track" aria-hidden="true"><div class="rk-loop-progress"></div></div>

    <header class="rk-loop-hero">
      <div class="rk-loop-hero-grid">
        <div>
          <span class="rk-loop-eyebrow"><b aria-hidden="true"></b> Projektowanie pętli • obliczenia i hydraulika</span>
          <div class="rk-loop-hero-title" role="heading" aria-level="2">Jak zaplanować rozmieszczenie pętli grzewczych w ogrzewaniu podłogowym?</div>
          <p class="rk-loop-hero-lead">Od obciążenia cieplnego i powierzchni ogrzewanej, przez rozstaw rur oraz długość dobiegów, aż po liczbę obwodów, przepływy, opory hydrauliczne i czytelny rzut wykonawczy.</p>
          <div class="rk-loop-meta">
            <span><i aria-hidden="true"></i> Autor: Robert Kucharski</span>
            <span><i aria-hidden="true"></i> Aktualizacja: 26 sierpnia 2026 r.</span>
            <span><i aria-hidden="true"></i> ISO 11855-3 • ISO 11855-5</span>
          </div>
        </div>

      </div>
    </header>

    <nav class="rk-loop-nav" aria-label="Spis treści artykułu">
      <a href="#rk-loop-answer">Szybka odpowiedź</a>
      <a href="#rk-loop-inputs">Dane wejściowe</a>
      <a href="#rk-loop-planner">Planer pętli</a>
      <a href="#rk-loop-spacing-guide">Rozstaw rur</a>
      <a href="#rk-loop-length">Długość i liczba</a>
      <a href="#rk-loop-patterns">Układ rur</a>
      <a href="#rk-loop-hydraulics">Hydraulika</a>
      <a href="#rk-loop-rooms">Pomieszczenia</a>
      <a href="#rk-loop-documentation">Dokumentacja</a>
      <a href="#rk-loop-errors">Błędy</a>
      <a href="#rk-loop-faq">FAQ</a>
      <a href="#rk-loop-author">Autor</a>
    </nav>

    <div class="rk-loop-body">
      <section class="rk-loop-section" id="rk-loop-answer">
        <span class="rk-loop-kicker">Najkrótsza poprawna odpowiedź</span>
        <h2>Od czego zacząć rozmieszczanie pętli ogrzewania podłogowego?</h2>
        <p class="rk-loop-lead rk-loop-dropcap"><strong>Jak zaplanować rozmieszczenie pętli grzewczych w ogrzewaniu podłogowym?</strong> Najpierw trzeba policzyć obciążenie cieplne każdego pomieszczenia i wyznaczyć rzeczywistą powierzchnię ogrzewaną. Dopiero później dobiera się temperaturę zasilania, rozstaw rur, liczbę obwodów, ich przebieg, długości, przepływy oraz nastawy rozdzielacza.</p>

        <div class="rk-loop-answer">
          <div class="rk-loop-answer-main">
            <h3>Pętla nie jest wzorem narysowanym na wolnym fragmencie podłogi</h3>
            <p>Ta sama powierzchnia może wymagać jednej, dwóch albo trzech pętli zależnie od rozstawu, odległości od rozdzielacza, mocy potrzebnej w pomieszczeniu i dopuszczalnego oporu hydraulicznego. Dwa salony o powierzchni 30 m² nie muszą mieć takiego samego układu.</p>
            <p>Projekt rozpoczyna się od bilansu cieplnego i warstw podłogi, a nie od przyjęcia „10 cm w łazience, 15 cm w salonie i 20 cm w sypialni”.</p>
          </div>
          <div class="rk-loop-answer-side">
            <h3>Najważniejsza zasada</h3>
            <p><strong>Każdy obwód musi jednocześnie pokryć przypisaną strefę i dać się prawidłowo zrównoważyć hydraulicznie.</strong> Sama liczba metrów rury nie mówi jeszcze, czy pętla otrzyma wymagany przepływ.</p>
          </div>
        </div>

        <div class="rk-loop-grid-4" style="margin-top:22px">
          <article class="rk-loop-card"><span class="rk-loop-card-number">01</span><h3>Moc pomieszczenia</h3><p>Strata ciepła wyznacza ilość energii, którą podłoga musi przekazać przy przyjętych temperaturach.</p></article>
          <article class="rk-loop-card"><span class="rk-loop-card-number">02</span><h3>Powierzchnia czynna</h3><p>Liczymy obszar rzeczywiście przeznaczony do grzania, z uwzględnieniem stałej zabudowy i technologii podłogi.</p></article>
          <article class="rk-loop-card"><span class="rk-loop-card-number">03</span><h3>Trasa i długość</h3><p>Do rury ułożonej w polu trzeba dodać oba dobiegi od rozdzielacza oraz zapas wynikający z geometrii.</p></article>
          <article class="rk-loop-card"><span class="rk-loop-card-number">04</span><h3>Przepływ i opór</h3><p>Każda pętla otrzymuje przepływ wynikający z jej mocy, a opór musi mieścić się w możliwościach układu pompowego.</p></article>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-inputs">
        <span class="rk-loop-kicker">Dane przed pierwszą kreską na rzucie</span>
        <h2>Jakie informacje są potrzebne do zaplanowania pętli?</h2>
        <p class="rk-loop-lead">Rozmieszczenie nie powinno być kopią rysunku z innego budynku. Nawet przy tej samej powierzchni zmieniają je izolacyjność przegród, przeszklenia, temperatura pomieszczenia, okładzina, źródło ciepła, położenie rozdzielacza i geometria jastrychu.</p>

        <div class="rk-loop-table-wrap">
          <table>
            <thead><tr><th>Dane wejściowe</th><th>Po co są potrzebne?</th><th>Co się dzieje, gdy ich zabraknie?</th></tr></thead>
            <tbody>
              <tr><td data-label="Dane"><strong>Obciążenie cieplne pomieszczenia [W]</strong></td><td data-label="Znaczenie">Wyznacza wymaganą moc podłogi i przepływ w obwodach</td><td data-label="Ryzyko">Rozstaw wybierany na podstawie zwyczaju zamiast zapotrzebowania</td></tr>
              <tr><td data-label="Dane"><strong>Powierzchnia ogrzewana [m²]</strong></td><td data-label="Znaczenie">Pozwala określić gęstość mocy oraz orientacyjną ilość rury</td><td data-label="Ryzyko">Liczenie po powierzchni brutto zawyża lub źle rozkłada pętle</td></tr>
              <tr><td data-label="Dane"><strong>Opór cieplny okładziny</strong></td><td data-label="Znaczenie">Wpływa na temperaturę powierzchni i moc oddawaną do pomieszczenia</td><td data-label="Ryzyko">Ten sam rozstaw przy płytce i grubej podłodze drewnianej daje inny efekt</td></tr>
              <tr><td data-label="Dane"><strong>Temperatura zasilania i powrotu</strong></td><td data-label="Znaczenie">Wyznacza średnią temperaturę wody, moc i wymagany przepływ</td><td data-label="Ryzyko">Nie da się ocenić współpracy z pompą ciepła ani kotłem</td></tr>
              <tr><td data-label="Dane"><strong>Położenie rozdzielacza</strong></td><td data-label="Znaczenie">Decyduje o długości dobiegów i zagęszczeniu rur w komunikacji</td><td data-label="Ryzyko">Pętla zaplanowana na 80 m po doliczeniu dojścia ma ponad 100 m</td></tr>
              <tr><td data-label="Dane"><strong>Dylatacje i geometria jastrychu</strong></td><td data-label="Znaczenie">Pozwalają przypisać obwody do niezależnie pracujących pól</td><td data-label="Ryzyko">Wielokrotne przecinanie szczelin rurami albo złącza w strefie ruchu</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-loop-callout is-warning">
          <p><strong>Powierzchnia pomieszczenia nie wystarcza.</strong> Salon 30 m² może mieć 24 m² czynnej podłogi, strefę przy dużym HS, dwa różne wykończenia i 14 m dobiegów na każdą pętlę. Bez tych informacji samo dzielenie metrów przez „maksymalną długość” daje pozornie dokładny, ale błędny wynik.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-planner">
        <div class="rk-loop-audit">
          <div class="rk-loop-audit-head">
            <span class="rk-loop-kicker" style="color:#79f1ff">Interaktywny planer pętli grzewczych</span>
            <h2>Oszacuj liczbę obwodów, długości i przepływy</h2>
            <p>Wprowadź parametry jednego pomieszczenia. Narzędzie pokaże wariant wstępny i dynamiczny podział powierzchni, ale nie rozrysuje rzeczywistego przebiegu rury ani nie zastąpi obliczeń oporów hydraulicznych.</p>
          </div>

          <div class="rk-loop-audit-layout">
            <form class="rk-loop-audit-form" id="rk-loop-planner-form" aria-label="Interaktywny planer pętli ogrzewania podłogowego">
              <div class="rk-loop-fields">
                <div class="rk-loop-field">
                  <label for="rk-loop-area">Powierzchnia ogrzewana</label>
                  <input id="rk-loop-area" type="number" min="2" max="120" step="0.5" value="24" inputmode="decimal">
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-load">Strata ciepła pomieszczenia</label>
                  <input id="rk-loop-load" type="number" min="100" max="12000" step="50" value="1440" inputmode="numeric">
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-spacing">Rozstaw rur</label>
                  <select id="rk-loop-spacing">
                    <option value="0.05">5 cm</option>
                    <option value="0.10">10 cm</option>
                    <option value="0.15" selected>15 cm</option>
                    <option value="0.20">20 cm</option>
                  </select>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-distance">Odległość od rozdzielacza</label>
                  <input id="rk-loop-distance" type="number" min="0" max="30" step="0.5" value="5" inputmode="decimal">
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-diameter">Rura</label>
                  <select id="rk-loop-diameter">
                    <option value="16" selected>16 × 2 mm</option>
                    <option value="17">17 × 2 mm</option>
                    <option value="20">20 × 2 mm</option>
                  </select>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-delta">Projektowe ΔT</label>
                  <select id="rk-loop-delta">
                    <option value="5">5 K</option>
                    <option value="6" selected>6 K</option>
                    <option value="7">7 K</option>
                  </select>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-target">Docelowa długość obwodu</label>
                  <select id="rk-loop-target">
                    <option value="70">70 m</option>
                    <option value="80" selected>80 m</option>
                    <option value="90">90 m</option>
                    <option value="100">100 m</option>
                  </select>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-shape">Kształt pomieszczenia</label>
                  <select id="rk-loop-shape">
                    <option value="rectangle" selected>Prostokąt</option>
                    <option value="lshape">Kształt L</option>
                    <option value="ushape">Kształt U</option>
                  </select>
                </div>
              </div>

              <div class="rk-loop-checks">
                <label class="rk-loop-check"><input id="rk-loop-edge" type="checkbox"><span>Pomieszczenie ma strefę brzegową przy dużym przeszkleniu lub ścianie zewnętrznej.</span></label>
                <label class="rk-loop-check"><input id="rk-loop-dilation" type="checkbox"><span>Przez pomieszczenie przebiega dylatacja albo granica pól jastrychu.</span></label>
                <label class="rk-loop-check"><input id="rk-loop-fixed" type="checkbox"><span>Występuje duża stała zabudowa ograniczająca powierzchnię czynną.</span></label>
              </div>

              <button class="rk-loop-audit-reset" id="rk-loop-planner-reset" type="button">Przywróć przykład</button>
            </form>

            <div class="rk-loop-audit-output" aria-live="polite">
              <div class="rk-loop-metrics rk-loop-metrics-4">
                <div class="rk-loop-metric"><small>Orientacyjna długość rury</small><strong id="rk-loop-result-length">—</strong></div>
                <div class="rk-loop-metric"><small>Wstępna liczba pętli</small><strong id="rk-loop-result-count">—</strong></div>
                <div class="rk-loop-metric"><small>Średnia długość obwodu</small><strong id="rk-loop-result-average">—</strong></div>
                <div class="rk-loop-metric"><small>Łączny wymagany przepływ</small><strong id="rk-loop-result-flow">—</strong></div>
              </div>

              <div class="rk-loop-audit-status" id="rk-loop-planner-status">
                <strong id="rk-loop-planner-title">Analizujemy wariant pomieszczenia</strong>
                <span id="rk-loop-planner-copy">Wynik pokaże relację pomiędzy rozstawem, dobiegami, liczbą obwodów i przepływem.</span>
              </div>

              <div class="rk-loop-audit-plan">
                <svg viewBox="0 0 720 430" role="img" aria-labelledby="rk-loop-plan-title rk-loop-plan-desc">
                  <title id="rk-loop-plan-title">Dynamiczny podział pomieszczenia na pętle grzewcze</title>
                  <desc id="rk-loop-plan-desc">Schemat zmienia kształt pomieszczenia i pokazuje wstępny podział na maksymalnie cztery obwody, strefę brzegową, zabudowę oraz dylatację.</desc>
                  <rect x="18" y="18" width="684" height="394" rx="22" fill="#ffffff" stroke="#d6e5ec" stroke-width="3"></rect>
                  <path id="rk-loop-plan-room" d="M100 72 H620 V344 H100 Z" fill="#e9fbff" stroke="#25c7d8" stroke-width="10" stroke-linejoin="round"></path>
                  <path id="rk-loop-plan-edge" d="M112 88 H608" fill="none" stroke="#ff6d38" stroke-width="26" opacity="0" stroke-linecap="round"></path>
                  <rect id="rk-loop-plan-fixed" x="470" y="242" width="128" height="82" rx="12" fill="#d7d5cf" stroke="#6d5bd0" stroke-width="6" opacity="0"></rect>
                  <path id="rk-loop-plan-dilation" d="M360 58 V358" fill="none" stroke="#df4537" stroke-width="10" stroke-dasharray="16 10" opacity="0"></path>
                  <path id="rk-loop-divider-1" d="M360 72 V344" fill="none" stroke="#ffffff" stroke-width="8" opacity="0"></path>
                  <path id="rk-loop-divider-2" d="M100 208 H620" fill="none" stroke="#ffffff" stroke-width="8" opacity="0"></path>
                  <path id="rk-loop-divider-3" d="M490 72 V344" fill="none" stroke="#ffffff" stroke-width="8" opacity="0"></path>
                  <g id="rk-loop-label-1"><circle cx="220" cy="208" r="31" fill="#078fbe"></circle><text x="220" y="216" text-anchor="middle" fill="#ffffff" font-size="24" font-weight="900">1</text></g>
                  <g id="rk-loop-label-2" opacity="0"><circle cx="500" cy="208" r="31" fill="#ff6d38"></circle><text x="500" y="216" text-anchor="middle" fill="#ffffff" font-size="24" font-weight="900">2</text></g>
                  <g id="rk-loop-label-3" opacity="0"><circle cx="220" cy="275" r="31" fill="#6d5bd0"></circle><text x="220" y="283" text-anchor="middle" fill="#ffffff" font-size="24" font-weight="900">3</text></g>
                  <g id="rk-loop-label-4" opacity="0"><circle cx="500" cy="275" r="31" fill="#16836b"></circle><text x="500" y="283" text-anchor="middle" fill="#ffffff" font-size="24" font-weight="900">4</text></g>
                  <text id="rk-loop-plan-caption" x="360" y="395" text-anchor="middle" fill="#6c7e8a" font-size="15">WSTĘPNY PODZIAŁ — NIE JEST RYSUNKIEM WYKONAWCZYM</text>
                </svg>
              </div>

              <ul class="rk-loop-audit-list" id="rk-loop-planner-list"></ul>
            </div>
          </div>

          <div class="rk-loop-tool-note"><strong>Ważne:</strong> długość jest szacunkiem geometrycznym. Planer nie oblicza jednostkowych oporów przewodu, strat miejscowych, rzeczywistego przebiegu łuków, mocy podłogi według konstrukcji ani dostępnego sprężu pompy. Nie należy na jego podstawie zamawiać rury lub wykonywać instalacji bez weryfikacji projektu.</div>
        </div>

        <div class="rk-loop-inline-cta">
          <span class="rk-loop-kicker" style="color:#79f1ff">Szacunek kończy się tam, gdzie zaczyna się rzeczywisty rzut budynku</span>
          <h3>Planer podał liczbę obwodów, ale nie rozrysuje przejść przez progi, stref przy HS i dokładnych dobiegów</h3>
          <p>Indywidualny projekt pokazuje rzeczywisty przebieg każdej pętli, rozstawy, długości, przepływy, straty ciśnienia, nastawy rozdzielacza oraz koordynację z dylatacjami i zabudową. Dzięki temu wykonawca dostaje policzoną dokumentację zamiast orientacyjnej liczby metrów.</p>
          <a class="rk-loop-cta-button rk-loop-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt z rozrysowanymi pętlami</a>
          <small class="rk-loop-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-spacing-guide">
        <span class="rk-loop-kicker">Rozstaw jest wynikiem, nie założeniem</span>
        <h2>Rozstaw rur 5, 10, 15 czy 20 cm — co naprawdę się zmienia?</h2>
        <p class="rk-loop-lead">Zmniejszenie rozstawu zwiększa ilość rury przypadającą na metr kwadratowy i poprawia równomierność temperatury powierzchni. Nie oznacza jednak automatycznie, że podłoga odda dowolną moc. Ograniczają ją temperatura wody, konstrukcja podłogi, opór okładziny i dopuszczalna temperatura powierzchni.</p>

        <div class="rk-loop-table-wrap">
          <table>
            <thead><tr><th>Rozstaw</th><th>Rura w polu na 1 m²</th><th>Orientacyjna powierzchnia przy 80 m rury*</th><th>Zastosowanie do analizy</th></tr></thead>
            <tbody>
              <tr><td data-label="Rozstaw"><strong>5 cm</strong></td><td data-label="Rura / m²">około 20,0 m</td><td data-label="Powierzchnia">około 3–3,5 m²</td><td data-label="Analiza">Wąskie strefy specjalne; wymaga kontroli promienia gięcia, długości i sensu energetycznego</td></tr>
              <tr><td data-label="Rozstaw"><strong>10 cm</strong></td><td data-label="Rura / m²">około 10,0 m</td><td data-label="Powierzchnia">około 6–7 m²</td><td data-label="Analiza">Łazienki, strefy brzegowe lub pomieszczenia o większej gęstości mocy — wyłącznie po obliczeniach</td></tr>
              <tr><td data-label="Rozstaw"><strong>15 cm</strong></td><td data-label="Rura / m²">około 6,7 m</td><td data-label="Powierzchnia">około 10–11 m²</td><td data-label="Analiza">Częsty wariant w dobrze izolowanych budynkach, ale nie wartość domyślna dla każdego pomieszczenia</td></tr>
              <tr><td data-label="Rozstaw"><strong>20 cm</strong></td><td data-label="Rura / m²">około 5,0 m</td><td data-label="Powierzchnia">około 14–15 m²</td><td data-label="Analiza">Niższa gęstość rury i większe różnice temperatur powierzchni; wymaga sprawdzenia komfortu i mocy</td></tr>
            </tbody>
          </table>
        </div>
        <p style="margin-top:15px;font-size:.76rem;color:#6c7e8a">* Po odjęciu orientacyjnych dobiegów. Wartości służą do pierwszego sprawdzenia, a nie do zamówienia materiału.</p>

        <div class="rk-loop-callout">
          <p><strong>Dobór rozstawu powinien być wspólny dla całego modelu cieplnego.</strong> Jeżeli pompa ciepła ma pracować na niskiej temperaturze, sprawdzamy jednocześnie moc podłogi, jej temperaturę, opór okładziny i przepływ. Szczegółowe porównanie zawiera artykuł <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">rozstaw rur ogrzewania podłogowego przy pompie ciepła</a>.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-length">
        <span class="rk-loop-kicker">Geometria plus dobiegi</span>
        <h2>Jak obliczyć długość rury i liczbę pętli w pomieszczeniu?</h2>
        <p class="rk-loop-lead">Do pierwszego oszacowania można wykorzystać powierzchnię ogrzewaną i rozstaw, ale wynik musi obejmować drogę od rozdzielacza do pola oraz powrót. W nieregularnym pomieszczeniu dochodzą łuki, omijanie elementów stałych i nieuniknione różnice pomiędzy obwodami.</p>

        <div class="rk-loop-formulas">
          <div class="rk-loop-formula">
            <span>Orientacyjna rura w polu</span>
            <strong>L<sub>pole</sub> ≈ A<sub>h</sub> ÷ s × k</strong>
            <p>A<sub>h</sub> — powierzchnia ogrzewana, s — rozstaw w metrach, k — niewielka korekta geometrii.</p>
          </div>
          <div class="rk-loop-formula">
            <span>Całkowita długość</span>
            <strong>L<sub>całk.</sub> ≈ L<sub>pole</sub> + 2 × n × L<sub>dobiegu</sub></strong>
            <p>n — liczba obwodów; każdy z nich ma zasilanie i powrót od rozdzielacza do obsługiwanego pola.</p>
          </div>
          <div class="rk-loop-formula">
            <span>Wstępna liczba obwodów</span>
            <strong>n ≈ ceil(L<sub>całk.</sub> ÷ L<sub>docelowa</sub>)</strong>
            <p>Zaokrąglenie w górę to dopiero początek — później trzeba sprawdzić podział geometryczny i hydraulikę.</p>
          </div>
        </div>

        <h3>Przykład: salon z jadalnią</h3>
        <p>Jeżeli powierzchnia czynna wynosi 28 m², rozstaw 15 cm daje w samym polu około 187 m rury. Przy rozdzielaczu oddalonym o 6 m i trzech planowanych obwodach dobiegi mogą dodać łącznie około 36 m. Otrzymujemy około 223 m, czyli średnio 74 m na obwód. Dopiero na rzucie sprawdzamy, czy trzy pola da się ułożyć logicznie, a przepływy i opory pozostają w zakładanym zakresie.</p>

        <div class="rk-loop-grid-3">
          <article class="rk-loop-card"><span class="rk-loop-card-number">16×2</span><h3>Najczęstsza średnica</h3><p>W domach jednorodzinnych często przyjmuje się obwody około 70–90 m. Okolice 100 m wymagają kontroli przepływu i oporu, a 120 m nie powinno być domyślną regułą.</p></article>
          <article class="rk-loop-card"><span class="rk-loop-card-number">≈</span><h3>Podobne, nie identyczne</h3><p>Pętle w jednym pomieszczeniu warto dzielić możliwie równo, lecz kilka metrów różnicy nie jest błędem, jeżeli przepływy zostały policzone i wyregulowane.</p></article>
          <article class="rk-loop-card"><span class="rk-loop-card-number">+2L</span><h3>Nie zapomnij o dobiegach</h3><p>Im dalej od rozdzielacza, tym mniej rury pozostaje na właściwe pole grzewcze. Korytarz może przy tym otrzymać nadmiar ciepła z wielu przewodów.</p></article>
        </div>

        <p style="margin-top:22px">Temat granicznej długości rozwija osobne opracowanie <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalna długość pętli ogrzewania podłogowego</a>, natomiast zależność powierzchni i rozstawu opisujemy w poradniku <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-loop-section" id="rk-loop-patterns">
        <span class="rk-loop-kicker">Kształt układu ma znaczenie</span>
        <h2>Ślimak, meander czy podwójny meander?</h2>
        <p class="rk-loop-lead">W większości regularnych pomieszczeń układ ślimakowy ułatwia uzyskanie równomiernej temperatury, ponieważ przewód zasilający sąsiaduje z chłodniejszym powrotem. Meander tworzy świadomy gradient temperatury i może być użyteczny w wąskich albo nieregularnych strefach.</p>

        <div class="rk-loop-table-wrap">
          <table>
            <thead><tr><th>Układ</th><th>Rozkład temperatury</th><th>Kiedy jest przydatny?</th><th>Na co uważać?</th></tr></thead>
            <tbody>
              <tr><td data-label="Układ"><strong>Ślimak</strong></td><td data-label="Temperatura">Zwykle najbardziej równomierny</td><td data-label="Zastosowanie">Salony, sypialnie i większość regularnych pomieszczeń</td><td data-label="Uwaga">Wymaga miejsca na łagodne zawroty i przemyślanego wejścia do środka spirali</td></tr>
              <tr><td data-label="Układ"><strong>Meander</strong></td><td data-label="Temperatura">Wyraźny kierunek od cieplejszego zasilania do chłodniejszego powrotu</td><td data-label="Zastosowanie">Wąskie pasy, małe pola, świadomie projektowana strefa przy przegrodzie</td><td data-label="Uwaga">Nieprawidłowe ustawienie zasilania może zwiększyć odczuwalną nierównomierność</td></tr>
              <tr><td data-label="Układ"><strong>Podwójny meander</strong></td><td data-label="Temperatura">Bardziej wyrównana niż w prostym meandrze</td><td data-label="Zastosowanie">Nieregularne pomieszczenia, w których pełny ślimak jest trudny do poprowadzenia</td><td data-label="Uwaga">Trasa musi pozostać czytelna i możliwa do wykonania bez zbyt ciasnych łuków</td></tr>
            </tbody>
          </table>
        </div>

        <p style="margin-top:22px">Szersze porównanie wraz ze schematami znajdziesz w artykule <a href="https://projekt-ogrzewania.pl/jak-ukladac-rury-w-ogrzewaniu-slimak-meander-czy-podwojny-meander/">jak układać rury: ślimak, meander czy podwójny meander</a>.</p>
      </section>

      <section class="rk-loop-section" id="rk-loop-hydraulics">
        <span class="rk-loop-kicker">Każda pętla jest odbiornikiem hydraulicznym</span>
        <h2>Przepływ, ΔT i strata ciśnienia — dlaczego sama długość nie wystarcza?</h2>
        <p class="rk-loop-lead">Obwód o długości 80 m może pracować poprawnie albo źle. Zależy to między innymi od wymaganej mocy, średnicy wewnętrznej rury, temperatury wody, natężenia przepływu, strat miejscowych i możliwości pompy. Dlatego nie ustawia się wszystkich rotametrów na tę samą wartość tylko dlatego, że pętle mają podobne długości.</p>

        <div class="rk-loop-formulas">
          <div class="rk-loop-formula">
            <span>Przepływ objętościowy</span>
            <strong>V̇ = Q ÷ (1,163 × ΔT)</strong>
            <p>Dla Q w kW otrzymujemy wynik w m³/h. Przepływ pętli wynika z przypisanej jej mocy.</p>
          </div>
          <div class="rk-loop-formula">
            <span>Wersja w litrach na minutę</span>
            <strong>V̇ = Q ÷ (69,78 × ΔT)</strong>
            <p>Dla Q w watach otrzymujemy l/min. Przykład: 720 W i ΔT 6 K daje około 1,72 l/min.</p>
          </div>
          <div class="rk-loop-formula">
            <span>Całkowity opór obwodu</span>
            <strong>Δp = R × L + ΣΔp<sub>miejsc.</sub></strong>
            <p>Do liniowego oporu rury dochodzą łuki, rozdzielacz, armatura i pozostałe elementy obiegu.</p>
          </div>
        </div>

        <div class="rk-loop-grid-3">
          <article class="rk-loop-card"><span class="rk-loop-card-number">Q</span><h3>Moc przypisana do pętli</h3><p>Jeżeli trzy obwody obsługują różne części salonu, nie muszą przenosić identycznej mocy — zwłaszcza przy strefie brzegowej.</p></article>
          <article class="rk-loop-card"><span class="rk-loop-card-number">ΔT</span><h3>Spadek temperatury</h3><p>Mniejsze ΔT wymaga większego przepływu dla tej samej mocy. Większy przepływ zwiększa opory i wpływa na dobór pompy.</p></article>
          <article class="rk-loop-card"><span class="rk-loop-card-number">Δp</span><h3>Najbardziej niekorzystny obwód</h3><p>Pompa musi pokonać opór pętli krytycznej oraz wspólnej części instalacji, a nie sumę spadków wszystkich równoległych pętli.</p></article>
        </div>

        <p style="margin-top:22px">Zależność przepływu od temperatur omawia poradnik <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">spadek temperatury ΔT między zasilaniem i powrotem</a>, a funkcję przepływomierzy opisuje artykuł <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametr w rozdzielaczu ogrzewania podłogowego</a>.</p>
      </section>

      <section class="rk-loop-section" id="rk-loop-rooms">
        <span class="rk-loop-kicker">Inne pomieszczenie, inne ograniczenia</span>
        <h2>Jak rozmieścić pętle w salonie, łazience, kuchni i pomieszczeniu z dużym HS?</h2>
        <p class="rk-loop-lead">Nie istnieje jeden układ, który można odbić lustrzanie w całym domu. Każde pomieszczenie ma inną geometrię, temperaturę projektową, okładzinę, zabudowę i stosunek powierzchni czynnej do wymaganej mocy.</p>

        <div class="rk-loop-grid-2">
          <article class="rk-loop-card"><span class="rk-loop-card-number">SALON</span><h3>Duża powierzchnia i kilka obwodów</h3><p>Dzielimy pole tak, aby pętle miały zbliżoną długość, logicznie wracały do rozdzielacza i nie przecinały wielokrotnie granic jastrychu. Przy dwóch okładzinach sprawdzamy osobno ich opory.</p></article>
          <article class="rk-loop-card"><span class="rk-loop-card-number">HS</span><h3>Duże przeszklenie</h3><p>Strefa brzegowa może wymagać mniejszego rozstawu albo skierowania cieplejszej części meandra ku przeszkleniu. Najpierw trzeba jednak znać rzeczywistą stratę przez tę przegrodę.</p></article>
          <article class="rk-loop-card"><span class="rk-loop-card-number">ŁAZ.</span><h3>Wysoka temperatura i mała powierzchnia czynna</h3><p>Duża moc przypadająca na niewielką podłogę może przekroczyć możliwości ogrzewania płaszczyznowego. Zagęszczenie rury nie zawsze rozwiązuje problem — czasem potrzebny jest dodatkowy odbiornik.</p></article>
          <article class="rk-loop-card"><span class="rk-loop-card-number">KUCH.</span><h3>Zabudowa stała i możliwe zmiany</h3><p>Nie stosujemy jednej zasady dla wszystkich szafek. Znaczenie mają cokół, wentylacja zabudowy, urządzenia, technologia podłogi i możliwość późniejszej zmiany aranżacji.</p></article>
          <article class="rk-loop-card"><span class="rk-loop-card-number">L/U</span><h3>Nieregularna geometria</h3><p>Wewnętrzne narożniki i wąskie odnogi utrudniają ślimak. Czasem lepszy jest podwójny meander albo podział na dwa obwody zgodny z polami jastrychu.</p></article>
          <article class="rk-loop-card"><span class="rk-loop-card-number">KORYT.</span><h3>Wiele dobiegów w jednym pasie</h3><p>Przewody tranzytowe również oddają ciepło. Ich zagęszczenie może przegrzać komunikację i odebrać kontrolę nad temperaturą, dlatego dobiegów nie traktuje się jak obojętnej hydraulicznie wiązki.</p></article>
        </div>

        <div class="rk-loop-callout">
          <p><strong>Strefa brzegowa nie jest ozdobnym paskiem rur przy każdym oknie.</strong> Tworzy się ją tam, gdzie obliczenia i geometria uzasadniają większą gęstość mocy. Zasady jej wydzielania opisuje artykuł <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-obwodowa-w-ogrzewaniu-podlogowym/">strefa brzegowa w ogrzewaniu podłogowym</a>, a wpływ wyposażenia poradnik <a href="https://projekt-ogrzewania.pl/wodne-ogrzewanie-podlogowe-a-meble-jak-polaczyc-komfort-i-aranzacje/">wodne ogrzewanie podłogowe a meble</a>.</p>
        </div>
      </section>

      <section class="rk-loop-section">
        <span class="rk-loop-kicker">Rozdzielacz i granice pól</span>
        <h2>Jak prowadzić dobiegi i przechodzić przez dylatacje?</h2>
        <p class="rk-loop-lead">Rozdzielacz powinien być położony tak, aby ograniczyć długość dojść, umożliwić odpowietrzanie oraz czytelnie rozprowadzić przewody do pomieszczeń. Pętla powinna w miarę możliwości pozostać w jednym polu jastrychu i jednej logicznej strefie regulacyjnej.</p>

        <div class="rk-loop-grid-4">
          <article class="rk-loop-card"><span class="rk-loop-card-number">→</span><h3>Najkrótsza logiczna trasa</h3><p>Dobieg nie może przecinać przypadkowo innych pól ani utrudniać ułożenia pętli w pomieszczeniach położonych bliżej szafki.</p></article>
          <article class="rk-loop-card"><span class="rk-loop-card-number">90°</span><h3>Przejście przez szczelinę</h3><p>Jeżeli jest konieczne, przewody prowadzi się możliwie prostopadle, w uzgodnionej osłonie i bez złączek w strefie ruchu.</p></article>
          <article class="rk-loop-card"><span class="rk-loop-card-number">1P</span><h3>Jedna strefa regulacyjna</h3><p>Nie łączymy przypadkowo pomieszczeń o różnych zyskach i wymaganiach jednym obwodem sterowanym z jednego miejsca.</p></article>
          <article class="rk-loop-card"><span class="rk-loop-card-number">ID</span><h3>Czytelne oznaczenia</h3><p>Każda pętla otrzymuje nazwę, pomieszczenie, rozstaw, długość, przepływ i nastawę możliwą do sprawdzenia przy uruchomieniu.</p></article>
        </div>

        <p style="margin-top:22px">Koordynację rur z pracą jastrychu rozwija artykuł <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">izolacja brzegowa i dylatacje w ogrzewaniu podłogowym</a>, a dobór oraz nastawy belek opisuje poradnik <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacz do podłogówki</a>.</p>
      </section>

      <section class="rk-loop-section" id="rk-loop-documentation">
        <span class="rk-loop-kicker">Od obliczeń do dokumentacji wykonawczej</span>
        <h2>Planowanie pętli krok po kroku</h2>
        <p class="rk-loop-lead">Prawidłowa kolejność ogranicza sytuacje, w których gotowy rzut trzeba poprawiać po zmianie rozdzielacza, okładziny albo układu stałej zabudowy.</p>

        <div class="rk-loop-steps">
          <article class="rk-loop-step"><h3>Policz straty pomieszczeń</h3><p>Wyznacz projektowe obciążenie cieplne osobno dla każdej strefy przy przyjętych temperaturach wewnętrznych i zewnętrznych.</p></article>
          <article class="rk-loop-step"><h3>Ustal warstwy i powierzchnię czynną</h3><p>Zaznacz rodzaj okładziny, jej opór, zabudowę stałą, elementy konstrukcyjne i obszary wyłączone z grzania.</p></article>
          <article class="rk-loop-step"><h3>Dobierz parametry wody i rozstaw</h3><p>Sprawdź, czy podłoga pokryje wymaganą moc bez przekroczenia temperatur powierzchni i przy racjonalnej temperaturze zasilania.</p></article>
          <article class="rk-loop-step"><h3>Wyznacz pola jastrychu</h3><p>Przenieś dylatacje konstrukcyjne, progi, przewężenia i podziały pól przed rozpoczęciem rysowania pętli.</p></article>
          <article class="rk-loop-step"><h3>Oszacuj rurę i liczbę obwodów</h3><p>Do długości w polu dodaj oba dobiegi, a następnie podziel powierzchnię na możliwe do wykonania obwody.</p></article>
          <article class="rk-loop-step"><h3>Rozrysuj rzeczywiste trasy</h3><p>Wybierz ślimak, meander lub układ mieszany, zachowaj promienie gięcia i ogranicz liczbę przejść przez granice pól.</p></article>
          <article class="rk-loop-step"><h3>Policz przepływy i opory</h3><p>Przypisz moc do każdej pętli, oblicz jej przepływ, stratę ciśnienia i sprawdź obwód krytyczny względem pompy.</p></article>
          <article class="rk-loop-step"><h3>Przygotuj tabelę nastaw i odbiór</h3><p>Zestaw nazwy pętli, długości, rozstawy, przepływy i nastawy oraz wykonaj dokumentację zdjęciową przed jastrychem.</p></article>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-errors">
        <span class="rk-loop-kicker">Błędy widoczne dopiero po uruchomieniu</span>
        <h2>Najczęstsze błędy w rozmieszczeniu pętli grzewczych</h2>
        <div class="rk-loop-grid-3">
          <article class="rk-loop-error"><b>BŁĄD 01</b><h3>Jedna pętla na każde pomieszczenie</h3><p>Liczba obwodów jest ustalana według liczby pokoi, bez sprawdzenia powierzchni, rozstawu, dobiegów i oporów.</p></article>
          <article class="rk-loop-error"><b>BŁĄD 02</b><h3>Limit 120 m dla rury 16 mm</h3><p>Maksymalna wartość z katalogowej reguły zastępuje kontrolę przepływu i ciśnienia, przez co obwód staje się trudny do zrównoważenia.</p></article>
          <article class="rk-loop-error"><b>BŁĄD 03</b><h3>Ten sam rozstaw w całym domu</h3><p>Pomija się różne straty cieplne, temperatury pomieszczeń, okładziny oraz możliwość pracy źródła ciepła na niższym parametrze.</p></article>
          <article class="rk-loop-error"><b>BŁĄD 04</b><h3>Brak dobiegów w długości pętli</h3><p>Rura wystarcza na papierze, ale po dojściu od rozdzielacza w polu brakuje kilkunastu metrów albo obwód przekracza założenie.</p></article>
          <article class="rk-loop-error"><b>BŁĄD 05</b><h3>Identyczne nastawy rotametrów</h3><p>Przepływy ustawia się „po równo”, mimo że pętle przenoszą inne moce i mają różne opory hydrauliczne.</p></article>
          <article class="rk-loop-error"><b>BŁĄD 06</b><h3>Rzut bez koordynacji z jastrychem</h3><p>Pętla przecina dylatację wielokrotnie albo nacięcie skurczowe jest wykonywane bez pewności, gdzie leży rura.</p></article>
        </div>
      </section>

      <section class="rk-loop-section">
        <span class="rk-loop-kicker">Odbiór przed zakryciem instalacji</span>
        <h2>Checklista poprawnego projektu pętli</h2>
        <ul class="rk-loop-checklist">
          <li>Każde pomieszczenie ma określone obciążenie cieplne i temperaturę projektową.</li>
          <li>Powierzchnia ogrzewana jest oddzielona od powierzchni brutto pomieszczenia.</li>
          <li>Rozstaw wynika z wymaganej mocy, temperatur wody i oporu okładziny.</li>
          <li>Długości obejmują zasilanie i powrót od rozdzielacza do pola.</li>
          <li>Obwody mają policzone przepływy, a nie tylko wpisaną długość rury.</li>
          <li>Pętla krytyczna mieści się w dostępnym sprężu pompy wraz z częścią wspólną.</li>
          <li>Strefy brzegowe wynikają z obliczeń i są widoczne na rzucie.</li>
          <li>Dylatacje, progi i elementy stałe zostały skoordynowane z trasami rur.</li>
          <li>Każda pętla ma nazwę, długość, rozstaw, przepływ i nastawę.</li>
          <li>Przed jastrychem wykonano próbę szczelności i dokumentację zdjęciową.</li>
        </ul>
      </section>

      <section class="rk-loop-section" id="rk-loop-faq">
        <span class="rk-loop-kicker">Pytania inwestorów i wykonawców</span>
        <h2>FAQ — rozmieszczenie pętli ogrzewania podłogowego</h2>
        <div class="rk-loop-faq">
          <details><summary>Ile metrów może mieć jedna pętla ogrzewania podłogowego?</summary><div class="rk-loop-faq-answer"><p>Nie istnieje jedna długość odpowiednia dla wszystkich rur i przepływów. Dla rury 16 × 2 mm często projektuje się obwody około 70–90 m, a okolice 100 m wymagają kontroli hydraulicznej. Długość obejmuje również zasilanie i powrót od rozdzielacza.</p></div></details>
          <details><summary>Ile pętli potrzeba na pomieszczenie 20 m²?</summary><div class="rk-loop-faq-answer"><p>Zależy to od powierzchni rzeczywiście ogrzewanej, rozstawu, dobiegów, średnicy rury i założonej długości obwodu. Przy rozstawie 15 cm w polu potrzeba około 133 m rury, więc pomieszczenie zwykle wymaga co najmniej dwóch pętli, ale wynik trzeba uzupełnić o dobiegi.</p></div></details>
          <details><summary>Czy pętle w jednym pomieszczeniu muszą mieć identyczną długość?</summary><div class="rk-loop-faq-answer"><p>Nie muszą być identyczne, lecz powinny tworzyć logiczny i możliwy do zrównoważenia układ. Kilka metrów różnicy jest normalne, jeżeli każda pętla ma policzony przepływ i nastawę wynikającą z jej mocy oraz oporu.</p></div></details>
          <details><summary>Jaki rozstaw rur wybrać: 10 czy 15 cm?</summary><div class="rk-loop-faq-answer"><p>Rozstaw dobiera się do obciążenia cieplnego, temperatury zasilania i powrotu, konstrukcji podłogi, oporu okładziny oraz limitu temperatury powierzchni. Sam rodzaj pomieszczenia nie wystarcza do wyboru.</p></div></details>
          <details><summary>Czy układ ślimakowy jest zawsze najlepszy?</summary><div class="rk-loop-faq-answer"><p>Ślimak zapewnia zwykle równomierny rozkład temperatury i dobrze sprawdza się w regularnych pomieszczeniach. W wąskich, małych lub nieregularnych strefach prosty albo podwójny meander może być łatwiejszy i bardziej celowy.</p></div></details>
          <details><summary>Czy jedna pętla może ogrzewać dwa pomieszczenia?</summary><div class="rk-loop-faq-answer"><p>Technicznie jest to czasem możliwe w małych, podobnych strefach, ale ogranicza niezależną regulację i utrudnia przypisanie mocy. Nie powinno się przypadkowo łączyć pomieszczeń o różnych temperaturach, zyskach i sposobie użytkowania.</p></div></details>
          <details><summary>Czy pętle można prowadzić pod szafkami kuchennymi?</summary><div class="rk-loop-faq-answer"><p>Nie ma jednej odpowiedzi dla każdej zabudowy. Trzeba uwzględnić cokół i wentylację, urządzenia, technologię podłogi, ryzyko kumulacji ciepła oraz możliwość przyszłej zmiany aranżacji. Decyzję zaznacza się na rzucie projektu.</p></div></details>
          <details><summary>Jak uwzględnić strefę brzegową przy dużym przeszkleniu?</summary><div class="rk-loop-faq-answer"><p>Najpierw oblicza się stratę ciepła przy przeszkleniu. Następnie można lokalnie zmniejszyć rozstaw, wydzielić osobny pas lub skierować cieplejszą część odpowiednio ułożonego meandra, zachowując wymagane długości i przepływy.</p></div></details>
          <details><summary>Czy rura może przechodzić przez dylatację jastrychu?</summary><div class="rk-loop-faq-answer"><p>Najlepiej przypisać pętle do osobnych pól i ograniczyć przejścia. Jeżeli są konieczne, rury prowadzi się możliwie prostopadle, w odpowiednich osłonach i bez połączeń w strefie ruchu.</p></div></details>
          <details><summary>Czy planer internetowy może rozrysować gotowe pętle?</summary><div class="rk-loop-faq-answer"><p>Może oszacować długość, liczbę obwodów i przepływ, ale nie zna wszystkich narożników, progów, dylatacji, dobiegów i warstw konkretnego budynku. Gotowy przebieg rur wymaga rzutu oraz indywidualnych obliczeń cieplnych i hydraulicznych.</p></div></details>
        </div>
      </section>

      <section class="rk-loop-section" aria-label="Źródła techniczne">
        <div class="rk-loop-sources">
          <strong>Podstawa techniczna opracowania</strong>
          <p>Metodykę projektowania i wymiarowania systemów ogrzewania płaszczyznowego opisuje <a href="https://www.iso.org/standard/74684.html" target="_blank" rel="noopener nofollow">ISO 11855-3:2021</a>, natomiast wymagania dotyczące wykonania zawiera <a href="https://www.iso.org/standard/74685.html" target="_blank" rel="noopener nofollow">ISO 11855-5:2021</a>. Wartości w planerze są edukacyjnym oszacowaniem i nie zastępują obliczeń wykonanych dla konkretnej rury, jastrychu, okładziny i układu pompowego.</p>
        </div>
      </section>

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

        <header class="rk-loop-author-head">
          <div>
            <h2>Autor opracowania</h2>
            <p>Obliczenia cieplne, hydraulika i dokumentacja możliwa do wykonania na budowie.</p>
          </div>
          <span class="rk-loop-author-mark">E-E-A-T • HVAC</span>
        </header>

        <div class="rk-loop-author-layout">
          <aside class="rk-loop-author-side">
            <div class="rk-loop-author-photo">
              <img 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="600" height="600" loading="lazy" decoding="async">
            </div>
            <div class="rk-loop-author-name">Robert Kucharski</div>
            <div class="rk-loop-author-role">CEO portalu<br>Specjalista HVAC i ogrzewania podłogowego</div>
          </aside>

          <div class="rk-loop-author-main">
            <blockquote class="rk-loop-author-quote">
              <p>„Dobra pętla nie kończy się na ładnym ślimaku. Musi pokryć właściwą strefę, przenieść policzoną moc, otrzymać wymagany przepływ i zmieścić się w hydraulice całej instalacji.”</p>
            </blockquote>

            <div class="rk-loop-author-tabs" role="tablist" aria-label="Informacje o autorze">
              <label class="rk-loop-author-tab" for="rk-loop-author-about">O autorze</label>
              <label class="rk-loop-author-tab" for="rk-loop-author-exp">Doświadczenie</label>
              <label class="rk-loop-author-tab" for="rk-loop-author-sites">Portale</label>
            </div>

            <div class="rk-loop-author-panel rk-loop-author-panel-about">
              <p>Projektuję wodne ogrzewanie podłogowe i opracowuję techniczne publikacje dotyczące HVAC, hydrauliki instalacji, efektywności energetycznej oraz świadomego prowadzenia inwestycji. Łączę obliczenia cieplne z realnymi ograniczeniami wykonawczymi budynku.</p>
            </div>
            <div class="rk-loop-author-panel rk-loop-author-panel-exp">
              <p>W dokumentacji wyznaczam straty ciepła pomieszczeń, temperatury pracy, rozstawy, przebieg i długości pętli, przepływy, opory hydrauliczne, nastawy rozdzielaczy oraz parametry pompy. Każdy obwód jest częścią jednego policzonego układu, a nie osobnym rysunkiem dopasowanym wyłącznie do wolnej powierzchni.</p>
            </div>
            <div class="rk-loop-author-panel rk-loop-author-panel-sites">
              <p>Jestem właścicielem trzech serwisów branżowych. Powiązanie portali podaję jawnie, aby czytelnik znał autorstwo i kontekst linkowania.</p>
              <div class="rk-loop-site-links">
                <a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a>
                <a href="https://remont.biz.pl/" target="_blank" rel="noopener nofollow">Remont.biz.pl</a>
                <a href="https://sobir.pl/" target="_blank" rel="noopener nofollow">Sobir.pl</a>
              </div>
            </div>
          </div>
        </div>
      </section>

      <section class="rk-loop-final-cta" aria-label="Projekt ogrzewania podłogowego">
        <span class="rk-loop-kicker" style="color:#79f1ff">Od obciążenia cieplnego do nastaw każdego rotametru</span>
        <h2>Otrzymaj kompletny projekt z rozrysowanymi pętlami, długościami i przepływami</h2>
        <p>Dokumentacja obejmuje rzeczywisty układ pomieszczeń, rozstawy rur, podział na obwody, długości dobiegów, przepływy, opory hydrauliczne, nastawy rozdzielacza i parametry pracy instalacji. Wykonawca otrzymuje czytelny rzut zamiast zestawu uniwersalnych zasad.</p>
        <a class="rk-loop-cta-button rk-loop-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
        <small class="rk-loop-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
      </section>
    </div>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/#article",
      "url": "https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/",
      "headline": "Jak zaplanować rozmieszczenie pętli grzewczych w ogrzewaniu podłogowym? Schemat, obliczenia i zasady",
      "description": "Jak zaplanować rozmieszczenie pętli grzewczych w ogrzewaniu podłogowym? Sprawdź długości, rozstaw rur, przepływy, liczbę obwodów i użyj planera przed montażem.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-26",
      "author": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "mainEntityOfPage": {
        "@id": "https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/#webpage"
      },
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/#website"
      },
      "about": [
        {
          "@type": "Thing",
          "name": "Rozmieszczenie pętli ogrzewania podłogowego"
        },
        {
          "@type": "Thing",
          "name": "Długość pętli grzewczej"
        },
        {
          "@type": "Thing",
          "name": "Rozstaw rur ogrzewania podłogowego"
        },
        {
          "@type": "Thing",
          "name": "Hydrauliczne równoważenie pętli"
        },
        {
          "@type": "Thing",
          "name": "Układ ślimakowy i meandrowy"
        }
      ],
      "proficiencyLevel": "Expert",
      "citation": [
        "https://www.iso.org/standard/74684.html",
        "https://www.iso.org/standard/74685.html"
      ],
      "hasPart": [
        {
          "@id": "https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/#planner"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/#howto"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/#faq"
        }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/#webpage",
      "url": "https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/",
      "name": "Jak zaplanować rozmieszczenie pętli grzewczych w ogrzewaniu podłogowym?",
      "description": "Jak zaplanować rozmieszczenie pętli grzewczych w ogrzewaniu podłogowym? Sprawdź długości, rozstaw rur, przepływy, liczbę obwodów i użyj planera przed montażem.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-26",
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/#website"
      },
      "breadcrumb": {
        "@id": "https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/#breadcrumb"
      },
      "mainEntity": {
        "@id": "https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/#article"
      }
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/#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": "Jak zaplanować rozmieszczenie pętli grzewczych w ogrzewaniu podłogowym?",
          "item": "https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/"
        }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/#planner",
      "name": "Interaktywny planer pętli grzewczych",
      "description": "Edukacyjne narzędzie szacujące długość rury, liczbę pętli, średnią długość obwodu i wymagany przepływ dla jednego pomieszczenia.",
      "url": "https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/#rk-loop-planner",
      "applicationCategory": "UtilitiesApplication",
      "applicationSubCategory": "Narzędzie edukacyjne HVAC",
      "operatingSystem": "Dowolny",
      "browserRequirements": "Włączona obsługa JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      },
      "featureList": [
        "szacowanie długości rury w pomieszczeniu",
        "uwzględnienie dobiegów do rozdzielacza",
        "wstępny dobór liczby pętli",
        "obliczenie średniej długości obwodu",
        "obliczenie łącznego przepływu",
        "dynamiczny podział powierzchni na obwody",
        "kontrola strefy brzegowej, dylatacji i zabudowy stałej"
      ],
      "author": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      }
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/#howto",
      "name": "Jak zaplanować pętle ogrzewania podłogowego krok po kroku",
      "description": "Osiem etapów od obciążenia cieplnego pomieszczeń do tabeli przepływów i odbioru instalacji.",
      "inLanguage": "pl-PL",
      "step": [
        {
          "@type": "HowToStep",
          "position": 1,
          "name": "Policz straty pomieszczeń",
          "text": "Wyznacz projektowe obciążenie cieplne osobno dla każdej strefy przy przyjętych temperaturach wewnętrznych i zewnętrznych."
        },
        {
          "@type": "HowToStep",
          "position": 2,
          "name": "Ustal warstwy i powierzchnię czynną",
          "text": "Zaznacz rodzaj okładziny, jej opór, zabudowę stałą, elementy konstrukcyjne i obszary wyłączone z grzania."
        },
        {
          "@type": "HowToStep",
          "position": 3,
          "name": "Dobierz parametry wody i rozstaw",
          "text": "Sprawdź, czy podłoga pokryje wymaganą moc bez przekroczenia temperatur powierzchni i przy racjonalnej temperaturze zasilania."
        },
        {
          "@type": "HowToStep",
          "position": 4,
          "name": "Wyznacz pola jastrychu",
          "text": "Przenieś dylatacje konstrukcyjne, progi, przewężenia i podziały pól przed rozpoczęciem rysowania pętli."
        },
        {
          "@type": "HowToStep",
          "position": 5,
          "name": "Oszacuj rurę i liczbę obwodów",
          "text": "Do długości w polu dodaj oba dobiegi, a następnie podziel powierzchnię na możliwe do wykonania obwody."
        },
        {
          "@type": "HowToStep",
          "position": 6,
          "name": "Rozrysuj rzeczywiste trasy",
          "text": "Wybierz ślimak, meander lub układ mieszany, zachowaj promienie gięcia i ogranicz liczbę przejść przez granice pól."
        },
        {
          "@type": "HowToStep",
          "position": 7,
          "name": "Policz przepływy i opory",
          "text": "Przypisz moc do każdej pętli, oblicz jej przepływ, stratę ciśnienia i sprawdź obwód krytyczny względem pompy."
        },
        {
          "@type": "HowToStep",
          "position": 8,
          "name": "Przygotuj tabelę nastaw i odbiór",
          "text": "Zestaw nazwy pętli, długości, rozstawy, przepływy i nastawy oraz wykonaj dokumentację zdjęciową przed jastrychem."
        }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Ile metrów może mieć jedna pętla ogrzewania podłogowego?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie istnieje jedna długość odpowiednia dla wszystkich rur i przepływów. Dla rury 16 × 2 mm często projektuje się obwody około 70–90 m, a okolice 100 m wymagają kontroli hydraulicznej. Długość obejmuje również zasilanie i powrót od rozdzielacza."
          }
        },
        {
          "@type": "Question",
          "name": "Ile pętli potrzeba na pomieszczenie 20 m²?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Zależy to od powierzchni rzeczywiście ogrzewanej, rozstawu, dobiegów, średnicy rury i założonej długości obwodu. Przy rozstawie 15 cm w polu potrzeba około 133 m rury, więc pomieszczenie zwykle wymaga co najmniej dwóch pętli, ale wynik trzeba uzupełnić o dobiegi."
          }
        },
        {
          "@type": "Question",
          "name": "Czy pętle w jednym pomieszczeniu muszą mieć identyczną długość?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie muszą być identyczne, lecz powinny tworzyć logiczny i możliwy do zrównoważenia układ. Kilka metrów różnicy jest normalne, jeżeli każda pętla ma policzony przepływ i nastawę wynikającą z jej mocy oraz oporu."
          }
        },
        {
          "@type": "Question",
          "name": "Jaki rozstaw rur wybrać: 10 czy 15 cm?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Rozstaw dobiera się do obciążenia cieplnego, temperatury zasilania i powrotu, konstrukcji podłogi, oporu okładziny oraz limitu temperatury powierzchni. Sam rodzaj pomieszczenia nie wystarcza do wyboru."
          }
        },
        {
          "@type": "Question",
          "name": "Czy układ ślimakowy jest zawsze najlepszy?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Ślimak zapewnia zwykle równomierny rozkład temperatury i dobrze sprawdza się w regularnych pomieszczeniach. W wąskich, małych lub nieregularnych strefach prosty albo podwójny meander może być łatwiejszy i bardziej celowy."
          }
        },
        {
          "@type": "Question",
          "name": "Czy jedna pętla może ogrzewać dwa pomieszczenia?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Technicznie jest to czasem możliwe w małych, podobnych strefach, ale ogranicza niezależną regulację i utrudnia przypisanie mocy. Nie powinno się przypadkowo łączyć pomieszczeń o różnych temperaturach, zyskach i sposobie użytkowania."
          }
        },
        {
          "@type": "Question",
          "name": "Czy pętle można prowadzić pod szafkami kuchennymi?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie ma jednej odpowiedzi dla każdej zabudowy. Trzeba uwzględnić cokół i wentylację, urządzenia, technologię podłogi, ryzyko kumulacji ciepła oraz możliwość przyszłej zmiany aranżacji. Decyzję zaznacza się na rzucie projektu."
          }
        },
        {
          "@type": "Question",
          "name": "Jak uwzględnić strefę brzegową przy dużym przeszkleniu?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Najpierw oblicza się stratę ciepła przy przeszkleniu. Następnie można lokalnie zmniejszyć rozstaw, wydzielić osobny pas lub skierować cieplejszą część odpowiednio ułożonego meandra, zachowując wymagane długości i przepływy."
          }
        },
        {
          "@type": "Question",
          "name": "Czy rura może przechodzić przez dylatację jastrychu?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Najlepiej przypisać pętle do osobnych pól i ograniczyć przejścia. Jeżeli są konieczne, rury prowadzi się możliwie prostopadle, w odpowiednich osłonach i bez połączeń w strefie ruchu."
          }
        },
        {
          "@type": "Question",
          "name": "Czy planer internetowy może rozrysować gotowe pętle?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Może oszacować długość, liczbę obwodów i przepływ, ale nie zna wszystkich narożników, progów, dylatacji, dobiegów i warstw konkretnego budynku. Gotowy przebieg rur wymaga rzutu oraz indywidualnych obliczeń cieplnych i hydraulicznych."
          }
        }
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "image": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp"
      },
      "jobTitle": "Projektant instalacji sanitarnych i specjalista systemów HVAC",
      "description": "Projektant wodnego ogrzewania podłogowego, autor technicznych opracowań branżowych i właściciel serwisów Projekt-Ogrzewania.pl, Remont.biz.pl oraz Sobir.pl.",
      "knowsAbout": [
        "projektowanie ogrzewania podłogowego",
        "obliczenia obciążenia cieplnego",
        "rozmieszczenie pętli grzewczych",
        "hydraulika instalacji grzewczych",
        "równoważenie przepływów",
        "systemy HVAC"
      ],
      "sameAs": [
        "https://projekt-ogrzewania.pl/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ],
      "owns": [
        {
          "@id": "https://projekt-ogrzewania.pl/#organization"
        },
        {
          "@id": "https://remont.biz.pl/#organization"
        },
        {
          "@id": "https://sobir.pl/#organization"
        }
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt Ogrzewania",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "owner": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      }
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "owner": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "owner": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      }
    },
    {
      "@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"
      },
      "potentialAction": {
        "@type": "SearchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://projekt-ogrzewania.pl/?s={search_term_string}"
        },
        "query-input": "required name=search_term_string"
      }
    }
  ]
}
</script>

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

  function rkLoopPlannerInit() {
    var root = document.getElementById("rk-loop-guide");
    if (!root) {
      return false;
    }
    if (root.getAttribute("data-rk-loop-planner-ready") === "true") {
      return true;
    }

    var form = document.getElementById("rk-loop-planner-form");
    var areaInput = document.getElementById("rk-loop-area");
    var loadInput = document.getElementById("rk-loop-load");
    var spacingInput = document.getElementById("rk-loop-spacing");
    var distanceInput = document.getElementById("rk-loop-distance");
    var diameterInput = document.getElementById("rk-loop-diameter");
    var deltaInput = document.getElementById("rk-loop-delta");
    var targetInput = document.getElementById("rk-loop-target");
    var shapeInput = document.getElementById("rk-loop-shape");
    var edgeInput = document.getElementById("rk-loop-edge");
    var dilationInput = document.getElementById("rk-loop-dilation");
    var fixedInput = document.getElementById("rk-loop-fixed");
    var resetButton = document.getElementById("rk-loop-planner-reset");
    var lengthOutput = document.getElementById("rk-loop-result-length");
    var countOutput = document.getElementById("rk-loop-result-count");
    var averageOutput = document.getElementById("rk-loop-result-average");
    var flowOutput = document.getElementById("rk-loop-result-flow");
    var statusBox = document.getElementById("rk-loop-planner-status");
    var statusTitle = document.getElementById("rk-loop-planner-title");
    var statusCopy = document.getElementById("rk-loop-planner-copy");
    var listOutput = document.getElementById("rk-loop-planner-list");
    var roomPath = document.getElementById("rk-loop-plan-room");
    var edgePath = document.getElementById("rk-loop-plan-edge");
    var fixedShape = document.getElementById("rk-loop-plan-fixed");
    var dilationPath = document.getElementById("rk-loop-plan-dilation");
    var dividerOne = document.getElementById("rk-loop-divider-1");
    var dividerTwo = document.getElementById("rk-loop-divider-2");
    var dividerThree = document.getElementById("rk-loop-divider-3");
    var planCaption = document.getElementById("rk-loop-plan-caption");
    var labels = [
      document.getElementById("rk-loop-label-1"),
      document.getElementById("rk-loop-label-2"),
      document.getElementById("rk-loop-label-3"),
      document.getElementById("rk-loop-label-4")
    ];

    var required = [
      form,
      areaInput,
      loadInput,
      spacingInput,
      distanceInput,
      diameterInput,
      deltaInput,
      targetInput,
      shapeInput,
      edgeInput,
      dilationInput,
      fixedInput,
      resetButton,
      lengthOutput,
      countOutput,
      averageOutput,
      flowOutput,
      statusBox,
      statusTitle,
      statusCopy,
      listOutput,
      roomPath,
      edgePath,
      fixedShape,
      dilationPath,
      dividerOne,
      dividerTwo,
      dividerThree,
      planCaption,
      labels[0],
      labels[1],
      labels[2],
      labels[3]
    ];

    var elementsReady = true;
    required.forEach(function (element) {
      if (!element) {
        elementsReady = false;
      }
    });
    if (!elementsReady) {
      return false;
    }

    function rkLoopClamp(value, minimum, maximum, fallback) {
      var number = Number(String(value).replace(",", "."));
      if (!Number.isFinite(number)) {
        return fallback;
      }
      return Math.min(maximum, Math.max(minimum, number));
    }

    function rkLoopFormat(value, digits) {
      return value.toLocaleString("pl-PL", {
        minimumFractionDigits: digits,
        maximumFractionDigits: digits
      });
    }

    function rkLoopSetOpacity(element, visible) {
      element.setAttribute("opacity", visible ? "1" : "0");
    }

    function rkLoopSetLabel(group, x, y, visible) {
      var circle = group.querySelector("circle");
      var textElement = group.querySelector("text");
      rkLoopSetOpacity(group, visible);
      if (circle) {
        circle.setAttribute("cx", String(x));
        circle.setAttribute("cy", String(y));
      }
      if (textElement) {
        textElement.setAttribute("x", String(x));
        textElement.setAttribute("y", String(y + 8));
      }
    }

    function rkLoopRenderMessages(messages) {
      while (listOutput.firstChild) {
        listOutput.removeChild(listOutput.firstChild);
      }
      messages.forEach(function (message) {
        var item = document.createElement("li");
        item.textContent = message;
        listOutput.appendChild(item);
      });
    }

    function rkLoopSetDiagram(shape, loopCount, hasEdge, hasDilation, hasFixed) {
      if (shape === "lshape") {
        roomPath.setAttribute("d", "M100 72 H620 V190 H430 V344 H100 Z");
      } else if (shape === "ushape") {
        roomPath.setAttribute("d", "M100 72 H255 V220 H465 V72 H620 V344 H100 Z");
      } else {
        roomPath.setAttribute("d", "M100 72 H620 V344 H100 Z");
      }

      rkLoopSetOpacity(edgePath, hasEdge);
      rkLoopSetOpacity(dilationPath, hasDilation);
      rkLoopSetOpacity(fixedShape, hasFixed);
      rkLoopSetOpacity(dividerOne, false);
      rkLoopSetOpacity(dividerTwo, false);
      rkLoopSetOpacity(dividerThree, false);
      labels.forEach(function (label) {
        rkLoopSetOpacity(label, false);
      });

      if (loopCount === 1) {
        rkLoopSetLabel(labels[0], 360, 208, true);
      } else if (loopCount === 2) {
        dividerOne.setAttribute("d", "M360 72 V344");
        rkLoopSetOpacity(dividerOne, true);
        rkLoopSetLabel(labels[0], 230, 208, true);
        rkLoopSetLabel(labels[1], 490, 208, true);
      } else if (loopCount === 3) {
        dividerOne.setAttribute("d", "M273 72 V344");
        dividerThree.setAttribute("d", "M447 72 V344");
        rkLoopSetOpacity(dividerOne, true);
        rkLoopSetOpacity(dividerThree, true);
        rkLoopSetLabel(labels[0], 185, 208, true);
        rkLoopSetLabel(labels[1], 360, 208, true);
        rkLoopSetLabel(labels[2], 535, 208, true);
      } else {
        dividerOne.setAttribute("d", "M360 72 V344");
        dividerTwo.setAttribute("d", "M100 208 H620");
        rkLoopSetOpacity(dividerOne, true);
        rkLoopSetOpacity(dividerTwo, true);
        rkLoopSetLabel(labels[0], 230, 145, true);
        rkLoopSetLabel(labels[1], 490, 145, true);
        rkLoopSetLabel(labels[2], 230, 275, true);
        rkLoopSetLabel(labels[3], 490, 275, true);
      }

      if (loopCount > 4) {
        planCaption.textContent = "WYNIK: " + String(loopCount) + " PĘTLI • SCHEMAT POKAZUJE 4 STREFY SYMBOLICZNIE";
      } else {
        var ending = loopCount === 1 ? "PĘTLĘ" : "PĘTLE";
        planCaption.textContent = "WSTĘPNY PODZIAŁ NA " + String(loopCount) + " " + ending + " • NIE JEST RYSUNKIEM WYKONAWCZYM";
      }
    }

    function rkLoopUpdate() {
      var area = rkLoopClamp(areaInput.value, 2, 120, 24);
      var heatLoad = rkLoopClamp(loadInput.value, 100, 12000, 1440);
      var spacing = rkLoopClamp(spacingInput.value, 0.05, 0.20, 0.15);
      var distance = rkLoopClamp(distanceInput.value, 0, 30, 5);
      var diameter = rkLoopClamp(diameterInput.value, 16, 20, 16);
      var delta = rkLoopClamp(deltaInput.value, 5, 7, 6);
      var targetLength = rkLoopClamp(targetInput.value, 70, 100, 80);
      var shape = shapeInput.value;
      var hasEdge = edgeInput.checked;
      var hasDilation = dilationInput.checked;
      var hasFixed = fixedInput.checked;
      var shapeFactor = 1.04;
      var messages = [];
      var warning = false;
      var danger = false;

      if (shape === "lshape") {
        shapeFactor = 1.07;
      } else if (shape === "ushape") {
        shapeFactor = 1.09;
      }

      var fieldLength = area / spacing * shapeFactor;
      var loopCount = Math.max(1, Math.ceil(fieldLength / targetLength));
      var totalLength = fieldLength + 2 * distance * loopCount;
      var iteration = 0;

      while (iteration < 8) {
        var recalculatedCount = Math.max(1, Math.ceil(totalLength / targetLength));
        if (recalculatedCount === loopCount) {
          break;
        }
        loopCount = recalculatedCount;
        totalLength = fieldLength + 2 * distance * loopCount;
        iteration += 1;
      }

      totalLength = fieldLength + 2 * distance * loopCount;
      var averageLength = totalLength / loopCount;
      var totalFlowM3h = heatLoad / 1000 / (1.163 * delta);
      var totalFlowLmin = totalFlowM3h * 1000 / 60;
      var loopFlowLmin = totalFlowLmin / loopCount;
      var powerDensity = heatLoad / area;
      var internalDiameter = 0.012;

      if (diameter === 17) {
        internalDiameter = 0.013;
      } else if (diameter === 20) {
        internalDiameter = 0.016;
      }

      var crossSection = Math.PI * internalDiameter * internalDiameter / 4;
      var velocity = loopFlowLmin / 1000 / 60 / crossSection;
      var recommendedMaximum = 100;
      if (diameter === 17) {
        recommendedMaximum = 110;
      } else if (diameter === 20) {
        recommendedMaximum = 130;
      }

      messages.push(
        "Szacunek obejmuje około " + rkLoopFormat(fieldLength, 0) + " m rury w polu oraz " + rkLoopFormat(2 * distance * loopCount, 0) + " m łącznych dobiegów do rozdzielacza."
      );
      messages.push(
        "Przy ΔT = " + rkLoopFormat(delta, 0) + " K każda pętla powinna przenieść orientacyjnie " + rkLoopFormat(loopFlowLmin, 2) + " l/min; rzeczywistą nastawę trzeba wyznaczyć osobno dla każdego obwodu."
      );
      messages.push(
        "Średnia gęstość obciążenia wynosi " + rkLoopFormat(powerDensity, 0) + " W/m², a orientacyjna prędkość w przewodzie około " + rkLoopFormat(velocity, 2) + " m/s."
      );

      if (averageLength > recommendedMaximum) {
        danger = true;
        messages.push("Średnia długość przekracza kontrolną wartość dla wybranej średnicy. Zwiększ liczbę obwodów lub skróć dobiegi.");
      }

      if (powerDensity > 120) {
        danger = true;
        messages.push("Zapotrzebowanie przekracza 120 W/m². Najpierw sprawdź obciążenie cieplne i możliwą moc podłogi, ponieważ sam gęstszy rozstaw może nie wystarczyć.");
      } else if (powerDensity > 70) {
        warning = true;
        messages.push("Obciążenie przekracza 70 W/m². Zweryfikuj temperaturę powierzchni, opór okładziny i dostępną moc przy projektowej temperaturze zasilania.");
      }

      if (velocity < 0.15) {
        warning = true;
        messages.push("Orientacyjna prędkość w pojedynczej pętli jest niska. Sprawdź minimalny przepływ rotametru, odpowietrzanie i możliwość zrównoważenia rozdzielacza.");
      } else if (velocity > 0.60) {
        warning = true;
        messages.push("Orientacyjna prędkość przekracza 0,60 m/s. Konieczna jest kontrola strat ciśnienia, hałasu i dostępnego sprężu pompy.");
      }

      if (spacing === 0.20) {
        warning = true;
        messages.push("Rozstaw 20 cm wymaga sprawdzenia nierównomierności temperatury powierzchni i rzeczywistej mocy podłogi, szczególnie przy wyższym obciążeniu.");
      } else if (spacing === 0.05) {
        warning = true;
        messages.push("Rozstaw 5 cm bardzo zwiększa długość i opory. Powinien wynikać z obliczeń konkretnej strefy, a nie być ustawieniem domyślnym dla całego pokoju.");
      }

      if (hasEdge) {
        warning = true;
        messages.push("Strefę przy przeszkleniu rozpatrz lokalnie: oddzielny obwód lub zagęszczenie nie mogą przypadkowo wydłużyć pozostałej części pętli.");
      }

      if (hasDilation) {
        warning = true;
        messages.push("Każda pętla powinna pozostać w jednym polu jastrychu. Niezbędne przejścia przez szczelinę prowadzi się prostopadle i w rurze osłonowej.");
      }

      if (hasFixed) {
        warning = true;
        messages.push("Wpisana powierzchnia powinna już wykluczać stałą zabudowę nieprzeznaczoną do ogrzewania. Planer nie odejmuje jej automatycznie.");
      }

      if (shape !== "rectangle") {
        warning = true;
        messages.push("Narożniki wewnętrzne kształtu L lub U utrudniają zachowanie równych długości. Podział trzeba skoordynować z dobiegami i granicami pól.");
      }

      if (loopCount > 4) {
        warning = true;
        messages.push("Wynik przekracza cztery pętle. Rysunek pokazuje wtedy wyłącznie symboliczne cztery strefy — rzeczywisty podział wymaga rzutu w skali.");
      }

      lengthOutput.textContent = rkLoopFormat(totalLength, 0) + " m";
      countOutput.textContent = String(loopCount);
      averageOutput.textContent = rkLoopFormat(averageLength, 1) + " m";
      flowOutput.textContent = rkLoopFormat(totalFlowLmin, 2) + " l/min";

      statusBox.classList.remove("is-warning");
      statusBox.classList.remove("is-danger");
      if (danger) {
        statusBox.classList.add("is-danger");
        statusTitle.textContent = "Wariant wymaga korekty przed dalszym projektowaniem";
        statusCopy.textContent = "Co najmniej jeden parametr przekracza zakres, którego nie należy kompensować samą zmianą rozstawu lub nastawy rotametru.";
      } else if (warning) {
        statusBox.classList.add("is-warning");
        statusTitle.textContent = "Wynik jest użyteczny jako wariant wstępny";
        statusCopy.textContent = "Planer wskazał elementy wymagające sprawdzenia na rzucie i w obliczeniach hydraulicznych.";
      } else {
        statusTitle.textContent = "Wariant nie pokazuje oczywistych konfliktów";
        statusCopy.textContent = "To nadal szacunek geometryczny; przed montażem trzeba policzyć moc, opory każdej pętli i nastawy rozdzielacza.";
      }

      rkLoopSetDiagram(shape, loopCount, hasEdge, hasDilation, hasFixed);
      rkLoopRenderMessages(messages);
    }

    form.addEventListener("input", rkLoopUpdate);
    form.addEventListener("change", rkLoopUpdate);
    resetButton.addEventListener("click", function () {
      areaInput.value = "24";
      loadInput.value = "1440";
      spacingInput.value = "0.15";
      distanceInput.value = "5";
      diameterInput.value = "16";
      deltaInput.value = "6";
      targetInput.value = "80";
      shapeInput.value = "rectangle";
      edgeInput.checked = false;
      dilationInput.checked = false;
      fixedInput.checked = false;
      rkLoopUpdate();
    });

    root.querySelectorAll('.rk-loop-nav a[href^="#rk-loop-"]').forEach(function (link) {
      link.addEventListener("click", function (event) {
        var selector = link.getAttribute("href");
        var target = root.querySelector(selector);
        if (!target) {
          return;
        }
        event.preventDefault();
        var scrollBehavior = "smooth";
        if (typeof window.matchMedia === "function") {
          if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
            scrollBehavior = "auto";
          }
        }
        target.scrollIntoView({
          behavior: scrollBehavior,
          block: "start"
        });
      });
    });

    var progressBar = root.querySelector(".rk-loop-progress");
    function rkLoopProgress() {
      if (!progressBar) {
        return;
      }
      var rect = root.getBoundingClientRect();
      var travel = rect.height - window.innerHeight;
      var passed = Math.min(Math.max(-rect.top, 0), Math.max(travel, 0));
      var percentage = travel > 0 ? passed / travel * 100 : 0;
      progressBar.style.width = percentage.toFixed(2) + "%";
    }

    window.addEventListener("scroll", rkLoopProgress, { passive: true });
    window.addEventListener("resize", rkLoopProgress);
    rkLoopUpdate();
    rkLoopProgress();
    root.setAttribute("data-rk-loop-planner-ready", "true");
    return true;
  }

  function rkLoopPlannerBoot() {
    if (rkLoopPlannerInit()) {
      return;
    }
    window.setTimeout(rkLoopPlannerInit, 180);
    window.setTimeout(rkLoopPlannerInit, 700);
    window.setTimeout(rkLoopPlannerInit, 1600);
  }

  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", rkLoopPlannerBoot);
  } else {
    rkLoopPlannerBoot();
  }

  window.addEventListener("load", rkLoopPlannerBoot);

  if (typeof MutationObserver === "function") {
    var rkLoopPlannerObserver = new MutationObserver(function () {
      if (rkLoopPlannerInit()) {
        rkLoopPlannerObserver.disconnect();
      }
    });
    rkLoopPlannerObserver.observe(document.documentElement, {
      childList: true,
      subtree: true
    });
    window.setTimeout(function () {
      rkLoopPlannerObserver.disconnect();
    }, 5000);
  }
})();
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">Jak zaplanować rozmieszczenie pętli grzewczych w ogrzewaniu podłogowym?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
